Posts

Showing posts from August, 2025

Laziness and Impatience - An Engineer's Journey

Image
I used to have a relatively derelict blog (the one you're on now) where I would jot down some of my thoughts and ex…

Did we just swap "compilation time" for "completion time"?

Image
I've been a software engineer for long enough to have seen our workflows evolve dramatically.Waiting for the Toolch…

Shell Scripts: Safe Short/Long Option Parsing

Image
I’ve written a ton of Bash scripts over the years - haven't we all?
To be honest, for a long time I handled command…

The Tale of Two Teams: How We End Up With Useless Software

Image
Two equally notorious ways to guarantee failure in any software project:Ship too soonNever shipThis is the story I use …

GNU Make's Two Personalities: Understanding Simple (:=) vs. Recursive (=) Variables

Image
There are two major flavours of variables in GNU Make:  "simple" and "recursive".  While si…

The Tyranny of Choice: My Case for Opinionated Software

Image
Early in my career, I learned an expensive lesson (fortunately by observation, not by failure) and it has had a profoun…

The "Zero Incidents" Trap: Why Chasing Perfection Backfires

Image
I'll confess: for years, I was an adamant believer.
I was convinced that achieving "zero incidents" was ju…