cd ~/home

$ ls -la ./blog/

Writing

9 posts total

09

Tech Debt That Actually Gets Read: Keeping the Ledger in the Repo, Not the Backlog

Every team 'tracks' tech debt. Almost none of it gets read at the moment it matters — the moment someone is about to step on it. We moved our debt ledger into the repos themselves, with dated entries, explicit statuses, and superseded-not-deleted decisions. It has already prevented one production outage.

Engineering ProcessTech DebtDocumentationAI
Oct 14, 2026
8 min read
08

Building a Local AI Harness: Making a Multi-Repo Platform Safe for an AI Agent

Pointing an AI coding agent at a production platform with real payroll data is either a superpower or an incident, depending entirely on the scaffolding around it. Here's the harness we built — per-repo operating manuals, persistent typed memory, runbook skills, and hard guardrails — and what it changed.

AIClaude CodeDeveloper ToolsDevOps
Oct 3, 2026
9 min read
07

Two Pipelines, One Laptop: A Local Harness for Validating a Billing Engine Rebuild Dollar-for-Dollar

We're replacing a legacy data-pipeline invoicing system with a rebuilt engine — and invoices are money, so "looks right" isn't a bar you can ship against. Here's the local harness we built to run the same real payroll through both systems side by side, and the bugs it caught that no code review would have.

DockerPostgreSQLTestingSystems Design
Sep 19, 2026
8 min read
06

Plan on Every PR, Apply by Hand: Standing Up Human-Gated Terraform CI

We added CI to a Terraform setup that had none — but kept every apply behind a human gate, on purpose. The first CI run immediately surfaced three real bugs a clean local plan never would have. Here's the architecture, the OIDC gotchas, and why 'human-gated' is a design point, not a transitional embarrassment.

TerraformAWSCI/CDDevOps
Sep 5, 2026
9 min read
05

Safe & Smart Use of AI in Development: What I Tell Every Junior Engineer

AI tools are the most powerful thing to hit software development in a decade. They're also the easiest way to build a career on a foundation of sand. Here's what I cover when I talk to a group of junior developers — honest, practical, and no hype.

AICareerBest PracticesDeveloper Tools
Apr 15, 2026
11 min read
04

Real-Time at Scale: Building a Hospital Nurse Allocation System for 5,000 Patients/Day

When a client needed to coordinate nurse assignments across 15 hospitals in real time, polling wasn't going to cut it. Here's the architecture we landed on — WebSockets, Redis pub/sub, and a rule-based scheduling engine that runs without a hitch in a live clinical environment.

Node.jsWebSocketsRedisSystems Design
Feb 18, 2026
9 min read
03

LLM Inference Pipelines in Production: FastAPI, Redis Streams, and WebSocket Streaming

Shipping an LLM-powered feature to production is different from running a notebook. Here's how we built a real-time inference pipeline for an automated detection system — handling job queuing, streaming responses, and failure recovery at the backend level.

PythonFastAPIRedisLLMAI/ML
Jan 22, 2026
8 min read
02

Pulumi in Production: Lessons from Standardizing AWS Infrastructure for a 20-Engineer Team

When we decided to consolidate three years of ad-hoc AWS configurations into proper IaC, we chose Pulumi over Terraform. A year and a half later, here's an honest look at what worked, what didn't, and what I'd do differently.

PulumiAWSTypeScriptDevOpsIaC
Dec 5, 2025
7 min read
01

Turning On TypeScript Strict Mode in a Live Production Codebase (Without Breaking Everything)

We inherited a large TypeScript codebase with strict mode off. Turning it on revealed 400+ errors. Here's how we migrated incrementally, what the errors actually taught us about the code, and why it was worth the three-sprint investment.

TypeScriptEngineering ProcessBest Practices
Oct 14, 2025
6 min read