Writing on distributed systems, engineering culture, and the craft of building software — served through the lens of South Indian filter coffee.
Filter coffee is not instant. It is slow, deliberate, and demanding — ground fresh each morning, dripped through a steel percolator, served only when it is ready. That is the philosophy here. Every post starts from first principles. Every system design walks the trade-offs, not just the answers. Every idea is brewed until it is worth serving.
What the messaging program collects, and the commitment that mobile numbers are never shared with third parties for marketing or promotional purposes.
Program description, message frequency, cost, and how to get help or stop. A single-recipient program: I am the only person it ever messages.
Seven principles. One ritual. One way of thinking. Grind fresh. Drip slow. Find the ratio. A philosophy for the craft of software, written in the language of Madras mornings.
The full system design narrated — base62, Cassandra, layered cache. The reasoning behind every call.
On consistency as craft — why raising the floor matters more than chasing the ceiling.
Consistency, availability, partition tolerance — what you actually give up in practice, and when it matters.
Two storage engine strategies, two different bets on the workload. What Postgres and Cassandra chose — and why.
What to optimize for in years one through three. Hint: it is not the tech stack.
TinyURL, bit.ly — the canonical read-heavy redirect. Single-counter ID generation, base62 encoding, layered caching, and a Cassandra-vs-Postgres call that depends entirely on traffic shape.
Like URL shortener, but with content. Two-tier storage, inline vs. S3 split, expiry pipeline, and the moment object storage becomes the right answer.
Photo feed, fan-out on read vs write, and why your celebrity users break everything.
Hybrid fan-out, timeline cache, the eventual consistency you live with so the home feed loads in time.
Video chunks, ABR ladders, CDN economics, and where transcoding actually happens.
Persistent connections, presence, end-to-end encryption, and what "delivered" actually guarantees.
Geohashing, driver matching, and the cell-grid that makes "nearby" tractable.
Token bucket, sliding window, and where the limiter itself becomes the bottleneck.
Kafka-style logs, partitions, consumer groups, and the exactly-once myth.
Idempotency keys, two-phase commits, and the ledger that has to balance no matter what.
Cache-aside, write-through, stampede protection, and the CDN edge. Where the cache lives changes everything downstream.
Base62, Snowflake, UUIDs, Zookeeper-coordinated ranges. Pick by collision tolerance, ordering, and coordination cost.
Postgres vs Cassandra vs Redis — a decision framework that starts with access patterns, not popularity.
Every topic on the docket — what's published, what's drafting, and what's still just an interesting question. Updated as the notebook grows.