Shipping & Tooling
Deploys, local environments, CLIs, and where agents actually help.
31 articles · 327 minutes of reading
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
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.
Sept 2026 · 22 min read
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.
Aug 2026 · 14 min read
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.
Aug 2026 · 13 min read
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.
Aug 2026 · 12 min read
Everything in Shipping & Tooling
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.
Giving your agents a terminal: a first look at the tabstack CLI
A hands-on look at Mozilla's tabstack CLI: a single Go binary that turns any URL into clean Markdown or JSON, runs browser automation, and scripts neatly.
Meet Sevalla; Cloud Hosting Without the Headache
Sevalla simplifies cloud hosting by providing intuitive app deployment, database hosting, and object storage. No infrastructure to manage.
Introducing Signal: documentation that lives in your code
Signal is a PHP library that generates living documentation from native attributes. Annotate your classes, run one command, get accurate docs.