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
  • Pi's session branching as an alternative to sub-agents

    How-to

    Most coding agents rely on sub-agents to manage complex workflows. Pi's session branching offers a different way to handle multiple lines of work in a single session, with deliberate control over context and state. This short post explains my main insight into Pi's session manage…

  • Notes on Change Intent Records discovered from MOCAG Episode 4

    Notes

    While Obsidian and giving coding agents eyeballs are interesting, to me, the most interesting topic from Machine of Code and Grace's podcast episode "How do we give it eyeballs?" is Change Intent Records or CIRs. From the podcast: Change Intent Records (CIRs) are lightweight mark…

  • When to Use Expert Tool-Calling LLMs

    Often, large language models (LLMs) are evaluated in certain categories, for example, coding, writing, or tool-calling. I wasn't sure what tool-calling meant, so I decided to do some AI-assisted research. I used LeChat and GPT-5.4, going back and forth between them, checking refe…

  • One-shotting a digital vCard generator

    Experience Report

    This month I'm attending a conference for the first time in years. When a friend asked if I'd be bringing business cards, we both wondered if that was still relevant. How about a digital business card, then? Turns out there are online apps for that, and they charge a monthly fee.…

  • Adding `plan mode` to Pi while prioritising portability

    This article shows how I added plan mode to Pi using artefacts that stay as reusable as possible across other coding agents. Pi lacks a first-class plan mode. If you want one, you have to build it yourself, use an extension, or adapt Pi's example. I have a fairly low threshold fo…

  • agentfiles, dotfiles but for agents

    Sometimes I want to refer to my agents setup or people ask me what my configuration looks like. For general system configuration dotfiles are used so I am going to share my agent configuration in what I'll just call "agentfiles". I do have a private dotfiles repository but I am n…

  • Jujutsu Footer Extension for Pi Coding Agent

    I put together a Jujutsu footer extension for the Pi Coding Agent that appends jj commit context to assistant responses. If you use jj and Pi, you might find it useful. Full details: jj-footer-extension.md.

  • And so I ended up with a TUI

    Experience Report

    This is a short experience report about building a tiny TUI/CLI to inspect configured agents and model assignments in Opencode. I wanted a simple way to see which models were configured on which (sub)agents and their relative costs. I also did not want to spend much time building…

  • 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…