Technical Writings
Explorations in Distributed Systems, CRDTs, and Local-First software.
Featured
CRDT Versioning Deep Dive
I spent days trying to understand how version history works in CRDTs. Turns out snapshots don't store content at all—they're 20-50 byte mathematical reference points. Here's everything I learned about StateVectors, DeleteSets, and why diffing in Yjs is fundamentally different from git.
On Work-Life Balance: Reframing How I Live
Moving beyond the false binary of toxic hustle vs. disconnected work-life balance. How I structure the 24 hours I have, and why treating time as a finite budget changes everything.
Archive
CRDT Versioning Deep Dive
I spent days trying to understand how version history works in CRDTs. Turns out snapshots don't store content at all—they're 20-50 byte mathematical reference points. Here's everything I learned about StateVectors, DeleteSets, and why diffing in Yjs is fundamentally different from git.
On Work-Life Balance: Reframing How I Live
Moving beyond the false binary of toxic hustle vs. disconnected work-life balance. How I structure the 24 hours I have, and why treating time as a finite budget changes everything.
Plane Wiki launch
Announcement post.
Yjs 2‑step sync
State vectors and sync.
ProseMirror internals
Efficient tree lookups.
#RealtimeSync notes
CRDT learning logs.