5000x faster CRDTs: An adventure in optimization

A few years ago I was really bothered by an academic paper. Some researchers in France put together a comparison showing lots of ways you could implement concurrent editing, using various CRDT and OT algorithms. And they benchmarked all of them. (Wow, yess!) Some algorithms worked reasonably well. But others…

I was wrong. CRDTs are the future

I saw Martin Kleppmann’s talk a few weeks ago about his approach to realtime editing with CRDTs, and I felt a deep sense of despair. Maybe all the work I’ve been doing for the past decade won’t be part of the future after all, because Martin’s…

Home is where the bits flow

We aren’t purely physical beings. Most of our day exists outside our body. Our minds slip out through our eyes, out into our screens. We become a different kind of organism, living in a weird symbiosis with reddit and whatsapp and gmail. When was the last time you noticed…

An API for data that changes over time

What do all these things have in common? RSS feeds Gamepads and MIDI devices An email client Filesystem watching (FSWatch, kqueue, ionotify, etc) Web based monitoring dashboards CPU usage on your local machine Kafka RethinkDB Changefeeds A Google Docs document Contentful's sync protocol Syntax highlighting as I type in my…

War over being nice

Quick question: Bob says something to James. James is upset and goes to have a cry about it. Who is responsible for James being upset? Is it Bob, for being mean? Or is it James, because he obviously has emotional development to do? If there's 100 points of responsibility, how…

A dozen ideas for a better Fortnite

Edit (2020): This was written before Fortnite became the battle royale game it is today. When I wrote this, "Fortnite classic" was the whole game. Epic went a totally different direction than I was thinking about. I've been playing a bunch of fortnite over the last week. Below is a…