<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: antics</title><link>https://news.ycombinator.com/user?id=antics</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 07 Jun 2026 18:17:40 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=antics" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by antics in "Incident March 30th, 2026 – Accidental CDN Caching"]]></title><description><![CDATA[
<p>So on the one hand you have a direct statement from the source that the cause of this incident is humans. On the other hand, while we all agree there is no specific evidence that AI caused the issue, the guy who made that statement, like, really loves AI.<p>In my life I have gone back and forth on the idea that 12 angry men is a kind of facile representation of how people think and what kinds of evidence really form the basis of a reasonable society. This comment section is doing a really good job of stretching my resolve to believe we are getting at least better.</p>
]]></description><pubDate>Tue, 31 Mar 2026 15:40:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=47589014</link><dc:creator>antics</dc:creator><comments>https://news.ycombinator.com/item?id=47589014</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47589014</guid></item><item><title><![CDATA[New comment by antics in "Incident March 30th, 2026 – Accidental CDN Caching"]]></title><description><![CDATA[
<p>> I'm not sure why people are so quick to discount [AI] as a potential source of the issue.<p>Because (per the link above) the CEO said that (1) it was their fault, and (2) it had nothing to do with AI.<p>I understand that on this forum statements like this are inevitably greeted with some amount of skepticism, but right now I'm seeing no particular reason to disbelieve Jake, and the reason that "if they did use AI they'd deny it" should frankly not be considered good enough to fly around here. Like probably everyone in this comment section I'm open to <i>evidence</i> that they used AI to slop-incident themselves, but until we can reach that standard let's please calm down and focus on what we actually know to be true.</p>
]]></description><pubDate>Tue, 31 Mar 2026 06:43:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=47583577</link><dc:creator>antics</dc:creator><comments>https://news.ycombinator.com/item?id=47583577</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47583577</guid></item><item><title><![CDATA[New comment by antics in "Incident March 30th, 2026 – Accidental CDN Caching"]]></title><description><![CDATA[
<p>The CEO says it's not: <a href="https://x.com/JustJake/status/2038799619640250864" rel="nofollow">https://x.com/JustJake/status/2038799619640250864</a><p>A lot of people are confident in enough in their ability to spot AI infra that they are willing to dismiss a firsthand source on this, and I admit I have no idea why. There isn't any upside to making this claim, and anyway, I assure you that people need no help at all from AI to make these kinds of mistakes.</p>
]]></description><pubDate>Tue, 31 Mar 2026 04:01:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=47582603</link><dc:creator>antics</dc:creator><comments>https://news.ycombinator.com/item?id=47582603</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47582603</guid></item><item><title><![CDATA[New comment by antics in "Return of the Obra Dinn: spherical mapped dithering for a 1bpp first-person game"]]></title><description><![CDATA[
<p>> It feels a little weird to put 100 hours into something that won't be noticed by its absence. Exactly no one will think, "man this dithering is stable as shit. total magic going on here." I don't want to give people problems they didn't know they should have though so it was worth fixing.<p>I mean maybe it's just me, but that is literally the first thing I noticed and I appreciated it so much I instantly bought the game. I don't even play video games much!</p>
]]></description><pubDate>Thu, 19 Mar 2026 23:14:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=47447757</link><dc:creator>antics</dc:creator><comments>https://news.ycombinator.com/item?id=47447757</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47447757</guid></item><item><title><![CDATA[New comment by antics in "Lies I was told about collaborative editing, Part 2: Why we don't use Yjs"]]></title><description><![CDATA[
<p>lol ok we can talk and record it. I want to make it clear that this is <i>NOT</i> a debate, though. I actually want to be convinced!</p>
]]></description><pubDate>Thu, 19 Mar 2026 16:54:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=47442415</link><dc:creator>antics</dc:creator><comments>https://news.ycombinator.com/item?id=47442415</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47442415</guid></item><item><title><![CDATA[New comment by antics in "Lies I was told about collaborative editing, Part 2: Why we don't use Yjs"]]></title><description><![CDATA[
<p>But Kevin, prosemirror-collab <i>does</i> give me offline editing. I use it literally every day, entirely without issue. I write offline on different devices, and whenever I come online, it all syncs up. No issues.<p>It does <i>not</i> give me p2p topology. Is that what you mean?</p>
]]></description><pubDate>Wed, 18 Mar 2026 22:12:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=47432049</link><dc:creator>antics</dc:creator><comments>https://news.ycombinator.com/item?id=47432049</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47432049</guid></item><item><title><![CDATA[New comment by antics in "We're building a better rich text editing toolkit"]]></title><description><![CDATA[
<p>I run a VC-funded startup. We fund the extremely high-quality OSS `react-prosemirror` project at > $10k a year. I really, really think you should too. Here was our thinking:<p>- Cheaper than a Tiptap enterprise license (essentially a 50% discount).<p>- Dramatically higher quality, in a way that is directly noticeable to users. The "naive" React/ProseMirror integration has terrible state tearing issues that make your text editor feel haunted. Cursors in weird spots, mismatched transaction errors, strange races that happen only sometimes, lots of `setTimeout` and `queueMicrotask` to patch over weird problems. The core issue is a little hard to explain, but React and ProseMirror both have a kind-of virtual representation of the DOM, and when that is updated, they figure out what changes need to be made to the DOM, and then execute them. But these cycles are <i>completely incompatible</i>. The solution is to rewrite the ProseMirror `EditorView` in pure React, which is what `react-prosemirror` has done. Tiptap did not do this, and it is empirically very challenging to manage as a result. I am happy to discuss more if people are interested.<p>- Collab on ProseMirror is in a very challenging spot, and this is the right team to work on it. Since we spend > $10k/yr funding the project, we have worked with them directly on this, and we know. We wrote about the alternatives in a recently-popular HN thread: <a href="https://news.ycombinator.com/item?id=47359712">https://news.ycombinator.com/item?id=47359712</a> although as god is my witness, I 100% promise we did not coordinate this in any way.<p>- Shane is one of the best engineers working in the frontend today. You want his attention, and it is worth paying for.</p>
]]></description><pubDate>Wed, 18 Mar 2026 18:19:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=47429332</link><dc:creator>antics</dc:creator><comments>https://news.ycombinator.com/item?id=47429332</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47429332</guid></item><item><title><![CDATA[New comment by antics in "Lies I was told about collaborative editing, Part 2: Why we don't use Yjs"]]></title><description><![CDATA[
<p>But Kevin, you never really answered the question of the article. Unless I <i>need</i> a truly-masterless p2p topology, why would I do all this stuff, including throw away editor intent around things like block split, just to use Yjs? prosemirror-collab and prosemirror-collab-commit already seem to do all the things the Yjs docs <i>claim</i> to do (unbounded offline writes that reconcile automatically, optimistic updates, tolerant of all kinds of failures), and they work with 100% fidelity to the underlying model. AFAICT, the <i>only</i> thing that you <i>need</i> Yjs for, is true p2p editing.<p>This is a serious question, and the question of the article. I am here to learn what you mean, please explain.</p>
]]></description><pubDate>Wed, 18 Mar 2026 16:01:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=47427426</link><dc:creator>antics</dc:creator><comments>https://news.ycombinator.com/item?id=47427426</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47427426</guid></item><item><title><![CDATA[New comment by antics in "Lies I was told about collaborative editing, Part 2: Why we don't use Yjs"]]></title><description><![CDATA[
<p>The magic of CRDTs does not prevent this. They are in exactly the same boat as OT, prosemirror-collab and prosemirror-collab-commit.  It can't be prevented. The problem is worse with CRDTs because they instantly destroy user intent in the conversion to/from their underlying representation, which is the XML document. See discussion with Marijn about, <i>e.g.</i>, splitting blocks above.</p>
]]></description><pubDate>Wed, 18 Mar 2026 15:55:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=47427350</link><dc:creator>antics</dc:creator><comments>https://news.ycombinator.com/item?id=47427350</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47427350</guid></item><item><title><![CDATA[New comment by antics in "Lies I was told about collaborative editing, Part 2: Why we don't use Yjs"]]></title><description><![CDATA[
<p>I do not know how to say this another way. No. Nothing in this article was created, edited, outlined, pre-drafted, suggested, or in any other way <i>influenced</i> by AI. AI did not write the words, it did not review the words, it was not a part of a pre-writing discussion that influenced the words. There is NO AI IN THIS ARTICLE OR AS AN INPUT TO THIS ARTICLE. If the article is an apple, then 0% of the apple is AI or AI influenced.<p>And let this be a lesson to you. You apparently do not have any ability to distinguish between these two kinds of thing.</p>
]]></description><pubDate>Wed, 18 Mar 2026 09:05:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=47423336</link><dc:creator>antics</dc:creator><comments>https://news.ycombinator.com/item?id=47423336</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47423336</guid></item><item><title><![CDATA[New comment by antics in "Lies I was told about collaborative editing, Part 2: Why we don't use Yjs"]]></title><description><![CDATA[
<p>Actually, I think I agree with most of this... except the part where you think it's not clear-cut, ha ha. I meant that not as a comparison between OT and CRDTs, but as a comparison to prosemirror-collab. My opinion is that in the centralized server case, it is (unfortunately) basically better in every dimension.</p>
]]></description><pubDate>Wed, 18 Mar 2026 07:31:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=47422662</link><dc:creator>antics</dc:creator><comments>https://news.ycombinator.com/item?id=47422662</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47422662</guid></item><item><title><![CDATA[New comment by antics in "Lies I was told about collaborative editing, Part 2: Why we don't use Yjs"]]></title><description><![CDATA[
<p>Ok Marijn I understand. I'm sorry I caused you an inconvenience. Of course, I know that implementing server-side prosemirror-collab is not entirely without problems (since  we have done it) and take your point, which is correct. If I was to do this again I'd find a different way to say this than "40 lines of code."<p>With that said... I do not agree it is not "simple." Or at least, I think it is about as simple as it can possibly be.</p>
]]></description><pubDate>Wed, 18 Mar 2026 07:28:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=47422635</link><dc:creator>antics</dc:creator><comments>https://news.ycombinator.com/item?id=47422635</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47422635</guid></item><item><title><![CDATA[New comment by antics in "Lies I was told about collaborative editing, Part 2: Why we don't use Yjs"]]></title><description><![CDATA[
<p>Just to be extremely clear: we pay for a lot of OSS software. We pay one individual project more than $10,000 a year. We would have paid for Yjs too, if we thought it was a good use of resources!</p>
]]></description><pubDate>Wed, 18 Mar 2026 07:24:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=47422610</link><dc:creator>antics</dc:creator><comments>https://news.ycombinator.com/item?id=47422610</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47422610</guid></item><item><title><![CDATA[New comment by antics in "Lies I was told about collaborative editing, Part 2: Why we don't use Yjs"]]></title><description><![CDATA[
<p>Hi Joseph! Good to see you here.<p>Sorry, I see why this was confusing. What I'm saying is that <i>because</i> users perceive the results of OT, CRDTs, prosemirror-collab, <i>etc</i>. as data corruption, they <i>require</i> presence carets as a UI affordance, to steer them away from direct edit conflicts.<p>If you <i>can't</i> have presence carets, yes... likely best to have a diff view. And in our case, we use git/jj for this, rather than CRDTs.<p>For the "history of" stuff... in spite of the fact that we have our disagreements, I actually think it would be very nice to have Kevin and everyone else on the record long-form talking about this. Just because I am a non-believer doesn't mean it wasn't worth trying!</p>
]]></description><pubDate>Wed, 18 Mar 2026 07:17:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=47422547</link><dc:creator>antics</dc:creator><comments>https://news.ycombinator.com/item?id=47422547</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47422547</guid></item><item><title><![CDATA[New comment by antics in "Lies I was told about collaborative editing, Part 2: Why we don't use Yjs"]]></title><description><![CDATA[
<p>Thanks Nick. I am aware. The blog post directly links to the PR you merged some days ago that (as I understand it) kicks off the effort. I also mention specifically I know you're working on it.</p>
]]></description><pubDate>Wed, 18 Mar 2026 07:10:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=47422495</link><dc:creator>antics</dc:creator><comments>https://news.ycombinator.com/item?id=47422495</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47422495</guid></item><item><title><![CDATA[New comment by antics in "Lies I was told about collaborative editing, Part 2: Why we don't use Yjs"]]></title><description><![CDATA[
<p>Just tying up loose ends here, in this other comment I suggest that Kevin and I are not on the same page about the point I was making in the article: <a href="https://news.ycombinator.com/item?id=47422455">https://news.ycombinator.com/item?id=47422455</a><p>I will additionally note that I'm not making any point about performance in this comment either, though. "Perform" in this context is not about 60fps, it's about whether, like, plugins work.</p>
]]></description><pubDate>Wed, 18 Mar 2026 07:09:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=47422490</link><dc:creator>antics</dc:creator><comments>https://news.ycombinator.com/item?id=47422490</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47422490</guid></item><item><title><![CDATA[New comment by antics in "Lies I was told about collaborative editing, Part 2: Why we don't use Yjs"]]></title><description><![CDATA[
<p>Hi Kevin, author here, are you sure we are on the same page about what I'm saying in this article?<p>For example, the debugging section is <i>NOT</i> about debugging problems inside Yjs, it's about debugging <i>one's own bugs</i> while one is <i>using</i> something like Yjs or prosemirror-collab. I'm normally a happy gambler but I actually think the Yjs GC algorithm probably does do what it says... indeed, my complaint is that I specifically do not want that behavior. :)<p>Likewise, the point I'm making about performance is <i>NOT</i> that Yjs is "slow". I'm saying that it's empirically very challenging to meet the 16ms perf budget even in the simplest possible <i>realistic</i> collab scenario... and that because of this, it is (1) very unappealing and (2) in our experience, challenging to attempt to do this when you <i>also</i> have to do a pile of extra things that are unrelated to the task at hand, like translate `Transaction` to and from operations on an XML doc, and deal with all the consequences of messed up positions passed to plugins. I do understand you have your own benchmarks that give you the confidence to (without qualifications) claim that y-prosemirror "runs at 60fps". You really are not curious about why we think that's not the case?<p>If we can't get to a shared understand what is being said here, it's going to be very hard to talk about it at all. And on the two material points at stack in your response, I believe you have the precise opposite understanding of what was written. I'm happy to keep discussing but it feels like we're starting from scratch after this response, again.</p>
]]></description><pubDate>Wed, 18 Mar 2026 07:05:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=47422455</link><dc:creator>antics</dc:creator><comments>https://news.ycombinator.com/item?id=47422455</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47422455</guid></item><item><title><![CDATA[New comment by antics in "Lies I was told about collaborative editing, Part 2: Why we don't use Yjs"]]></title><description><![CDATA[
<p>So, we are basically making two points.<p>First, the fact that Yjs bindings, by design (for ~6 years), replace the entire document, does in my opinion, indicate a fundamental misunderstand what rich text editors need to perform well in <i>any</i> circumstance, not just collaborative ones. As I say in the article... I hope to be able to write another article that this has changed and they now "get" it, but for now I do not think it is appropriate to trust Yjs with this task for production-grade editors. I'm sorry to write this, but I do think it's true! I'm not trying to bag on anyone!<p>Second, and more material: to deploy Yjs to production in the centralized case, I think you are very much swimming against the current of its architecture. Just one example is permissions. There is no established way to determine which peers in a truly-p2p architecture have permissions to add comments vs edit, so you will end up using a centralized server for that. But that's not free, CRDTs are mechanically much more complicated! For example, you have to figure out how to disallow a user to make mark-only edits if they have "commenter" access, but allow editing the whole doc for "editor" access. This is trivial in `prosemirror-collab` (say) but it's very hard in Yjs because you have to map it "through" their XML transformations model.<p>I'm happy to talk more about this if it's helpful. But yes, we are trying to say some stuff about Yjs specifically, and some stuff about CRDTs generally.</p>
]]></description><pubDate>Mon, 16 Mar 2026 21:34:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=47405233</link><dc:creator>antics</dc:creator><comments>https://news.ycombinator.com/item?id=47405233</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47405233</guid></item><item><title><![CDATA[New comment by antics in "Lies I was told about collaborative editing, Part 2: Why we don't use Yjs"]]></title><description><![CDATA[
<p>I know it seems that way, but it's actually not 80% of the way to a CRDT because rich text CRDTs are an open research problem. Yjs instead models the document as an XML tree and then attempts to recreate the underlying rich text transaction. This is much, much harder than it looks, and it's inherently lossy, and this fundamental impedance mismatch is one of the core complaints of this article. Some progress is being made on rich text CRDTS, <i>e.g.</i>, Peritext[1]. But that only happened a few years ago.<p>Another important thing is that CRDTs by themselves <i>cannot</i> give you a causal ordering (by which I mean this[2]), because definitionally causal ordering requires a central authority. Funnily enough, the `prosemirror-collab` and `prosemirror-collab-commit` <i>do</i> give you this, because they depend on an authority with a monotonically increasing clock. They also also are <i>MUCH</i> better at representing the user intent, because they express the entirety of the rich text transaction model. This is very emphatically <i>NOT</i> the case with CRDTs, which have to pipe your transaction model through something vastly weaker and less expressive (XML transforms), and force you to completely reconstruct the `Transaction` from scratch.<p>Lastly for the algorithm you propose... that is, sort of what `prosemirror-collab-commit` is doing.<p>[1]: <a href="https://www.inkandswitch.com/peritext/" rel="nofollow">https://www.inkandswitch.com/peritext/</a><p>[2]: <a href="https://www.scattered-thoughts.net/writing/causal-ordering/" rel="nofollow">https://www.scattered-thoughts.net/writing/causal-ordering/</a></p>
]]></description><pubDate>Mon, 16 Mar 2026 21:05:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=47404874</link><dc:creator>antics</dc:creator><comments>https://news.ycombinator.com/item?id=47404874</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47404874</guid></item><item><title><![CDATA[New comment by antics in "Lies I was told about collaborative editing, Part 2: Why we don't use Yjs"]]></title><description><![CDATA[
<p>It <i>might</i> fix the replace-everything bug. It definitely does not fix any of the other issues I mentioned. Even just taking the permissions problem: Yjs is built for a truly p2p topology you as a baseline will have a very hard time establishign which peers are and aren't allowed to make which edits. You can adopt a central server, but then the machinery that makes Yjs amenable to p2p is uselessly complicated. And if you cross that bridge, you'll still have to figure out how to let some clients do mark-only edits to the document for things like comments, while other can edit the whole text. That <i>can</i> be done but it's not at all straightforward, because position mapping is very complicated in the Yjs world.</p>
]]></description><pubDate>Mon, 16 Mar 2026 20:47:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=47404654</link><dc:creator>antics</dc:creator><comments>https://news.ycombinator.com/item?id=47404654</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47404654</guid></item></channel></rss>