-

·
Debugging Code Review at 3 a.m.
Naming things well saved us more time than any framework migration. We measured first, and the bottleneck was not where anyone expected. The rollback plan should exist before the rollout plan is approved. What didn’t Logs answer questions you knew to ask; traces answer the ones you did not. Naming things well saved us more…
-

·
Ten Notes on Feature Flags
Naming things well saved us more time than any framework migration. Most production incidents start as a small assumption nobody wrote down. We measured first, and the bottleneck was not where anyone expected. Lessons Latency percentiles tell a story that averages politely hide. Small pull requests get real reviews, large ones get approvals. The rollback…
-

·
API Versioning in Small Teams
Most production incidents start as a small assumption nobody wrote down. Small pull requests get real reviews, large ones get approvals. The fastest query is the one you never send, but the second fastest has a good index. The short version We measured first, and the bottleneck was not where anyone expected. Latency percentiles tell…
-

·
Type Systems: Mistakes I Keep Seeing
Caches are easy to add and surprisingly hard to remove. Every retry needs a budget, otherwise it is just a slower outage. We measured first, and the bottleneck was not where anyone expected. What worked Naming things well saved us more time than any framework migration. The fastest query is the one you never send,…
-

·
A Practical Guide to Code Review
Naming things well saved us more time than any framework migration. Tests are documentation that fails loudly when it goes stale. Security is mostly about saying no to defaults that were convenient in 2010. What didn’t If the error message does not say what to do next, it is half an error message. We measured…
-

·
Rate Limiting: Mistakes I Keep Seeing
A boring deploy pipeline is a feature, not a lack of ambition. Every retry needs a budget, otherwise it is just a slower outage. The rollback plan should exist before the rollout plan is approved. Details A boring deploy pipeline is a feature, not a lack of ambition. Feature flags are debt with an expiration…
-

·
Debugging Database Indexes at 3 a.m.
Logs answer questions you knew to ask; traces answer the ones you did not. We wrote the migration twice: once to learn, once to ship. The rollback plan should exist before the rollout plan is approved. The short version Our on-call rotation improved the day we deleted half of the alerts. If the error message…
-

·
Code Review Without the Hype
The fastest query is the one you never send, but the second fastest has a good index. Our on-call rotation improved the day we deleted half of the alerts. If the error message does not say what to do next, it is half an error message. Getting started The fastest query is the one you…
-

·
Background Jobs in Small Teams
The best architecture diagram is the one the new hire can redraw from memory. If the error message does not say what to do next, it is half an error message. The rollback plan should exist before the rollout plan is approved. Going further Logs answer questions you knew to ask; traces answer the ones…
-

·
Ten Notes on Load Testing
Our on-call rotation improved the day we deleted half of the alerts. The best architecture diagram is the one the new hire can redraw from memory. Naming things well saved us more time than any framework migration. Getting started Feature flags are debt with an expiration date you must actually enforce. Small pull requests get…
-

·
Ten Notes on API Versioning
A boring deploy pipeline is a feature, not a lack of ambition. The rollback plan should exist before the rollout plan is approved. If the error message does not say what to do next, it is half an error message. What didn’t If the error message does not say what to do next, it is…
-

·
Debugging Caching at 3 a.m.
Logs answer questions you knew to ask; traces answer the ones you did not. The best architecture diagram is the one the new hire can redraw from memory. We measured first, and the bottleneck was not where anyone expected. Context Logs answer questions you knew to ask; traces answer the ones you did not. Tests…