<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Ot on Marius Gjerd</title><link>https://mariusgjerd.github.io/tags/ot/</link><description>Recent content in Ot on Marius Gjerd</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Tue, 02 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://mariusgjerd.github.io/tags/ot/index.xml" rel="self" type="application/rss+xml"/><item><title>Your uptime SLA means nothing when the physical process can't wait for your rollback</title><link>https://mariusgjerd.github.io/posts/bridge-builder-uptime/</link><pubDate>Tue, 02 Jun 2026 00:00:00 +0000</pubDate><author>Marius Gjerd</author><guid>https://mariusgjerd.github.io/posts/bridge-builder-uptime/</guid><category>ot</category><category>it</category><category>reliability</category><category>bridgebuilder</category><description>Web developers think about uptime differently than industrial engineers. Here&amp;rsquo;s why, and what it costs when you don&amp;rsquo;t understand the difference.</description><content:encoded><![CDATA[<p>There&rsquo;s a conversation that happens when IT developers first encounter operational technology. It usually goes something like this:</p>
<p>&ldquo;What&rsquo;s your uptime requirement?&rdquo;</p>
<p>&ldquo;99.9%.&rdquo;</p>
<p>&ldquo;That&rsquo;s about 8 hours of downtime per year. We can work with that.&rdquo;</p>
<p>&ldquo;No, 99.9% <em>per shift</em>. We run 24/7. And if the system goes down mid-batch, we lose the entire batch.&rdquo;</p>
<p>The IT developer nods, makes a note, and quietly recalculates.</p>
<h2 id="what-uptime-means-in-it">What uptime means in IT</h2>
<p>In web services, uptime is a statistical measure. Your load balancer distributes traffic. A rolling deployment takes down one instance at a time. If a deploy goes wrong, you roll back. The user retries their request. Maybe they see an error page for a few seconds.</p>
<p>99.9% uptime means roughly 8.7 hours of downtime per year. For most web applications, that&rsquo;s acceptable. For the unlucky users who hit those 8.7 hours, it&rsquo;s annoying but not catastrophic.</p>
<p>The whole model assumes the system&rsquo;s state is recoverable. A failed transaction gets retried. A dropped connection reconnects. Deployments are reversible.</p>
<h2 id="what-uptime-means-in-ot">What uptime means in OT</h2>
<p>In industrial control systems, &ldquo;the system&rdquo; is not the software. It&rsquo;s the physical process the software controls.</p>
<p>A water treatment plant doesn&rsquo;t pause while you roll back a SCADA update. A cement kiln running at 1400°C doesn&rsquo;t wait for your deployment pipeline. A paper machine running at 1000 meters per minute doesn&rsquo;t retry when your historian goes offline.</p>
<p>The physical process continues whether the software is healthy or not. And if the software loses control of the process, even briefly, the consequences are measured in:</p>
<ul>
<li>Batches scrapped</li>
<li>Equipment damaged by running outside safe parameters</li>
<li>Product out of spec that must be discarded</li>
<li>In the worst cases: fires, injuries, environmental incidents</li>
</ul>
<p>Your 8.7 hours of acceptable downtime might span three production batches. That&rsquo;s not an SLA problem. That&rsquo;s a business continuity problem.</p>
<h2 id="the-rollback-problem">The rollback problem</h2>
<p>Web developers treat rollbacks as a safety net. Something went wrong in production? Roll back to the last good version. Worst case, you lose a few minutes of data.</p>
<p>In industrial systems, rollback is often not an option mid-process.</p>
<p>If a PLC program update goes wrong mid-batch, you can&rsquo;t simply restore the previous version and continue. The physical state of the process has changed. Temperatures, pressures, chemical compositions are now different from what the previous version expected. Restoring old software to a new physical state can be more dangerous than finishing the bad deploy.</p>
<p>This is why industrial systems have change management processes that look bureaucratic and slow to IT eyes: planned maintenance windows, tested rollback procedures, operator sign-offs. They&rsquo;re not bureaucracy for its own sake. They&rsquo;re built around the reality that the software controls something that doesn&rsquo;t stop.</p>
<h2 id="what-to-do-about-it">What to do about it</h2>
<p>If you&rsquo;re writing software that talks to industrial systems, a few things are worth internalising:</p>
<p><strong>Graceful degradation looks different here.</strong> In web services, graceful degradation means showing a cached page or a friendly error. In OT, it means the control system continuing to operate safely in manual mode while your software is down. Design for that hand-off explicitly.</p>
<p><strong>Test against the physical constraints, not just the software ones.</strong> What happens to your system when the network drops for 30 seconds? What does the PLC do? What does the operator see? What alarms trigger?</p>
<p><strong>Understand the process before you touch it.</strong> The operators who run the plant know things about failure modes that aren&rsquo;t in any documentation. Talk to them before you write a line of code.</p>
<p>The SLA number on the contract is the easy part. Understanding what it actually means for the thing being controlled is the hard part.</p>
<hr><p><em>Originally published at <a href="https://mariusgjerd.github.io/posts/bridge-builder-uptime/">mariusgjerd.github.io</a>, where I write about what happens when code touches the real world. New posts also go out by email: <a href="https://marius-newsletter-d94bcd.beehiiv.com/">subscribe here</a>.</em></p>]]></content:encoded></item><item><title>Why this blog exists</title><link>https://mariusgjerd.github.io/posts/welcome/</link><pubDate>Sat, 30 May 2026 00:00:00 +0000</pubDate><author>Marius Gjerd</author><guid>https://mariusgjerd.github.io/posts/welcome/</guid><category>meta</category><category>career</category><category>ot</category><category>it</category><description>An introduction to who I am, what I&amp;rsquo;m doing, and what I plan to write about.</description><content:encoded><![CDATA[<p>Hi, I&rsquo;m Marius Gjerd, a developer based in Bergen, Norway, working at the crossroads of code and physical infrastructure.</p>
<p>I started out as an electrician. Then I learned to write software, and for the past few years I&rsquo;ve been building IoT solutions in the energy sector. This autumn I&rsquo;m starting a three-year degree in Industrial Automation alongside my day job. It covers PLCs, instrumentation, industrial networks, and OT security.</p>
<p>That&rsquo;s a deliberate move. The bridge between IT and OT, between the cloud-connected world of developers and the physical world of industrial control systems, is somewhere I find genuinely interesting, and a place where very few people are comfortable on both sides.</p>
<p>This blog is where I&rsquo;ll write about what I learn along the way. Expect posts on:</p>
<ul>
<li>The strange and useful corners where IT and OT meet</li>
<li>Industrial cybersecurity from a developer&rsquo;s perspective</li>
<li>Hands-on experiments with PLCs, sensors, and home labs</li>
<li>Lessons from building IoT at scale in energy</li>
<li>Whatever else I find worth sharing as I work my way through the degree</li>
</ul>
<p>I&rsquo;ll write when I have something to say, not on a schedule. Some posts will be technical deep-dives; others will be shorter reflections. All of it will be in my own words, and the code behind the projects will be open source on my GitHub.</p>
<p>If any of this is interesting to you, stick around.</p>
<hr><p><em>Originally published at <a href="https://mariusgjerd.github.io/posts/welcome/">mariusgjerd.github.io</a>, where I write about what happens when code touches the real world. New posts also go out by email: <a href="https://marius-newsletter-d94bcd.beehiiv.com/">subscribe here</a>.</em></p>]]></content:encoded></item></channel></rss>