Writing

Technical deep-dives, lessons learned, and takes on engineering culture. The full text of every piece lives here. Some were written for this site; others first ran on DEV.to, Substack, or Medium.

chaotictoejamSeptember 2026

What 'Serverless' Actually Costs You (The Part the Video Skipped)

Lambda's per-invocation pricing wins for spiky or low traffic, but past a breakeven point an always-on EC2 or Fargate instance is cheaper. How to find the invocation volume where that flips, and why concurrency caps are the planning problem serverless doesn't remove.

Read the post →
SubstackAugust 2026

He Wasn't Analytical. He Was Slow.

A story about being paired with a senior engineer who spent a refactor sprint building a spreadsheet, a manager who wouldn't name a lead, and the five leadership lessons that came out of being told I was too junior to see what he saw.

Read the post →
MediumSubstackJuly 2026

The Calibration Room

What it was actually like to sit in twice-a-year stack-ranking calibration meetings with a forced X% Below Strong bucket, how a leave gap in someone's record got handled (or didn't), and why the Meta AI-ranking lawsuit is a predictable outcome.

Read the post →
SubstackJuly 2026

Who Is Responsible When "AI" Decides to Punish You Unjustly?

Two scoring systems shipped in the same week: Substack's Pangram AI-writing detector and Meta's layoff-ranking that ignored protected leave. Both removed a human from a judgment call, and when the machine is wrong, the burden of proof lands on the person it misjudged.

Read the post →
SubstackJuly 2026

Pokemon Go Is Everything Wrong With Lazy Programming

A daily player's teardown of Pokémon GO as a working example of uncreative engineering that shipped anyway and printed money for a decade: a reskin of Ingress, a strategically hollow default battle loop, a gym system that was patched around rather than fixed, and AR that's off by default.

Read the post →
SubstackJuly 2026

Why Your Webcam Uploads Are Huge on Fedora

A 42-minute recording was 3GB on Windows and 7GB on Fedora from the same webcam. The cause: Chrome falling back to software H.264 encoding because Fedora's stock Mesa strips patented H.264 support. Here's the five-minute diagnostic and fix.

Read the post →
DEV.toJune 2026

The Python exception that leaked tenant secrets

A real incident where tenant secrets landed in production logs, traced through f-string exception messages and framework-generated __repr__. The fix is making sure the sensitive object never serializes its secrets in the first place, with a logging filter as backup.

Read the post →
SubstackJune 2026

The index is built

Two junior engineers spent two days at a whiteboard reinventing the do-while loop in assembly. We knew what a do-while was. The gap wasn't the concept, it was the index: the connection between knowing something exists and reaching for it in the moment.

Read the post →
MediumSubstackJune 2026

Everything I Know About Distributed Systems I Learned at Costco

A Costco run as a full distributed-systems walkthrough: the membership card is authentication, the sample station is a rate limiter, the receipt checker is egress validation, the food court is a post-commit side effect, and the casket they'll ship to your door is microservice sprawl.

Read the post →
DEV.toSubstackJune 2026

I Built a Cyberpunk Cat RPG to Teach Production AI Architecture

The Neon Scratch Lounge is a playable cyberpunk RPG where the game runs as a visible distributed system. Every turn walks through RAG, structured retries and idempotency, execution guardrails, structured observability, and persistent state, so you watch the production-AI patterns instead of reading about them.

Read the post →
MediumMay 2026

Accountability Debt: The Hidden Cost in AI Code Generation

A 40,000-line, 200-file 'bugfix' PR from a non-technical co-founder who spent a weekend with an AI tool. Accountability debt is the gap between who captures the efficiency win and who owns the system when it breaks, and those are almost never the same person.

Read the post →
DEV.toMediumAugust 2025

Building a Serverless Dungeon Master Agent on AWS

A build log for an AI Dungeon Master that runs a persistent tabletop RPG on fully serverless AWS. Bedrock Agents does the storytelling, Lambda action groups handle the game mechanics, DynamoDB holds the memory, and CDK wires it all up for about $1-5 a month.

Read the post →
DEV.toMediumApril 2025

Getting Started with AWS: Tips That Actually Helped Me

Advice for anyone staring down 200-plus AWS services and not knowing where to start. Learn a small core first, build something real early, use the free tier without getting a surprise bill, and treat certs as a map rather than the destination.

Read the post →
DEV.toFebruary 2025

Global API Management with API Gateway and Route 53

Part 3 of the multi-region serverless series: putting regional API Gateway endpoints in more than one region and letting Route 53 send each caller to the closest healthy one, with health checks and failover routing for when a region goes dark.

Read the post →
DEV.toFebruary 2025

Deploying Serverless Functions Across Regions with AWS Lambda

Part 2 of the multi-region serverless series: getting the same Lambda deployed to several AWS regions and keeping it that way. Infrastructure-as-code with provider aliases, a CI/CD pipeline that ships to every region, and versions plus aliases for safe rollouts.

Read the post →
DEV.toFebruary 2025

Going Global with Serverless: Multi-Region Architectures on AWS

The opening piece of a series on running serverless apps across AWS regions. Deploying Lambda and API Gateway everywhere, latency-based routing with Route 53, DynamoDB Global Tables for replication, and the three tensions (consistency, complexity, cost) you take on to get there.

Read the post →
DEV.toJanuary 2025

15 Git Tips You Should Know

Fifteen Git commands that go past add, commit, and push: undoing a commit without losing work, partial stashes, interactive rebase, reflog branch recovery, git bisect, empty commits to poke CI, and aliases to save your fingers.

Read the post →
DEV.toJanuary 2025

Managing Secrets in an AWS Serverless Application

Where API keys and database credentials should live in a serverless AWS app. Secrets Manager vs SSM Parameter Store, fetching secrets at runtime from Lambda, and the habits (least-privilege IAM, KMS encryption, rotation, never logging secrets) that keep them safe.

Read the post →

More of my writing: DEV.to · Substack · Medium

Want a heads-up on new posts?

Subscribe on Substack →