<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: JoelJacobson</title><link>https://news.ycombinator.com/user?id=JoelJacobson</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 28 Jul 2026 17:36:35 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=JoelJacobson" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by JoelJacobson in "Fil-C: Garbage In, Memory Safety Out [video]"]]></title><description><![CDATA[
<p>I'm not a native English speaker, I know "memory safe" has a precise technical meaning, but the word "safe" still feels a bit strange to me given that a memory-safety bug can make the program crash at run-time.<p>Sure, Fil-C prevents the bug from possibly being exploited, which is a huge improvement. But crashing can be a DoS attack, and if running a mission-critical system, it might not be an acceptable outcome.<p>I just feel the already very good presentation could have been made much better if it had put more weight on explaining these trade-offs.</p>
]]></description><pubDate>Sat, 25 Jul 2026 08:46:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=49045770</link><dc:creator>JoelJacobson</dc:creator><comments>https://news.ycombinator.com/item?id=49045770</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49045770</guid></item><item><title><![CDATA[New comment by JoelJacobson in "Fil-C: Garbage In, Memory Safety Out [video]"]]></title><description><![CDATA[
<p>I was amazed by the presentation all the way up until 33:47, where the buggy program compiles and only errors out when the invalid access is executed.  So apparently Fil-C enforces memory safety dynamically at <i>run-time</i>, rather than detecting these bugs at <i>compile-time</i>.<p>A new language designed around memory safety, such as Rust, can reject large and important classes of memory-safety bugs at compile-time.  Rust does not catch everything at compile-time, like bounds checks and RefCell, which are checked at run-time(, and the problems due to unsafe and C interop like explained in the presentation.)<p>Still, IMO the comparison becomes a bit apples vs pears when bragging about how much more memory-safe Fil-C is than Rust.  It would have been helpful to explain this important difference about run-time vs compile-time.<p>Very cool and useful anyway.</p>
]]></description><pubDate>Sat, 25 Jul 2026 07:33:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=49045347</link><dc:creator>JoelJacobson</dc:creator><comments>https://news.ycombinator.com/item?id=49045347</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49045347</guid></item><item><title><![CDATA[New comment by JoelJacobson in "Postgres LISTEN/NOTIFY actually scales"]]></title><description><![CDATA[
<p>It did fix the original "Postgres LISTEN/NOTIFY does not scale" [1] post's problem though, which was mentioned in an update of that article:<p><pre><code>    Update: Fixed in Postgres core
    This commit has eliminated the bottleneck in the postgres core.
    Credit to Joel Jacobson and the core postgres contributors for resolving this.
