What's past is prologue

Retiring snapshot-per-write for an event-fed read model TL;DR: Shakespeare succinctly describes what will follow, but our history storage mechanism was worse than O(N) — we were writing a whole copy of everything on every change. We moved to using events and an event-driven architecture. This is very much appreciated by our DB. Event-driven systems are an aggregation of the past — what’s past, is prologue! (The Tempest, Act II) I discuss this topic very briefly here as well (2018 video): https://youtu.be/-VJ6FtTS8zg ...

October 27, 2026 · 11 min · 2151 words

Examination at Scale: Queues, Databases, and ACKs

When Sara is taking her exam, the last thing she has on her mind is whether clicking “submit” will actually work. The exam ends: in the last two minutes of the window, most of the class hits submit at the same time. It’s not only the class — these are central exams, everyone in the country is submitting at the same time. When the system shows “Submitted”, this is a promise to Sara that her exam is now safely stored with it and she doesn’t need to worry. ...

October 15, 2026 · 11 min · 2278 words

Answering Questions on SPS 2019 Demo

SPS Nuremberg is one of the largest gatherings of the Industry. This year was no different. I was part of a team that presented the concept of OT/IT consolidation. I got quite a few comments and questions about the demo video (in Urdu here). So here’s a shot at answering some of the questions I got forwarded: The demo was (in oversimplified terms) showing PLC compute moved to software which can be orchestrated using Kubernetes. ...

December 1, 2019 · 3 min · 625 words

Getting Started with Clojure[script] Behind Corporate Proxy

So on my Clojurescript journey, the first roadblock I hit was corporate proxy. I don’t know why Java, maven, clojure (everybody?) doesn’t respect the environment variables but this is a real pain. Getting started Clojurescript is written in Clojure which requires Java. So we need to get all three up and running. Java To get Java JDK and JRE, run: $ sudo apt install openjdk-11-jre $ sudo apt install openjdk-11-jdk For proxy settings, edit /etc/java-11-openjdk/net.properties. ...

October 14, 2019 · 2 min · 231 words

Evolutionary Architecture

Evolvability of Architectural Styles… Big ball of mud Monoliths Event-driven architectures Service-oriented architectures (SOA) Serverless

September 22, 2019 · 1 min · 15 words