Posts

Log Quad: Domesticate Your Logging Bill

Image
TL;DR: To safely tune your logging bill, you must first understand your log emissions. Evaluate them through the Log Quad: (intents severity frequency code-marker).No one writes log statements because they are aesthetically pleasing. In fact, they are impure, imperative side-effects that look like mould all over the codebase. We write logs because we know we need high-cardinality glimpses into our systems when the time comes. When a distributed system inevitably goes sideways, they are the only…

Brain-Work, Brain-Toil and Mentoring AI Agents

Image
I recently wrote about my enlightenment: A mental model for working with AI Agents. TL;DR: see it as a collaborator who has read a thousand books on programming but has never written a single line of code. A collaborator who possesses immense knowledge but lacks any sort of wisdom and insight that comes from experience.That has become the guiding light in all my "augmented coding" sessions, be it in a professional setting or for my hobby projects, and it has let me have way more frui…

AI Agents: Rich Oases of Knowledge, Barren Deserts of Wisdom

Image
Everyone keeps writing or sharing about how powerful AI Agents are and how they can fundamentally change the way we do this or that.But I kept wondering: What exactly does it take to unlock that potential?Why do I struggle to effectively use them for anything beyond basic tasks?Why do I very frequently find myself frustrated by their inconsistent output and the need for endless tweaks in my prompts?Rarely anyone talks about the answers to these questions.πŸ’‘See my follow-up post Brain-Work, Brai…

Flow: A Pragmatic Approach to Composable Business Logic in C#

Image
Only recently, after reading the book Effect Oriented Programming, did the true benefits of functional programming fully click for me: the beauty of composition, the containment of side effects, and the decoupling of intent from execution. This realisation led me to look at a large C# codebase I was working on, a critical service at EarnIn, and see a clear opportunity to apply these ideas.And so began a journey that led to the creation of Flow. The Pain: When Best Practices Weren't …

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 experiences...maybe once a year πŸ˜‚Some time ago, I defined myself a personal project: to write way more often and at a, mostly, regular pace (in case you're interested, I'll get to the reasons in another post).Now, mind you, I’m a software engineer - by passion and profession. I dabble in deterministic systems (Terms & Conditions Apply πŸ˜…). Usually, I've got a …

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 ToolchainI vividly remember the days when the biggest drag on my train of thought was the compile-build-test cycle. It was a constant interruption, a forced coffee-break that usually shattered my thought-flow.  As an industry, we used our smarts and there it was: incremental compilation, continuous testing, parallelisation, etc. And to our credit, we made things a lot better. A. Lot.B…

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-line arguments in the most primitive way possible: checking for $1, $2, and so on.
It was ugly, fragile and a real pain to maintain. If the user (i.e. I myself in many cases πŸ˜‚) put the flags in the "wrong" order? Script broken. Needed to add a new optional flag? More if-else spaghetti 🍝 THAT, my dear reader, is the problem getopt solves elegantly. It’s a powerful u…

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 when talking about one of the most common traps in our industry - the false dichotomy between shipping too soon and over‑engineering.I like it because it’s short, easy to remember, and instantly relatable.I also like it because, ahem, I’ve been in both camps πŸ˜…Once Upon A Time...Two groups of software engineers, Team Just-Ship-It-Already and Team Overly-Elaborate-Grand-Design-C…