What is Distributed Artificial Intelligence (DAI)?

Attempts to find a “bullet-proof” definition have not produced result: it seems like the term is slightly “ahead of time”. Still, we can analyze semantically the term itself – deriving that distributed artificial intelligence is the same AI (see our effort to suggest an “applied” definition) though partitioned across several computers that are not clustered together (neither data-wise, nor via applications, not by providing access to particular computers in principle). I.e., ideally, distributed artificial intelligence should be arranged in such a way that none of the computers participating in that “distribution” have direct access to data nor applications of another computer: the only alternative becomes transmission of data samples and executable scripts via “transparent” messaging. Any deviations from that ideal should lead to an advent of “partially distributed artificial intelligence” – an example being distributed data with a central application server. Or its inverse. One way or the other, we obtain as a result a set of “federated” models (i.e., either models trained each on their own data sources, or each trained by their own algorithms, or “both at once”).

2 0
1 444
· Aug 13, 2021 4m read
Building Analytics Solution with IRIS

Hi developers!

How to build an analytics solution with InterSystems IRIS?

To begin with, let's agree on the points of what is the analytics solution - and this could be a very wide topic. Let's limit the set of solutions to those you can present in the Analytics contest.

There are three kinds of analytics solutions that we will review here: monitoring, interactive analytics, and reporting.


The typical monitoring solution consists of an online dashboard with KPIs that are being actively updated.

The key use case is of monitoring is to visually observe the KPI of fresh data every moment to react in case of an emergency.

Interactive Analytics

This solution supposes a set of interactive dashboards with filters and drill-downs.

The key use case is to explore the data with filters and drill-downs making business decisions upon graph and table data visualization.


Reporting solution provides a set of static (usually) reports in a form of HTML or pdf documents that deliver the data in graph and text form in a predesigned form and could be sent via email.

The typical use case of a reporting system is to obtain reports on a given period that will illustrate the status of the product, process, service, sales, etc that is crucial for the business.

How InterSystems products could be used to build such solutions? Let's discuss this below!

3 0
1 284
· Nov 29, 2021 3m read
Previewing Server Manager 3.0 for VS Code

The InterSystems Server Manager extension for Visual Studio Code lets you define connections to your servers, list their namespaces and edit or view code there. You can also launch Portal for a server.

Server Manager 3.0 improves security by becoming a VS Code Authentication Provider. It is my entry for the November 2021 InterSystems Security Contest. Click here to visit the contest page where you may decide to vote for this entry. Please ignore the clickable "Contestant" label on this article header above, as it relates to a different contest for new DC articles. If you want to support me in that contest, simply "like" this post.

7 0
1 370


Most CloudFormation articles are Linux-based (no wonder), but there seems to be a demand for automation for Windows as well. Based on this original article by Anton, I implemented an example of deploying a mirror cluster to Windows servers using CloudFormation.I also added a simple walk through.
The complete source code can be found here.

Update: 2021 March 1 I added a way to connect to Windows shell by public key authentication via a bastion host as a one-liner.

0 0
0 412

The latest release of Serenji focuses on the debug experience. Not only can you now debug on the spot, no matter where you are or what you're doing, but we've also added some smaller features that will make debugging more straightforward. 

  • Run and Debug CodeLenses - clickable links above each class method, procedure, subroutine or extrinsic function.
  • Intuitive prompting for entrypoints and arguments - when debugging a class method, produce, subroutine or extrinsic function. 
  • Shaded read-only background - to clearly differentiate between documents which are editable and those that are read-only. 
  • Program output in debug console - output is shown in the debug console. 
  • Serenji commands on Server Manager's namespace trees - allowing you to launch Serenji through Server Manager. 

Find out more in our release notes here

1 0
1 199

DataGrip is a multi-engine database environment targeting the specific needs of professional SQL developers, DataGrip makes working with databases an enjoyable and productive experience.

To work with InterSystems IRIS from DataGrip you'll need to add InterSystems JDBC driver first (once per DataGrip) and after that add all your InterSystems IRIS connections.

Part 1: Add InterSystems IRIS JDBC Driver

1. Go To File → DataSources

1 0
0 497

Continuing the description of work on the use of the openhl python module in productive mode.

