<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: KraftyOne</title><link>https://news.ycombinator.com/user?id=KraftyOne</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 13 Nov 2026 00:12:27 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=KraftyOne" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[Postgres can handle 1M durable workflows per second]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.dbos.dev/blog/one-million-workflows">https://www.dbos.dev/blog/one-million-workflows</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=50473252">https://news.ycombinator.com/item?id=50473252</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 12 Nov 2026 19:55:21 +0000</pubDate><link>https://www.dbos.dev/blog/one-million-workflows</link><dc:creator>KraftyOne</dc:creator><comments>https://news.ycombinator.com/item?id=50473252</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50473252</guid></item><item><title><![CDATA[Scaling Postgres to 1M durable workflows per second]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.dbos.dev/blog/one-million-workflows">https://www.dbos.dev/blog/one-million-workflows</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=50293909">https://news.ycombinator.com/item?id=50293909</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 29 Oct 2026 18:42:07 +0000</pubDate><link>https://www.dbos.dev/blog/one-million-workflows</link><dc:creator>KraftyOne</dc:creator><comments>https://news.ycombinator.com/item?id=50293909</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50293909</guid></item><item><title><![CDATA[Animations for System Builders]]></title><description><![CDATA[
<p>Article URL: <a href="https://brooker.co.za/blog/2026/10/23/animations.html">https://brooker.co.za/blog/2026/10/23/animations.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=50212124">https://news.ycombinator.com/item?id=50212124</a></p>
<p>Points: 71</p>
<p># Comments: 4</p>
]]></description><pubDate>Fri, 23 Oct 2026 17:02:24 +0000</pubDate><link>https://brooker.co.za/blog/2026/10/23/animations.html</link><dc:creator>KraftyOne</dc:creator><comments>https://news.ycombinator.com/item?id=50212124</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50212124</guid></item><item><title><![CDATA[How Postgres DELETE can actually scale]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.dbos.dev/blog/scaling-deletions-in-postgres">https://www.dbos.dev/blog/scaling-deletions-in-postgres</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=50108297">https://news.ycombinator.com/item?id=50108297</a></p>
<p>Points: 31</p>
<p># Comments: 34</p>
]]></description><pubDate>Thu, 15 Oct 2026 18:42:57 +0000</pubDate><link>https://www.dbos.dev/blog/scaling-deletions-in-postgres</link><dc:creator>KraftyOne</dc:creator><comments>https://news.ycombinator.com/item?id=50108297</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50108297</guid></item><item><title><![CDATA[Postgres DELETE can actually scale]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.dbos.dev/blog/scaling-deletions-in-postgres">https://www.dbos.dev/blog/scaling-deletions-in-postgres</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=49925460">https://news.ycombinator.com/item?id=49925460</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 01 Oct 2026 18:42:14 +0000</pubDate><link>https://www.dbos.dev/blog/scaling-deletions-in-postgres</link><dc:creator>KraftyOne</dc:creator><comments>https://news.ycombinator.com/item?id=49925460</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49925460</guid></item><item><title><![CDATA[Postgres SELECT DISTINCT Does Not Scale]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.dbos.dev/blog/postgres-select-distinct-does-not-scale">https://www.dbos.dev/blog/postgres-select-distinct-does-not-scale</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=49835096">https://news.ycombinator.com/item?id=49835096</a></p>
<p>Points: 106</p>
<p># Comments: 28</p>
]]></description><pubDate>Thu, 24 Sep 2026 18:43:52 +0000</pubDate><link>https://www.dbos.dev/blog/postgres-select-distinct-does-not-scale</link><dc:creator>KraftyOne</dc:creator><comments>https://news.ycombinator.com/item?id=49835096</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49835096</guid></item><item><title><![CDATA[Taking Out the Trash in Postgres]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.dbos.dev/blog/scaling-deletions-in-postgres">https://www.dbos.dev/blog/scaling-deletions-in-postgres</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=49744846">https://news.ycombinator.com/item?id=49744846</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 17 Sep 2026 18:44:07 +0000</pubDate><link>https://www.dbos.dev/blog/scaling-deletions-in-postgres</link><dc:creator>KraftyOne</dc:creator><comments>https://news.ycombinator.com/item?id=49744846</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49744846</guid></item><item><title><![CDATA[Postgres SELECT DISTINCT does not scale]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.dbos.dev/blog/postgres-select-distinct-does-not-scale">https://www.dbos.dev/blog/postgres-select-distinct-does-not-scale</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=49482423">https://news.ycombinator.com/item?id=49482423</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Fri, 28 Aug 2026 18:16:25 +0000</pubDate><link>https://www.dbos.dev/blog/postgres-select-distinct-does-not-scale</link><dc:creator>KraftyOne</dc:creator><comments>https://news.ycombinator.com/item?id=49482423</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49482423</guid></item><item><title><![CDATA[Postgres SELECT DISTINCT does not scale]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.dbos.dev/blog/postgres-select-distinct-does-not-scale">https://www.dbos.dev/blog/postgres-select-distinct-does-not-scale</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=49392252">https://news.ycombinator.com/item?id=49392252</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Fri, 21 Aug 2026 18:41:05 +0000</pubDate><link>https://www.dbos.dev/blog/postgres-select-distinct-does-not-scale</link><dc:creator>KraftyOne</dc:creator><comments>https://news.ycombinator.com/item?id=49392252</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49392252</guid></item><item><title><![CDATA[Postgres SELECT DISTINCT does not scale]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.dbos.dev/blog/postgres-select-distinct-does-not-scale">https://www.dbos.dev/blog/postgres-select-distinct-does-not-scale</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=49299889">https://news.ycombinator.com/item?id=49299889</a></p>
<p>Points: 4</p>
<p># Comments: 0</p>
]]></description><pubDate>Fri, 14 Aug 2026 15:16:33 +0000</pubDate><link>https://www.dbos.dev/blog/postgres-select-distinct-does-not-scale</link><dc:creator>KraftyOne</dc:creator><comments>https://news.ycombinator.com/item?id=49299889</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49299889</guid></item><item><title><![CDATA[Anyscale Joins NScale]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.anyscale.com/blog/anyscale-signs-definitive-agreement-to-join-nscale">https://www.anyscale.com/blog/anyscale-signs-definitive-agreement-to-join-nscale</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=49125102">https://news.ycombinator.com/item?id=49125102</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Fri, 31 Jul 2026 16:19:04 +0000</pubDate><link>https://www.anyscale.com/blog/anyscale-signs-definitive-agreement-to-join-nscale</link><dc:creator>KraftyOne</dc:creator><comments>https://news.ycombinator.com/item?id=49125102</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49125102</guid></item><item><title><![CDATA[New comment by KraftyOne in "Making Postgres queues scale"]]></title><description><![CDATA[
<p>This is something we mention in the third section of the article: dead tuples and autovacuum caused real performance hits, which we (partially) mitigated through index optimization (minimizing the number and size of indexes, and making indexes partial).<p>PgQue is a really interesting system! However, its semantics are quite a bit more similar to Kafka than to a job queue, which is good for some workloads and not for others. For example a truncation-based deletion system is fast but inflexible, and not suitable for a job queue system because a single long-running job (and DBOS supports workflows that run for months) can block truncation.</p>
]]></description><pubDate>Thu, 30 Jul 2026 22:22:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=49116630</link><dc:creator>KraftyOne</dc:creator><comments>https://news.ycombinator.com/item?id=49116630</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49116630</guid></item><item><title><![CDATA[Making Postgres queues scale]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.dbos.dev/blog/making-postgres-queues-scale">https://www.dbos.dev/blog/making-postgres-queues-scale</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=49113913">https://news.ycombinator.com/item?id=49113913</a></p>
<p>Points: 128</p>
<p># Comments: 34</p>
]]></description><pubDate>Thu, 30 Jul 2026 18:39:32 +0000</pubDate><link>https://www.dbos.dev/blog/making-postgres-queues-scale</link><dc:creator>KraftyOne</dc:creator><comments>https://news.ycombinator.com/item?id=49113913</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49113913</guid></item><item><title><![CDATA[New comment by KraftyOne in "Postgres LISTEN/NOTIFY actually scales"]]></title><description><![CDATA[
<p>The core optimization is to buffer notifications in-memory and send them in a batch instead of sending them as part of every transaction. So that's a general-purpose optimization for Postgres apps using LISTEN/NOTIFY.</p>
]]></description><pubDate>Fri, 24 Jul 2026 20:44:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=49041358</link><dc:creator>KraftyOne</dc:creator><comments>https://news.ycombinator.com/item?id=49041358</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49041358</guid></item><item><title><![CDATA[New comment by KraftyOne in "Postgres LISTEN/NOTIFY actually scales"]]></title><description><![CDATA[
<p>If you mean the optimizations coming in Postgres 19, the original post addresses this:<p>> As an aside, there’s been some online discussion of a Postgres patch (<a href="https://github.com/postgres/postgres/commit/282b1cde9dedf456ecf02eb27caf086023a7bb71" rel="nofollow">https://github.com/postgres/postgres/commit/282b1cde9dedf456...</a>) related to this issue. This patch (to be released in Postgres 19) does not remove the global lock or fix the bottleneck we observed. Instead, it optimizes the narrower case where there are many notification channels and each listener is waiting only on a specific channel.</p>
]]></description><pubDate>Fri, 24 Jul 2026 20:30:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=49041211</link><dc:creator>KraftyOne</dc:creator><comments>https://news.ycombinator.com/item?id=49041211</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49041211</guid></item><item><title><![CDATA[New comment by KraftyOne in "Postgres LISTEN/NOTIFY actually scales"]]></title><description><![CDATA[
<p>To be clear, it's not a custom patch to pg itself, but an application-side buffering and batching optimization.</p>
]]></description><pubDate>Fri, 24 Jul 2026 20:18:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=49041109</link><dc:creator>KraftyOne</dc:creator><comments>https://news.ycombinator.com/item?id=49041109</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49041109</guid></item><item><title><![CDATA[Postgres LISTEN/NOTIFY actually scales]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.dbos.dev/blog/postgres-listen-notify-scalability">https://www.dbos.dev/blog/postgres-listen-notify-scalability</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=49040296">https://news.ycombinator.com/item?id=49040296</a></p>
<p>Points: 373</p>
<p># Comments: 84</p>
]]></description><pubDate>Fri, 24 Jul 2026 19:05:53 +0000</pubDate><link>https://www.dbos.dev/blog/postgres-listen-notify-scalability</link><dc:creator>KraftyOne</dc:creator><comments>https://news.ycombinator.com/item?id=49040296</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49040296</guid></item><item><title><![CDATA[Just Use Postgres for Job Queues]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.dbos.dev/blog/making-postgres-queues-scale">https://www.dbos.dev/blog/making-postgres-queues-scale</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48938357">https://news.ycombinator.com/item?id=48938357</a></p>
<p>Points: 7</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 16 Jul 2026 18:32:07 +0000</pubDate><link>https://www.dbos.dev/blog/making-postgres-queues-scale</link><dc:creator>KraftyOne</dc:creator><comments>https://news.ycombinator.com/item?id=48938357</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48938357</guid></item><item><title><![CDATA[New comment by KraftyOne in "Postgres transactions are a distributed systems superpower"]]></title><description><![CDATA[
<p>Outbox's power is that it turns an atomicity problem into an idempotency problem. You atomically write to the outbox, then you have an idempotent "workflow" that processes events from the outbox. This turns "at most once" semantics (where an event could be dropped entirely) to "at least once" semantics (where the event processing could run multiple times). For many systems, that's a big improvement.</p>
]]></description><pubDate>Fri, 03 Jul 2026 02:03:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=48769847</link><dc:creator>KraftyOne</dc:creator><comments>https://news.ycombinator.com/item?id=48769847</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48769847</guid></item><item><title><![CDATA[New comment by KraftyOne in "Postgres transactions are a distributed systems superpower"]]></title><description><![CDATA[
<p>You still need idempotency for side effects outside your database, that's true (and fundamental to durability). But now you get exactly-once semantics for operations on your database, which can be quite valuable if your workflow performs many such updates or they're particularly complicated or stateful.</p>
]]></description><pubDate>Fri, 03 Jul 2026 00:38:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=48769229</link><dc:creator>KraftyOne</dc:creator><comments>https://news.ycombinator.com/item?id=48769229</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48769229</guid></item></channel></rss>