Designing data-intensive applications

This week I finished reading Martin Kleppmann’s Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems. Most of the concepts were familiar – consensus algorithms, replication, publish/subscribe – but it’s been over a decade since I was into those subjects, and I felt like I’d lost touch with them. The fundamentals are much the same, but there are many more variations and freely-available implementations than there were ten years ago. The emergence of conflict-free replicated data types (CRDTs), the mainstream acceptance of dataflow programming, and the wider use of event sourcing in distributed systems are particularly exciting developments.

Kleppmann’s book led me to his work at Ink & Switch on local-first sofware, which shares some common ground with the Solid web decentralization project. Ruben Verborgh has written eloquently on the latter in a series of blog posts, which I’ve also caught up on recently.

Ink & Switch has a number of other fascinating projects, including Capstone, “an experimental tool for creative professionals to develop their ideas”, which feels like an answer to Bret Victor’s ideas on “Media for Thinking the Unthinkable”.

I find myself drawn to the idealism on display in these projects, and not just the technology. I’m heartened that these people are thinking about the “Big Here and Long Now”, beyond market opportunities and local maxima.