Article John Murray · Dec 15, 2025 1m read

It was encouraging to see more people building VS Code extensions for the recent contest. However I noticed that of of the three extensions requiring credentials with which to make their connections only mine, gj :: dataLoader, leverages the long-established and officially-supported InterSystems Server Manager extension to obtain the connection definitions and to handle credentials securely.

0
1 103
Article John Murray · Dec 2, 2025 1m read

I'm pleased to announce the publication of gj :: dataLoader, a new VS Code extension that simplifies the task of loading data from local CSV files into SQL tables on your InterSystems IRIS servers.

Here's an introductory video:

gj :: dataLoader is now available on Marketplace for direct installation into VS Code. It is my entry in the "Bringing Ideas to Reality" Contest 2025 and implements this idea - https://ideas.intersystems.com/ideas/DPI-I-667

Feedback is welcome.

1
0 123
Article John Murray · Oct 9, 2025 3m read

UPDATE: since version 0.0.4 of the extension was published on 2025-11-23 it is now possible to use gj :: configExplorer directly in VS Code on Windows.

In my previous article introducing gj :: configExplorer I flagged up how an apparent bug in the Windows elements of the Native API for Node.js means it's not currently available to run in VS Code on a Windows desktop. In a comment on that article I offered a workaround, but this requires a Docker-equipped Linux host you can SSH to.

If you don't have a suitable target it's now possible to leverage your local Windows Docker Desktop.

1
0 113
Article John Murray · Oct 6, 2025 1m read

gj :: configExplorer is a new VS Code extension integrating with Server Manager and leveraging Structurizr to produce configuration diagrams of your servers.

Here's a short introductory video.

By using the InterSystems IRIS Native API for Node.js it avoids the need for any support code to be installed on the servers. This technology choice also qualifies it for entry into the current Developer Community contest.

The initial release focuses on two aspects of server configuration:

  • Namespaces and databases
  • ECP connectivity

Suggestions for what to add next are welcome, as is general feedback.

7
0 229
Article John Murray · Jul 28, 2025 1m read

The new version of InterSystems Testing Manager which I released last week brings @Timothy Leavitt's cool 
Test Coverage Tool to VS Code, and is my entry for the 2025 Developer Tools contest.

Here's a teaser screenshot showing how the unit tests of the IPM project don't yet cover a feature that apparently allows an IPM repository to override its sort order.

1
0 161
Article John Murray · Dec 18, 2024 1m read

A benefit of using Doxygenerate is that Doxygen does more than just HTML output. Tweak the Doxyfile that tells Doxygen what to do and you can easily create a PDF. Our example MARINA application yielded a 524-page PDF. Here's what page 94 looks like:

You can browse the whole file here.

In the screenshot above, notice how we only get details of the superclass that is part of the app (AuditHistory). The primary superclass, %Library.SerialObject, is shown faded and with no details of what BankDetails inherits from it.

1
1 364
Article John Murray · Aug 9, 2024 1m read

A nice feature that we recently added to version 2.12.6 of the VS Code ObjectScript extension is controlled by this new setting:

objectscript.serverSourceControl.respectEditableStatus

When set true in JSON, or checked in the Settings Editor, a server-side file will be read-only if the source control class for the namespace reports that it is not editable.

This option may be of particular interest to users of our Deltanji source control product, particularly when used in combination with the Deltanji extension for VS Code

0
1 155
Article John Murray · Aug 9, 2024 2m read

I'm posting this for the benefit of WebTerminal users who have upgraded to the recently-released IRIS 2024.2 -- (Build 247U) Tue Jul 16 2024 09:52:30 EDT -- or are considering doing so.

That version of 2024.2 contains a change (DP-432503) which requires that the user under which the Web Gateway initially connects to IRIS (usually CSPSystem) must have READ permission on the database hosting the dispatch class of the REST web application.

For cases where that is not true an error is raised, but this returns an HTTP 404 status to the caller instead of the expected HTTP 401.

