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
A modest proposal Another week, another npm supply chain attack. Yikes! People on hacker news are wringing their hands about what should be done. The problem seems dire. Apparently I couldn't help myself. At 2am the other night I woke up, staring at the ceiling. I couldn't stop thinking about
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 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
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
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
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
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
There's an old joke that computer science is a lie, because its not really about computers, and its not really a science. Funny joke. Everyone laughs, then someone says "Yeah but it sort of is about computers though, isn't it?". Feet shuffle awkwardly. Someone clears their throat and before you
Programming is close to godliness when you're deep in a problem, code is thought made real. In that space you stop existing as a person. You're just a conduit for creation. Squint at the right moment and you can catch them those sparkling cracks in reality at the corners of
On Friday I accepted a challenge to clone Reddit's /r/place in a weekend. And I did it, and its live, and its amazing: Being able to build this in a weekend isn't genius. Its possible because programming is made up of 2 activities: Making decisions (95%) Typing (5%) Reddit
I've written a fair bit over the last few months on other mediums (FB and Hackernews). I'm going to start collecting some of that content and reposting it here. From here: Performance of modern web apps is simply awful compared to their native counterparts by any measure. They load slowly
What is slack doing? The process was in the background when this happened. I wasn't even interacting with it - I was in a meeting. I only noticed because my laptop fans were whurring when I got back. Restarting slack seemed to fix it for now. But that's not abnormal
Part 1 - a history lesson The year is 1980. Last year RSI released Oracle V2, the world's first commercial SQL database for the PDP-11: At an unnamed bank you have rooms full of computers like the PDP-11, with specialized computer operators to keep them running. 'Dumb terminals' at people's
Why don't we compose databases the same way we compose our functions? We use mathematical operators to compose functions all the time. Most of the time we do it without even really thinking about it: y = op2(op1(x)) Or with chaining and more functions and stuff: complexOp = x =>