For us in the Northern Hemisphere, fall is in full swing. The weather is cooling, we’re spending more time indoors enjoying spiced drinks and preparing our late-October scares, and — would you look at that — another brave soul has entered our laboratory. Please welcome Fintan Halpenny, joining the Automerge team. Meanwhile, the rest of the lab has been busy building a synchronized heap for a collaborative live programming environment, finding new ways to share the flood of activity around Automerge, and coining a helpful new term for assessing how well programming languages fit a particular task.
When people write collaborative software, they usually communicate the state of a program over the network using some protocol. They might use something like REST to send API calls, or stream UDP packets with the state of a multiplayer game. I’m not aware of anyone implementing
In our ongoing Livelymerge project, we’re exploring what it feels like to put the entire state of a program into a shared collaborative database (
Livelymerge documents can be collaboratively edited, taken offline, synchronized, forked, or rewound. This leads to all kinds of exciting opportunities and difficult problems. In fact, in a meaningful sense, we’ve known this project was doomed from the outset.
Fans of systems in the Smalltalk lineage might recognize Livelymerge as a descendant of Lively
The ongoing project continues to explore the possibility-space by discovering (or creating) a problem and then trying to resolve it. If you’d like to learn more, you can see all the fun GIFs and thorny problems by browsing our ongoing series of Lab Notes.
Today, the Automerge project has five fulltime members and supports commercial, personal, and research users around the world. It’s an exciting time! We’re powering the upcoming version of Quarto (by Posit, creators of RStudio), bits of Automerge are being adopted into the brand new Coln proof database led by Martin Kleppmann.
Because there’s so much going on, we’ve started a new “This Month in Automerge” newsletter to try and make it easier to follow our work.
For example, in the July
We’ll keep syndicating the occasional highlight here, but you should subscribe
Nearly every general-purpose programming language is Turing complete. If you only care about what a language can do, they’re all the same. How it feels to use these languages is a different story. Each one makes some things easy and other things painful. Each gives you a different way to think about a problem, and some of those ways fit a given class of problems far better than others. Computational power tells you almost nothing about what a language is good for. What lab researcher Alex Warth cares about is the effective expressiveness of a language: how naturally it lets a programmer express solutions to a particular kind of problem, in practice.
Read more about the concept of effective expressiveness in Warth’s recent lab note.
That’s it for this edition of the Ink & Switch Dispatch. We’ll be back next month with another round of notes and news from the lab.