<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: timhh</title><link>https://news.ycombinator.com/user?id=timhh</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 23 May 2026 07:06:13 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=timhh" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by timhh in "Shunting-Yard Animation"]]></title><description><![CDATA[
<p>Note the shunting yard algorithm is an iterative (as opposed to recursive) version of Pratt parsing (and also precedence climbing which is virtually identical). However as normally stated it does not do proper error checking - it will accept totally invalid input.<p>That isn't a fundamental limit of the algorithm though; you can easily add error checking, as I did here: <a href="https://github.com/Timmmm/expr/blob/1b0aef8f91460974d526b5ba46daa813ee9823ef/src/parser.rs#L48" rel="nofollow">https://github.com/Timmmm/expr/blob/1b0aef8f91460974d526b5ba...</a><p>I'm not really sure why this is omitted.</p>
]]></description><pubDate>Sun, 10 May 2026 21:02:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=48087984</link><dc:creator>timhh</dc:creator><comments>https://news.ycombinator.com/item?id=48087984</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48087984</guid></item><item><title><![CDATA[New comment by timhh in "Ubuntu 26.04 Ends 46 Years of Silent sudo Passwords"]]></title><description><![CDATA[
<p>I don't understand how you can be so confidently wrong about something so easily checked. :D<p>> You can't run unix_chkpwd against a local account without root because you won't be able to access /etc/shadow to get the hash.<p>unix_chkpwd can access /etc/shadow because it is suid.<p>> Otherwise you have to use the setuid version which won't let you run it directly.<p>Haha you mean this?<p><pre><code>  $ unix_chkpwd
  This binary is not designed for running in this way
  -- the system administrator has been informed
