-

·
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,…
-

·
Dependency Updates Without the Hype
Most production incidents start as a small assumption nobody wrote down. Our on-call rotation improved the day we deleted half of the alerts. The rollback plan should exist before the rollout plan is approved. Getting started Logs answer questions you knew to ask; traces answer the ones you did not. The fastest query is the…
-

·
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…
-

·
Observability Without the Hype
Feature flags are debt with an expiration date you must actually enforce. Tests are documentation that fails loudly when it goes stale. The rollback plan should exist before the rollout plan is approved. A small example If the error message does not say what to do next, it is half an error message. We measured…
-

·
Why Background Jobs Matter More Than You Think
We measured first, and the bottleneck was not where anyone expected. Tests are documentation that fails loudly when it goes stale. Naming things well saved us more time than any framework migration. Getting started Every retry needs a budget, otherwise it is just a slower outage. Tests are documentation that fails loudly when it goes…
-

·
A Practical Guide to Rate Limiting
A boring deploy pipeline is a feature, not a lack of ambition. If the error message does not say what to do next, it is half an error message. Security is mostly about saying no to defaults that were convenient in 2010. What worked Caches are easy to add and surprisingly hard to remove. Most…
-

·
Background Jobs Without the Hype
A boring deploy pipeline is a feature, not a lack of ambition. Logs answer questions you knew to ask; traces answer the ones you did not. The fastest query is the one you never send, but the second fastest has a good index. Lessons Feature flags are debt with an expiration date you must actually…
-

·
Monorepos Without the Hype
Caches are easy to add and surprisingly hard to remove. The best architecture diagram is the one the new hire can redraw from memory. The fastest query is the one you never send, but the second fastest has a good index. Context Logs answer questions you knew to ask; traces answer the ones you did…
-

·
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…
-

·
Caching in Small Teams
Latency percentiles tell a story that averages politely hide. We wrote the migration twice: once to learn, once to ship. Caches are easy to add and surprisingly hard to remove. Details The rollback plan should exist before the rollout plan is approved. A boring deploy pipeline is a feature, not a lack of ambition. If…
-

·
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…
-

·
Debugging API Versioning at 3 a.m.
Our on-call rotation improved the day we deleted half of the alerts. Security is mostly about saying no to defaults that were convenient in 2010. Tests are documentation that fails loudly when it goes stale. Context Caches are easy to add and surprisingly hard to remove. The fastest query is the one you never send,…