<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: alfons_foobar</title><link>https://news.ycombinator.com/user?id=alfons_foobar</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 19 Apr 2026 09:57:28 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=alfons_foobar" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by alfons_foobar in "How NASA built Artemis II’s fault-tolerant computer"]]></title><description><![CDATA[
<p>I wondered about this as well.<p>OTOH, consider that in the "pick the majority from 3 CPUs" approach that seems to have been used in earlier missions (as mentioned in the article) would fail the same way if two CPUs compute the same erroneous result.</p>
]]></description><pubDate>Fri, 10 Apr 2026 06:52:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=47714475</link><dc:creator>alfons_foobar</dc:creator><comments>https://news.ycombinator.com/item?id=47714475</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47714475</guid></item><item><title><![CDATA[New comment by alfons_foobar in "Carelessness versus craftsmanship in cryptography"]]></title><description><![CDATA[
<p>While I agree in principle, as of now the latest commit to the pyaes repo and its latest release to pypi are from 2017...</p>
]]></description><pubDate>Sun, 22 Feb 2026 12:01:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=47110333</link><dc:creator>alfons_foobar</dc:creator><comments>https://news.ycombinator.com/item?id=47110333</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47110333</guid></item><item><title><![CDATA[New comment by alfons_foobar in "Parse, Don't Validate and Type-Driven Design in Rust"]]></title><description><![CDATA[
<p>> `NonZeroU32::saturating_add(self, other: u32)` is able to return `NonZeroU32` though!<p>I was confused at first how that could work, but then I realized that of course, with _unsigned_ integers this works fine because you cannot add a negative number...</p>
]]></description><pubDate>Sat, 21 Feb 2026 22:47:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=47105714</link><dc:creator>alfons_foobar</dc:creator><comments>https://news.ycombinator.com/item?id=47105714</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47105714</guid></item><item><title><![CDATA[New comment by alfons_foobar in "Parse, Don't Validate and Type-Driven Design in Rust"]]></title><description><![CDATA[
<p>Would have to be F32, no?
I cannot think of any way to enforce "non-zero-ness" of the result without making it return an optional Result<NonZeroF32>, and at that point we are basically back to square one...</p>
]]></description><pubDate>Sat, 21 Feb 2026 21:50:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=47105185</link><dc:creator>alfons_foobar</dc:creator><comments>https://news.ycombinator.com/item?id=47105185</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47105185</guid></item><item><title><![CDATA[New comment by alfons_foobar in "Your job is to deliver code you have proven to work"]]></title><description><![CDATA[
<p>> added random blank lines and deleted others from code that was not even in the file they were supposed to be working in.<p>Maybe some kind of auto-formatter?</p>
]]></description><pubDate>Thu, 18 Dec 2025 20:05:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=46317904</link><dc:creator>alfons_foobar</dc:creator><comments>https://news.ycombinator.com/item?id=46317904</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46317904</guid></item><item><title><![CDATA[New comment by alfons_foobar in "Tiger Style: Coding philosophy (2024)"]]></title><description><![CDATA[
<p>Agree that "splitting for splittings' sake" (only to stay below an arbitrary line count) does indeed not make sense.<p>On the other hand I often see functions like you describe - something has to be executed step-by-step (and the functionality is only used there) - where I _whish_ it was split up into separate functions, so we could have meaningful tests for each step, not only for the "whole thing".</p>
]]></description><pubDate>Fri, 28 Nov 2025 06:52:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=46076201</link><dc:creator>alfons_foobar</dc:creator><comments>https://news.ycombinator.com/item?id=46076201</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46076201</guid></item><item><title><![CDATA[New comment by alfons_foobar in "Python developers are embracing type hints"]]></title><description><![CDATA[
<p>Fair point!<p>Maybe I am just a bit burned by this particular example I ran into (where this pattern should IMO not have been used).</p>
]]></description><pubDate>Mon, 29 Sep 2025 14:30:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=45414303</link><dc:creator>alfons_foobar</dc:creator><comments>https://news.ycombinator.com/item?id=45414303</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45414303</guid></item><item><title><![CDATA[New comment by alfons_foobar in "Python developers are embracing type hints"]]></title><description><![CDATA[
<p>I ran into some code recently where this pattern caused me so much headache - class A has an attribute which is an instance of class B, and class B has a "parent" attribute (which points to the instance of class A that class B is an attribute of):<p><pre><code>  class Foo:
      def __init__(self, bar):
          self.bar = bar
  
  class Bar:
      def __init__(self, foo):
          self.foo = foo
