▲Writing
the.blog
These posts began as debugging notes, rollout plans, or questions that needed a better answer than the first one I found.
9 posts · filter:
august 2026
-
Redis keys need owners
A shared Redis instance had accumulated locks, claims, counters, and flags with no common ownership or expiry rules. A small registry turned those anonymous keys into named coordination primitives with explicit failure behavior.
-
Delayed delivery without unbounded queues
A fixed binary ladder turns arbitrary delivery delays into bounded RabbitMQ topology with message TTLs, dead-letter routing, and powers of two, without plugins.
june 2026
may 2026
-
What concurrent Ruby looks like, twelve years after the book
A cache benchmark exposed a serial bottleneck that no mutex explained. I went back through Ruby's thread model, then tested where Ractors, fibers, and atomic snapshots actually help.
-
Debugging Redis::CannotConnectError in Ruby
Redis connection timeouts kept arriving in short bursts while the infrastructure graphs stayed clean. One client path had silently dropped the configured timeout when it built a new connection.
-
Dynamic per-user Rails debug logs, scoped to the request
A production bug affected one user, but enabling debug for the whole application would have buried the useful lines. This request-scoped override expired on its own and left everyone else's logs alone.
-
Tuning Rails log levels per class, without a redeploy
A production issue needed debug logs from one Rails class, not the whole fleet. The override had to work at runtime, expire cleanly, and cooperate with existing logger behavior.
-
Rolling PgBouncer without dropped queries
PgBouncer rollouts kept severing client sockets even though Kubernetes drained the pods correctly. The fix came from aligning client connection lifetimes with the proxy's shutdown window.
april 2026
No posts match that tag yet.