#InterSystems IRIS

19 Followers · 5.7K Posts

InterSystems IRIS is a Complete Data Platform
InterSystems IRIS gives you everything you need to capture, share, understand, and act upon your organization’s most valuable asset – your data.
As a complete platform, InterSystems IRIS eliminates the need to integrate multiple development technologies. Applications require less code, fewer system resources, and less maintenance.

Discussion Raj Singh · Jan 6, 2020

Happy new year! I’m Raj Singh, InterSystems’ product manager for Developer Experience and  I’d love your feedback on how you use IDEs today and your thoughts for the future.

We understand you depend on a solid, intuitive and flexible IDE from InterSystems - whether you are an ObjectScript expert or new to it; whether ObjectScript is at the core of your applications, or you develop more in Java, Python, C# or Node.js.

21
0 787
Discussion Gabriel Ing · Mar 4

Anyone up for a round of golf?

Are you fed up of making a machine write code for you? Do you miss thinking through problems yourself? Then you are in luck, this round, I propose adding the rule of no AI use. obviously its a game of honor with no prize, so I shan't be enforcing this, but you'll know... 

Challenge:

Create a function which takes a string as a parameter, and returns the length of thelongest sequence of alternating consonants and vowels. The sequence is broken by having two vowels or two consonants in a row.

10
1 267
Discussion Sergey Mikhailenko · Feb 21, 2021

Hi developers. I often miss the ZPM program on a clean system. Nothing complicated? Take and install. And in one line? Especially in a docker container. There is a solution. I'm very happy with it;) Maybe the line can be shortened?

set $namespace="%SYS", name="DefaultSSL" do:'##class(Security.SSLConfigs).Exists(name) ##class(Security.SSLConfigs).Create(name) set url="https://pm.community.intersystems.com/packages/zpm/latest/installer" Do ##class(%Net.URLParser).Parse(url,.comp) set ht = ##class(%Net.HttpRequest).%New(), ht.Server = comp("host"), ht.Port = 443, ht.Https=1, ht.SSLConfiguration=name, st=ht.Get(comp("path")) quit:'st $System.Status.GetErrorText(st) set xml=##class(%File).TempFilename("xml"), tFile = ##class(%Stream.FileBinary).%New(), tFile.Filename = xml do tFile.CopyFromAndSave(ht.HttpResponse.Data) do ht.%Close(), $system.OBJ.Load(xml,"ck") do ##class(%File).Delete(xml)
12
5 1534
Discussion Dmitry Maslennikov · Jul 10, 2022

I would say it is a post of pain after years of using InterrSystems IRIS Docker images in many projects.

And I hope InterSystems will hear me and do something with it.

We have a lot of issues with Docker images, but I see no progress in solving them.

  • containers.intersystems.com - any new releases substitute previous versions, makes build useless
    • ARM64 images have separate names, and it makes a pain to use them
  • flags in iris-main, appears and disappears from version to version, which may fail the start the container
  • healthcheck does not work as expected
3
0 848
Discussion Eduard Lebedyuk · Aug 16, 2021

A quine is a computer program which takes no input and produces a copy of its own source code as its only output.

Wikipedia.

How about a fun challenge?

The task is to write a quine in InterSystems ObjectScript. It can be a class, or a method, or a routine, or just a line to be executed in a terminal. You decide!

Here's some resources you might consider useful:

Hard mode: do not use source code access functions.

Here's my (extremely uninspired, I know) attempt:

Class User.Quine
{

/// do ##class(User.Quine).Test()
ClassMethod Test()
{
    set sc = ##class(%Compiler.UDL.TextServices).GetTextAsString($namespace, $classname(), .str)
    write str
}

}

It produces this output:

How many different ways of producing a quine are there in ObjectScript?

15
0 714
Discussion Andre Larsen Barbosa · Nov 10, 2020

I have already asked a question about migrating an Oracle database to Caché, and I was promptly answered. Now, I have one more question, however it is more conceptual. In general, any tool defends its benefits, and looking at Caché's, among many, there is a lot of talk about speed. The question is, if I already have a database, and at the moment, its performance is not a problem, I would like to know what else could influence the change of this database? Remembering that it is functional and without any apparent problem.

2
1 319
Discussion Enrico Parisi · Jan 30, 2023

The new $system.external interface (aka "InterSystems External Servers") is used to call/integrate with external language code/libraries, it replace the old gateways (for example Java gateway) that required the import of proxy objects.

Note that the documentation for the old gateways has been removed from IRIS, so only the new $system.external interface is somewhat (i.e. insufficiently) documented.

Regarding the migration from old gateway to new  $system.external interface the documentation says:

External servers use an enhanced and simplified form of the older Dynamic Object Gateway technology.

14
2 1081
Discussion Harshitha · May 30, 2025