</code></pre>
Obviously both called into each other to do $THINGS... Pure madness.<p>So my suggestion: Try not to have interdependent classes :D</p>
]]></description><pubDate>Sun, 28 Sep 2025 11:54:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=45403677</link><dc:creator>alfons_foobar</dc:creator><comments>https://news.ycombinator.com/item?id=45403677</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45403677</guid></item><item><title><![CDATA[New comment by alfons_foobar in "Python developers are embracing type hints"]]></title><description><![CDATA[
<p>Agreed that this "hack" is very ugly!<p>On the other hand, I tend to take it as a hint that I should look at my module structure, and see if I can avoid the cyclic import (even if before adding type hints there was no error, there still already was a "semantic dependency"...)</p>
]]></description><pubDate>Sun, 28 Sep 2025 07:34:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=45402447</link><dc:creator>alfons_foobar</dc:creator><comments>https://news.ycombinator.com/item?id=45402447</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45402447</guid></item><item><title><![CDATA[New comment by alfons_foobar in "How AWS S3 serves 1 petabyte per second on top of slow HDDs"]]></title><description><![CDATA[
<p>He explicitly mentioned RAID0 though :)</p>
]]></description><pubDate>Thu, 25 Sep 2025 16:44:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=45375203</link><dc:creator>alfons_foobar</dc:creator><comments>https://news.ycombinator.com/item?id=45375203</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45375203</guid></item><item><title><![CDATA[New comment by alfons_foobar in "Thundering herd problem: Preventing the stampede"]]></title><description><![CDATA[
<p>This sounds intriguing and terrible at the same time :D</p>
]]></description><pubDate>Tue, 23 Sep 2025 20:10:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=45352140</link><dc:creator>alfons_foobar</dc:creator><comments>https://news.ycombinator.com/item?id=45352140</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45352140</guid></item><item><title><![CDATA[New comment by alfons_foobar in "How to motivate yourself to do a thing you don't want to do"]]></title><description><![CDATA[
<p>This 100%</p>
]]></description><pubDate>Wed, 17 Sep 2025 20:39:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=45281129</link><dc:creator>alfons_foobar</dc:creator><comments>https://news.ycombinator.com/item?id=45281129</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45281129</guid></item><item><title><![CDATA[New comment by alfons_foobar in "Code formatting comes to uv experimentally"]]></title><description><![CDATA[
<p>The formatter already exists, my understanding is that this is merely an alias for "uvx ruff"...</p>
]]></description><pubDate>Fri, 22 Aug 2025 11:48:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=44983354</link><dc:creator>alfons_foobar</dc:creator><comments>https://news.ycombinator.com/item?id=44983354</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44983354</guid></item><item><title><![CDATA[New comment by alfons_foobar in "An Algorithm for a Better Bookshelf"]]></title><description><![CDATA[
<p>> I think there's a distinction between worst-case and adversarial behavior.<p>I think _technically_ there is no difference - it does not matter if the worst-case-behavior is triggered by an "adversary" or by chance.<p>It _does_ give a different mental model though.</p>
]]></description><pubDate>Fri, 04 Jul 2025 06:10:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=44461591</link><dc:creator>alfons_foobar</dc:creator><comments>https://news.ycombinator.com/item?id=44461591</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44461591</guid></item><item><title><![CDATA[New comment by alfons_foobar in "Claude Code now supports hooks"]]></title><description><![CDATA[
<p>Huh, I had not heard of claude code cloud before.<p>(Also almost swallowed my tongue saying that out loud)</p>
]]></description><pubDate>Tue, 01 Jul 2025 17:49:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=44436365</link><dc:creator>alfons_foobar</dc:creator><comments>https://news.ycombinator.com/item?id=44436365</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44436365</guid></item><item><title><![CDATA[New comment by alfons_foobar in "Claude Code now supports hooks"]]></title><description><![CDATA[
<p>Why is it that regular git hooks do not work with claude code?</p>
]]></description><pubDate>Tue, 01 Jul 2025 06:58:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=44431303</link><dc:creator>alfons_foobar</dc:creator><comments>https://news.ycombinator.com/item?id=44431303</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44431303</guid></item><item><title><![CDATA[New comment by alfons_foobar in "Use keyword-only arguments in Python dataclasses"]]></title><description><![CDATA[
<p>I guess some prefer to stick with the stdlib instead of third party libs.<p>Also, dataclasses feels more straightforward and less "magic" to me (in the sense that it is more or less "just" a way to avoid boilerplate for class definition, while pydantic does way more "magic" stuff like de-/serialization and validation, and adding numerous methods and attributes to the classes).</p>
]]></description><pubDate>Mon, 30 Jun 2025 12:46:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=44422600</link><dc:creator>alfons_foobar</dc:creator><comments>https://news.ycombinator.com/item?id=44422600</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44422600</guid></item><item><title><![CDATA[New comment by alfons_foobar in "Fairphone 6 is switching to a new design that's even more sustainable"]]></title><description><![CDATA[
<p>Pretty sure it has eSIM (at least my FP4 has it...)</p>
]]></description><pubDate>Tue, 24 Jun 2025 07:59:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=44363844</link><dc:creator>alfons_foobar</dc:creator><comments>https://news.ycombinator.com/item?id=44363844</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44363844</guid></item><item><title><![CDATA[New comment by alfons_foobar in "How to Write the Worst Possible Python Code (Humor)"]]></title><description><![CDATA[
<p>What do you mean, "unknown contents"?<p>Just trace back the dict to it's origin, through all the places it can be modified, and you know what is (or could be) inside...<p>/s</p>
]]></description><pubDate>Sat, 14 Jun 2025 14:59:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=44276802</link><dc:creator>alfons_foobar</dc:creator><comments>https://news.ycombinator.com/item?id=44276802</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44276802</guid></item><item><title><![CDATA[New comment by alfons_foobar in "Ask HN: Anyone making a living from a paid API?"]]></title><description><![CDATA[
<p>That's a funny idea :)<p>I think the first one should be very much doable, but I am not sure how I would build the "almost complete" and the "similar colors" features.</p>
]]></description><pubDate>Sat, 31 May 2025 15:54:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=44145080</link><dc:creator>alfons_foobar</dc:creator><comments>https://news.ycombinator.com/item?id=44145080</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44145080</guid></item></channel></rss>