BlueToque Software has been working on TrueNorth Geospatial, our light geographic information system, for a few years and we began getting feedback from our users that even though TrueNorth is easy to use (much easier than an enterprise GIS), they needed something even simpler.
One of our users in particular needed a tablet based application that ran on Windows 8 and Windows 10 that they could display their current position from a GPS, record waypoints / tracks, and load and mark up GeoPDF (a georeferenced PDF document – basically a PDF that has geographic coordinates embedded in it).
Now TrueNorth is designed around the concept of inversion of control (IoC) – a software architectural pattern where the main application devolves control to modules that are loaded as needed to change the functionality of the program as a whole. Another way to explain this with specific references to TrueNorth is that the main application holds the concept of a map, and a layer. The layers are implemented as plugin modules. A TrueNorth map contains references to the layer plugins and the configuration data for each layer. All TrueNorth does is handle the user interface interactions to select the viewport, or the area of the world to be displayed. TrueNorth transfers drawing control to each layer to draw what it is responsible for.
In this way TrueNorth can add new layers at any point to create new functionality, which is exactly how we handle things like our asset tracking application which can track the remote positions of InReach, SPOT or GPS enabled radio systems. The Tracking Layer when added to the map just draws the locations of the items it’s tracking.
The modularity extends further however; TrueNorth inverts control for user interface elements, data visualization, data transformation, data import and export, printing, and many other functions.
Building a new Product
The title of this article is an exaggeration of course – the components of TrueNorth have been under development for five years, but the fact is that we took those components and built a new application from scratch in a single week – mostly because of the flexibility of IoC.
The goal of Borealis was to take the multi-window docking user interface in TrueNorth Geospatial and turn it into a single window, tablet friendly mobile application. In Microsoft Visual Studio the code for that single window and two auxiliary files is just under 2000 lines. The rest of the effort is an XML configuration file, some icons and some documentation.
From inception to the minimum viable set the development time was 8 hours. The remaining days was involved polishing, bug testing, and a re-branding effort.
The main part of the new application just reads the configuration file and loads the plugins. Because it’s a new user interface, most of the code is just deciding where to put buttons to activate the plugins. There was some code to handle the creation and destruction of dialogs – which in the other editions of TrueNorth are part of the docking user interface, but in Borealis these are non docking windows.
TrueNorth Borealis is now live on the TrueNorth web site. You can download the demo version and try it out – and let us know what you think in the support forums!
TrueNorth’s IoC design is one of its strongest features, but its also something that we hope most users never notice, except when they’re using a feature. The power of IoC and a well thought out architecture has many benefits for us the developers which we hope to pass on to our users.