Hey everyone,

I'm diving deeper into Caché ObjectScript and would love to open a discussion around the most useful tips, tricks, and best practices you’ve learned or discovered while working with it.

Whether you're an experienced developer or just getting started, ObjectScript has its own set of quirks and powerful features—some well-documented, others hidden gems. I’m looking to compile a helpful set of ideas from the community.

3
4 262
Discussion Dmitry Maslennikov · Dec 20, 2022

So, the next year will bring us a new way of installing IRIS. Always keep in mind that you have to bring your own web server. No matter how many instances of IRIS you have on your local machine. Or if you work in Docker, always keep in mind a bit more complicated configuration.

And I now want to understand the costs of this decision for end-developers like most of here.

Let's have a look, at what we got out of the box in Web Applications, obviously do not forget about System Management Portal.

20
2 950
Discussion Dmitry Maslennikov · Sep 1, 2023

In today's landscape, enterprises have grown substantially in scale, amassing vast amounts of data. This data is collected from a plethora of sources including different applications, databases, and other channels. Given the diversity and volume of this data, it's only logical for these enterprises to seek a deeper understanding of what their data entails. Some of the data can be stored in IRIS, and it can be reasonable to be able to add this data to a data lake too.

The Internet now offers many different tools for such tasks, that do not yet support IRIS, but it's achievable.

7
0 709
Discussion Eduard Lebedyuk · Mar 4, 2022

New month, new code golf!

You will receive a string with a label code with numbers and letters. Our challenge is to check if this code begins with 1, 2, or 3 and ends with A, B, C, S, or R. It should return true(1) if so or return false(0) otherwise. As usual shortest solution wins.

##Input "198739A79D9R"

##Output 1

##Note

Rules

  1. The signature of the contest entry MUST be:
Class codeGolf.LabelCode
{

ClassMethod Validate(s As %String) As %Boolean
{
}

}
4
1 460
Discussion Olga Zavrazhnova · Oct 31, 2022

Hi Community,
Watch the recording of the Second Community Roundtable: "What is the best source control system for development with InterSystems IRIS?" 

Some great discussions have been started during this roundtable. We invite you to continue these discussions. in the comments to this post.

Tell us, which source control you use and why – in the comments to this post. 

0
0 344
Discussion Evgeny Shvarov · Sep 21, 2020

Hi Developers!

Recently we discussed the naming convention on packages we deploy and even made some choices.

Here I want to have a conversation on the naming convention for unit tests.

Of course, we wish every good library has unit tests. Here is the documentation and some good articles(one, two, three) regarding it on the Developer Community.

Let's decide on the naming of UnitTests packages?

The suggestion is that unit test classes will all start with the UnitTest package name.

E.g. if your library's class name is:

johndoe.lib.class

The related unit test class will be:

UnitTest.johndoe.lib.class

What about folders?

The suggestion is that unit test classes will live separately from source classes, e.g. in /tests directory.

Here is the example of a repository with unit tests that are named and placed according to the proposal.

What do you think?

6
0 473
Discussion Dan Pasco · Apr 23, 2021

Now that IRIS 2021.1 is available as a preview version, I would like to demonstrate a "new" feature. The Java Gateway has been around for a while now but in 2021.1 it has new skills. External Language Servers are available for Java, DotNet, and Python. Here is a quick - very quick - demo of using the External Java Server. Please don't focus solely on what this demo is doing but rather on what is happening in this demo. First, I acquire a gateway connection oref. This gateway connection is connected to the External Java Server - one of the External Language Servers.

set java = $system.external.getJavaGateway()
12
0 786
Discussion Dmitry Maslennikov · Nov 14, 2025

Over the past several years, the InterSystems Developer Community has accumulated more than 1,000 open-source projects. Many of them serve as examples and learning materials — but a significant number have become useful tools, libraries, integrations, and real-world components used in production.

Some of these projects are mine, and like many community developers, I’ve seen the same recurring problem:

  • It’s easy to create an open-source project.
  • It’s hard to maintain, support, and develop it sustainably — especially without funding.

Writing code is one thing.
Supporting it for years, keeping up with new IRIS versions, building CI pipelines, writing documentation, fixing issues, reviewing PRs — all of this demands both time and motivation, and the biggest motivator is often financial support.

This is not a new challenge.
The global open-source world has faced this for decades and has developed various models to support OSS ecosystems.

I believe it’s time for the InterSystems community to start a discussion about adopting a similar model.

7
0 238
Discussion Raef Youssef · Mar 14

Hi community,

I've been working on a side project that I'd love to get some eyes on: a ground-up rebuild of the classic IRIS Production Monitor using a modern web stack. The existing ZEN/CSP-based portal does the job, but I wanted to explore what a contemporary, real-time version of it could look like.


What it is

