<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: lichtenberger</title><link>https://news.ycombinator.com/user?id=lichtenberger</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 22 Sep 2026 11:54:14 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=lichtenberger" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[Value Classes Still Need Compiler Sympathy]]></title><description><![CDATA[
<p>Article URL: <a href="https://johan-sjolen.github.io/post/compiler-sympathy/compiler-sympathy/">https://johan-sjolen.github.io/post/compiler-sympathy/compiler-sympathy/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=49445884">https://news.ycombinator.com/item?id=49445884</a></p>
<p>Points: 89</p>
<p># Comments: 46</p>
]]></description><pubDate>Wed, 26 Aug 2026 08:59:15 +0000</pubDate><link>https://johan-sjolen.github.io/post/compiler-sympathy/compiler-sympathy/</link><dc:creator>lichtenberger</dc:creator><comments>https://news.ycombinator.com/item?id=49445884</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49445884</guid></item><item><title><![CDATA[JEP 401: Value Objects (Preview)]]></title><description><![CDATA[
<p>Article URL: <a href="https://openjdk.org/jeps/401">https://openjdk.org/jeps/401</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48940261">https://news.ycombinator.com/item?id=48940261</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 16 Jul 2026 21:07:20 +0000</pubDate><link>https://openjdk.org/jeps/401</link><dc:creator>lichtenberger</dc:creator><comments>https://news.ycombinator.com/item?id=48940261</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48940261</guid></item><item><title><![CDATA[New comment by lichtenberger in "Show HN: SirixDB 1.0 Beta – Git-Like Versioning, Diffs, Time-Travel Queries"]]></title><description><![CDATA[
<p>Oh, and Sirix optionally already stores a rolling merkle hash over the data.</p>
]]></description><pubDate>Thu, 16 Jul 2026 04:32:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=48930373</link><dc:creator>lichtenberger</dc:creator><comments>https://news.ycombinator.com/item?id=48930373</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48930373</guid></item><item><title><![CDATA[New comment by lichtenberger in "Show HN: SirixDB 1.0 Beta – Git-Like Versioning, Diffs, Time-Travel Queries"]]></title><description><![CDATA[
<p>It's first and foremost a document store / so for JSON or XML currently, that's why it's not SQL compliant. I think other query languages as JSONiq are much more tailored to this, albeit a niche of course (based on XQuery).<p>Regarding tamper proof audit logs not much is missing. Cryptographic hashes instead of XXH3, a commit hash chain and signed commits. Actually, I think that's a great addition with minimal changes needed.<p>What you can audit currently is "who changed what" for instance.</p>
]]></description><pubDate>Thu, 16 Jul 2026 04:13:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=48930247</link><dc:creator>lichtenberger</dc:creator><comments>https://news.ycombinator.com/item?id=48930247</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48930247</guid></item><item><title><![CDATA[New comment by lichtenberger in "Show HN: SirixDB 1.0 Beta – Git-Like Versioning, Diffs, Time-Travel Queries"]]></title><description><![CDATA[
<p>Besides, documents are split into fine granular nodes, so we have "no" upper limit besides running out of 48bit nodeKeys/node identifiers at some point maybe.<p>Furthermore, a (versioned, as always) path summary keeps track of all distinct paths, which is a key ingredient for the optional secondary indexes, which can index paths or paths and content among other stuff as simply indexing fields. Optionally you can also add indexes to speed up aggregate queries (which are basically column projections).<p>Furthermore, the whole storage can self-validate through checksums stored in parent pages up to the root as in ZFS for instance.<p>DeweyIDs can be optionally stored for each node, which can speed up the comparison of subtrees between revisions (in order to detect simply which changesets belong to a certain subtree without having to traverse ancestor chains). They lend themselves well for compression.<p>We even have importers which can identify based on heuristics minimal edit operations to import existing revisions of XML or JSON documents and to commit these with hopefully a minimal or close to minimal set of update operations, but it depends heavily on the data.</p>
]]></description><pubDate>Wed, 15 Jul 2026 21:52:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=48927555</link><dc:creator>lichtenberger</dc:creator><comments>https://news.ycombinator.com/item?id=48927555</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48927555</guid></item><item><title><![CDATA[Show HN: SirixDB 1.0 Beta – Git-Like Versioning, Diffs, Time-Travel Queries]]></title><description><![CDATA[
<p>Hi HN! I've posted SirixDB here before, back in 2019 (<a href="https://news.ycombinator.com/item?id=19834681">https://news.ycombinator.com/item?id=19834681</a>) and again in 2023 (<a href="https://news.ycombinator.com/item?id=38252963">https://news.ycombinator.com/item?id=38252963</a>).<p>The core idea behind SirixDB is, that history is a first-class citizen. Every commit stores a lightweight, queryable revision. You can query any point in time, even individual nodes (for instance JSON values), diff arbitrary revisions, and efficiently track how data evolved without replaying events.<p>Unlike traditional event stores, historical states do not need to be reconstructed by replaying events nor do we have to think about projections. Revisions are directly queryable.<p>A simple example:<p>Jan 1: Record "Price = $100, valid from Jan 1". Stored on Jan 1 (transaction time).<p>Jan 20: Discover price was actually $95 on Jan 1. Commit correction.<p>After correction, you can ask across both axes:<p>- "What did we THINK the price was on Jan 16?" -> $100 (Transaction time)<p>- "What WAS the price on Jan 1?" -> $95 (Valid time)<p>I've worked on this in my spare time since 2013, following its academic precursor (Idefix/Treetank) at the University of Konstanz. The architecture relies on an append-only physical log and a persistent copy-on-write page trie.<p>A high level view of the architecture:<p>Physical Log (append-only, sequential writes)<p><pre><code>  ┌────────────────────────────────────────────────────────────────────────┐
  │ [R1:Root] [R1:P1] [R1:P2] [R2:Root] [R2:P1'] [R3:Root] [R3:P2'] ...    │
  └────────────────────────────────────────────────────────────────────────┘
       t=0      t=1     t=2      t=3      t=4       t=5       t=6    → time
