<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: narnarpapadaddy</title><link>https://news.ycombinator.com/user?id=narnarpapadaddy</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 28 May 2026 18:24:37 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=narnarpapadaddy" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by narnarpapadaddy in "I think Anthropic and OpenAI have found product-market fit"]]></title><description><![CDATA[
<p>Anecdotally, my take on this is that biggest value lever is strategy and alignment, not implementation. The typical company is dozens of little vectors pointed in different directions, and they cancel each other out. Scaling up the magnitude of each is still net zero.<p>I was recently consulting at org where two separate engineering teams were all in on two different, incompatible deployment platforms and using AI to accelerate adoption of each.<p>Management was mystified why their engineering leads kept telling them they couldn’t deploy a complete implementation of their solution.</p>
]]></description><pubDate>Thu, 28 May 2026 00:27:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=48302658</link><dc:creator>narnarpapadaddy</dc:creator><comments>https://news.ycombinator.com/item?id=48302658</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48302658</guid></item><item><title><![CDATA[New comment by narnarpapadaddy in "Spotify: Our best developers haven't written a single line of code since Dec"]]></title><description><![CDATA[
<p>Imagine you initialized 10,000 NPM repos identically simultaneously. Then had 100 different teams each take of 100 those repos for 10 different projects, and let each repo run for 1,000 commits. How distinct would each of those repos be? How might have they evolved independently? What types of interesting patterns might be adopted to improve development experience, or detect bugs by each team? What packages at what version might be most popular?<p>Now imagine you had the tools to do a diff across all those repos simultaneously, and classify, group, and review those patterns. What could you learn NPM teams and practices?<p>Now imagine you could pick best of breed, and propagate those back to all the other projects automatically to improve their productivity, security, etc. How fast would your productivity improve and your engineering culture change if everyone could automatically learn the best of what everyone else had to offer?<p>Companies like Spotify have sophisticated tooling for detecting repo changes and enforcing policy like that, and they run that experiment 1,000 times a day. Small evolutions in what was an identical build script, like a version bump, are detected, and if it passes a threshold it can be rolled out everywhere else immediately.<p>Having all the copies that you can sync up centrally periodically puts natural selection to work on internal best practices.<p>Basically, things work differently at scale. When the number developers you employ approaches a meaningful percentage of the total number of developers globally, your internal diversity starts to mirror the global diversity. So you have to manage that diversity. If you freeze policy entirely, you fall behind the global average. If you let things run wild, your company fractures technologically.<p>So, make a 1,000 copies, see what pops up, adopt and enforce things that look good, then do it again. Evolve to the next best place you can be from where you are.</p>
]]></description><pubDate>Fri, 13 Feb 2026 05:44:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=46999319</link><dc:creator>narnarpapadaddy</dc:creator><comments>https://news.ycombinator.com/item?id=46999319</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46999319</guid></item><item><title><![CDATA[New comment by narnarpapadaddy in "Why Twilio Segment moved from microservices back to a monolith"]]></title><description><![CDATA[
<p>So, depending on someone else’s shared library, rather than my own shared library, is the difference between a microservice and not a microservice?</p>
]]></description><pubDate>Sun, 14 Dec 2025 01:23:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=46259989</link><dc:creator>narnarpapadaddy</dc:creator><comments>https://news.ycombinator.com/item?id=46259989</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46259989</guid></item><item><title><![CDATA[New comment by narnarpapadaddy in "The jank programming language"]]></title><description><![CDATA[
<p>FWIW, (I have one Clojure project I inherited at work that my team maintains) I love this direction.</p>
]]></description><pubDate>Wed, 09 Jul 2025 23:10:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=44515643</link><dc:creator>narnarpapadaddy</dc:creator><comments>https://news.ycombinator.com/item?id=44515643</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44515643</guid></item><item><title><![CDATA[New comment by narnarpapadaddy in "Mathematicians hunting prime numbers discover infinite new pattern"]]></title><description><![CDATA[
<p>One addendum / clarification:<p>It may also be that "space" and "time" are emergent properties, much like an "apple" is "just" a description of a particular conglomeration of molecules. If we get past Planck scales it may turn that out that there are no such things as "space" and "time" and the Planck constants are irrelevant. We currently don't know but there _are_ a few theoretical frameworks that have yet to be empirically verified, like string theory.</p>
]]></description><pubDate>Mon, 23 Jun 2025 00:06:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=44351298</link><dc:creator>narnarpapadaddy</dc:creator><comments>https://news.ycombinator.com/item?id=44351298</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44351298</guid></item><item><title><![CDATA[New comment by narnarpapadaddy in "Mathematicians hunting prime numbers discover infinite new pattern"]]></title><description><![CDATA[
<p>Any given model has less fidelity than reality. An atlas map of the US has less detail than the actual terrain. The Planck constants represent the maximal fidelity possible with the standard model of physics. We can’t model shorter timeframes or smaller sizes, so we can’t predict what happens at scales that small. Building equipment the can measure something so small is difficult too… how do you measure something when you don’t know what to look for?<p>It may be that one day we come up with a more refined model. But as of today, it’s not clear how that would happen or if it’s even possible.<p>Imagine going from 4K to 8k to 16k resolution and then beyond. At some point a “pixel” to represent part of an image doesn’t make sense anymore, but what do you use instead? Nobody currently knows.</p>
]]></description><pubDate>Sun, 22 Jun 2025 20:43:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=44350125</link><dc:creator>narnarpapadaddy</dc:creator><comments>https://news.ycombinator.com/item?id=44350125</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44350125</guid></item><item><title><![CDATA[New comment by narnarpapadaddy in "Being fat is a trap"]]></title><description><![CDATA[
<p>The fact you can’t pretend _is the point_. A blanket policy of “no and never” that works well for other addictions or compulsions can’t be applied to food. :)<p>As a counter-factual, imagine if every time you wanted to smoke you had to decide if one particular type or brand of cigarette was good for you.</p>
]]></description><pubDate>Fri, 06 Jun 2025 21:03:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=44204969</link><dc:creator>narnarpapadaddy</dc:creator><comments>https://news.ycombinator.com/item?id=44204969</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44204969</guid></item><item><title><![CDATA[New comment by narnarpapadaddy in "Being fat is a trap"]]></title><description><![CDATA[
<p>The point is that black and white, all or nothing is easier for many to stick to. It’s easier to not be tempted by a cigarette if you never see one or hang out with someone who smokes. With food, you can’t take approach.</p>
]]></description><pubDate>Fri, 06 Jun 2025 13:24:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=44200640</link><dc:creator>narnarpapadaddy</dc:creator><comments>https://news.ycombinator.com/item?id=44200640</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44200640</guid></item><item><title><![CDATA[New comment by narnarpapadaddy in "Interviewing a software engineer who prepared with AI"]]></title><description><![CDATA[
<p>Yes, but we had that problem before when somebody would farm out coding assignments to a friend. I couldn’t say yet how it’s impacted the coding assignment’s effectiveness as a filter yet. We still do get crap code just sometimes it’s obviously AI generated.</p>
]]></description><pubDate>Tue, 08 Apr 2025 13:53:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=43621813</link><dc:creator>narnarpapadaddy</dc:creator><comments>https://news.ycombinator.com/item?id=43621813</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43621813</guid></item><item><title><![CDATA[New comment by narnarpapadaddy in "Interviewing a software engineer who prepared with AI"]]></title><description><![CDATA[
<p>We still do a coding assignment, but a significant chunk of the technical interview is dedicated to a walkthrough of the code. Thus far, that’s been able to detect those who relied solely on AI.<p>…If you used AI and can still explain to me why code works and what it does, even better. You have learned how to use new tools.<p>(have not tried the randomized question approach to compare, but I’m curious to try it and see what happens)</p>
]]></description><pubDate>Mon, 07 Apr 2025 22:26:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=43616626</link><dc:creator>narnarpapadaddy</dc:creator><comments>https://news.ycombinator.com/item?id=43616626</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43616626</guid></item><item><title><![CDATA[New comment by narnarpapadaddy in "Clean Code vs. A Philosophy Of Software Design"]]></title><description><![CDATA[
<p>Appreciate the charitable interpretation. Both “complexity“ and “abstraction” take many different forms in software, and exceptions to the rule-of-thumb abound so it’s easy to come up with counter examples. Regardless, thinking in terms of complexity ratios has been a useful perspective for me. :)<p>IMO, a function _can_ be an interface in the broadest sense of that term. You’re just giving a name to some set of code you’d like to reuse or hide.</p>
]]></description><pubDate>Wed, 26 Feb 2025 15:00:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=43184228</link><dc:creator>narnarpapadaddy</dc:creator><comments>https://news.ycombinator.com/item?id=43184228</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43184228</guid></item><item><title><![CDATA[New comment by narnarpapadaddy in "Clean Code vs. A Philosophy Of Software Design"]]></title><description><![CDATA[
<p>You’re right, I suggested two different dimensions of complexity there as a lens into how much complexity a function contains. But I think the principle holds for either dimension.<p>I don’t think you need only 20 test cases for open(). Sometimes, more than 20 is valid because you’re saving across some other dimension of complexity. That happens and I don’t dispute it.<p>But the fact that you need >20 raises the question: is open() a good API?<p>I’m not making any particular judgment about open(), but what constitutes a good file API is hotly contested. So, for me, that example is validation of the principle: here’s an API that’s behaviorally complex and disputed. That’s exactly what I’m suggesting would happen.<p>Does that help clarify?</p>
]]></description><pubDate>Tue, 25 Feb 2025 15:57:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=43173531</link><dc:creator>narnarpapadaddy</dc:creator><comments>https://news.ycombinator.com/item?id=43173531</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43173531</guid></item><item><title><![CDATA[New comment by narnarpapadaddy in "Clean Code vs. A Philosophy Of Software Design"]]></title><description><![CDATA[
<p>When doing the initial design start in the middle of the complexity to abstraction budget. If you have 100 “units of complexity” (lines of code, conditions, states, classes, use cases, whatever)  try to find 10 subdivisions of 10 units each. Rarely, you’ll have a one-off. Sometimes, you’ll end up with more than 20 in a group. Mostly, you should have 5-20 groups of 5-20 units.<p>If you start there, you have room for your abstraction to bend before it becomes too brittle and you need to refactor.<p>Almost never is an interface worth it for 1 implementation, sometimes for 3, often for 5-20, sometimes for >20.<p>The trick is recognizing both a “unit of complexity” and how many “units” a given abstraction covers. And, of course, different units might be in tension and you have to make a judgement call. It’s not a silver bullet. Just a useful (for me at least) framing for thinking about how to manage complexity.</p>
]]></description><pubDate>Tue, 25 Feb 2025 15:46:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=43173395</link><dc:creator>narnarpapadaddy</dc:creator><comments>https://news.ycombinator.com/item?id=43173395</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43173395</guid></item><item><title><![CDATA[New comment by narnarpapadaddy in "Clean Code vs. A Philosophy Of Software Design"]]></title><description><![CDATA[
<p>And with respect to function behavior, I’d view it through the lens of cyclomatic complexity.<p>Do I need 5-20 non-trivial test cases to cover the range of inputs this function accepts?<p>If yes, function is probably about the right level of behavioral complexity to add value and not overhead.<p>If I need only 1 test or if I need 200 tests it’s probably doing too much or too little.</p>
]]></description><pubDate>Tue, 25 Feb 2025 14:21:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=43172182</link><dc:creator>narnarpapadaddy</dc:creator><comments>https://news.ycombinator.com/item?id=43172182</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43172182</guid></item><item><title><![CDATA[New comment by narnarpapadaddy in "Clean Code vs. A Philosophy Of Software Design"]]></title><description><![CDATA[
<p>Think of it more like a “complexity distribution.”<p>Rarely, a function with a single line or an interface with a single element or a class hierarchy with a single parent and child is useful. Mostly, that abstraction is overhead.<p>Often, a function with 5-20 lines or an interface 5-20 members or a class hierarchy with 5-20 children is a useful abstraction. That’s the sweet spot between too broad (function “doStuff”) and too narrow (function “callMomOnTheLandLine”).<p>Sometimes, any of the above with the >20:1 complexity ratio are useful.<p>It’s not a hard and fast rule. If your complexity ratio falls outside that range, think twice about your abstraction.</p>
]]></description><pubDate>Tue, 25 Feb 2025 14:15:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=43172103</link><dc:creator>narnarpapadaddy</dc:creator><comments>https://news.ycombinator.com/item?id=43172103</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43172103</guid></item><item><title><![CDATA[New comment by narnarpapadaddy in "Clean Code vs. A Philosophy Of Software Design"]]></title><description><![CDATA[
<p>Implicitly, IIRC, the optimal ratio is 5-20:1. Your interface must cover 5-20 cases for it have value. Any fewer, the additional abstraction is unneeded complexity. Any more, and your abstraction is likely too broad to be useful/understandable. The example he gives specifically was considering the number of subclasses in a hierarchy.<p>It’s like a secret unlock code for domain modeling. Or deciding how long functions should be (5-20 lines, with exceptions).<p>I agree, hugely usual principle.</p>
]]></description><pubDate>Tue, 25 Feb 2025 03:20:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=43167731</link><dc:creator>narnarpapadaddy</dc:creator><comments>https://news.ycombinator.com/item?id=43167731</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43167731</guid></item><item><title><![CDATA[New comment by narnarpapadaddy in "Trying out Zed after more than a decade of Vim/Neovim"]]></title><description><![CDATA[
<p>Appreciate the response. I viewed it more as a question about scope rather than preference.<p>At mega-scale, even IDE based tools are skipped in favor of automated tools such as Refaster/OpenRewrite that can refactor 10s of millions of lines of code at once.<p>I do find myself occasionally using, say, a regex find/replace to change something project wide. But most of the time (95% to put some arbitrary number on it), once I’m beyond the scope of single function, I use AST-based tools to ensure changes are correctly reflected in other files or parts of the project.<p>So, I’m trying understand to who lives in my 5% long enough that they the need what is essentially a highly specialized regex. Are they doing cross-project changes based on text? Do they have giant functions where that’s not a concern? Are their projects just smaller and they have many of them?<p>I definitely see the allure of having a smaller, faster editor. How far are people actually able to push that paradigm?</p>
]]></description><pubDate>Sun, 02 Feb 2025 02:26:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=42905053</link><dc:creator>narnarpapadaddy</dc:creator><comments>https://news.ycombinator.com/item?id=42905053</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42905053</guid></item><item><title><![CDATA[New comment by narnarpapadaddy in "Trying out Zed after more than a decade of Vim/Neovim"]]></title><description><![CDATA[
<p>I think I understand the use case for a smart surround plugin like this; I watched the demo video and saw and lot of picking-and-pulling text.<p>What I don’t understand is the development workflow that includes so much text manipulation. If you’re writing new code, there’s nothing to manipulate. If you’re refactoring existing code, wouldn’t you want the support typical AST-based refactoring tools provide? Where’s the sweet spot where shuffling strings around makes sense?<p>That’s not sarcasm. I’m genuinely asking.</p>
]]></description><pubDate>Sat, 25 Jan 2025 04:36:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=42819536</link><dc:creator>narnarpapadaddy</dc:creator><comments>https://news.ycombinator.com/item?id=42819536</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42819536</guid></item><item><title><![CDATA[New comment by narnarpapadaddy in "Meta announces 5% cuts in preparation for 'intense year'"]]></title><description><![CDATA[
<p>Personally, I think it’s both. Yes, the strategy is important but it’s nothing without the ability to execute. And we’ve all worked with the god-tier engineer who creates never-ending boondoggles because they can. And, yes, the larger the org the harder it is to get both strategy and execution aligned at once.</p>
]]></description><pubDate>Wed, 15 Jan 2025 18:01:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=42714589</link><dc:creator>narnarpapadaddy</dc:creator><comments>https://news.ycombinator.com/item?id=42714589</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42714589</guid></item><item><title><![CDATA[New comment by narnarpapadaddy in "Meta announces 5% cuts in preparation for 'intense year'"]]></title><description><![CDATA[
<p>Relative to your competition.<p>Performance is only adequate if it’s at least as good as the engineers of the other players in your industry. Otherwise, you’re losing ground. As long as anyone in your market space is actively trying to manage their engineering talent (recruiting your top performers, releasing low performers, being more selective in hiring) so must you just to keep pace. An “adequate” engineer may make the company money, but the opportunity cost of not hiring someone better who could make even more money can be higher still.</p>
]]></description><pubDate>Wed, 15 Jan 2025 04:43:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=42707394</link><dc:creator>narnarpapadaddy</dc:creator><comments>https://news.ycombinator.com/item?id=42707394</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42707394</guid></item></channel></rss>