GeoSpatial Server (GSS) is an industrial-strength application that provides service-based integration technology for Smallworld products. Part of what puts the, “strength,” in, “industrial-strength,” is the fact it is deployed using Docker containers managed and orchestrated by Kubernetes. However deployment can be a complicated affair, and in many cases we simply want to develop services without […]
Smallworld
Virtual VMDS in Smallworld GIS
Starting in version 4.3, Smallworld GIS images/sessions can use a virtual VMDS by passing the -vvmds flag. For example: d:\smallworld\core\bin\x86\runalias.exe -vvmds -a d:\smallworld\cambridge_db\config\gis_aliases cambridge_db_open This is useful when you want to be able to restart from a known state without having to use checkpoints. It’s also extremely helpful when doing work with Alternatives. If, for […]
Writing Better GeoSpatial Server Services for Smallworld GIS
Smallworld GeoSpatial Server (GSS) is an industrial-strength application that allows Smallworld GIS to communicate with other systems in an industry-standard, open manner. It comes equipped with a variety of services out-of-the-box, but it’s real strength is that it can be customized to fit an enterprise’s exact needs. Unfortunately most custom implementations are tightly coupled to […]
A JavaScript-like Prototypal Object in Smallworld GIS Magik
If you’re familiar with JavaScript objects, then much of what I’m going to write will be familiar to you. These objects are different from what we’re used to in Smallworld GIS Magik. Like many OO languages, Magik uses class-based (or classical) inheritance while JavaScript uses prototypal inheritance. The difference is that instead of defining the […]
Using Monads for Better Error Handling in Smallworld GIS Magik
In the Functional Programming (FP) realm monads are very useful. In fact you may have already used one without knowing it. If you’ve ever used jQuery, even under the hood, you’ve used a monad, but in this article I’m going to show you how to use one particular monad to handle errors in an efficient […]