</code></pre>
Each revision is indexed, and unchanged pages are shared:<p><pre><code>  [Rev 1]          [Rev 2]          [Rev 3]
     │                │                │
     ▼                ▼                ▼
  [Root₁]          [Root₂]          [Root₃]
   │   │            │   │            │   │
   │   └─────────┐  │   └────────┐   │   └─────────┐
   ▼             ▼  ▼            ▼   ▼             ▼
  ┌──────┐       ┌──────┐       ┌──────┐       ┌──────┐
  │  P1  │       │  P2  │       │ P1'  │       │ P2'  │
  └──────┘       └──────┘       └──────┘       └──────┘
   Rev 1         Rev 1+2        Rev 2+3         Rev 3
                 (shared)       (shared)
</code></pre>
Beneath the root pages sit node and secondary indexes, using a 
novel sliding-snapshot algorithm to balance read/write performance.
Everything is queryable using JSONiq via the Brackit compiler.<p>Back in 2019, and even in 2023, SirixDB was very slow due to GC pressure. Unlike most other document stores, SirixDB stores fine-grained nodes, and I came to realize that an on-heap (JVM) representation made up of lots of small objects simply didn't make sense. I measured it with async-profiler — with some help from Andrei Pangin himself — and the result was that the poor throughput was due to the sheer amount of allocations which scaled almost linearly with the number of open transactions.<p>Working a full-time software engineering job, I lacked the energy for a massive spare-time rewrite. About a year ago, I started experimenting with AI. It turned out to be ideal for automating the tedious, repetitive parts of migrating the storage layer to Java's Foreign Function & Memory API, storing pages completely off-heap.<p>Looking further ahead, the append-only, immutable-page design maps naturally onto object storage like S3 and distributed logs like Kafka for a cloud version, and initial prototypes already exist. Maybe that becomes a commercial service one day, but for now, I'm just thrilled to see these core design principles finally proven out.There's an interactive demo, documentation, and the code is on GitHub. I'd love feedback and am happy to answer questions!<p>kind regards<p>Johannes<p>[1] <a href="https://sirix.io" rel="nofollow">https://sirix.io</a> | <a href="https://github.com/sirixdb/sirix" rel="nofollow">https://github.com/sirixdb/sirix</a><p>[2] <a href="https://sirix.io/docs/architecture.html" rel="nofollow">https://sirix.io/docs/architecture.html</a><p>[3] <a href="https://demo.sirix.io" rel="nofollow">https://demo.sirix.io</a><p>[4] <a href="https://sirix.io/docs/" rel="nofollow">https://sirix.io/docs/</a><p>[5] <a href="http://brackit.io" rel="nofollow">http://brackit.io</a></p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48922631">https://news.ycombinator.com/item?id=48922631</a></p>
<p>Points: 13</p>
<p># Comments: 6</p>
]]></description><pubDate>Wed, 15 Jul 2026 15:46:50 +0000</pubDate><link>https://github.com/sirixdb/sirix</link><dc:creator>lichtenberger</dc:creator><comments>https://news.ycombinator.com/item?id=48922631</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48922631</guid></item><item><title><![CDATA[Show HN: SirixDB – a bitemporal JSON database system with sub-page versioning]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/sirixdb/sirix">https://github.com/sirixdb/sirix</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48909919">https://news.ycombinator.com/item?id=48909919</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 14 Jul 2026 17:07:59 +0000</pubDate><link>https://github.com/sirixdb/sirix</link><dc:creator>lichtenberger</dc:creator><comments>https://news.ycombinator.com/item?id=48909919</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48909919</guid></item><item><title><![CDATA[First Valhalla related stuff will land in Java 28]]></title><description><![CDATA[
<p>Article URL: <a href="https://mail.openjdk.org/archives/list/jdk-dev@openjdk.org/thread/AIA3O3LHFZ6T7TIPH7KZT4WS4B6U72U5/">https://mail.openjdk.org/archives/list/jdk-dev@openjdk.org/thread/AIA3O3LHFZ6T7TIPH7KZT4WS4B6U72U5/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48472941">https://news.ycombinator.com/item?id=48472941</a></p>
<p>Points: 5</p>
<p># Comments: 1</p>
]]></description><pubDate>Wed, 10 Jun 2026 07:51:50 +0000</pubDate><link>https://mail.openjdk.org/archives/list/jdk-dev@openjdk.org/thread/AIA3O3LHFZ6T7TIPH7KZT4WS4B6U72U5/</link><dc:creator>lichtenberger</dc:creator><comments>https://news.ycombinator.com/item?id=48472941</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48472941</guid></item><item><title><![CDATA[Valhalla when? "Now"? Java 27 or 28?]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/openjdk/jdk/pull/31120">https://github.com/openjdk/jdk/pull/31120</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48321526">https://news.ycombinator.com/item?id=48321526</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Fri, 29 May 2026 10:57:53 +0000</pubDate><link>https://github.com/openjdk/jdk/pull/31120</link><dc:creator>lichtenberger</dc:creator><comments>https://news.ycombinator.com/item?id=48321526</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48321526</guid></item><item><title><![CDATA[LeanStore: In-Memory Data Management Beyond Main Memory (Viktor Leis) [video]]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.youtube.com/watch?v=o467OKy7Q0g">https://www.youtube.com/watch?v=o467OKy7Q0g</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46799224">https://news.ycombinator.com/item?id=46799224</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 28 Jan 2026 18:08:04 +0000</pubDate><link>https://www.youtube.com/watch?v=o467OKy7Q0g</link><dc:creator>lichtenberger</dc:creator><comments>https://news.ycombinator.com/item?id=46799224</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46799224</guid></item><item><title><![CDATA[Ask HN: Where is software engineering moving towards in the next years?]]></title><description><![CDATA[
<p>Since at least half a year now, I'm often times asking myself where we're moving towards regarding software engineering. Regarding my spare time projects I'm nowadays using Cursor/Claude Code to work on my vision (a database system since 2013 as a continuation of a project at the University of Konstanz) to do big refactorings I always wanted to do, but never found the drive to start as it would have been a major multi-year effort. Now, in the age of AI agents it's really impressive, as of course there are often times very repetitive patterns, but also regarding other issues I never had the time (and skills?) to solve myself. Of course, sometimes the tests make no sense, it's going haywire sometimes (for instance rather deleting tests or "simplify" them, instead of fixing real production code issues...). But on the other hand I built a full frontend with the help of AI agents (and I'm a backend engineer, always have been with a little embedded software engineering expertise).<p>That said, whenever I find some time, I can work on my vision much more efficiently (mostly as a product owner + architect in one person rather than writing everything "by hand"). So, I of course wonder if our jobs are safe in the future. I think you'll always have to heavily guide the agents and stop them immediately whenever they're about to get haywire and thus you have to have the skills of a senior software engineer, but on the other hand I'm sure that small teams of senior engineers can be much more efficient than before. So, either it's that you'll need less software engineers at some point, or if it's rather that you can deliver products faster with more ideas implemented or simply that new ideas can be explored much more efficiently as before => more small startups?). I really don't know...</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46765666">https://news.ycombinator.com/item?id=46765666</a></p>
<p>Points: 2</p>
<p># Comments: 3</p>
]]></description><pubDate>Mon, 26 Jan 2026 13:56:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=46765666</link><dc:creator>lichtenberger</dc:creator><comments>https://news.ycombinator.com/item?id=46765666</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46765666</guid></item><item><title><![CDATA[Data Oriented Programming, Beyond Records]]></title><description><![CDATA[
<p>Article URL: <a href="https://mail.openjdk.org/pipermail/amber-spec-experts/2026-January/004307.html">https://mail.openjdk.org/pipermail/amber-spec-experts/2026-January/004307.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46721131">https://news.ycombinator.com/item?id=46721131</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 22 Jan 2026 16:07:44 +0000</pubDate><link>https://mail.openjdk.org/pipermail/amber-spec-experts/2026-January/004307.html</link><dc:creator>lichtenberger</dc:creator><comments>https://news.ycombinator.com/item?id=46721131</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46721131</guid></item><item><title><![CDATA[The Static Dynamic JVM – A Many Layered Dive [video]]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.youtube.com/watch?v=RCxYsdeglDA">https://www.youtube.com/watch?v=RCxYsdeglDA</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46586424">https://news.ycombinator.com/item?id=46586424</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Mon, 12 Jan 2026 10:15:20 +0000</pubDate><link>https://www.youtube.com/watch?v=RCxYsdeglDA</link><dc:creator>lichtenberger</dc:creator><comments>https://news.ycombinator.com/item?id=46586424</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46586424</guid></item><item><title><![CDATA[After the Big Tech Layoffs]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.youtube.com/watch?v=2mA4vZeHp8o">https://www.youtube.com/watch?v=2mA4vZeHp8o</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46421733">https://news.ycombinator.com/item?id=46421733</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Mon, 29 Dec 2025 15:38:30 +0000</pubDate><link>https://www.youtube.com/watch?v=2mA4vZeHp8o</link><dc:creator>lichtenberger</dc:creator><comments>https://news.ycombinator.com/item?id=46421733</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46421733</guid></item><item><title><![CDATA[(Generational) Shenandoah GC (Low Latency) Support in GraalVM Native Images]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/oracle/graal/issues/12237">https://github.com/oracle/graal/issues/12237</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46335524">https://news.ycombinator.com/item?id=46335524</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Sat, 20 Dec 2025 11:56:19 +0000</pubDate><link>https://github.com/oracle/graal/issues/12237</link><dc:creator>lichtenberger</dc:creator><comments>https://news.ycombinator.com/item?id=46335524</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46335524</guid></item><item><title><![CDATA[Implementation Rust: One Billion Rows Challenge]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.youtube.com/watch?v=g2EKNXKKGM4">https://www.youtube.com/watch?v=g2EKNXKKGM4</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46098325">https://news.ycombinator.com/item?id=46098325</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Sun, 30 Nov 2025 17:00:29 +0000</pubDate><link>https://www.youtube.com/watch?v=g2EKNXKKGM4</link><dc:creator>lichtenberger</dc:creator><comments>https://news.ycombinator.com/item?id=46098325</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46098325</guid></item><item><title><![CDATA[Beyond the Vector API – A Quest for a Lower Level API [JVMLS]]]></title><description><![CDATA[
<p>Article URL: <a href="https://inside.java/2025/11/16/jvmls-vector-api/">https://inside.java/2025/11/16/jvmls-vector-api/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45978268">https://news.ycombinator.com/item?id=45978268</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 19 Nov 2025 11:24:13 +0000</pubDate><link>https://inside.java/2025/11/16/jvmls-vector-api/</link><dc:creator>lichtenberger</dc:creator><comments>https://news.ycombinator.com/item?id=45978268</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45978268</guid></item><item><title><![CDATA[Try the New Valhalla EA Build]]></title><description><![CDATA[
<p>Article URL: <a href="https://inside.java/2025/11/06/newscast-100/">https://inside.java/2025/11/06/newscast-100/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45833515">https://news.ycombinator.com/item?id=45833515</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 06 Nov 2025 10:14:42 +0000</pubDate><link>https://inside.java/2025/11/06/newscast-100/</link><dc:creator>lichtenberger</dc:creator><comments>https://news.ycombinator.com/item?id=45833515</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45833515</guid></item><item><title><![CDATA[Try Out JEP 401 Value Classes and Objects]]></title><description><![CDATA[
<p>Article URL: <a href="https://inside.java/2025/10/27/try-jep-401-value-classes/">https://inside.java/2025/10/27/try-jep-401-value-classes/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45758196">https://news.ycombinator.com/item?id=45758196</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 30 Oct 2025 10:03:19 +0000</pubDate><link>https://inside.java/2025/10/27/try-jep-401-value-classes/</link><dc:creator>lichtenberger</dc:creator><comments>https://news.ycombinator.com/item?id=45758196</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45758196</guid></item><item><title><![CDATA[Try Out JEP 401 Value Classes and Objects]]></title><description><![CDATA[
<p>Article URL: <a href="https://inside.java/2025/10/27/try-jep-401-value-classes/">https://inside.java/2025/10/27/try-jep-401-value-classes/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45719674">https://news.ycombinator.com/item?id=45719674</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Mon, 27 Oct 2025 11:19:46 +0000</pubDate><link>https://inside.java/2025/10/27/try-jep-401-value-classes/</link><dc:creator>lichtenberger</dc:creator><comments>https://news.ycombinator.com/item?id=45719674</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45719674</guid></item></channel></rss>