Short write-ups on specific engineering decisions — what the problem actually was, and why I built it the way I did.
Three buckets, not one hammer: force what's unsafe to leave, nudge everything else, and fail open when the update-checker itself can't reach the network. A version gate driven by Remote Config, and the release loop that keeps the gun holstered.
Read post →The first ten minutes of a slow-API investigation should be one command, not a meeting. The curl one-liner that turns 'it feels slow' into a number you can actually argue with.
The same number appeared twice on our admin dashboard, a hundred times apart. The bug was in the unstated unit nobody named.
No posts in this tag yet.
The first ten minutes of a slow-API investigation should be one command, not a meeting. The curl one-liner that turns 'it feels slow' into a number you can actually argue with.
Pull-quotes from the posts, rendered as images. Copy the link and post it anywhere — every card is a static file, so it'll load the same in five years.
“Pick the layer that owns retries. It owns the message. Everyone else: be quiet.”
“A migration that works on a fresh install tells you nothing. Only the upgrade path counts, and the database can prove it if you ask.”
“If a failure mode is going to be common in production, design for it as the default case, not the fallback case.”
“Every money value is stored in its smallest unit, and the unit is written in the type, not a comment.”
“An update gate is three buckets: force what's unsafe to leave, nudge what's worth moving, and default to letting everyone through when you can't prove otherwise.”
“The worst answer in performance work is “it was fine when I tested it”. It kills the conversation without moving it forward, and it's usually wrong because the slowness was never on your desk.”