126: James Long - Building Distributed Local-First JavaScript Applications

Full Stack Radio

Episode | Podcast

Date: Wed, 23 Oct 2019 14:10:00 +0000

<p>Topics include:</p><ul> <li>How do you keep data synchronized between two different clients when all of the data is stored locally instead of in the cloud?</li> <li>Understanding conflict-free replicated data types and how they help when building distributed applications</li> <li>Diving deep into how messages are replayed across clients when network access becomes available to achieve consistent state</li> <li>Using a Merkle tree to efficiently compare the message store from two clients to know which messages need to be synchronized</li> <li>Considerations you need to make when structuring your data to enable eventual consistency</li> <li>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</li> </ul><p>Sponsors:</p><ul> <li> <a href="https://www.digitalocean.com/?refcode=74a1c5d63dac&amp;utm_source=fullstackradio&amp;utm_medium=podcast&amp;utm_campaign=DO_Dev_Signup_Cold_FullStackRadio_Podcast">DigitalOcean</a>, get your free $50 credit at <a href="https://do.co/fullstack">do.co/fullstack</a> </li> <li> <a href="https://cloudinary.com/users/register/free?utm_source=fullstackradio&amp;utm_medium=Sponsored_Podcast&amp;utm_content=fullstackradio_PodCast">Cloudinary</a>, sign up and get 300,000 images/videos, 10GB of storage and 20GB of monthly bandwidth for free</li> </ul><p>Links:</p><ul> <li><a href="https://actualbudget.com">Actual</a></li> <li><a href="https://electron.io">Electron</a></li> <li><a href="https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type">Conflict-free replicated data type (CRDT)</a></li> <li><a href="http://sergeiturukin.com/2017/06/26/hybrid-logical-clocks.html">Hybrid logical clock</a></li> <li><a href="https://en.wikipedia.org/wiki/Merkle_tree">Merkle tree</a></li> </ul>