Clear filter
Announcement
Anastasia Dyubaylo · May 29, 2020
Hi Community,
The new video from Global Summit 2019 is already on InterSystems Developers YouTube:
⏯ Automated InterSystems IRIS Cloud Scaling
Auto-scaling, the ability to automatically adjust resources to match load requirements, is a major benefit of cloud technology. In this video, we will show approaches to automatic scaling in the cloud using ECP and data sharding. Examples will include using the auto-scale features of AWS, GCP, and Azure.
Takeaway: InterSystems IRIS provides several ways to take advantage of auto-scaling.
Presenter: @Kenneth.Takemura, Performance Specialist, InterSystems
Additional materials to this video you can find in this InterSystems Online Learning Course.
If you would like to explore a wider range of topics related to this presentation, please use the Resource Guides below:
Performance and Scalability Resource Guide - 2019
System Architecture (Running Fast and Safe) Resource Guide - 2019
Cloud Deployment Resource Guide - 2019
Enjoy watching this video! 👍🏼
Announcement
Luca Ravazzolo · May 28, 2020
Preview releases are now available for the first version (v1.0) of InterSystems System Alerting and Monitoring (InterSystems SAM for short). InterSystems SAM v1.0 provides a modern monitoring solution for InterSystems IRIS-based products. It allows high-level views of clusters and single-node drilled down metrics-visualization together with alerts notifications. This first version provides visualization for more than one hundred InterSystems IRIS kernel metrics, and users can extend the default-supplied Grafana template to their liking. V1.0 is meant to be a simple and intuitive baseline. Please help us make it great by trying it and sending us feedback!
SAM can display information from InterSystems-based instance starting with version 2019.4 SAM is only available in container format. You will need the SAM Manager container plus a small set of additional open-source components (Prometheus and Grafana) that are added automatically by the composition file.
SAM components and the SAM Manager Community Edition are available from
The WRC Preview page: as “SAM Components” and “SAM Manager”
Externally at the SAM components Github repo & the SAM Manager on Docker Hub if you want to download it before the docker-compose runs (this last link might not be available for few hours but the container is pullable)
If you are traveling or prefer a voice-based Q&A description on what SAM is, here is a podcast we have prepared for you:
SAM documentation can be found here.
im having an issue generating a new cluster; any tips?
Hi Max,
Did you untar the tarball with the "p" flag as well? It is there to preserve the correct privileges. I think that might be your issue.
see
$ tar zpxvf sam-<version>.tar.gz
Let me know
Announcement
Michelle Spisak · May 29, 2020
Manage all of your APIs and servers from within InterSystems IRIS — find out how in the new API Manager with InterSystems IRIS resource guide!
Announcement
Anastasia Dyubaylo · Jun 1, 2020
Hi Community!
This week is a voting week for the InterSystems IRIS Native API Programming Contest! We have 8 applications — so you have a set of applications to choose from!
How to vote? This is easy: you will have one vote, and your vote goes either in Experts Nomination or in Community Nomination.
Experts Nomination
If you are InterSystems Product Manager, or DC moderator, or Global Master from Specialist level and above cast your vote in the Expert nomination.
Community Nomination
If you ever contributed to DC (posts or replies) and this was not considered as spam you are able to vote for the applications in the Community nomination.
Voting
Voting takes place on the Open Exchange Contest Page and you need to sign in to Open Exchange - you can do it with your DC account credentials.
If you changed your mind, cancel the choice and give your vote to another application - you have 7 days to choose!
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!
➡️ Also, please check out the Judgment and Voting Rules for the Contest here.
So, developers!
Give the vote to the best solution on InterSystems IRIS! You decide! Ok!
After the first day of the voting we have:
Expert Nomination, Top 3
MongoDB to IRIS migration – 6
ObjectScript Kernel – 6
WebSocket Client JS with IRIS Native API as Docker Micro Server – 2
______________
The leaderboard.
Community Nomination, Top 3
WebSocket Client JS with IRIS Native API as Docker Micro Server – 10
iris-python-suite – 6
MongoDB to IRIS migration – 2
______________
The leaderboard.
Developers! Support the applications you like!
Participants! Improve and promote your solutions! Hey Developers,
Here are the results after 2 days of voting:
Expert Nomination, Top 3
WebSocket Client JS with IRIS Native API as Docker Micro Server – 8
MongoDB to IRIS migration – 7
ObjectScript Kernel – 7
➡️ The leaderboard.
Community Nomination, Top 3
WebSocket Client JS with IRIS Native API as Docker Micro Server – 10
iris-python-suite – 8
Perfomance comparison of IRIS Native API and EAV-approach – 3
➡️ The leaderboard.
So, the voting continues! Full speed ahead! Voting for the IRIS Programming Contest goes ahead!
And here're the results at the moment:
Expert Nomination, Top 3
WebSocket Client JS with IRIS Native API as Docker Micro Server – 14
ObjectScript Kernel – 13
iris-python-suite – 5
IRIS import manager – 5
➡️ The leaderboard.
Community Nomination, Top 3
WebSocket Client JS with IRIS Native API as Docker Micro Server – 13
iris-python-suite – 9
ObjectScript Kernel – 3
OData Server for IRIS – 3
➡️ The leaderboard. Hi guys!
I just want to share with you a few details, that we have this whole week for voting and to let you fix bugs and improve the app, to describe (in articles) and show(in videos) how your application works and why is it cool! And so you do!
And if you see sometimes that the number of your votes decreased that means that somebody from votes changed his mind in favor of another participant. Probably because your colleague just has posted an exciting article or submitted the video!
To all participants!
Thank you very much for your outstanding contributions! The only thing I regret that I can vote only once! Hey Developers!
Last call! Please check out the Contest Board and vote for the applications you like! 👍🏼
Announcement
Anastasia Dyubaylo · Dec 4, 2020
Hi Community,
See how to build a REST API with InterSystems IRIS in just five minutes, leveraging Docker containers:
⏯ Building a REST API with InterSystems IRIS
Subscribe to InterSystems Developers YouTube and stay tuned!
Announcement
Anastasia Dyubaylo · Feb 3, 2021
Hi Developers,
We're pleased to invite all the developers to the upcoming InterSystems Grand Prix contest kick-off webinar!
The topic of this webinar is dedicated to our mega Grand Prix contest. We invite to use IntegratedML, Native API, multi-model, Analytics and NLP, Open API and Interoperability, IKO.
In this webinar, we'll talk about the topics to expect from participants and show you how to develop, build and deploy applications on InterSystems IRIS data platform.
Date & Time: Monday, Febraury 8 — 10:00 AM EDT
Speakers: 🗣 @Evgeny.Shvarov, InterSystems Developer Ecosystem Manager
🗣 @tomd, InterSystems Product Specialist - Machine Learning
So...
We will be happy to talk to you at our webinar!
➡️ JOIN THE KICK-OFF WEBINAR Hey guys,
InterSystems Product Specialist @tomd will be one of the webinar speakers!
Save your seat today – register here! 👈🏼 Hey Developers,
The recording of this webinar is available on InterSystems Developers YouTube! Please welcome:
⏯ InterSystems Grand Prix Contest Kick-off Webinar
Big applause to our speakers! 👏🏼
And thanks to everyone for joining our webinar!
Announcement
Evgeny Shvarov · Feb 4, 2021
Hi Developers!
Here're the technology bonuses for the InterSystems Grand Prix Contest that will give you extra points in the voting.
Group
Bonus
Points
General
Docker
2
ZPM
2
Unit Testing
2
API and languages
REST API
2
ODBC/JDBC
2
Embedded Python usage
4
Native API in Java, Python, .NET, node.js
3
Multi-model
Globals (key-value)
2
SQL
2
Object
2
New model
3
Analytics
IRIS BI
2
IRIS NLP
2
InterSystems Reports
3
AI/ML
Integrated ML
4
Python or Julia Gateway
3
Interoperability
BPL
3
Custom Adapter
2
PEX
4
Workflow Engine
2
FHIR
FHIR Server REST API
3
FHIR SQL Scheme usage
2
Healthcare Data Transformations
3
Total
58
Below are the details and useful links on all the technical bonuses.
General bonuses
ZPM Package deployment - 2 points
You can collect the bonus if you build and publish the ZPM(ObjectScript Package Manager) package for your Full-Stack application so it could be deployed with:
zpm "install your-multi-model-solution"
command on IRIS with ZPM client installed.
ZPM client. Documentation.
Docker container usage - 2 points
The application gets a 'Docker container' bonus if it uses InterSystems IRIS running in a docker container. Here is the simplest template to start from.
Unit Testing - 2 points
Applications that have Unit Testing for the InterSystems IRIS code will collect the bonus.
Learn more about ObjectScript Unit Testing in Documentation and on Developer Community.
InterSystems IRIS API
InterSystems IRIS REST API usage - 2 points
You get the bonus if you access InterSystems IRIS via REST API in your Full-Stack application. You either can build the REST API by yourself, or use any built-in or install it via ZPM. Learn more on InterSystems REST API.
Embedded Python usage - 4 points
Embedded Python needs a certain docker image, e.g. this one:
intersystemsdc/iris-ml-community:2020.3.0.302.0-zpm
See the related video.
Here is the template which shows how Embedded Python works and how to make a ZPM package to deploy it.
InterSystems Native API usage - 3 points
You get this bonus if you access the data in your Full-Stack application using any of the InterSystems Native API options: .NET, Java, Python, Node.js. Learn more here.
InterSystems JDBC usage - 2 points
InterSystems IRIS provides a JDBC driver to access the data. You get the bonus if you refer to the data in your Full-Stack application using SQL and InterSystems JDBC.
Multi-model bonuses
InterSystems Globals (key-value) - 2 points
InterSystems Globals are multidimensional sparse arrays that are being used to store any data in InterSystems IRIS. Each Globals node could be considered a key, which you can set a value for. InterSystems IRIS provides a set of APIs, including ObjectScript commands and Native API to manage Globals.
Tools:
Managing globals in the management portal
Documentation:
Using Multidimensional Storage (Globals)
Using Globals
Articles:
Globals are Magic Swords for managing data
The art of mapping Globals to Classes
Videos:
Globals QuickStart
You can collect 2 points for using Globals via ObjectScript or Native API in your
InterSystems SQL - 2 points
InterSystems IRIS provides SQL access to data via ObjectScript, REST API, JDBC.
Tools:
VSCode SQL Tools
DBeaver
SQL in Management Portal
Other SQL tools
Documentation:
SQL Access
InterSystems SQL Reference
Articles:
Class Queries in ObjectScript
Videos:
SQL Things you should know
Collect 2 bonus points by using InterSystems SQL in your application.
InterSystems Objects - 2 points
InterSystems IRIS provides the way to store and change instances of objects in globals via ObjectScript/REST API, Native API for Java/.NET/Node.js/Python, and XEP for Java/.NET.
Documentation:
Object Access
Get 2 bonus points for the usage of Object Access in your application.
Your data model - 2 points
InterSystems IRIS can be used as a data platform that exposes your own data model API. You are able to use ObjectScript, REST API or Native API to expose your own API which provides any special data model, like Time-Series, Spatial, Graph, RDF/Triple, Column store, Document store.
Introduce any of the new data-model API and collect 2 bonus points.
IRIS Analytics Bonuses
InterSystems IRIS BI - 2 points
InterSystems IRIS Business Intelligence is a feature of IRIS which gives you the option to create BI cubes and pivots against persistent data in IRIS and deliver then this information to users using interactive dashboards. Learn more.
The basic iris-analytics-template contains examples of IRIS BI cube, pivot, and a dashboard.
InterSystems IRIS NLP (iKnow) - 2 points
InterSystems NLP a.k.a. iKnow is an InterSystems IRIS feature and is a library for Natural Language Processing that identifies entities (phrases) and their semantic context in natural language text in English, German, Dutch, French, Spanish, Portuguese, Swedish, Russian, Ukrainian, Czech and Japanese.
Learn more about iKnow on Open Exchange.
Examples:
Covid iKnow Text Navigator
Samples Aviation
and more
Use iKnow to manage unstructured data in your analytics solution and get 1 bonus point.
InterSystems Reports - 3 points
InterSystems Reports is a feature of InterSystems IRIS which lets you design printing reports, send them via email by schedule, and deliver interactive reports for clients. InterSystems Reports is a repackaging of Logi Report (formerly named JReport®), a product of Logi Analytics®. Learn more in Documentation.
Check the Github repo with examples of InterSystems Reports.
Also, watch the video with the demo of InterSystems Reports and try with the Learning Lab.
You can download InterSystems Reports designer and server in the WRC download section.
License keys for InterSystms Reports Designer and Server will be available in Discord.
AI/ML
IntegratedML - 3 points
IntegratedML is a feature of InterSystems IRIS that expands SQL with a set of ML instructions that let you simplify and automate AI and Machine learning calculations for your solution. Learn more on IntegratedML.
You need special images of IRIS to use IntegratedML, check it here.
Examples:
A basic integratedML template
Several examples on Open Exchange
Usage of IntegratedML in your IRIS Analytics solution gives you one extra point.
2. Python Gateway usage - 2 points
Python Gateway is an addon to InterSystems IRIS which gives you the way to use Python in the InterSystems IRIS environment:
Execute arbitrary Python code.
Seamlessly transfer data from InterSystems IRIS into Python.
Build intelligent Interoperability business processes with Python Interoperability Adapter.
Save, examine, modify and restore Python context from InterSystems IRIS.
Learn more about Python Gateway.
You can use the Python Gateway template, which includes IntegratedML too.
Interoperability Bonuses
Business Process BPL or Business Rules Usage - 2 point
One of the key features of IRIS Interoperability Productions is a business process, which could be described by BPL (Business Process Language).
Learn more on Business Processes in the documentation.
Business Rule is a no-code/low-code approach to manage the processing logic of the interoperability production. In InterSystems IRIS you can create a business rule which you can create visually or via the ObjectScript representation.
You can collect the Business Process/Business Rule bonus if you create and use the business process or business rule in your interoperability production.
Business Rule Example
Learn more on Business Rules in the documentation
Custom Interoperability Adapter Usage - 2 point
InterSystems Interoperability production can contain inbound or Outbound adapters that are being used to communicate with external systems by business services and operations of the production. You can use out-of-the-box adapters (like File, or Email) or develop your own.
You get the bonus if you develop your own custom inbound or outbound adapter and use it in your production.
Example of an adapter
Learn more on adapters
Production EXtension (PEX) Usage - 4 points
PEX is a Java or .NET extension of Interoperability productions.
You get this bonus if you use PEX with JAVA or .NET in your interoperability production.
PEX Demo
Learn more on PEX in Documentation
Workflow Engine Usage - 2 points
Workflow Engine is a part of IRIS Interoperability which could be used to automate the distribution of tasks among users.
You get this bonus if you use include the usage of Workflow Engine in your interoperability production.
Learn more on Workflows in Documentation.
There are Community modules WorkflowAPI and WorkflowUI-ngx which provide a nice UI layer on Angular for the Workflow engine.
FHIR Bonuses
FHIR Server REST API usage - 3 points
You get the bonus if you use the REST API endpoint of the FHIR Server in InterSystems IRIS for health. You can take the IRIS-FHIR-Template which prepares the FHIR server during the docker image building. The documentation for FHIR API 4.0.1 could be found here. Learn more in InterSystems IRIS for Health documentation.
FHIR SQL Schema usage - 2 points
You can collect this technology bonus if you use FHIR SQL Schema in the SQL queries of your application. You can use this schema e.g. for making an FHIR Analytics solution. Use HSFHIR_I0001_R for resources schema for full resources and HSFHIR_I0001_S schema to search with SQL for resources. Check the examples in the template.
Healthcare standards transformations - 3 points
InterSystems IRIS for Health contains Healthcare Interoperability modules that help to perform data transformations from different healthcare standards to FHIR and vice-versa. Make CDA to FHIR, HL7v2 to FHIR, or any other transformations in your application to collect this bonus. See the examples of HL7v2 to FHIR and CDA to FHIR transformations. Learn more in the documentation.
The list of bonuses is subject to change. Stay tuned! The part on Embedded Python is updated:
here is the template that could be taken as a foundation to build an Embedded Python solution with IRIS.
here is an article that describes Embedded Python usage and packaging with ZPM for deployment.
Announcement
Anastasia Dyubaylo · Feb 2, 2021
Hi Community,
We're pleased to invite you to the online meetup with the winners of the InterSystems Multi-Model Contest!
Date & Time: Friday, Febraury 5, 2021 – 10:00 EDT
What awaits you at this virtual Meetup?
Our winners' bios.
Short demos on their applications.
An open discussion about technologies being used, bonuses, questions. Plans for the next contests.
Our speakers:
@José.Pereira, Business Intelligence Developer at Shift Consultoria e Sistemas Ltda
@Renato.Banzai, Machine Learning Engineer Coordinator at Itaú Unibanco
@Henrique, System Management Specialist / Database Administrator, Sao Paulo Federal Court
@Evgeny.Shvarov, InterSystems Developer Ecosystem Manager
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! 🤩 YouTube stream here: https://youtu.be/m6xF5I6wfhg
Please join! Hey Developers!
The recording of this virtual meetup is already on InterSystems Developers YouTube:
⏯ Online Meetup with the InterSystems Multi-Model Contest Winners
Big applause to all the speakers! 👏🏼
Announcement
Anastasia Dyubaylo · May 5, 2021
Hi Community,
We're pleased to invite all the developers to the upcoming InterSystems FHIR Accelerator Contest Kick-Off Webinar! The topic of this webinar is dedicated to the FHIR Accelerator programming contest.
On this webinar, we will talk and demo how to use InterSystems IRIS FHIR Accelerator as a service.
Date & Time: Monday, May 10 — 01:00 PM EDT
Speakers: 🗣 @Evgeny.Shvarov, InterSystems Developer Ecosystem Manager🗣 @Regilo.Souza, InterSystems Service Executive🗣 @Anton.Umnikov, InterSystems Senior Cloud Solution Architect🗣 @Patrick.Jamieson3621, InterSystems Product Manager - Health Informatics Platform
Join the webinar to find out all the details about this competition and ask your questions to our speakers!
✅ REGISTER TODAY! Hey Developers!
Don't forget to join the upcoming InterSystems FHIR Accelerator Contest Kick-Off Webinar on Monday, May 10 — 01:00 PM EDT.
We are glad to everyone who wants to participate!😄 Today! Don't miss our kick-off webinar!
➡️ JOIN THE WEBINAR HERE We added the slide deck of the webinar by @Patrick.Jamieson3621. The recording will be published later this week. Hey Developers,
The recording of this webinar is available on InterSystems Developers YouTube! Please welcome:
⏯ InterSystems FHIR Accelerator Contest Kick-off Webinar
Big applause to our speakers! 👏🏼
Announcement
Evgeny Shvarov · Jun 22, 2020
Hi developers!
We are starting InterSystems AI Programming Contest next week, and according to the rules, you can include some technology IRIS Features into your solutions, which will give you extra points in the voting.
Here are the technology bonuses for InterSystems AI Programming Contest!
1. IntegratedML usage - 2 expert vote points
IntegratedML is a new technology Introduced in InterSystems IRIS which you can use with InterSystems IRIS 2020.2 Advanced Analytics Preview release. IntegratedML:
Gives users the ability to create, train, and deploy powerful models from simple SQL syntax without requiring data scientists.
Wraps "best of breed" open source and proprietary "AutoML" frameworks including DataRobot.
Focuses on easy deployment to IRIS, so you can easily add machine learning to your applications.
Learn more in IntegratedML Resource Guide.
You can use with IntegratedML template.
2. Python Gateway usage - 1 expert vote point
Python Gateway is an addon to InterSystems IRIS which gives you the way to use Python in InterSystems IRIS environment:
Execute arbitrary Python code.
Seamlessly transfer data from InterSystems IRIS into Python.
Build intelligent Interoperability business processes with Python Interoperability Adapter.
Save, examine, modify and restore Python context from InterSystems IRIS.
Learn more about Python Gateway.
You can use the Python Gateway template, which includes IntegratedML too.
3. Docker container - 1 expert vote point
The application gets a 'Docker container' bonus if it uses InterSystems IRIS running in a docker container.
Both templates, IntegratedML template and Python Gateway template use docker so you can collect this bonus if you build your solution using these templates.
Or you can use any other Docker-based templates, published on Open Exchange.
Feel free to ask any questions about using the listed technologies.
Good luck in the competition!
Announcement
Anastasia Dyubaylo · Jul 20, 2020
Hi Developers!
The InterSystems IRIS AI Contest is over. Thank you all for participating in our IRIS AI Competition!
And now it's time to announce the winners!
A storm of applause goes to these developers and their applications:
🏆 Experts Nomination - winners were determined by a specially selected jury:
🥇 1st place and $2,000 go to the iris-integratedml-monitor-example project by @José.Pereira
🥈 2nd place and $1,000 go to the iris-ml-suite project by @Renato.Banzai
🥉 3rd place and $500 go to the ESKLP project by @Aleksandr.Kalinin6636
🏆 Community Nomination - an application that received the most votes in total:
🥇 1st place and $1,000 go to the iris-ml-suite project by @Renato.Banzai
🥈 2nd place and $250 go to the iris-integratedml-monitor-example project by @José.Pereira
🥈 2nd place and $250 go to the SAPPHIRE project by @Yuri.Gomes
Congratulations to all the participants!
Thank you for your attention to the contest and the efforts you pay in this exciting coding competition!
And what's next?
A whole series of programming contests awaits InterSystems Developers!
We will announce the next competition very soon – stay tuned!
➡️ More details in this post. Congratulations to the winners! Thanks to all the participants and to the organizers. Congrats for all winners!! Congratulations to all winners, incredible applications !!!
The organization was fantastic. The contest staff is great. The contest is responsible to increase IRIS adoption to new developers and increasing open apps and samples about intersystems tech. It is a valuable instrument! We are very happy to hear such feedback! Thanks @Yuri.Gomes! ☺️ I certainly agree with you @Yuri.Gomes! And the discord community is also great!
Article
Peter Steiwer · Mar 23, 2022
What is Selective Build?
Selective Build is a BI feature in InterSystems IRIS (introduced in version 2020.1). Selective Build allows you to build specific elements of your cube while keeping your cube online.
What is special about Selective Build?
Before getting into the details of Selective Build, a brief recap of the different phases during a regular cube build is important. Here are the phases in a regular cube build:1) Delete existing data in cube2) Populate cube with full set of data3) Build all indices in the cube
Now that we are familiar with how a normal build works, we can understand the benefits of Selective Build. During a regular build, the cube must be offline since the first step is to delete the existing cube data and then populate the full cube again. This is not the case with Selective Build. Selective build takes only the specified cube elements offline and updates the data for these specific elements. This means that existing data is not deleted. Since existing data is not deleted, the cube does not need to be offline. The elements being built will be offline, which means if a user tries to query against these offline elements, they will see an error message.
When should this be used?
Selective Build is a great way to deploy updates to a cube model without needing to take the cube offline for extended periods of time. Depending on the size of the cube, it can take hours or even days to fully build the cube. Having the cube offline for an extended period of time to add a new dimension does not encourage frequent updates to the model.
How is it used?
From UI
In Architect, any modified elements will automatically be kept track of. When you try and build your cube from the UI, the dialog box will give you the option to use Selective Build by default. This default selection also has any modified elements automatically selected. If you prefer to build the entire cube by using a regular build, this option can be selected.
Build Cube API
A new parameter was added to the Build Cube API. This new parameter is described as follows from the documentation: "pFactList is a list of specific Property names in the cube's fact class. If pFactList is supplied, the build will only update the columns listed in that fact list. This list can have either comma-delimited or $LB format. The specific facts being updated will be individually marked as unavailable for queries and queries referencing dimensions based on those facts will throw an error on prepare."
I expect that the UI is used while actively developing modifications to a cube and the API is used while deploying changes to a different system.
To learn more about Selective Build, please see the documentation.
Announcement
Evgeny Shvarov · Jun 30, 2020
Hi Developers!
Here in Developers Community, we have posts, which are categorized by tags. Tags - are specific topics, which relate to InterSystems products, InterSystems services, or any concept related to software development, deployment, or maintenance etc.
Tag is a helpful thing because it gives the option to follow/subscribe to the tag, filter the search by the tag, understand how popular or not unpopular the topic and more.
And we have a problem!
Actually two problems. The tags for the post are selected by the author of the post, and we have the following issues: the author chooses wrong tags for a post, and the post lacks proper tags.
And we think this problem could be solved with AI/ML approach and so we suggest you solve it during the InterSystems IRIS AI Contest.
Here is the posts-and-tags repository, which uses the Python Gateway template, which contains two classes: Community.Post and Community.Tag.
Clone it or Fork it and run:
$ docker compose up -d
and it will build an InterSystems IRIS image and will load these two classes along with data from Post and Tag globals.
Community. Post class contains the data on all the developer community posts with fields:
Name - for the post title,
Text - for the post text,
Tags - for the comma-separated list of tags.
You can get the data with the following SQL query:
select top 20 * from Community.post order by id desc
And you can get posts which have the particular tag with the query:
SELECT * FROM Community.Post WHERE ($LISTFIND($ListfromString(Tags,','),'Contest')>0) ORDER BY ID DESC
Community.Tag class contains tags and its descriptions.
The task
Find the optimal set of tags, for every post which matches the text of the post.
Two hypotheses how this could be solved:
1. Find a matching tag for the post upon the tag description. Every tag has a description, which could match the title and content of the post.
2. Find proper tags considering that the majority of choices from authors are the right choices. So if text similar to some post, it can have similar tags.
Looks like a typical data categorization problem, right?
Also, it would be great to introduce new tags which we probably missed but we have posts which could be represented by these tags.
I'm not a data scientist so probably this problem can be solved with some professional approach. Maybe iKnow - InterSystems NLP engine can be used here too.
Anyway: we have the problem, we have the data, and possibly we could find a solution using InterSystems IRIS.
We are looking forward to see your solutions! Great! I was working on a webcrawler to take the posts... now we have the data =) Hi! Exploring the tables, the post table has this Column HasCorrectAnswer. Do you have the replies of each post too? Would be useful to explore these data and compliment my classificators.
Article
Sergey Mikhailenko · Oct 20, 2020
In this article, we'll talk about an application that I use every day when monitoring applications and integration solutions on the InterSystems IRIS platform and finding errors when they occur.
While looking for a solution for logging object changes in InterSystems IRIS, Ensemble, and Caché DBMS, I came across a great article about [logging with macros](https://community.intersystems.com/post/logging-using-macros-intersystems-cach%C3%A9). Inspired by the idea, I forked the project the paper had described and adapted it to some specific needs. The resulting solution is implemented as a panel subclass, %CSP.Util.Pane, which has the main window for commands, the Run button, and enabled command configuration.
This application enables viewing and editing global arrays, executing queries (including JDBC and ODBC), emailing search results as zipped XLS files, viewing and editing objects, as well as several simple graphs for system protocols.
The apptools-admin application is based on jQuery-UI, UiKit, chart.js, and jsgrid.js. You are welcome to have a look at the [source code](https://openexchange.intersystems.com/package/apptools-admin).
###Installation
All installation methods are described in detail in the repo. However, the simplest approach is to use the package manager command:
```
zpm "install apptools-admin"
[apptools-admin] Reload START
[apptools-admin] Reload SUCCESS
[apptools-admin] Module object refreshed.
[apptools-admin] Validate START
[apptools-admin] Validate SUCCESS
[apptools-admin] Compile START
[apptools-admin] Compile SUCCESS
[apptools-admin] Activate START
[apptools-admin] Configure START
http://hp-msw:52773/apptools/apptools.core.LogInfo.cls
http://hp-msw:52773/apptools/apptools.Tabs.PanelUikitPermissMatrx.cls?autoload=Matrix
[apptools-admin] Configure SUCCESS
[apptools-admin] Activate SUCCESS
```
The first suggested link must be opened in the address field of the browser. And in the loaded panel enter `?` and press the "Execute" button. The application then displays command examples.

###Commands
In the panel, you can run utilities, view and edit globals, and execute queries. Each launch is saved in history in the context of the namespace, so it can be found and repeated. In this context, the word "launch" means starting the execution of commands, and commands will mean everything that we enter in the panel. This screenshot shows an example of a global array `^%apptools.History` view command

As you know, automatic error detection and notifications can be handled by popular solutions like Prometheus. But often the severity of errors can be assessed visually.
Very often I need to quickly get information about bugs in production in all namespaces.
For this, I implemented a utility:
`##class(apptools.core.Production).FindAndDrawAllErr`
This starts a daily search request for errors for each namespaces that contains working products, and allows you to view these errors with a quick transition to visual tracing. You can run this utility like any others in the apptools panel with the `xec` prefix.

All useful commands can be memorized in the global extensions, in the context of the scope, to be found and repeated at any time.

###Globals
A large part of the apptools-admin application is dedicated to working with globals. Globals can be viewed in reverse order, as well as by applying a filter on both the link and the data. The displayed notes can be edited or deleted.

You can enter the `*` wildcard after the global name to get a list of globals with additional characteristics.
A second `*` will add a new field, Allocated MB.
A third one will add the Used MB field. This syntax resolves to a Union of the two reports, and the asterisks divide the report that is typically rather long into manageable sections.

When you get a report as a list of globals (in the screenshot above), you can follow the active links to view the global itself. You can also view and edit the global in the standard way from the management portal, by clicking `R` or `W` in the `Permission` field.
Quite often, writing to the global is used to log the states of variables and objects when debugging a project. I use special macros for this:
`set $$$AppL("MSW","anyText")=$$$AppObJs(%request)`
In this example, `$$$AppL` forms a link to a glob with the `^log` prefix, and the date and time in the index value.
`$$$AppObJs` is the object serialization macro.

You can view the protocol global in the panel, and the object can be displayed in the window fully formatted.
###Query
The function that sees almost as much use as globals is query. You run this function by entering a statement as a command.
For example, you can perform an SQL statement.

You can also save the result in the global `^mtempSQLGN`.

Subsequently, the saved result in the global can be displayed in the panel.

###Converting Reports to Excel Format
One of the things that was missing in the standard management portal was the ability to execute queries configured in the database JDBC or ODBC sources, output the results in XLS format, and then archive and send the file via email.
To achieve this in the application, you simply select the Upload to Excel file checkbox before executing the command.
This feature saves a lot of time in my daily routine, and allows me to successfully incorporate ready-made modules into new applications and integrated solutions.

To enable this functionality, you first need to configure the path for creating files on the server, user credentials, as well as the mail server. For that, in turn, you need to edit the nodes of the global program settings, `^%apptools.Setting`.

###Saving Reports Globally
Quite often, you need to save the results of a report execution to the global. For this, you can use these procedures:
| | functions |
|------------------------------|---------------------------------------------------------------------|
|For JDBC: |##class(apptools.core.sys).SqlToDSN |
|For ODBC: |##class(apptools.core.sys).SaveGateway |
|For SQL: |##class(apptools.core.sys).SaveSQL |
|For Query: |##class(apptools.core.sys).SaveQuery |
For example, using the `##class(apptools.core.sys).SaveQuery` function, saves the result of the query `%SYSTEM.License:Counts` to the global `^mtempGN`.

You can then display in the panel what you’ve saved with the following command:
`result ^mtempGN("%SYSTEM.License:Counts", 0)`
https://lh5.googleusercontent.com/KCIekwZw3guq79GWxVdHYdAbWQc4u97-dr-hWT26lYE2oEzUTSkwCE4ki1zvNqRFBg6dKQshSqcy3YSgUbjFKgX3v7Ecpa5Bm_NEQuZhP8Fn8p1gzrmAdTR-Cg9jBeVcNWGukW3a
###Enhanced Functionality Modules
What else simplified and automated my work? Changes that enabled me to execute custom modules when forming a query string. I can embed new functionality into the report on the fly — like active links for additional operations on the data. Let’s see some examples.
We display the query result in the browser using the function:
`##class(apptools.core.LogInfoPane).DrawSQL`

Let's add the word marking function `##class(apptools.core.LogInfo)`.MarkRed to parameter 5.

In the same way, you can supplement the output with additional features, for example, active links or tooltips.
The globals editor in this solution is implemented according to the same principle.
Here's a list of functions for outputting globals and queries in tabular form:
| | functions |
|---------------------------|----------------------------------------------------------------------------------------------------------------------------------------|
|For globals: |##class(apptools.core.LogInfoPane).DrawArray("^mtempSQLGN") |
|For SQL: |##class(apptools.core.LogInfoPane).DrawSQL("select * From %SYS.ProcessQuery") |
|For Query: |##class(apptools.core.LogInfoPane).DrawSQL("query %SYSTEM.License:Counts") |
|For global result: |##class(apptools.core.LogInfoPane).DrawSQL("result ^mtempSQLGN") |
Working with the apptools.core.Parameter Class
This link will open the CSP application in a browser in the context of an instance on which apptools-admin is installed:
`http://localhost:52773/apptools/apptools.Form.Exp.cls?NSP=APP&SelClass=apptools.core.Parameter`
Or select the active link in the panel.

The CSP application will be loaded for editing instances of stored classes, in this example:
`apptools.core.Parameter.`


###Creating a apptools.core.Parameter via the Table Navigator
If you open this link in a browser in the context of the instance on which apptools-admin is installed:
`http://localhost:52773/apptools/apptools.Form.Exp.cls?panel=AccordionExp&NSP=APP`
Or select the active link in the panel.

The CSP application will be loaded for navigating the stored classes with the ability to edit them.

###An example of a simple CSP application
If you open this link in a browser in the context of the instance on which apptools-admin is installed:
`http://localhost:52773/apptools/apptools.Tabs.PanelSample.cls`
Or select the active link in the panel.

This example also shows the ability to edit class instances `apptools.core.Parameter.`

###Graphs
To visualize database growth, the application offers a page that displays a graph of the monthly measured database size. This graph is derived from the IRIS file.log (cconsole.log for Caché) on records "Expand" retrospectively from the current day.
The program traverses the protocol, finds the database extension records and subtracts the incremental megabytes from the current database size. It turns out a graph of the growth of databases.
For example, the screenshot below shows a graph of events in InterSystems IRIS formed by the protocol file.

Another example below: a schedule of events in the system based on the system protocol file.log (cconsole.log).

###Summary
The application we’ve discussed in this article was designed to help me perform my daily tasks. It includes a set of modules which you can use as building blocks for a custom administrator tool. I would be very glad if you found it useful in your work. You are welcome to add your wishes and suggestions as tasks to the project [repo](https://github.com/SergeyMi37/apptools-admin).
Announcement
Anastasia Dyubaylo · May 4, 2020
Hi Developers!
The second InterSystems Online Programming Contest is over. Thank you all for participating in our IRIS Competition!
As a result - 7 great apps! And now it's time to announce the winners!
A storm of applause goes to these developers and their applications:
🏆 Experts Nomination - winners were determined by a specially selected jury:
🥇 1st place and $2,000 go to the iris-history-monitor project by @Henrique
🥈 2nd place and $1,000 go to the Production Manager project by @Nikolay.Soloviev
🥉 3rd place and $500 go to the JSON-Filter project by @Lorenzo.Scalese
🏆 Community Nomination - an application that received the most votes in total:
🥇 1st place and $1,000 go to the iris-history-monitor project by @Henrique
🥈 2nd place and $500 go to the simple-spellchecker project by @henry
Congratulations to all the participants!
Thank you for your attention to the contest and the efforts you pay in this exciting coding competition!
And what's next?
A whole series of programming contests awaits InterSystems Developers! Join the next IRIS Contest already in May!
➡️ More details in this post. Hi!Congrats for your victory @Henrique and all nominate @Nikolay.Soloviev, @henry!
Thanks to the community team for their advice and @Evgeny.Shvarov for his help and availability.
Thank you for your votes! Hi,
Thanks @Lorenzo.Scalese !
Congrats to all participants and special thanks for this community for the incredible support Thanks @Lorenzo.Scalese and congrats for the JSON-filter and the deserved nomination Congrats to all participants and the winners: @Henrique, @Nikolay.Soloviev and @Lorenzo.Scalese For such incredible appsThanks to all community Congratulations @Henrique for your great achievement! Congrats to all other winners and participants for their interesting and useful contributions! Thanks, @Francisco.Ramalho ! I'm thrilled to be remembered by you. You are an inspiration for me and for those who want to bring innovation! Hey Community,
You should know all the contest participants and their cool apps! Please welcome:
🔥 @Oliver.Wilms and his REST for Tasks on my Status Report.
🔥 @Sergey Mikhailenko and his project isc-apptools-admin.
🔥 @alex kosinets and his EXCEL as a REST application.
🔥 @Henrique Gonçalves Dias and his project iris-history-monitor.
🔥 @Henry Pereira and his simple-spellchecker.
🔥 @Lorenzo Scalese and his JSON-Filter.
🔥 @Nikolay Soloviev and his project Production Manager.
Thank you all for your great contribution to the InterSystems' world of developers! Hi guys,
We're pleased to invite you to the Online Meetup with the Winners of the 2nd IRIS Programming Contest on Friday, May 8 at 11:00 EDT!
What awaits you at this virtual Meetup? Please find all the details in this post.
Join us! 😉