Skip to content
HomeVideosBooksBlogs
AllTop postsTopics
Podcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K
    M

    Martin Kleppmann

    martin.kleppmann.com · Personal blog · on HN since 2010

    Martin Kleppmann, author of Designing Data-Intensive Applications, writes on distributed systems, databases, local-first software, and formal verification.

    Visit blogRSSHN submissions
    Distributed SystemsDatabasesWriting & Thinking
    What HN says

    HN commenters recommend his book as a great primer, and cite his accounting article and his analysis of book royalties.

    Stats for nerds
    210HN people shared it
    107linked in comments
    6.3Kstory points
    Aug 2026last shared
    2016people per year2026

    Top posts on HN

    1. 1
      AI will make formal verification go mainstream
      16 people · 846 points · first shared 2025 · 431 comments on HN
    2. 2
      How to do distributed locking
      21 people · 659 points · first shared 2016 · 95 comments on HN
    3. 3
      Writing a book: is it worth it?
      7 people · 646 points · first shared 2020 · 287 comments on HN
    4. 4
      Accounting for Computer Scientists
      37 people · 560 points · first shared 2011 · 75 comments on HN
    5. 5
      CRDTs: The Hard Parts [video]
      5 people · 419 points · first shared 2020 · 124 comments on HN
    6. 6
      Please stop calling databases CP or AP
      20 people · 358 points · first shared 2015 · 51 comments on HN
    7. 7
      Improving the security of your SSH private key files
      5 people · 330 points · first shared 2013 · 101 comments on HN
    8. 8
      Making CRDTs Byzantine Fault Tolerant [pdf]
      3 people · 266 points · first shared 2022 · 40 comments on HN
    9. 9
      Having a launched product is hard
      1 person · 248 points · first shared 2010 · 60 comments on HN
    10. 10
      Using Bloom filters to efficiently synchronise hash graphs
      3 people · 222 points · first shared 2020 · 18 comments on HN

    What HN people wrote when they linked it

    • SinjoOct 2017

      It's been a long time since I looked into this: is there now a way to configure a cluster of Redis instances such that you won't lose messages on node failure? If not, all the nice at-least-once delivery (or "effectively once" when you add message dedupe) you get with something like Kafka/Kinesis/GCP PubSub is gone.

      If not, either people's messages don't matter /that/ much (which is fine, just not great for most of my usecases at the moment) or everyone's in for another round of "oh shit, where did the data go?"

      Edit: Just in case we end up in CP vs AP datastore wars, please go read https://martin.kleppmann.com/2015/05/11/please-stop-calling-databases-cp-or-ap.html

      At-least-once delivery requires neither CAP consistency (linearisability) nor CAP availability (any non-failed node must return a response in a non-infinite time), but is a very useful property!

    • mateusfreiraJan 2023

      Great improvements, performance was probably the major concern of automerge prev versions, I have begin reading about CRDTs and this is the correct movement field at the moment.

      Local first in my mind means your users can still work even if your server is down for a small amount of time for any reason, which means the users can also jump on an airplane and decide to review/update their price table or check out their sales commissions if they want.
      It benefits both sides of the software economy (users and providers)[1].

      I recommend the reading the paper from 2019 about local first it is not too academic and gives a good view of the challenges [2].

      [1] https://mateusfreira.github.io/@mateusfreira-2022-12-04-my-thoughts-on-local-first-software/
      [2] https://martin.kleppmann.com/papers/local-first.pdf

    • svatAug 2022

      There's another very nice description, with useful pictures, by Martin Blais (as part of the documentation of Beancount) at https://beancount.github.io/docs/the_double_entry_counting_method.html (example picture that I would say is the heart of the idea: https://beancount.github.io/docs/the_double_entry_counting_method/media/19e2cc49a057dfeea1cf5254610eab4c9a124488.png )

      Another one, with completely different graphs, is by Martin Kleppman at https://martin.kleppmann.com/2011/03/07/accounting-for-computer-scientists.html — despite the name ("Accounting for Computer Scientists"), on reflection / trying it out, I find it less useful than the Beancount one.

      (Both of these are actually linked in the second paragraph of the posted article, but they're independently worth mentioning / good.)

    • teleforceDec 2020

      Yes, it is one of the most entertaining and insightful articles I have read on computing and programming language for a long time.

      All the best for your new Oil shell, and I agree that we need to have similar to POSIX standard for distributed systems but it must put local-first software as the first class citizen [1].

      Personally I think the local-first software cannot happen soon enough given that what we have endured for the past 30 years with regard to inefficiency and drudgery of the web based applications.

      Just wondering about your thoughts on SDLang [2] as the type alternative to JSON, YAML etc, and lightweight alternative to XML?

      [1]https://martin.kleppmann.com/papers/local-first.pdf

      [2]https://sdlang.org/

    • he1d1Apr 2025

      While Git is great at asynchronous collaboration, its a bit clunky to try and work on the same commit with other devs or across devices. This is because Git tracks what changed, not how it changed.

      It'd be cool if you were on the same branch as somebody else, or another device, and your working directories could be synced. It'd also be cool for the commit history to be a bit richer, so you could see who, what and when for a change at a keystroke level.

      So I'm working on real-time sync for Git! I'd represent the working directory as a tree CRDT [1] and sync that through FUSE and p2p networking.

      Not sure whether this is actually a good idea! This is a POC :)

      [1] https://martin.kleppmann.com/papers/move-op.pdf

    • mtlynchJan 2026

      +1 to OP's book, which is the best beginner guide I've found for understanding Beancount / plaintext accounting.

      I was also confused about double-entry accounting for most of my life until I read the article, "Accounting for Computer Scientists"[0] by Martin Kleppman (author of Designing Data-Intensive Applications). It explains double entry accounting in a surprisingly accessible way be putting it in terms of graph theory. I don't even like graph theory that much or consider myself competent in it, but Kleppman's explanation was extremely effective.

      [0] https://martin.kleppmann.com/2011/03/07/accounting-for-computer-scientists.html

    Related

    Jeremy Kunjeremykun.com194 people

    A Programmer's Introduction to Mathematics

    Jeremy Kun
    Personal · last shared 2026
    Florianflorian.github.io15 people

    That XOR Trick (2020)

    Florian
    Personal · last shared 2026
    Martin Fowlermartinfowler.com1.5k people

    Monolith First (2015)

    Martin Fowler
    Personal · last shared 2026
    John Regehrblog.regehr.org401 people

    Teaching C

    John Regehr
    Personal · last shared 2026
    Aphyraphyr.com551 people

    Hexing the technical interview (2017)

    Aphyr
    Personal · last shared 2026
    Gödel's Lost Letterrjlipton.wordpress.com185 people

    Mihai Pătraşcu 1982–2012

    Gödel's Lost Letter
    Personal · last shared 2021
    Christopher Meiklejohnchristophermeiklejohn.com51 people

    Towards a Type System for Containers and AWS Lambda to Avoid Failures [pdf]

    Christopher Meiklejohn
    Personal · last shared 2026
    David Krieseldkriesel.com117 people

    Xerox scanners and photocopiers randomly alter numbers in scanned documents

    David Kriesel
    Personal · last shared 2026