Posts

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…

My awesome Scid setup! 🨀

Image
Scid Rocks 🚀
Behold! Two screenshot of Scid from my ThinkPad running openSUSE Tumbleweed:On a FHD vertical monitor. The…

GNU Make - Unconditionally run a target before any other targets

When writing a (GNU) Makefile, there are times when you need a particular target(s) to be run before anything else…

Firefox profiles: Quickly replicate your settings to any machine

Image
Have you ever been in a situation where you'd needed to work on different/new machines on a daily basis and wished …