<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: michaelfeathers</title><link>https://news.ycombinator.com/user?id=michaelfeathers</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 22 Apr 2026 08:55:08 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=michaelfeathers" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by michaelfeathers in "Programming Deflation"]]></title><description><![CDATA[
<p>There's something with the same shape as Jevon's paradox - the Peltzman effect. The safer you make something the more risks people will take.<p>Applied to AI I think it would be something like - ease of development increases the complexity attempted.</p>
]]></description><pubDate>Mon, 15 Sep 2025 19:00:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=45253628</link><dc:creator>michaelfeathers</dc:creator><comments>https://news.ycombinator.com/item?id=45253628</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45253628</guid></item><item><title><![CDATA[New comment by michaelfeathers in "The key points of "Working Effectively with Legacy Code""]]></title><description><![CDATA[
<p>Thanks. After I wrote it a friend said "I think you just gave people permission to do things that they would've felt bad about otherwise." I think he was right, in a way. On the other hand, not everything is obvious to everyone, and it's been 20 years. Regardless of whether people have read the book, the knowledge of these things as grown since then.</p>
]]></description><pubDate>Mon, 08 Sep 2025 21:07:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=45174007</link><dc:creator>michaelfeathers</dc:creator><comments>https://news.ycombinator.com/item?id=45174007</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45174007</guid></item><item><title><![CDATA[New comment by michaelfeathers in "Left to Right Programming"]]></title><description><![CDATA[
<p>The developers of JMock, the original library for Java.</p>
]]></description><pubDate>Mon, 18 Aug 2025 23:39:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=44946565</link><dc:creator>michaelfeathers</dc:creator><comments>https://news.ycombinator.com/item?id=44946565</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44946565</guid></item><item><title><![CDATA[New comment by michaelfeathers in "Left to Right Programming"]]></title><description><![CDATA[
<p>This is called point-free style in Haskell.<p>Sometimes it is called a fluent-interface in other languages.</p>
]]></description><pubDate>Mon, 18 Aug 2025 21:47:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=44945686</link><dc:creator>michaelfeathers</dc:creator><comments>https://news.ycombinator.com/item?id=44945686</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44945686</guid></item><item><title><![CDATA[New comment by michaelfeathers in "My AI skeptic friends are all nuts"]]></title><description><![CDATA[
<p>That doesn't sound like the sort of problem you'd use it for. I think it would be used for the ~10% of code you have in some applications that are part of the critical core. UI, not so much.</p>
]]></description><pubDate>Sun, 08 Jun 2025 16:17:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=44217864</link><dc:creator>michaelfeathers</dc:creator><comments>https://news.ycombinator.com/item?id=44217864</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44217864</guid></item><item><title><![CDATA[New comment by michaelfeathers in "My AI skeptic friends are all nuts"]]></title><description><![CDATA[
<p>I think we are going to end up with common design/code specification language that we use for prompting and testing. There's always going to be a need to convey the exact semantics of what we want. If not, for AI then for the humans who have to grapple with what is made.</p>
]]></description><pubDate>Tue, 03 Jun 2025 16:27:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=44171782</link><dc:creator>michaelfeathers</dc:creator><comments>https://news.ycombinator.com/item?id=44171782</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44171782</guid></item><item><title><![CDATA[New comment by michaelfeathers in "ChatGPT 4.1 Jailbreak Prompt"]]></title><description><![CDATA[
<p>The trajectory of AI is: emulating humans. We've never been able to align humans completely, so it would be surprising if we could align AI.</p>
]]></description><pubDate>Wed, 16 Apr 2025 18:06:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=43708544</link><dc:creator>michaelfeathers</dc:creator><comments>https://news.ycombinator.com/item?id=43708544</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43708544</guid></item><item><title><![CDATA[New comment by michaelfeathers in "Chat is a bad UI pattern for development tools"]]></title><description><![CDATA[
<p>Chat in English? Sure. But there is a better way. Make it a game to see how little you can specify to get what you want.<p>I used this single line to generate a 5 line Java unit test a while back.<p>test: grip o -> assert state.grip o<p>LLMs have wide "understanding" of various syntaxes and associated semantics. Most LLMs have instruct tuning that helps. Simplifications that are close to code work.<p>Re precision, yes, we need precision but if you work in small steps, the precision comes in the review.<p>Make your own private pidgin language in conversation.</p>
]]></description><pubDate>Tue, 04 Feb 2025 21:56:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=42939459</link><dc:creator>michaelfeathers</dc:creator><comments>https://news.ycombinator.com/item?id=42939459</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42939459</guid></item><item><title><![CDATA[New comment by michaelfeathers in "Software Friction"]]></title><description><![CDATA[
<p>I think it makes sense to see friction as disincentive, the opposite of incentive.</p>
]]></description><pubDate>Tue, 18 Jun 2024 16:52:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=40719829</link><dc:creator>michaelfeathers</dc:creator><comments>https://news.ycombinator.com/item?id=40719829</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40719829</guid></item><item><title><![CDATA[New comment by michaelfeathers in "Simple tasks showing reasoning breakdown in state-of-the-art LLMs"]]></title><description><![CDATA[
<p>This is a good talk about the problem: <a href="https://youtu.be/hGXhFa3gzBs?si=15IJsTQLsyDvBFnr" rel="nofollow">https://youtu.be/hGXhFa3gzBs?si=15IJsTQLsyDvBFnr</a><p>Key takeaway, LLMs are abysmal at planning and reasoning. You can give them the rules of planning task and ask them for a result but, in large part, the correctness of their logic (when it occurs) depends upon additional semantic information rather then just the abstract rules. They showed this by mapping nouns to a completely different domain in rule and input description for a task. After those simple substitutions, performance fell apart. Current LLMs are mostly pattern matchers with bounded generalization ability.</p>
]]></description><pubDate>Wed, 05 Jun 2024 15:36:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=40586206</link><dc:creator>michaelfeathers</dc:creator><comments>https://news.ycombinator.com/item?id=40586206</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40586206</guid></item><item><title><![CDATA[New comment by michaelfeathers in "Strong static typing, a hill I'm willing to die on"]]></title><description><![CDATA[
<p>I always have trouble with takes like this because they are context-free. There are a wide variety of project types and development scenarios.<p>My nuanced take is that typing is an economic choice. If the cost of failure (MTTR and criticality) are low enough it is fine to use dynamic typing. In fact, keeping the cost of failure low (if you can) gives you much more benefit than typing provides.<p>Erlang, a dynamic language used to create outrageously resilient systems, is a great example of that for the domains where it can be used.<p>I'm not a dynamic typing zealot (I like static typing a lot) but I do think that dynamic typing is unfairly maligned.<p>The cost argument brings the decision down to earth.</p>
]]></description><pubDate>Wed, 04 Oct 2023 15:55:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=37767025</link><dc:creator>michaelfeathers</dc:creator><comments>https://news.ycombinator.com/item?id=37767025</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37767025</guid></item><item><title><![CDATA[New comment by michaelfeathers in "The 300% Production Problem"]]></title><description><![CDATA[
<p>Obligatory reference to the Law of Leaky Abstractions:<p><a href="https://www.joelonsoftware.com/2002/11/11/the-law-of-leaky-abstractions/" rel="nofollow noreferrer">https://www.joelonsoftware.com/2002/11/11/the-law-of-leaky-a...</a><p>Layers work to the degree that they are trivial, but we really only need them when they are non-trivial.</p>
]]></description><pubDate>Tue, 03 Oct 2023 16:23:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=37754003</link><dc:creator>michaelfeathers</dc:creator><comments>https://news.ycombinator.com/item?id=37754003</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37754003</guid></item><item><title><![CDATA[New comment by michaelfeathers in "My solopreneur story"]]></title><description><![CDATA[
<p>I think it goes deeper.<p>When people become very skilled at programming they have the urge to scratch their own itch, either writing tools to solve software development problems or creating something with a technology that they want to use. They are uninterested in mundane, boring, vertical applications, but that's often where the money is.<p>The guy in the article did some development tools but some other things too. At the end of the day, imagining a market is no substitute for finding one.</p>
]]></description><pubDate>Sat, 23 Sep 2023 23:14:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=37628524</link><dc:creator>michaelfeathers</dc:creator><comments>https://news.ycombinator.com/item?id=37628524</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37628524</guid></item><item><title><![CDATA[New comment by michaelfeathers in "On the criteria to be used in decomposing systems into modules (1971) [pdf]"]]></title><description><![CDATA[
<p>To me, the most amazing thing is that he says that it is a problem that would take the average programmer a week back then, but today it could probably be coded in 5 minutes in AWK or Perl.</p>
]]></description><pubDate>Thu, 14 Sep 2023 09:50:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=37506882</link><dc:creator>michaelfeathers</dc:creator><comments>https://news.ycombinator.com/item?id=37506882</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37506882</guid></item><item><title><![CDATA[New comment by michaelfeathers in "How to generate tested software packages using LLMs, a sandbox and a while loop"]]></title><description><![CDATA[
<p>I think people aren't getting yet is that this generalizable beyond software. We can do this with LLM and anything that can be designed.<p><a href="https://michaelfeathers.silvrback.com/prompt-hoisting-for-gpt-based-code-generation" rel="nofollow noreferrer">https://michaelfeathers.silvrback.com/prompt-hoisting-for-gp...</a></p>
]]></description><pubDate>Mon, 07 Aug 2023 17:16:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=37037479</link><dc:creator>michaelfeathers</dc:creator><comments>https://news.ycombinator.com/item?id=37037479</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37037479</guid></item><item><title><![CDATA[New comment by michaelfeathers in "Toward Condensers"]]></title><description><![CDATA[
<p>I'm wondering whether there is any reason why condensers can't be used for all program optimization. It seems like the definition would allow that:<p>> The primary means for shifting computation is the condenser. A condenser is a component that transforms a program, yielding a program that is semantically equivalent under a stated set of constraints (e.g., “class X will not be redefined”), but may be smaller, faster, or better suited to a particular 
execution environment.</p>
]]></description><pubDate>Wed, 02 Aug 2023 22:18:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=36978519</link><dc:creator>michaelfeathers</dc:creator><comments>https://news.ycombinator.com/item?id=36978519</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36978519</guid></item><item><title><![CDATA[New comment by michaelfeathers in "Before you try to do something, make sure you can do nothing"]]></title><description><![CDATA[
<p>I've always thought of this as being like proof by induction: start with the basis case.</p>
]]></description><pubDate>Tue, 25 Jul 2023 15:34:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=36863840</link><dc:creator>michaelfeathers</dc:creator><comments>https://news.ycombinator.com/item?id=36863840</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36863840</guid></item><item><title><![CDATA[Patterns of Systems Renewal – making systems workable over time]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.globant.com/">https://www.globant.com/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=36697781">https://news.ycombinator.com/item?id=36697781</a></p>
<p>Points: 4</p>
<p># Comments: 1</p>
]]></description><pubDate>Wed, 12 Jul 2023 17:02:57 +0000</pubDate><link>https://www.globant.com/</link><dc:creator>michaelfeathers</dc:creator><comments>https://news.ycombinator.com/item?id=36697781</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36697781</guid></item><item><title><![CDATA[Generate from Constraints: Using Prompt-Hoisting for GPT-Based Code Generation]]></title><description><![CDATA[
<p>Article URL: <a href="https://michaelfeathers.silvrback.com/prompt-hoisting-for-gpt-based-code-generation">https://michaelfeathers.silvrback.com/prompt-hoisting-for-gpt-based-code-generation</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=36682635">https://news.ycombinator.com/item?id=36682635</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 11 Jul 2023 15:46:00 +0000</pubDate><link>https://michaelfeathers.silvrback.com/prompt-hoisting-for-gpt-based-code-generation</link><dc:creator>michaelfeathers</dc:creator><comments>https://news.ycombinator.com/item?id=36682635</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36682635</guid></item><item><title><![CDATA[New comment by michaelfeathers in "Show HN: File-by-file AI-generated comments for your codebase"]]></title><description><![CDATA[
<p>If they can be generated from the source they probably shouldn't be in the source. Maybe it should be an IDE plugin that displays comments for code as you hover over it.</p>
]]></description><pubDate>Tue, 23 May 2023 22:39:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=36051747</link><dc:creator>michaelfeathers</dc:creator><comments>https://news.ycombinator.com/item?id=36051747</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36051747</guid></item></channel></rss>