<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: invalidator</title><link>https://news.ycombinator.com/user?id=invalidator</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 24 May 2026 21:15:23 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=invalidator" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by invalidator in "-​-dangerously-skip-reading-code"]]></title><description><![CDATA[
<p>TDD is done in a tight loop (minutes) while coding. For every little micro-feature/fix, you write a test for the new behavior you want, implement the minimal ugly fix to get the test to pass, then rely on the tests so you don't regress as you clean up.<p>LLMs struggle with TDD. They want to generate a bunch of code and tests in large passes. You can instruct them to do red/green TDD, but the results aren't great.<p>SDD starts before implementation, and formalizes intent and high-level design. LLMs eat it up. The humans can easily reinvent the worst parts of waterfall if they're not careful.<p>They're not mutually exclusive.</p>
]]></description><pubDate>Sat, 23 May 2026 23:21:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=48252589</link><dc:creator>invalidator</dc:creator><comments>https://news.ycombinator.com/item?id=48252589</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48252589</guid></item><item><title><![CDATA[New comment by invalidator in "A nicer voltmeter clock"]]></title><description><![CDATA[
<p>You can do better: cut to 0%, let the needle fall, go back to 100% for a moment to catch the needle as it approaches the bottom of the scale. If you want to be fancy, add some quick sinusoidal ramps to smooth out the derivative.</p>
]]></description><pubDate>Sun, 17 May 2026 23:52:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=48174201</link><dc:creator>invalidator</dc:creator><comments>https://news.ycombinator.com/item?id=48174201</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48174201</guid></item><item><title><![CDATA[New comment by invalidator in "What is RISC-V and why it matters to Canonical"]]></title><description><![CDATA[
<p>The interest is BECAUSE it's well explored territory. The concept is proven and works fine.<p>On the low end where RISC-V currently lives, simplicity is a virtue.<p>On the high end, RISC isn't inherently bad; it just couldn't keep up on with the massive R&D investment on the x86 side. It can go fast if you sink some money into it like Apple, Qualcomm, etc have done with ARM.</p>
]]></description><pubDate>Fri, 10 Apr 2026 23:00:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=47724859</link><dc:creator>invalidator</dc:creator><comments>https://news.ycombinator.com/item?id=47724859</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47724859</guid></item><item><title><![CDATA[New comment by invalidator in "Helium Is Hard to Replace"]]></title><description><![CDATA[
<p>As a kid I took a lot of classes at the Lawrence Hall of Science in Berkeley, which was paradise for fledgling nerds. On the last day they would have a little closing ceremony with some cute little science experiment. One of my favorites was "Going Out With A Bang".<p>The instructors would bring out a helium balloon and a candle on a meter stick. The balloon goes pop, huzzah.<p>Then the twist. "Hey, wanna do it again?" All the kids would be like "meh, I guess?" They would then bring out a balloon full of hydrogen (maybe some oxygen too?). It would look identical to the first one, floating there tethered to the lab bench.<p>When the candle hit the second one, it made a white flash and a really sharp BANG. It was an order of magnitude louder, and you could hear the transient bouncing off the walls and echoing in the halls. It made an impression.</p>
]]></description><pubDate>Fri, 10 Apr 2026 22:10:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=47724268</link><dc:creator>invalidator</dc:creator><comments>https://news.ycombinator.com/item?id=47724268</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47724268</guid></item><item><title><![CDATA[New comment by invalidator in "DOOM Over DNS"]]></title><description><![CDATA[
<p>Yes.  Details here:<p><a href="https://github.com/resumex/doom-over-dns/tree/main/TXTRecords" rel="nofollow">https://github.com/resumex/doom-over-dns/tree/main/TXTRecord...</a></p>
]]></description><pubDate>Thu, 26 Mar 2026 23:26:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=47537169</link><dc:creator>invalidator</dc:creator><comments>https://news.ycombinator.com/item?id=47537169</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47537169</guid></item><item><title><![CDATA[New comment by invalidator in "Why did containers happen?"]]></title><description><![CDATA[
<p>If you need a specific version of one package:  apt-get install hello=2.10-3<p>If you want to lock down versions on a system, Apt Pinning: <a href="https://wiki.debian.org/AptConfiguration#Using_pinning" rel="nofollow">https://wiki.debian.org/AptConfiguration#Using_pinning</a><p>If you have a herd of systems - prod environments, VMs for CI, lots of dev workstations, and especially if your product is an appliance VM: you might want to run your own apt mirror, creating known-good snapshots of your packages.  I use <a href="https://www.aptly.info/" rel="nofollow">https://www.aptly.info/</a><p>Containers can also be a great solution though.</p>
]]></description><pubDate>Tue, 14 Oct 2025 19:46:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=45583948</link><dc:creator>invalidator</dc:creator><comments>https://news.ycombinator.com/item?id=45583948</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45583948</guid></item><item><title><![CDATA[New comment by invalidator in "Why your outdoorsy friend suddenly has a gummy bear power bank"]]></title><description><![CDATA[
<p>Yes, it's due to internal resistance.</p>
]]></description><pubDate>Thu, 25 Sep 2025 19:17:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=45377580</link><dc:creator>invalidator</dc:creator><comments>https://news.ycombinator.com/item?id=45377580</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45377580</guid></item><item><title><![CDATA[New comment by invalidator in "Why your outdoorsy friend suddenly has a gummy bear power bank"]]></title><description><![CDATA[
<p>> The voltages of batteries, in the first place, is function of state of charge.<p>It's also a function of the rate of discharge.  Have a look at this:<p><a href="https://marsen.com.au/wp-content/uploads/2021/08/Panasonic-NCR18650B-Discharge-curve.jpg" rel="nofollow">https://marsen.com.au/wp-content/uploads/2021/08/Panasonic-N...</a><p>All that space between the black and green curves is energy being lost to internal resistance.</p>
]]></description><pubDate>Thu, 25 Sep 2025 19:15:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=45377557</link><dc:creator>invalidator</dc:creator><comments>https://news.ycombinator.com/item?id=45377557</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45377557</guid></item><item><title><![CDATA[New comment by invalidator in "Why your outdoorsy friend suddenly has a gummy bear power bank"]]></title><description><![CDATA[
<p>There's a technical reason for it:  the voltage sags when the battery is discharged quickly.  Ah is relatively constant, but Wh decreases significantly with faster discharge rates, so it can't specified as a single figure.</p>
]]></description><pubDate>Sun, 21 Sep 2025 23:25:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=45327597</link><dc:creator>invalidator</dc:creator><comments>https://news.ycombinator.com/item?id=45327597</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45327597</guid></item><item><title><![CDATA[New comment by invalidator in "Preliminary report into Air India crash released"]]></title><description><![CDATA[
<p>> Almost right - the trim has more authority than the elevators.<p>Thank you, I'll update my brain and future explanations.  :)</p>
]]></description><pubDate>Sun, 13 Jul 2025 04:48:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=44547601</link><dc:creator>invalidator</dc:creator><comments>https://news.ycombinator.com/item?id=44547601</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44547601</guid></item><item><title><![CDATA[New comment by invalidator in "Preliminary report into Air India crash released"]]></title><description><![CDATA[
<p>They are simple toggle switches without actuators.  The switches are Honeywell P/N 4TL837-3D. Source[1]. Data sheet[2].<p>[1] <a href="https://ad.easa.europa.eu/blob/NM-18-33.pdf" rel="nofollow">https://ad.easa.europa.eu/blob/NM-18-33.pdf</a><p>[2] <a href="https://www.mouser.com/datasheet/2/187/honeywell_hwscs06627_1-1735572.pdf" rel="nofollow">https://www.mouser.com/datasheet/2/187/honeywell_hwscs06627_...</a></p>
]]></description><pubDate>Sat, 12 Jul 2025 23:51:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=44546248</link><dc:creator>invalidator</dc:creator><comments>https://news.ycombinator.com/item?id=44546248</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44546248</guid></item><item><title><![CDATA[New comment by invalidator in "Preliminary report into Air India crash released"]]></title><description><![CDATA[
<p>MCAS autonomously adjusts trim downward.  The trim switches override MCAS, but when released, MCAS can resume trimming down again.  The trim adjustments don't "override" the pilot's elevator inputs (MCAS has no direct control over the elevators), but they can make the controls so heavy that it's impossible to pull up.</p>
]]></description><pubDate>Sat, 12 Jul 2025 23:12:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=44546010</link><dc:creator>invalidator</dc:creator><comments>https://news.ycombinator.com/item?id=44546010</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44546010</guid></item><item><title><![CDATA[New comment by invalidator in "Ask HN: What Are You Working On? (June 2025)"]]></title><description><![CDATA[
<p>That's a pretty big yak to shave!  Building a 5 axis that gives good results a big task.  How long did it take you to get that working?<p>Why do you need to make so many molds?</p>
]]></description><pubDate>Sun, 29 Jun 2025 23:41:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=44417665</link><dc:creator>invalidator</dc:creator><comments>https://news.ycombinator.com/item?id=44417665</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44417665</guid></item><item><title><![CDATA[New comment by invalidator in "Programmers Guide to the AMIBIOS (1993) [pdf]"]]></title><description><![CDATA[
<p>The BIOS was an abstraction layer.  In the old days, not everything was 100% IBM PC compatible.  There were lots of weird graphics cards.  Some systems had incompatible disk and keyboard controllers.<p>There was no memory protection in Real Mode, so you could always poke the hardware yourself, but something written on a Tandy wasn't going to work on a Zenith unless you supported both, or ran everything through the BIOS.<p>Over time, the OS took over the HAL role, with the BIOS only being used until the OS could load native drivers.  Now it's UEFI... same idea with a higher greater level of abstraction and modularity.</p>
]]></description><pubDate>Sun, 04 May 2025 05:36:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=43884748</link><dc:creator>invalidator</dc:creator><comments>https://news.ycombinator.com/item?id=43884748</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43884748</guid></item><item><title><![CDATA[New comment by invalidator in "Legendary Bose Magic Carpet Suspension Is Finally Going Global"]]></title><description><![CDATA[
<p>It's not the same.<p>For a simple example, let's say you are simply driving in a circle.  The car wants to lean toward the outside.  The linear motors can provide a countering force, lifting the outside, lowering the inside, so the car stays level.  Variable damping can only control the rate that it rolls.  It will still roll in sub-second timescales, unless it completely locks down the suspension, which is terrible for both handling and comfort.<p>For another simple example: going over a speed bump.  Linear motors can lift the front wheels over the bump, and then the rear wheels, so the body stays level the whole time.  An active damper can go full-soft the moment the wheel hits the bump, but the compressed spring will still start lifting the front of the car.  An active damper can do a better job managing the rebound on the far side so it doesn't oscillate, but it can't entirely prevent the bump from pitching the body up and down in the first place.<p>That's not to say it's worthless.  Very fast active dampers can improve both handling and comfort.  It's just nowhere near the level which is possible with linear motors.</p>
]]></description><pubDate>Sun, 04 May 2025 00:09:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=43883383</link><dc:creator>invalidator</dc:creator><comments>https://news.ycombinator.com/item?id=43883383</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43883383</guid></item><item><title><![CDATA[New comment by invalidator in "Pipelining might be my favorite programming language feature"]]></title><description><![CDATA[
<p>It depends on the language you're using.<p>For my Ruby example, each of those method calls will allocate an Array on the heap, where it will persist until all references are removed and the GC runs again.  The extra overhead of the named reference is somewhere between Tiny and Zero, depending on your interpreter.  No extra copies are made; it's just a reference.<p>In most compiled languages: the overhead is exactly zero.  At runtime, nothing even knows it's called "data" unless you have debug symbols.<p>If these are going to be large arrays and you actually care about memory usage, you wouldn't write the code the way I did.  You might use lazy enumerators, or just flatten it out into a simple procedure; either of those would process one line at a time, discarding all the intermediate results as it goes.<p>Also, "File.readlines(i).count" is an atrocity of wasted memory.  If you care about efficiency at all, that's the first part to go.  :)</p>
]]></description><pubDate>Thu, 24 Apr 2025 20:43:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=43787258</link><dc:creator>invalidator</dc:creator><comments>https://news.ycombinator.com/item?id=43787258</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43787258</guid></item><item><title><![CDATA[New comment by invalidator in "Pipelining might be my favorite programming language feature"]]></title><description><![CDATA[
<p>The author keeps calling it "pipelining", but I think the right term is "method chaining".<p>Compare with a simple pipeline in bash:<p><pre><code>  grep needle < haystack.txt | sed 's/foo/bar/g' | xargs wc -l
</code></pre>
Each of those components executes in parallel, with the intermediate results streaming between them.  You get a similar effect with coroutines.<p>Compare Ruby:<p><pre><code>  data = File.readlines("haystack.txt")
    .map(&:strip)
    .grep(/needle/)
    .map { |i| i.gsub('foo', 'bar') }
    .map { |i| File.readlines(i).count }
