Raph Levien
medium.com/@raphlinus · Personal blog · on HN since 2016
Raph Levien, a software engineer, writes about CRDTs and operational transformation, and about font rendering in Rust.
What HN saysHN commenters cite his work on unifying OT and CRDT and his fast font renderer, and call the CRDT writing hard-won but unfinished.
16HN people shared it
9linked it in comments
11stories submitted
620story points
4 years agolast shared
2016people per year2026
Most-shared posts
- 1Towards a Unified Theory of Operational Transformation and CRDT10 people · 19 points · first shared 2016 · 1 comments on HN
- 2Inside font-rs, a font renderer written in Rust7 people · 469 points · first shared 2016 · 115 comments on HN
- 3Show HN: Working code for Operational Transformation/CRDT hybrid2 people · 132 points · first shared 2017 · 28 comments on HN
What HN people wrote when they linked it
vlovich123 · 2023-04-03
Nope no ChatGPT.
You may want to reread what I said. I was responding to someone talking about games and game performance in the context of text rendering. And the PhD research topic is how to use the GPU to accelerate text rendering.
You seem to perhaps be misunderstanding what I’m saying and somehow thinking I’m defending
> Microsoft Teams takes 9 seconds to display under a kilobyte of text, including 3 seconds to just display a splash screen)
I’m not. Clearly it shouldn’t take that long to render that text. But achieving a screen full of text at 120fps (or is it even just 60fps) on the highest resolution displays is actually a difficult problem for CPU renderers to achieve (even for the greatly simplified case of a single mono space font). If you think otherwise, you may want to sync up with Raph and publish your contributions to this space. It’s possible I’m getting some of the specific details wrong (again - not my area of expertise) but there’s definitely a push to find HW acceleration within the GPU to achieve those frame rates (and not just text rendering - all 2D rendering is difficult to HW accelerate).
Notice in [3] how CPU renderers are still lower latency than GPU ones because it’s an area of active research that hasn’t yielded winners yet.
Also I’m well aware we have super computers in our pocket. But don’t forget that the screen resolution is really frickin high and DPI scaling on top (so that text is actually legible) adds additional overheads (+…
archagon · 2018-08-12
If anyone’s interested, I wrote a long article a few months ago on (what I believe to be) the ultimate string CRDT, among other things: http://archagon.net/blog/2018/03/24/data-laced-with-history/
I really, really love the work that Levien and Hume have put into the Xi CRDT, and how open they’ve been with their research. IMHO, though, it’s a bit too “academic” and clever for any sort of general purpose use, though it may well be ideally suited for its stated purpose. There even appears to be a limit to the amount of rewinding you can do, which points to O(n^2) complexity for conflict resolution: a huge problem for offline-first development, where concurrent timelines don’t really have any limit on the length of their diverging histories. (I might be mistaken about this—please correct me if I’m wrong.)
Still a very satisfying algorithm, though! You can see more of Raph Levien’s thinking here: https://medium.com/@raphlinus/towards-a-unified-theory-of-operational-…
burntsushi · 2017-10-18
I've been following the literature on this topic for a while now, and I've always wished for more examples of actual systems built with these techniques. Are there any? What kind of scales do they deal with? Are there any write-ups on them? (I know of at least one good one[1].)
In particular, I've wondered how a simpler solution to the problems posed in this paper stacks up. At what point does it fail? e.g., Consider:
* An op based model.
* A client-server architecture (not p2p).
* Operations are assigned a total ordering by a central server.
* Given any two dependent operations A and B, A is always
transmitted before B.
This still gives you a lot of the stated advantages of an eventually consistent system, where each client communicating with the server will eventually converge even if they all temporarily diverge. The central server and total ordering is a key ingredient, because it's what lets you guarantee ordering between any two causal operations by having the server "choose" an ordering.
I'm naturally interested in trade offs. For what use cases does the central server model break down? Is it still useful for other things at lesser scales?
[1] - https://medium.com/@raphlinus/towards-a-unified-theory-of-operational-…
raphlinus · 2018-11-17
That might be mine as well, https://medium.com/@raphlinus/towards-a-unified-theory-of-operational-… . It's very much unfinished work though. Certainly wrapping my head around the OT and CRDT literature took huge amounts of brainpower exertion, comparable to what I did for my PhD.
Also, I have your essay in my queue to read more thoroughly, it's high on my list of stuff to study as we possibly rethink the way this stuff works in xi-editor.
zellyn · 2018-10-11
If you're interested in this stuff, you might also like Raph Levien's writing on it:
- https://medium.com/@raphlinus/towards-a-unified-theory-of-operational-…
- https://github.com/xi-editor/xi-editor/blob/e8065a3993b80af0aadbca0e50…
kajecounterhack · 2017-11-01
FWIW OT isn't the only algo you can use to implement collaborative editing:
* https://medium.com/@raphlinus/towards-a-unified-theory-of-operational-…
* https://hal.inria.fr/inria-00071240
If you want a library it exists too:
* https://github.com/josephg/ShareJS
bla2 · 2017-10-08
I liked Raph's writings on CRDTs: https://medium.com/@raphlinus/working-code-for-operational-transformat…
conradev · 2016-10-13
If the language is relevant to the innovation then I think it's fine to mention it. For example, a font renderer in Rust that is faster than FreeType[1]. There is also Servo[2], which is a web rendering engine that will be able to eliminate memory corruption bugs.
For other projects (like this one) I find that the language can be a distraction from the actual value it provides.
[1] https://medium.com/@raphlinus/inside-the-fastest-font-renderer-in-the-…
[2] https://servo.org