Lying in bed with fever, I have a sudden realisation: the sync engine I wrote last year is actually a combination of two CRDTs — a last write wins map and a two phase set.
Whether this turns out to be true in the morning remains to be seen!
Conversation
I am awake! And I checked — this turns out to be accurate.
Thanks to for his approachable explanation of CRDTs in production:
Replying to
The other thing I learnt was that I was cheating by using naive timestamps (mostly because I didn't like the extra work of using vector clocks). But Long says there's now a good alternative: Hybrid Logical Clocks!
Given that this was invented in '14, wow: cse.buffalo.edu/tech-reports/2
1
3
Simpler explanation: jaredforsyth.com/posts/hybrid-l
I'm still a little mindblown that CRDTs were only invented in 2011, and HLCs in 2014, and now we're talking about them like they're Known, Old Things.
Was this how it felt like to be doing Physics in the time of Newton?
1
1
Mostly accurate.
1
3
Replying to
I'm glad!
Something I struggled with early on (and wish I had explained in that talk) was the difference between CRDTs and "CRDTs + collaborative text editing". A lot of people implicitly include text editing in the definition
1
1
imo CRDTs with data that is also structured is surprisingly simple. It's the text editing that gets hard because you have to create data structures out of non-structured data. For apps though it's very straight-forward!
2

