<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: hyc_symas</title><link>https://news.ycombinator.com/user?id=hyc_symas</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 03 Sep 2026 10:54:03 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=hyc_symas" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by hyc_symas in "Garage S3: LMDB Corruption Post-Mortem"]]></title><description><![CDATA[
<p>> <i>A power outage interrupted Garage mid-write on the LMDB metadata database. LMDB uses mmap’d I/O and, by default, operates with MDB_NOMETASYNC and MDB_NOSYNC (Garage sets metadata_fsync = false by default)</i><p>No, <i>Garage</i> disables LMDB's safety mechanisms by default. By default, LMDB performs whatever necessary syncs and is 100% crash proof, even in the face of power outages. Garage's problems are of their own making, not because LMDB has unsafe defaults.</p>
]]></description><pubDate>Thu, 23 Jul 2026 15:35:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=49023294</link><dc:creator>hyc_symas</dc:creator><comments>https://news.ycombinator.com/item?id=49023294</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49023294</guid></item><item><title><![CDATA[New comment by hyc_symas in "Lightning Memory-Mapped Database Manager (LMDB) 1.0"]]></title><description><![CDATA[
<p>The txnID was added to the page header to enable support for incremental backup. As a consequence, it's sufficient to compare a page's txnID to the current txnID to know if it's dirty or not, and spilled pages don't need a cleanup pass to clear their dirty bit on commit so commits of large txns are faster now.</p>
]]></description><pubDate>Sun, 05 Jul 2026 14:32:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=48794579</link><dc:creator>hyc_symas</dc:creator><comments>https://news.ycombinator.com/item?id=48794579</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48794579</guid></item><item><title><![CDATA[New comment by hyc_symas in "Lightning Memory-Mapped Database Manager (LMDB) 1.0"]]></title><description><![CDATA[
<p>write/fsync can be faster in a large dataset because writes let the filesystem know an explicit list of dirty pages, so fsync only needs to deal with them.<p>mmap/msync gives no hints about which pages are dirty (unless the app tracks them itself and msyncs them individually, which would completely defeat any reduced syscall advantage of using a writable mmap in the first place) so the entire map must be scanned for dirty pages.<p>In practice, the expected performance advantages of using a writable mmap just aren't there, and coupled with the ease of silent corruption, it's best to never use that approach.</p>
]]></description><pubDate>Sun, 05 Jul 2026 13:33:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=48794217</link><dc:creator>hyc_symas</dc:creator><comments>https://news.ycombinator.com/item?id=48794217</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48794217</guid></item><item><title><![CDATA[New comment by hyc_symas in "Lightning Memory-Mapped Database Manager (LMDB) 1.0"]]></title><description><![CDATA[
<p>By the way, you're wrong on both points - the cache of page mallocs is not infinite, and it <i>does</i> spill dirty pages to disk when necessary. And the latter is what bounds the number of malloc'd pages.</p>
]]></description><pubDate>Sat, 04 Jul 2026 09:48:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=48784166</link><dc:creator>hyc_symas</dc:creator><comments>https://news.ycombinator.com/item?id=48784166</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48784166</guid></item><item><title><![CDATA[New comment by hyc_symas in "Lightning Memory-Mapped Database Manager (LMDB) 1.0"]]></title><description><![CDATA[
<p>You're dreaming. None of your explicit memory control operations mean anything in practice, because today everything runs in VMs with no actual control of the underlying hardware. Probably co-resident with an unknown number of other tenants.<p>As for what you claim the paper's authors were saying - I quoted their text verbatim. Your interpretation is not what they said.<p>They claimed using mmap safely is impossible, and using it correctly requires more complexity than a traditional DB design. The safety claim was already disproven by multiple researchers. To prove their second claim they would have had to produce a DB that did traditional buffer management and was simpler and more performant than using mmap. They never did any such thing, nor could they.</p>
]]></description><pubDate>Fri, 03 Jul 2026 18:34:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=48778310</link><dc:creator>hyc_symas</dc:creator><comments>https://news.ycombinator.com/item?id=48778310</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48778310</guid></item><item><title><![CDATA[New comment by hyc_symas in "Lightning Memory-Mapped Database Manager (LMDB) 1.0"]]></title><description><![CDATA[
<p>In the time it takes for your query optimizer to dissect a query and "look ahead" LMDB would have already answered a million queries. You think your magical "future oracle" is zero cost? How many KLOCs is it? LMDB's hot paths fit entirely inside a CPU's L1 cache.</p>
]]></description><pubDate>Fri, 03 Jul 2026 18:29:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=48778232</link><dc:creator>hyc_symas</dc:creator><comments>https://news.ycombinator.com/item?id=48778232</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48778232</guid></item><item><title><![CDATA[New comment by hyc_symas in "Lightning Memory-Mapped Database Manager (LMDB) 1.0"]]></title><description><![CDATA[
<p>Indeed, there's no need to use the doc website. There's nothing there that isn't embedded in the LMDB source code. All of the docs are generated from doxygen comments in the source.</p>
]]></description><pubDate>Fri, 03 Jul 2026 17:21:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=48777449</link><dc:creator>hyc_symas</dc:creator><comments>https://news.ycombinator.com/item?id=48777449</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48777449</guid></item><item><title><![CDATA[New comment by hyc_symas in "Lightning Memory-Mapped Database Manager (LMDB) 1.0"]]></title><description><![CDATA[
<p>If you're downloading binaries from a plaintext documentation site, I think that's on you.</p>
]]></description><pubDate>Fri, 03 Jul 2026 15:33:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=48776239</link><dc:creator>hyc_symas</dc:creator><comments>https://news.ycombinator.com/item?id=48776239</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48776239</guid></item><item><title><![CDATA[New comment by hyc_symas in "Lightning Memory-Mapped Database Manager (LMDB) 1.0"]]></title><description><![CDATA[
<p>Nonsense. The best you will ever do, even with full application knowledge and complete control of the machine, is an LRU cache replacement algorithm. But when you do it yourself you have to juggle the fine details of which indices to prioritize, and you will never get it perfect. If you're not running a dedicated machine, as soon as any other processes run all your careful tuning goes out the window.<p>Since LMDB manages multiple tables as a tree of trees, no fine tuning is needed. The internal paths to every hot page automatically take priority, regardless of which index or how large each index is. So a simpleminded LRU always makes optimal use of available cache, regardless of access pattern or other load on the system.</p>
]]></description><pubDate>Fri, 03 Jul 2026 15:31:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=48776210</link><dc:creator>hyc_symas</dc:creator><comments>https://news.ycombinator.com/item?id=48776210</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48776210</guid></item><item><title><![CDATA[New comment by hyc_symas in "Lightning Memory-Mapped Database Manager (LMDB) 1.0"]]></title><description><![CDATA[
<p>Obligatory "that paper is garbage" <a href="https://www.symas.com/post/are-you-sure-you-want-to-use-mmap-in-your-dbms" rel="nofollow">https://www.symas.com/post/are-you-sure-you-want-to-use-mmap...</a></p>
]]></description><pubDate>Fri, 03 Jul 2026 15:25:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=48776151</link><dc:creator>hyc_symas</dc:creator><comments>https://news.ycombinator.com/item?id=48776151</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48776151</guid></item><item><title><![CDATA[New comment by hyc_symas in "Lightning Memory-Mapped Database Manager (LMDB) 1.0"]]></title><description><![CDATA[
<p>Irrelevant, since LMDB doesn't dirty the pages in the mmap. The mmap is read-only.</p>
]]></description><pubDate>Fri, 03 Jul 2026 15:20:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=48776102</link><dc:creator>hyc_symas</dc:creator><comments>https://news.ycombinator.com/item?id=48776102</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48776102</guid></item><item><title><![CDATA[New comment by hyc_symas in "Lightning Memory-Mapped Database Manager (LMDB) 1.0"]]></title><description><![CDATA[
<p>LMDB 1.0 no longer uses a P_DIRTY flag, it no longer has to explicitly mark pages as clean.</p>
]]></description><pubDate>Fri, 03 Jul 2026 15:18:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=48776081</link><dc:creator>hyc_symas</dc:creator><comments>https://news.ycombinator.com/item?id=48776081</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48776081</guid></item><item><title><![CDATA[New comment by hyc_symas in "How Monero’s proof of work works"]]></title><description><![CDATA[
<p>> The price is intended to decrease.<p>No. Monero's tail emission rate was specifically chosen to be less than the rate of global gold production. Do you claim the price of gold is intended to decrease?<p>A continuous emission like Monero's doesn't equate to inflation/devaluation. It allows its userbase to expand organically, without artificial scarcity pumping its price.</p>
]]></description><pubDate>Wed, 06 May 2026 08:07:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=48033597</link><dc:creator>hyc_symas</dc:creator><comments>https://news.ycombinator.com/item?id=48033597</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48033597</guid></item><item><title><![CDATA[New comment by hyc_symas in "How Monero’s proof of work works"]]></title><description><![CDATA[
<p>I don't know what the current versions do, it's been a while since I touched that code.<p>I have no reason to lie, I'm not selling anything. Bitmain is selling mining hardware, take a look at their claims. They've had 7 years to try to crack it.</p>
]]></description><pubDate>Tue, 05 May 2026 20:22:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=48027973</link><dc:creator>hyc_symas</dc:creator><comments>https://news.ycombinator.com/item?id=48027973</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48027973</guid></item><item><title><![CDATA[New comment by hyc_symas in "How Monero’s proof of work works"]]></title><description><![CDATA[
<p>FPGAs have no particular advantage. You could dedicate a chunk of their resources to implement a softcore CPU but it'd be several times slower than a real CPU.<p>The random programs change too quickly to just implement them directly on an FPGA. Reprogramming the entire chip like that takes too much time.</p>
]]></description><pubDate>Tue, 05 May 2026 17:45:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=48025938</link><dc:creator>hyc_symas</dc:creator><comments>https://news.ycombinator.com/item?id=48025938</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48025938</guid></item><item><title><![CDATA[New comment by hyc_symas in "How Monero’s proof of work works"]]></title><description><![CDATA[
<p>> Loved your 2019 talk on "is XMR still ASIC-proof" – is it still, in 2026, in your opinion?<p>Yep. Nothing about computing architecture has changed.</p>
]]></description><pubDate>Tue, 05 May 2026 17:20:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=48025585</link><dc:creator>hyc_symas</dc:creator><comments>https://news.ycombinator.com/item?id=48025585</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48025585</guid></item><item><title><![CDATA[New comment by hyc_symas in "How Monero’s proof of work works"]]></title><description><![CDATA[
<p>>> just killing the process will never corrupt the blockchain DB<p>> I would love to show you how easy this is to reproduce, even on fresh installs of Ubuntu and/or MacOS on otherwise-stable hardware (never tried Windows... easier?).<p>If it's so easy to reproduce, you should be able to screen record a session with two terminal windows:<p>1  with monerod running and syncing the blockchain<p>2  send a `kill -9` to the monerod<p>1b restart monerod<p>And then we should see the error message you're referring to.</p>
]]></description><pubDate>Tue, 05 May 2026 16:53:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=48025129</link><dc:creator>hyc_symas</dc:creator><comments>https://news.ycombinator.com/item?id=48025129</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48025129</guid></item><item><title><![CDATA[New comment by hyc_symas in "How Monero’s proof of work works"]]></title><description><![CDATA[
<p>> If you don't sync then you're not (cannot be) a fullnode / network verifyer / ringsigner.<p>I was talking about database sync, not blockchain sync. You don't need to use safe sync mode if you don't have to worry about machine crashes. And just killing the process will never corrupt the blockchain DB.<p>> This may be old behavior... I go way back<p>On this particular point, I go way back further than you.</p>
]]></description><pubDate>Tue, 05 May 2026 06:44:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=48018914</link><dc:creator>hyc_symas</dc:creator><comments>https://news.ycombinator.com/item?id=48018914</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48018914</guid></item><item><title><![CDATA[New comment by hyc_symas in "How Monero’s proof of work works"]]></title><description><![CDATA[
<p>Light mode is used mostly by the monerod, validating incoming blocks. But on a machine with sufficient free RAM, monerod can also be set to use Fast mode instead.<p>The post described both modes. The only difference is that Fast mode processes the cache to generate the full 2.1GB dataset, so subsequent programs can just reference it as needed. Light mode uses only the 256MB cache and generates the required dataset values individually, on each access. That saves RAM but costs more CPU time.</p>
]]></description><pubDate>Tue, 05 May 2026 06:35:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=48018846</link><dc:creator>hyc_symas</dc:creator><comments>https://news.ycombinator.com/item?id=48018846</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48018846</guid></item><item><title><![CDATA[New comment by hyc_symas in "How Monero’s proof of work works"]]></title><description><![CDATA[
<p>The limit we set at the beginning was "no one can design a custom device for RandomX with more than a 2:1 efficiency advantage over general purpose CPUs". That is and will forever remain true.<p>In reality, no one has been able to build any device for RandomX that isn't actually a CPU. The closest thing to a "mining ASIC" is just a bunch of RISC-V cores.</p>
]]></description><pubDate>Tue, 05 May 2026 05:59:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=48018622</link><dc:creator>hyc_symas</dc:creator><comments>https://news.ycombinator.com/item?id=48018622</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48018622</guid></item></channel></rss>