</code></pre>
In that case, each line is processed sequentially, with a complete array being created between each step.  Nothing actually gets pipelined.<p>Despite being clean and readable, I don't tend to do it any more, because it's harder to debug.  More often these days, I write things like this:<p><pre><code>  data = File.readlines("haystack.txt")
  data = data.map(&:strip)
  data = data.grep(/needle/)
  data = data.map { |i| i.gsub('foo', 'bar') }
  data = data.map { |i| File.readlines(i).count }
</code></pre>
It's ugly, but you know what?  I can set a breakpoint anywhere and inspect the intermediate states without having to edit the script in prod.  Sometimes ugly and boring is better.</p>
]]></description><pubDate>Mon, 21 Apr 2025 23:31:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=43757616</link><dc:creator>invalidator</dc:creator><comments>https://news.ycombinator.com/item?id=43757616</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43757616</guid></item><item><title><![CDATA[New comment by invalidator in "I wrote a static web page and accidentally started a community (2023)"]]></title><description><![CDATA[
<p>> Probably not a good idea for anyone with a timeline<p>It's not completely crazy.  Software was developed by much smaller teams and got out the door quickly in that era.</p>
]]></description><pubDate>Thu, 13 Feb 2025 02:51:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=43032172</link><dc:creator>invalidator</dc:creator><comments>https://news.ycombinator.com/item?id=43032172</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43032172</guid></item><item><title><![CDATA[New comment by invalidator in "I wrote a static web page and accidentally started a community (2023)"]]></title><description><![CDATA[
<p>> I can't help but feel like a lighter weight VM (versus electron) is what we actually want. Or at least what _I_ want, something like UXN but just a little more fully featured.<p>That's basically the JVM, isn't it?<p>It's interesting to think how some of the reasons it sucked for desktop apps (performance, native UI) are also true of Electron.  Maybe our expectations are just lower now.</p>
]]></description><pubDate>Thu, 13 Feb 2025 00:56:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=43031549</link><dc:creator>invalidator</dc:creator><comments>https://news.ycombinator.com/item?id=43031549</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43031549</guid></item><item><title><![CDATA[New comment by invalidator in "Noether's Theorem Revolutionized Physics"]]></title><description><![CDATA[
<p>"as the Universe expands, photons lose energy. But that doesn't mean energy isn't conserved; it means that the energy goes into the Universe's expansion itself, in the form of work."<p>-- <a href="https://www.forbes.com/sites/startswithabang/2015/12/19/ask-ethan-when-a-photon-gets-redshifted-where-does-the-energy-go/" rel="nofollow">https://www.forbes.com/sites/startswithabang/2015/12/19/ask-...</a></p>
]]></description><pubDate>Sun, 09 Feb 2025 20:12:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=42993432</link><dc:creator>invalidator</dc:creator><comments>https://news.ycombinator.com/item?id=42993432</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42993432</guid></item></channel></rss>