Latest Writing

Thirteen years building things, from games to AI. The war stories behind the decisions, the methods I'd teach a junior, and the tools I built along the way.

You Got Promoted and Nobody Told You
AILeadershipCoding AgentsEngineering PracticeCareer

You Got Promoted and Nobody Told You

August 22, 2026

14 min read

Why does it agree with everything you say, and why can't you find your way around your own codebase anymore? Nobody sent the memo, but you got the promotion. The job it handed you is older than any of these tools.

The Schema Is the Contract: Making an LLM Return Valid Data
LLMExtractionData Engineering

The Schema Is the Contract: Making an LLM Return Valid Data

August 19, 2026

5 min read

A model that hands back the right answer in the wrong shape has still broken your pipeline. Here's how I pin the output down with a schema on the way in and the same schema on the way out, so bad data fails a check instead of slipping downstream.

Where AI Coding Agents Actually Fail: The Hunt for a Clean Culprit
AI AgentsDebuggingEngineering Practice

Where AI Coding Agents Actually Fail: The Hunt for a Clean Culprit

August 15, 2026

6 min read

The agent goes looking for a clean, logical culprit, and it fails hardest when the real answer isn't one. Its sense of where the bug lives is confident and badly calibrated, and that's the thing you have to manage.

Determinism First: Use an LLM Only Where Determinism Runs Out
LLMExtractionData Engineering

Determinism First: Use an LLM Only Where Determinism Runs Out

August 9, 2026

5 min read

The reflex now is to reach for a model the moment data looks messy. Most of the fields people extract with an LLM are regex and grammars: faster, cheaper, and they never hallucinate. Here's how I decide where the model actually earns its keep.

Speed, Cost, Accuracy: How You Feed an LLM
LLMExtractionEngineering Practice

Speed, Cost, Accuracy: How You Feed an LLM

August 3, 2026

5 min read

An extraction job that ran fine on one document falls over on a few hundred thousand. How you feed the model is a trade between speed, cost, and accuracy. Three strategies, and the parallelism you can't skip.

LLM Extraction: Go Big or Go Small?
LLMExtractionEngineering Practice

LLM Extraction: Go Big or Go Small?

July 28, 2026

6 min read

My workhorse extraction model still ran to hundreds of dollars at volume. So instead of reaching for something bigger, I went the other way: how small a model can actually do this job? Here's the descent, and where it landed.

The Thread That Didn't Break: My Journey So Far
Career

The Thread That Didn't Break: My Journey So Far

July 18, 2026

5 min read

I set out to make video games and never made a living at it. This is how that turned into a career building everything else, and the one thing that never changed the whole way through.

Debugging the Web the Right Way: A Method, Not a Guess
DebuggingEngineering PracticeWeb Development

Debugging the Web the Right Way: A Method, Not a Guess

July 12, 2026

6 min read

Most debugging I watch is guessing with extra steps: change something, refresh, hope. Here's the method I actually use and teach: reproduce it, read the evidence, walk the dependency tree, and try to prove yourself wrong.

One Step at a Time: Debugging LLM Pipelines Without Re-Running the Whole Thing
LLMDebuggingEngineering Practice

One Step at a Time: Debugging LLM Pipelines Without Re-Running the Whole Thing

July 6, 2026

5 min read

I kept re-running my entire LLM pipeline just to debug the last step: hundreds of model calls, every single time. So I built Stepbook: a local tool that lets you edit one step and replay the rest for free.

Querying S3 Directly: How I Removed RDS from My Pipeline
Data EngineeringEngineering Practice

Querying S3 Directly: How I Removed RDS from My Pipeline

May 23, 2026

5 min read

I inherited a pipeline from another dev shop. It took days to process a few GBs of S3 data. I knew immediately something was wrong. Turns out an entire database didn't need to be there.

Starting Fresh: Building My Corner of the Internet
AI AgentsWeb Development

Starting Fresh: Building My Corner of the Internet

June 21, 2025

4 min read

It started with an AI-generated avatar. This is the story of how that creative spark led to building my personal site, the reality of using AI agents for development, and the new workflow that changed my process.

Keeping Up with Technology
Career

Keeping Up with Technology

November 29, 2015

7 min read

My first blog post, from 2015. The case for developers who never stop learning: versatility keeps you marketable, sharp, and hard to make obsolete. I've been living this argument ever since.