<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: qianli_cs</title><link>https://news.ycombinator.com/user?id=qianli_cs</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 08 Apr 2026 10:57:31 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=qianli_cs" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by qianli_cs in "Oban, the job processing framework from Elixir, has come to Python"]]></title><description><![CDATA[
<p>That's fair, the idea itself isn't new. Workflows/durable execution have been around forever (same story in Elixir).<p>The differences are in the implementation and DX: the programming abstraction, how easy recovery/debugging is, and how it behaves once you're running a production cluster.<p>One thing that bit us early was versioning. In practice, you always end up with different workers running different code versions (rolling deploys, hotfixes, etc.). We spent a lot of time there and now support both workflow versioning and patching, so old executions can replay deterministically while still letting you evolve the code.<p>Curious how Oban handles versioning today?</p>
]]></description><pubDate>Wed, 28 Jan 2026 19:55:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=46800690</link><dc:creator>qianli_cs</dc:creator><comments>https://news.ycombinator.com/item?id=46800690</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46800690</guid></item><item><title><![CDATA[New comment by qianli_cs in "Oban, the job processing framework from Elixir, has come to Python"]]></title><description><![CDATA[
<p>Thanks for sharing, interesting project! One thing that stood out to me is that some fairly core features are gated behind a Pro tier. For context, there are prior projects in this space that implement similar ideas fully in OSS, especially around Postgres-backed durable execution:<p>1. DBOS built durable workflows and queues on top of Postgres (disclaimer: I'm a co-founder of DBOS), with some recent discussions here: <a href="https://news.ycombinator.com/item?id=44840693">https://news.ycombinator.com/item?id=44840693</a><p>2. Absurd explores a related design as well: <a href="https://news.ycombinator.com/item?id=45797228">https://news.ycombinator.com/item?id=45797228</a><p>Overall, it's encouraging to see more people converging on a database-centric approach to durable workflows instead of external orchestrators. There's still a lot of open design space around determinism, recovery semantics, and DX. I'm happy to learn from others experimenting here.</p>
]]></description><pubDate>Wed, 28 Jan 2026 19:13:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=46800154</link><dc:creator>qianli_cs</dc:creator><comments>https://news.ycombinator.com/item?id=46800154</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46800154</guid></item><item><title><![CDATA[The success of 'natural language programming']]></title><description><![CDATA[
<p>Article URL: <a href="https://brooker.co.za/blog/2025/12/16/natural-language.html">https://brooker.co.za/blog/2025/12/16/natural-language.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46294388">https://news.ycombinator.com/item?id=46294388</a></p>
<p>Points: 4</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 16 Dec 2025 20:59:42 +0000</pubDate><link>https://brooker.co.za/blog/2025/12/16/natural-language.html</link><dc:creator>qianli_cs</dc:creator><comments>https://news.ycombinator.com/item?id=46294388</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46294388</guid></item><item><title><![CDATA[New comment by qianli_cs in "Lambda Durable Functions"]]></title><description><![CDATA[
<p>This post seems to be published in a hurry. Under "How it works" section a bunch of duplication, and I think they should make the blog post exactly once :) Excerpt from the blog post:<p>> During replay, your code runs from the beginning but skips over completed checkpoints, using stored results instead of re-executing completed operations. This replay mechanism ensures consistency while enabling long-running executions.
> 
> ... During replay, your code runs from the beginning but skips over completed checkpoints, using stored results instead of re-executing completed operations. This replay mechanism ensures consistency while enabling long-running executions.</p>
]]></description><pubDate>Tue, 02 Dec 2025 17:38:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=46123935</link><dc:creator>qianli_cs</dc:creator><comments>https://news.ycombinator.com/item?id=46123935</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46123935</guid></item><item><title><![CDATA[New comment by qianli_cs in "Building a Durable Execution Engine with SQLite"]]></title><description><![CDATA[
<p>I really enjoyed this post and love seeing more lightweight approaches! The deep dive on tradeoffs between different durable-execution approaches was great. For me, the most interesting part is that Persistasaurus (cool name btw) use of bytecode generation via ByteBuddy is a clever way to improve DX: it can transparently intercept step functions and capture execution state without requiring explicit API calls.<p>(Disclosure: I work on DBOS [1]) The author's point about the friction from explicit step wrappers is fair, as we don't use bytecode generation today, but we're actively exploring it to improve DX.<p>[1]: <a href="https://github.com/dbos-inc" rel="nofollow">https://github.com/dbos-inc</a></p>
]]></description><pubDate>Fri, 21 Nov 2025 20:28:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=46008597</link><dc:creator>qianli_cs</dc:creator><comments>https://news.ycombinator.com/item?id=46008597</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46008597</guid></item><item><title><![CDATA[New comment by qianli_cs in "Show HN: DBOS Java – Postgres-Backed Durable Workflows"]]></title><description><![CDATA[
<p>Yeah, in the long term, we're supporting more languages. But we aren't actively building new languages right now.</p>
]]></description><pubDate>Sat, 15 Nov 2025 18:36:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=45939524</link><dc:creator>qianli_cs</dc:creator><comments>https://news.ycombinator.com/item?id=45939524</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45939524</guid></item><item><title><![CDATA[New comment by qianli_cs in "Show HN: DBOS Java – Postgres-Backed Durable Workflows"]]></title><description><![CDATA[
<p>To build on what Peter said, we need to stay focused and make one backend solid before expanding. But architecturally, nothing prevents us from supporting more engines going forward.</p>
]]></description><pubDate>Thu, 13 Nov 2025 22:27:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=45921499</link><dc:creator>qianli_cs</dc:creator><comments>https://news.ycombinator.com/item?id=45921499</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45921499</guid></item><item><title><![CDATA[New comment by qianli_cs in "Make any TypeScript function durable"]]></title><description><![CDATA[
<p>I'm excited about this because durable workflows are really important for making AI applications production ready :) Disclaimer: I'm working on DBOS, a durable workflow library built on Postgres, which looks complementary to this.<p>I asked their main developer Dillon about the data/durability layer and also the compilation step. I wonder if adding a "DBOS World" will be feasible. That way, you get Postgres-backed durable workflows, queues, messaging, streams, etc all in one package, while the "use workflow" interface remains the same.<p>Here is the response from Dillon, and I hope it's useful for the discussion here:<p>> "The primary datastore is dynamodb and is designed to scale to support tens of thousands of v0 size tenants running hundreds of thousands of concurrent workflows and steps."<p>> "That being said, you don't need to use Vercel as a backend to use the workflow SDK - we have created a interface for anyone to implements called 'World' that you can use any tech stack for <a href="https://github.com/vercel/workflow/blob/main/packages/world/src/interfaces.ts#L52-L115" rel="nofollow">https://github.com/vercel/workflow/blob/main/packages/world/...</a>"<p>> "you will require a compiler step as that's what picks up 'use workflow' and 'use step` and applies source transformations. The node.js run time limitations only apply to the outer wrapper function w/ `use workflow`"</p>
]]></description><pubDate>Fri, 24 Oct 2025 00:15:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=45689183</link><dc:creator>qianli_cs</dc:creator><comments>https://news.ycombinator.com/item?id=45689183</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45689183</guid></item><item><title><![CDATA[Finding my rhythm again]]></title><description><![CDATA[
<p>Article URL: <a href="https://jeremydaly.com/finding-my-rhythm-again/">https://jeremydaly.com/finding-my-rhythm-again/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45652367">https://news.ycombinator.com/item?id=45652367</a></p>
<p>Points: 67</p>
<p># Comments: 6</p>
]]></description><pubDate>Tue, 21 Oct 2025 04:03:13 +0000</pubDate><link>https://jeremydaly.com/finding-my-rhythm-again/</link><dc:creator>qianli_cs</dc:creator><comments>https://news.ycombinator.com/item?id=45652367</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45652367</guid></item><item><title><![CDATA[New comment by qianli_cs in "AWS multiple services outage in us-east-1"]]></title><description><![CDATA[
<p>We're seeing issues with multiple AWS services <a href="https://health.aws.amazon.com/health/status" rel="nofollow">https://health.aws.amazon.com/health/status</a></p>
]]></description><pubDate>Mon, 20 Oct 2025 07:21:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=45640834</link><dc:creator>qianli_cs</dc:creator><comments>https://news.ycombinator.com/item?id=45640834</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45640834</guid></item><item><title><![CDATA[Sanitized SQL]]></title><description><![CDATA[
<p>Article URL: <a href="https://ardentperf.com/2025/10/15/sanitized-sql/">https://ardentperf.com/2025/10/15/sanitized-sql/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45601428">https://news.ycombinator.com/item?id=45601428</a></p>
<p>Points: 4</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 16 Oct 2025 04:20:44 +0000</pubDate><link>https://ardentperf.com/2025/10/15/sanitized-sql/</link><dc:creator>qianli_cs</dc:creator><comments>https://news.ycombinator.com/item?id=45601428</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45601428</guid></item><item><title><![CDATA[Barbarians at the Gate: How AI Is Upending Systems Research]]></title><description><![CDATA[
<p>Article URL: <a href="https://arxiv.org/abs/2510.06189">https://arxiv.org/abs/2510.06189</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45534684">https://news.ycombinator.com/item?id=45534684</a></p>
<p>Points: 8</p>
<p># Comments: 0</p>
]]></description><pubDate>Fri, 10 Oct 2025 01:29:59 +0000</pubDate><link>https://arxiv.org/abs/2510.06189</link><dc:creator>qianli_cs</dc:creator><comments>https://news.ycombinator.com/item?id=45534684</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45534684</guid></item><item><title><![CDATA[Supabase raises $100M at $5B valuation as vibe coding soars]]></title><description><![CDATA[
<p>Article URL: <a href="https://fortune.com/2025/10/03/exclusive-supabase-raises-100-million-at-5-billion-valuation-as-vibe-coding-soars/">https://fortune.com/2025/10/03/exclusive-supabase-raises-100-million-at-5-billion-valuation-as-vibe-coding-soars/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45468295">https://news.ycombinator.com/item?id=45468295</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Fri, 03 Oct 2025 21:59:30 +0000</pubDate><link>https://fortune.com/2025/10/03/exclusive-supabase-raises-100-million-at-5-billion-valuation-as-vibe-coding-soars/</link><dc:creator>qianli_cs</dc:creator><comments>https://news.ycombinator.com/item?id=45468295</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45468295</guid></item><item><title><![CDATA[New comment by qianli_cs in "Dbos: Durable Workflow Orchestration with Go and PostgreSQL"]]></title><description><![CDATA[
<p>In DBOS, workflows can be invoked directly as normal function calls or enqueued. Direct calls don't require any polling. For queued workflows, each process runs a lightweight polling thread that checks for new work using `SELECT ... FOR UPDATE SKIP LOCKED` with exponential backoffs to prevent contentions, so many concurrent workers can poll efficiently. We recently wrote a blog post on durable workflows, queues, and optimizations: <a href="https://www.dbos.dev/blog/why-postgres-durable-execution" rel="nofollow">https://www.dbos.dev/blog/why-postgres-durable-execution</a><p>Throughput mainly comes down to database writes: executing a workflow = 2 writes (input + output), each step = 1 write. A single Postgres instance can typically handle thousands of writes per second, and a larger one can handle tens of thousands (or even more, depending on your workload size). If you need more capacity, you can shard your app across multiple Postgres servers.</p>
]]></description><pubDate>Fri, 03 Oct 2025 07:54:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=45460242</link><dc:creator>qianli_cs</dc:creator><comments>https://news.ycombinator.com/item?id=45460242</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45460242</guid></item><item><title><![CDATA[New comment by qianli_cs in "Dbos: Durable Workflow Orchestration with Go and PostgreSQL"]]></title><description><![CDATA[
<p>Good questions!<p>DBOS naturally scales to distributed environments, with many processes/servers per application and many applications running together. The key idea is to use the database concurrency control to coordinate multiple processes. [1]<p>When a DBOS workflow starts, it’s tagged with the version of the application process that launched it. This way, you can safely change workflow code without breaking existing ones. They'll continue running on the older version. As a result, rolling updates become easy and safe. [2]<p>[1] <a href="https://docs.dbos.dev/architecture#using-dbos-in-a-distributed-setting" rel="nofollow">https://docs.dbos.dev/architecture#using-dbos-in-a-distribut...</a><p>[2] <a href="https://docs.dbos.dev/architecture#application-and-workflow-versions" rel="nofollow">https://docs.dbos.dev/architecture#application-and-workflow-...</a></p>
]]></description><pubDate>Fri, 03 Oct 2025 06:34:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=45459709</link><dc:creator>qianli_cs</dc:creator><comments>https://news.ycombinator.com/item?id=45459709</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45459709</guid></item><item><title><![CDATA[New comment by qianli_cs in "Dbos: Durable Workflow Orchestration with Go and PostgreSQL"]]></title><description><![CDATA[
<p>I think one potential concern with "checkpoint execution state at every interaction with the outside world" is the size of the checkpoints. Allowing users to control the granularity by explicitly specifying the scope of each step seems like a more flexible model. For example, you can group multiple external interactions into a single step and only checkpoint the final result, avoiding the overhead of saving intermediate data. If you want finer granularity, you can instead declare each external interaction as its own step.<p>Plus, if the crash happens in the outside world (where you have no control), then checkpointing at finer granularity won't help.</p>
]]></description><pubDate>Fri, 03 Oct 2025 06:28:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=45459672</link><dc:creator>qianli_cs</dc:creator><comments>https://news.ycombinator.com/item?id=45459672</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45459672</guid></item><item><title><![CDATA[New comment by qianli_cs in "Dbos: Durable Workflow Orchestration with Go and PostgreSQL"]]></title><description><![CDATA[
<p>I think a clearer way to think about this is "at least once" message delivery plus idempotent workflow execution is effectively exactly-once event processing.<p>The DBOS workflow execution itself is idempotent (assume each step is idempotent). When DBOS starts a workflow, the "start" (workflow inputs) is durably logged first. If the app crashes, on restart, DBOS reloads from Postgres and resumes from the last completed step. Steps are checkpointed so they don't re-run once recorded.</p>
]]></description><pubDate>Fri, 03 Oct 2025 05:42:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=45459409</link><dc:creator>qianli_cs</dc:creator><comments>https://news.ycombinator.com/item?id=45459409</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45459409</guid></item><item><title><![CDATA[New comment by qianli_cs in "Dbos: Durable Workflow Orchestration with Go and PostgreSQL"]]></title><description><![CDATA[
<p>That password is only used by the GHA to start a local Postgres Docker container (<a href="https://github.com/dbos-inc/dbos-transact-golang/blob/main/chaos_tests/chaos_test.go#L63-L65" rel="nofollow">https://github.com/dbos-inc/dbos-transact-golang/blob/main/c...</a>), which is not accessible from outside.</p>
]]></description><pubDate>Fri, 03 Oct 2025 05:37:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=45459368</link><dc:creator>qianli_cs</dc:creator><comments>https://news.ycombinator.com/item?id=45459368</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45459368</guid></item><item><title><![CDATA[The Next Horizon of System Intelligence]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.sigops.org/2025/the-next-horizon-of-system-intelligence/">https://www.sigops.org/2025/the-next-horizon-of-system-intelligence/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45382693">https://news.ycombinator.com/item?id=45382693</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Fri, 26 Sep 2025 04:37:31 +0000</pubDate><link>https://www.sigops.org/2025/the-next-horizon-of-system-intelligence/</link><dc:creator>qianli_cs</dc:creator><comments>https://news.ycombinator.com/item?id=45382693</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45382693</guid></item><item><title><![CDATA[New comment by qianli_cs in "Docker Hub Is Down"]]></title><description><![CDATA[
<p>I think it was likely caused by the cache trying to compare the tag with Docker Hub: <a href="https://docs.docker.com/docker-hub/image-library/mirror/#what-if-the-content-changes-on-the-hub" rel="nofollow">https://docs.docker.com/docker-hub/image-library/mirror/#wha...</a><p>> "When a pull is attempted with a tag, the Registry checks the remote to ensure if it has the latest version of the requested content. Otherwise, it fetches and caches the latest content."<p>So if the authentication service is down, it might also affect the caching service.</p>
]]></description><pubDate>Thu, 25 Sep 2025 00:19:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=45367678</link><dc:creator>qianli_cs</dc:creator><comments>https://news.ycombinator.com/item?id=45367678</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45367678</guid></item></channel></rss>