Top all-time · #5945
Lu’s blog
Personal blog · blog.the-pans.com · on HN as aptxkidprogrammingsystems
Lu’s blog is a personal blog at blog.the-pans.com about programming and systems. Since 2018, 13 different Hacker News readers have linked it 85 times, most often “Notes on the FoundationDB Paper with Additional Proof of Correctness”. It is still writing: the last post was on 2026-10-31, and you can follow it by feed.
Too few sampled comments (4) to say how often HN recommends it.?
Why HN links it
HN readers link Lu's blog for distributed-systems notes, including a breakdown of the FoundationDB paper, an explainer on Paxos, and a post arguing against pointing out errors immediately.
Summarised by Claude from a sample of 4 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.
Learnings on system and programming.
Most-linked posts?
- Notes on the FoundationDB Paper with Additional Proof of Correctness7 people · 7 mentions · first linked 2021-07-21
- Learning C++ Memory Model from a Distributed System's Perspective (2021)3 people · 3 mentions · first linked 2021-10-23
- Understanding Paxos as a Read-Modify-Write Transaction2 people · 3 mentions · first linked 2019-09-16
- Caching partially materialized views consistently2 people · 2 mentions · first linked 2023-04-06
- Discover Paxos via 2PC (2019)2 people · 2 mentions · first linked 2019-03-26
- DNS – The First Distributed Database2 people · 2 mentions · first linked 2021-10-19
- Don’t point out something wrong immediately2 people · 2 mentions · first linked 2022-02-16
What Hacker News says?
Vector clocks give a partial ordering. FDB version stamps give a total ordering by having a single process issue them for the entire cluster. There's a good breakdown here: https://blog.the-pans.com/notes-on-the-foundationdb-paper/
Comment linking /notes-on-the-foundationdb-paper/
on “Apple built iCloud to store billions of databases”Submitted Don’t point out something wrong immediately as a story · 371 points
HN discussionI actually really like the linked article ( https://blog.the-pans.com/wrong/ ), I think it is supportive of ideation and prototyping. It really made me glad to read that. When learning a new language or environment, there's no place to get an expert to pair program through it (or is there?) Baby steps always look wrong, especially when the baby keeps falling over. It's just part of growing up. Case in point I recent…
Comment linking /wrong/
on “Don’t point out something wrong immediately”Submitted How and why the Relational Model works for databases as a story · 178 points
HN discussionhttps://blog.the-pans.com/when-and-how-to-invalidate-cache/ Does this include the "actual cache consistency/invalidation strategy" you were referring to?
Comment linking /when-and-how-to-invalidate-cache/
on “Cache made consistent: Meta’s cache invalidation solution”Submitted Notes on the Amazon Aurora Paper as a story · 139 points
HN discussionI basically wrote a separate blog just for replying to this https://blog.the-pans.com/when-and-how-to-invalidate-cache/ .
Comment linking /when-and-how-to-invalidate-cache/
on “Cache made consistent: Meta’s cache invalidation solution”Submitted Every Computer System Is a State Machine as a story · 71 points
HN discussionMore details can be found at https://blog.the-pans.com/when-and-how-to-invalidate-cache/
Comment linking /when-and-how-to-invalidate-cache/
on “Cache made consistent: Meta’s cache invalidation solution”Submitted Type Erasure in C++ Explained as a story · 43 points
HN discussionI wrote a separate blog post focusing on when and how to invalidate cache and how it can be done – https://blog.the-pans.com/when-and-how-to-invalidate-cache/ .
Comment linking /when-and-how-to-invalidate-cache/
on “Cache made consistent: Meta’s cache invalidation solution”Submitted Discover Paxos via 2PC (2019) as a story · 24 points
HN discussionhttps://blog.the-pans.com/when-and-how-to-invalidate-cache/ Does this address the "knowing what needs invalidation" part?
Comment linking /when-and-how-to-invalidate-cache/
on “Cache made consistent: Meta’s cache invalidation solution”Submitted Learning C++ Memory Model from a Distributed System's Perspective (2021) as a story · 18 points
HN discussionhttps://blog.the-pans.com/when-and-how-to-invalidate-cache/ Does this address the "knowing what needs invalidation" part?
Comment linking /when-and-how-to-invalidate-cache/
on “Cache made consistent: Meta’s cache invalidation solution”Submitted When and How to Invalidate Cache as a story · 16 points
HN discussionTheir slide [1] looks like just a reworded version of yours [2]? [1]: https://martinfowler.com/articles/patterns-of-distributed-sy... [2]: https://blog.the-pans.com/paxos-explained/#paxos
Comment linking /paxos-explained/
on “Paxos”Submitted Global Data Locality – Why and How as a story · 11 points
HN discussionI am also a huge fan of Lamport. Paxos is so concise and of such beauty that once you understand it, all other consensus protocols seem just different ways of phrasing Paxos with additional features (e.g. membership changes, make it into a log, etc.). Paxos is the smallest, most elegant consensus building block that I have seen so far. Raft's protocol covers a much bigger area than just consensus (it gives you a log…
Comment linking /understanding-paxos/
on “Paxos”Submitted Paxos Replication vs. Leader-Follower Replication as a story · 6 points
HN discussionThis sounds like splitting hairs. Taking news as an example, when you say a piece of news propagates, are you implying push or pull? It doesn't imply either. The news spreads, either by someone telling someone else (push), or someone asking someone else (pull). Technically, a distributed database/cache at DNS scale, pure push-based invalidation is just not practical. I wrote a post about DNS invalidation earlier htt…
Comment linking /dns/
on “DNS doesn't “propagate””Submitted Notes on the FoundationDB Paper with Additional Proof of Correctness as a story · 4 points
HN discussionThis is actually what makes handling the distributed system in a single computer easier – everything crashing together makes it an easier problem. E.g. you have multiple CPU cachelines, caching different values of a main memory location. And there are different cache coherence protocols to keep them sane. But cache coherence protocols never need to worry about the failure mode when one cacheline is temporarily unava…
Comment linking /cpp-memory-model-as-a-distributed-system/
on “Your computer is a distributed system”Submitted Caching partially materialized views consistently as a story · 3 points
HN discussionhttps://blog.the-pans.com/notes-on-the-foundationdb-paper/ is one: > Client (notice not Proxy) caches uncommitted writes to support read-uncommitted-writes in the same transaction. This type of read-repair is only feasible for a simple k/v data model. Anything slightly more complicated, e.g. a graph data model, would introduce a significant amount of complexity. Caching is done on the client, so read queries can byp…
Comment linking /notes-on-the-foundationdb-paper/
on “Datomic Is Now Free”Submitted Fault Tolerant Generic Distributed Critical Section Is Impossible as a story · 3 points
HN discussionhttps://blog.the-pans.com/understanding-paxos/ It’s much easier to understand Paxos as a read-modify-write transaction. I wrote to Lamport about it. Here’s part of Lamport’s reply It’s nice that you found an apparently new way to explain Paxos, but don’t expect everyone to find it helpful. “Grasping” or “intuitively understanding” an algorithm really means giving the reader a warm fuzzy feeling, and different people…
Comment linking /understanding-paxos/
on “Notes on Paxos”Submitted Fast SQL from Schemaless Ingestion as a story · 3 points
HN discussionThe tweet is certainly loaded, hence the point of this HN post lol. First of all there's std::function, which uses Type Erasure https://blog.the-pans.com/type-erasure/ . It means std::function<void(int)> can be the type of anything callable that takes an int and returns void (lambda, function pointer, object with operator() overload, etc.). Notice they are of different types! Hence Type Erasure. How std::function ma…
Comment linking /type-erasure/
on “Why C++ Is Terrifying”Submitted ABI from the Ground Up as a story · 3 points
HN discussion