Clear filter
Announcement
Anastasia Dyubaylo · Jul 19, 2021
Hey Developers,
This week is a voting week for the InterSystems AI programming contest! So, it's time to give your vote to the best solutions built with InterSystems IRIS.
🔥 You decide: VOTING IS HERE 🔥
How to vote? Details below.
Experts nomination:
This time, InterSystems experienced jury will choose the best apps to nominate the prizes in the Experts Nomination. Please welcome our experts:
⭐️ @Evgeny.Shvarov, Developer Ecosystem Manager⭐️ @Raj.Singh5479, Product Manager - Developer Experience⭐️ @Robert.Kuszewski, Product Manager - Developer Experience⭐️ @Thomas.Dyar, Product Specialist - Machine Learning⭐️ @Aleksandar.Kovacevic, Sales Engineer⭐️ @Eduard.Lebedyuk, Sales Engineer⭐️ @Sergey.Lukyanchikov, Sales Engineer⭐️ @Guillaume.Rongier7183, Sales Engineer
Community nomination:
For each user, a higher score is selected from two categories below:
Conditions
Place
1st
2nd
3rd
If you have an article posted on DC and an app uploaded to Open Exchange (OEX)
9
6
3
If you have at least 1 article posted on DC or 1 app uploaded to OEX
6
4
2
If you make any valid contribution to DC (posted a comment/question, etc.)
3
2
1
Level
Place
1st
2nd
3rd
VIP Global Masters level or ISC Product Managers
15
10
5
Ambassador GM level
12
8
4
Expert GM level or DC Moderators
9
6
3
Specialist GM level
6
4
2
Advocate GM level or ISC Employees
3
2
1
Blind vote again!
The number of votes for each app will be hidden from everyone. Once a day we will publish the leaderboard in the comments to this post.
The order of projects on the Contest Page will be as follows: the earlier an application was submitted to the competition, the higher it will be in the list.
P.S. Don't forget to subscribe to this post (click on the bell icon) to be notified of new comments.
To take part in the voting, you need:
Sign in to Open Exchange – DC credentials will work.
Make any valid contribution to the Developer Community – answer or ask questions, write an article, contribute applications on Open Exchange – and you'll be able to vote. Check this post on the options to make helpful contributions to the Developer Community.
If you changed your mind, cancel the choice and give your vote to another application!
Support the application you like!
Note: contest participants are allowed to fix the bugs and make improvements to their applications during the voting week, so don't miss and subscribe to application releases! OK! After the first day of the voting we have:
Top 3 nominees by voting:
cryptocurrency-rate-forecasting
iris_satellite_plantation
fhir-integratedml-example
➡️ Vote here!
Experts, we are waiting for your votes! 🔥
Participants, improve & promote your solutions! Hey Developers!
The second day of voting is over!
Don't forget to vote for the best application!
Good luck to the participants! Hi Devs!
The voting continues!
Who is gonna be the winner? Developers!
The top nominees are changing!
Who is now in the first place?🙀 Developers!
The voting period is almost over!
And here are the results at the moment:
fhir-integratedml-example
cryptocurrency-rate-forecasting
ESKLP
Announcement
Anastasia Dyubaylo · Jul 26, 2021
Hi Community,
We're pleased to invite you to the online meetup with the winners of the InterSystems AI contest!
Date & Time: Friday, July 30, 2021 – 11:00 AM EDT
What awaits you at this Virtual Meetup?
Our winners' bios.
Short demos on their applications.
An open discussion about technologies being used. Q&A. Plans for the next contests.
Our speakers:
@José.Pereira, Business Intelligence Developer at Shift Consultoria e Sistemas Ltda
@Henrique.GonçalvesDias, System Management Specialist / Database Administrator, Sao Paulo Federal Court
@Oleh.Dontsov, Full Stack Developer, Tax Sketches SRO
@Aleksandr.Kalinin6636, Programm Engineer at LLC "Escape"
@Evgeny.Shvarov, InterSystems Developer Ecosystem Manager
@Thomas.Dyar, InterSystems Product Specialist - Machine Learning
@Raj.Singh5479, InterSystems Product Manager - Developer Experience
@Robert.Kuszewski, InterSystems Product Manager - Developer Experience
You will also have the opportunity to ask any questions to our developers in a special webinar chat.
We will be happy to talk to you at our Virtual Meetup!
➡️ REGISTER TODAY! TODAY! Join our meetup at https://mologaconsulting.my.webex.com/meet/Community
See you! Hey Developers,
Watch the recording of the meetup on InterSystems Developers YouTube:
⏯ Online Meetup with the InterSystems AI Contest Winners
Big applause to all the speakers! 👏🏼
Article
Lucas Enard · Sep 11, 2022
Hello everyone, I’m a French student that just arrived in Prague for an academical exchange for my fifth year of engineering school and here is my participation in the interop contest.
I hadn’t much time to code since I was moving from France to Prague and I’m participating alone, so I decided to make a project that’s more like a template rather than an application.
I wanted to participate since my field (Data Science and AI) is not often linked with sustainability and the contest was a way for me to express myself in this important subject that is sustainability and Environnement.
As you know, Artificial Intelligence is becoming more and more popular, with many well-known firms trying to follow the movement and sell tools to easily create machine learning models, train them and use them. All of this is practical and easy, but it comes with a cost, a financial one but also an Environnmental one.
Training huge models again and again can take a lot of resources and produce a lot of CO2s. Supercomputers are running for days, and days and the size of the models are just exponentially increasing taking more space than ever. All these effort for some performance improvement that are not even sure to be find in some cases.
Of course, this process is needed by many firms where even 0.1% of improvement in the accuracy of a model could save thousands of lives. That's why this template is designed for more common uses.
However, as I had the opportunity to work with NLP (Natural Language Process) or Image Classification, I realized that some tools and models are already almost usable as is and can help us save hundreds of hours of training and therefore a lot of CO2s production and electricity consumption.
That’s why I decided to create a template using InterSystems technologies to create an interoperable solution that answer some sustainability issues by allowing you to easily, in a few clicks, download pre-trained models from the internet ONCE, use them as much as you want for your own need, and of course, fine-tune these pre-trained models with new content available on an IRIS database and add content to the existing model.
That way, in the template, we are taking an NLP model, trying it, then training it on data to create five new labels in the model to grade internet review.
Therefore, by doing this, we end up with (If you have time and some compute power) a great model that can be used to predict the grade of internet review, that for free and for a small amount of CO2 produced.
See [the GitHub](https://github.com/LucasEnard/Contest-Sustainability) and the Open Exchange post linked to this article.
Or see the ReadMe here :
# 1. Contest-Sustainability
This is an template using InterSystems technologies to create an interoperable solution that answer some sustainability issues by allowing you to easily, in a few clicks, download pre-trained models from the internet ONCE, use them as much as you want for your own need, and of course, fine-tune these pre-trained models with new content available on an IRIS database and add content to the existing model.
In this example we are taking an NLP model, trying it, then training it on data to create five new labels in the model to grade internet review. Saving in the process a lot of resources and CO2 emission.
Here are some models as example you can try :
https://huggingface.co/gpt2
https://huggingface.co/Jean-Baptiste/camembert-ner
https://huggingface.co/bert-base-uncased
https://huggingface.co/facebook/detr-resnet-50
https://huggingface.co/facebook/detr-resnet-50-panoptic
TABLE OF CONTENT :
- [1. Contest-Sustainability](#1-contest-sustainability)
- [2. Installation](#2-installation)
- [2.1. Starting the Production](#21-starting-the-production)
- [2.2. Access the Production](#22-access-the-production)
- [2.3. Closing the Production](#23-closing-the-production)
- [3. How it works](#3-how-it-works)
- [4. HuggingFace API](#4-huggingface-api)
- [5. Use any model from the web](#5-use-any-model-from-the-web)
- [5.1. FIRST CASE : YOU HAVE YOUR OWN MODEL](#51-first-case--you-have-your-own-model)
- [5.2. SECOND CASE : YOU WANT TO DOWNLOAD A MODEL FROM HUGGINGFACE](#52-second-case--you-want-to-download-a-model-from-huggingface)
- [5.2.1. Settings](#521-settings)
- [5.2.2. Testing](#522-testing)
- [6. Fine-tune the models](#6-fine-tune-the-models)
- [6.1. Tunning the model](#61-tunning-the-model)
- [6.1.1. Download the model](#611-download-the-model)
- [6.1.2. Settings](#612-settings)
- [6.1.3. Train the model](#613-train-the-model)
- [6.1.4. Replace the model](#614-replace-the-model)
- [6.2. Use the model](#62-use-the-model)
- [6.2.1. Settings](#621-settings)
- [6.2.2. Test the model](#622-test-the-model)
- [7. Important note](#7-important-note)
- [8. TroubleShooting](#8-troubleshooting)
- [9. Conclusion](#9-conclusion)
# 2. Installation
## 2.1. Starting the Production
While in the contest-sustainability folder, open a terminal and enter :
```
docker-compose up
```
The very first time, it may take a few minutes to build the image correctly and install all the needed modules for Python.
## 2.2. Access the Production
Following this link, access the production :
[Access the Production](http://localhost:52795/csp/irisapp/EnsPortal.ProductionConfig.zen?RODUCTION=INFORMATION.QuickFixProduction)
## 2.3. Closing the Production
```
docker-compose down
```
# 3. How it works
For now, some models may not work with this implementation since everything is automatically done, which means, no matter what model you input, we will try to make it work through `transformers` `pipeline` library.
Pipeline is a powerful tool by the HuggingFace team that will scan the folder in which we downloaded the model, then understand what library it should use between PyTorch, Keras, Tensorflow or JAX to then load that model using `AutoModel`.
From here, by inputting the task, the pipeline knows what to do with the model, tokenizer or even feature-extractor in this folder, and manage your input automatically, tokenize it, process it, pass it into the model, then give back the output in a decoded form usable directly by us.
# 4. HuggingFace API
Some people or some systems can not download models or use them due to some restriction, that's why it is possible to use the HuggingFace API and call some models directly throught this service.
It is made easier for you here :
You must first start the demo, using the green `Start` button or `Stop` and `Start` it again to apply your config changes.
Then, by clicking on the operation `Python.HFOperation` of your choice, and selecting in the right tab `action`, you can `test` the demo.
In this `test` window, select :
Type of request : `Grongier.PEX.Message`
For the `classname` you must enter :
```
msg.HFRequest
```
And for the `json`, here is an example of a call to GPT2 :
```
{
"api_url":"https://api-inference.huggingface.co/models/gpt2",
"payload":"Can you please let us know more details about your ",
"api_key":"----------------------"
}
```
Now you can click on `Visual Trace` to see in details what happened and see the logs.
**NOTE** that you must have an API key from HuggingFace before using this Operation ( the api-keys are free, you just need to register to HF )
**NOTE** that you can change the url to try any other models from HuggingFace, you may need to change the payload.
See as example:



# 5. Use any model from the web
In the section we will teach you how to use almost any pre-trained model from the internet, HuggingFace or not in order to save some resource or simply use these model inside IRIS.
## 5.1. FIRST CASE : YOU HAVE YOUR OWN MODEL
In this case, you must copy paste your model, with the config, the tokenizer.json etc inside a folder inside the model folder.
Path : `src/model/yourmodelname/`
From here you must create a new operation, call it as you wish, go to the parameters of this operation.
Then go to `settings` in the right tab, then in the `Python` part, then in the `%settings` part.
Here, you can enter or modify any parameters ( don't forget to press `apply` once your are done ).
Here's the default configuration for this case :
%settings
```
name=yourmodelname
task=text-generation
```
**NOTE** that any settings that are not `name` or `model_url` will go into the PIPELINE settings.
Now you can double-click on the operation and `start` it.
You must see in the `Log` part the starting of your model.
From here, we create a `PIPELINE` using transformers that uses your config file find in the folder as seen before.
To call that pipeline, click on the operation, and select in the right tab `action`, you can `test` the demo.
In this `test` window, select :
Type of request : `Grongier.PEX.Message`
For the `classname` you must enter :
```
msg.MLRequest
```
And for the `json`, you must enter every arguments needed by your model.
Here is an example of a call to GPT2 :
```
{
"text_inputs":"Unfortunately, the outcome",
"max_length":100,
"num_return_sequences":3
}
```
Click `Invoke Testing Service` and wait for the model to operate.
See for example:

Now you can click on `Visual Trace` to see in details what happened and see the logs.
See for example :


## 5.2. SECOND CASE : YOU WANT TO DOWNLOAD A MODEL FROM HUGGINGFACE
In this case, you must find the URL of the model on HuggingFace.
Find a model that does what you are looking for and use it without spending resources and using the InterSystems technologies.
### 5.2.1. Settings
From here you must go to the parameters of the `Hugging`.
Click on the `HuggingFace` operation of your choice then go to `settings` in the right tab, then in the `Python` part, then in the `%settings` part.
Here, you can enter or modify any parameters ( don't forget to press `apply` once your are done ).
Here's some example configuration for some models we found on HuggingFace :
%settings for gpt2
```
model_url=https://huggingface.co/gpt2
name=gpt2
task=text-generation
```
%settings for camembert-ner
```
name=camembert-ner
model_url=https://huggingface.co/Jean-Baptiste/camembert-ner
task=ner
aggregation_strategy=simple
```
%settings for bert-base-uncased
```
name=bert-base-uncased
model_url=https://huggingface.co/bert-base-uncased
task=fill-mask
```
%settings for detr-resnet-50
```
name=detr-resnet-50
model_url=https://huggingface.co/facebook/detr-resnet-50
task=object-detection
```
%settings for detr-resnet-50-protnic
```
name=detr-resnet-50-panoptic
model_url=https://huggingface.co/facebook/detr-resnet-50-panoptic
task=image-segmentation
```
**NOTE** that any settings that are not `name` or `model_url` will go into the PIPELINE settings, so in our second example, the camembert-ner pipeline requirers an `aggregation_strategy` and a `task` that are specified here while the gpt2 requirers only a `task`.
See as example:

Now you can double-click on the operation and `start` it.
**You must see in the `Log` part the starting of your model and the downloading.**
**NOTE** You can refresh those logs every x seconds to see the advancement with the downloads.

From here, we create a `PIPELINE` using transformers that uses your config file find in the folder as seen before.
### 5.2.2. Testing
To call that pipeline, click on the operation , and select in the right tab `action`, you can `test` the demo.
In this `test` window, select :
Type of request : `Grongier.PEX.Message`
For the `classname` you must enter :
```
msg.MLRequest
```
And for the `json`, you must enter every arguments needed by your model.
Here is an example of a call to GPT2 :
```
{
"text_inputs":"George Washington lived",
"max_length":30,
"num_return_sequences":3
}
```
Here is an example of a call to Camembert-ner :
```
{
"inputs":"George Washington lived in washington"
}
```
Here is an example of a call to bert-base-uncased :
```
{
"inputs":"George Washington lived in [MASK]."
}
```
Here is an example of a call to detr-resnet-50 using an online url :
```
{
"url":"http://images.cocodataset.org/val2017/000000039769.jpg"
}
```
Here is an example of a call to detr-resnet-50-panoptic using the url as a path:
```
{
"url":"/irisdev/app/misc/000000039769.jpg"
}
```
Click `Invoke Testing Service` and wait for the model to operate.
Now you can click on `Visual Trace` to see in details what happened and see the logs.
**NOTE** that once the model was downloaded once, the production won't download it again but get the cached files found at `src/model/TheModelName/`.
If some files are missing, the Production will download them again.
See as example:



See as example:


# 6. Fine-tune the models
In this part we are trying to fine-tune a model in order to repurpose an existing model and make it even better without using too much resources.
## 6.1. Tunning the model
### 6.1.1. Download the model
In order to use this GitHub you need to have a model from HuggingFace compatible with pipeline to use and train, and have a dataset you want to train your model on.
In order to help, we let you the possibility to use the Python script in `src/utils/download_bert.py`. It will download for you the `"https://huggingface.co/bert-base-cased"` model and put inside the `src/model/bert-base-cased` folder if it's not already here.
Moreover we also give you a DataSet to train the bert model on, this dataset was already loaded inside the IRIS DataBase and nothing else needs to be done if you want to use it. ( You can access it going to the SQL part of the portal and in the iris database namespace then to the review table )
To use the script, if you are inside the container, you can execute it without worry, if you are in local, you may need to `pip3 install requests` and `pip3 install beautifulsoup4`
See the output :

### 6.1.2. Settings
If you want to use the bert-base-cased model, and you did downloaded it using the script, nothing needs to be added to the settings and you can advance to the [train the model part](#43-train-the-model).
If you want to use your own model, click on the `Python.TuningOperation`, and select in the right tab `Settings`, then `Python` then in the `%settings` part, enter the path to the model, the name of the folder and the number of label you want it trained on.
Example :
```
path=/irisdev/app/src/model/
model_name=bert-base-cased
num_labels=5
```
### 6.1.3. Train the model
To train the model you must go the `Production` following this link :
```
http://localhost:52795/csp/irisapp/EnsPortal.ProductionConfig.zen?PRODUCTION=iris.Production
```
And connect using :
```SuperUser``` as username and ```SYS``` as password.
To call the training, click on the `Python.TuningOperation`, and select in the right tab `Actions`, you can `Test` the demo.
In this test window, select :
Type of request : Grongier.PEX.Message
For the classname you must enter :
```
msg.TrainRequest
```
And for the json, you must enter every arguments needed by the trainer to train.
Here is an example that train on the first 20 rows ( This isn't a proper training but it is fast ):
```
{
"columns":"ReviewLabel,ReviewText",
"table":"iris.Review",
"limit":20,
"p_of_train":0.8,
"output_dir":"/irisdev/app/src/model/checkpoints",
"evaluation_strategy":"steps",
"learning_rate":0.01,
"num_train_epochs":1
}
```
As for example :

As you can see, you must enter
- `table` to use.
- `columns` to use ( first is the `label`, second is the `input` to be tokenized )
- `limit` of rows to take in ( if you don't precise a number of rows, all the data will be used )
- `p_of_train` the percentage of training data to take from the dataset and `1 - p_of_train` the percentage of testing data to take from the dataset.
After that, the other parameters are up to you and can be anything according to `https://huggingface.co/docs/transformers/main_classes/trainer` parameters.
**NOTE** that the batch size for training and testing is automatically calculated if not input in the request. ( It's the biggest divider of the number of rows that's less than the square root of the number of row and less than 32 )
Click Invoke Testing Service and close the testing window without waiting.
Now access the `Python.TuningOperation`, and select in the right tab `log` ; Here you can see the advancement of the training and evaluations.
Once it is over, you will see a log saying that the new model was saved in a temporary folder.
Now access the `Python.TuningOperation`, and select in the right tab `message` and select the last one by clicking on it's header. Here you can see the advancement of the training and evaluations and at the end you can have access to the Metrics of the old and the new model for you to compare.
### 6.1.4. Replace the model
**If you want to keep the old model**, nothing must be done, the old one will stay on the non-temporary folder and is still loaded for further training.
**If you want to keep the new model**, you must click on the `Python.TuningOperation`, and select in the right tab `Actions` and test.
In this test window, select :
Type of request : Grongier.PEX.Message
For the classname you must enter :
```
msg.OverrideRequest
```
And for the json, empty brackets:
```
{}
```
Click Invoke Testing Service and see the response message. The new model was moved from the temporary folder to the non-temporary folder.
## 6.2. Use the model
Training a model is interesting but you can also try it out.
### 6.2.1. Settings
If you want to use the bert-base-cased model, and you did downloaded it using the script, nothing needs to be added to the settings and you can advance to the [test the model part](#52-test-the-model).
If you want to use your own model, click on the `Python.TuningOperation`, and select in the right tab `Settings`, then `Python` then in the `%settings` part, enter the parameter to add to the pipeline.
### 6.2.2. Test the model
To test the model you must go the `Production` following this link :
```
http://localhost:52795/csp/irisapp/EnsPortal.ProductionConfig.zen?PRODUCTION=iris.Production
```
And connect using :
```SuperUser``` as username and ```SYS``` as password.
To call the testing, click on the `Python.MLOperation`, and select in the right tab `Actions`, you can `Test` the demo.
In this test window, select :
Type of request : Grongier.PEX.Message
For the classname you must enter :
```
msg.MLRequest
```
And for the json, you must enter every arguments needed by the model to work
```
{
"inputs":"This was a really bad experience"
}
```
Press `Call test services` and then watch the result.
# 7. Important note
Fine-tuning models can take a LOT of time and resources, however it will always consume less resource than training a model from scratch.
You can already see that it's taking a long time and a lot of computer power to fine-tune the model so imagine the cost if you had to train it from scratch and start over multiple times to get the right results.
# 8. TroubleShooting
If you have issues, reading is the first advice we can give you, most errors are easily understood just by reading the logs as almost all errors will be captured by a try / catch and logged.
If you need to install a new module, or Python dependence, open a terminal inside the container and enter for example : "pip install new-module"
To open a terminal there are many ways,
- If you use the InterSystems plugins, you can click in the below bar in VSCode, the one looking like `docker:iris:52795[IRISAPP]` and select `Open Shell in Docker`.
- In any local terminal enter : `docker-compose exec -it iris bash`
- From Docker-Desktop find the IRIS container and click on `Open in terminal`
Some models may require some changes for the pipeline or the settings for example, it is your task to add in the settings and in the request the right information.
# 9. Conclusion
From here you should be able to use some models that you may need on IRIS and fine-tune them as you wish.
This template is supposed to be modified to suits your need and was created as a base for any AI and IRIS project that has sustainability and interoperability in mind.
Due to the lack of time I was unable to add an API that was supposed to use a Director to directly communicate with the production and allow the users to make request to the models. However, if you are still interested in an IRIS API using this Python module you can check [my GitHub](https://github.com/LucasEnard/) or you can directly go to [my example of API in Python for IRIS](https://github.com/LucasEnard/iris-python-flask-api-template).
Link to my DC profile : https://community.intersystems.com/user/lucas-enard-0 Best of luck for the contest ! Thank you so much!! Hi @Lucas.Enard2487! Thanks for such a great contribution to the community!
I have a question: where can I obtain an API key for GPT2 to run the test:
{
"api_url":"https://api-inference.huggingface.co/models/gpt2",
"payload":"Can you please let us know more details about your ",
"api_key":"----------------------"
}
Hello,
Thanks for trying my template.
You need to register through the HuggingFace website and get an API key for free.
Announcement
Anastasia Dyubaylo · Sep 29, 2022
Hello and welcome to the Developer Ecosystem Summer News!
This summer was full of exciting events and activities in the InterSystems Developer Ecosystem. In case you missed something, we've prepared for you a selection of the hottest news and topics to read!
For your convenience, here we gathered everything worth noting that happened this last season at a glance. Read on!
News
🎉 Incredible Milestones on Dev Community: 10K posts, 11K members, 5M reads
💡 InterSystems Ideas announced
🆕 Brand New "About Us" Page
🆕 DC rubric: "InterSystems Memes" (+part 1)
🆕 DC rubric: Key Questions
⛱ Inquisitive Summer on DC: ask questions - get double points
☕️ Dev Random Coffee on Global Masters: join our new networking activity
🔗 DC in French > < Global Masters API integration released
Contests & Events
🔥 InterSystems Global Summit 2022
Main announcement
Live from the Summit: part 1, part 2
InterSystems Developers at the Summit: how it was?
Watch the Keynotes
🏆 InterSystems Full Stack Contest 2022
Rules & prizes
Kick-off Webinar
Winners announcement
Meetup with winners
🏆 InterSystems Tech Article Contest: Python Edition
Rules & prizes
New contest bonuses introduced
Winners announcements
🧩 Code of Golf challenge
⏯ Webinar organized by DC: Scaling InterSystems FHIR Server on Amazon Web Services with ECP
👩💻 Women's health - FemTech panel hosted by InterSystems
👋 InterSystems Developer Meetup on Python Interoperability in Boston
Latest Releases
⬇️ InterSystems IRIS, IRIS for Health, & HealthShare Health Connect 2022.2 developer previews
Preview 1
Preview 2
Preview 3
Preview 4
Preview 5
Preview 6
⬇️ InterSystems IRIS, IRIS for Health, & HealthShare Health Connect 2022.1
⬇️ InterSystems API Manager 2.8.1
🆕 Developer Community Release, July 2022
🆕 UX/UI change on Open Exchange
🆕 New Open Exchange feature: ObjectScript Quality status
Best Practices & Key Questions
🔥 Best Practices of Summer 2022
DB Migration using SQLgateway
SystemPerformance Utility (pka pButtons) API (and REST API) [and sample UI]
Ensemble Orphaned Messages
Formation on InterSystems' interoperability framework using ONLY Python
Mastering the %SYSTEM.Encryption class
Method to recompile classes and routines after a major upgrade
❓ Key Questions of Summer 2022: July, August
People to Know About
👋 Meet new DC Moderator: Niangang Huang
🌟 Global Masters of Summer 2022: June, July, August
Job Opportunities
💼 Sr. Application Development Analyst - The Ohio State University Wexner Medical Center
💼 InterSystems IRIS Developer - French Speaking - based in Paris - France
💼 Potential HealthShare opportunity
💼 Senior Software Developer - International Healthcare
💼 Looking for a Fully Remote InterSystems IRIS Developer
So...
Here is our take on the most interesting and important things!
What were your highlights from this summer/winter? Share them in the comments section and let's remember the joy we've had! Proud of our Dev Ecosystem Team! Thanks, @Anastasia.Dyubaylo for sharing! My favorites are Random Coffee, New About page, and Key Questions! And of course the Memes! Who says that summer is a quiet time - not in the InterSystems Developer Community! hahaha))) indeed!
Proud of our milestone achievements! Great numbers, aren't they? ;)
For now:
🎉🎉🎉
Question
Rathinakumar S · Nov 7, 2022
Hi Team,
How InterSystems cache calculate the license count based on process?
How to we determine the product required license count ?
Thanks
Rathinakumar License counting depends on how you access Cache/IRIS (i.e. Web interface or some kind of client). there is a quite wide selection of licenses.the best for details is to contact your local sales rep from InterSystems to find your optimal solution
Announcement
Raj Singh · Nov 8, 2022
I'm pleased to announce a milestone in the lifecycle of the ObjectScript package manager, ZPM. The package manager has offered developers the ability to neatly package up ObjectScript code and deployment configuration settings and version information in a convenient way. Over the last few years, it has evolved greatly into an integral part of many development workflows.
It has proven so important that InterSystems has decided to use it for packaging our own components, and that has led us to a decision to move the GitHub repository from the community into our corporate one, and rename it InterSystems Package Manager (IPM). IPM will still be open source. Community members will be able to review the code and submit pull requests. But this change gives us the ability to ensure the security of the software in a way we could not with non-employees being able to make changes to the code base directly. And a heightened level of security and trust is key with software that can install code alongside your data.
So please celebrate the life of ZPM with me, welcome the birth of IPM, and give thanks to the contributors -- especially Nikolay Soloviev and @Dmitry.Maslennikov, who has once again shown amazing insight into developer needs, coupled with the skills and dedication to build great software!
---
https://github.com/intersystems/ipm This is super exciting and I look forward to seeing what's next! Exciting news! absolutely! Great work - long time coming and well worth it!!! Good to see this.
Minor nit is the Info panel at https://openexchange.intersystems.com/package/ObjectScript-Package-Manager still has some links pointing to the old intersystems-community repo. They forward correctly but deserve to be updated anyway. Will this change the commands from zpm to ipm? Nope, it's it will require changes in the language itself. And I'm sure there is no reasons for it. Thanks a lot to all the contributors and to the community that supported with feedback, pull-requests and which adopted broadly the tool!
Currently there are 250+ packages published on OEX, at least 300+ developers who install packages every month, and the amount of installed packages is above 2,000 every month.
Thank you! my review on OEX now shows also if the package supports IPMall 19 reviews have been updated thank you so much for your efforts on this @Robert.Cemper1003 !!
Announcement
Evgeniy Potapov · Nov 10, 2022
Developers, we have prepared a tutorial to get you started with InterSystems Adaptive Analytics powered by AtScale. In it, in addition to setting up AtScale and working with data cubes, we will also touch on methods of working with InterSystems Reports and other analytical systems.
Now the course is ready and we want to conduct a pilot training course on a small group of volunteers (3-5 people).
The course will be held in the form of two-hour classes for three consecutive days from 11/14/2022 to 11/16/2022. The time range is approximately 2pm to 6pm UTC+4 (Dubai). We will choose the most suitable 2 hours based on the results of your answers in the form.
We invite enthusiasts and volunteers to participate in this educational event.
Participation is free.All you need is your time, a computer on which you can complete practical tasks and feedback from you every day.
To participate, fill out a short form https://forms.gle/v6kj8BoxiW5v1i6W9 and we will contact you with further instructions. This sounds interesting!
Announcement
Anastasia Dyubaylo · Apr 21, 2023
Hi Community,
Watch this video to see how to connect to InterSystems Cloud Services from your Java application using the InterSystems JDBC driver:
⏯ Connecting to InterSystems Cloud Services with Java
Subscribe to InterSystems Developers YouTube and stay tuned!
Announcement
Anastasia Dyubaylo · Apr 28, 2023
Hey Community,
Watch this video to see how to connect to InterSystems Cloud Services from your Python application using the InterSystems DB-API driver interface:
⏯ Connecting to InterSystems Cloud Services with Python
Stay tuned and don't forget to subscribe to InterSystems Developers YouTube!
Announcement
Anastasia Dyubaylo · May 5, 2023
Hey Community,
Watch this video to see how to connect to InterSystems Cloud Services from your .NET application using the InterSystems ADO.NET Managed Provider:
⏯ Connecting to InterSystems Cloud Services with .NET
Stay tuned for more educational videos on our InterSystems Developers YouTube channel!
Announcement
Anastasia Dyubaylo · May 12, 2023
Hi Community,
Watch this video to see how to connect to InterSystems Cloud Services from your C++ application, using the InterSystems ODBC Driver:
⏯ Connecting to InterSystems Cloud Services with ODBC
Subscribe to our InterSystems Developers YouTube channel to stay updated!
Question
Robson Tenorio · Oct 14, 2022
Hi!
Is there any ARM64 ODC driver available for InterSystems Caché?
It would be really very useful!
There is not. Cache has not been ported to ARM64. IRIS has ARM ODBC drivers if that's an option for your application.
Announcement
Shannon Puebla · Oct 21, 2022
We are seeking an InterSystems Object Developer With Docker Experience to join our team! You will develop and implement unique web-based applications.
This role is Remote, Full Time and a 1099 position.
Required Qualifications:
4+ years InterSystems Object Technology developing applications utilizing industry best practices for software development.
2+ years using Docker
Preferred:
Healthcare industry experience
Demonstrate the ability to adapt and work with team members of various experience levels.
Ability to work in a fast paced environment while maintaining standards and best practices.
Strong Communicator
VA Experience
Only applicants with the required qualifications will be considered.
If you are interested in this position provide your resume, phone number, and times you are available.
Article
Stefan Cronje · Jan 25, 2023
Hi folks,
I am announcing a new package I have loaded on the OEX, which I am also planning on entering into the contest this month.
In a nutshell, what it offers you are the following.
Base classes to use on Persistent (table) classes for InterSystems IRIS to keep record history
These classes enable the historizing of persistent class records into another persistent class when touched.
This provides for a full history of any record.
It allows for record rollback to a specific version.
It can automatically purge old history records.
Do you need it?
Have you ever had the scenario where a data fix has gone terribly wrong, and you need to roll back the update?Have you ever tried to find out what or who updated or inserted a specific record?Have you ever needed to find out what has happened to a record over its lifetime?
You can get all this now, by simply extending from two classes.
What this article covers is what it offers. The package contains all the instructions needed, and there are only a few.
The Basics
The table that contains the "current" record have two sets of fields
Create
This contains the details of when the entry was created and is immutable.
Update
This contains the information of the last time the record was updated.
The table that contains the history records have three sets of fields
Create
This is copied as is from the current record when inserted.
Update
This is copied as is from the current record when inserted.
Historize
This contains details on the historization entry on insertion, and is immutable.
Each of the sets above contain the following fields:
Name
Content
DateTimeStamp
The system's date and time
Job
The PID value ($JOB)
SystemUser
The system user performing the action. $USERNAME
BusinessHost
The interoperability business host that was involved, if available.
ClientIP
The client's IP address that instructed this, if available.
CSPSessionID
The CSP Session ID that was involved, if available.
Routine
The calling routing. This can really help pinpoint where in the code this originated from.
The "current" record table has a Version property, and this is set when extending from the base class.The history racoed table has a Version property, which is the version that the "current" record was at that point.
What can it historize?
Serial Properties
"Normal" Properties
Class References
Arrays of Data types
Lists of Data types
Arrays of Objects
Lists of Objects
Relationship - where cardinality is "one"
Note that in this case, the history table's prpperty must be an object reference and not a relationship.
What can't it historize?
Relationships where the cardinality is "many"
What about my other triggers?
The triggers activate in order slot number 10. This means you can add your triggers before or after the execution of these triggers.
Additional Functionality
Record historization can be switched off for a specific table by setting a global. This is to cater for bulk updates where is the history is not required, for example, populating a new field during a deployment.
An auto purge setting can be set per table in a global. If you have a table that does get a lot of updates, and you only need the previous two records for example, you can set it to keep the last two records in hte history and remove the older ones. This happens during the historization of the record.
Restoring Previous Versions
The base classes will generate methods in the "current" record class that can be used to restore a specific version, or the previous version, back into the current table.These can be invoked via SQL too, if you need to restore from a selection of rows.
Note that the restored record will bump the version number on the "current" table and will not have its old version number, which is probably a good thing.
Congrats on your first entry to our contests on Open Exchange! good luck :) Hi Stefan,
Your video is now on InterSystems Developers YouTube:
⏯ IRIS Table Audit Demo
Announcement
Anastasia Dyubaylo · Mar 17, 2023
Hey Community,
Tired of entering login-password during the docker build with your InterSystems IRIS every time?
There is a handy way to turn it on and off – use the passwordless zpm module.
Watch this video to explore how to use the passwordless ipm module to turn on and off entering login-password during docker build with your InterSystems IRIS:
⏯️ Passwordless mode for development with InterSystems IRIS
Add zpm "install passwordless" in %SYS namespace during your docker build phase, and IRIS will no longer ask for a password.
Example application with passwordless.