Martin Kleppmann @martin.kleppmann.com · 28/09/2026So happy to see this! Thank you for serving on the board! 090
Martin Kleppmann @martin.kleppmann.com · 28/09/2026Oh yes, I had seen that before, but thanks for the reminder! The details are here: github.com/dunhamsteve/...github.comnotesutils/notes.md at master · dunhamsteve/notesutilsUtilities 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/2026Indeed! 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/2026Turns 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/2026Notion 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.comHow Notion handles concurrent editing with CRDTsBuilding 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/2026Now even featured on TV! 😍 www.youtube.com/watch?v=Ktby...youtube.comDinky Doors on ITV News AngliaYouTube video by Dinky Doors 161
Martin Kleppmann @martin.kleppmann.com · 25/09/2026A 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.comThe Affine Plank Conjecture | Zaz BrownAn illustrated explanation of relative plank widths, an interactive visualization, and proofs for three planks. 1260
Martin Kleppmann @martin.kleppmann.com · 25/09/2026I 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.ioThree Lenses on CoordinationThree 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/2026Ok, 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/2026How 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/2026The $5,000 put in by the founders counts as capital too 110
Martin Kleppmann @martin.kleppmann.com · 17/09/2026As the designers describe it, "not in the least bit impractical" 000
Martin Kleppmann @martin.kleppmann.com · 17/09/2026There's a new Dinky Door in Cambridge! The cyclopunt – half cargo bike, half punt – best vehicle ever! www.dinkydoors.co.uk 4260
Reposted by Martin KleppmannJake Gold @jacob.gold · 12/09/2026There'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 KleppmannAutomerge @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.orgThis Month in Automerge: August '26Automerge 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/2026Interactive visualisation of the Raft consensus algorithm, linked with the pseudocode from my lectures — looks amazing! 1422
Martin Kleppmann @martin.kleppmann.com · 01/09/2026Oh this looks amazing. Instant impulse purchase 1283
Reposted by Martin KleppmannInk & Switch @inkandswitch.com · 31/08/2026Today 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.comIntroducing Patchwork-26YouTube video by Ink & Switch 39133
Martin Kleppmann @martin.kleppmann.com · 29/08/2026That’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 · 22/08/2026I 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/2026Conflict 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/2026With 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/2026Whether 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/2026Remarkably 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/20262. 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/2026Thus, 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/2026There 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 KleppmannCount Binface @countbinface.bsky.social · 11/08/2026An American interviewer asked me about my political beliefs. #VoteBinface 13040231068
Reposted by Martin KleppmannAutomerge @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
Reposted by Martin KleppmannNaomi Saphra @nsaphra.bsky.social · 09/08/2026I'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.netLife on the Uncanny Precipice | Naomi SaphraWe were wrong about the Uncanny Valley. 1026362
Martin Kleppmann @martin.kleppmann.com · 09/08/2026More details on the OpenAI/Hugging Face incident. Absolutely wild www.youtube.com/watch?v=87Dy...youtube.comBlack Hat USA 2026: The 'Breaking' News: The OpenAI–Hugging Face IncidentYouTube video by Black Hat 0362
Martin Kleppmann @martin.kleppmann.com · 07/08/2026Here’s a design doc: github.com/inkandswitch... — we need to write a more accessible introduction thoughgithub.com 020
Reposted by Martin KleppmannBrooklyn Zelenka @expede.wtf · 04/08/2026Excited 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.com06 · E2EE in the Local-First SettingExamining design considerations for developing cryptography for the local-first setting. 13710
Martin Kleppmann @martin.kleppmann.com · 04/08/2026An 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.blogThe end of the age of heroesAI will soon be better at math than any human. What does that mean? 1252
Martin Kleppmann @martin.kleppmann.com · 02/08/2026Hmmm, 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 KleppmannAutomerge @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.orgThis Month in Automerge: July '26Hexane v1 lands in Automerge, Subduction sync server hardening, a BeeKEM paper preprint, and more. 15312
Martin Kleppmann @martin.kleppmann.com · 31/07/2026My 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.comMartin Kleppmann — Local-first in an unstable worldYouTube video by Local-First Conf 311825
Martin Kleppmann @martin.kleppmann.com · 29/07/2026lol thank you IEEE for giving me a good laugh (CC @mweidner.bsky.social) 3191
Reposted by Martin KleppmannSimon Willison @simonwillison.net · 28/07/2026Hugging 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.coAnatomy of a Frontier Lab Agent Intrusion: A Technical Timeline of the July 2026 IncidentWe’re on a journey to advance and democratize artificial intelligence through open source and open science. 20447111
Martin Kleppmann @martin.kleppmann.com · 26/07/2026Yeah 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/2026Engineering 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 KleppmannBrooklyn 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/2026Very 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/2026There 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/2026Yes, 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
Reposted by Martin Kleppmanndan @danabra.mov · 17/07/2026ugh 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/2026Happy to supply the original Adobe Illustrator file to anyone who wants to modify/fix it 😆 240