Operational Interrupts: What Kills Productivity Isn't the Workload, It's Fragmented Time
· tech · 10 min read · 📚 Google SRE — Reading Notes #17
The on-call post covered "how to design alerts and who carries the pager"; the toil post covered "th…
103 posts translated into English so far. For the complete list, including posts still only in Chinese, see Start here.
· tech · 10 min read · 📚 Google SRE — Reading Notes #17
The on-call post covered "how to design alerts and who carries the pager"; the toil post covered "th…
· tech · 13 min read · 📚 Google SRE — Reading Notes #16
The previous fifteen posts almost all talked about "the service is already live; how do we make it m…
· tech · 21 min read · 📚 Re:Building a Live-Commerce Platform from Zero #21
This series started with the journey of one comment and ran for twenty chapters. The finale adds no …
· tech · 32 min read · 📚 Re:Building a Live-Commerce Platform from Zero #20
First, something nineteen chapters never mentioned: every one of us took a pay cut to join. What the…
· tech · 25 min read · 📚 Re:Building a Live-Commerce Platform from Zero #19
The last chapter ended by saying this team's end was nearer than anyone thought. This chapter starts…
· tech · 22 min read · 📚 Re:Building a Live-Commerce Platform from Zero #18
The system's story closed with the last chapter; the remaining chapters are about the people who bui…
· tech · 26 min read · 📚 Re:Building a Live-Commerce Platform from Zero #17
A detour into the least glamorous topic here: product images. "Isn't that just file upload?" — this …
· tech · 21 min read · 📚 Re:Building a Live-Commerce Platform from Zero #16
In the plan this chapter was called "the three ledgers: stock, orders, payments", and it was going t…
· tech · 26 min read · 📚 Re:Building a Live-Commerce Platform from Zero #15
The last chapter was how the peak hits; this one is about the person fighting it. There was no such …
· tech · 25 min read · 📚 Re:Building a Live-Commerce Platform from Zero #14
The transaction and operations stories are done; the next few chapters are about things that cut acr…
· tech · 21 min read · 📚 Re:Building a Live-Commerce Platform from Zero #13
Let's state the threat model first. In this system, calling an order in the comments holds stock imm…
· tech · 22 min read · 📚 Re:Building a Live-Commerce Platform from Zero #12
What "a notification system" looks like in a textbook: a notification service, a message queue, a te…
· tech · 38 min read · 📚 Re:Building a Live-Commerce Platform from Zero #11
An oversell explodes and a payment failure shouts; a miscalculated discount makes no sound at all. A…
· tech · 30 min read · 📚 Re:Building a Live-Commerce Platform from Zero #10
Permissions are something I'll certify as one of the parts we didn't get right: rebuilt three times,…
· tech · 18 min read · 📚 Re:Building a Live-Commerce Platform from Zero #9
The first eight chapters were the skeleton of a transaction: comments in, stock held, money collecte…
· tech · 24 min read · 📚 Re:Building a Live-Commerce Platform from Zero #8
The money is in; time to ship. This chapter is where the system meets the physical world — comments,…
· tech · 21 min read · 📚 Re:Building a Live-Commerce Platform from Zero #7
The last chapter aggregated orders into three layers; now we have to collect the money. Payments are…
· tech · 27 min read · 📚 Re:Building a Live-Commerce Platform from Zero #6
The last stop on the transaction spine: how an order travels from cart to order. Comments made it in…
· tech · 27 min read · 📚 Re:Building a Live-Commerce Platform from Zero #5
With comments parsed and orders hung off an identity, the main line reaches the heart: stock. This s…
· tech · 25 min read · 📚 Re:Building a Live-Commerce Platform from Zero #4
The FSM in the last chapter worked out "who bought what" — except that "who" is only a string of dig…
· tech · 42 min read · 📚 Re:Building a Live-Commerce Platform from Zero #3
With the big picture and the opening move in place, here's the first battle on the main line: how on…
· tech · 15 min read · 📚 Re:Building a Live-Commerce Platform from Zero #2
With the big picture laid out, and before we get into the battles over comments and stock, let's ope…
· tech · 22 min read · 📚 Re:Building a Live-Commerce Platform from Zero #1
This is a new series, and the first war story on this blog. At a previous company I built a live-str…
· tech · 13 min read · 📚 Designing Data-Intensive Applications — Reading Notes #12
The final chapter. The first eleven took storage, replication, partitioning, transactions, consensus…
· tech · 12 min read · 📚 Designing Data-Intensive Applications — Reading Notes #11
Batch processes data that has "all arrived"; streaming processes data that "keeps coming". Much of t…
· tech · 12 min read · 📚 Designing Data-Intensive Applications — Reading Notes #10
Part II held consistency together inside a single system; Part III's theme switches to data flowing …
· tech · 16 min read · 📚 Designing Data-Intensive Applications — Reading Notes #9
The previous post concluded that no single node's judgment can be trusted, so truth can only be deci…
· tech · 13 min read · 📚 Designing Data-Intensive Applications — Reading Notes #8
The previous post ended on a hook: once a system spans several machines, even "locks" and "validatio…
· tech · 12 min read · 📚 Designing Data-Intensive Applications — Reading Notes #7
I laid the foundations of transactions in the SQL series: ACID's emphasis is on the I, the three ano…
· tech · 13 min read · 📚 Designing Data-Intensive Applications — Reading Notes #6
Replication keeps the same data on several machines; partitioning (also called sharding) splits the …
· tech · 12 min read · 📚 Designing Data-Intensive Applications — Reading Notes #5
Into Part II, and data starts crossing machines. The first move is replication: the same data on sev…
· tech · 12 min read · 📚 Designing Data-Intensive Applications — Reading Notes #4
The previous post was about how data gets onto disk. This one is about a problem that's easier to un…
· tech · 12 min read · 📚 Designing Data-Intensive Applications — Reading Notes #3
The previous post chose the data model. This one drills to the very bottom: how does a database actu…
· tech · 12 min read · 📚 Redis — Learning Notes #12
Redis can serve as a messaging system too, but it has two completely different things for it, and us…
· tech · 12 min read · 📚 Redis — Learning Notes #11
Three things are often lumped together that actually solve completely different problems: pipelining…
· tech · 13 min read · 📚 Redis — Learning Notes #10
The single-thread post said one Redis's bottleneck is memory and the network. When one machine can't…
· tech · 12 min read · 📚 Redis — Learning Notes #9
The previous post's replication gave you copies, but left a big hole: when the master dies, nobody t…
· tech · 11 min read · 📚 Redis — Learning Notes #8
However fast one Redis is, it has ceilings on memory and traffic, and when it dies the data hangs in…
· tech · 14 min read · 📚 Redis — Learning Notes #7
When several processes or machines compete for the same resource (only one may decrement stock or ru…
· tech · 15 min read · 📚 Kubernetes — Learning Notes #14
Every previous post taught you to write YAML, but practice has an unavoidable pain: the same app goe…
· tech · 16 min read · 📚 Kubernetes — Learning Notes #13
The biggest slice of the CKA is troubleshooting (30%), but it's really not new knowledge — it's the …
· tech · 13 min read · 📚 Kubernetes — Learning Notes #12
The previous eleven posts all stood in the position of "using the cluster". This one moves to "build…
· tech · 15 min read · 📚 Kubernetes — Learning Notes #11
The previous ten posts were about making things "run and be reachable". This one switches dimension:…
· tech · 17 min read · 📚 Kubernetes — Learning Notes #10
Service and Ingress were about "how traffic finds a service", but underneath sits a more basic, more…
· tech · 13 min read · 📚 Kubernetes — Learning Notes #9
The fourth post gave short-lived Pods a fixed address, the Service, but left two loose ends: first, …
· tech · 20 min read · 📚 Kubernetes — Learning Notes #7
The second post covered how the Scheduler picks a node for a Pending Pod in two steps: filter first …
· tech · 13 min read · 📚 Kubernetes — Learning Notes #6
Pods are short-lived and disposable — self-healing swaps them out at any moment. But some things mus…
· tech · 11 min read · 📚 Redis — Learning Notes #6
Using Redis as a cache, the classic pattern is cache-aside: a read checks the cache first, returns o…
· tech · 12 min read · 📚 Kubernetes — Learning Notes #5
Over the previous posts you've learned to deploy an app and expose it as a service. But a real app i…
· tech · 12 min read · 📚 Redis — Learning Notes #5
Use Redis as a cache and sooner or later you hit two questions: how does a key with a TTL get cleare…
· tech · 14 min read · 📚 Redis — Learning Notes #4
"Redis is an in-memory database; lose power and all the data's gone" — that line is half right, half…
· tech · 12 min read · 📚 Google SRE — Reading Notes #15
cron may be the simplest piece of infrastructure there is: time's up, run a job. Anyone who has writ…
· tech · 11 min read · 📚 Redis — Learning Notes #3
The first post said one reason Redis is fast is "single thread + no locks". That sounds backwards — …
· tech · 12 min read · 📚 Redis — Learning Notes #2
The previous post said the soul of Redis is "data structures" — so this one opens the toolbox. Ninet…
· tech · 14 min read · 📚 Redis — Learning Notes #1
Most people first meet Redis as a "cache" — throw database query results in, grab them next time. Th…
· tech · 22 min read · 📚 Google SRE — Reading Notes #14.5
The most thrilling kind of job change is joining a company that builds almost everything itself: no …
· tech · 19 min read · 📚 Google SRE — Reading Notes #14
A group of machines agreeing on "one thing" — who is the leader? who holds this lock? what's the lat…
· tech · 11 min read · 📚 Google SRE — Reading Notes #13
Between a user sending a request and the request being handled, it passes through two layers of load…
· tech · 15 min read · 📚 Google SRE — Reading Notes #12
Automation, release engineering, simplicity — at first glance three unrelated topics. Put them side …
· tech · 10 min read · 📚 Google SRE — Reading Notes #11
Beyond the "service stays up" reliability covered so far, a data system has a more fundamental layer…
· tech · 9 min read · 📚 Google SRE — Reading Notes #10
The first post said the goal of reliability is "keeps working when things go wrong". But one kind of…
· tech · 10 min read · 📚 Google SRE — Reading Notes #9
This post is about something usually filed under "the developers' business" that is in fact a corner…
· tech · 9 min read · 📚 Google SRE — Reading Notes #8
Earlier you learned on-call mitigation and systematic troubleshooting — but that's "one person again…
· tech · 8 min read · 📚 Google SRE — Reading Notes #1.5
With the previous post covering what SRE is, let me deal with a comparison that gets asked constantl…
· tech · 11 min read · 📚 Google SRE — Reading Notes #7
The previous post was about finding the root cause — but then what? The postmortem turns one expensi…
· tech · 10 min read · 📚 Google SRE — Reading Notes #6
The previous post said on-call stops the bleeding first; but once the bleeding has stopped, you stil…
· tech · 11 min read · 📚 Google SRE — Reading Notes #5
The previous post ended on a line: when should you wake someone up? This post answers it. It's reall…
· tech · 10 min read · 📚 Designing Data-Intensive Applications — Reading Notes #2
The first post covered what a data system should pursue (reliable, scalable, maintainable). This one…
· tech · 13 min read · 📚 SQL: I Thought I Knew It #12
The finale of the whole SQL series. The previous 11 posts all ran on single-node PostgreSQL; this on…
· tech · 19 min read · 📚 SQL: I Thought I Knew It #11
Everything so far has been "how one query runs fast" (indexes, EXPLAIN); this post switches dimensio…
· tech · 10 min read · 📚 SQL: I Thought I Knew It #10
The previous post left a question: is the index actually being used? The answer is in EXPLAIN. This …
· tech · 7 min read · 📚 SQL: I Thought I Knew It #9
A change of topic: the engine and performance. The first thing to understand is indexes — why adding…
· tech · 14 min read · 📚 Designing Data-Intensive Applications — Reading Notes #1
Starting a new series: reading Martin Kleppmann's Designing Data-Intensive Applications (DDIA). It c…
· tech · 10 min read · 📚 SQL: I Thought I Knew It #8
Following the previous post's "ranges", this one covers two traps time sets in SQL — both rooted in …
· tech · 10 min read · 📚 SQL: I Thought I Knew It #7
With window functions learned, this post is their most beautiful real-world use. "How many consecuti…
· tech · 12 min read · 📚 Google SRE — Reading Notes #4
The previous post said the SLI is the measured reliability number — and those numbers come from moni…
· tech · 12 min read · 📚 Google SRE — Reading Notes #3
The first post said SRE's core is "operations can be engineered". The toil in this post is the thing…
· tech · 11 min read · 📚 SQL: I Thought I Knew It #6
Duplicate data is almost daily life in data engineering: a pipeline rerun imports twice, CDC pulls i…
· tech · 11 min read · 📚 SQL: I Thought I Knew It #5
The previous post's GROUP BY collapses each group into one row. But you've surely met this need: "I …
· tech · 12 min read · 📚 Google SRE — Reading Notes #2
The previous post said error budget = 1 − SLO. But what is an SLO? And how does it differ from the o…
· tech · 13 min read · 📚 Google SRE — Reading Notes #1
"SRE" is a hot word, and it's very often misread as "slightly more advanced operations" or "a sysadm…
· tech · 12 min read · 📚 SQL: I Thought I Knew It #4
Everyone can write GROUP BY, but nearly everyone has also been stopped by column "..." must appear i…
· tech · 13 min read · 📚 SQL: I Thought I Knew It #3
The previous post's LEFT JOIN pads NULL for rows that matched nothing. That NULL is this post's subj…
· tech · 16 min read · 📚 SQL: I Thought I Knew It #2
The previous post made clear that "the order you write isn't the order it runs". This post uses the …
· tech · 13 min read · 📚 Kubernetes — Learning Notes #4
The second post left a question open: if Pods are short-lived and get a new IP when replaced, how do…
· tech · 11 min read · 📚 SQL: I Thought I Knew It #1
When you write SQL, you almost always start with SELECT. Write it long enough and it feels natural t…
· tech · 10 min read · 📚 Fundamentals of Data Engineering — Reading Notes #11
Eleven chapters in, one last question: what will the future of data engineering look like? The book'…
· tech · 15 min read · 📚 Kubernetes — Learning Notes #3
The first post gave the soul (the reconcile loop), the second gave the atom (the Pod). But in practi…
· tech · 12 min read · 📚 Kubernetes — Learning Notes #2
The previous post covered the soul of K8s: you declare a desired state, and the reconcile loop keeps…
· tech · 13 min read · 📚 Kubernetes — Learning Notes #1
Many people find Kubernetes (K8s) hard because they're buried from day one under kubectl, a pile of …
· tech · 12 min read · 📚 Fundamentals of Data Engineering — Reading Notes #10
Past serving, the lifecycle still has one undercurrent running through the whole thing that hasn't b…
· tech · 13 min read · 📚 Fundamentals of Data Engineering — Reading Notes #9
The previous chapters walked through the source, storage, ingestion, modeling — but all that work on…
· tech · 14 min read · 📚 Fundamentals of Data Engineering — Reading Notes #8
Data has been ingested and stored; the next question is: how do you turn it into something genuinely…
· tech · 15 min read · 📚 Fundamentals of Data Engineering — Reading Notes #7
The source produces data, storage is ready to receive it, and the action in between that moves data …
· tech · 21 min read · 📚 Fundamentals of Data Engineering — Reading Notes #6
The previous post was about data being born at the source. The first thing after it's born: where do…
· tech · 24 min read · 📚 Kubernetes — Learning Notes #8
Airflow handles "when, and in what order" jobs run; Spark handles "getting the big data computed". W…
· tech · 18 min read · 📚 Fundamentals of Data Engineering — Reading Notes #5
The first four chapters were the big picture — the lifecycle, architecture, choosing technology. Fro…
· tech · 15 min read · 📚 Fundamentals of Data Engineering — Reading Notes #4
The previous post was about architecture (the why); this chapter asks next: under that architecture,…
· tech · 13 min read · 📚 Fundamentals of Data Engineering — Reading Notes #3
The previous post gave the whole lifecycle (what data is doing); this chapter asks — how do you desi…
· tech · 10 min read · 📚 Fundamentals of Data Engineering — Reading Notes #2
The previous post gave the definition; this chapter gives the skeleton of the whole book — the data …
· tech · 12 min read · 📚 Fundamentals of Data Engineering — Reading Notes #1
I'm starting a new series, reading Joe Reis and Matt Housley's Fundamentals of Data Engineering. The…
· tech · 7 min read
This is a concept note — a judgment call I keep reusing, split out into its own post so other articl…
· tech · 14 min read
In one sentence: the Medallion architecture is a design convention that splits data into three layer…