Writing on delivery, AI, and engineering leadership.
This is where I publish the patterns, questions, and arguments I care about right now: delivery quality, what AI actually does, and how leadership changes under pressure.
Start here
Pick the constraint you are dealing with.
If you are new here, start with the topic closest to your current problem. The archive underneath stays searchable and filterable.
Three starting points
Start with the conversation you want to have.
If you want the shortest path into how I think, start with one of these three pieces: delivery, AI, or leadership. After that, dive into the archive however you like.
Let's talkDelivery
Why software delivery quality is still treated differently from other engineering disciplines, and why that is a strategic mistake.
Start with Why Made In Germany is not a thing for software Signature topic 02AI
A practical explanation of what LLMs actually do, without hand-waving, hype, or pretending jargon is understanding.
Start with So whats the next word, then? Signature topic 03Leadership
How leadership changed for me under pressure, what the data showed, and what remote work exposed about management habits.
Start with The impact of Covid on my leadership styleArchive
Browse all articles
Use the signature topics for a high-level path, then narrow by keyword or by the underlying tags in the archive.
32 posts

Relaunching the website, and accidentally writing a CMS
The old website had a good run from 2013 to 2014 onward, but eventually even nostalgia needs a deployment plan. So I gave the site a relaunch and, naturally, wrote a brand new CMS for it.

So whats the next word, then?
The maths behind Transformers, explained so that a 12-year-old (or your dad) can follow along

Why your grandkid won’t be learning any programming language for their computer science major
Programming languages are one of the most fascinating inventions of human history. They allow us to communicate with machines, instruct them to perform complex tasks, and create amazing applications that enrich our lives. But their time is over...

What's the difference between Monoliths, Microservices and Serverless, and when to use which
Ever wondered about the differences between Monoliths, Microservices and Serverless Architecture, and which one you should chose?

Stop Writing JavaScript
So called modern web development has made websites worse, slower, and heavier. Read on to find out why server-side rendering isn't the solution to a problem that single page applications have created, and why you really, REALLY, should start to write less JavaScript code. (Yes, that includes TypeScript)

Why AI will not have the impact you expect
When talking about AI, many people are concerned about being replaced by machines. Others hope for much more free time. Looking at the past technological disruptions, though, both are probably wrong.

Making remote leadership work Part III: Working with individuals – helping the face behind the chat window
Leading remotely is arguably harder than leading face-to-face. Here are some tips and tools for running your one-on-ones and other individual conversations in a remote setting in part 3 of the 'Making remote leadership work' series.

Making remote leadership work Part II: The minimum toolset
An effective remote leadership strategy requires a minimum toolset to facilitate communication and collaboration among team members. This toolset typically includes email, chat, video conferencing, project management, and document-sharing software. In the second part, we will make sure you have the infrastructure you need to lead remotely.

Making remote leadership work Part I: what you need to know
Are you struggling with leading remotely? This article series offers tips and strategies for making it work. I'll discuss the advantages and disadvantages of remote work and how to foster a strong team culture even when your team is distributed. From communication tools like email and chat to work tracking tools like Jira and Trello, I'll cover the essentials for leading a remote team effectively. Don't let remote work hold you back - read this article series and learn how to make remote leadership work for you.

Why the New JS Pipeline Operator Is a Terrible Idea
Functional programming styles have some advantages, like predictability and great debugability. Those rely on well-defined patterns that implicitly avoid that you end up shooting yourself in the foot. The newly proposed JavaScript pipe operator comes without this protection and has a good chance of introducing hard-to-understand code and bad bugs. Here's why.

A fizzbuzz example: specialisation vs reusability
One of the more difficult decisions in software development is choosing between specialised and reusable solutions. So let us look at both and see if we can understand when to use which.

The beginners guide to why some people prefer functional programming and others object-oriented
For a few years now, discussions rage on between two seemingly different programming paradigms: functional and object-oriented. But what are the reasons some people prefer functional and is there a clear winner?

