Sign in

Martin Kleppmann

@martin.kleppmann.com
34K followers 468 following 1.1K posts

Associate Professor at @cst.cam.ac.uk, researching decentralised systems and security protocols. Advisor to the Bluesky team. Wrote “Designing Data-Intensive Applications” (O’Reilly). he/him

PostsRepliesMedia
Martin Kleppmann @martin.kleppmann.com · 28/09/2026
So happy to see this! Thank you for serving on the board!
090
Martin Kleppmann @martin.kleppmann.com · 28/09/2026
Oh yes, I had seen that before, but thanks for the reminder! The details are here: github.com/dunhamsteve/...
github.com
notesutils/notes.md at master · dunhamsteve/notesutils
Utilities for extracting notes from Notes.app. This repository is lightly maintained and mainly exists to serve as documentation and starting point for your own scripts. - dunhamsteve/notesutils
021
Martin Kleppmann @martin.kleppmann.com · 28/09/2026
Indeed! Great to see CRDTs so mainstream now. My wish is that @obsidian.md implements CRDTs next, since their current merging of edits from different devices is rather unreliable 😄
050
Martin Kleppmann @martin.kleppmann.com · 28/09/2026
Turns out that having an API of functions that only take a string as argument, and return another string, is really useful if you want to call it across the JavaScript/Wasm boundary
120
Martin Kleppmann @martin.kleppmann.com · 28/09/2026
Notion wrote a nice blog post on how they use CRDTs, including our Peritext algorithm for rich text! This must be one of the largest CRDT deployments out there? www.notion.com/en-gb/blog/h...
notion.com
How Notion handles concurrent editing with CRDTs
Building a CRDT-based rich-text system that merges concurrent edits across Notion blocks—without losing anyone’s work
312513
Martin Kleppmann @martin.kleppmann.com · 27/09/2026
Now even featured on TV! 😍 www.youtube.com/watch?v=Ktby...
youtube.com
Dinky Doors on ITV News Anglia
YouTube video by Dinky Doors
161
Martin Kleppmann @martin.kleppmann.com · 25/09/2026
A researcher I'm working with in Cambridge, @zazbrown.com, just used AI and Lean to prove the Affine Plank Conjecture, an open problem for the last 75 years! (To be precise, he proved a special case not proven before; the general conjecture is still open.) zazbrown.com/research/pap...
zazbrown.com
The Affine Plank Conjecture | Zaz Brown
An illustrated explanation of relative plank widths, an interactive visualization, and proofs for three planks.
1260
Martin Kleppmann @martin.kleppmann.com · 25/09/2026
I only just found this post by @joehellerstein.bsky.social from February on how waiting, ordering, and commitment in distributed systems are all ways of looking at the same underlying idea: coordination. Good post, matches with how I think about it jhellerstein.github.io/blog/three-s...
jhellerstein.github.io
Three Lenses on Coordination
Three Sets of Specs (for Staying in Spec) In the last post I talked about how systems formalisms are like sculpting with a chisel: we remove behaviors we don’t…
0383
Martin Kleppmann @martin.kleppmann.com · 20/09/2026
Ok, so in general you end up building a tree? That seems like it should work. On your image there may be a typo though: on the right-hand blue arrow, should the second occurrence of “A2:A1” be “A2:A3”?
111
Martin Kleppmann @martin.kleppmann.com · 20/09/2026
How do you handle the case of concurrent insertions at the same positions being assigned the same fractional index? Just appending a clientID to sort them seems to fall down when you subsequently insert between two chars with the same fractional index — what index do you pick then?
110
Martin Kleppmann @martin.kleppmann.com · 18/09/2026
The $5,000 put in by the founders counts as capital too
110
Martin Kleppmann @martin.kleppmann.com · 17/09/2026
As the designers describe it, "not in the least bit impractical"
000
Martin Kleppmann @martin.kleppmann.com · 17/09/2026
There's a new Dinky Door in Cambridge! The cyclopunt – half cargo bike, half punt – best vehicle ever! www.dinkydoors.co.uk
A piece of miniature street art with the feet of people walking by out-of-focus in the foreground. The sculpture is a punt (a long flat boat) with the front and rear wheels of a cargo bike attached at both ends. The punt is loaded with parcels.The cyclopunt from a perspective where you can see a bit of the street scene as well. It's located in Rose Crescent in central Cambridge.
4260
Reposted by Martin Kleppmann
Jake Gold @jacob.gold · 12/09/2026
There's no slowing down frontier models by regulation that wouldn't lead to regulatory capture. But we could simply force all AI model companies to release their model weights openly. It's the world's data after all and nothing would slow their funding/progress more effectively and universally.
1125442
Reposted by Martin Kleppmann
Automerge @automerge.org · 02/09/2026
🗞️ The August 2026 edition of This Month in Automerge is out! Check out what's new in the core libraries the last days of summer, and a few projects from the community that caught our eye 👀 automerge.org/blog/2026-au...
automerge.org
This Month in Automerge: August '26
Automerge 3.4.1, sturdier sync servers, a new access control guide, and news from around the ecosystem.
0205
Martin Kleppmann @martin.kleppmann.com · 02/09/2026
Interactive visualisation of the Raft consensus algorithm, linked with the pseudocode from my lectures — looks amazing!
1422
Martin Kleppmann @martin.kleppmann.com · 01/09/2026
Oh this looks amazing. Instant impulse purchase
1283
Reposted by Martin Kleppmann
Ink & Switch @inkandswitch.com · 31/08/2026
Today we're officially sharing the "Introducing Patchwork-26" video from Lab Day at this year's @localfirstconf.com We bring you the first look at Patchwork-26, the latest in our ongoing effort to realize Malleable Software, Universal Version Control, and Local-First Software.
youtube.com
Introducing Patchwork-26
YouTube video by Ink & Switch
39133
Martin Kleppmann @martin.kleppmann.com · 29/08/2026
That’s a good point, thank you! I guess one way of handling this case is to allow a read to return once either a read repair to a quorum has completed or a majority of replicas have responded with the latest value, whichever happens first. That should be safe.
130
Martin Kleppmann @martin.kleppmann.com · 27/08/2026
That RAM figure seems way too high
180
Martin Kleppmann @martin.kleppmann.com · 22/08/2026
I suggest checking out sections 3 and 5–7 of my lecture notes, which discuss this in more detail: www.cl.cam.ac.uk/teaching/252...
cl.cam.ac.uk
130
Martin Kleppmann @martin.kleppmann.com · 22/08/2026
Conflict resolution in the context of a register is fairly easy: last write wins just needs a logical timestamp attached to every write. You can get more fancy than that depending on requirements
130
Martin Kleppmann @martin.kleppmann.com · 22/08/2026
With a register, if a write fails it’s indeterminate whether it took effect or not. It’s not like an aborted transaction, it’s more like a transaction where you requested a commit but then the network got interrupted while waiting for confirmation, so you don’t know whether it got committed or not.
120
Martin Kleppmann @martin.kleppmann.com · 22/08/2026
Whether receiving two different values from two replicas satisfies r=2 depends on how you define your quorums. The whole point of this section in the book is that for linearisability it’s not sufficient, but IIRC some distributed DBs simply return a value without waiting for read repair.
100
Martin Kleppmann @martin.kleppmann.com · 21/08/2026
Remarkably quiet — in our case road noise is much louder than the heat pump so we never notice it. Also, if you have your windows open that probably means it’s fairly warm, so the heat pump won’t be doing much anyway.
130
Martin Kleppmann @martin.kleppmann.com · 17/08/2026
2. The correct value is the one with the greatest timestamp, not necessarily the one returned by a majority. It’s not a majority vote! You could easily end up with situations where there is no majority for any value, eg. 3 replicas each return a different value.
140
Martin Kleppmann @martin.kleppmann.com · 17/08/2026
Thus, when you get inconsistent responses from 2 replicas, a common solution (eg. in ABD) is not to wait, but to do a read repair, where the newer value is written back to the replica with the older one.
210
Martin Kleppmann @martin.kleppmann.com · 17/08/2026
There are many different quorum systems, so it’s hard to make general statements. But it does seem like you have some misconceptions here. 1. Waiting for all 3 replicas to respond is not viable because one replica might be down and never respond. Tolerating unavailability is the point of quorums.
120
Reposted by Martin Kleppmann
Count Binface @countbinface.bsky.social · 11/08/2026
An American interviewer asked me about my political beliefs. #VoteBinface
13040231068
Reposted by Martin Kleppmann
Automerge @automerge.org · 12/08/2026
📅👀 The next set of community calls are posted to the Luma. Excited to see everyone there (and we'll also have This Month in Automerge in between) Register here: luma.com/automerge
0115
Martin Kleppmann @martin.kleppmann.com · 12/08/2026
My fist as pinhole camera
Shadow of my raised fist against a wall. In the hole left between the fingers is the crescent of a partial (90%) solar eclipse
522219
Reposted by Martin Kleppmann
Naomi Saphra @nsaphra.bsky.social · 09/08/2026
I've been unsettled lately when reading messages and papers. It feels like I'm dissociating. Everything seems a bit alien, even if it's completely human. I've had a realization: When our simulations finally exited the Uncanny Valley, they brought the Uncanny with them.
nsaphra.net
Life on the Uncanny Precipice | Naomi Saphra
We were wrong about the Uncanny Valley.
1026362
Martin Kleppmann @martin.kleppmann.com · 09/08/2026
More details on the OpenAI/Hugging Face incident. Absolutely wild www.youtube.com/watch?v=87Dy...
youtube.com
Black Hat USA 2026: The 'Breaking' News: The OpenAI–Hugging Face Incident
YouTube video by Black Hat
0362
Martin Kleppmann @martin.kleppmann.com · 07/08/2026
Here’s a design doc: github.com/inkandswitch... — we need to write a more accessible introduction though
github.com
020
Reposted by Martin Kleppmann
Brooklyn Zelenka @expede.wtf · 04/08/2026
Excited to have a ✨ guest post ✨ from @djwyen.bsky.social in our @inkandswitch.com Keyhive lab notes! The local-first setting is new to a lot of cryptographers; here Derek shares some of his insights working on the BeeKEM paper, cross-fork security (CFS), and fundamental protocol design tradeoffs 🐝
inkandswitch.com
06 · E2EE in the Local-First Setting
Examining design considerations for developing cryptography for the local-first setting.
13710
Martin Kleppmann @martin.kleppmann.com · 04/08/2026
An optimistic post on the role of human mathematicians (and scientists in general) in the age of AI www.noahpinion.blog/p/the-end-of...
noahpinion.blog
The end of the age of heroes
AI will soon be better at math than any human. What does that mean?
1252
Martin Kleppmann @martin.kleppmann.com · 02/08/2026
Hmmm, thanks for highlighting this. I can’t remember exactly what we had in mind here. May the “do this” was supposed to refer to the general pattern of applying updates in batches, and not the more specific point of immediately reflecting writes in subsequent queries. We should rephrase this.
120
Reposted by Martin Kleppmann
Automerge @automerge.org · 31/07/2026
🆕 We're trying something new: here's the first ever This Month in Automerge 🗞️✨ Check out what's been happening in the core libraries, and a few projects in the ecosystem! automerge.org/blog/2026-ju...
automerge.org
This Month in Automerge: July '26
Hexane v1 lands in Automerge, Subduction sync server hardening, a BeeKEM paper preprint, and more.
15312
Martin Kleppmann @martin.kleppmann.com · 31/07/2026
My talk at @localfirstconf.com is up, in which I argue that local-first has a role to play in improving the resilience of democratic societies in an era of geopolitical tensions. I'm pretty happy with how this talk turned out www.youtube.com/watch?v=--Ru...
youtube.com
Martin Kleppmann — Local-first in an unstable world
YouTube video by Local-First Conf
311825
Martin Kleppmann @martin.kleppmann.com · 29/07/2026
lol thank you IEEE for giving me a good laugh (CC @mweidner.bsky.social)
BibTeX export of one of my papers from IEEE Xplore. The keywords field contains some plausible terms, but also some inexplicably odd ones, including "Dairy products"
3191
Reposted by Martin Kleppmann
Simon Willison @simonwillison.net · 28/07/2026
Hugging Face just published a highly detailed technical account of OpenAI's accidental cyberattack on their systems - it's wild how sophisticated this was: huggingface.co/blog/agent-i... Wrote up some of my own notes here: simonwillison.net/2026/Jul/28/...
huggingface.co
Anatomy of a Frontier Lab Agent Intrusion: A Technical Timeline of the July 2026 Incident
We’re on a journey to advance and democratize artificial intelligence through open source and open science.
20447111
Martin Kleppmann @martin.kleppmann.com · 26/07/2026
Yeah I almost didn’t post it because the LLM idioms were so irritating. But I thought the ideas were sound
120
Martin Kleppmann @martin.kleppmann.com · 26/07/2026
Engineering management after the cost of code collapsed: “Investing in machine-checkable correctness is now among the highest-leverage infrastructure work an org can fund” karimjedda.com/engineering-...
813225
Reposted by Martin Kleppmann
Brooklyn Zelenka @expede.wtf · 22/07/2026
📃🐝✨ Excited to share a preprint about BeeKEM, a decentralized / local-first variant of MLS's TreeKEM (group E2EE) that we designed at @inkandswitch.com. Huge thanks to our coauthors for the writeup and empirical analysis — even we were pleasantly surprised by the performance results 📊
eprint.iacr.org
57215
Martin Kleppmann @martin.kleppmann.com · 18/07/2026
Very likely that some convergent evolution happened here, and that different people independently came up with similar ideas. We’re very happy to give credit to others who have contributed to developing the concepts and practice of this field.
120
Martin Kleppmann @martin.kleppmann.com · 18/07/2026
There was a bunch of interesting implementation work, such as CouchDB, which we discussed in more depth in the essay, and from whose community I believe “offline-first” originated. But no existing technology at the time did what we wanted, hence we argued for a new thing.
110
Martin Kleppmann @martin.kleppmann.com · 18/07/2026
Yes, we were aware of offline first, but calling it a “movement” overstates it: as far as I can remember, at the time there were maybe three superficial blog posts and a conference talk about offline-first. There just wasn’t much prior work worth talking about at the time, besides the name.
100
Martin Kleppmann @martin.kleppmann.com · 18/07/2026
github.com/ept/bluesky-...
github.com
020
Reposted by Martin Kleppmann
dan @danabra.mov · 17/07/2026
ugh web is so complicated. that certificate authority looks quite centralized to me. and that CDN might end up expensive to run at scale. and do we really need another standard? just use email
314513
Martin Kleppmann @martin.kleppmann.com · 17/07/2026
Happy to supply the original Adobe Illustrator file to anyone who wants to modify/fix it 😆
240