Benchmarking Token Bucket Rate Limiters
Implementing a distributed rate limiter with Redis? Three approaches: Lua scripts, multi-command client-side calculation, and WATCH optimistic locking. I benchmarked all three. Here’s what I found....
Implementing a distributed rate limiter with Redis? Three approaches: Lua scripts, multi-command client-side calculation, and WATCH optimistic locking. I benchmarked all three. Here’s what I found....
The hardest problem in device communication over MQTT is not delivery. It is semantic consistency under concurrency. Once you scale beyond a single service instance and a single stable device conne...
Every time someone asks why closing a channel twice panics, the real question is usually about ownership. A channel has exactly two states: open and closed. close(ch) flips a bit in the runtime ...
I recently spent some focused time reading PostgreSQL’s concurrency and locking documentation, and then mapping that understanding to how locks actually work in Spring JPA / Hibernate. This is not...
Needed to share my local dev server externally. LocalTunnel made it instant. What It Does LocalTunnel exposes your localhost to the internet with a public HTTPS URL. No config, no account need...
Had Bluetooth audio dropouts with my Sony speaker. Switching from AAC to SBC fixed it. The Problem Sony Bravia Theater U speaker kept stuttering and dropping connection on macOS. Audio would cu...
Switched Emacs Org mode LaTeX previews from ImageMagick to dvisvgm. Much sharper results. The Problem Default LaTeX preview in Org mode uses ImageMagick to convert equations to PNG. Results are...
Had a weird Docker issue today. Image built successfully but ran old code. Turned out to be stale cache layers. The Problem # Build succeeds docker buildx build -t myapp:latest . # [+] Building...
Switched to Rime for Chinese input on Arch Linux. Here’s my setup with the rime-ice dictionary. Install Rime Using iBus framework: sudo pacman -S ibus-rime Dictionary: rime-ice Instead of d...
If you’re using org-roam with Emacs 29 and experiencing slow database queries or timeout errors, there’s a simple but non-obvious fix: switch to Emacs 29’s built-in SQLite connector. This one-line ...