Writing

I write about grounded architecture and testing, practical AI-assisted engineering, and hands-on code and tooling.

I also post shorter, less formal TIL notes here.

I’m most active on Bluesky, and you can also find me on LinkedIn.

Subscribe via RSS
  • Notes on Why AI is the Third Coming of Domain-Driven Design

    Notes

    Notes on "Dear Architects" podcast episode: "Why AI is the Third Coming of Domain-Driven Design". The title is only a small part of the episode. My main takeaway is that, because AI changes the medium of communication to natural language, precise ubiquitous language will matter e…

  • Reminder: do not rely on agent permissions

    Back in October or November last year, when I started using Opencode, I spent quite a bit of time setting up permissions and realised they were both complex to set up and, frankly, unreliable. Recently, I have been working on sandboxing the coding agents I use, and I wanted to sh…

  • Creating architecture diagrams with C4 and coding agents

    Experience Report

    LLMs can draw diagrams, but you get better results with a conceptual model, a validation loop, and a lightweight verification pass against the codebase than with free-form diagramming. I used the C4 model extensively to map architecture landscapes. Last week I saw an opportunity …

  • Add a CLI subcommand to keep LLM instructions in sync

    One challenge with agent instructions when integrating with CLIs is how to direct the LLM so it knows how to use them, and keep those instructions up to date. I recently learned about a relatively simple idea: create a subcommand that outputs instructions targetted at LLMs and re…

  • A skill to support TIL creation

    Experience Report

    Skills are a great way to introduce capabilities in your agent flows. To support my "The Day I Learned" repository and website, I created a skill to extract learnings from coding and LLM sessions. The skill below is installed in my global agent settings (AGENTS.md), and from each…

  • Experience report: Site update using coding agents and Beads

    Experience Report

    This is an experience report on updating my (this!) website using coding agents and Beads ('a distributed, git-backed graph issue tracker for AI agents.'). Site update using coding agents Over the past week, I used coding agents to update my website. The result is, at least I hop…

  • Harness Engineering

    Notes

    Today I heard the term “harness engineering” for the first time: Harness engineering is the practice of building tooling, tests, and automation that let coding agents execute tasks safely and reliably. If code is written more and more by LLMs, the focus seems to be shifting to …

  • Combining agent skills

    How-to

    A short post on combining skills. It's not always clear when a skill will be called or triggered. The easiest way is to put instructions and directly invoke the skill you want by name. For example, for my Today I Learned mini blog site, I have two skills to keep my TILs focussed …

  • AI’s Opportunity: Pacing Control Loops with Development

    Opinion

    What caught my attention in the book Vibe Coding by Gene Kim and Steve Yegge is the idea that, as LLMs and coding agents change how we build software, control loops—tests, reviews, and other signals that tell you whether a change behaves as expected—should be faster and more inte…

  • Experience Report: Building a time-tracking AI assistant

    Experience Report

    This is a short experience report about using skills (with Codex and its models) to build a personal AI assistant that helps me maintain my time-tracking log. To set expectations: the assistant does not manage my calendar or tasks. It helps me keep a time-tracking log that lives …

  • On Building Reliable Software with LLMs

    Opinion

    This post captures my current thinking on how LLMs are impacting software development, particularly around software quality and engineering discipline. My main observation: most of the best practices we've relied on for years are just as important—maybe even more so—in an LLM-ass…

  • The Unification of Commands and Skills in Claude Code

    For background, because you may be noticing them in some of the outputs and inputs to Claude Code, I want to combine two skills: text-grader: grade a text for correct UK English spelling and grammar til-rules-checker: check my 'Today I Learned' format rules for my Today I Lea…

  • Agent Chisels: My LLM Agent Skills and Workflows

    I have been meaning to share more about my LLM workflows and tooling for a while, partly to have a reference for conversations, but mostly to learn in public. Agent Chisels is where I will be sharing the custom artefacts (primarily skills, with commands and agents to follow) that…

  • My Best Technical Decision of 2025: Moving to Proton for Peace of Mind

    This year I bit the bullet and moved mail, calendar and drive from Google to Proton. Knowing that my family is not being profiled when, for example, I plan a doctor's appointment feels liberating. Sure, there were fun and useful technical improvements, like getting a podcast micr…

  • Implementing an Urgent Feature with Opencode, Claude, and Zed

    Experience Report

    This is a short post to share a positive experience I had using an LLM agent to quickly add a feature to an existing personal CLI time-tracking application. Below, I describe how I added it using Zed, Opencode and Claude. To start, I wasn't even sure the feature I needed existed …

  • TIL rules to remember

    I have been writing "Today I Learned" posts (TILs) for a few weeks now and I started writing them as a complement to long form blogging. But I found myself spending 45-60 minutes, sometimes longer, per TIL instead of 15-25. This defeated the purpose of quickly recording and inter…

  • DORA Research: Evidence-Based and Scientifically Grounded Software Engineering

    Opinion

    Years ago, the book Accelerate changed my view on software development and delivery fundamentally. Of course, there are its findings (dare I say 'revolutionary'?) on which technical and organisational factors drive high performance software delivery. But that is not what I want t…

  • My agentic coding stack for October 2025

    Tools

    After wrapping my head around the constant changes in LLM subscriptions and performance, here's my new coding stack for October 2025: Warp Pro: my go-to agentic CLI, speedy and reliable for coding and task automation. Supports most top end LLMs. Zed Pro (using the $20 trial, then…

  • Grounded decision records from AI conversations

    If you've read some of my posts before or worked with me, you know I like using Architectural Decision Records (ADRs) for lots of reasons. To me the most important one is documenting the why of a decision. If you've worked with AI models before, you've probably asked them for opt…

  • Output Styles in Claude Code

    How-to

    Claude Code's output styles control how the AI responds to your requests. This summary covers the built-in styles and when to use each one. TLDR: Output styles = stored system prompts that change Claude's behaviour. Slash commands = stored user prompts for quick actions. Use th…