<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: NobodyNada</title><link>https://news.ycombinator.com/user?id=NobodyNada</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 29 Apr 2026 16:24:08 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=NobodyNada" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by NobodyNada in "Bugs Rust won't catch"]]></title><description><![CDATA[
<p>openat() is there, but it's unstable (because the dirfd-related syscalls are not all fully implemented and tested across all platforms Rust supports yet): <a href="https://doc.rust-lang.org/std/fs/struct.Dir.html#method.open_file" rel="nofollow">https://doc.rust-lang.org/std/fs/struct.Dir.html#method.open...</a></p>
]]></description><pubDate>Wed, 29 Apr 2026 15:13:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=47949573</link><dc:creator>NobodyNada</dc:creator><comments>https://news.ycombinator.com/item?id=47949573</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47949573</guid></item><item><title><![CDATA[New comment by NobodyNada in "Bugs Rust won't catch"]]></title><description><![CDATA[
<p>Nearly every available filesystem API in Rust's stdlib maps one-to-one with a Unix syscall (see Rust's std::fs module [0] for reference -- for example, the `File` struct is just a wrapper around a file descriptor, and its associated methods are essentially just the syscalls you can perform on file descriptors). The only exceptions are a few helper functions like `read_to_string` or `create_dir_all` that perform <i>slightly</i> higher-level operations.<p>And, yeah, the Unix syscalls are very prone to mistakes like this. For example, Unix's `rename` syscall takes two paths as arguments; you can't rename a file by handle; and so Rust has a `rename` function that takes two paths rather than an associated function on a `File`. Rust exposes path-based APIs where Unix exposes path-based APIs, and file-handle-based APIs where Unix exposes file-handle-based APIs.<p>So I agree that Rust's stdilb is somewhat mistake prone; not so much because it's being opinionated and "nudg[ing] the developer towards using neat APIs", but because it's so <i>low</i>-level that it's not offering much "safety" in filesystem access over raw syscalls beyond ensuring that you didn't write a buffer overflow.<p>[0]: <a href="https://doc.rust-lang.org/std/fs/index.html" rel="nofollow">https://doc.rust-lang.org/std/fs/index.html</a></p>
]]></description><pubDate>Wed, 29 Apr 2026 05:36:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=47944537</link><dc:creator>NobodyNada</dc:creator><comments>https://news.ycombinator.com/item?id=47944537</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47944537</guid></item><item><title><![CDATA[New comment by NobodyNada in "Waymo in Portland"]]></title><description><![CDATA[
<p>> Payroll taxes would not pay for things like mass transit<p>In Oregon, TriMet is funded by a payroll tax: <a href="https://www.oregon.gov/dor/programs/businesses/pages/trimet-transit.aspx" rel="nofollow">https://www.oregon.gov/dor/programs/businesses/pages/trimet-...</a><p>> The Oregon Department of Revenue administers tax programs for the Tri-County Metropolitan Trans­portation District (TriMet). Nearly every employer who pays wages for services performed in this district must pay transit payroll tax.<p>> The transit tax is imposed directly on the employer. The tax is figured only on the amount of gross payroll for services performed within the TriMet Transit District. This includes traveling sales repre­sentatives and employees working from home.</p>
]]></description><pubDate>Tue, 28 Apr 2026 20:47:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=47940507</link><dc:creator>NobodyNada</dc:creator><comments>https://news.ycombinator.com/item?id=47940507</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47940507</guid></item><item><title><![CDATA[New comment by NobodyNada in "Electron microscopy shows ‘mouse bite’ defects in semiconductors"]]></title><description><![CDATA[
<p>I know quite a few people who've had SNESes with failing ICs in recent years (mainly PPU and APU chips). That's pretty annoying because the only way to get replacement parts is from a donor console.</p>
]]></description><pubDate>Wed, 18 Mar 2026 17:12:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=47428403</link><dc:creator>NobodyNada</dc:creator><comments>https://news.ycombinator.com/item?id=47428403</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47428403</guid></item><item><title><![CDATA[New comment by NobodyNada in "Why can't you tune your guitar? (2019)"]]></title><description><![CDATA[
<p>> you built what was basically a raspberry pi with a microcontroller by hand, and you had to use the dumb speaker and controller to make your own music firmware to produce notes<p>This sounds like they were most likely bit banging square waves into a speaker directly via a GPIO on a microcontroller (or maybe using a PWM output if they were fancy about it). In that case, the audio frequency will be derived directly from the microcontroller's clock speed, and the tolerance of an internal oscillator on a microcontroller can be as bad as 10%.</p>
]]></description><pubDate>Sun, 08 Mar 2026 19:09:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=47300120</link><dc:creator>NobodyNada</dc:creator><comments>https://news.ycombinator.com/item?id=47300120</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47300120</guid></item><item><title><![CDATA[New comment by NobodyNada in "Remotely unlocking an encrypted hard disk"]]></title><description><![CDATA[
<p>I have a setup based on this, but I modified it to encrypt the SSH host key using the TPM. That way, I can detect a MiTM from an attacker who has stolen the drive or modified the boot policy because host key verification will fail.<p>/usr/lib/dracut/modules.d/46cryptssh:<p><pre><code>    #!/bin/bash
    
    check() {
        require_binaries sshd || return 1
        return 0
    }
    
    depends() {
        return 0
    }
    
    install() {
        if [ ! -e /etc/ssh/dracut ]; then
            mkdir /etc/ssh/dracut &&
            tmp=$(mktemp -d) &&
            head -c128 /dev/random > $tmp/passphrase &&
            ssh-keygen -t ed25519 -f /etc/ssh/dracut/ssh_host_ed25519_key -N"$(base64 < $tmp/passphrase)" &&
            tpm2_createprimary -C o -c $tmp/primary.ctx &&
            tpm2_pcrread -o $tmp/pcr.bin sha256:0,7
            tpm2_createpolicy --policy-pcr -l sha256:0,7 -f $tmp/pcr.bin -L $tmp/pcr.policy
            tpm2_create -C $tmp/primary.ctx -L $tmp/pcr.policy -i $tmp/passphrase -c $tmp/seal.ctx &&
            tpm2_evictcontrol -C o -c $tmp/seal.ctx -o /etc/ssh/dracut/seal || {
                rm -r $tmp /etc/ssh/dracut
                exit 1
            }
            rm -r $tmp
        fi
        for file in /etc/ssh/dracut/*; do
            inst_simple "$file" "/etc/ssh/${file#/etc/ssh/dracut/}"
        done
    
        mkdir -p -m 0700 "$initdir"/root/.ssh
        /usr/bin/install -m 600 /etc/ssh/dracut_authorized_keys "$initdir"/root/.ssh/authorized_keys
    
        inst_binary /usr/sbin/sshd
        inst_binary /usr/sbin/ssh-keygen
        inst_binary /usr/bin/tpm2_unseal
        inst_binary /usr/bin/base64
        inst_simple /usr/lib/libtss2-tcti-device.so
        
        inst_simple "$moddir"/cryptsshd.service "$systemdsystemunitdir"/cryptsshd.service
        inst_simple "$moddir"/sshd_config /etc/ssh/sshd_config
    
        inst_binary /usr/lib/ssh/sshd-session
        inst_binary /usr/lib/ssh/sshd-auth
    
        mkdir -p -m 0755 "$initdir"/var/empty/sshd
        mkdir -p -m 0755 "$initdir"/usr/share/empty.sshd
        mkdir -p  -m 0755 "$initdir"/var/log
        touch "$initdir"/var/log/lastlog
    
        systemctl -q --root "$initdir" enable cryptsshd
    }
</code></pre>
cryptsshd.service:<p><pre><code>    [Unit]
    Description=OpenSSH Daemon for Disk Encryption Passphrase
    DefaultDependencies=no
    Before=cryptsetup.target
    After=network-online.target
    
    [Service]
    Type=notify-reload
    ExecStartPre=/bin/sh -c '/usr/bin/ssh-keygen -p -f /etc/ssh/ssh_host_ed25519_key \
        -N "" -P "$(/usr/bin/tpm2_unseal -c /etc/ssh/seal -p pcr:sha256:0,7 | base64)"'
    ExecStart=/usr/bin/sshd -D
    KillMode=process
    Restart=always
    
    [Install]
    WantedBy=sysinit.target
</code></pre>
That encrypts the SSH host key using a password sealed with PCR7, which is invalidated if an attacker disables Secure Boot or tampers with the enrolled keys. Thus, an attacker can't extract the key from the drive or by modifying the kernel command line to boot to a shell (since that's not allowed without disabling secure boot).<p>It's still probably vulnerable to a cold boot attack, since the key is decrypted CPU-side. It would be interesting to perform the actual key operations on the TPM itself to prevent this.</p>
]]></description><pubDate>Fri, 06 Mar 2026 17:50:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=47278484</link><dc:creator>NobodyNada</dc:creator><comments>https://news.ycombinator.com/item?id=47278484</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47278484</guid></item><item><title><![CDATA[New comment by NobodyNada in "Rathbun's Operator"]]></title><description><![CDATA[
<p>> While many seemed to want to use it for personal productivity things like connecting Gmail, Slack, calendars, etc. that didn’t seem interesting to me much. I thought why not have it solve the mundane boring thigns that matter in opensource scientific codes and related packages.<p>This, here, is the root of the issue: "I'm not interested in using an AI agent for my own problems, I want to unleash it on <i>other people's problems</i>."<p>The author is trying to paint this as somehow providing altruistic contributions to the projects, but you don't even have to ask to know these contributions will be unwelcome. If maintainers wanted AI agent contributions, they would have just deployed the AI agents themselves. Setting up a bot on behalf of someone else without their consent or even knowledge is an outlandishly rude thing to do -- you wouldn't set up a code coverage bot or a linter to run on a stranger's GitHub project; why would anyone ever think <i>this</i> is okay?<p>This is the same kind of person who, when asked a question, responds with a copypasted ChatGPT reply. If I wanted the GPT answer, I would have just asked it directly! Being an unsolicited middleman between another person and an AI brings absolutely no value to anybody.</p>
]]></description><pubDate>Wed, 18 Feb 2026 16:47:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=47063021</link><dc:creator>NobodyNada</dc:creator><comments>https://news.ycombinator.com/item?id=47063021</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47063021</guid></item><item><title><![CDATA[New comment by NobodyNada in "A few CPU hardware bugs"]]></title><description><![CDATA[
<p>There's a difference in effort of several orders of magnitude between "change a setting so the compiler doesn't emit multiplies" and "convince GCC/LLVM to add a special-case flag for one very rare chip, or maintain your own fork". The vendor's workaround is the "ideal" solution, but disabling multiplies is a lot more practical if you don't need the performance.<p>They also mention in the next sentence that they adopted the "correct" workaround (by providing a multiplication library function for the compiler to call).</p>
]]></description><pubDate>Thu, 05 Feb 2026 17:42:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=46902271</link><dc:creator>NobodyNada</dc:creator><comments>https://news.ycombinator.com/item?id=46902271</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46902271</guid></item><item><title><![CDATA[New comment by NobodyNada in "Autonomous cars, drones cheerfully obey prompt injection by road sign"]]></title><description><![CDATA[
<p>The idea is well-intentioned, but implementing it by making drivers try to parse arbitrarily complex conditionals while driving is unwise.<p>There's a sign near my house for a school zone with a reduced speed limit, that used to have conditions similar to the GP's example (though not quite as bad) But they recently attached a yellow light to the top of the sign and changed the condition to "when flashing." That's a much more effective solution.</p>
]]></description><pubDate>Mon, 02 Feb 2026 16:26:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=46857883</link><dc:creator>NobodyNada</dc:creator><comments>https://news.ycombinator.com/item?id=46857883</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46857883</guid></item><item><title><![CDATA[New comment by NobodyNada in "Microsoft forced me to switch to Linux"]]></title><description><![CDATA[
<p>For what it's worth, personally I thought your writing style and sense of humor was excellent, and my favorite part of the post.<p>I also appreciate you giving me an updated copy of the "Microsoft is a corporation" meme, as the one I have downloaded seems to become outdated each time a new Windows update comes out.</p>
]]></description><pubDate>Wed, 28 Jan 2026 18:51:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=46799884</link><dc:creator>NobodyNada</dc:creator><comments>https://news.ycombinator.com/item?id=46799884</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46799884</guid></item><item><title><![CDATA[New comment by NobodyNada in "Elon Musk's X down for users"]]></title><description><![CDATA[
<p>DownDetector gives you a graph of the number of people who googled "is XYZ service down" and clicked on a DownDetector link. It's a useful metric, but it also has error, because sometimes users blame the wrong service.<p>In this case, both AWS and Cloudflare had high-profile outages within the past few months. So a bunch of people tried to check their Twitter, got an error, and said "huh, I wonder if AWS is down again". Or during yesterday's Verizon outage, DownDetector also showed spikes on AT&T and T-Mobile, presumably from people who forgot what cellular provider they had, were roaming, or maybe were trying to call someone on another network.<p>It also doesn't help that they normalize the scale of their graphs on the front page. If you click them, you can see that 75k people googled "is X down", while only 200 people googled "is AWS down".</p>
]]></description><pubDate>Fri, 16 Jan 2026 16:49:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=46648539</link><dc:creator>NobodyNada</dc:creator><comments>https://news.ycombinator.com/item?id=46648539</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46648539</guid></item><item><title><![CDATA[New comment by NobodyNada in "Total monthly number of StackOverflow questions over time"]]></title><description><![CDATA[
<p>> When a question gets closed before an answer comes in, the OP has nine days to fix it before it gets deleted automatically by the system.<p>One of the bigger problems with the site's moderation systems was that 1) this system was incredibly opaque and unintuitive to new users, 2) the reopen queue was almost useless, leading to a very small percentage of closed questions ever getting reopened, and 3) even if a question <i>did</i> get reopened, it would be buried thousands of posts down the front page and answerers would likely never see it.<p>There were many plans and proposals to overhaul this system -- better "on hold" UI that would walk users through the process of revising their question, and a revamp of the review queues aimed at making them effective at pushing content towards reopening. These efforts got as far as the "triage" queue, which did little to help new users without the several other review queues that were planned to be downstream of it but scrapped as SE abruptly stopped working on improvements to the site.<p>Management should have been aggressively chasing metrics like "percentage of closed questions that get reopened" and "number of new users whose first question is well-received and answered". But it wasn't a priority for them, and the outcome is unsurprising.</p>
]]></description><pubDate>Sun, 04 Jan 2026 17:59:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=46490422</link><dc:creator>NobodyNada</dc:creator><comments>https://news.ycombinator.com/item?id=46490422</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46490422</guid></item><item><title><![CDATA[New comment by NobodyNada in "Total monthly number of StackOverflow questions over time"]]></title><description><![CDATA[
<p>Shog9 was probably the best person on staff in terms of awareness of the moderation problems and ability to come up with solutions.<p>Unfortunately, the company abruptly stopped investing in the Q&A platform in ~2015 or so and shifted their development effort into monetization attempts like Jobs, Teams, Docs, Teams (again), etc. -- right around the time the moderation system started to run into serious scaling problems. There were plans, created by Shog and the rest of the community team, for sweeping overhauls to the moderation systems attempting to fix the problems, but they got shelved as the Q&A site was put in maintenance mode.<p>It's definitely true that staff is to blame for the site's problems, but not Shog or any of the employees whose usernames you'd recognize as people who actually spent time in the community. Blame the managers who weren't users of the site, decided it wasn't important to the business, and ignored the problems.</p>
]]></description><pubDate>Sun, 04 Jan 2026 16:00:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=46489177</link><dc:creator>NobodyNada</dc:creator><comments>https://news.ycombinator.com/item?id=46489177</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46489177</guid></item><item><title><![CDATA[New comment by NobodyNada in "Modern SID chip substitutes [video]"]]></title><description><![CDATA[
<p>Similar idea: <a href="https://monster6502.com/" rel="nofollow">https://monster6502.com/</a><p>But note:<p>> Does it run at the full speed of an original 6502 chip?<p>> No; it's relatively slow. The MOnSter 6502 runs at about 1/20th the speed of the original, thanks to the much larger capacitance of the design. The maximum reliable clock rate is around 50 kHz. The primary limit to the clock speed is the gate capacitance of the MOSFETs that we are using, which is much larger than the capacitance of the MOSFETs on an original 6502 die.<p>So if you built a SID using the same techniques and components, you couldn't run it in real-time without the pitch being way too low or without modifying the design. I'm not sure how hard this would be to avoid with better-spec'd components, but intuitively it makes sense for a much larger circuit to run much slower.</p>
]]></description><pubDate>Thu, 18 Dec 2025 01:21:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=46307888</link><dc:creator>NobodyNada</dc:creator><comments>https://news.ycombinator.com/item?id=46307888</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46307888</guid></item><item><title><![CDATA[Binary patching live audio software to fix a show-stopping bug]]></title><description><![CDATA[
<p>Article URL: <a href="https://jonathankeller.net/ctf/playback/">https://jonathankeller.net/ctf/playback/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46195893">https://news.ycombinator.com/item?id=46195893</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Mon, 08 Dec 2025 18:33:01 +0000</pubDate><link>https://jonathankeller.net/ctf/playback/</link><dc:creator>NobodyNada</dc:creator><comments>https://news.ycombinator.com/item?id=46195893</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46195893</guid></item><item><title><![CDATA[New comment by NobodyNada in "Using LLMs at Oxide"]]></title><description><![CDATA[
<p>LLMs also generally don't put spaces around em dashes — but a lot of human writers do.</p>
]]></description><pubDate>Sun, 07 Dec 2025 03:53:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=46179011</link><dc:creator>NobodyNada</dc:creator><comments>https://news.ycombinator.com/item?id=46179011</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46179011</guid></item><item><title><![CDATA[New comment by NobodyNada in "Extra Instructions Of The 65XX Series CPU (1996)"]]></title><description><![CDATA[
<p>That's exactly right. There's a really good article about it here: <a href="https://www.pagetable.com/?p=39" rel="nofollow">https://www.pagetable.com/?p=39</a></p>
]]></description><pubDate>Sat, 06 Dec 2025 03:10:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=46170256</link><dc:creator>NobodyNada</dc:creator><comments>https://news.ycombinator.com/item?id=46170256</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46170256</guid></item><item><title><![CDATA[New comment by NobodyNada in "You can't fool the optimizer"]]></title><description><![CDATA[
<p>Let's throw this into godbolt: <a href="https://clang.godbolt.org/z/qW3qx13qT" rel="nofollow">https://clang.godbolt.org/z/qW3qx13qT</a><p><pre><code>    is_divisible_by_6(int):
        test    dil, 1
        jne     .LBB0_1
        imul    eax, edi, -1431655765
        add     eax, 715827882
        cmp     eax, 1431655765
        setb    al
        ret
    .LBB0_1:
        xor     eax, eax
        ret

    is_divisible_by_6_optimal(int):
        imul    eax, edi, -1431655765
        add     eax, 715827882
        ror     eax
        cmp     eax, 715827883
        setb    al
        ret
</code></pre>
By themselves, the mod 6 and mod 3 operations are almost identical -- in both cases the compiler used the reciprocal trick to transform the modulo into an imul+add+cmp, the only practical difference being that the %6 has one extra bit shift.<p>But note the branch in the first function! The original code uses the && operator, which is short-circuiting -- so from the compiler's perspective, perhaps the programmer expects that x % 2 will usually be false, and so we can skip the expensive 3 most of the time. The "suboptimal" version is potentially quite a bit faster in the best case, but also potentially quite a bit slower in the worst case (since that branch could be mispredicted). There's not really a way for the compiler to know which version is "better" without more context, so deferring to "what the programmer wrote" makes sense.<p>That being said, I don't know that this is really a case of "the compiler knows best" rather than just not having that kind of optimization implemented. If we write 'x % 6 && x % 3', the compiler pointlessly generates both operations. And GCC generates branchless code for 'is_divisible_by_6', which is just worse than 'is_divisible_by_6_optimal' in all cases.</p>
]]></description><pubDate>Thu, 04 Dec 2025 06:14:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=46144340</link><dc:creator>NobodyNada</dc:creator><comments>https://news.ycombinator.com/item?id=46144340</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46144340</guid></item><item><title><![CDATA[New comment by NobodyNada in "Human brains are preconfigured with instructions for understanding the world"]]></title><description><![CDATA[
<p>That's pretty close to escaping the Earth's gravity well, but not quite out, since the Moon is definitely still orbiting the Earth.</p>
]]></description><pubDate>Tue, 25 Nov 2025 19:59:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=46050002</link><dc:creator>NobodyNada</dc:creator><comments>https://news.ycombinator.com/item?id=46050002</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46050002</guid></item><item><title><![CDATA[New comment by NobodyNada in "Human brains are preconfigured with instructions for understanding the world"]]></title><description><![CDATA[
<p>Humans have not left Earth's gravity well. We've built probes that have, but humans have only gotten as far as orbit.</p>
]]></description><pubDate>Tue, 25 Nov 2025 18:42:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=46049163</link><dc:creator>NobodyNada</dc:creator><comments>https://news.ycombinator.com/item?id=46049163</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46049163</guid></item></channel></rss>