Since the version of iris with Embedded Python, does not yet have a final release, it is already necessary to use it in production now. We decided to back up the service for exporting requests to a xlsx file on a separate server, and save the query result in a global in a separate database.

8 0
1 234

Tiny web application that allows you to anonymize CSV files. Based on InterSystems IRIS®

Version: store/intersystems/iris-community:2020.


Sample CSV where Date of Birth and Sex will remain untouched, while the rest should be anonymized.


The application recognizes the header columns and allows the user to chose which ones to ignore.

2 0
0 230

Hi developers!

Often we need to deploy some data along with code pieces of the application.

And for InterSystems IRIS developers the question could sound: "How can I deploy the data I have in globals?"

InterSystems IRIS Globals Model QuickStart | InterSystems

Here I want to suggest to you one of the approaches - deploying global data using the ZPM package manager.

1 0
0 272
· Feb 8, 2021 2m read
Websocket Client Embedded Python

This is a demo to make use of a simple WebSocket Client with Embedded Python in IRIS.

How to Test it

  • Run an Iris Session in Docker
  • Select your WebSocket Echo Server
  • Enter the text you want to send or generate it
  • Send it and see the result
$ docker-compose exec iris iris session iris "##class(rccpy.WSockPy).Run()"

*** Welcome to WebSocket Embedded Python Demo ***

9 0
0 638

I work as an Integration Engineer for United States Department of Veterans Affairs (VA). I work on a Health Connect production which processes many RecordMap files. I do not fully understand RecordMaps and I wanted to develop an application for the Interoperability contest where I could learn more about working with RecordMaps. I browsed InterSystems documentation for inspiration on how to start. I was happy to find CSV Record Wizard.

0 0
0 287

Hello, developers!

I would like to share the history of the project - the ZAPM shell.

As soon as ZPM was implemented, I immediately began to think about how best to use it.

And immediately faced with the desire to move more quickly between namespaces, especially when there are more than 20 of them.
I had to leave the ZPM, move to the desired namespace and re-enter the shell.
I suggested an improvement - a new "namespace" command for easier navigation.
I didn’t wait - I did it myself. And so it went. If you need it, get ready to do it yourself.

5 0
0 164

Hey everyone!

I recently learnt something new while working with WRC on an issue, and I wanted to share with everyone on the off chance it could help someone else.


Files are being inexplicably written to a folder on your server and, due to the number of files in the folder and general system throughput, it is not possible to work through the files to track down the source.

4 0
0 266

The first installment of this article series discussed how to read a big chunk of data from the raw body of an HTTP POST method and save it to a database as a stream property of a class. The second installment discussed how to send files and their names wrapped in a JSON format.

Now let’s look closer at the idea of sending large files in parts to the server. There are several approaches we can use to do this. This article discusses using the Transfer-Encoding header to indicate chunked transfer. The HTTP/1.1 specification introduced the Transfer-Encoding header, and the RFC 7230 section 4.1 described it, but it’s absent from the HTTP/2 specification.

4 0
0 531

The ObjectScript language of InterSystems IRIS has a very powerful metadata engine called XData. This feature allows the creation of metadata definitions for your classes, to be used by the compiler or by programs that will extend the standard features of the language, based on the XData definitions of its scope.

2 0
0 306
· Dec 25, 2021 2m read

After >40 years of writing in-countable lines of code in M*/COS/ISOS (and a bunch of archaic languages)
I decided for myself to set a strong signal for the future. We have Embedded Python available
(still pre-release)! I just felt it as a sacrilege to ignore this excellent NEW opportunity and
stay with the old sermon that I had used for decades.

11 0
0 235

When you have more than ten thousand users in your database, it becomes time-consuming and inconvenient to assign group access rights through the standard IRIS interface. In this artilce I want to introduce you an application to automate this process.

I’ll show you how to assign and change the role lists for the users, selecting them by context, and I will also show you how to expand this application’s functionality. you know how to apply your work as an administrator and developer to the new features of the well-proven apptools software complex. With the addition of an adminLTE template, you can now quickly and easily create interface interactions for any entity and many functional modules.
The goal while developing this toolkit is to write as little JavaScript as possible as well as transfer and implement all the dynamics as much as possible in the ObjectScript.

4 0
0 322