Posts on system design — both the fundamentals (consistency, partitioning, replication, queues) and the worked-out problems (rate limiting, URL shorteners, distributed counters, chat, feeds). Practical writing that prepares you for interviews and for the day a design decision actually matters.
Image CDN design: on-demand transformations, format negotiation (AVIF/WebP), cache hierarchy, abuse mitigation, and the architecture that scales.
Practical EDA: when async events fit, outbox patterns, idempotency, dead letters, and an honest take on EDA’s costs vs benefits.
Practical system design interview: framework, capacity estimates, scaling patterns, and what senior engineers actually look for vs cargo-cult answers.
API rate limit UX: tier matrices, X-RateLimit headers, 429 + Retry-After, idempotency interaction, and how Stripe / GitHub do it.
Feed system design: pull (compute on read), push (fanout-on-write), hybrid for celebrities, ranking pipelines, and how feed systems scale.
Chat system design at every scale: message store, conversation index, WebSocket fanout, presence, read receipts, and offline delivery.
Search system at every scale: Postgres FTS for small apps, Elastic / OpenSearch for keyword scale, hybrid (BM25 + vectors) for modern relevance, and ranking discipline.
Payment system design from first principles: ledger, idempotency keys, reconciliation against PSP, retries, and how to keep money straight at scale.
URL shortener design: base62 keys, ID generation strategies, caching, analytics fanout, and how to handle a viral link gracefully.
Rate limiter design at scale: algorithms (token bucket vs sliding window), single-node vs distributed, Redis Lua, fair queueing, and operational concerns.