Skip to main content
All tags

system-design

7 posts

Using Branded Types to Prevent Unit Confusion in TypeScriptWhen a stringly-typed user ID and order ID look the same to the compiler, bad things happen. Branded types catch these at compile time.
typescriptsystem-design
1m
Four Redis Caching Strategies and When to Avoid ThemCache-aside, read-through, write-through, and write-behind — each solves a different problem. Here's where each one broke for us.
redisperformance
1m
Zero-Downtime Database Migrations: Our Rollback StrategyA failed migration doesn't have to mean downtime. Here's how we structure migrations so every change is safely reversible.
postgresqlinfrastructure
1m
Designing API Rate Limits: Token Bucket vs Sliding WindowToken bucket is simple. Sliding window is fair. Here's the trade-off we made and why we ended up keeping both.
system-designperformance
1m
A Circuit Breaker Implementation in Go That Saved Our UptimeWhen a downstream dependency started failing, the circuit breaker pattern prevented cascading failures across three services.
gosystem-design
1m
Context Cancellation in Go: Three Patterns I Use Every DayContext cancellation is easy to get wrong. Here are three patterns that survived production — and one that didn't.
gosystem-design
1m
Notes on DDIA Chapters 5-6: Replication and PartitioningReplication strategies are trade-offs between consistency, latency, and availability. Here's what I took away from Kleppmann's deep dive.
book-notessystem-design
1m