programming

Rewriting Rust

The Rust programming language feels like a first generation product. You know what I mean. Like the first iPhone - which was amazing by the way. They made an entire operating system around multitouch. A smart phone with no keyboard. And a working web browser. Within a few months, we…

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…

ShareJS and ShareDB

This was posted on the sharejs & derby mailing lists and there's a great discussion there. I first wrote ShareJS hoping for a simple library on top of which people could build their own collaborative applications. I showed off the first working version in April 2012, running on NodeJS 0.…

Maps and Sets

One of the super useful new features of ES6 is Map, Set and its friends WeakMap and WeakSet. We've always had objects in javascript, but the reason why this is a big deal is that maps map based on an object reference, not just a string. Here's a few ways…