dotJS 2019 - James Long - CRDTs for Mortals
dotconferences3 HN recommenders · recommended in 4 months, 2020–2023
talk · intermediate · evergreen · 2020–2023 on HN
James Long's dotJS 2019 talk on how CRDTs enable local-first apps and how simple they can be to implement. He shows how to use them to build robust offline-capable frontends.
Recommended as an approachable introduction to CRDTs and the local-first idea behind apps like Actual.
Up next
1 mo on HNBefore Flutter | Rubber Duck Engineering | Episode #100
RubberDuckEng
1 HN recommend · 2023–2026
11 mo on HNDesigning the Ideal Bootstrapped Business with Jason Cohen
Rob Walling
13 HN recommender · 2020–2024
1 mo on HNThe Strange Math That Predicts (Almost) Anything
Veritasium
1 HN recommend · 2025–2025
2 mo on HNHow to Build a Startup Without Funding by Pieter Levels @ Dojo Bali
@levelsio
2 HN recommender · 2018–2021
14 mo on HNWhat the heck is the event loop anyway? | Philip Roberts | JSConf EU
JSConf
16 HN recommender · 2015–2025
13 mo on HNRich Harris - Rethinking reactivity
You Gotta Love Frontend
15 HN recommender · 2019–2026
10 mo on HNCrockford on JavaScript - Volume 1: The Early Years
YUI Library
10 HN recommender · 2013–2022
10 mo on HNRailsConf 2016 - Turbolinks 5: I Can’t Believe It’s Not Native! by Sam Stephenson
Confreaks
6 HN recommender · 2017–2020
10 mo on HNJavaScript: The Good Parts
Google TechTalks
11 HN recommender · 2009–2020
9 mo on HNPete Hunt: React: Rethinking best practices -- JSConf EU
JSConf
9 HN recommender · 2014–2025
8 mo on HNDan Abramov - Live React: Hot Reloading with Time Travel at react-europe 2015
ReactEurope
12 HN recommender · 2015–2022
7 mo on HNHey Underscore, You're Doing It Wrong!
InfoQ
9 HN recommender · 2014–2022
5 comments from Hacker News
Worth noting that the author, James Long, is the same one who made a great talk on using CRDTs called CRDTs for Mortals [0], and he uses them in Actual as well. He was a great source of inspiration when I was looking into using them for my offline-first, local-first apps [1]. [0] ▶ this video [1] link
We are in the same need right now. Something that we have researched and think it has a lot of potential, at least for us is James Long sync implementation. You can check out his talks and demos at: * link * ▶ this video And his demo implementation (and annotated fork): * link * htps://github.com/clintharris/crdt-example-app_annotated/blob/master/NOTES.md I wonder why there isn't some open source engine based on this at least for CRUD apps since it has a lot of potential and it is really "simple" to implement and even understand.
Yeah. The trick to managing the offline states is to have it as cache. So updating and solely relying on the server, and only serve when offline. On the interactivity side, I feel that a lot of tools that I use daily justifies the use of SPA/PWA. Definitely can be passable with HTML SSR, but there's not much examples of it yet. Todoist: No hassle offline handling. It will sync on it's own. Twitter: They do intercept everything and handle/queue requests when the client is offline. It's not perfect though. Roam: Again. Offline syncing, mainly offline search/document creation. This is a bit unique though as I think the server basically is just a sync logic. I feel that the SPA stage is definitely a growing phase instead of a destination to be. There's a lot of problems that are not solved elegantly yet, and it's and the boundaries. But I feel that SPA and all of it's learnings will be an example of how the next step will be like. And with .wasm coming, there's a lot of possibility of different architectures/how to build apps. Some talks that refers to why/how SPA makes sense for some problems/usecases: Offline first PWA/Web App, with CRDT for syncing: ▶ this video (James Long's CRDT For Mortals talk) State management framework oriented for offline/PWA use: link
The author has a conference talk talking about CRDT and the timestamp technique he uses. Really useful if anyone else wonders what's the problem with wall clock timestamps. dotJS 2019 - James Long - CRDTs for Mortals (20:44): ▶ this video EDIT: btw, out of all the comments on the timestamp here, seems like only yours is not complaining about the format, and even points out that the article did not go in depth yet to specify the actual timestamp that he uses.
Based on the author's talk [0], looks like it's grow-only sets. I haven't looked at the code though so it might have changed since he gave that talk in 2019. [0] ▶ this video