Skip to main content
WritingVideosSpeakingCodeAbout

Writing

Everything I have written down

Articles, reference guides and multi-part series on API design, architecture, PHP and the work around them. All of it free, none of it behind an email form.

Aug 202610 min read
Shipping & Tooling

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
Shipping & Tooling

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
Shipping & Tooling

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 202610 min read
Architecture

Seven Days in Ten Milliseconds

A workflow that sleeps for three days is not a workflow you can test by waiting. Owning the clock, asserting on absence, and the races you only get one shot at.

Jul 202619 min read
Architecture

Building an order fulfilment workflow in Laravel

Build a real order fulfilment workflow in Laravel: signals from webhooks, timeouts, retries, branching, sleep and saga compensation, one step at a time.

Jul 202610 min read
API Design

Building Bulletproof Laravel APIs using Schema-First Contract Validation

Stop letting undocumented fields into your Laravel API. Write the JSON Schema first, then enforce it in middleware, DTOs, and your Pest test suite.

Jul 202613 min read
Architecture

Strangling Procedural Legacy PHP into Laravel

Replace a procedural PHP monolith with Laravel one route at a time. Nginx ingress, session bridging that actually works, and Eloquent on a legacy schema.

Jul 20265 min read
Shipping & Tooling

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
Shipping & Tooling

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.

Jul 202612 min read
PHP & Laravel

Fibers Plus the Polling API: What Async PHP Actually Looks Like Now

Fibers give PHP concurrency. The Polling API gives it native epoll and kqueue. Here's how to build on both, with honest benchmarks.

Jun 20269 min read
PHP & Laravel

The Polling API Is the Most Underrated RFC PHP Has Shipped in Years

The Polling API gives PHP 8.6 native epoll and kqueue at last. Here's why the RFC nobody discussed is the most consequential in years.

Jun 202611 min read
Shipping & Tooling

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.