A PoC for Contract Testing in the Frontend
With methodologies like microfrontends and atomic design, and techniques like module federation and import maps, we steadily walk in a direction where our frontend is composed during runtime. And yet, we lack the tools to have cheap tests that ensure that we won't break the system. Let's take a look at a possible solution: contract tests for components.

Why team building fails
Team building is often seen as a tool to help a dysfunctional team to get back on track. And just as often, it fails to achieve this goal. Let's take a look at what the team needs and how I as a leader can help.

20 years of microfrontends
Microfrontends is a term that has come up in recent years, but in reality, we have been doing it for decades. Let's take a look at my journey and the lessons I learned on the way.

The impact of Covid on my leadership style
I send out an anonymous survey twice every year - but never during that time were we facing a pandemic. Let's take a look at the impact that this has had on my results.

The fallacy of multi-vendor teams
Your multi-vendor teams are not performing and you're trying to turn it around? Well, you can't - and here's why

Why "Made In Germany" ain't a thing in software
Software created in Germany never had the same flavour as cars. It's actually more of a smell. And this smell is gradually leaking into the other products. But what can we do to change that? I have three ideas.

Testing Your Web Components
Creating a custom element for a demo todo list in a test driven fashion, using jest, dom-testing-tools, LitElement and pure-lit.

Write Less Code For Smaller Packages With `pure-lit`
What if someone told you that by adding another package to your lit-element project, you will create smaller bundles and write less code?

Testing Scripts With Aruba and Cucumber
Testing your bash scripts ain't easy. As testing their unit is tricky by design, I searched for something to test their behaviour and looked at BDD for the terminal.

Logging browser script errors with nginx
Javascript errors for you users might get lost if you don't log them. This post is showing a very easy way to get to them, without requiring users to call you on the phone.

Playing around with webcomponents
I've forgotten more about javascript frameworks than most people learned about. Most frameworks were working around shortcomings of HTML and javascript at that time. Web components are a set of tools to remove a lot of those shortcomings, so let's take a look at them.

A Hidden Relaunch - Replacing a lot of jQuery code with some CSS
Technology moves on. And my website fell behind. Without any visible changes, I replaced 1MB Javascript with 700 Byte, replacing jQuery Plugins with CSS.

Children birthday party with spider-bristlebots
Our kids are birthday-wise pretty close, and only one year apart. Wouldn't it be a great idea to combine the parties? In hindsight, it was a pretty bad idea inviting so many kids at once, but at least we build some bristlebots.

Getting Started With An Arduino Nano and a WS2812B Addressable RGB LED Stripe
There comes the moment in every's Arduino programmer life when 1 LED is not enough. As always, the next feasible step from one is 60, but controlling a set of red, green and blue LEDs to represent the 8bit color array is slightly more difficult then one would expect.

Annika, the autonomous chaos driver
In a desperate attempt to prove my kids our robomover is stupid we collaboratively created an indoor version with an arduino. This is when I learned that kids are too noisy for ultrasonic sensors.

A tinfoil saturday circuit
When your daughter is sick, and her life seems to be in darkness, let's use tinfoil, a 3V and an LED to bring back the light

Cloud Based dockerized raspberry picture-frame with NextCloud and Balena Cloud
How many docker containers do you need to create a picture frame for a raspberry pi? The answer is 3, obviously. With BalenaCloud, WPE and nodejs we are creating a simple random image slideshow in the most complicated and awesome way.

DNS with integrated AdBlocking in the local network
There comes a moment in every local network where you have to remember 255 IP Addresses. Which is easy. The hard part is remembering what device is behind what IP. Domains can come to the rescue, and why not creating an internet without Ads while we are at it?

Building a HomeCloud
My family produces too many videos that (for unknown reasons) we want to keep. As cloud storage is expensive at Terabyte level, and I love building things, I took an alternative approach to have my own fault safe 3TB HomeCloud at ~300EUR.

Improving a toy helicopter
Sometimes, my kids expect a little more of their toys then they get. Luckily in this case, with an LED, a button, a battery and some cables, this can be fixed.
Work together
Need help with delivery, AI, or engineering leadership?
If the writing maps to your situation, the next step is simple: talk through the actual constraints in your organisation.