Skip to main content
WritingVideosSpeakingCodeAbout

Pillar

Shipping & Tooling

Deploys, local environments, CLIs, and where agents actually help.

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. 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. 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. 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. 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.

Archive

Everything in Shipping & Tooling, newest first.

Oct 20269 min read

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.

Oct 20268 min read

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.

Sept 20267 min read

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.

Sept 202622 min read

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.

Aug 202622 min read

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.

Aug 202614 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 202610 min read

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.

Aug 202612 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 202613 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.

Jul 20265 min read

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.

Jul 202613 min read

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.

Jun 202611 min read

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.