( ← all projects )

Industrial software

Since 2021 we have rebuilt the software Høglund's engineers use to design marine automation. A custom language for describing components, an engine that renders the system in real time, and a visual tool for building the interfaces, running on both Windows and the web.

Client
Høglund AS
Duration
Ongoing (since 2021)

Domains

Marine automation Legacy modernization Renewing older, established systems without losing functionality that business-critical processes depend on. Language design (DSL) Creating a domain-specific language tailored to one task, so experts can express logic without programming. HMI Human-Machine Interface - the interface operators use to monitor and control technical systems. Real-time graphics Graphics computed and drawn in the moment, as in games and interactive visualizations.

Tooling

  • DSL
  • Expression language
  • Graphics programming
  • Real-time rendering
  • Native Windows
  • Web

Result

  • ( r1 ) One live view of the entire automation system, identical onboard and on shore, running natively on Windows and in the browser.
  • ( r2 ) Høglund's engineers, not just its developers, can build and change interfaces themselves, with live preview and fast iteration.
  • ( r3 ) OSDesigner rebuilt in production, so engineers assemble whole systems visually while the team keeps delivering.
  • ( r4 ) The rebuilt suite is now something Høglund shows off itself, presented together with us at Nor-Shipping.
( 01 - background )

Høglund has built marine automation since 1993, and their systems now run on hundreds of vessels around the world. The software their engineers used to design those systems had aged with dignity, but it had aged. It needed modernising, not replacing. Since 2021 we have worked as Høglund's technical partner, rebuilding the toolchain from the inside while their team kept delivering.

The domain is theirs, not ours

Høglund knows the vessels, the regulations, and the bottlenecks better than anyone. Our job was never to decide what the system should do. It was to give it a new technical foundation. We improved what worked, modernised what had aged, and looked for what newer technology could add, without losing the precision this industry runs on.

One system, many parties

Marine automation touches everything onboard, from the engines to navigation and safety, so the software has to be right the first time. It is also built by several parties at once: the shipyards assembling the vessels, the crews operating them, and the engineers who design, test, and install the systems. The tools we built had to serve all of them without slowing any of them down.

( 02 - inside the system )

Three pieces of software, built to work as one. A language for describing components and the logic that drives them, an engine that renders live system status, and a visual tool for assembling it all. We rebuilt each one in production, without ever taking the toolchain offline.

( rendering · native and web ) One picture of the system, at sea and on shore

Onboard, the crew has to read the whole automation system at a glance and trust what they are looking at. We built a high-performance application that renders the live system as a single status picture, drawn from one underlying model. That same model powers a native Windows build, where speed and direct hardware access matter, and a web build for anyone following the vessel from shore. Whichever one you open, you are looking at the same source of truth.

( the live automation system, rendered in real time from a single model )
( language design ) A language for describing components

Drawing a system once is straightforward. The hard part is who gets to build the next one, and how fast. We designed a domain-specific language for describing components, paired with an expression language for the logic that binds them. An engineer writes the markup and sees it render live, editing and previewing in the same moment. The people who know the domain, not just software developers, build these pieces themselves and see the result instantly.

<Component>

    <Property Name="Value" Type="string[]" />
    <Property Name="AlarmColor" Type="color" Value="#A0D4F1" />
    <Property Name="DataSeries" Type="double[]" />

    <Layer>
      <Text Value="Available power" HorizontalAlignment="Center" />
      <Bar Id="Bar1" Width="24" Value="75" Height="100"
      BarColor="{{self.AlarmColor}}" />
    </Layer>

    <Layer>
      <Text Value="Total power" HorizontalAlignment="Center" />
      <Bar Id="Bar2" Width="24" Value="75" Height="100"
      BarColor="{{self.AlarmColor}}" />
    </Layer>

</Component>
LIVE PREVIEW
( a component written in the language, rendered live from the same markup )
( osdesigner ) OSDesigner, rebuilt from the ground up

OSDesigner is where Høglund's engineers assemble the operator interfaces and automation systems by hand. We rebuilt it completely. Engineers pull components from the language, arrange them on a canvas, and keep sight of the whole system as it grows. We did the rebuild in production, renewing the workspace beneath the team while they kept delivering projects on it. The language, the rendering engine, and OSDesigner ended up as three layers of one toolchain, not three tools that happen to sit side by side.

( osdesigner in use, components assembled on the canvas )
( 03 - result )

A toolchain Høglund now builds on, and shows off.

( the team on the project )
( next project ) Arx Compliance From fragmented compliance reporting to one platform, built with Arx from prototype to enterprise.