Y
HN Search
Hacker News Search
new
|
comments
|
top
|
jobs
mweidner
searching Neon…
1.
▲
2.
▲
3.
▲
4.
▲
5.
▲
6.
▲
7 ms
·
1.
▲
by
mweidner
4mo ago
Indeed, I do not buy this argument. Would China's progress be close to where it is today without the US labs' examples? Would any of this be happening if OpenAI had not created ChatGPT?
2.
▲
by
mweidner
4mo ago
The folks I met who were talking about AI Safety in 2018 were certainly sincere, and the two people I knew who later joined Anthropic seem like the type to do it for the greater good instead of money. I expect that Anthropic will eventually
3.
▲
by
mweidner
4mo ago
Is the idea to keep the world in balance via MAD? I could see that, though it's a dangerous gamble. From Richard Rhode's "The Making of the Atomic Bomb", I got the impression that most scientists involved thought they co
4.
▲
by
mweidner
4mo ago
I fail to see how pursuing recursive self-improvement at full speed is compatible with Anthropic's stated goal of AI Safety. If nukes were not invented yet, would it really be a good idea to build and sell them as fast as possible (in
5.
▲
by
mweidner
4mo ago
For values that don't have a natural merge function (or where you don't want to bother writing one), would it make sense to sync update logs instead? That is: - The synced value is a history of client updates, sorted in some event
6.
▲
by
mweidner
4mo ago
A CRDT that operates on code units should work out okay, because each grapheme cluster will always be inserted and deleted in a single edit - hence it should stick together in the text. (Some CRDTs actually can mess this up by interleaving
7.
▲
by
mweidner
6mo ago
I'm surprised to see the emphasis on tracking lines of text, which ties in to the complexity of merge vs merge-the-other-way vs rebase. If we are committed to enhancing the change history, it seems wiser to go all in and store high-lev
8.
▲
by
mweidner
6mo ago
You can think of the semantics (i.e., specification) of any CRDT as a function that inputs the operation history DAG and outputs the resulting user-facing state. However, algorithms and implementations usually have a more programmatic descr
9.
▲
by
mweidner
6mo ago
While this is technically correct, folks discussing CRDTs in the context of text editing are typically thinking of a fairly specific family of algorithms, in which each character (or line) is assigned an immutable ID drawn from some abstrac
10.
▲
by
mweidner
6mo ago
Your part 1 post was one of the inspirations for that :) Specifically, it inspired the question: how can one let programmers customize the way edits are processed, to avoid e.g. the "colour" -> "u" anomaly*, without v
11.
▲
by
mweidner
6mo ago
The rebasing step is indeed a transformation. Some info in the "rebasing" link here [1]. Unlike traditional Operational Transformation, though, there are no "transformation properties" [2] that this rebasing needs to sat
12.
▲
by
mweidner
6mo ago
The PowerSync folks and I worked on a different approach to ProseMirror collaboration here: https://www.powersync.com/blog/collaborative-text-editing-ov... It is neither CRDT nor OT, but does use per-character IDs (lik
13.
▲
by
mweidner
6mo ago
This was my impression as well. If you ignore the paper and just look at the source code - and carefully study Seph Gentle's Yjs-like RGA implementation [1] - I believe you find that it is equivalent to an RGA-style tree, but with a di
14.
▲
by
mweidner
7mo ago
Managing "a flat-ish collection of nodes" that can be moved around (without merely deleting and re-inserting nodes) is tricky because of how paragraphs can be split and merged. Notion tackled this for their offline mode: https:&#
15.
▲
by
mweidner
1y ago
> More specifically, if you can edit different parts of a same document on different devices, then the document should be split across multiple files that can be synced independently A more robust idea is to store a log of changes in fil
16.
▲
by
mweidner
1y ago
Indeed, Replicache works this way, using server reconciliation (one part of client-side prediction): https://doc.replicache.dev/concepts/how-it-works
17.
▲
by
mweidner
1y ago
This sounds similar to the idea behind articulated (though with ids UUID-counter instead of time-counter): https://github.com/mweidner037/articulated I will check out Antirez.
18.
▲
by
mweidner
1y ago
A decentralized, eventually consistent total order on operations is a fully general CRDT, in the sense that you can put whatever (deterministic) operations you want in the total order and clients will end up in eventually consistent states.
19.
▲
by
mweidner
1y ago
As the author, same. My best guess is: - Central-server collaborative editing work focuses on Operational Transformation (OT), likely due to inertia (studied since 1989) and the perception that storing an ID per character is inefficient. In
20.
▲
by
mweidner
1y ago
Even in the absence of a central server, you can still avoid CRDT/OT complexity if you have a decentralized way to eventually total order operations & apply them in that order: https://mattweidner.com/2025/05
21.
▲
by
mweidner
1y ago
Indeed, this is close to what Yjs (popular CRDT library) does: each client instance (~ browser tab) chooses a random 32-bit clientId, and character IDs combine this clientId with local counters. https://github.com/yjs/y
22.
▲
by
mweidner
1y ago
I believe that Automerge internally stores all operations in an eventually consistent total order, which you can use as a substitute for the server in server reconciliation (cf. https://mattweidner.com/2025/05/21
23.
▲
by
mweidner
1y ago
Indeed, the simple approach of "send your operations to the server and it will apply them in the order it receives them" gives you good-enough conflict resolution in many cases. It is still tempting to turn to CRDTs to solve the n
24.
▲
by
mweidner
2y ago
You could avoid the CRDT rules if you only use the LLM on the server. I.e., user comes online and sends their diff to the server, which LLM-merges it into the latest state and then sends that back to all clients. This doesn't help you
25.
▲
by
mweidner
2y ago
One challenge is that the algorithms typically used for collaborative text editing (CRDTs and OT) have strict algebraic requirements for what the edit operations do & how they interact. So even if your server is smart enough to process
26.
▲
by
mweidner
2y ago
Indeed, Apple Notes has a reasonably sophisticated CRDT, including support for tables: https://github.com/dunhamsteve/notesutils/blob/master/notes....
27.
▲
by
mweidner
2y ago
> We don't use any fractional indices though. Instead, our insmov tuple not only contains a parent P, but also a previous sibling guid A. Because all tree ops will eventually be applied in the global linear order as determined by th
28.
▲
by
mweidner
2y ago
Many projects use Yjs for its collaborative rich-text editing (e.g. Linear: https://x.com/artman/status/1733419888654291102 ). Yjs makes this easy by providing "bindings" to various rich-text editor GUIs,
29.
▲
by
mweidner
2y ago
You can store a text-editing CRDT's state in a standalone file instead of in a database. However, it is hard to make the file human-legible or updateable. The best you could do is probably something like a piece table ( https:/&#x
30.
▲
by
mweidner
2y ago
Sounds like ElectricSQL (though they assume an additional central node running Postgres): https://electric-sql.com/
More ›