<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>Tue, 08 Sep 2026 23:30:56 +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 "The Twelve-Factor App (2025)"]]></title><description><![CDATA[
<p>that link 404's :(</p>
]]></description><pubDate>Sat, 29 Aug 2026 16:39:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=49491299</link><dc:creator>alfons_foobar</dc:creator><comments>https://news.ycombinator.com/item?id=49491299</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49491299</guid></item><item><title><![CDATA[New comment by alfons_foobar in "Go is an ideal language for AI-assisted software engineering"]]></title><description><![CDATA[
<p>just curious, what problems do you see with gobgp?<p>(I have only a rather basic familiarity with go, but was considering gobgp for an infra project...)</p>
]]></description><pubDate>Tue, 11 Aug 2026 22:16:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=49265231</link><dc:creator>alfons_foobar</dc:creator><comments>https://news.ycombinator.com/item?id=49265231</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49265231</guid></item><item><title><![CDATA[New comment by alfons_foobar in "Show HN: Write.md – A free, open-source, themeable Markdown editor for macOS"]]></title><description><![CDATA[
<p>not an app per se, but pandoc is great...</p>
]]></description><pubDate>Tue, 11 Aug 2026 20:51:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=49264295</link><dc:creator>alfons_foobar</dc:creator><comments>https://news.ycombinator.com/item?id=49264295</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49264295</guid></item><item><title><![CDATA[New comment by alfons_foobar in "The startup's Postgres survival guide"]]></title><description><![CDATA[
<p>ahh, gotcha! thanks!</p>
]]></description><pubDate>Thu, 23 Jul 2026 17:46:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=49025446</link><dc:creator>alfons_foobar</dc:creator><comments>https://news.ycombinator.com/item?id=49025446</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49025446</guid></item><item><title><![CDATA[New comment by alfons_foobar in "The startup's Postgres survival guide"]]></title><description><![CDATA[
<p>Sorry, I am being dense... how does that solve the problem?<p>I still have to get a connection from the pool, I just do it inside the function body now, right?<p>So this<p><pre><code>    @app.get("/users")
    def get_users(conn = Depends[get_db_conn]):
        users = conn.execute("SELECT * FROM users")
        return users
</code></pre>
would become that instead:<p><pre><code>    @app.get("/users")
    def get_users(pool = Depends[get_db_pool]):
        with pool.get_conn() as conn:
            users = conn.execute("SELECT * FROM users")
        return users
</code></pre>
But I still need enough connections in the pool to handle all concurrent requests, no?</p>
]]></description><pubDate>Thu, 23 Jul 2026 05:47:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=49017385</link><dc:creator>alfons_foobar</dc:creator><comments>https://news.ycombinator.com/item?id=49017385</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49017385</guid></item><item><title><![CDATA[New comment by alfons_foobar in "The startup's Postgres survival guide"]]></title><description><![CDATA[
<p>I might be outing myself as a noob here, but... what is the (better) alternative?</p>
]]></description><pubDate>Wed, 22 Jul 2026 19:34:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=49012229</link><dc:creator>alfons_foobar</dc:creator><comments>https://news.ycombinator.com/item?id=49012229</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49012229</guid></item><item><title><![CDATA[New comment by alfons_foobar in "Jack Dorsey launches Buzz to combine team chat, AI agents and Git hosting"]]></title><description><![CDATA[
<p>Am I the only one seeing _crazy_ levels of CPU usage when opening the project's homepage (<a href="https://buzz.xyz" rel="nofollow">https://buzz.xyz</a>)?<p>Like "maxing-out-8-cores"-crazy?</p>
]]></description><pubDate>Tue, 21 Jul 2026 18:52:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=48996482</link><dc:creator>alfons_foobar</dc:creator><comments>https://news.ycombinator.com/item?id=48996482</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48996482</guid></item><item><title><![CDATA[New comment by alfons_foobar in "Why IPv6 is so complicated"]]></title><description><![CDATA[
<p>I am not a mobile dev :D<p>I am aware that NAT is often used in corporate networks, but it does not automatically make any more sense there - the isolation is achieved by the firewall, not by NAT.<p>NAT (address or port translation) and a firewall (allowing traffic from/to those addresses or ports) are orthogonal concepts.<p>You can do NAT on IPv6, if you so desire.<p>It _should_ make no difference whether any adversary knows "what's behind a NAT", because it is your firewalls job to block any unwanted traffic.<p>Relying on "nobody knows what is inside our network so it can't be attacked" is not a viable strategy.</p>
]]></description><pubDate>Thu, 14 May 2026 11:18:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=48133846</link><dc:creator>alfons_foobar</dc:creator><comments>https://news.ycombinator.com/item?id=48133846</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48133846</guid></item><item><title><![CDATA[New comment by alfons_foobar in "Why IPv6 is so complicated"]]></title><description><![CDATA[
<p>NAT is a crutch to circumvent the problem of "there are not enough addresses for each device".<p>I _assume_ you are referring to a default deny inbound firewall (so that devices are not reachable from the outside), but these are very different, completely orthogonal concerns (and independent of the IP version in use).</p>
]]></description><pubDate>Sat, 02 May 2026 16:47:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=47988009</link><dc:creator>alfons_foobar</dc:creator><comments>https://news.ycombinator.com/item?id=47988009</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47988009</guid></item><item><title><![CDATA[New comment by alfons_foobar in "An update on recent Claude Code quality reports"]]></title><description><![CDATA[
<p>I am not sure this approach can take you very far.<p>In my experience, CC makes it very very easy to _add_ things, resulting in much more code / features.<p>CC can obviously read/understand a codebase much faster than we do, but this also has a limit (how much context we can feed into it) - I think your approch is in essence a bet that future models' ability to read/understand code (size of context) improves as fast or faster than the current models' ability to create new code.</p>
]]></description><pubDate>Sat, 25 Apr 2026 12:02:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=47900769</link><dc:creator>alfons_foobar</dc:creator><comments>https://news.ycombinator.com/item?id=47900769</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47900769</guid></item><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></channel></rss>