Clear filter
Question
Qais Azam · Oct 16, 2024
I am experiencing an issue while executing a stored procedure in InterSystems Cache. Here’s the procedure I createdCREATE PROCEDURE Silk.sp_InsertRecord ( IN RecordDate TIMESTAMP, IN UserName VARCHAR(50), IN RecordType INT, IN RecordID VARCHAR(50), IN CategoryID INT, IN ApprovalDate TIMESTAMP, IN FileSize BIGINT, IN WorkstationName VARCHAR(50))BEGIN INSERT INTO DummyRecords ( RecordKey, FilePath, RecordDate, UserName, RecordType, RecordID, CategoryID, FileSize ) VALUES ( 'd4a4e44b-4b56-4a74-b7f5-e44716fa5a13', '', RecordDate, UserName, RecordType, RecordID, CategoryID, FileSize ); ENDThis creates an SP of Function type.
Issue:
I encounter the following error upon execution:
Namespace: SILKProcess: 29088Error:2024-10-17 12:25:54 [SQLCODE: <-400>:<Fatal error occurred>] [Cache Error: <<UNDEFINED>zspInsertObject+50^Silk.procspInsertObject.1 *%ROWCOUNT>] [Location: <SPFunction>] [%msg: <Unexpected error occurred: <UNDEFINED>%0Ao+3^Silk.procspInsertObject.1 *%mmmsqld(3)>]
However, when I execute the stored procedure without passing any parameters and hardcode the values directly, it executes without any errors. Then it usually creates a query type procedure.
Additional Information:
I am new to Cache and not entirely sure why I'm getting this error.
The stored procedure compiles without any syntax errors. This is just an example..
Can someone help me understand why this error is occurring and how I can resolve it? Any guidance on how to properly debug or fix this issue would be greatly appreciated.
Question
Pavan Kumar Rayudu · Oct 15, 2024
Can InterSystems IRIS Data Platform 2019 be Integrated with Snowflake?
From InterSystems Do we have any predefined packages or Adapters available to Connect with Snowflake?
Can InterSystems be Connected with Snowflake through Web Gateway Management?
According to Snowflake documentation (https://docs.snowflake.com/en/user-guide/intro-key-concepts) is seems that you may use ODBC and JDBC, so SQL gateway can be used (SQL Gateway Connections | InterSystems Programming Tools Index | InterSystems IRIS Data Platform 2019.1)
There are also native connectors (e.g. Python). embedded python is not available on IRIS 2019.2 you may consider an upgrade to IRIS 2021.2
Announcement
Anastasia Dyubaylo · Jan 10
Hi Community,
Enjoy the new video on InterSystems Developers YouTube:
⏯ Leveraging Automation Tools for Deploying InterSystems IRIS Applications @ Global Summit 2024
Automating configuration management, application deployment, and routine tasks reduces errors and saves time. This session highlights typical InterSystems IRIS system configuration and deployment tasks and how open-source tools can automate them. Ansible will be used as the primary example, and we will show you how to mix and match tools to make your InterSystems IRIS application deployments successful.
Presenters: 🗣 @Murray.Oldfield, Principal Technology Architect, InterSystems🗣 @Mark.Bolinsky, Chief Technology Architect, InterSystems
Watch now and let us know what you think — happy viewing! 👍
Announcement
Anastasia Dyubaylo · Sep 4, 2024
Hey Community,
We're pleased to invite you all to the upcoming kick-off webinar for the InterSystems Developer Tools Contest 2024!
During the webinar, you will discover the exciting challenges and opportunities that await IRIS enthusiasts in this contest. We'll discuss the topics we expect from participants and show you how to develop, build, and deploy applications using the InterSystems IRIS data platform.
Date & Time: Tuesday, September 10 – 12:30 pm EDT | 6:30 pm CEST
Speakers: 🗣 @Dean.Andrews2971, Head of Developer Relations🗣 @Evgeny.Shvarov, Senior Manager of Developer and Startup Programs🗣 @Raj.Singh5479, Product Manager
✅ Register for the kick-off today!
Article
Ben Spead · May 21
For 15 over years I have been playing with ways to speed up the way I use InterSystems systems and technology via AutoHotkey scripting. As a power keyboard user (I avoid my mouse when possible) I found it very helpful to set up hotkeys to get to my most frequently accessed systems and research utilities as quickly as possible. While I have used this approach for many years, this is the first time that I am introducing my approach and a customer-facing hotkey script to the D.C. and OEx...
ISCLauncher is a hotkey program based on AutoHotKey (Windows scripting language) which provides quick access a number of useful InterSystems resources and online systems (Windows OS only). Use it to quickly access the following InterSystems resources:
Documentation Search
Developer Community Search
D.C. A.I.
Online Learning
WRC Issues
iService Issues
CCR records
... plus more!
To try it out for yourself, use the "Download' button on the ISCLauncher Open Exchange listing, which will pull down a Zip file from which you can extract the contents. Run the ISCLauncher.exe and you will see the following in your Windows SysTray:
To pull up the Help screen so you can see all of the things that it can do, once you are running ISCLauncher, press [Ctrl]+[Windows]+[?]:
The power of ISCLauncher is that it can turn plain text into a hyperlink. E.g. If you have an ID from a WRC, iService or CCR record in an email, chat or notes, simply highlighting the record ID and using the appropriate hotkey will allow you to just directly to that record. See a demo for a CCR lookup below ([Ctrl]+[Windows]+[c]):
To access a record even faster, use ISC Uber-Key ( [Ctrl]+[Windows]+[Space] ) to try to automatically determine the record type and navigate immediately there (credit to @Chad.Severtson for the original ISC Uber-Key code from years ago!).
In addition to WRC, iService and CCR records - do quick searches against things like InterSystems Documentation ([Ctrl]+[Windows]+[b] ) or the Developer Community ([Ctrl]+[Windows]+[d]):
Make this tool even more powerful by adding your own hotkeys for things that you frequently type or open on your desktop. For some inspiration, here is my personal launcher which I have tuned over the years:
Have ideas how to make this more powerful? Add comments below. Also, once this is in GitHub you can feel free to create PRs with your suggestions. So cool 🤩
Announcement
Anastasia Dyubaylo · Feb 6, 2024
Hey Community,
Watch this video to learn how to use terminal aliases for InterSystems IRIS and also how to set it up with your Docker Developer Environment:
⏯ InterSystems Terminal Aliases and How To Have It In Docker Environment
Enjoy watching and subscribe to the InterSystems Developers YouTube channel for other informative videos! 👍
Announcement
Bob Kuszewski · Feb 9, 2024
InterSystems Kubernetes Operator (IKO) 3.7 is now Generally Available. IKO 3.7 adds significant new functionality along with numerous bug fixes. Highlights include:
When using IKO 3.7 with IRIS 2024.1+, the WebGateway can authenticate to IRIS via mutual TLS.
Support for reporting asynchronous mirror members
Resource requests can now be applied to IAM pods
Improvements to iriscluster resource output
Follow the Installation Guide for guidance on how to download, install, and get started with IKO. The complete IKO 3.7 documentation gives you more information about IKO and using it with InterSystems IRIS and InterSystems IRIS for Health. IKO can be downloaded from the WRC download page (search for Kubernetes). The container is available from the InterSystems Container Registry.
IKO simplifies working with InterSystems IRIS or InterSystems IRIS for Health in Kubernetes by providing an easy-to-use irisCluster resource definition. See the documentation for a full list of features, including easy sharding, mirroring, and configuration of ECP.
Article
Maria Gladkova · May 15, 2024
Hi all! Here I would like to share how we use vector search and GenAI with InterSystems technology. As an example, I'll describe BG-AppealAI project, which our company submitted to the InterSystems Vector Search, GenAI and ML Contest. BG-AppealAI application can write an appeal if you upload an insurance contract and the insurance company’s letter with a refusal to pay medical expenses. Of course, we are aware that at the moment AI has not reached such a level as to create ready-made legal documents. However, it's already possible to create tools to serve as assistants for specialists or ordinary users. Likewise, our application is an AI assistant that answers the question: "Is an appeal possible?" and creates a draft letter of appeal, if possible.
Explore our application in action by following this link: https://appealai.cloud.banksia.global/#/welcome
We've also created a video showcasing our app: https://www.youtube.com/embed/0p6FvZpzaaA
How BG-AppealAI works
Insurance contracts and rejection letters vectorization: to be able to better assist with appeals, AI needs a context of the denial. One of the possible ways we can provide a context is by citing relevant parts of insurance contracts. Upon receiving an insurance contract, BG-AppealAI breaks it down into parts, converting each part into a multi-dimensional vector. These vectors are stored in an InterSystems IRIS database, allowing fast and accurate retrieval when needed.
Vector Search: when you upload a rejection letter to the app, BG-AppealAI converts it to the vector, this is called the vectorization process. BG-AppealAI then uses IRIS vector search functionality to compare vectors extracted from the rejection letter with vectors extracted from the relevant insurance contract.
AI-Powered Appeal Generation: having identified potential context for appeal, BG-AppealAI sends a request to the generative AI service to assess the possibility of drafting an appeal. If it is deemed appropriate, AppealAI sends a new request in order to create a draft letter of appeal.
What's under the hood of the BG-AppealAI
Traditionally, our application consists of backend and frontend parts, where the frontend is developed on Angular framework and the backend on InterSystems IRIS. The video about our application has already shown the work of the frontend part of the application and a brief overview of the product, here I want to focus on the implementation of Interoperability Production. This is where we can clearly see the application of vector search and generative AI.
So, there are the following elements in our system:1) ConversionToVector - process that converts document text into vectors using LangChain, and invokes process GetText and operations SaveVector, SaveDocument for the corresponding actions.
2) GetText - process that parses data from a file into a stream, for further text processing and analysis. Here there is opportunity to work with 2 types of extensions: docx and pdf, as the most common ones for documents.
3) VectorSearch - process that performs a vector search and looks for matches between documents. Also, it is in this business process that methods are called to write promts to the AI and analyze rejection letters.
Note, that here we used a language model developed by OpenAI and the LangChain framework. All business processes are implemented using embedded python as it provides easy access to utilization to use LangChain and write promts to OpenAI.4) AppealIn - service that receives the rejection file and sends it for analysis.5) DocumentIn - service that receives the insurance contract file and sends it for vectorization.6) OpenAiOut - operation that makes a request to a generative AI - OpenAI, receives promt, returns a response from GenAI.7) SaveDocument - operation that stores the document file in the database.8) SaveVector - operation that stores vectors in the database.9) SaveAppeal - operation that gets the text of the appeal and stores it in the database.
The interaction of all the above elements is well shown by the visual trace. Visual trace of taking an insurance contract, dividing it into vectors, and storing the vectors in a database:
Visual trace of receiving a rejection letter, sending requests to OpenAI, and saving the appeal letter if an appeal is possible:
This is an example of a rejection letter:
This is an example of an appeal written by BG-AppealAI:
We hope that our open source project will be useful to this community and help you implement innovative technologies in your projects. Our team would like to thank InterSystems for the opportunity to work with cutting-edge technologies. We're eager to engage with your thoughts and questions in the comments below. Let's continue pushing the boundaries of what's possible with technology together! Stay tuned for more updates and insights from our team.
If you enjoyed getting to know BG-AppealAI and its features and would like to support us, please take a moment to vote for our app here https://openexchange.intersystems.com/contest/36. Thank you! Hi Maria,
Your video is available on InterSystems Developers YouTube:
⏯️ AppealAIMovie
Thank you !! Great overview of a solid approach, thank you!!
Announcement
John McBride · Jul 24, 2024
Overview
The extension and source code are now availableAfter having some discussions at Global Summit and using a lot of package managers in my day to day development (npm,nuget,Chocolatey, etc) in addition to recently using the InterSystems Package Manager for some CICD process I'm building using Intersystems IRIS and IRIS 4 Health, I wanted an easy and integrated way to search/view/install packages related to the Intersystems tech stack.
I recently built a VSCode extension for IPM repositories that I will be open sourcing and publishing to the marketplace but wanted create this post to get some feedback from the community.
Download Information
You can download the extension within VSCode or at https://marketplace.visualstudio.com/items?itemName=extensionsbyjohn.ipm-explorer. Just search for ipm.explorer
Github respository
Click here for the github repository
Video
Initial Screen
Some features in the extension:
VSCode setting for defining multiple repositories
Activity Bar Icon/Explorer View
List of packages in custom view
List/Open github repository configured in package
Details for package in a custom view
Copy ZPM install command for use in IRIS terminal
Setup/Settings:
When you first start the extension, you will need to configure it. You can do this by accessing the settings.json file and adding something like the following.
"ipm.repositories": [
{
"name":"Public IPM",
"url":"https://pm.community.intersystems.com"
},
{
"name":"Internal Packages",
"url":"https://[insert private repo here]"
},
{
"name":"Test Packages",
"url":"https://[insert private repo here]"
}
]
Screenshots:
Ideas/Future
After building this and working with the API, I'd like to propose a couple updates that potentially could be added to the manifest/API for packages to make integrations like this a little easier
License field: (This will let the users know if the package license is compatable with their usage)
Logo: encoded image for the package. Allow the developer of the package to specify an image
Readme: Allow the developer of the package to include a readme markdown file in the package. This can then be displayed in the details section of the extension.
Author: Include the author of the package (can be displayed the details view)
Verified: Allow for an author to be verified. For example Intersystems could be a verified author
Open Source:
Click here for the github repository
Comments/Suggestions
Let me know what you think or if you have suggestions let me know. Would you be interested in using this? Hi John,
Your video is available on InterSystems Developers YouTube:
⏯️InterSystems Package Manager VSCode Extension
👍 Is there a VSCode extension or tool to help build module.xml files for IPM?
Announcement
Anastasia Dyubaylo · Nov 26, 2024
Hey Community,
We're pleased to invite you all to the upcoming kick-off Webinar for InterSystems "Bringing Ideas to Reality" Contest!
During the webinar, our speakers will explore the Community Opportunity Ideas from the InterSystems Ideas Portal, which are the topics of this programming contest. They will show how to develop, build, and deploy applications using the InterSystems IRIS data platform.
Date & Time: Monday, December 2 – 10:00 am EST | 4:00 pm CET
Speakers: 🗣 @Dean Andrews, Head of Developer Relations🗣 @Evgeny Shvarov, Senior Manager of Developer and Startup Programs🗣 @Raj Singh, Product Manager - Developer Experience
✅ Register for the kick-off today! Hi Devs!Please join the kick-off webinar in 15 minutes in Zoom:https://us06web.zoom.us/j/5635395305?pwd=mkfbpaSr5QotWR1JqKbAOm3PYPwwog.1Or enjoy watching the stream via YouTube:
https://youtube.com/live/ORBgFlT7juY?feature=share
Announcement
Evgeny Shvarov · Dec 19, 2024
Hi Developers!
We are happy to present the bonuses page for the applications submitted to the InterSystems "Bringing Ideas to Reality" 2024 Contest!
See the results below.
Project
Vector Search
Embedded Python
InterSystems Interoperability
IRIS BI
VSCode Plugin
FHIR Tools
Docker
IPM
Online Demo
Find a bug
Code quality
First Article on DC
Second Article on DC
Video on YouTube
YouTube Short
First Time Contribution
Total Bonus
Nominal
3
3
3
3
3
3
2
2
2
2
1
2
1
3
1
3
37
IRIS WHIZ - HL7v2 Browser Extension
2
3
5
ServiceInspection
3
3
-
-
6
vault-link
3
2
2
7
SharePoint Online SPO REST API
3
2
3
3
11
tz - ObjectScript Time Zone Conversion Library
3
3
2
2
1
2
3
16
iris-http-calls
3
3
2
2
2
2
1
3
18
ks-fhir-gen
3
3
2
1
9
Database-Size-Monitoring
2
2
2
6
iris-unit-test-dashboard
3
2
3
8
IRIS Global VSCode Editor
3
2
1
3
1
10
iris-HL7v2Gen
3
3
2
2
1
2
13
Doxygenerate
2
2
2
2
1
3
12
docs-intersystems
2
2
Please apply with your comments for new implementations and corrections to be made here in the comments or in Discord. Please accept the in-article links to examples of Doxygenerate's output as fulfilling the "Online Demo" item. Running the app itself isn't at all exciting - it's the output people surely want to explore online.
Links (all to documents hosted on georgejames.com) are in these posts:
https://community.intersystems.com/post/doxygenerate-new-tool-building-standalone-documentation-your-iris-applications-object-model
https://community.intersystems.com/post/producing-pdf-class-documentation-using-doxygenerate
https://community.intersystems.com/post/ipm-090-released#comment-277091
I published a short: https://youtu.be/cjbcEN-lBRk, so I claim the youtube short bonus. Thanks! I claim youtube short (https://community.intersystems.com/post/youtube-short-video-about-iris-globals-vscode) and second article (https://community.intersystems.com/post/learn-create-vscode-extensions-iris-global-editor-app) Hi Yuri! This is common video, not YouTube Short Hi, John! Could you please add this link as demo url to your app? I'll give you bonus after that Hi! About video, it must be in "shorts", e.g. this one. I've added bonus for the second article My tz - ObjectScript Time Zone Conversion Library project now supports Interoperability Rules/DTLs. Thanks! @John.Murray Thank you! Demo bonus have been approved Hi! Points were added. Thank you! YouTube video added to Doxygenerate Thank you! Bonus was added Hi, I claim youtube short, now it is a short: https://youtube.com/shorts/Cg_IukFo6HI?si=2TTloaKee0__KAds I just posted Time Zones and Offsets and ObjectScript, Oh My! article on DC. Thanks! Hi Eric! Bonus was added published a short: https://youtu.be/cjbcEN-lBRk, so I claim the youtube short bonus. Thanks!
00
Hi! I've just seen your comment. Bonus added. I have published the first article for the Database Sze Monitoring project. Thank you, Sara! Bonus was added
Announcement
Anastasia Dyubaylo · Jul 24, 2024
Hey Community,
Play the new video on InterSystems Developers YouTube:
⏯ Optimizing Supply Chains with InterSystems Supply Chain Orchestrator @ Global Summit 2023
Learn how InterSystems Supply Chain Orchestrator addresses business challenges horizontally across vertical segments to enable accelerated time-to-value for supply chain digital transformation. We'll show you how one of our partners is using it in use cases across several industry sectors.
Presenters: 🗣 @Ming.Zhou, Head of Supply Chain Strategy, InterSystems 🗣 Mark Holmes, Senior Supply Chain Advisor, InterSystems
Enjoy watching and look out for more video content! 👍
Announcement
Laurel James (GJS) · Mar 27, 2024
I'm excited to let you know that we at George James Software have released some new VS Code training courses. Following the success of our Basics course we have expanded our offering to help InterSystems users looking to move to VS Code improve their knowledge. Here's what's on offer...Studio to VS Code Migration - The Basics (2.5 hours)An interactive training webinar for those who have never used VS Code before and want hands-on help in getting set up and explaining the basics of how it works.Upcoming dates: Wed, April 17th + Wed, May 15thPrice: $450 / £450 / €450 per personVS Code for ObjectScript Advanced Features (2.5 hours)Tailored for ObjectScript developers, in this interactive training webinar you'll learn how to take your server-side VS Code setup to the next level. Upcoming dates: Wed, April 24th + Wed, May 22ndPrice: $450 / £450 / €450 per personBespoke Training for VS Code (5 hours)Recommended for 4+ attendees, we can cover everything in the public webinars with the added advantage of being able to focus on the areas you need/want to cover.Price: $1,950 / £1,950 / €1,950 per sessionFull-Service MigrationFor organizations seeking comprehensive support, we provide end-to-end guidance through the entire migration process. Visit our website to find out more, or drop any questions you have below. Thanks for providing this service to our community. As mentioned in the 2024.1 release notes, Studio will no longer be installed by default in 2024.2 and later, so now is a great time to fully migrate your staff and processes to VS Code. Thanks for the support, Raj!
Announcement
Eduard Lebedyuk · Mar 28, 2024
Hello Community,
I'd like to share with you our article with @Regilo.Souza on AWS Amazon blog Automating application-consistent Amazon EBS Snapshots for InterSystems IRIS databases. Our team has created this step-by-step instruction to create application-consistent snapshots for InterSystems IRIS databases. In this article, we outline how to automate pre-scripts to pause I/O and flush buffer to disk and post-scripts to thaw I/O, as shown in the following figure:
Previously, we outlined how to create application-consistent snapshots using Amazon Data Lifecycle Manager and custom scripts, including the necessary steps to create Amazon Data Lifecycle Manager policies that use AWS Systems Manager Agent to run custom scripts on your EC2 instances before and after EBS Snapshots are initialized. And now in this new post we build on those instructions to automate this process. Feel free to follow them and share your thoughts in the comments!
Announcement
Sergio Farago · May 8, 2024
Hello Community!
A new challenge has arrived for you: The Third InterSystems Technical Article writing contest in Spanish is here!
🏆 3rd Technical Articles Contest in Spanish 🏆
Description of the contest: Write an article in Spanish in the Developer Community, on any topic related to InterSystems technology.
Duration: from May 6 to June 2, 2024.
Prizes for all participants: Everyone who publishes an article in Spanish (In the Spanish Community) during the contest period will receive a prize.
Main prize: LEGO Ferrari Daytona SP3 / Magic Gringotts™ Bank - Collector's Edition.
Participate in the contest and reach hundreds of users! It's one of the best opportunities to publish those tips you've discovered.
Prizes
1. All participants win in the InterSystems technical article competition -> Any member of the Community who participates in the competition will receive a gift from InterSystems for participating.
2. Expert Awards – the winning articles in this category will be chosen by InterSystems experts and will be able to choose in each case:
🥇 1st place: LEGO Ferrari Daytona SP3 or Gringotts™ Magic Bank - Collector's Edition.
🥈 2nd place: LEGO NASA Artemis Space Launch System or Patagonia Nano Puff® Hoody men's jacket.
🥉 3rd place: JBL Flip 6 Speaker, Amazon Kindle 8G Paperwhite (Eleventh Generation) or Samsonite SPECTROLITE 3.0 15.6" Backpack
Or alternatively, any winner can choose a prize from a category lower than their own.
Note: Prizes are subject to change if availability in the country does not allow delivery.
3. Developer Community Award – article with the highest number of "Likes". The person who wins will be able to choose one of these prizes:
🎁 JBL Flip 6 Speaker, Amazon Kindle 8G Paperwhite (Eleventh Generation) or Samsonite SPECTROLITE 3.0 15.6" Backpack
Note: Each author can only win one prize from each category (in total, an author can win two prizes: one in the Expert category and one in the Community category)
Who can participate?
Anyone registered in the Developer Community, except InterSystems employees. Register here in the Community if you don't already have an account.
Contest Duration
📝 From May 6 to June 2: Article publication phase.
📝 From June 3 to June 9: Voting phase
Publish your article(s) during that period. Members of the Developer Community can vote for articles they like by clicking "Like" below each article.
Tip: The sooner you publish your article(s), the more time you will have to get more votes from the Experts and the Community
🎉 June 10: Winners announced
Requirements
❗️ Any article written during the contest period that meets the following requirements will automatically enter the competition:
The article must be directly or indirectly related to InterSystems technology (characteristics of InterSystems products or, also, complementary tools, architectural solutions, best development practices,...).
The article must be written in Spanish.
The article must be 100% new (it can be a continuation of an already published article).
The article cannot be a copy or translation of another published in the Developer Community in Spanish or in another Community.
Article size: >1,000 characters (links do not count in character calculation).
Participation mode: individual (one participant is allowed to publish several articles).
What can you write about?
You can choose any technical topic related directly or indirectly to InterSystems technology.
🎯 BONUS:
The Experts give 3 votes to the article they consider the best, 2 votes to the 2nd one they consider best and 1 vote to the 3rd one they consider best. Additionally, articles can receive more points based on the following bonuses:
Note: the judges' decision does not accept appeals
1. Bonus for new author: If it is the first time you participate in the Technical Article Contest in Spanish, your article will receive 1 extra vote from the Experts.
2. Theme bonus: If your article falls within the following themes, you will receive 2 extra points.
Use of AI/ML/GenAI
How to take advantage of the possibilities of Vector Search
Taking advantage of the column storage feature
️️Use of integrated Python
Use of Cloud SQL
Use of VSCode
Exploitation of IRIS FHIR capabilities (SMART in FHIR 2.0, FHIR object model, FHIR SQL Builder, Bulk FHIR,...)
3. Bonus per video: if, in addition to the article, it is accompanied by an explanatory video, the candidate will receive 4 points.
4. Tutorial Bonus: You will receive 3 points if the article has tutorial features, with step-by-step instructions that a developer can follow to complete one or more specific tasks.
So... Let's go!
We are looking forward to your articles!
Community! May the force be with you! ✨🤝 Last call!
This Sunday the contest closes, for those of you who had doubts, now is the time!
We have amazing prizes waiting for you. I know that some of the best articles are published in the English community, it's time to prove it in this contest :)