<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: nhaehnle</title><link>https://news.ycombinator.com/user?id=nhaehnle</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 02 May 2026 10:35:07 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=nhaehnle" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by nhaehnle in "AI didn't simplify software engineering: It just made bad engineering easier"]]></title><description><![CDATA[
<p>I believe the article exaggerates to make a point. Yes, good engineering can also be assisted with LLM-based agents, but there is a delta.<p>Good engineering requires that you still pay attention to the result produced by the agent(s).<p>Bad engineering might skip over that part.<p>Therefore, via Amdahl's law, LLM-based agents overall provide more acceleration to bad engineering than they do to good engineering.</p>
]]></description><pubDate>Sat, 14 Mar 2026 15:59:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=47377977</link><dc:creator>nhaehnle</dc:creator><comments>https://news.ycombinator.com/item?id=47377977</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47377977</guid></item><item><title><![CDATA[New comment by nhaehnle in "The World Happiness Report is beset with methodological problems"]]></title><description><![CDATA[
<p>My thought as well, but the question is: does it matter for what the survey is trying to achieve?<p>Some people will interpret it one way, some a subtly different way, but is there a reason that people's interpretation changes over time in a way that is more rapid and more significant than the underlying question of how good their life is broadly? Probably not.<p>There may be cultural differences that make it tricky to do comparisons between cultures / countries, but it should give something useful when looking at the same culture / country over time.</p>
]]></description><pubDate>Wed, 17 Dec 2025 00:39:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=46296783</link><dc:creator>nhaehnle</dc:creator><comments>https://news.ycombinator.com/item?id=46296783</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46296783</guid></item><item><title><![CDATA[New comment by nhaehnle in "Ensuring a National Policy Framework for Artificial Intelligence"]]></title><description><![CDATA[
<p>In particular, the bulk of the substantial text of the order has a pretty clear culture war bend with all the talk about how truthful AI is. This is in large part a fight over the political leaning of AI models.</p>
]]></description><pubDate>Sat, 13 Dec 2025 03:36:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=46251757</link><dc:creator>nhaehnle</dc:creator><comments>https://news.ycombinator.com/item?id=46251757</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46251757</guid></item><item><title><![CDATA[New comment by nhaehnle in "Ensuring a National Policy Framework for Artificial Intelligence"]]></title><description><![CDATA[
<p>That's the whole point. They aren't law, and they were (probably) never meant to be so far-reaching, and yet the clear purpose of this Executive Order is to tell the states what laws they can enact. The EO doesn't have the legal power to do that directly, but it clearly outlines the intention to withdraw federal funding from states that refuse to toe the line.</p>
]]></description><pubDate>Sat, 13 Dec 2025 03:29:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=46251731</link><dc:creator>nhaehnle</dc:creator><comments>https://news.ycombinator.com/item?id=46251731</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46251731</guid></item><item><title><![CDATA[New comment by nhaehnle in "Z2 – Lithographically fabricated IC in a garage fab"]]></title><description><![CDATA[
<p>That's a fair and good interjection. The truth is probably that at society scale, <i>both</i> approaches are traditional.<p>The open sharing approach is traditional for research and academia, while the information restricting approach is traditional for business-oriented thinking.<p>So, a young field will typically start out fairly open and then get increasingly closed down. The long-term trajectory differs by field, and the modern open-source landscape shows that there can be a fair bit of oscillation.<p>We're seeing the same basic shape of story play out in generative AI.</p>
]]></description><pubDate>Sun, 07 Dec 2025 20:41:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=46184943</link><dc:creator>nhaehnle</dc:creator><comments>https://news.ycombinator.com/item?id=46184943</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46184943</guid></item><item><title><![CDATA[New comment by nhaehnle in "State of AI: An Empirical 100T Token Study with OpenRouter"]]></title><description><![CDATA[
<p>It is quite interesting to ponder these usage statistics, isn't it?<p>According to their charts they're at a throughput of something like 7T tok/week total now. At 1$/Mtok, that's 7M$ per week. Less than half a billion per year. How much is that compared to the total inference market? And yet again, their throughput went like 20x in one year, who knows what's to come...</p>
]]></description><pubDate>Fri, 05 Dec 2025 05:54:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=46157216</link><dc:creator>nhaehnle</dc:creator><comments>https://news.ycombinator.com/item?id=46157216</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46157216</guid></item><item><title><![CDATA[New comment by nhaehnle in "Work after work: Notes from an unemployed new grad watching the job market break"]]></title><description><![CDATA[
<p>I agree on the first point. I clicked through to the previous blog entry which I also found to be really good.</p>
]]></description><pubDate>Mon, 10 Nov 2025 01:58:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=45871416</link><dc:creator>nhaehnle</dc:creator><comments>https://news.ycombinator.com/item?id=45871416</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45871416</guid></item><item><title><![CDATA[New comment by nhaehnle in "Replacement.ai"]]></title><description><![CDATA[
<p>If you'll look at the Guidelines for HN linked at the bottom of the page, you'll note that whether a submission is <i>productive</i> is not a criterion.<p>You could perhaps make an argument that among the flood of AI-related submissions, this one doesn't particularly move the needle on intellectual curiosity. Although satire is generally a good way to allow for some reflection on a serious topic, and I don't recall seeing AI-related satire here in a while.</p>
]]></description><pubDate>Sun, 19 Oct 2025 15:33:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=45634948</link><dc:creator>nhaehnle</dc:creator><comments>https://news.ycombinator.com/item?id=45634948</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45634948</guid></item><item><title><![CDATA[New comment by nhaehnle in "Steve Ballmer Interview"]]></title><description><![CDATA[
<p>Others have given some answer to who was made poorer by Ballmer holding Microsoft shares, but I'd argue that this is the wrong question. Instead of looking at a specific individual, we should look at systems.<p>A system that allows this kind of extreme wealth accumulation is quite fundamentally at odds with democracy because extreme wealth can be and is in practice used to influence politics in a way that undermines democracy.<p>Some people might not care about that, but if your goal is improving the outcomes of the largest number of people, then pretty much everything else is secondary to having a functioning democracy.</p>
]]></description><pubDate>Mon, 01 Sep 2025 23:25:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=45097509</link><dc:creator>nhaehnle</dc:creator><comments>https://news.ycombinator.com/item?id=45097509</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45097509</guid></item><item><title><![CDATA[New comment by nhaehnle in "Claude Sonnet 4 now supports 1M tokens of context"]]></title><description><![CDATA[
<p>I just find it hard to take the 3x claims at face value because actual code generation is only a small part of my job, and so Amdahl's law currently limits any productivity increase from agentic AI to well below 2x for me.<p>(And I believe I'm fairly typical for my team. While there are more junior folks, it's not that I'm just stuck with powerpoint or something all day. Writing code is rarely the bottleneck.)<p>So... either their job is really just churning out code (where do these jobs exist, and are there any jobs like this at all that still care about quality?) or the most generous explanation that I can think of is that people are really, really bad at self-evaluations of productivity.</p>
]]></description><pubDate>Wed, 13 Aug 2025 04:27:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=44884636</link><dc:creator>nhaehnle</dc:creator><comments>https://news.ycombinator.com/item?id=44884636</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44884636</guid></item><item><title><![CDATA[New comment by nhaehnle in "LLMs aren't world models"]]></title><description><![CDATA[
<p>Good on you for having the meta-cognition to recognize it.<p>I've graded <i>many</i> exams in my university days (and set some myself), and it's exceedingly obvious that that's what many students are doing. I do wonder though how often they manage to fly under the radar. I'm sure it happens, as you described.<p>(This is also the reason why I strongly believe that in exams where students write free-form answers, points should be subtracted for incorrect statements even if a correct solution is somewhere in the word salad.)</p>
]]></description><pubDate>Wed, 13 Aug 2025 04:16:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=44884601</link><dc:creator>nhaehnle</dc:creator><comments>https://news.ycombinator.com/item?id=44884601</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44884601</guid></item><item><title><![CDATA[New comment by nhaehnle in "Nobody knows how to build with AI yet"]]></title><description><![CDATA[
<p>I'm skeptical too, but at least accessibility and usability do show up in those four documents they link to.<p>I didn't see internationalization and localization, but I don't see anything fundamental about those that would be different.<p>Security, on the other hand, does feel like a different beast.</p>
]]></description><pubDate>Sun, 20 Jul 2025 05:23:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=44622214</link><dc:creator>nhaehnle</dc:creator><comments>https://news.ycombinator.com/item?id=44622214</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44622214</guid></item><item><title><![CDATA[New comment by nhaehnle in "Tree Borrows"]]></title><description><![CDATA[
<p>Fair point, yeah. The general concept should still apply, you could maybe wrap it in some macros, but it is going to be more awkward mostly because of the lack of operator overloading.</p>
]]></description><pubDate>Thu, 10 Jul 2025 04:31:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=44517187</link><dc:creator>nhaehnle</dc:creator><comments>https://news.ycombinator.com/item?id=44517187</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44517187</guid></item><item><title><![CDATA[New comment by nhaehnle in "Tree Borrows"]]></title><description><![CDATA[
<p>> don't have infinite different copies of the int64_t type<p>You can make some, though!<p>Basically, the idea is to define a class template NoAlias<T, Tag> that contains a single value of type T. Implement operators etc. to make the type useful in practice for working with the wrapped value. Type-based alias rules mean that an access to the value wrapped in NoAlias<int64_t, Tag1> can never alias a value wrapped in NoAlias<int64_t, Tag2>. (Tag1 and Tag2 can just be forward-declared structs that are never defined.)<p>One time, I even encountered a situation where this was mildly useful.</p>
]]></description><pubDate>Thu, 10 Jul 2025 03:59:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=44517043</link><dc:creator>nhaehnle</dc:creator><comments>https://news.ycombinator.com/item?id=44517043</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44517043</guid></item><item><title><![CDATA[New comment by nhaehnle in "Nearly 20% of cancer drugs defective in four African nations"]]></title><description><![CDATA[
<p>I sincerely hope both of you are just trying to make a joke. I don't think a web forum like this one is the right place for it, though.</p>
]]></description><pubDate>Mon, 30 Jun 2025 03:52:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=44419184</link><dc:creator>nhaehnle</dc:creator><comments>https://news.ycombinator.com/item?id=44419184</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44419184</guid></item><item><title><![CDATA[New comment by nhaehnle in "Jjui – A Nice TUI for Jujutsu"]]></title><description><![CDATA[
<p>Indeed. I wrote a tool for myself to help with that in my reviews: <a href="https://github.com/nhaehnle/vctools/tree/main/diff-modulo-base">https://github.com/nhaehnle/vctools/tree/main/diff-modulo-ba...</a><p>It admittedly doesn't have a lot of polish, but I do use it regularly and I'd be happy to help anybody who is interested in using it.</p>
]]></description><pubDate>Mon, 26 May 2025 15:23:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=44098337</link><dc:creator>nhaehnle</dc:creator><comments>https://news.ycombinator.com/item?id=44098337</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44098337</guid></item><item><title><![CDATA[New comment by nhaehnle in "Ask HN: Most interesting tech you built for just yourself?"]]></title><description><![CDATA[
<p>A tool called "diff modulo base": <a href="https://git.sr.ht/~nhaehnle/diff-modulo-base" rel="nofollow">https://git.sr.ht/~nhaehnle/diff-modulo-base</a><p>Given two version (old and new) of a Git change (i.e., individual commit or patch series from a pull request) it produces a diff that is actually useful for reviewing purposes, assuming you've already reviewed the old version of the change.<p>It's sort of like `git range-diff`, but where `git range-diff` produces a "diff of diffs" that is very hard to impossible to read, this tool gives you a direct diff between old and new versions, but filters out any irrelevant changes that were introduced because the author rebased on a more recent version of the target branch.<p>I hope that makes sense - I never know quite how to put it into words for somebody to understand who isn't intimately familiar with Git. It is very powerful though if you combine it with a minimal amount of setup e.g. for fetching all PR branches from a GitHub repository. I use it almost daily as part of my code review workflow.</p>
]]></description><pubDate>Thu, 27 Apr 2023 16:22:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=35730446</link><dc:creator>nhaehnle</dc:creator><comments>https://news.ycombinator.com/item?id=35730446</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=35730446</guid></item><item><title><![CDATA[New comment by nhaehnle in "A Better Git Flow"]]></title><description><![CDATA[
<p>> Every PR/commit merged to master should be a clean logical unit.<p>The issue is one of review scaling. I wrote a blog post about this a while ago[0], but the gist of it is that those clean logical units are often too small for meaningful high-level reviews of more complex work.<p>With complex features or refactorings, you're often in a situation where those clean logical units allow reviewers to do a good low-level review (do a check for logic corner cases, style issues, etc.) but they don´t allow a high-level review of how all the pieces of the feature work together.<p>IMHO the most open-source process friendly solution to the issue is to review patch series, where you can review the series as a whole for the big picture, but also dig into individual commits for the details. Building such a patch series requires an approach as described in the article.<p>(In closed source environments, you <i>may</i> get a good enough approximation of the result with a separate, disciplined software design process.)<p>[0] <a href="http://nhaehnle.blogspot.com/2020/06/they-want-to-be-small-they-want-to-be.html" rel="nofollow">http://nhaehnle.blogspot.com/2020/06/they-want-to-be-small-t...</a></p>
]]></description><pubDate>Wed, 19 Jan 2022 22:15:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=30001109</link><dc:creator>nhaehnle</dc:creator><comments>https://news.ycombinator.com/item?id=30001109</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30001109</guid></item><item><title><![CDATA[New comment by nhaehnle in "“Please don't waste maintainers' time on your KPI grabbing patches”"]]></title><description><![CDATA[
<p>My understanding is that they're not necessarily asking for the commits to be squashed, they're asking for them to be submitted together as a patch series.<p>Patch series are an important part of a healthy review workflow because they allow both a micro and a macro view of changes. I have written about this before: <a href="http://nhaehnle.blogspot.com/2020/06/they-want-to-be-small-they-want-to-be.html" rel="nofollow">http://nhaehnle.blogspot.com/2020/06/they-want-to-be-small-t...</a></p>
]]></description><pubDate>Fri, 25 Jun 2021 15:04:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=27631669</link><dc:creator>nhaehnle</dc:creator><comments>https://news.ycombinator.com/item?id=27631669</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=27631669</guid></item><item><title><![CDATA[New comment by nhaehnle in "Stacked Diffs versus Pull Requests (2018)"]]></title><description><![CDATA[
<p>One related aspect that the article doesn't go into too much is that there is a tension in the size of the unit of code review: there are reasons for reviewing big chunks at once, but also reasons for reviewing individual changes that are as small as possible. I've gone into more detail on this in the past.[0]<p>Stacked diffs make that possible because you can review either individual commits or an entire stack at once.<p>The irony is that this is largely the way that Linux kernel development works -- and the Linux kernel was the first user of Git! Most projects who later adopted Git seem to have never learned this lesson that was there from the beginning, and have since been reinventing wheels.<p>[0] <a href="http://nhaehnle.blogspot.com/2020/06/they-want-to-be-small-they-want-to-be.html" rel="nofollow">http://nhaehnle.blogspot.com/2020/06/they-want-to-be-small-t...</a></p>
]]></description><pubDate>Sat, 24 Apr 2021 15:50:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=26925797</link><dc:creator>nhaehnle</dc:creator><comments>https://news.ycombinator.com/item?id=26925797</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=26925797</guid></item></channel></rss>