126: James Long - Building Distributed Local-First JavaScript Applications
In this episode, Adam talks to James Long (creator of Prettier) about building Actual, a local-first Electron application with no central database that syncs data peer-to-peer.
Topics include:
- How do you keep data synchronized between two different clients when all of the data is stored locally instead of in the cloud?
- Understanding conflict-free replicated data types and how they help when building distributed applications
- Diving deep into how messages are replayed across clients when network access becomes available to achieve consistent state
- Using a Merkle tree to efficiently compare the message store from two clients to know which messages need to be synchronized
- Considerations you need to make when structuring your data to enable eventual consistency
- What it might look like to move an app like Actual to an offline-first web app where you can't use things like SQLite
- DigitalOcean, get your free $50 credit at do.co/fullstack
- Cloudinary, sign up and get 300,000 images/videos, 10GB of storage and 20GB of monthly bandwidth for free