A standalone Angular web application that connects to any Interoperability-enabled IRIS namespace and gives you a live view of your production — services, processes, operations, queues, event log, and message traffic — all in one screen.


3
0 163
Discussion Eduard Lebedyuk · Jan 26, 2024

Multi-tap or multi-press is the name given to the historic technique of writing SMS on the first mobile phones with a keyboard of 10-12 numeric keys. For example, to type LOL you need to press 5 three times, 6 three times and three times again. Your task is to write a function that takes a string as input and returns the repeated digits associated with each character according to the multi-tap system. Should consider letters from A to Z, doesn't distinguish between upper/lowercase characters. Numbers are allowed, and any punctuation should be ignored.

multitap system

18
1 786
Discussion Yuri Marx · Dec 31, 2021

For me the best moments were:

1 - Global Masters WON the 2021 Influitive BAMMIE Award for Most Passionate Community

2 - Tech Article contests

3 - InterSystems Programming Contests

4 - 10,000+ DC members

5 - Partner directory and business services

6 - 500+ applications on OEX

7 - Open Virtual Summits

8 - Prizes from GM points

9  - Free online learning courses

10 - Discord channels

11 - Innovations from IRIS Data Platform

12 - Multilanguage communities, including portuguese, spanish and chinese community

13 - Advent of Code

4
0 228
Discussion Eduard Lebedyuk · Dec 16, 2025

Time for another round of code golf!

Develop a function that performs a two-step encryption process on a given string:

  • First Step: Reverse Cipher

    • Reverse the entire input string.
    • Relocate the last character of the original string (now the first character of the reversed string) to the end.
  • Second Step: Alphabetic Index Binary Encoding

    • For each alphabetic character, determine its zero-based index in the lowercase alphabet (a-z).
    • Replace odd-indexed characters with '1' and even-indexed characters with '0'.
    • Preserve non-alphabetic characters unchanged.

Example:

encrypt("Hello World!

17
0 337
Discussion Eduard Lebedyuk · Jul 28, 2023

Our previous code golf ended with an overwhelming win, so now it's time for another one. Parenthesis Hell is a Lisp-like esoteric programming language(esolang). As a Lisp-like language, the code consists only of nested matched pairs of opened and closed parenthesis. Your task is to write a method that receives a string of parenthesis and returns 1 if the order of the parenthesis is valid. For example, the string of parenthesis (())() is valid because it contains a matched pair of opened and closed parenthesis at each position. The string ()((()))) is not valid because it contains one unmatched parenthesis.

37
0 841
Discussion Dmitry Maslennikov · Sep 22, 2022

For quite some time InterSystems IRIS supports such thing as Merging CPF. So, with help of this it should be possible to define only desired changes in configuration. And get them applied even with vanilla Docker image. 

And I though it could be useful when used with Dockerfile. Use this way to configure IRIS during docker build instead of using Installer manifest.

8
0 656
Discussion Eduard Lebedyuk · Oct 20, 2023

Let's do a round of code golf! Last one was very popular!

The Chinese zodiac is a repeating cycle of 12 years, with each year being represented by an animal and an element that changes every 2 years.
The animals are: Rat, Ox, Tiger, Rabbit, Dragon, Snake, Horse, Goat, Monkey, Rooster, Dog and Pig.
The elements are: Wood, Fire, Earth, Metal and Water.
Your task is to write a function that receives a year, and returns the element and the animal that year represent.
Let's use the year 1924 as start point, in the Chinese zodiac the element was Wood and the animal was Rat.

7
0 719
Discussion Eduard Lebedyuk · Nov 17, 2021

We need to send some coordinates to a spaceship through a laser beam. To do that we have to encode it, and beam it out into space. Your mission is to implement the encoder with a compression standard. As usual shortest solution wins.

Task

You will receive a string of comma-separated integers and you will return a new string of comma-separated integers and sequence descriptors.

8
2 731
Discussion Enrico Parisi · Mar 20, 2025

Once upon a time in Ensemble Management Portal the pool size of each component (Business Host) within the production was displayed in the Production Configuration page.

This information was very useful, especially when a production have tens or hundreds of components.

Now days the pool size is no longer displayed in the Production Configuration page and to get the pool size you need to click in each and every host in your production.
What if you have hundreds of business hosts and you need to check the pool size of each? It's a nightmare!

0
0 151
Discussion Laura Blázquez García · Aug 14, 2025

I would like to know which are the best practices of using Streams in Interoperability messages.

I have always use %Stream.GlobalCharacter properties to hold a JSON, or a base64 document, when creating messages. This is fine and I can see the content in Visual Trace without doing anything, so I can check what is happening and resolve issues if I have, or reprocess messages if something went wrong, because I have the content.

But I think this is not the best way of using Streams.

8
0 275