</code></pre>
Take a look at the source code I linked about 6 comments ago!<p>> Perhaps try checking something yourself?<p>I have. You haven't.<p><pre><code>  printf 'hunter2\0' | unix_chkpwd yourusername nullok; echo $?</code></pre></p>
]]></description><pubDate>Sun, 22 Mar 2026 14:10:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=47477717</link><dc:creator>timhh</dc:creator><comments>https://news.ycombinator.com/item?id=47477717</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47477717</guid></item><item><title><![CDATA[New comment by timhh in "Ubuntu 26.04 Ends 46 Years of Silent sudo Passwords"]]></title><description><![CDATA[
<p>Definitely not for local password authentication, and I'm dubious it helps for ssh either. See my other comment.</p>
]]></description><pubDate>Sun, 22 Mar 2026 09:16:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=47475765</link><dc:creator>timhh</dc:creator><comments>https://news.ycombinator.com/item?id=47475765</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47475765</guid></item><item><title><![CDATA[New comment by timhh in "Ubuntu 26.04 Ends 46 Years of Silent sudo Passwords"]]></title><description><![CDATA[
<p>> You obviously can't run unix_chkpwd against a local account without root.<p>Wrong. At least check before you say something is obvious.<p>> No, it's very simple.<p>Even more wrong: <a href="https://github.com/linux-pam/linux-pam/issues/778#issuecomment-3233644079" rel="nofollow">https://github.com/linux-pam/linux-pam/issues/778#issuecomme...</a><p>> feels like arguing with an LLM<p>I could say the same about you, repeatedly and confidently asserting falsehoods.</p>
]]></description><pubDate>Sat, 21 Mar 2026 21:55:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=47471869</link><dc:creator>timhh</dc:creator><comments>https://news.ycombinator.com/item?id=47471869</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47471869</guid></item><item><title><![CDATA[New comment by timhh in "Ubuntu 26.04 Ends 46 Years of Silent sudo Passwords"]]></title><description><![CDATA[
<p>It is. Only the default changed. Also you can press tab if someone happens to be looking over your shoulder (and your password is so obvious they can guess it from the length).</p>
]]></description><pubDate>Sat, 21 Mar 2026 15:59:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=47468210</link><dc:creator>timhh</dc:creator><comments>https://news.ycombinator.com/item?id=47468210</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47468210</guid></item><item><title><![CDATA[New comment by timhh in "Ubuntu 26.04 Ends 46 Years of Silent sudo Passwords"]]></title><description><![CDATA[
<p>> Yes, for local password authentication.<p>It's really really not. By default PAM has a difficult-to-disable 2ish second minimum delay for all authentication methods. However this is completely pointless for local password authentication because PAM checks password using unix_chkpwd, which has no delay. The comment I linked to is explaining that unix_chkpwd has a silly security theatre delay if you try to run it in a tty, but that's trivial to avoid.<p>If you want to brute force local password authentication you can just run unix_chkpwd as fast as you like. You don't need to involve PAM at all, so its 2 seconds delay achieves nothing.<p>It <i>maybe</i> does more for remote connections but I'm not sure about that either - if you want to check 10k ssh passwords per second what stops you making 10k separate connections every second? I don't think the 2 second delay helps there at all.<p>> Change both the config files and you can remove the delay if you want.<p>This is <i>extremely</i> complicated. See the comments in the issue for details.</p>
]]></description><pubDate>Sat, 21 Mar 2026 15:53:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=47468149</link><dc:creator>timhh</dc:creator><comments>https://news.ycombinator.com/item?id=47468149</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47468149</guid></item><item><title><![CDATA[New comment by timhh in "Ubuntu 26.04 Ends 46 Years of Silent sudo Passwords"]]></title><description><![CDATA[
<p>Not for local password authentication.<p><a href="https://github.com/pibara/pam_unix/blob/master/unix_chkpwd.c#L105-L112" rel="nofollow">https://github.com/pibara/pam_unix/blob/master/unix_chkpwd.c...</a></p>
]]></description><pubDate>Sat, 21 Mar 2026 07:47:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=47464925</link><dc:creator>timhh</dc:creator><comments>https://news.ycombinator.com/item?id=47464925</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47464925</guid></item><item><title><![CDATA[New comment by timhh in "Ubuntu 26.04 Ends 46 Years of Silent sudo Passwords"]]></title><description><![CDATA[
<p>You make it sound like there was a discussion where they looked at these two alternatives and chose improving sudo over using run0. Actually I just submitted a patch for this and they accepted it. I don't work for Ubuntu and I didn't even know run0 existed until now (it does sound good though; I hope they switch to that).</p>
]]></description><pubDate>Sat, 21 Mar 2026 07:44:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=47464915</link><dc:creator>timhh</dc:creator><comments>https://news.ycombinator.com/item?id=47464915</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47464915</guid></item><item><title><![CDATA[New comment by timhh in "Ubuntu 26.04 Ends 46 Years of Silent sudo Passwords"]]></title><description><![CDATA[
<p>Yeah I would like to fix those too but sudo is the one I encounter most. Also the existence of sudo-rs meant there was less push-back. I seriously doubt the maintainers of openssh or passwd would accept this change.</p>
]]></description><pubDate>Sat, 21 Mar 2026 07:40:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=47464887</link><dc:creator>timhh</dc:creator><comments>https://news.ycombinator.com/item?id=47464887</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47464887</guid></item><item><title><![CDATA[New comment by timhh in "Ubuntu 26.04 Ends 46 Years of Silent sudo Passwords"]]></title><description><![CDATA[
<p>I did this!<p>I didn't actually know that Mint had enabled this by default. That would have been a useful counterpoint to the naysayers.<p>If you want the original behaviour you don't actually need to change the configuration - they added a patch afterwards so you can press tab and it will hide the password just for that time.<p>> The catalyst for Ubuntu’s change is sudo-rs<p>Actually it was me getting sufficiently pissed off at the 2 second delay for invalid passwords in sudo (actually PAM's fault). There's no reason for it (if you think there is look up unix_chkpwd). I tried to fix it but the PAM people have this strange idea that people <i>like</i> the delay. So I gave up on that and thought I may as well try fixing this other UX facepalm too. I doubt it would have happened with the original sudo (and they said as much) so it did require sudo-rs to exist.<p>I think this is one of the benefits of rewriting coreutils and so on in Rust - people are way more open to fixing long-standing issues. You don't get the whole "why are you overturning 46 years of tradition??" nonsense.<p>If anyone wants to rewrite PAM in Rust... :-D<p><a href="https://github.com/linux-pam/linux-pam/issues/778" rel="nofollow">https://github.com/linux-pam/linux-pam/issues/778</a></p>
]]></description><pubDate>Sat, 21 Mar 2026 07:38:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=47464872</link><dc:creator>timhh</dc:creator><comments>https://news.ycombinator.com/item?id=47464872</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47464872</guid></item><item><title><![CDATA[Baochip-1x: What it is, why I'm doing it now and how it came about]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.crowdsupply.com/baochip/dabao/updates/what-it-is-why-im-doing-it-now-and-how-it-came-about">https://www.crowdsupply.com/baochip/dabao/updates/what-it-is-why-im-doing-it-now-and-how-it-came-about</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47339219">https://news.ycombinator.com/item?id=47339219</a></p>
<p>Points: 346</p>
<p># Comments: 79</p>
]]></description><pubDate>Wed, 11 Mar 2026 18:21:58 +0000</pubDate><link>https://www.crowdsupply.com/baochip/dabao/updates/what-it-is-why-im-doing-it-now-and-how-it-came-about</link><dc:creator>timhh</dc:creator><comments>https://news.ycombinator.com/item?id=47339219</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47339219</guid></item><item><title><![CDATA[New comment by timhh in "A new California law says all operating systems need to have age verification"]]></title><description><![CDATA[
<p>> i.e. this doesn't require age verification at all, just a user profile age property<p>This is usually how they do it though. First make a dumb law with poor enforcement. People don't push back about it because it obviously won't be enforced. Wait a bit, then say "people are flagrantly violating this law, we need better enforcement". At that point it's a lot harder to say "it shouldn't be a law at all!" because nobody complained when it was brought into law.</p>
]]></description><pubDate>Fri, 27 Feb 2026 22:13:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=47186437</link><dc:creator>timhh</dc:creator><comments>https://news.ycombinator.com/item?id=47186437</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47186437</guid></item><item><title><![CDATA[New comment by timhh in "NASA announces overhaul of Artemis program amid safety concerns, delays"]]></title><description><![CDATA[
<p>> the capabilities are so far mostly just talk<p>lol what? They've caught and successfully reflown the super heavy booster, and they've mostly successfully done a soft landing of Starship in the sea. How is that remotely "just talk"?</p>
]]></description><pubDate>Fri, 27 Feb 2026 22:04:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=47186323</link><dc:creator>timhh</dc:creator><comments>https://news.ycombinator.com/item?id=47186323</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47186323</guid></item><item><title><![CDATA[New comment by timhh in "Sudo-rs enables pwfeedback by default for Resolute Raccoon"]]></title><description><![CDATA[
<p>I recently started using Linux again, and decided to try and fix some of its more ancient and silly UX paper cuts. This is my first success!<p>My attempt to fix the annoying and unnecessary 2 second delay when you mistype your password is going rather less well: <a href="https://github.com/linux-pam/linux-pam/pull/789" rel="nofollow">https://github.com/linux-pam/linux-pam/pull/789</a><p>Does anyone want to rewrite PAM in Rust? :D</p>
]]></description><pubDate>Fri, 27 Feb 2026 16:47:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=47182657</link><dc:creator>timhh</dc:creator><comments>https://news.ycombinator.com/item?id=47182657</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47182657</guid></item><item><title><![CDATA[Sudo-rs enables pwfeedback by default for Resolute Raccoon]]></title><description><![CDATA[
<p>Article URL: <a href="https://discourse.ubuntu.com/t/sudo-rs-enables-pwfeedback-by-default-for-resolute-raccoon/77712">https://discourse.ubuntu.com/t/sudo-rs-enables-pwfeedback-by-default-for-resolute-raccoon/77712</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47182656">https://news.ycombinator.com/item?id=47182656</a></p>
<p>Points: 3</p>
<p># Comments: 3</p>
]]></description><pubDate>Fri, 27 Feb 2026 16:47:56 +0000</pubDate><link>https://discourse.ubuntu.com/t/sudo-rs-enables-pwfeedback-by-default-for-resolute-raccoon/77712</link><dc:creator>timhh</dc:creator><comments>https://news.ycombinator.com/item?id=47182656</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47182656</guid></item><item><title><![CDATA[New comment by timhh in "RISC-V Vector Primer"]]></title><description><![CDATA[
<p>If you get lost in the SEW, LMUL, VLMAX, etc. stuff I made a brief explanation here:<p><a href="https://blog.timhutt.co.uk/riscv-vector/" rel="nofollow">https://blog.timhutt.co.uk/riscv-vector/</a><p>It has a visualisation of the element selection stuff at the end.</p>
]]></description><pubDate>Thu, 12 Feb 2026 13:01:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=46988303</link><dc:creator>timhh</dc:creator><comments>https://news.ycombinator.com/item?id=46988303</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46988303</guid></item><item><title><![CDATA[New comment by timhh in "Prek: A better, faster, drop-in pre-commit replacement, engineered in Rust"]]></title><description><![CDATA[
<p>It's going to be optional - the hooks will always fix the code if they can, but then you can supply a `--no-fix` flag (or config) if you want to tell it to not actually apply those changes to the real filesystem.<p>It doesn't need Landlock because WASI already provides a VFS.</p>
]]></description><pubDate>Wed, 04 Feb 2026 22:28:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=46892778</link><dc:creator>timhh</dc:creator><comments>https://news.ycombinator.com/item?id=46892778</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46892778</guid></item><item><title><![CDATA[New comment by timhh in "Prek: A better, faster, drop-in pre-commit replacement, engineered in Rust"]]></title><description><![CDATA[
<p>It is better because of WASI. That's what provides sandboxing.</p>
]]></description><pubDate>Wed, 04 Feb 2026 22:26:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=46892763</link><dc:creator>timhh</dc:creator><comments>https://news.ycombinator.com/item?id=46892763</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46892763</guid></item><item><title><![CDATA[New comment by timhh in "Arcan-A12: Weaving a Different Web"]]></title><description><![CDATA[
<p>> just a little to different and obscure<p>Even the style of writing screams "I'm doing something weird and I'm not going to explain it to you unless you are already a mega-fan". Reminds me of Wolfram's writing a bit. He's created a world that only he is in and then writes about it in detail as if everyone else is there too.</p>
]]></description><pubDate>Wed, 04 Feb 2026 22:24:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=46892722</link><dc:creator>timhh</dc:creator><comments>https://news.ycombinator.com/item?id=46892722</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46892722</guid></item><item><title><![CDATA[New comment by timhh in "The Codex app illustrates the shift left of IDEs and coding GUIs"]]></title><description><![CDATA[
<p>Not really what "shift left" means...</p>
]]></description><pubDate>Wed, 04 Feb 2026 22:14:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=46892612</link><dc:creator>timhh</dc:creator><comments>https://news.ycombinator.com/item?id=46892612</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46892612</guid></item></channel></rss>