<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: amluto</title><link>https://news.ycombinator.com/user?id=amluto</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 17 Aug 2026 06:47:54 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=amluto" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by amluto in "RISC-V: They Should Have Known Better"]]></title><description><![CDATA[
<p>Fair point.<p>66 E9 is not a practical compatibility problem, though: it’s not a useful encoding of a useful instruction on any CPU :)</p>
]]></description><pubDate>Sat, 15 Aug 2026 21:08:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=49314346</link><dc:creator>amluto</dc:creator><comments>https://news.ycombinator.com/item?id=49314346</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49314346</guid></item><item><title><![CDATA[New comment by amluto in "AI Isn't Outthinking Mathematicians. It's Out-Remembering Them"]]></title><description><![CDATA[
<p>In limited experimentation: AI will certainly make statements that are extremely intricate and hard to understand, in part because they're overcomplicated and in part because they use a bunch of unnecessary terminology.<p>This is not to say that a human couldn't understand a streamlined version or that the AI would not be better if it made more streamlined statements to begin with.<p>(I am not saying that everything mathematical that an AI produces is in any sense trivial.)</p>
]]></description><pubDate>Sat, 15 Aug 2026 18:29:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=49313017</link><dc:creator>amluto</dc:creator><comments>https://news.ycombinator.com/item?id=49313017</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49313017</guid></item><item><title><![CDATA[New comment by amluto in "RISC-V: They Should Have Known Better"]]></title><description><![CDATA[
<p>At least with user-mode feature detection there could be an assertion that the correct feature set is present.</p>
]]></description><pubDate>Sat, 15 Aug 2026 17:23:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=49312430</link><dc:creator>amluto</dc:creator><comments>https://news.ycombinator.com/item?id=49312430</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49312430</guid></item><item><title><![CDATA[New comment by amluto in "RISC-V: They Should Have Known Better"]]></title><description><![CDATA[
<p>In x86 land, there are, as a practical matter, four ISAs: real/v8086 mode, 16-bit protected mode, 32-bit protected mode, and 64-bit “long” mode. Machine code targeting one of these will be executed correctly by the CPU as long as the CPU is in the right mode. (Really it’s messier — there are the CS.D, CS.L, and SS.B bits plus the control bits for v8086, protected and long mode, but this barely matters.)<p>Sure, this is messy. But, critically, on x86, these are all <i>modes</i>, and any CPU that supports them makes them detectable and supports them in the same way. If you run long mode code outside long mode, some opcodes will be interpreted as the wrong instruction. But you will <i>not</i> find multiple different <i>CPUs</i> that decode valid instructions differently.  If I run your weird old x86 code, either it will run correctly or it will fault.<p>Oh, and <i>all</i> these modes are older than RISC-V.  To the extent that there are lessons to be learned, RISC-V should have learned them.<p>The fact that you can apparently find two RISC-V CPUs that decode some ordinary user mode instructions based on published standards as entirely different operations is bizarre, to say the least.  The fact that the relevant CPU features can’t even be enumerated in user mode just makes it worse.<p>(There are edge cases in x86. Some <i>invalid</i> opcodes have different lengths on different vendors’ CPUs. This is not a problem in practice because, one way or another, they fault.  There was also a little glitch in the 64-bit design where some really really old x87 FPU code that uses exceptions cannot be corrected handled by a kernel on a modern CPU.)</p>
]]></description><pubDate>Sat, 15 Aug 2026 16:22:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=49311869</link><dc:creator>amluto</dc:creator><comments>https://news.ycombinator.com/item?id=49311869</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49311869</guid></item><item><title><![CDATA[New comment by amluto in "RISC-V: They Should Have Known Better"]]></title><description><![CDATA[
<p>You can’t fix the mutually incompatible overlapping encodings in post.</p>
]]></description><pubDate>Sat, 15 Aug 2026 01:21:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=49306636</link><dc:creator>amluto</dc:creator><comments>https://news.ycombinator.com/item?id=49306636</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49306636</guid></item><item><title><![CDATA[New comment by amluto in "Single log line is 49KB+ (ext4) / 110KB+ (btrfs) of systemd-journald disk writes"]]></title><description><![CDATA[
<p>I want my logs readable on a completely read-only disk. Sure, I can start a daemon, but that’s mildly annoying.<p>Also, the syslog daemon should be extremely reliable, and throwing giant table scans at it makes this more complex.</p>
]]></description><pubDate>Fri, 14 Aug 2026 21:57:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=49305089</link><dc:creator>amluto</dc:creator><comments>https://news.ycombinator.com/item?id=49305089</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49305089</guid></item><item><title><![CDATA[New comment by amluto in "Qwen 3.8 27B"]]></title><description><![CDATA[
<p>> RTX 3090 for each and every employee<p>That’s quite inefficient.  Get 2x RTX 6000 Pro and run DeepSeek v4 Flash for the whole company. This may or may not be cost effective compared to cheap third party providers, but it lets you own your own data, is not actually that expensive, and reports suggest that you can get 2k tok/s or so from a setup like this (at respectable batch size, but that’s exactly what you want in this situation).<p>I’m not sure I believe that the unquantized performance is as good as people are claiming, but even light quantization would make it fit easily.</p>
]]></description><pubDate>Fri, 14 Aug 2026 19:38:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=49303622</link><dc:creator>amluto</dc:creator><comments>https://news.ycombinator.com/item?id=49303622</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49303622</guid></item><item><title><![CDATA[New comment by amluto in "Single log line is 49KB+ (ext4) / 110KB+ (btrfs) of systemd-journald disk writes"]]></title><description><![CDATA[
<p>The problems are much more than just sync.<p>A long time ago I had this over-optimistic idea: x86 hardware (and probably most other hardware) has these cool hardware-managed dirty page bits.  So you would write to a mapped page, not even take a page fault, and the hardware would record that it's dirty.  Later on the kernel would notice and flush.  Excellent performance.<p>Hahaha.  It's much much much more complex.  For various reasons (maybe good, maybe bad -- see below), Linux barely uses the real hardware dirty bit.  Instead, when you map a file as shared-writable, at first it might not really be mapped at all.  If you read it, it gets faulted in and becomes readable.  When you first try to write to it, a page fault is generated, and, on non-FRED x86, the page fault itself is very slow.  The kernel will do things, including calling into the FS and updating atime [0], to make the page logically writable.  It updates the page tables so that the CPU knows it's writable, and it sets the dirty bit right then (after all, this is a bit faster than letting the CPU set it immediately thereafter when you retry the faulting write).<p>Okay, now it's writable.  Writes are essentially free until the kernel decides to write the data back to the disk.  The kernel will mark the page non-writable (because it wants to get notified the next time you try to write to it) and flush the TLB (which is <i>extremely expensive</i>, especially on x86 systems that aren't the latest AMD CPUs).  And it will write the page back, more or less as if you had used normal syscalls to write it.<p>There's more fun, though.  Some filesystems and/or backing stores need "stable pages" -- they need the page cache pages that are being written to not be modified while being written back.  btrfs, for example, wants to checksum the data and then write the data and the checksum out consistently, and if something changes the data while it's being DMAed, then this can't happen.  So special locks might be taken to delay future writes to the page until writeback is done, and that includes blocking the "make writable" page fault handler.   Oops, there goes performance.<p>Could the kernel do better?  Probably.  Will it?  Unlikely in the near future.  I've contemplated a special mechanism to map a "fast write" window onto a file that would be permanently writable and use the hardware dirty bit to tell the kernel when to transfer the data out.  Even if anyone ever implemented this, it would be a very specialized thing, it would incur polling overhead, and it would be utterly silly to use it for something like syslog.<p>Just use pwrite or io_uring unless you have actual evidence that mmap is better.<p>mmap read is a different story, of course.<p>[0] I think that updating atime at make-writable time instead of at writeback time is both non-performant and semantically incorrect.  I've never convinced the maintainers well enough, though.</p>
]]></description><pubDate>Fri, 14 Aug 2026 16:49:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=49301296</link><dc:creator>amluto</dc:creator><comments>https://news.ycombinator.com/item?id=49301296</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49301296</guid></item><item><title><![CDATA[New comment by amluto in "Single log line is 49KB+ (ext4) / 110KB+ (btrfs) of systemd-journald disk writes"]]></title><description><![CDATA[
<p>On the disk the live update part would be either a circular buffer (and readers would need to double-check the start/end marks after reading) or just literal append-only streams.  In the latter case, reading would be barely more complex than tail -f.</p>
]]></description><pubDate>Fri, 14 Aug 2026 13:18:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=49298296</link><dc:creator>amluto</dc:creator><comments>https://news.ycombinator.com/item?id=49298296</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49298296</guid></item><item><title><![CDATA[New comment by amluto in "Single log line is 49KB+ (ext4) / 110KB+ (btrfs) of systemd-journald disk writes"]]></title><description><![CDATA[
<p>I don’t think there’s any hard work here. Other than the append-only part, all files would be either immutable (the Parquet parts) or maybe mutated by wholesale atomic replacement of the inode (the catalog, although the directory itself, via its contained filenames) could maybe do that. Readers might have to retry sometimes, but readers would neither have boy expect any write privileges.</p>
]]></description><pubDate>Fri, 14 Aug 2026 04:27:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=49294755</link><dc:creator>amluto</dc:creator><comments>https://news.ycombinator.com/item?id=49294755</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49294755</guid></item><item><title><![CDATA[New comment by amluto in "Single log line is 49KB+ (ext4) / 110KB+ (btrfs) of systemd-journald disk writes"]]></title><description><![CDATA[
<p>That design doc explicitly talks about what is, essentially, compression of duplicate values in the same column. Many column-oriented databases do this.<p>With SQLite you’re looking at third party extensions that compress the data, still in row-oriented format, and might rather inefficiently recover some benefit.  But WAL probably does help with the write amplification above and beyond this.<p>journald-style logs really want a column store IMO.  It would be highly entertaining to try something like ducklake  with SQLite as the catalog — the whole stack is pretty lightweight and there’s support for inlining inserts in the catalog to avoid creating silly numbers of Parquet files.</p>
]]></description><pubDate>Fri, 14 Aug 2026 00:23:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=49293377</link><dc:creator>amluto</dc:creator><comments>https://news.ycombinator.com/item?id=49293377</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49293377</guid></item><item><title><![CDATA[New comment by amluto in "Single log line is 49KB+ (ext4) / 110KB+ (btrfs) of systemd-journald disk writes"]]></title><description><![CDATA[
<p>The journald schema is surprisingly wide and has a bunch of boilerplate, and one of the goals is to keep the on-disk size under control (and an efficient format directly reduces write amplification).  And you kind of want a format that allows a reader to just read the file without blocking concurrent writes.  And the ability to use third-party tools to easily read the format is quite nice.<p>SQLite gets the last one but misses on the first two (although WAL and the improved read-only support in 3.20+ mostly gets #1).  DuckDB might be decent except that you would need to connect through the daemon to read if the daemon is running.  If a daemon that coordinates everything is okay, something like Clickhouse might work.<p>An LSM-style layer over Parquet gets all of this fairly naturally as long as readers using third party tools understand the LSM scheme.  (In general there is a lack of consensus as to exactly how to correctly and efficiently use multiple Parquet files together.)</p>
]]></description><pubDate>Fri, 14 Aug 2026 00:13:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=49293314</link><dc:creator>amluto</dc:creator><comments>https://news.ycombinator.com/item?id=49293314</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49293314</guid></item><item><title><![CDATA[New comment by amluto in "Single log line is 49KB+ (ext4) / 110KB+ (btrfs) of systemd-journald disk writes"]]></title><description><![CDATA[
<p>Append-only -> Parquet -> bigger Parquet would do the trick.  Sadly Parquet is useless for the append-only layer. Feather would work but is quite inefficient with a batch size of 1.</p>
]]></description><pubDate>Thu, 13 Aug 2026 21:24:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=49292045</link><dc:creator>amluto</dc:creator><comments>https://news.ycombinator.com/item?id=49292045</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49292045</guid></item><item><title><![CDATA[New comment by amluto in "New model BDH-CQ costs $0.007 per task 11x less than OpenAI Luna even w 80% off"]]></title><description><![CDATA[
<p>This model does not appear to be a language model at all.  I wonder if has any ability to process text or communicate in any natural language.</p>
]]></description><pubDate>Thu, 13 Aug 2026 20:10:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=49291226</link><dc:creator>amluto</dc:creator><comments>https://news.ycombinator.com/item?id=49291226</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49291226</guid></item><item><title><![CDATA[New comment by amluto in "Single log line is 49KB+ (ext4) / 110KB+ (btrfs) of systemd-journald disk writes"]]></title><description><![CDATA[
<p>Ooh, mmapped writes. I make that mistake once, years ago. :)  I posted a comment in that GH issue.</p>
]]></description><pubDate>Thu, 13 Aug 2026 19:57:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=49291091</link><dc:creator>amluto</dc:creator><comments>https://news.ycombinator.com/item?id=49291091</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49291091</guid></item><item><title><![CDATA[New comment by amluto in "CFTC declares market emergency, orders Kalshi to continue to operate in New York"]]></title><description><![CDATA[
<p>But he surely had an insurable interest in that cigar!</p>
]]></description><pubDate>Thu, 13 Aug 2026 17:39:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=49289364</link><dc:creator>amluto</dc:creator><comments>https://news.ycombinator.com/item?id=49289364</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49289364</guid></item><item><title><![CDATA[New comment by amluto in "CFTC declares market emergency, orders Kalshi to continue to operate in New York"]]></title><description><![CDATA[
<p>If I have an insurable interest in Cloudflare’s uptime, I may buy insurance. If not, I may not.<p>(IANAL.  In the US this seems to largely be a state law issue. California’s law, to my quick non-expert skimming, is really quite clear on this point.)</p>
]]></description><pubDate>Wed, 12 Aug 2026 02:52:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=49267319</link><dc:creator>amluto</dc:creator><comments>https://news.ycombinator.com/item?id=49267319</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49267319</guid></item><item><title><![CDATA[New comment by amluto in "CFTC declares market emergency, orders Kalshi to continue to operate in New York"]]></title><description><![CDATA[
<p>No.<p>And, in fact, there is a concept called an “insurable interest” that is intended to prevent this kind of thing.<p>If I buy an insurance contract that will pay me if your house burns down and then I burn down your house, then I’ve obviously committed arson, but I have also likely purchased that insurance contract illegally.  And I don’t even need to burn down your house for that contract to be illegal.<p>(IANAL)</p>
]]></description><pubDate>Wed, 12 Aug 2026 02:47:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=49267289</link><dc:creator>amluto</dc:creator><comments>https://news.ycombinator.com/item?id=49267289</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49267289</guid></item><item><title><![CDATA[New comment by amluto in "Nvidia Nemotron 3.5 Lightning and NeMo Switchyard"]]></title><description><![CDATA[
<p>Huh?<p>Prompt caching isn’t about caching the literal text of the prompt. It’s about caching the result of running prefill on the prompt (or, equivalently, the result of generating the prompt one token at a time by autoregressive inference, or some combination of the above in the case of speculative decoding).  This is often called the “KV” cache, and it is very model-specific.</p>
]]></description><pubDate>Tue, 11 Aug 2026 21:50:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=49264992</link><dc:creator>amluto</dc:creator><comments>https://news.ycombinator.com/item?id=49264992</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49264992</guid></item><item><title><![CDATA[New comment by amluto in "Stealing Reasoning Traces from Proprietary LLM APIs"]]></title><description><![CDATA[
<p>Makes no difference. There is a policy as to whether to allow use of a reasoning trace in a given context. Whether that trace originates from authenticated ciphertext or a backend database is basically irrelevant.</p>
]]></description><pubDate>Tue, 11 Aug 2026 16:40:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=49260888</link><dc:creator>amluto</dc:creator><comments>https://news.ycombinator.com/item?id=49260888</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49260888</guid></item></channel></rss>