back
user profile
raphlinus
13,685karma·1,846submissions·March 7, 2014
about
I do research on fundamental UI technology and 2D graphics, with a focus on Rust and fonts.
@raph@mastodon.online
recent activity (1,846 total)
comment
Pretty sure that code gives the wrong answer for a = 0, b = 1 << 63 (assuming the goal is equality represented as 0 or 1).
comment
From Google's official opensource documentation on IARC[0]: We don’t approve every project submitted through this process, but historically we’ve been able to rapidly approve the vast majority of…
comment
That makes it especially impressive that he used React and other recent Web technologies to build the site. (It's been around a while but this is a rewrite and looks like a pretty massive update)…
comment
Confirmed. The title statement is wrong. I think the moral of _that_ story is that not even renowned experts can reliably get bash right.
comment
I wouldn't say category here, to be precise it's the same cofunctor over the initial algebra.
comment
I have no idea what you mean about "intentionally destroying" line info. The info is right there, and there's a perfectly nice interface (Cursor) for getting at it; no real difference b…
comment
I used an array of lines in gzilla[0]. It's not bad, but it _is_ exporting details of the representation up to clients, which gets worse once you add some hierarchy. To me, the nice thing about r…
comment
It would be possible. I'm thinking of adding "pack/unpack" operations to the Leaf data structure, but it's more motivated by getting a varint encoding for line breaks; right n…
comment
The true strength of the rope data structure its performance in worst case conditions. Even after a huge series of edits, it recombines leaves and rebalances the tree so it's almost as efficient …
comment
It's not comprehensive yet, but at least you can navigate the API at https://docs.rs/xi-rope/0.2.0/xi_rope/ …
comment
Hi Jon! Great to see you here. Much of what I wrote is speculative, especially paren matching based on monoids. What actually went into xi editor is much more conservative. I didn't actually inte…
comment
An example of the linear-interpolated lookup table approach using fixed-point math is the sine generation[0] in my music synthesizer. It generates a table of 1024 entries, then lerps between those. Th…
comment
Thank you for sharing the story of your friend. It brought tears to my eyes. Feeling guilt about not being able to do more is a natural consequence of suicide. But it sounds like you were there for hi…
comment
The use of math in economics is much like the use of Newtonian mechanics to understand elementary particle interactions at the horizons of black holes.
comment
I think that's only half-useful, at best. If all your access to atomics happened to be mediated by, say, __atomic_cmpxchg, then modeling that as (say) atomic_compare_exchange_strong would give yo…
comment
These are theoretical concepts. If there's a bound on the slowdown, it's lock-free. If there's no bound, it's obstruction free. These theoretical concepts might or might not be tha…
comment
Absolutely. The Java ecosystem deserves a huge amount of credit for putting lock-free programming on a theoretically sound basis, and it's informative how long it took to get it right. But none o…
comment
I stand corrected, thanks! I had the feeling that the ABA problem affected a lot of the earlier lock-free algorithms, but didn't know the understanding of it went that far back.
comment
Note that the linked paper predates the C++ / C11 memory model, which I would consider essential for anyone implementing lock-free algorithms in C or C++ today. It also long predates an understan…
comment
I like the terminology that Dmitry Vyukov uses[0], where "wait-free" means that any individual thread is guaranteed to make progress, and "lock-free" means that some thread is guar…
comment
Backspace is typically not one grapheme at a time, though it is for emoji. For scripts such as Arabic, it typically deletes ḥarakāt when they are composed on top of a base character. For a bit more di…
comment
It's fixed width with respect to code points, but not with respect to any of the other things mentioned in the linked article. For example, the black heart with emoji variation selector (which ma…
comment
Meet the shadowy overlords who approve emojis[0] [0] http://www.latimes.com/business/technology/la-fi-tn-emoji-q-... …
comment
I've heard of Quill but hadn't seen that document. Looks like interesting reading, thanks!
comment
Yes, let's connect offline. I have thought some about rich text, but haven't implemented anything yet. My general thinking is that attribute spans lend themselves well to the OT model, but t…
comment
I understand where you're coming from. Unfortunately, the academic literature on OT is really difficult. A lot of the papers are flat-out wrong, and even the ones that aren't have tons of co…
comment
Yes, it's here: https://github.com/google/ot-crdt-papers
comment
That's the main substantive difference. I think there are differences in flavor considering that these came from rather different literatures. I have a feeling they'll converge. State-based …
comment
OT is a broad category that includes both commutative and non-commutative operations (in the OT literature, this is usually called the TP2 property). Most practical implementations are non-commutative…