<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: rjmill</title><link>https://news.ycombinator.com/user?id=rjmill</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 30 Apr 2026 22:25:44 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=rjmill" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by rjmill in "Where the goblins came from"]]></title><description><![CDATA[
<p>They've always resonated with me, maybe because I often work on legacy code. All this ancient technology that no one understands. Crazy rituals/incantations to get things done. People being afraid to skip steps, even if it <i>probably</i> isn't needed. The aversion to unconsecrated (non IT-supported) technology.<p>The machine spirits were the only part that felt "too magical" to me, but now we're well on our way. The Omnissiah's blessings be upon us.<p>(Let's just skip servitors. Those give me the heebie-jeebies.)</p>
]]></description><pubDate>Thu, 30 Apr 2026 12:25:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=47961386</link><dc:creator>rjmill</dc:creator><comments>https://news.ycombinator.com/item?id=47961386</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47961386</guid></item><item><title><![CDATA[New comment by rjmill in "Model-Based Testing for Dungeons & Dragons"]]></title><description><![CDATA[
<p>Someone please explain the grapple leapfrog example and why that "exploit" is interesting. If my players tried that, I'd happily let them use their full turns to do some crazy trapeze act across the battlefield.<p>And then I'd remind them that they could have just dashed normally.<p>Moreover, how do the new rules close the "exploit"? You can still move 30ft while carrying someone. (60/2 - 30 vs 60 - 30*2)  How is that difference meaningful in this case?<p>(Also, wouldn't you need something like rogue's dash-as-a-bonus 
-action to grapple and dash on the same turn?)<p>The article is pretty interesting overall but this example mystifies me. Am I missing something obvious?</p>
]]></description><pubDate>Fri, 10 Apr 2026 13:08:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=47717585</link><dc:creator>rjmill</dc:creator><comments>https://news.ycombinator.com/item?id=47717585</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47717585</guid></item><item><title><![CDATA[New comment by rjmill in "Using Python for Scripting"]]></title><description><![CDATA[
<p>Odd, I don't see any mention of subprocess.run, the workhorse of python scripting.<p>Quick rundown for the unfamiliar:<p>Give it a command as a list of strings (e.g., subprocess.run(["echo", "foo"]).)<p>It takes a bunch of flags, but the most useful (but not immediately obvious) ones are:<p><pre><code>  check=True: Raise an error if the command fails
  capture_output=True: Captures stdout/stderr on the CompletedProcess
  text=True: Automatically convert the stdout/stderr bytes to strings
</code></pre>
By default, subprocess.run will print the stdout/stderr to the script's output (like bash, basically), so I only bother with capture_output if I need information in the output for a later step.</p>
]]></description><pubDate>Fri, 12 Dec 2025 15:36:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=46245100</link><dc:creator>rjmill</dc:creator><comments>https://news.ycombinator.com/item?id=46245100</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46245100</guid></item><item><title><![CDATA[New comment by rjmill in "Await Is Not a Context Switch: Understanding Python's Coroutines vs. Tasks"]]></title><description><![CDATA[
<p>> But isn't it true for JavaScript too?<p>I don't think so. It's been a while since I've bled on tricky async problems in either language, but I'm pretty sure in JS it would be<p><pre><code>  [...]
  parent_before
  parent_after
  child_before
  [...]
