Writing

Notes on building

Engineering, building with AI, and what it’s like to change careers in your thirties. Occasionally, something from a previous life.

Engineering

Idempotency: Why Retrying a Request Shouldn't Duplicate It

Payment webhooks retry more than you'd think. Here's what breaks when your endpoint assumes every call is the first one, and the pattern that fixes it for good.

AI & Process

Authentication vs. Authorization: The Bug AI Won't Catch

An AI-built endpoint checked for a valid session and called it done — it never checked who owned the resource. Here's the one-line fix that closes the gap.

AI & Process

The Rate Limit I Forgot to Ask For

I asked an AI to build a public lottery-results endpoint. It worked perfectly in the browser and had no idea what happens at a thousand requests a second.

AI & Process

Your AI Assistant Has No Security Instinct

I asked an AI to connect my app to a database. It hardcoded the key in plain text, because I never told it not to. Here's the one-line fix.

Career

I never got a tech job by applying on LinkedIn

Every door I've walked through in tech opened through a person, not an application form. Here's the first one.

Engineering

Notes from three weeks building mobile with Expo

Coming from years of web, here's what surprised me about Expo, React Native and NativeWind, and where the honeymoon ends.

AI

I asked an AI the same question twice

Two weeks apart, same question, completely different answer. The model didn't change. One line in my instructions did.

Engineering

Your image optimizer uploads your files. Mine doesn't

Most online image tools quietly send your files to a server. WebAssembly means they don't have to anymore.

Engineering

Two weeks on Module Federation before a single feature

We spent two weeks wiring up Module Federation before writing any product code. It was the right call, and here's what actually ate the time.

AI & Process

Software doesn't start in the editor

Vibe coding feels great until you realize you built something fast that you never actually thought through. The fix isn't less AI. It's planning first.

Product

From "how do I build it" to "what problem does it solve"

The smallest shift that changed how I work: thinking about the user's problem before the implementation.

AI & Process

Context engineering and sub-agents beat vibe coding

Vibe coding falls apart the moment a project gets serious. Here's the workflow I landed on instead, and the repo I open-sourced from it.

From a previous life

Working out on an empty stomach: myths and facts

From a previous life as a sports scientist. Does training fasted actually burn more fat, or is it just gym folklore?

Career

Why I started coding at 34

Once your career feels settled, starting over sounds reckless. I did it anyway. These are the reasons that pushed me in.