Y
HN Search
Hacker News Search
new
|
comments
|
top
|
jobs
mweidner
searching PlanetScale…
1.
▲
2.
▲
3.
▲
4.
▲
5.
▲
6.
▲
7 ms
·
31.
▲
by
mweidner
2y ago
> This doesn’t work for collaborative software. Is the issue the lack of real-time updates? In principle, you could work around that using a separate WebRTC channel for live updates, with the slower Dropbox sync serving as the source-of-
32.
▲
Survey of Conflict-Free Replicated Data Types (CRDTs)
(mattweidner.com)
1 points
by
mweidner
3y ago
|
0 comments
33.
▲
by
mweidner
3y ago
The demo they show uses the Quill rich-text editor, which handles block elements analogously to text attributes: a block's type is determined by the attributes on its trailing newline. E.g., for a block that is part of an ordered list,
34.
▲
by
mweidner
3y ago
The product page is clearer ( https://skiff.com/mail ): > All emails between Skiff users are end-to-end encrypted, including both subject and contents. External mail is encrypted with your keys on receipt, keeping it priva
35.
▲
by
mweidner
3y ago
I believe individual fields are last-writer-wins. Fancier CRDTs like text/lists are not directly supported, but I found that you can layer them on top: https://github.com/mweidner037/list-demos/tree/maste
36.
▲
by
mweidner
3y ago
In my experience, this depends a lot more on the implementation than the CRDT algorithm. If you implement Causal Trees directly (as a tree with one node per char), it will be tolerably fast but use a lot of memory + storage. If you instead
37.
▲
by
mweidner
3y ago
Another name for Causal Trees is "RGA" (Replicated Growable Array). They are ~identical algorithms that were published concurrently. E.g., Automerge uses RGA ( https://automerge.org/docs/documents/#lists )
38.
▲
"Position Strings" for Collaborative Lists and Text
(mattweidner.com)
2 points
by
mweidner
3y ago
|
1 comments
39.
▲
by
mweidner
3y ago
> Opaque State: [...] You can’t inspect your model represented by the CRDT without using the CRDT library to decode the blob, and you can’t just store the underlying model state because the CRDT needs its change history also. You’re left
40.
▲
by
mweidner
3y ago
Early papers (e.g. https://inria.hal.science/inria-00555588 ) use C=Convergent for state-based CRDTs and C=Commutative for op-based CRDTs. Nowadays it is usually C=Conflict-free for all variants (e.g. https://en.w
41.
▲
by
mweidner
3y ago
Same here. There is even a new $10/mo variant that is still plenty for me.
42.
▲
by
mweidner
3y ago
One idea is just to use fewer random bits in peerIDs. Yjs ( https://docs.yjs.dev/ ) gets away with just 32 random bits. If you compromise and use 64 random bits, then even a very popular doc with 1 million lifetime peerIDs wi