<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: pm215</title><link>https://news.ycombinator.com/user?id=pm215</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 13 May 2026 14:18:25 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=pm215" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by pm215 in "Deterministic Fully-Static Whole-Binary Translation Without Heuristics"]]></title><description><![CDATA[
<p>Yes, QEMU's JIT is a fairly easy target to beat. Notably if you are happy to specialize the design to "only x86 to aarch64" and "only usermode" there's quite a lot of gain to be made. QEMU's usermode support is a kind of "this happens to work" appendix to its system emulation support, and the overall JIT architecture is a "guest to intermediate representation to host" one that is great for supporting a dozen guest architectures and multiple host architectures, but means you can't really take advantage of properties of a specific guest/host pair like "x86 has fewer integer registers so we can hard allocate them" or "we know the fiddly floating point semantics always match if you put the aarch64 CPU into the right mode". Plus there's just more time put into "emulate new architecture feature X" in QEMU development than into "look at optimization opportunities to make it faster", because that's what the people who pay for development work care more about.</p>
]]></description><pubDate>Wed, 13 May 2026 07:23:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=48118846</link><dc:creator>pm215</dc:creator><comments>https://news.ycombinator.com/item?id=48118846</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48118846</guid></item><item><title><![CDATA[New comment by pm215 in "Voice Modems"]]></title><description><![CDATA[
<p>For a long time in the dialup era my "answering machine" was a US Robotics voice-capable modem attached to my home Linux PC, with some scripts to make it pick up after N rings, play a message, record whatever the caller said, and then email me the resulting sound file. The Linux support for it included DTMF tone recognition, so I added in a quick hack so that if I sent it the right pin code during the "please leave a message" part it would wait for me to hang up and then dial my ISP, so I could ssh in to it from wherever I was...</p>
]]></description><pubDate>Tue, 28 Apr 2026 15:17:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=47935810</link><dc:creator>pm215</dc:creator><comments>https://news.ycombinator.com/item?id=47935810</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47935810</guid></item><item><title><![CDATA[New comment by pm215 in "The secrets of the Shinkansen"]]></title><description><![CDATA[
<p>Unfortunately the 70% price rise on the JR pass back in 2023 made it much less likely to be economic for most people compared to just buying tickets as you go, even for trips that visit more than one city. Last time I was there I did a loop up from Tokyo to Hokkaido and back by rail, and it was still cheaper to buy individual tickets. (There are obviously still some itineraries where it works out cheaper, but it's much less of an "obviously good idea for most people" than it was back before 2023.)</p>
]]></description><pubDate>Tue, 14 Apr 2026 09:24:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=47763235</link><dc:creator>pm215</dc:creator><comments>https://news.ycombinator.com/item?id=47763235</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47763235</guid></item><item><title><![CDATA[New comment by pm215 in "Rob Pike's 5 Rules of Programming"]]></title><description><![CDATA[
<p>Also, "why these 5 in particular" is definitely not obvious -- there are a great many possible "obvious in some sense but also true in an important way" epigrams to choose from (the Perlis link from another comment has over a hundred). That Pike picked these 5 to emphasise tells you something about his view of programming, and doubly so given that they are rather overlapping in what they're talking about.</p>
]]></description><pubDate>Wed, 18 Mar 2026 11:18:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=47424216</link><dc:creator>pm215</dc:creator><comments>https://news.ycombinator.com/item?id=47424216</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47424216</guid></item><item><title><![CDATA[New comment by pm215 in "Every layer of review makes you 10x slower"]]></title><description><![CDATA[
<p>If the team is that small and working on things that are that disparate, then it is also very vulnerable to one of those people leaving, at which point there's a whole part of the project that nobody on the team has a good understanding of.<p>Having somebody else devote enough time to being up to speed enough to do code review on an area is also an investment in resilience so the team isn't suddenly in huge difficulty if the lone expert in that area leaves. It's still a problem, but at least you have one other person who's been looking at the code and talking about it with the now-departed expert, instead of nobody.</p>
]]></description><pubDate>Tue, 17 Mar 2026 08:36:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=47409995</link><dc:creator>pm215</dc:creator><comments>https://news.ycombinator.com/item?id=47409995</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47409995</guid></item><item><title><![CDATA[New comment by pm215 in "The purpose of continuous integration is to fail"]]></title><description><![CDATA[
<p>A fairly large category of the flaky CI jobs I see is "dodgy infrastructure". For instance one recurring type for our project is one I just saw fail this afternoon, where a gitlab CI runner tries to clone the git repo from gitlab itself and gets an HTTP 502 error. We've also had issues with "the s390 VM that does CI job running is on an overloaded host, so mostly it's fine but occasionally the VM gets starved of CPU and some of the tests time out".<p>We do also have some genuinely flaky tests, but it's pretty tempting to hit the big "just retry" button when there's all this flakiness we can't control mixed in there.</p>
]]></description><pubDate>Thu, 12 Mar 2026 16:09:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=47352954</link><dc:creator>pm215</dc:creator><comments>https://news.ycombinator.com/item?id=47352954</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47352954</guid></item><item><title><![CDATA[New comment by pm215 in "Redox OS has adopted a Certificate of Origin policy and a strict no-LLM policy"]]></title><description><![CDATA[
<p>That's why I said "somebody else, without looking at it". Clean-room reimplementation, if you like. The functionality is not forever unimplementable, it is only not implementable by merging this AI-generated PR.<p>It's similar to how I can't implement a feature by copying-and-pasting the obvious code from some commercially licensed project. But somebody else could write basically the same thing independently without knowing about the proprietary-license code, and that would be fine.</p>
]]></description><pubDate>Tue, 10 Mar 2026 10:04:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=47321205</link><dc:creator>pm215</dc:creator><comments>https://news.ycombinator.com/item?id=47321205</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47321205</guid></item><item><title><![CDATA[New comment by pm215 in "Redox OS has adopted a Certificate of Origin policy and a strict no-LLM policy"]]></title><description><![CDATA[
<p>If you're going to set a firm "no AI" policy, then my inclination would be to treat that kind of PR in the same way the US legal system does evidence obtained illegally: you say "sorry, no, we told you the rules and so you've wasted effort -- we will not take this even if it is good and perhaps the only sensible implementation". Perhaps somebody else will eventually re-implement it later without looking at the AI PR.</p>
]]></description><pubDate>Tue, 10 Mar 2026 09:42:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=47321018</link><dc:creator>pm215</dc:creator><comments>https://news.ycombinator.com/item?id=47321018</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47321018</guid></item><item><title><![CDATA[New comment by pm215 in "The IRIX 6.5.7M (sgi) source code"]]></title><description><![CDATA[
<p>Even if there isn't any 3rd party code, the whole process of going through the codebase to confirm there really isn't any 3rd party code, and generally getting the legal department to sign off on it, is a lot of work in itself. My impression is that this kind of "historic source" release typically only happens if somebody sufficiently senior in the company cares enough to actively push it through. The default is that nobody does care that much, and it doesn't happen.<p>"Do nothing" has essentially zero downside for a big company that happens to have something of niche interest like this in its vaults.</p>
]]></description><pubDate>Thu, 05 Mar 2026 16:44:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=47263904</link><dc:creator>pm215</dc:creator><comments>https://news.ycombinator.com/item?id=47263904</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47263904</guid></item><item><title><![CDATA[New comment by pm215 in "Coccinelle: Source-to-source transformation tool"]]></title><description><![CDATA[
<p>I think Coccinelle is a really cool tool, but I find its documentation totally incomprehensible for some reason. I've read through it multiple times, but I always end up having to find some preexisting script that does what I want, or else to blunder around trying different variations at random until something works, which is frustrating.</p>
]]></description><pubDate>Sat, 21 Feb 2026 14:30:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=47101156</link><dc:creator>pm215</dc:creator><comments>https://news.ycombinator.com/item?id=47101156</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47101156</guid></item><item><title><![CDATA[New comment by pm215 in "Visualizing the ARM64 Instruction Set (2024)"]]></title><description><![CDATA[
<p>On the tangential question in the post:<p>"The specification describes bits as combinations of 0, 1, and x, but also sometimes includes (0) and (1). I’m not sure what the parenthesized versions mean"<p>the answer is that the (0) and (1) are should-be-zero and should-be-one bits: if you set them wrongly then you get CONSTRAINED UNPREDICTABLE behaviour where the CPU might UNDEF, NOP, ignore that you set the bit wrongly, or set the destination register to garbage. In contrast, plain 0 and 1 are bits that have to be that way to decode to this instruction, and if you set them to something else then the decode will take you to some other instruction (or to UNDEF) instead.</p>
]]></description><pubDate>Thu, 19 Feb 2026 12:07:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=47072938</link><dc:creator>pm215</dc:creator><comments>https://news.ycombinator.com/item?id=47072938</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47072938</guid></item><item><title><![CDATA[New comment by pm215 in "Visualizing the ARM64 Instruction Set (2024)"]]></title><description><![CDATA[
<p>This is an important ISA feature -- an instruction encoding that is wasteful of its encoding space is one that has no room for future new instructions (or which has to encode the new instructions in complicated ways to fit in whatever tiny "holes" are left in the encoding space).<p>The old 32-bit Arm encoding had this problem, partly because of the "all instructions are conditional" feature. Even after the clawback of the "never" condition that wasted 1/16 of the available instruction encoding space as NOPs, it was tricky to find places to put new features.</p>
]]></description><pubDate>Thu, 19 Feb 2026 12:03:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=47072914</link><dc:creator>pm215</dc:creator><comments>https://news.ycombinator.com/item?id=47072914</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47072914</guid></item><item><title><![CDATA[New comment by pm215 in "Arm wants a bigger slice of the chip business"]]></title><description><![CDATA[
<p>This is a result of the market and its demands, not something specific to the architecture. In desktop and server, customers demand that they can buy a new machine and install a previously released stable OS on it. That means the vendors will implement the necessary standards and cross compatibility to make that happen. In the embedded market, customers don't demand that, and so vendors have no incentive to provide it. Instead what you get is that the specific combined hardware-and-software product works and is shipped with whatever expedient set of hacks gets it out of the door. Having a new cool hardware feature that works somehow or other is more important for sales than whether that driver is upstream or there's a way to describe it in ACPI.<p>Where Arm is in markets that do demand compatibility (i.e. server) the standards like UEFI and ACPI are there and work. Where it's in markets like embedded, you still see the embedded profusion of different random stuff. Where other architectures are in the embedded market, you also see a wide range of different not very compatible hardware: look at riscv for an example.</p>
]]></description><pubDate>Mon, 16 Feb 2026 12:32:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=47034228</link><dc:creator>pm215</dc:creator><comments>https://news.ycombinator.com/item?id=47034228</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47034228</guid></item><item><title><![CDATA[New comment by pm215 in "Start all of your commands with a comma (2009)"]]></title><description><![CDATA[
<p>It's not a completely non special character: for instance in bash it's special inside braces in the syntax where "/{,usr/}bin" expands to "/bin /usr/bin". But the need to start that syntax with the open brace will remind you about the need to escape a literal comma there if you ever want one.</p>
]]></description><pubDate>Sat, 07 Feb 2026 11:39:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=46923058</link><dc:creator>pm215</dc:creator><comments>https://news.ycombinator.com/item?id=46923058</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46923058</guid></item><item><title><![CDATA[New comment by pm215 in "A few CPU hardware bugs"]]></title><description><![CDATA[
<p>Ah, thanks for that correction -- I jumped straight from "depends on the history of conditional branches" to "branch predictor" without stopping to think that that would have been unlikely in the 386.</p>
]]></description><pubDate>Thu, 05 Feb 2026 13:20:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=46899343</link><dc:creator>pm215</dc:creator><comments>https://news.ycombinator.com/item?id=46899343</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46899343</guid></item><item><title><![CDATA[New comment by pm215 in "A few CPU hardware bugs"]]></title><description><![CDATA[
<p>Yeah, I think random-instruction-sequence testing is a pretty good approach to try to find the problems you didn't think of up front. I wrote a very simple tool for this years ago to help flush out bugs in QEMU: <a href="https://gitlab.com/pm215/risu" rel="nofollow">https://gitlab.com/pm215/risu</a><p>Though the bugs we were looking to catch there were definitely not the multiple-interacting-subsystems type, and more just the "corner cases in input data values in floating point instructions" variety.</p>
]]></description><pubDate>Thu, 05 Feb 2026 11:07:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=46898392</link><dc:creator>pm215</dc:creator><comments>https://news.ycombinator.com/item?id=46898392</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46898392</guid></item><item><title><![CDATA[New comment by pm215 in "A few CPU hardware bugs"]]></title><description><![CDATA[
<p>Some of the 386 bugs described there sound to me like the classic kind of "multiple different subsystems interact in the wrong way" issue that can slip through the testing process and get into hardware, like this one:<p>> For example, there was one bug that manifested itself in incorrect instruction decoding if a conditional branch instruction had just the right sequence of taken/not-taken history, and the branch instruction was followed immediately by a selector load, and one of the first two instructions at the destination of the branch was itself a jump, call, or return.<p>Even if you write up a comprehensive test plan for the branch predictor, and for selector loads, and so on, it might easily not include that particular corner case. And pre silicon testing is expensive and slow, which also limits how much of it you can do.</p>
]]></description><pubDate>Thu, 05 Feb 2026 09:32:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=46897688</link><dc:creator>pm215</dc:creator><comments>https://news.ycombinator.com/item?id=46897688</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46897688</guid></item><item><title><![CDATA[New comment by pm215 in "Outsourcing thinking"]]></title><description><![CDATA[
<p>I wasn't arguing that getting LLMs to do this is necessarily bad -- I just think it really is different from having in the past been able to ask other humans for help, and so that past experience isn't a reliable guide to whether we might find we have problems with unexpected effects of this new technology.<p>If you are concerned about possible harms in "outsourcing thinking and writing" (whether to an LLM or another human) then I think that the frequency and completeness with which you do that outsourcing matters a lot.</p>
]]></description><pubDate>Sun, 01 Feb 2026 18:31:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=46848180</link><dc:creator>pm215</dc:creator><comments>https://news.ycombinator.com/item?id=46848180</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46848180</guid></item><item><title><![CDATA[New comment by pm215 in "Outsourcing thinking"]]></title><description><![CDATA[
<p>I think there are a couple of differences here:<p>Firstly, when you ask a friend or colleague you're asking a favour that you know will take them some time and effort. So you save it for the important stuff, and the rest of the time you keep putting in the effort yourself. With an LLM it's much easier to lean on the assistance more frequently.<p>Secondly, I think when a friend is giving advice the responses are more likely to be advice, i.e. more often generalities like "you should emphasize this bit of your resume more strongly" or point fixes to grammar errors, partly because that's less effort and partly because "let me just rewrite this whole thing the way I would have written it" can come across as a bit rude if it wasn't explicitly asked for. Obviously you can prompt the LLM to only provide critique at that level, but it's also really easy to just let it do a lot more of the work.<p>But if you know you're prone to getting into conflicts in email, an LLM powered filter on outgoing email that flagged up "hey, you're probably going to regret sending that" mails before they went out the door seems like it might be a helpful tool.</p>
]]></description><pubDate>Sun, 01 Feb 2026 17:23:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=46847680</link><dc:creator>pm215</dc:creator><comments>https://news.ycombinator.com/item?id=46847680</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46847680</guid></item><item><title><![CDATA[New comment by pm215 in "Delta single handle ball faucets (1963)"]]></title><description><![CDATA[
<p>You can have either completely separate hot and cold taps, each with their own spout, or you can have a setup with separate hot and cold knobs and a single spout.<p>For my bathroom sink I specified a two taps/one spout unit (similar to this one <a href="https://www.screwfix.com/p/swirl-traditional-chrome-104mm-cloakroom-cross-head-mono-basin-mixer-tap-with-clicker-waste/310pg" rel="nofollow">https://www.screwfix.com/p/swirl-traditional-chrome-104mm-cl...</a> ) because I prefer to be able to get "this is definitely cold water with absolutely no hot water mixed in" when that's what I want. (My hot water comes from a combi boiler, so if you run the hot tap for a short time all that happens is you burn some gas when the boiler detects the water flow but you just get the cold water in the pipe.)<p>I like the combined handle type for showers, where you always want some hot water and are generally running the water for a long time.</p>
]]></description><pubDate>Mon, 26 Jan 2026 09:15:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=46763432</link><dc:creator>pm215</dc:creator><comments>https://news.ycombinator.com/item?id=46763432</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46763432</guid></item></channel></rss>