<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: xeubie</title><link>https://news.ycombinator.com/user?id=xeubie</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 26 Jun 2026 05:52:40 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=xeubie" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by xeubie in "RRB-Trees: Efficient Immutable Vectors (2012) [pdf]"]]></title><description><![CDATA[
<p>I used this data structure in my immutable database (see profile) but eventually switched to a B-tree because I believe RRB trees are inherently flawed. If you do a large number of slices and concats, it is possible for the tree to contain so many gaps it that the tree grows so deep it can't be modified anymore. At first I thought it was a bug in my own implementation but I eventually found the same bug in rrb-vector, the clojure implementation (see CRRBV-14). In fact, the maintainer of that library reached the same conclusion I did and switched to B-trees: <a href="https://github.com/jafingerhut/core.btree-vector" rel="nofollow">https://github.com/jafingerhut/core.btree-vector</a><p>Still, I have huge respect for Phil Bagwell and I make heavy use of his hash array mapped trie. But this issue with RRB trees makes it impossible for me to use them, especially for an on-disk data structure whose long lifespan makes it way more likely that the problem will eventually happen.</p>
]]></description><pubDate>Thu, 25 Jun 2026 23:08:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=48680353</link><dc:creator>xeubie</dc:creator><comments>https://news.ycombinator.com/item?id=48680353</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48680353</guid></item><item><title><![CDATA[New comment by xeubie in "NSA lost access to Mythos amid Anthropic dispute"]]></title><description><![CDATA[
<p>Blue badges were for government employees (like I was), and green badges were for private contractors. And yes they have a lot of math and physics guys; my own physics lecturer was in my orientation class, actually. He was there for quantum computing, which reinforces my point. The government can be good at pioneering unproven / uncommercialized technologies, but in general they are like a blunt weapon; the profit motive and lack of bureaucracy eventually makes the private sector far better for improving the technology later. In the case of LLMs, they didn't even originate in government, and I don't think there's any chance they are being developed there at a more advanced level.</p>
]]></description><pubDate>Wed, 24 Jun 2026 21:56:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=48666086</link><dc:creator>xeubie</dc:creator><comments>https://news.ycombinator.com/item?id=48666086</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48666086</guid></item><item><title><![CDATA[New comment by xeubie in "NSA lost access to Mythos amid Anthropic dispute"]]></title><description><![CDATA[
<p>I can't say what they're doing now because I worked for the NSA 15 years ago but the view of them as an omnipotent power is a product of Hollywood. The government is good at throwing an ungodly amount of resources at something to get a result through sheer attrition, and so they are often the source of original development of technologies. The private sector has always been much better at building a technology to greater sophistication and efficiency. There may be blue badgers in Fort Meade trying to train models but there is no chance they are competitive with the frontier AI companies. It's like saying the government has an amazing home-grown fighter aircraft that is beyond what Lockheed has ever made...they delegate that stuff to private companies for a reason.</p>
]]></description><pubDate>Wed, 24 Jun 2026 19:31:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=48664643</link><dc:creator>xeubie</dc:creator><comments>https://news.ycombinator.com/item?id=48664643</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48664643</guid></item><item><title><![CDATA[The Timelessness of TUIs]]></title><description><![CDATA[
<p>Article URL: <a href="https://xit-vcs.github.io/xitlog/the-timelessness-of-tuis.html">https://xit-vcs.github.io/xitlog/the-timelessness-of-tuis.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47848303">https://news.ycombinator.com/item?id=47848303</a></p>
<p>Points: 5</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 21 Apr 2026 13:10:29 +0000</pubDate><link>https://xit-vcs.github.io/xitlog/the-timelessness-of-tuis.html</link><dc:creator>xeubie</dc:creator><comments>https://news.ycombinator.com/item?id=47848303</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47848303</guid></item><item><title><![CDATA[New comment by xeubie in "What if database branching was easy?"]]></title><description><![CDATA[
<p>Yes the article I linked mentioned d/with (speculative writes), and you are right that it is useful for testing -- but not much else, since it is purely in-memory. If you want to call that in-memory branching that's fine, I'll concede that.<p>My database supports persisted branching, but not just at the database level. You can "branch" (i.e., make a fast clone) data at any level, such as data for a specific user. Many production uses for this, not just testing, yet almost no database supports this. It uses the same HAMT algorithm that Clojure uses.</p>
]]></description><pubDate>Mon, 20 Apr 2026 17:11:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=47837356</link><dc:creator>xeubie</dc:creator><comments>https://news.ycombinator.com/item?id=47837356</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47837356</guid></item><item><title><![CDATA[New comment by xeubie in "What if database branching was easy?"]]></title><description><![CDATA[
<p>If each "branch" is read only, it's not a branch at all. The entire idea of branching implies that you can make changes on one branch, then switch to another branch and make changes to it. They start from the same point and grow in different directions, as the metaphor of branches on a tree depicts.</p>
]]></description><pubDate>Mon, 20 Apr 2026 15:44:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=47835979</link><dc:creator>xeubie</dc:creator><comments>https://news.ycombinator.com/item?id=47835979</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47835979</guid></item><item><title><![CDATA[New comment by xeubie in "What if database branching was easy?"]]></title><description><![CDATA[
<p>Surprisingly, neither Datomic nor XTDB support branching. See: <a href="https://blog.danieljanus.pl/datomic-forking-the-past/" rel="nofollow">https://blog.danieljanus.pl/datomic-forking-the-past/</a><p>I actually built my own immutable database which <i>does</i> support branching (see profile), so it seems like a huge miss that these ones don't. It's pretty much the main reason I would want an immutable database.</p>
]]></description><pubDate>Mon, 20 Apr 2026 13:27:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=47834021</link><dc:creator>xeubie</dc:creator><comments>https://news.ycombinator.com/item?id=47834021</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47834021</guid></item><item><title><![CDATA[Show HN: XitDB – an immutable single-file database]]></title><description><![CDATA[
<p>I couldn't find a database that was immutable (like Datomic) and embedded (like SQLite), so I made one. The reference impl is in Zig and there are now ports for Java, Clojure, TypeScript, and Go.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47805446">https://news.ycombinator.com/item?id=47805446</a></p>
<p>Points: 8</p>
<p># Comments: 0</p>
]]></description><pubDate>Fri, 17 Apr 2026 12:58:59 +0000</pubDate><link>https://github.com/xit-vcs/xitdb</link><dc:creator>xeubie</dc:creator><comments>https://news.ycombinator.com/item?id=47805446</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47805446</guid></item><item><title><![CDATA[New comment by xeubie in "Artifacts: Versioned storage that speaks Git"]]></title><description><![CDATA[
<p>I really like it. API-first git repos without the limitations of a git service like github that are built primarily for humans. Looks like a competitor to code.storage by pierre.<p>Zig is a great choice. I spent the last three years working on my own git implementation in Zig (see my profile) and it's really the perfect language for this. It gives precise low level control and heavily emphasizes eliminating dependencies (like libc) which makes it perfect for web assembly.</p>
]]></description><pubDate>Thu, 16 Apr 2026 16:57:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=47796251</link><dc:creator>xeubie</dc:creator><comments>https://news.ycombinator.com/item?id=47796251</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47796251</guid></item><item><title><![CDATA[Show HN: Xit – a Git-compatible VCS written in Zig]]></title><description><![CDATA[
<p>The marquee feature is patch-based merging, similar to Darcs and Pijul. I think xit is the first version control system (VCS) to have this feature while still being git compatible. See the 100% human-written readme for more.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47777702">https://news.ycombinator.com/item?id=47777702</a></p>
<p>Points: 9</p>
<p># Comments: 1</p>
]]></description><pubDate>Wed, 15 Apr 2026 11:36:20 +0000</pubDate><link>https://github.com/xit-vcs/xit</link><dc:creator>xeubie</dc:creator><comments>https://news.ycombinator.com/item?id=47777702</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47777702</guid></item><item><title><![CDATA[New comment by xeubie in "Zig 0.16.0 Release Notes"]]></title><description><![CDATA[
<p>What a banger of a release. The new `Io` interface was a huge breaking change for my project, but I made the transition. Zig seems to be pulling the same trick it pulled with allocators: just make it an explicit value that you pass around. Explicit allocators felt obviously right in retrospect, and so far this feels obviously right too.</p>
]]></description><pubDate>Tue, 14 Apr 2026 17:00:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=47768218</link><dc:creator>xeubie</dc:creator><comments>https://news.ycombinator.com/item?id=47768218</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47768218</guid></item><item><title><![CDATA[New comment by xeubie in "Clojure on Fennel Part One: Persistent Data Structures"]]></title><description><![CDATA[
<p>Clojure's immutable HAMTs are still a superpower nearly 20 years later. They've been copied in pretty much every language as a library (I did so myself in Zig) but what really makes it work well in Clojure is the fact that they're built into the language, so the entire ecosystem is built around them. Libraries that were made independently usually fit together like a glove because they are all just maps/vectors in -> maps/vectors out.</p>
]]></description><pubDate>Fri, 10 Apr 2026 16:54:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=47720833</link><dc:creator>xeubie</dc:creator><comments>https://news.ycombinator.com/item?id=47720833</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47720833</guid></item><item><title><![CDATA[New comment by xeubie in "I imported the full Linux kernel git history into pgit"]]></title><description><![CDATA[
<p>True, git poorly imitated monotone's performance problems.</p>
]]></description><pubDate>Thu, 09 Apr 2026 10:05:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=47701524</link><dc:creator>xeubie</dc:creator><comments>https://news.ycombinator.com/item?id=47701524</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47701524</guid></item><item><title><![CDATA[New comment by xeubie in "Java 26 is here"]]></title><description><![CDATA[
<p>I think astronomers could measure the age of the universe in nano-Valhallas. Every year, it feels 50% closer to completion...<p>In all seriousness I'm happy with what Mr. Goetz and the team have done. Sealed interfaces (java 17) + exhaustive switch statements (java 21) means we now have union types in java! And instead of jumping on the async/await bandwagon we now have a more general solution that doesn't lead to API duplication (virtual threads). But Valhalla has been a veeery long time coming.</p>
]]></description><pubDate>Tue, 17 Mar 2026 20:05:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=47417589</link><dc:creator>xeubie</dc:creator><comments>https://news.ycombinator.com/item?id=47417589</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47417589</guid></item></channel></rss>