Developer blog

Notes from debugging things that shouldn't have broken.

#react 7 min read

Debugging race conditions in async React state

Two setState calls, one stale closure, and an hour lost to a bug that only showed up in production. Here's how to actually find it.

#backend 5 min read

The HTTP 429 you deserve

Rate limiting isn't the API punishing you. It's the API telling you something true about your retry logic.

#devops 9 min read

How Docker layers actually work (and why your build is slow)

Your build is slow because you invalidate the cache on line 3 of every Dockerfile. Here's the order that actually matters.

#databases 6 min read

Why Postgres isn't using your index (a checklist)

You added the index. The query planner ignored it anyway. Run through this list before you file a bug report.