<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: tasn</title><link>https://news.ycombinator.com/user?id=tasn</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 15 May 2026 15:28:19 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=tasn" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by tasn in "Rewrite Bun in Rust has been merged"]]></title><description><![CDATA[
<p>How is that different (in this sense) to any "slower" rewrites or other significant changes?</p>
]]></description><pubDate>Thu, 14 May 2026 13:51:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=48135389</link><dc:creator>tasn</dc:creator><comments>https://news.ycombinator.com/item?id=48135389</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48135389</guid></item><item><title><![CDATA[Show HN: Diom – Open-source back end primitives with no runtime dependencies]]></title><description><![CDATA[
<p>Hey HN, my name is Tom, and I'm excited to share Diom (<a href="https://diom.com" rel="nofollow">https://diom.com</a>) - a backend components server.<p>Diom includes implementations for common backend primitives such as cache, key-value, idempotency, rate-limiting, queues, and streams, with more on the way.<p>While building Svix, we had to reimplement the same backend primitives that everyone have to reimplement. We also constantly felt the tension between building something custom on top of existing infra (like Redis and Postgres) and adding more dedicated services (like RabbitMQ and Kafka) which we would then need to configure, operate, back up, and maintain. This was even worse for us because Svix is open-source, so additional infrastructure meant additional burden on our customers.<p>Six months ago we finally decided to build Diom, and focus on developer experience and ease of operation. It's open source, self-contained, and manages its own storage using fjall (a fast LSM-tree-based storage similar to RocksDB). It requires no external runtime dependencies (no redis/postgres/kafka/etc), and supports running as a single node or a highly-available Raft based cluster.<p>The goal of Diam is to provide developers with the backend primitives they need without having to write custom code on top of Redis, RabbitMQ, Kafka, or even need to run them at all.
It currently supports cache, key-value, idempotency, rate-limiting, queues, and streams. We also plan on adding auth-tokens, distributed settings, feature flags, and other common components; as well as adding more functionality to existing components.<p>Diom favors ease of operation over scale, so it doesn't match Kafka-level throughput or very high QPS like Redis and Dragonfly. However, most products and developers don't process multiple terabytes and billions of events per second anyway. That said, Diom can still hit high performance for its target use-cases as it implements higher-level primitives rather than basic operations. Additionally, because the primitives live in the same process as the storage, there are fewer network round-trips, which keeps latency low.<p>It uses HTTP/2 with msgpack as the wire protocol (works fine from browsers), and ships a CLI and SDKs for Python, TypeScript, Rust, Go, and Java, with more on the way.<p>We have Svix fully ported to Diom and continuously running tests and simulated workloads in one of our staging environments. GA (general availability) is planned for later this year, once we've moved Svix production workloads over.<p>Repo (MIT licensed): <a href="https://github.com/svix/diom" rel="nofollow">https://github.com/svix/diom</a><p>Docs: <a href="https://docs.diom.com" rel="nofollow">https://docs.diom.com</a><p>Live playground: <a href="https://diom.com/playground" rel="nofollow">https://diom.com/playground</a><p>I'm excited to finally share Diom, and would love to hear what everyone thinks, and what other components you would like us to build! Would also love help figuring out what to call this. We currently say "component platform," but I'm not a fan of the name.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48120719">https://news.ycombinator.com/item?id=48120719</a></p>
<p>Points: 4</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 13 May 2026 11:53:37 +0000</pubDate><link>https://github.com/svix/diom</link><dc:creator>tasn</dc:creator><comments>https://news.ycombinator.com/item?id=48120719</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48120719</guid></item><item><title><![CDATA[Show HN: Diom – Backend primitives (queue, rate limit, etc.) in one Rust binary]]></title><description><![CDATA[
<p>Hey HN, my name is Tom and I'm the founder of Svix. We've been working on Diom (<a href="https://diom.com" rel="nofollow">https://diom.com</a>) for the last 6 months, and I'm excited to finally share it on HN!<p>Diom is a single Rust binary that replaces Redis, RabbitMQ, Kafka, and a lot of custom code for many common use-cases. It's open-source, self-contained, and has no external runtime dependencies.<p>While building Svix, we had to reimplement the same backend primitives that everyone reimplements when building a service: robust caching, rate-limiting, idempotency, and more. We also constantly felt the tension between building something custom on top of existing infra (like Redis and Postgres) and adding more dedicated services (like RabbitMQ and Kafka) which we would then need to configure, operate, back up, and maintain. This was even worse for us because Svix is open-source, so additional infrastructure meant additional burden on our customers.<p>Six months ago we finally decided to build Diom. It's a self-contained open-source service that people can run in their infrastructure with a focus on developer experience and ease of operation. It manages its own storage using fjall (a fast LSM-tree-based storage similar to RocksDB) and therefore requires no external runtime dependencies (no redis/postgres/kafka/etc), and supports running as a single node or a highly-available Raft based cluster.<p>The goal is for Diom to replace Redis, RabbitMQ, Kafka, and a lot of custom code for most use-cases, by offering pre-built implementations for common backend primitives. It currently supports cache, key-value, idempotency, rate-limiting, queues, and streams. We also plan on adding auth-tokens, distributed settings, feature flags, and other common components; as well as adding more functionality to existing components.<p>The closest existing project is probably NATS with JetStream, which is also a single self-contained binary with KV, streams, and queues. One of the main differences is that Diom ships higher-level primitives like idempotency, rate limiting, and cache as first-class APIs, rather than something you build on top of KV and streams.<p>Diom favors ease of operation over scale, so it doesn't match Kafka-level throughput or very high QPS like Redis and Dragonfly. However, most products and developers don't process multiple terabytes and billions of events per second anyway. That said, Diom can still hit high performance for its target use-cases as it implements higher-level primitives rather than basic operations. Additionally, because the primitives live in the same process as the storage, there are fewer network round-trips, which keeps latency low.<p>It uses HTTP/2 with msgpack as the wire protocol (works fine from browsers), and ships a CLI and SDKs for Python, TypeScript, Rust, Go, and Java, with more on the way.<p>We have Svix fully ported to Diom and continuously running tests and simulated workloads in one of our staging environments. GA (general availability) is planned for later this year, once we've moved Svix production workloads over.<p>Repo (MIT licensed): <a href="https://github.com/svix/diom" rel="nofollow">https://github.com/svix/diom</a><p>Docs: <a href="https://docs.diom.com" rel="nofollow">https://docs.diom.com</a><p>Live playground: <a href="https://diom.com/playground" rel="nofollow">https://diom.com/playground</a><p>I'm excited to finally share Diom, and would love to hear what everyone thinks, if you find it useful, and what other components we should build! Would also love help figuring out what to call this. We currently say "component platform," but I'm not a fan of the name.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47996356">https://news.ycombinator.com/item?id=47996356</a></p>
<p>Points: 5</p>
<p># Comments: 0</p>
]]></description><pubDate>Sun, 03 May 2026 12:38:21 +0000</pubDate><link>https://github.com/svix/diom</link><dc:creator>tasn</dc:creator><comments>https://news.ycombinator.com/item?id=47996356</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47996356</guid></item><item><title><![CDATA[New comment by tasn in "F-15E jet shot down over Iran"]]></title><description><![CDATA[
<p>I wasn't comparing to Iran, I was just saying that putting an F-35 and a $2m drone on the same list and same count was funny.<p>As for the $40m number: I also saw this number, but I don't think it's correct. E.g. Germany recently bought 140 of them for $165m. Ref: <a href="https://www.i24news.tv/en/news/israel/defense/1649255166-germany-acquires-140-israeli-made-armed-drones" rel="nofollow">https://www.i24news.tv/en/news/israel/defense/1649255166-ger...</a></p>
]]></description><pubDate>Sat, 04 Apr 2026 05:00:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=47635932</link><dc:creator>tasn</dc:creator><comments>https://news.ycombinator.com/item?id=47635932</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47635932</guid></item><item><title><![CDATA[New comment by tasn in "F-15E jet shot down over Iran"]]></title><description><![CDATA[
<p>Sure. But looking at all of the downed Israeli crafts, they are all $2-5m drones (all 18 of them).<p>For perspective: Patriot missiles cost $4m each.</p>
]]></description><pubDate>Sat, 04 Apr 2026 00:51:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=47634368</link><dc:creator>tasn</dc:creator><comments>https://news.ycombinator.com/item?id=47634368</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47634368</guid></item><item><title><![CDATA[New comment by tasn in "F-15E jet shot down over Iran"]]></title><description><![CDATA[
<p>It's a bit weird counting drones in the same list as expensive fighter jets (and other expensive planes).</p>
]]></description><pubDate>Fri, 03 Apr 2026 20:51:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=47632101</link><dc:creator>tasn</dc:creator><comments>https://news.ycombinator.com/item?id=47632101</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47632101</guid></item><item><title><![CDATA[New comment by tasn in "Go hard on agents, not on your filesystem"]]></title><description><![CDATA[
<p>I use bbwrap to sandbox Claude. Works very well and gives me a lot of control and certainty around the sandbox.</p>
]]></description><pubDate>Sat, 28 Mar 2026 04:09:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=47551545</link><dc:creator>tasn</dc:creator><comments>https://news.ycombinator.com/item?id=47551545</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47551545</guid></item><item><title><![CDATA[New comment by tasn in "A pig's brain has been frozen with its cellular activity locked in place"]]></title><description><![CDATA[
<p>Just buy the family pack and get your wife and kids on it too.<p>As for traveling to the future: that sounds like fun!</p>
]]></description><pubDate>Sat, 21 Mar 2026 15:23:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=47467860</link><dc:creator>tasn</dc:creator><comments>https://news.ycombinator.com/item?id=47467860</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47467860</guid></item><item><title><![CDATA[New comment by tasn in "Show HN: I got tired of rewriting webhook verification for every provider"]]></title><description><![CDATA[
<p>Tip: if you implemented support for Clerk, you also support all the rest of Svix customers, and compatible with <a href="https://www.standardwebhooks.com/" rel="nofollow">https://www.standardwebhooks.com/</a><p>So you support many more than you realize!</p>
]]></description><pubDate>Tue, 03 Mar 2026 14:38:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=47233021</link><dc:creator>tasn</dc:creator><comments>https://news.ycombinator.com/item?id=47233021</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47233021</guid></item><item><title><![CDATA[New comment by tasn in "Tell HN: YC companies scrape GitHub activity, send spam emails to users"]]></title><description><![CDATA[
<p>Cluely is not YC.</p>
]]></description><pubDate>Thu, 26 Feb 2026 12:55:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=47165420</link><dc:creator>tasn</dc:creator><comments>https://news.ycombinator.com/item?id=47165420</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47165420</guid></item><item><title><![CDATA[New comment by tasn in "Farewell, Rust for web"]]></title><description><![CDATA[
<p>These are two sides of the same coin. Go has its quirks because they put things in the standard library so they can't iterate (in breaking manners), while Rust can iterate and improve ideas much faster as it's driven by the ecosystem.<p>Edit: changed "perfect" to "improve", as I meant "perfect" as "betterment" not in terms of absolute perfection.</p>
]]></description><pubDate>Thu, 19 Feb 2026 20:24:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=47078745</link><dc:creator>tasn</dc:creator><comments>https://news.ycombinator.com/item?id=47078745</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47078745</guid></item><item><title><![CDATA[New comment by tasn in "Xfwl4 – The Roadmap for a Xfce Wayland Compositor"]]></title><description><![CDATA[
<p>Thanks for the context!</p>
]]></description><pubDate>Tue, 27 Jan 2026 16:28:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=46782186</link><dc:creator>tasn</dc:creator><comments>https://news.ycombinator.com/item?id=46782186</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46782186</guid></item><item><title><![CDATA[New comment by tasn in "Scaling PostgreSQL to power 800M ChatGPT users"]]></title><description><![CDATA[
<p>Very cool, thanks for sharing! Please let me know if you end up open sourcing this!</p>
]]></description><pubDate>Tue, 27 Jan 2026 16:27:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=46782169</link><dc:creator>tasn</dc:creator><comments>https://news.ycombinator.com/item?id=46782169</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46782169</guid></item><item><title><![CDATA[New comment by tasn in "Xfwl4 – The Roadmap for a Xfce Wayland Compositor"]]></title><description><![CDATA[
<p>Very interesting that they opted for a rewrite in Rust instead of adjusting the existing codebase.<p>I wonder how long it'll take them writing a compositor from scratch.</p>
]]></description><pubDate>Tue, 27 Jan 2026 14:24:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=46780332</link><dc:creator>tasn</dc:creator><comments>https://news.ycombinator.com/item?id=46780332</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46780332</guid></item><item><title><![CDATA[New comment by tasn in "iPhone 5s Gets New Software Update 13 Years After Launch"]]></title><description><![CDATA[
<p>Pixels are pretty weak hardware wise in the areas people care about (heavy, relatively slow charging, big, etc.); I'd probably recommend people buy Samsungs which also get long term software updates nowadays.</p>
]]></description><pubDate>Tue, 27 Jan 2026 13:42:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=46779784</link><dc:creator>tasn</dc:creator><comments>https://news.ycombinator.com/item?id=46779784</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46779784</guid></item><item><title><![CDATA[New comment by tasn in "Scaling PostgreSQL to power 800M ChatGPT users"]]></title><description><![CDATA[
<p>How did you implement this runtime check? Is it a lint rule, or using the type system?</p>
]]></description><pubDate>Fri, 23 Jan 2026 15:34:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=46733721</link><dc:creator>tasn</dc:creator><comments>https://news.ycombinator.com/item?id=46733721</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46733721</guid></item><item><title><![CDATA[New comment by tasn in "C Is Best (2025)"]]></title><description><![CDATA[
<p>I think this framing is a bit backwards. Many C programs (and many parts of C programs) would benefit from being more like Go or Python as evident by your very own sds.c.<p>Now, if what you're saying is that with super highly optimized sections of a codebase, or extremely specific circumstances (some kernel drivers) you'd need a bit of unsafe rust: then sure. Though all of a sudden you flipped the script, and the unsafe becomes the exception, not the rule; and you can keep those pieces of code contained. Similarly to how C programmers use inline assembly in some scenarios.<p>Funny enough, this is similar to something that Rust did the opposite of C, and is much better for it: immutable by default (let mut vs. const in C) and non-nullable by default (and even being able to define something as non-null).
Flipping the script so that GOOD is default and BAD is rare was a huge win.<p>I definitely don't think Rust is a silver bullet, though I'd definitely say it's at least a silver alloy bullet. At least when it comes to the above topics.</p>
]]></description><pubDate>Tue, 06 Jan 2026 15:33:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=46513561</link><dc:creator>tasn</dc:creator><comments>https://news.ycombinator.com/item?id=46513561</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46513561</guid></item><item><title><![CDATA[New comment by tasn in "C Is Best (2025)"]]></title><description><![CDATA[
<p>The recent bug in the Linux kernel Rust code, based on my understanding, was in unsafe code, and related to interop with C. So I wouldn't really classify it as a Rust bug. In fact, under normal circumstances (no interop), people rarely use unsafe in Rust, and the use is very isolated.<p>I think the idea of developers developing a "bugs antenna" is good in theory, though in practice the kernel, Redis, and many other projects suffer from these classes of bugs consistently. Additionally, that's why people use linters and code formatters even though developers can develop a sensitivity to coding conventions (in fact, these tools used to be unpopular in C-land). Trusting humans develop sensibility is just not enough.<p>Specifically, about the concurrency: Redis is (mostly) single-threaded, and I guess that's at least in part because of the difficulty of building safe, fast and highly-concurrent C applications (please correct me if I'm wrong).<p>Can people write safer C (e.g. by using sds.c and the likes)? For sure! Though we've been writing C for 50+ years at this point, at some point "people can just do X" is no longer a valid argument. As while we could, in fact we don't.</p>
]]></description><pubDate>Tue, 06 Jan 2026 15:20:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=46513372</link><dc:creator>tasn</dc:creator><comments>https://news.ycombinator.com/item?id=46513372</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46513372</guid></item><item><title><![CDATA[Recovering Data From A Corrupt tar Archive (2018)]]></title><description><![CDATA[
<p>Article URL: <a href="https://stosb.com/blog/recovering-data-from-a-corrupt-tar-archive/">https://stosb.com/blog/recovering-data-from-a-corrupt-tar-archive/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46466119">https://news.ycombinator.com/item?id=46466119</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Fri, 02 Jan 2026 16:03:50 +0000</pubDate><link>https://stosb.com/blog/recovering-data-from-a-corrupt-tar-archive/</link><dc:creator>tasn</dc:creator><comments>https://news.ycombinator.com/item?id=46466119</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46466119</guid></item><item><title><![CDATA[New comment by tasn in "Hardware Touch, Stronger SSH"]]></title><description><![CDATA[
<p>This is how I've been doing it: <a href="https://stosb.com/blog/using-openpgp-keys-for-ssh-authentication/" rel="nofollow">https://stosb.com/blog/using-openpgp-keys-for-ssh-authentica...</a><p>Slightly different as I generate a PGP key on the computer and then load it to the Yubikey, which means I can have backup keys with the same secret keys.<p>I never really got "touch to use" working though, if anyone knows how to do it with GPG keys I'd really appreciate it!</p>
]]></description><pubDate>Fri, 26 Dec 2025 17:02:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=46393874</link><dc:creator>tasn</dc:creator><comments>https://news.ycombinator.com/item?id=46393874</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46393874</guid></item></channel></rss>