The Feynman Guide to the CAP Theorem
Distributed systems are the backbone of modern software. We want our systems to store massive amounts of data, run across hundreds of servers, and never go down. But there is a fun…
Opinions and hard-earned lessons about systems, teams, and engineering at scale.
Get deep-dive engineering guides and system design teardowns delivered straight to your inbox.
Powered by Substack. No spam, ever. Unsubscribe with one click.
Distributed systems are the backbone of modern software. We want our systems to store massive amounts of data, run across hundreds of servers, and never go down. But there is a fun…
Imagine a bustling corporate office in the 1990s. Every time the Sales department makes a deal, they have to physically walk a piece of paper over to the Accounting department. The…
The System Design Interview (SDI) is the ultimate Rorschach test for software engineers. Handed a blank whiteboard and a vague prompt like "Design Twitter," candidates reveal exact…
Have you ever tried to run a piece of software on a friend's computer, only for it to fail immediately? You scratch your head, look at your screen, and say those infamous words: …
System Design is often treated as a dark art, spoken of in hushed whispers of "high availability," "consistent hashing," and "distributed consensus." But at its core, system design…
Imagine you buy a brand-new, top-of-the-line sports car. But instead of driving it to work, you park it in your living room, sit in the driver's seat, and just honk the horn occasi…
Imagine you are the captain of a massive, state-of-the-art submarine. You have a general idea of where you need to go—say, a deep-sea research station thousands of miles away. Bu…
For many software developers, entering the world of Machine Learning (ML) feels like crossing a border into a foreign country where everyone speaks a different language. Instead of…
For many software engineers, the System Design Interview (SDI) is the ultimate panic room. You are given a blank whiteboard, a marker, and an incredibly vague, open-ended prompt: "…
Imagine you are running a busy restaurant completely by yourself. You have to welcome guests at the door, seat them, write down their order, run to the kitchen to cook the meal, se…
For over two decades, Java developers lived with a dirty secret. The language that championed encapsulation with private, protected, and public had a gaping hole at the architectur…
Every time you load a webpage, stream a movie on Netflix, or scroll through your social media feed, there is a silent, invisible system working behind the scenes to make it feel in…
Imagine you have just bought a brand new, state-of-the-art home theater system. The speakers are incredible, the TV is 8K, and the receiver is top-of-the-line. There is just one ma…
System Design isn't just about drawing boxes and arrows on a whiteboard. It's about predicting how things will inevitably break and engineering around those failures. When you sc…
Software Architecture often sounds like a mystical art practiced by gray-bearded wizards in ivory towers. In reality, it's just about making the hard decisions—the ones that are di…
You have almost certainly worked in a codebase that someone called a "microservices architecture" — and you have almost certainly thought: this is worse than a monolith. You are n…
Imagine walking into a library where the books have literally read themselves. They’ve absorbed every word, every comma, and every rhythmic cadence of human thought. But there’s …
Have you ever seen a senior engineer navigate a codebase with lightning speed, their hands never leaving the center of the keyboard, without a mouse in sight? They are likely using…
Have you ever wondered how ChatGPT or Claude seems to "understand" you? To many, it feels like magic. To others, it's just "fancy autocomplete." But if we peel back the layers an…
If you've been in software engineering long enough, you've likely encountered a codebase that feels impossible to understand. A simple feature request—like adding an urgent tag to …
Serverless is one of those buzzwords that gets thrown around constantly in modern software engineering. If you read the marketing materials, it sounds like some kind of magic that …
If you spend enough time around software engineers, you'll eventually hear a heated debate about Monoliths versus Microservices. People argue about them as if choosing the wrong on…
Performance is a product feature There is a mental model that corrupts how most engineering teams think about performance: > "Functional requirements first. Non-functional requir…
Modular monolith vs microservices: a practical guide The debate usually goes like this: > "We should move to microservices. Monoliths don't scale." Or the backlash: > "We shoul…