<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: _vvhw</title><link>https://news.ycombinator.com/user?id=_vvhw</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 07 Apr 2026 15:37:53 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=_vvhw" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by _vvhw in "Zig Is Self-Hosted Now, What's Next?"]]></title><description><![CDATA[
<p>Joran from TigerBeetle here!<p>Awesome to hear that you're excited about Zig.<p>Thanks for sharing the link to our repo also—would love to take you on a 1-on-1 tour of the codebase sometime if you'd be up for that!</p>
]]></description><pubDate>Wed, 26 Oct 2022 07:17:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=33340732</link><dc:creator>_vvhw</dc:creator><comments>https://news.ycombinator.com/item?id=33340732</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33340732</guid></item><item><title><![CDATA[New comment by _vvhw in "Zig Is Self-Hosted Now, What's Next?"]]></title><description><![CDATA[
<p>Anecdotally again, but I've been coding in Zig since 2020 and have hit I think 2-3 compiler bugs in all that time?<p>The first was fixed within 24 hours, in fact just before I reported it. The others had clear TODO error messages in the panic, and there were easy enough workarounds.</p>
]]></description><pubDate>Wed, 26 Oct 2022 07:08:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=33340684</link><dc:creator>_vvhw</dc:creator><comments>https://news.ycombinator.com/item?id=33340684</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33340684</guid></item><item><title><![CDATA[Online card payments still suck]]></title><description><![CDATA[
<p>Article URL: <a href="https://fynbos.app/blog/card-payments-still-suck">https://fynbos.app/blog/card-payments-still-suck</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=33328147">https://news.ycombinator.com/item?id=33328147</a></p>
<p>Points: 75</p>
<p># Comments: 114</p>
]]></description><pubDate>Tue, 25 Oct 2022 09:18:54 +0000</pubDate><link>https://fynbos.app/blog/card-payments-still-suck</link><dc:creator>_vvhw</dc:creator><comments>https://news.ycombinator.com/item?id=33328147</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33328147</guid></item><item><title><![CDATA[New comment by _vvhw in "A database without dynamic memory allocation"]]></title><description><![CDATA[
<p>Yes, we're planning also to add a kill switch to the allocator that we switch on if anything allocates after init().</p>
]]></description><pubDate>Fri, 14 Oct 2022 14:10:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=33203726</link><dc:creator>_vvhw</dc:creator><comments>https://news.ycombinator.com/item?id=33203726</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33203726</guid></item><item><title><![CDATA[New comment by _vvhw in "A database without dynamic memory allocation"]]></title><description><![CDATA[
<p>Ah, missed that, thanks! I've updated the comment.</p>
]]></description><pubDate>Thu, 13 Oct 2022 20:25:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=33196052</link><dc:creator>_vvhw</dc:creator><comments>https://news.ycombinator.com/item?id=33196052</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33196052</guid></item><item><title><![CDATA[New comment by _vvhw in "A database without dynamic memory allocation"]]></title><description><![CDATA[
<p>We're aware of this, in fact, and do have a plan to address virtual memory. To be fair, it's really the kernel being dynamic here, not TigerBeetle.</p>
]]></description><pubDate>Thu, 13 Oct 2022 20:21:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=33196020</link><dc:creator>_vvhw</dc:creator><comments>https://news.ycombinator.com/item?id=33196020</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33196020</guid></item><item><title><![CDATA[New comment by _vvhw in "A database without dynamic memory allocation"]]></title><description><![CDATA[
<p>Static allocation has also made TigerBeetle's code cleaner, by eliminating branching at call sites where before a message might not always have been available. With static allocation, there's no branch because a message is always guaranteed to be available.<p>It's also made TigerBeetle's code more reliable, because tests can assert that limits are never exceeded. This has detected rare leaks that might otherwise have only been detected in production.</p>
]]></description><pubDate>Thu, 13 Oct 2022 20:16:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=33195968</link><dc:creator>_vvhw</dc:creator><comments>https://news.ycombinator.com/item?id=33195968</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33195968</guid></item><item><title><![CDATA[New comment by _vvhw in "A database without dynamic memory allocation"]]></title><description><![CDATA[
<p>Joran from the TigerBeetle team here.<p>The limit of 70 lines is actually a slight increase beyond the 60 line limit imposed by NASA's Power of Ten Rules for Safety Critical Software.<p>In my experience, in every instance where we've refactored an overlong function, the result has almost always been safer.</p>
]]></description><pubDate>Thu, 13 Oct 2022 20:10:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=33195909</link><dc:creator>_vvhw</dc:creator><comments>https://news.ycombinator.com/item?id=33195909</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33195909</guid></item><item><title><![CDATA[New comment by _vvhw in "A database without dynamic memory allocation"]]></title><description><![CDATA[
<p>It's defense-in-depth.<p>We use what we have available, according to the context: checksums, assertions, hash chains. You can't always use every technique. But anything that can possibly be verified online, we do.<p>Buffer bleeds also terrify me. In fact, I worked on static analysis tooling to detect zero day buffer bleed exploits in the Zip file format [1].<p>However, to be clear, the heart of a bleed is a logic error, and therefore even memory safe languages such as JavaScript can be vulnerable.<p>[1] <a href="https://news.ycombinator.com/item?id=31852389" rel="nofollow">https://news.ycombinator.com/item?id=31852389</a></p>
]]></description><pubDate>Thu, 13 Oct 2022 20:04:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=33195838</link><dc:creator>_vvhw</dc:creator><comments>https://news.ycombinator.com/item?id=33195838</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33195838</guid></item><item><title><![CDATA[New comment by _vvhw in "A database without dynamic memory allocation"]]></title><description><![CDATA[
<p>Sure!<p>Here's an overview with references to the simulator source, and links to resources from FoundationDB and Dropbox: <a href="https://github.com/tigerbeetledb/tigerbeetle/blob/main/docs/HACKING.md#simulation-tests" rel="nofollow">https://github.com/tigerbeetledb/tigerbeetle/blob/main/docs/...</a><p>We also have a $20k bounty that you can take part in, where you can run the simulator yourself.</p>
]]></description><pubDate>Thu, 13 Oct 2022 18:52:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=33194934</link><dc:creator>_vvhw</dc:creator><comments>https://news.ycombinator.com/item?id=33194934</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33194934</guid></item><item><title><![CDATA[New comment by _vvhw in "A database without dynamic memory allocation"]]></title><description><![CDATA[
<p>Thanks!<p>Joran from the TigerBeetle team here.<p>Appreciate your balanced comment.<p>To be fair, we're certainly concerned about logic errors and buffer bleeds. The philosophy in TigerBeetle is always to downgrade a worse bug to a lesser. For example, if it's a choice between correctness and liveness, we'll downgrade the potential correctness bug to a crash.<p>In the specific case of message buffer reuse here, our last line of defense then is also TigerBeetle's assertions, hash chains and checksums. These exhaustively check all function pre/post-conditions, arguments, processing steps and return values. The assertion-function ratio is then also tracked for coverage, especially in critical sections like our consensus or storage engine.<p>So—apologies for the wince! I feel it too, this would certainly be a nasty bug if it were to happen.</p>
]]></description><pubDate>Thu, 13 Oct 2022 18:49:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=33194895</link><dc:creator>_vvhw</dc:creator><comments>https://news.ycombinator.com/item?id=33194895</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33194895</guid></item><item><title><![CDATA[New comment by _vvhw in "A database without dynamic memory allocation"]]></title><description><![CDATA[
<p>Joran from the TigerBeetle team here!<p>We have a secret plan for this too. ;)</p>
]]></description><pubDate>Thu, 13 Oct 2022 18:32:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=33194710</link><dc:creator>_vvhw</dc:creator><comments>https://news.ycombinator.com/item?id=33194710</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33194710</guid></item><item><title><![CDATA[New comment by _vvhw in "A database without dynamic memory allocation"]]></title><description><![CDATA[
<p>Good to be back—Joran from the TigerBeetle team here!<p>Static allocation does make for some extremely hard guarantees on p100 latency. For example, for a batch of 8191 queries, the performance plot is like Y=10ms, i.e. a flat line.<p>And memory doesn't increase as throughput increases—it's just another flat line.<p>I personally find it also to be a fun way of coding, everything is explicit and limits are well-defined.</p>
]]></description><pubDate>Thu, 13 Oct 2022 18:26:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=33194639</link><dc:creator>_vvhw</dc:creator><comments>https://news.ycombinator.com/item?id=33194639</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33194639</guid></item><item><title><![CDATA[New comment by _vvhw in "A database without dynamic memory allocation"]]></title><description><![CDATA[
<p>Thanks!<p>Data Oriented Design runs like a river through TigerBeetle—it's always on our mind.<p>By the way, have you seen Andrew Kelley's Handmade Seattle talk on Practical DOD? [1]<p>[1] <a href="https://vimeo.com/649009599" rel="nofollow">https://vimeo.com/649009599</a></p>
]]></description><pubDate>Thu, 13 Oct 2022 18:20:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=33194557</link><dc:creator>_vvhw</dc:creator><comments>https://news.ycombinator.com/item?id=33194557</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33194557</guid></item><item><title><![CDATA[New comment by _vvhw in "A database without dynamic memory allocation"]]></title><description><![CDATA[
<p>Thanks!<p>Joran from the TigerBeetle team here.<p>> I would imagine this would be potentially more efficient than having conventional mallocs.<p>Yes, in our experience, static allocation means we use sometimes 10x less memory. For example, TigerBeetle's storage engine can theoretically address up to 100 TiB with less than 1 GiB of RAM for the LSM in-memory manifest, which is efficient.<p>Because we think about memory so much upfront, in the design phase, we tend not to waste it.</p>
]]></description><pubDate>Thu, 13 Oct 2022 18:14:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=33194513</link><dc:creator>_vvhw</dc:creator><comments>https://news.ycombinator.com/item?id=33194513</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33194513</guid></item><item><title><![CDATA[New comment by _vvhw in "A database without dynamic memory allocation"]]></title><description><![CDATA[
<p>Thanks!<p>Joran from the TigerBeetle team here.<p>TigerBeetle's storage engine is designed also for range queries, and we have some interesting ideas for our query engine in the works.<p>To be sure, there are some tricky things that crop up, such as pipeline blockers for queries. However, we do have limits on literally everything, so that makes it easier—static allocation is best when it's done viral.<p>We wanted to go into so much more detail on all this but there was only space for so much. Stay tuned.</p>
]]></description><pubDate>Thu, 13 Oct 2022 18:09:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=33194455</link><dc:creator>_vvhw</dc:creator><comments>https://news.ycombinator.com/item?id=33194455</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33194455</guid></item><item><title><![CDATA[New comment by _vvhw in "A database without dynamic memory allocation"]]></title><description><![CDATA[
<p>Joran from the TigerBeetle team here!<p>TigerBeetle uses Deterministic Simulation Testing to test and keep testing these paths. Fuzzing and static allocation are force multipliers when applied together, because you can now flush out leaks and deadlocks in testing, rather than letting these spillover into production.<p>Without static allocation, it's a little harder to find leaks in testing, because the limits that would define a leak are not explicit.</p>
]]></description><pubDate>Thu, 13 Oct 2022 18:01:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=33194379</link><dc:creator>_vvhw</dc:creator><comments>https://news.ycombinator.com/item?id=33194379</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33194379</guid></item><item><title><![CDATA[New comment by _vvhw in "A database without dynamic memory allocation"]]></title><description><![CDATA[
<p>Thanks!<p>Joran from the TigerBeetle team here.<p>This was in fact one of our motivations for static allocation—thinking about how best to handle overload from the network, while remaining stable. The Google SRE book has a great chapter on this called "Handling Overload" and this had an impact on us. We were thinking, well, how do we get this right for a database?<p>We also wanted to make explicit what is often implicit, so that the operator has a clear sense of how to provision their API layer around TigerBeetle.</p>
]]></description><pubDate>Thu, 13 Oct 2022 17:57:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=33194335</link><dc:creator>_vvhw</dc:creator><comments>https://news.ycombinator.com/item?id=33194335</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33194335</guid></item><item><title><![CDATA[New comment by _vvhw in "Why you might want a domain-specific database like TigerBeetleDB"]]></title><description><![CDATA[
<p>Basically, and we're huge fans of FoundationDB!<p>As you zoom in, you will see differences. For example, TigerBeetle's data structures are all cache line aligned, and we use static allocation etc. The storage fault model is significantly different.<p>We use the same testing techniques though. FDB are pioneers in the space.</p>
]]></description><pubDate>Mon, 12 Sep 2022 07:37:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=32807179</link><dc:creator>_vvhw</dc:creator><comments>https://news.ycombinator.com/item?id=32807179</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32807179</guid></item><item><title><![CDATA[New comment by _vvhw in "Why you might want a domain-specific database like TigerBeetleDB"]]></title><description><![CDATA[
<p>Thanks, it's a pleasure! Yes, with packed structs it's important to keep things carefully aligned.<p>Have you seen this post [1] about struct packing? This is what we did for TB's structures, so that we can switch them to `extern struct` for C ABI compatibility. It also helped side step the packed struct bugs.<p>[1] <a href="http://www.catb.org/esr/structure-packing/" rel="nofollow">http://www.catb.org/esr/structure-packing/</a></p>
]]></description><pubDate>Mon, 12 Sep 2022 07:36:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=32807175</link><dc:creator>_vvhw</dc:creator><comments>https://news.ycombinator.com/item?id=32807175</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32807175</guid></item></channel></rss>