2
1 573
Article John Murray · Jul 24, 2024 2m read

I encountered this quirk when investigating an unrelated issue affecting how Studio projects are handled in VS Code.

When you add the top level of the webapp to a %Studio.Project this inserts a %Studio.ProjectItem with a .DIR suffix. For example, if Studio or VS Code is connected to the USER namespace and you add the /csp/user webapp to a project the new ProjectItem name is "csp/user.DIR".

When you export this project to XML from the project's context menu in Studio, or by calling the %Studio.Project.

2
0 247
Article John Murray · Oct 13, 2023 2m read

When you use VS Code to edit source code, the settings model allows you to specify folder-specific values for some settings by using a settings.json file located in a .vscode sub-folder of the workspace root folder. A value set here takes precedence over one from your personal settings when you are working within that workspace root folder.

If you use an isfs-type workspace to operate directly in a namespace on a server, you first need to configure that server to support a special .vscode folder for each of its namespaces, present and future.

1
1 546
Article John Murray · Sep 21, 2023 1m read

Earlier this year I announced availability of a VS Code extension for coding in ObjectScript, Embedded Python or SQL using the notebook paradigm popularized by Jupyter. Today I published a maintenance release to correct a "getting started" problem.

Here's a video of the installation steps from the extension's README:

(video superseded by an update in a later comment)

Why not try it for yourself?

4
0 513
Article John Murray · Sep 7, 2023 1m read

This scenario showed up yesterday at a client site when I was delivering bespoke consultation on migration from Studio to VS Code.

The site's servers had been configured to use delegated authentication, but the "Delegated" checkbox hadn't been set against the /api/atelier web application, which is what the members of the InterSystems ObjectScript Extension Pack use to make their connections.

As soon as the we application got its checkbox set and the Server Manager refresh button was clicked, namespaces could be enumerated on the server.

1
0 581
Article John Murray · Feb 6, 2023 2m read

Strap on this jetpack to boost your developer experience in Visual Studio Code.

DX Jetpack for VS Code was my entry for the 2023 Developer Tools Contest, where it achieved 2nd place in the Experts vote and 5th place in the Community vote. It is an extension pack for VS Code, bundling three entirely new extensions created by me, plus a couple that we at George James Software published previously.

The new extensions are:

If you're reluctant to install DX Jetpack right away, why not try it using a dev container? In the dev container is an InterSystems IRIS Community environment augmented with InterSystems Package Manager (IPM) and the isc-codetidy package.

2
1 668
Article John Murray · Apr 1, 2022 2m read

I have recently started making more use of Docker Desktop on my Windows 11 workstation, particularly in conjunction with VS Code's Remote - Containers extension and the iris-python-template repo from @Guillaume Rongier

Sometimes the container would start smoothly, but other times it would fail and report being unable to use a port.

Eventually I tracked the problem down. The Windows NAT Driver service apparently uses an OS facility to reserve a large range of ports.

0
3 2217
Article John Murray · Dec 2, 2021 1m read

Server Manager 3.0 Preview, my entry for the InterSystems Security Contest, is now making use of a cool new feature of Visual Studio Code version 1.63 - support for pre-release extensions.

As I write this 1.63 hasn't yet shipped (it's expected out next Thursday), but you can already get your hands on it by installing the VS Code Insiders build. Once you've done that and launched it, use the Extension view to search for 'servermanager' and you'll see this:

In the screenshot above I was using a 1.63.0-insider build, but 1.63 has now shipped.

1
0 532
Article John Murray · Nov 29, 2021 3m read

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.

0
1 733
Article John Murray · Jan 29, 2021 1m read

On a default VS Code installation, when you create a new file its language mode is 'Plain Text'

You have to click there to set another mode.

Luckily, there's a setting you can tweak to change this. It is called files.defaultLanguage

Set it to the ID of the language you want. Those IDs display in parentheses after each entry on the language mode selector.

Even better, you can set it to use the same language as the file you're currently focused on:

"files.defaultLanguage": "${activeEditorLanguage}"
1
1 2822
Article John Murray · Oct 27, 2020 2m read

Now that 1.0 has shipped and is featuring in various sessions at Virtual Summit 2020 it seems like a good time to offer some guidance on how to report problems.

InterSystems ObjectScript for VS Code consists of three collaborating VS Code extensions. For ease of installation and management there's a fourth entity, the InterSystems ObjectScript Extension Pack. It's a great way to get started with minimum clicks, and handy to have even if you have already installed the other extensions.

This modular architecture also means there are three different GitHub repositories where issues can be created.

0
0 718
Article John Murray · Oct 25, 2019 1m read

When dealing with a support issue of one of our Deltanji source control sites this week I learned that if you're using InterSystems versions earlier than 2018.1 on Unix-type platforms it's possible that a class you export in UDL format will subsequently fail to import. So I'm posting this information here in case it helps other folk.

If you're doing Zen development your classes are likely to contain ClientMethod definitions scripted in Javascript. Prior to 2018.1 the UDL import processor used by methods of %Compiler.UDL.

0
0 336
Article John Murray · Jan 17, 2018 1m read

On the homepage that we get when we go to https://community.intersystems.com/ there are three views, controlled by a set of buttons in the upper right:

Above is with the default view (the "house", i.e. the "home").

I think the text "Top posting" would be better expressed as "Top posts" (plural), or maybe even just "Posts" (because what does "Top" mean when I'm viewing, say, "most active" or "most viewed"?).

Also, when I pick the tag summary view ("tags" icon to the right of the "home" icon), the page doesn't offer me a way of switching to one of the other views ("home" or "compact"):

1
0 279
Article John Murray · Aug 17, 2017 1m read

Here's one way to determine if a class is mapped (i.e. it is in a package whose definitions come from a database other than the default code database for the current namespace):

SAMPLES>w ##class(%Library.RoutineMgr).IsMapped("Cinema.Film.cls")
0
SAMPLES>w ##class(%Library.RoutineMgr).IsMapped("%iKnow.Objects.Source.cls")
1
SAMPLES>

If you pass a by-ref second argument to IsMapped you can also discover what database the class definition is stored in:

SAMPLES>w ##class(%Library.RoutineMgr).IsMapped("%iKnow.Objects.Source.cls",.db)
1
SAMPLES>w db
^^c:\intersystems\ens171\mgr\cachelib\
SAMPLES>
0
0 745
Article John Murray · Aug 15, 2017 1m read

DC readers running Caché etc on Windows, configuring the Telnet service to use SSL/TLS, and using the Caché Telnet client (CTerm.exe) to make the Telnet connections may like to know that there's a fault in 2017.1 and 2017.1.1 which prevents CTerm.exe from establishing the secure connection.

Workaround is to use a pre-2017.1 kit to install on your client machines (e.g. 2016.2.2), or to fetch the bin\cconnect.dll from an earlier version (I used 2016.2.2) and use it as a replacement for the 2017.1 / 2017.1.1 copy.

0
0 646
Article John Murray · Jun 29, 2017 1m read

When posts are displayed on the DC homepage they only show the first part of each post. This part is known as the teaser, or the trimmed version. The DC software does its best, but without being given any hint by you it can sometimes produce teasers that are of limited value, e.g. "Hi!"

When composing your post, the Preview button lets you see what the teaser will look like.

0
0 509
Article John Murray · Jun 23, 2017 3m read

When working at the Caché command prompt I sometimes want to run an operating system command on the server host. By prefixing my command line with ! or $ I can do this with ease. The following examples are from 2017.1 on Windows, but the feature is available on all versions and platforms:

USER>!dir
$dir
 

If I need to issue more than one command I can almost get myself an interactive shell:
 
USER>!
The current date is: 23/06/2017

I wrote "almost" because in the example above the 'date' command prompted me to enter a new date but didn't wait for my keystrokes.

5
1 1535