</code></pre>
In JS, there are microtasks and macrotasks. setTimeout creates macrotasks. `.then` (and therefore `await`) creates microtasks.<p>Microtasks get executed BEFORE macrotasks, but they still get executed AFTER the current call stack is completed.<p>From OP (and better illustrated by GP's example) Python's surprise is that it's just putting the awaited coroutine into the current call stack. So `await` doesn't guarantee anything is going into a task queue (micro or macro) in python.</p>
]]></description><pubDate>Wed, 26 Nov 2025 13:45:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=46057339</link><dc:creator>rjmill</dc:creator><comments>https://news.ycombinator.com/item?id=46057339</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46057339</guid></item><item><title><![CDATA[New comment by rjmill in "Marble Fountain"]]></title><description><![CDATA[
<p>Not to dimish the achievement, but TFA is pretty clear about the limitations of the piece:<p>> I was able to get it working consistently, although it did lose 2-3 balls an hour and could only run for a few hours without the motor overheating.<p>IMO that's more impressive to hear than if he hadn't mentioned it at all. (I would have assumed more marbles getting lost.)</p>
]]></description><pubDate>Mon, 10 Nov 2025 04:43:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=45872506</link><dc:creator>rjmill</dc:creator><comments>https://news.ycombinator.com/item?id=45872506</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45872506</guid></item><item><title><![CDATA[New comment by rjmill in "A Python dict that can report which keys you did not use"]]></title><description><![CDATA[
<p>Indeed. Inheriting from 'collections.UserDict' instead of 'dict' will make TFA's code work as intended for most of those edge cases.<p>UserDict will route '.get', '.setdefault', and even iteration via '.items()' through the '__getitem__' method.<p><i>edited to remove "(maybe all?) edge cases". As soon as I posted, I thought of several less common/obvious edge cases.</i></p>
]]></description><pubDate>Wed, 30 Jul 2025 18:20:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=44737746</link><dc:creator>rjmill</dc:creator><comments>https://news.ycombinator.com/item?id=44737746</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44737746</guid></item><item><title><![CDATA[New comment by rjmill in "Defending adverbs exuberantly if conditionally"]]></title><description><![CDATA[
<p>Can you give an example? I've never noticed that (except for certain specific dialects and slang) but I may be blind to it.</p>
]]></description><pubDate>Fri, 06 Jun 2025 13:07:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=44200461</link><dc:creator>rjmill</dc:creator><comments>https://news.ycombinator.com/item?id=44200461</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44200461</guid></item><item><title><![CDATA[New comment by rjmill in "Root for your friends"]]></title><description><![CDATA[
<p>Goodness, yes. The last time I put (genuinely constructive) criticism in a peer evaluation, it turned out to be the only non-positive thing that was said about that coworker. So it became a focus of his yearly review.<p>He later told me about how his review went (casually at a conference; he had no idea I was the source), and I fessed up and clarified what I actually meant. The HR process had twisted it to a much more extreme version of what I was getting at, completely undermining the utility of the feedback.<p>Nowadays, I'm just gonna give perfect scores and if I have feedback that needs to be given, I'll just tell the coworker directly. (And if I'm not comfortable doing that, then the feedback probably isn't important enough.)</p>
]]></description><pubDate>Sat, 24 May 2025 11:17:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=44080322</link><dc:creator>rjmill</dc:creator><comments>https://news.ycombinator.com/item?id=44080322</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44080322</guid></item><item><title><![CDATA[New comment by rjmill in "I failed a take-home assignment from Kagi Search"]]></title><description><![CDATA[
<p>How do you know that interviewees aren't spending more time on it?<p>Because you can't guarantee all candidates are spending the same amount of time, it becomes a game theory problem where the candidates will typically lose in some form. In many cases, the right answer is to spend extra time making a really polished (but not too polished!) solution and pretend like you stayed in the time limit. And every candidate is either a) doing that, or at least b) worried that their competition is doing that.<p>Even if we ignore that dynamic, 3 hours is a long ass time for a candidate to spend when they're not even sure they'll get to talk to another human about it.<p>In a 1-hour interview, you can run a candidate through a programming exercise and be guaranteed they're not wasting extra time on it. And if they happen to prefer doing take home assessments, you can always let them send you an updated answer later. (But often by the time a candidate asks me if they can do that, I've already developed a favorable view of their skills and can tell them, "go for it if you want, but you've already 'passed' my test.")<p>By keeping the candidate-interviewer time investment the same, you guarantee that you're respecting the candidate's time as you would your own (because you're sitting there with them.) I can help them skip over the parts I'm not interested in (e.g., by feeding them info they'd be able to find via search or telling them not to worry about certain details.)<p>If a hiring manager doesn't respect their candidates' time, how likely are they to respect their employees' time?</p>
]]></description><pubDate>Wed, 14 May 2025 03:38:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=43980521</link><dc:creator>rjmill</dc:creator><comments>https://news.ycombinator.com/item?id=43980521</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43980521</guid></item><item><title><![CDATA[New comment by rjmill in "The Frontend Treadmill"]]></title><description><![CDATA[
<p>Great advice, but my case is different because our framework is REALLY hurting us.<p>/s<p>It's wild how easy it is to fall into this trap. IMO, if you're considering switching frameworks (especially for perf reasons), your time would be better served by getting parts of your app off framework completely (assuming there's truly no way to get the results you want in your current framework.)</p>
]]></description><pubDate>Thu, 20 Mar 2025 12:52:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=43422440</link><dc:creator>rjmill</dc:creator><comments>https://news.ycombinator.com/item?id=43422440</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43422440</guid></item><item><title><![CDATA[New comment by rjmill in "TSMC expected to announce $100B investment in U.S."]]></title><description><![CDATA[
<p>I wonder if Bacardi might be a better analogue for what TSMC gets from this deal.<p>Bacardi started a distillery in Puerto Rico (iirc, to sell in the US without tariffs) well before the Cuban Revolution. When the Cuban government seized Bacardi's assets, they were able to move everything to their other sites in Puerto Rico and Mexico.<p>As you point out, I highly doubt this deal moves the needle on whether or not US provides military aid to Taiwan. But it does help give them more options if the situation in Taiwan becomes untenable.</p>
]]></description><pubDate>Tue, 04 Mar 2025 13:20:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=43254178</link><dc:creator>rjmill</dc:creator><comments>https://news.ycombinator.com/item?id=43254178</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43254178</guid></item><item><title><![CDATA[New comment by rjmill in "Show HN: I created a language called AntiLang – breaking all the conventions"]]></title><description><![CDATA[
<p>I love it. I want a python-esque version that's whitespace sensitive. But only for trailing whitespace.</p>
]]></description><pubDate>Thu, 27 Feb 2025 03:39:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=43191080</link><dc:creator>rjmill</dc:creator><comments>https://news.ycombinator.com/item?id=43191080</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43191080</guid></item><item><title><![CDATA[New comment by rjmill in "TabBoo – add random jumpscares to websites you're trying to avoid"]]></title><description><![CDATA[
<p>Yeah, counting parens! Dohohoho!</p>
]]></description><pubDate>Thu, 23 Jan 2025 03:52:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=42800550</link><dc:creator>rjmill</dc:creator><comments>https://news.ycombinator.com/item?id=42800550</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42800550</guid></item><item><title><![CDATA[New comment by rjmill in "What happened to the world's largest tube TV? [video]"]]></title><description><![CDATA[
<p>From the interview with the TV's original owner, this seemed like his ideal outcome.<p>The owner had seen discussions of the TV online and knew it was a big deal. But he still couldn't get rid of it until this guy came along.<p>The owner even said he wanted the TV to go to someone who would use, appreciate, and take care of it. The video clearly demonstrates all of the above. If the TV ended up in some museum, forever powered off, that would be even more tragic in some ways.<p>I didn't get the impression that anyone was bamboozled or cheated.</p>
]]></description><pubDate>Mon, 23 Dec 2024 23:00:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=42498298</link><dc:creator>rjmill</dc:creator><comments>https://news.ycombinator.com/item?id=42498298</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42498298</guid></item><item><title><![CDATA[New comment by rjmill in "It's legal for police to use deception in interrogations. Some want that to end"]]></title><description><![CDATA[
<p>And killing a dog is wrongest.</p>
]]></description><pubDate>Sat, 09 Nov 2024 04:04:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=42092465</link><dc:creator>rjmill</dc:creator><comments>https://news.ycombinator.com/item?id=42092465</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42092465</guid></item><item><title><![CDATA[New comment by rjmill in "Don't squander public trust on bullshit"]]></title><description><![CDATA[
<p>I turned off the alerts, and felt like an idiot after the storms here in NC.<p>Until I realized that the "severe flooding" warning would have been indistinguishable from the one that goes off whenever there's a nontrivial amount of rain (which is quite often during hurricane season.)<p>Luckily, it ended up not mattering for me. At best, it would have just explained why my trash cans had wandered into the neighbor's yard.</p>
]]></description><pubDate>Sat, 05 Oct 2024 04:39:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=41747768</link><dc:creator>rjmill</dc:creator><comments>https://news.ycombinator.com/item?id=41747768</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41747768</guid></item><item><title><![CDATA[New comment by rjmill in "Nginx/njs: A subset of JavaScript language to use in Nginx"]]></title><description><![CDATA[
<p>Many people who need nginx are proficient in JS, or they work with people who are proficient in JS.<p>Lua is not a common skill among web developers.</p>
]]></description><pubDate>Sat, 28 Sep 2024 01:08:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=41677063</link><dc:creator>rjmill</dc:creator><comments>https://news.ycombinator.com/item?id=41677063</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41677063</guid></item><item><title><![CDATA[New comment by rjmill in "Deliberate Practice and Acquisition of Expert Performance: A General Overview"]]></title><description><![CDATA[
<p>I dunno, ask my wife and she'll tell you the songs I'm usually practicing are beyond the edge of my capabilities.<p>In seriousness, I don't think that statement is meant for lifting/running or anything that's bounded by your physical fitness. Because you're right, the human body doesn't work like that.<p>Music is probably a better example. I push myself by learning songs that are beyond what I can do now. I practice them and make a bunch of mistakes. And as I keep practicing, the mistakes go away. And at some point, the song I couldn't play becomes a song I can play. Then I find new even harder songs to focus my practice on.</p>
]]></description><pubDate>Tue, 27 Aug 2024 14:32:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=41367972</link><dc:creator>rjmill</dc:creator><comments>https://news.ycombinator.com/item?id=41367972</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41367972</guid></item><item><title><![CDATA[New comment by rjmill in "Go automatically downloads a newer toolchain if needed"]]></title><description><![CDATA[
<p>> are there frequent updates in Go spec introducing new features that it is necessary to auto install the compiler itself ?<p>From what I've seen, the need for frequent updates is more about keeping security scans happy.</p>
]]></description><pubDate>Tue, 20 Aug 2024 12:38:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=41299515</link><dc:creator>rjmill</dc:creator><comments>https://news.ycombinator.com/item?id=41299515</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41299515</guid></item><item><title><![CDATA[New comment by rjmill in "The Orgasmatron: tale of a pleasure implant (2014)"]]></title><description><![CDATA[
<p>Looks like there's not been much progress on this since the article.<p>Here's a more recent article I found, if anyone's curious: <a href="https://melmagazine.com/en-us/story/orgasmatron-thomas-stuart-meloy" rel="nofollow">https://melmagazine.com/en-us/story/orgasmatron-thomas-stuar...</a><p>(Plot spoilers, there's not been any developments on this since TFA.)</p>
]]></description><pubDate>Sat, 03 Aug 2024 13:31:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=41146515</link><dc:creator>rjmill</dc:creator><comments>https://news.ycombinator.com/item?id=41146515</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41146515</guid></item></channel></rss>