architecture Essential Reading: Normal Accidents — Why Complex, Tightly Coupled Systems Fail by Design josedacruz, September 18, 2026September 18, 2026 TL;DR: Charles Perrow’s Normal Accidents argues that in sufficiently complex, tightly-connected systems, catastrophic failures aren’t rare flukes caused by bad luck or careless operators — they are a structural inevitability the system was built to eventually produce. For anyone running distributed systems, that reframes “we had an outage” from a… Continue Reading
architecture The Cache Stampede: How One Expired Key Can Take Down Your Database josedacruz, September 18, 2026September 18, 2026 TL;DR: A cache stampede happens when a popular cached value expires and a flood of requests all miss the cache at the same instant, sending them straight to your database all at once. It is one of the few bugs that gets worse the more successful your caching strategy is…. Continue Reading
architecture The Dead Letter Queue Pattern: Why Nobody Ever Looks Inside It josedacruz, September 18, 2026September 18, 2026 TL;DR: A dead letter queue (DLQ) is just a holding pen for messages your system tried to process and failed. It’s not a fix by itself — it just moves the failure somewhere quieter. Whether you actually need one depends on how much it costs you to lose a message… Continue Reading
architecture Brooks’s Law: Why Adding Developers to a Late Project Makes It Later josedacruz, September 17, 2026September 17, 2026 TL;DR: Fred Brooks’s famous rule says that adding people to a late software project usually makes it later, not sooner. New hires need time and attention from the very people already doing the work, and every extra person adds more communication paths to manage. If a project is behind, cutting… Continue Reading
architecture Top 10 Trending GitHub Repos This Week (September 9 – September 15, 2026) josedacruz, September 17, 2026September 17, 2026 TL;DR: This week’s trending list is dominated by AI-agent tooling — skills, harnesses, and CLI utilities built specifically to make Claude Code, Codex, Cursor, and similar coding agents faster, less wasteful, and less prone to over-engineering. Four of the ten repos are JavaScript-based, and several are direct responses to pain… Continue Reading
architecture Designing a Real-Time Leaderboard: Why Sorted Sets Beat a SQL ORDER BY at Scale josedacruz, September 16, 2026September 16, 2026 TL;DR: A leaderboard looks like a simple feature — sort some scores, show the top N — but a plain SQL table falls over once you have millions of players updating scores in real time. The fix isn’t a bigger database, it’s a different data structure: a sorted set (like… Continue Reading
architecture The Saga Pattern: How to Undo a Transaction That Spans Five Services josedacruz, September 16, 2026September 16, 2026 TL;DR: A saga is how you handle a “transaction” that spans multiple services, since you can’t wrap them all in one database commit. Instead of one atomic rollback, you run a chain of local steps and, if something downstream fails, you undo the earlier steps with separate “compensating” actions. It’s… Continue Reading
architecture Designing a Webhook Delivery System: Why Your Retries Need an Idempotency Key josedacruz, September 13, 2026September 13, 2026 TL;DR: A webhook is just an HTTP POST your system sends to someone else’s server when something happens, but “just an HTTP POST” hides a lot of hard problems. Networks drop packets, receivers time out, and retries create duplicates — so a webhook delivery system that actually works needs retries… Continue Reading
architecture Designing a Distributed Counter: Why Global Counts Don’t Scale josedacruz, September 10, 2026September 10, 2026 TL;DR: A single database row that stores a count (likes, views, votes) works fine until enough people hit it at once — then it becomes a bottleneck that slows down or breaks your whole app. The fix isn’t a bigger database, it’s splitting the count into several pieces that get… Continue Reading
architecture The Bikeshed Effect: Why Your Team Argues More Over the Logging Library Than the Database Schema josedacruz, September 5, 2026September 5, 2026 TL;DR: Teams often spend more time debating small, easy-to-understand decisions (like which logging library to use) than big, complex ones (like a new database schema). This is called bikeshedding, and it happens because trivial topics are easy for everyone to have an opinion on, while complex ones are intimidating. The… Continue Reading