Skip to main content
WritingSpeakingCodeAboutNow
Pillar

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

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.

Jun 20269 min read

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.

May 20268 min read

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.

Apr 202611 min read

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.