SOHIL LADHANI
Menu ▾
About
About
Optimistic vs Pessimistic Concurrency: Locks vs Versions
2026-02-27
Two-Phase Commit: The Original Distributed Transaction
2026-02-26
Input Validation and Abuse Prevention in Distributed Systems
2026-02-25
Approximate Counting: HyperLogLog and Count-Min Sketch
2026-02-24
SLOs and Error Budgets: When Good Enough is a Number
2026-02-23
Base62 Encoding: Turning Numbers into Short Strings
2026-02-22
Distributed ID Generation: Snowflake and Friends
2026-02-21
Event Aggregation: When 47 Notifications Become One
2026-02-20
Social Graphs at Scale: Storing Relationships in MySQL
2026-02-19
Relevance Scoring: Why Chronological Order Breaks Down
2026-02-18
Pre-Signed URLs: Uploading Files Without Touching Your Servers
2026-02-17
Presence Systems: Who’s Online and How You Know
2026-02-16
Cursor-Based Pagination: Why Offset Breaks at Scale
2026-02-15
Fan-Out Strategies: Write-Time vs Read-Time
2026-02-14
WebSockets vs Long Polling: Choosing a Real-Time Transport
2026-02-13
Read Replicas: Hidden Consistency Traps
2026-02-12
Thundering Herd
2026-02-11
Structured Logging in Distributed Systems
2026-02-10
Database Migrations Without Downtime
2026-02-09
Tail Latency: The P99 Problem
2026-02-08
Ordering Guarantees in Event-Driven Systems
2026-02-07
Dead Letter Queues
2026-02-06
Making Consumers Idempotent
2026-02-05
Exactly-Once Delivery is a Lie
2026-02-04
Graceful Shutdown: Dying Without Dropping Requests
2026-02-03
Timeouts: The Hardest Easy Problem
2026-02-02
Distributed Locks: When One Process Must Win
2026-02-01
Connection Pooling: Why Opening Connections Is Expensive
2026-01-31
Multi-Level Caching: L1, L2, and Beyond
2026-01-30
Cache Stampede: When Expiry Causes Chaos
2026-01-29
< [
Newer posts
]
::
[
Older posts
] >