CRDTs and the BEAM
summary
screen.garden implements Markdown collaboration by embedding Yjs (Y_RS/wires) wrapped via a Rustler NIF on clients and mirroring docs as processes on the BEAM, mapping each doc to a gen_server per doc tied to Phoenix channels and LiveView. Edits sync as Yjs updates and state vectors, server promotes pending entries into database-backed paths, rolls up update logs into object storage for GC, and survives informal bursts of 10–20k notes during testing.
AI-written summary · about
chapters (7)
- 0:00Screen Garden and CRDTs intro
- 3:33What CRDTs are and how they work
- 8:04CRDTs in Screen Garden with Y.js
- 11:16CRDTs challenges and tradeoffs
- 16:32CRDT architecture in Screen Garden
- 21:50CRDTs benefits on BEAM
- 22:32Q&A on CRDT performance
related talks
38mDemos and Lightning Talks
43mThe River
23mBuilding a real-time collaborative editor with Phoenix
37mKeynote: All Aboard The Stateful Train
38mDesigning a Multi-Language Live Programming Tool With Phoenix and Genstage
20mDistributed Erlang lessons from Livebook
50mBuilding a collaborative painting canvas with Phoenix
01h 03mSonic Pi - BEAM up the VJ
