Shipping gets treated as a configuration problem when it is a design problem. A deploy you do not trust is not a pipeline that needs one more YAML file. It is a system you cannot reason about, and the pipeline is just where that becomes visible.
I build my own tooling when the alternative is remembering things. CLIs, Nix modules, agents with a terminal attached. The bar is whether it still works when I come back in six months having forgotten every decision I made, which happens to be the same bar I hold a deploy to.
Agents get their own share of this pillar, because the useful framing is narrower than the marketing. They are genuinely strong on work you can describe exactly and a liability everywhere else. Worth knowing which half you are in before you hand over the keyboard.
Start here
A route through it, in order.
- 1
Designing CLIs people want to use
API design is a user experience problem and nobody argues any more. Then we build a CLI and forget all of it. Cobra defaults, which ones are wrong, and what I do instead.22 min read - 2
Controlling Code Quality When an Agent Writes Your Laravel
Specs, ADRs and path-scoped rules. The three layers of context I build around an agent so it writes Laravel the way my codebase does, not the way every tutorial does.14 min read - 3
One Host, Twenty-One Files: A NixOS Flake That Stays Out Of Your Way
How auto-imported flake-parts modules, wrapped desktop packages, and a single base16 palette file shape one NixOS config - and where each one bites.13 min read - 4
MCP Goes Stateless: What Changed and Why It Matters
The Streamable HTTP transport replaced HTTP+SSE and quietly made MCP servers stateless. Here is what that means, how the new transport works, and why it unlocks serverless and edge deployments.12 min read
Same subject
Shipping & Tooling, in every other format.
Videos · 22
All 22 videos →Archive
Everything in Shipping & Tooling, newest first.
My business lives in my vault now
My clients, hours, invoices and articles moved out of FreeAgent, Upwork and my head into plain files in my Obsidian vault, kept by an agent, with Tabstack finding the next client.
My clients live in a folder now
Freelance tools are good at the books and bad at everything around them. mavis keeps clients, calls, time and invoices as Markdown files, run from one binary.
The Petstore scores 65
The most copied OpenAPI document in the world is a bad API for an agent, and it takes a third of a second to find out. So I built the check I was doing by hand.
Designing CLIs people want to use
API design is a user experience problem and nobody argues any more. Then we build a CLI and forget all of it. Cobra defaults, which ones are wrong, and what I do instead.
Building Research
A desktop research workspace in Laravel and NativePHP. Streaming SSE into a queued job, distilling reports with a local model, and why cosine similarity cannot tell a paraphrase from a contradiction.
Controlling Code Quality When an Agent Writes Your Laravel
Specs, ADRs and path-scoped rules. The three layers of context I build around an agent so it writes Laravel the way my codebase does, not the way every tutorial does.
Eighteen Files And One Nix Module: How My Brain Works
The Obsidian vault I use as a system of record for every project, why the checkouts inside it are gitignored, and why half of it is generated from my NixOS flake.
MCP Goes Stateless: What Changed and Why It Matters
The Streamable HTTP transport replaced HTTP+SSE and quietly made MCP servers stateless. Here is what that means, how the new transport works, and why it unlocks serverless and edge deployments.
One Host, Twenty-One Files: A NixOS Flake That Stays Out Of Your Way
How auto-imported flake-parts modules, wrapped desktop packages, and a single base16 palette file shape one NixOS config - and where each one bites.
Give your Laravel AI agent real-time web knowledge
The Laravel AI SDK is provider-agnostic, but its built-in web tools aren't. Here's how to give your agent real-time web knowledge without losing that independence.
The Right Agent at the Right Time
How to run AI across the whole dev lifecycle: the right agent at each stage, human gates on judgement, and decision records that keep architecture honest.
A Proper Look at Tabstack
A developer's review of Tabstack, the Mozilla-backed web API that gives AI agents clean extraction, browser automation, and cited research without a scraper.



