Top all-time · #225
Marc Brooker's Blog
Personal blog · brooker.co.za/blogprogrammingsystemsai
Marc Brooker's Blog is a personal blog at brooker.co.za about programming, systems and ai. Since 2012, 210 different Hacker News readers have linked it 462 times, most often “The power of two random choices”. It is still writing: the last post was on 2026-10-23, and you can follow it by feed.
Sometimes recommended · 8 of 40 sampled comments recommend it?
Why HN links it
HN readers link Marc Brooker's blog for technical posts on distributed systems, databases and AWS, such as DynamoDB, CAP and latency.
- Recommended for · 8 comments
- Called an excellent writeup, a favourite, a good write-up and a good blog for distributed systems technical info.
Summarised by Claude from a sample of 40 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.
Most-linked posts?
- The power of two random choices11 people · 15 mentions · first linked 2017-04-19
- Making Redis into a high-durability database9 people · 9 mentions · first linked 2024-04-29
- Dynamo, DynamoDB, and Aurora DSQL8 people · 8 mentions · first linked 2025-08-16
- Metastability and Distributed Systems7 people · 9 mentions · first linked 2021-05-25
- Fixing retries with token buckets and circuit breakers7 people · 7 mentions · first linked 2022-03-01
- The Four Hobbies, and Apparent Expertise6 people · 7 mentions · first linked 2023-04-22
- What's Easy Now? What's Hard Now? How AI Is Changing Software Development6 people · 6 mentions · first linked 2026-05-18
- Why Aren't We Sieve-Ing?6 people · 6 mentions · first linked 2023-12-15
- NoSQL: The Baby and the Bathwater5 people · 7 mentions · first linked 2023-01-31
- Caches, Modes, and Unstable Systems5 people · 5 mentions · first linked 2021-08-27
What Hacker News says?
For anyone interested in the differences between dynamo (the early internal-only KV store described in this paper) and DynamoDB (The AWS service), Marc Brooker has an excellent writeup https://brooker.co.za/blog/2025/08/15/dynamo-dynamodb-dsql.h...
Comment linking /blog/2025/08/15/dynamo-dynamodb-dsql.html
on “AWS Acquires DuckLabs”Submitted It's always TCP_NODELAY as a story · 884 points
HN discussionTrivially, by never allowing either half of a partition to make progress while the partition is in place. Since the CAP theorem, by itself, doesn't put a cap(oof) on latency, it is valid to consider a system CA, if it if always available to listen to requests while partitioned, but never able to fulfill them. This, of course, is effectively useless in practice, and is dependent on an infinite buffer of pending opera…
Comment linking /blog/2014/07/16/pacelc.html
on “Introducing Cloud Spanner, a Global Database Service”Submitted It's Always TCP_NODELAY as a story · 463 points
HN discussion> just run the code given by the copilot and check that it works You've misunderstood my point. I'm not discussing the ability to check whether the code works as _I_ believe it should (as you say, that's easy to verify directly, by execution and/or testing); I'm referring to asking about intention or motivation of design choices by an author. Why this data structure rather than that one? Is this unusual or unidiomat…
Comment linking /blog/2020/06/23/code.html
on “GitHub cuts AI deals with Google, Anthropic”Submitted Learning to Build Distributed Systems as a story · 389 points
HN discussionNot at all! I'm reminded of this blog post: https://brooker.co.za/blog/2023/04/20/hobbies.html
Comment linking /blog/2023/04/20/hobbies.html
on “Medieval”Submitted Two Years with Rust as a story · 265 points
HN discussion- Mark Brooker :: https://brooker.co.za/blog long time lead engineer @ AWS blogging technical info on distributed systems - Chris Wellons :: https://nullprogram.com/ lots of interesting explorations in code
Comment linking /blog
on “Ask HN: Favorite Blogs by Individuals?”Submitted Why Aren't We Sieve-Ing? as a story · 256 points
HN discussionAwesome. Looking forward to additional content. If possible, would be great to get Mark Brooker (Principal at AWS) to provide some notes on bridging the gap between CAP theorem and how AWS relaxes constraints for building out Elastic Block Storage (EBS). https://brooker.co.za/blog/2014/07/16/pacelc.html
Comment linking /blog/2014/07/16/pacelc.html
on “Things to know about databases”Submitted The DynamoDB Paper as a story · 256 points
HN discussionAWS Lambda lead Articles about distributed systems and more http://brooker.co.za/blog/
Comment linking /blog/
on “Ask HN: What are good solo developer blogs that you enjoy reading?”Submitted Do Skis Get Blunt? as a story · 253 points
HN discussion> Which context switches? With the Go model, I have exactly one thread per CPU, no context switches. Not in the user application model you were describing. Those threads would need to coordinate and communicate (for example, back to the user interface), and that implies context switches. Unless you're thinking of a strictly isolated thread-per-core design ( https://mechanical-sympathy.blogspot.com/2011/09/single-wri…
Comment linking /blog/2014/12/06/random.html
on “Speed of Rust vs. C”Submitted Formal Methods: Just Good Engineering Practice? (2024) as a story · 211 points
HN discussionThe language I want is a specification language (a bit like Pluscal or P) which allows me to specify distributed system behavior, then ask both correctness (liveness/safety) questions and quantitative behavior questions. I wrote a bit about it here: https://brooker.co.za/blog/2022/06/02/formal.html
Comment linking /blog/2022/06/02/formal.html
on “Six programming languages I’d like to see”Submitted Make your program slower with threads as a story · 203 points
HN discussionThe fun thing about control theory in CS is that (in my experience) it's far easier to build accurate simulations or even run scaled down experiments than it would be in a physical setting. See articles like [1] or any of Marc Brooker's [2] blog for inspiration [1] https://medium.com/yandex/good-retry-bad-retry-an-incident-s... [2] https://brooker.co.za/blog/2022/04/11/simulation.html
Comment linking /blog/2022/04/11/simulation.html
on “Systems ideas that sound good but almost never work”- ot · 2024-06-21
Submitted Formal methods: Just good engineering practice? as a story · 179 points
HN discussion (Founder here) Managed cloud offerings for streaming limit ordered throughput pretty low, e.g. Kinesis at 1 MiBps, Redpanda serverless at 1 MiBps, Confluent's even higher-end clusters at 10-20 MiBps IIRC. If you really need ordering, this can indeed be a limit. S2 lets you push 125 MiBps currently, and we may grow that. Another factor is how many ordered streams you can have. Typically a few thousand at most with th…
Comment linking /blog/2024/04/25/memorydb.html
on “Introducing S2”Submitted Code only says what it does as a story · 170 points
HN discussionDSQL only uses Postgres for the query processor layer, so it doesn't require a replication library within postgres itself. Definitely NOT from DSQL. > We’re not using any of the storage or transaction processing parts of PostgreSQL, but are using the SQL engine, an adapted version of the planner and optimizer, and the client protocol implementation. [1] Rather, DSQL seems to do its region replication using the distr…
Comment linking /blog/2024/12/06/inside-dsql-cap.html
on “Pgactive: Postgres active-active replication extension”Submitted Make your program slower with threads (2014) as a story · 152 points
HN discussionDSQL does use distributed transactions to offer active-active alongside strong consistency and isolation guarantees. Here's how: https://brooker.co.za/blog/2024/12/05/inside-dsql-writes.htm...
Comment linking /blog/2024/12/05/inside-dsql-writes.html
on “Pgactive: Postgres active-active replication extension”Submitted What Does a Database for SSDs Look Like? as a story · 142 points
HN discussionWorth mentioning that Dynamo (the classic 2007 paper) and DynamoDB (the modern AWS product) have fairly little in common architecturally. For DynamoDB, check out https://www.usenix.org/conference/atc22/presentation/elhemal... https://www.usenix.org/conference/atc23/presentation/idziore... and my analysis of the differences here https://brooker.co.za/blog/2025/08/15/dynamo-dynamodb-dsql.h...
Comment linking /blog/2025/08/15/dynamo-dynamodb-dsql.html
on “Distributed Systems Classics (2017)”Submitted The power of two random choices as a story · 139 points
HN discussionBasically, many people convinced themselves that the formalization of CAP means that systems need to choose between highly available and strongly consistent, and hence chose eventual consistency. This is, partially, because Gilbert and Lynch define "availability" to mean "available to all clients, even those on a minority side of a partition". The much more useful "available to a majority of clients" is achievable a…
Comment linking /blog/2024/07/25/cap-again.html
on “Distributed Systems Classics (2017)”Submitted Let's consign CAP to the cabinet of curiosities as a story · 135 points
HN discussion