</code></pre>
[1] <a href="https://www.recall.ai/blog/postgres-listen-notify-does-not-scale" rel="nofollow">https://www.recall.ai/blog/postgres-listen-notify-does-not-s...</a></p>
]]></description><pubDate>Sat, 25 Jul 2026 05:21:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=49044755</link><dc:creator>JoelJacobson</dc:creator><comments>https://news.ycombinator.com/item?id=49044755</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49044755</guid></item><item><title><![CDATA[New comment by JoelJacobson in "Mathematicians still don't know the fastest way to multiply numbers"]]></title><description><![CDATA[
<p>Here is the full pgsql-hackers mailing list thread where you can follow our work from initial idea to commit: <a href="https://www.postgresql.org/message-id/flat/9d8a4a42-c354-41f3-bbf3-199e1957db97%40app.fastmail.com" rel="nofollow">https://www.postgresql.org/message-id/flat/9d8a4a42-c354-41f...</a></p>
]]></description><pubDate>Sun, 19 Jul 2026 06:30:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=48965495</link><dc:creator>JoelJacobson</dc:creator><comments>https://news.ycombinator.com/item?id=48965495</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48965495</guid></item><item><title><![CDATA[New comment by JoelJacobson in "Mathematicians still don't know the fastest way to multiply numbers"]]></title><description><![CDATA[
<p>Back in 2024, I was trying to optimize PostgreSQL's NUMERIC data type, which is base-10000, using Karatsuba.  The problem of finding the optimal threshold of when to switch to Karatsuba turned out to be really hard, since it depends on the size of both factors combined.  After some hundreds of hours, I gave up, and started thinking about if there could be a simpler solution.  I came to think about another idea I'd had before but abandoned, about 64-bit modernizing the digit base from 10k to 100M, but that would be a challenge due to existing data on disk.  Desperate of finding a solution, I wondered if it could be fast enough to do on-the-fly conversion back and forth between base-10k and base-100M, and then realized that, yes, of course, it will be fast already for quite small N (testing shows already between 3-6 base digits).  The trick basically reduced the N in O(N^2) into half, i.e. O((N/2)^2), with some O(2*N) cost for the conversion back and forth.<p>I had a lot of fun hacking on this idea together with the maintainer of the NUMERIC data type, and after two months the patch finally was ready and got committed:<p><a href="https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=8dc28d7eb868b6ce5a51614628bf46fc63c7e90c" rel="nofollow">https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit...</a></p>
]]></description><pubDate>Sun, 19 Jul 2026 06:27:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=48965489</link><dc:creator>JoelJacobson</dc:creator><comments>https://news.ycombinator.com/item?id=48965489</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48965489</guid></item><item><title><![CDATA[Ask HN: GLM-5.2 FP8 vs. BF16]]></title><description><![CDATA[
<p>Many cloud providers offering GLM-5.2 seems to only offer FP8. I wonder if anyone has evaluated the difference between FP8 and BF16 in terms of quality?</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48717458">https://news.ycombinator.com/item?id=48717458</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Mon, 29 Jun 2026 10:44:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=48717458</link><dc:creator>JoelJacobson</dc:creator><comments>https://news.ycombinator.com/item?id=48717458</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48717458</guid></item><item><title><![CDATA[New comment by JoelJacobson in "DuckDB Internals Part 1"]]></title><description><![CDATA[
<p>I was curious what the claim<p>"10-100x uplift in terms of speed compared to Postgres on things like regexp_matches()"<p>was about, so I checked, and DuckDB's regexp_matches() is <i>not</i> the same as PostgreSQL's regexp_matches().  DuckDB's version "Returns true if string contains the regexp pattern, false otherwise." [1] while PostgreSQL's "returns a set of text arrays of matching substring(s)" [2].<p>I think the closest think in PostgreSQL to DuckDB's regexp_matches() is `string ~ pattern` or `regexp_like(string, pattern)`.<p>[1] <a href="https://duckdb.org/docs/lts/sql/functions/regular_expressions" rel="nofollow">https://duckdb.org/docs/lts/sql/functions/regular_expression...</a>
[2] <a href="https://www.postgresql.org/docs/current/functions-matching.html" rel="nofollow">https://www.postgresql.org/docs/current/functions-matching.h...</a></p>
]]></description><pubDate>Sat, 20 Jun 2026 06:40:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=48606912</link><dc:creator>JoelJacobson</dc:creator><comments>https://news.ycombinator.com/item?id=48606912</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48606912</guid></item><item><title><![CDATA[New comment by JoelJacobson in "Cooling in Space"]]></title><description><![CDATA[
<p>Sorry, should have emphasized that it was the "much easier" part I didn't agree with in that interview.</p>
]]></description><pubDate>Sun, 14 Jun 2026 13:41:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=48527133</link><dc:creator>JoelJacobson</dc:creator><comments>https://news.ycombinator.com/item?id=48527133</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48527133</guid></item><item><title><![CDATA[New comment by JoelJacobson in "Cooling in Space"]]></title><description><![CDATA[
<p>This article made me think of a strange claim by Elon Musk at 07:08 in this [1] interview:<p>"Cooling is actually much easier in space than it is on earth. You can just radiate to the vacuum."<p>I don't think that follows.  The radiator is only the final heat sink. You still need to move heat from very dense chips into a deployable, space-rated radiator, and handle pumps, loops, leaks, redundancy, radiation damage, replacement, eclipses, Earth IR/albedo, and launch mass.<p>[1] <a href="https://youtu.be/D_1j5dVWNYI?si=R77VeVKlRXRhaBk5&t=428" rel="nofollow">https://youtu.be/D_1j5dVWNYI?si=R77VeVKlRXRhaBk5&t=428</a></p>
]]></description><pubDate>Sun, 14 Jun 2026 11:45:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=48526329</link><dc:creator>JoelJacobson</dc:creator><comments>https://news.ycombinator.com/item?id=48526329</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48526329</guid></item><item><title><![CDATA[New comment by JoelJacobson in "Cooling in Space"]]></title><description><![CDATA[
<p>I think we can't rule out the explanation that all the ideas of space data centers could be connected to a desire by some of finding additional applications for rockets that can transport stuff to space.</p>
]]></description><pubDate>Sun, 14 Jun 2026 11:04:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=48526090</link><dc:creator>JoelJacobson</dc:creator><comments>https://news.ycombinator.com/item?id=48526090</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48526090</guid></item><item><title><![CDATA[New comment by JoelJacobson in "CQL: Categorical Databases"]]></title><description><![CDATA[
<p>Here is a tl;dr as well: <a href="https://keyjoin.org/tldr.html" rel="nofollow">https://keyjoin.org/tldr.html</a></p>
]]></description><pubDate>Tue, 02 Jun 2026 15:04:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=48371233</link><dc:creator>JoelJacobson</dc:creator><comments>https://news.ycombinator.com/item?id=48371233</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48371233</guid></item><item><title><![CDATA[Claude Code vs. Codex: FRA challenge 75746d-2025]]></title><description><![CDATA[
<p>Article URL: <a href="https://gist.github.com/joelonsql/c49129b151d7e77fb83250f675ffea07">https://gist.github.com/joelonsql/c49129b151d7e77fb83250f675ffea07</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48339459">https://news.ycombinator.com/item?id=48339459</a></p>
<p>Points: 4</p>
<p># Comments: 0</p>
]]></description><pubDate>Sat, 30 May 2026 18:48:09 +0000</pubDate><link>https://gist.github.com/joelonsql/c49129b151d7e77fb83250f675ffea07</link><dc:creator>JoelJacobson</dc:creator><comments>https://news.ycombinator.com/item?id=48339459</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48339459</guid></item><item><title><![CDATA[New comment by JoelJacobson in "Heat pump sales rise across Europe"]]></title><description><![CDATA[
<p>Shame on The Netherlands: ~89% of homes still use natural gas in some way for heating [1], and their government are now "scrapping the obligation to purchase a heat pump in 2026" [2].<p>[1] <a href="https://www.cbs.nl/en-gb/news/2025/50/ever-more-gas-free-homes" rel="nofollow">https://www.cbs.nl/en-gb/news/2025/50/ever-more-gas-free-hom...</a>
[2] <a href="https://www.abnamro.nl/en/personal/specially-for/preferred-banking/smart/7-government-sustainability-measures.html" rel="nofollow">https://www.abnamro.nl/en/personal/specially-for/preferred-b...</a></p>
]]></description><pubDate>Mon, 04 May 2026 21:09:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=48015041</link><dc:creator>JoelJacobson</dc:creator><comments>https://news.ycombinator.com/item?id=48015041</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48015041</guid></item><item><title><![CDATA[New comment by JoelJacobson in "Show HN: Honker – Postgres NOTIFY/LISTEN Semantics for SQLite"]]></title><description><![CDATA[
<p>Shameless plug: In the upcoming release of PostgreSQL 19, LISTEN/NOTIFY has been optimized to scale much better with selective signaling, i.e. when lots of backends are listening on different channels, patch: <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=282b1cde9" rel="nofollow">https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit...</a></p>
]]></description><pubDate>Thu, 23 Apr 2026 16:26:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=47877712</link><dc:creator>JoelJacobson</dc:creator><comments>https://news.ycombinator.com/item?id=47877712</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47877712</guid></item><item><title><![CDATA[New comment by JoelJacobson in "Eight years of wanting, three months of building with AI"]]></title><description><![CDATA[
<p>I agree! It should be very stable, IMO. If not, then please send a bug report and we'll look into it. Also, now it scales well with the number of listening connections (given clients listen on unique channel names): <a href="https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=282b1cde9dedf456ecf02eb27caf086023a7bb71" rel="nofollow">https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit...</a></p>
]]></description><pubDate>Mon, 06 Apr 2026 06:55:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=47657724</link><dc:creator>JoelJacobson</dc:creator><comments>https://news.ycombinator.com/item?id=47657724</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47657724</guid></item><item><title><![CDATA[New comment by JoelJacobson in "Rust--: Rust without the borrow checker"]]></title><description><![CDATA[
<p>Rust without async maybe?</p>
]]></description><pubDate>Thu, 01 Jan 2026 19:14:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=46457044</link><dc:creator>JoelJacobson</dc:creator><comments>https://news.ycombinator.com/item?id=46457044</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46457044</guid></item><item><title><![CDATA[New comment by JoelJacobson in "Zig's new plan for asynchronous programs"]]></title><description><![CDATA[
<p>What a really like about concurrent(), is that it improves readability and expressiveness, making it clear when writing and reading that "this code MUST run in parallel".</p>
]]></description><pubDate>Wed, 03 Dec 2025 04:40:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=46130375</link><dc:creator>JoelJacobson</dc:creator><comments>https://news.ycombinator.com/item?id=46130375</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46130375</guid></item><item><title><![CDATA[New comment by JoelJacobson in "Listen to Database Changes Through the Postgres WAL"]]></title><description><![CDATA[
<p>It's a common misconception that the single queue is a poor design choice. The user reports, of seeing notifications/second severely degrade with lots of backends, cannot be explained by the single-queue design. An efficient implementation of a single-queue, should flatten out as parallellism increases, not degrade and go towards zero.</p>
]]></description><pubDate>Mon, 17 Nov 2025 10:47:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=45952456</link><dc:creator>JoelJacobson</dc:creator><comments>https://news.ycombinator.com/item?id=45952456</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45952456</guid></item><item><title><![CDATA[New comment by JoelJacobson in "Listen to Database Changes Through the Postgres WAL"]]></title><description><![CDATA[
<p>In the linked "Optimize LISTEN/NOTIFY" pgsql-hackers, I've shared a lot of benchmark results for different workloads, which also include results on how PostgreSQL currently works (this is "master" in the benchmark results), that can help you better understand the expectations for different workloads.<p>The work-around solution we used at Trustly (a company I co-founded), is a component named `allas` that a colleague of mine at that time, Marko Tikkaja, created to solve our problems, that massively reduced the load on our servers. Marko has open sourced and published this work here: <a href="https://github.com/johto/allas" rel="nofollow">https://github.com/johto/allas</a><p>Basically, `allas` opens up a single connection to PostgreSQL, on which it LISTEN on all the channels it needs to listen on. Then clients connect to `allas` over the PostgreSQL protocol, so it's basically faking a PostgreSQL server, and when clients do LISTEN on a channel with allas, allas will then LISTEN on that channel on the real PostgreSQL server on the single connection it needs. Thanks to `allas` being implemented in Go, using Go's efficient goroutines for concurrency, it efficiently scales with lots and lots of connections. I'm not a Go-expert myself, but I've understood Go is quite well suited for this type of application.<p>This component is still being used at Trustly, and is battle-tested and production grade.<p>That said, it would of course be much better to avoid the need for a separate component, and fix the scalability issues in core PostgreSQL, so that's what I'm currently working on.</p>
]]></description><pubDate>Mon, 17 Nov 2025 10:21:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=45952340</link><dc:creator>JoelJacobson</dc:creator><comments>https://news.ycombinator.com/item?id=45952340</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45952340</guid></item><item><title><![CDATA[New comment by JoelJacobson in "Listen to Database Changes Through the Postgres WAL"]]></title><description><![CDATA[
<p>Thanks for the report. For that use-case (if you have a single application using a single connection with a LISTEN) then it's expected that is should perform well, since then there is only a single backend which will be context-switched to when each NOTIFY signals it.</p>
]]></description><pubDate>Mon, 17 Nov 2025 08:51:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=45951919</link><dc:creator>JoelJacobson</dc:creator><comments>https://news.ycombinator.com/item?id=45951919</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45951919</guid></item></channel></rss>