<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: Darmani</title><link>https://news.ycombinator.com/user?id=Darmani</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 16 Apr 2026 05:27:25 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=Darmani" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by Darmani in "Slop is not necessarily the future"]]></title><description><![CDATA[
<p>I see where you're coming from.  I totally agree that how easy it is for a company to change a codebase depends on the talent it has. But i think you can separate the entire codebase+ecosystem+team codebase from the quality of the codebase itself.<p>To use a simple analogy: you could argue that a modern Macbook is easier to maintain than an old Dell desktop, if the Macbook is owned by a certified Apple technician who knows how to microsolder, and the old Dell desktop is owned by someone who doesn't know how to use a screwdriver. But that doesn't change that, to change a hard drive, one needs much more skill and fancier tools than the other.</p>
]]></description><pubDate>Fri, 10 Apr 2026 18:14:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=47721741</link><dc:creator>Darmani</dc:creator><comments>https://news.ycombinator.com/item?id=47721741</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47721741</guid></item><item><title><![CDATA[New comment by Darmani in "Slop is not necessarily the future"]]></title><description><![CDATA[
<p>> Code evolvability is almost entirely subjective<p>Explain how?<p>Code evolvability is one of the extrinsic quality markers ( <a href="https://www.pathsensitive.com/2023/07/the-11-aspects-of-good-code.html" rel="nofollow">https://www.pathsensitive.com/2023/07/the-11-aspects-of-good...</a> ).<p>If it's easy to add new features without creating bugs, the code is evolvable. Else, it's not. Does not seem very subjective.</p>
]]></description><pubDate>Wed, 01 Apr 2026 09:32:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=47598701</link><dc:creator>Darmani</dc:creator><comments>https://news.ycombinator.com/item?id=47598701</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47598701</guid></item><item><title><![CDATA[New comment by Darmani in "4D Doom"]]></title><description><![CDATA[
<p>Fun fact: William Sleator's brother is the famous computer scientist Danny Sleator, inventor of the splay tree.</p>
]]></description><pubDate>Wed, 01 Apr 2026 00:38:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=47595340</link><dc:creator>Darmani</dc:creator><comments>https://news.ycombinator.com/item?id=47595340</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47595340</guid></item><item><title><![CDATA[New comment by Darmani in "Slop is not necessarily the future"]]></title><description><![CDATA[
<p>Okay, I admit I went too hard on that one to fight against the OP. I too get extreme pleasure from condensing a 300-line function into 30 lines of simplicity, even when practical considerations (it has a clean interface and no-one's even needed to open this file in 2 years) would dictate elegance there is not helpful.</p>
]]></description><pubDate>Tue, 31 Mar 2026 21:42:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=47593853</link><dc:creator>Darmani</dc:creator><comments>https://news.ycombinator.com/item?id=47593853</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47593853</guid></item><item><title><![CDATA[New comment by Darmani in "Slop is not necessarily the future"]]></title><description><![CDATA[
<p>No-one comes out of the womb caring about code quality. People learn to care about the craft precisely because <i>internal quality</i> -- cohesion, modularity, robustness -- leads to <i>external quality</i>  (correctness, speed, evolvability).<p>People who care about code quality are not artists who want to paint on the company's dime. They are people who care about shipping a product deeply enough to make sure that doing so is a pleasant experience both for themselves and their colleagues, and also have the maturity to do a little bit more thinking today, so that next week they can make better decisions without thinking, so that they don't get called at 4 AM the night after launch for some emergency debugging of an issue that that really should have been impossible if it was properly designed.<p>> No one has ever made a purchasing decision based on how good your code is.<p>Usually they don't get to see the internals of the product, but they can make inferences based on its externals. You've heard plenty of products called a "vibe-coded piece of crap" this year, even if they're not open source.<p>But also, this is just not true. Code quality is a factor in lots of purchasing decisions.<p>When buying open source products, having your own team check out the repo is incredibly common. If there are glaring signs in the first 5 minutes that it was hacked together, your chances of getting the sale have gone way down. In the largest deals, inspecting the source code<p>It was for an investment decision rather than for a purchase, but I've been personally hired to do some "emergency API design" so a company can show that it both has the thing being designed, and that their design is good.</p>
]]></description><pubDate>Tue, 31 Mar 2026 19:06:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=47591983</link><dc:creator>Darmani</dc:creator><comments>https://news.ycombinator.com/item?id=47591983</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47591983</guid></item><item><title><![CDATA[New comment by Darmani in "Bombadil: Property-based testing for web UIs"]]></title><description><![CDATA[
<p>Thanks for the reply Oskar!</p>
]]></description><pubDate>Mon, 23 Mar 2026 22:32:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=47496044</link><dc:creator>Darmani</dc:creator><comments>https://news.ycombinator.com/item?id=47496044</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47496044</guid></item><item><title><![CDATA[New comment by Darmani in "Bombadil: Property-based testing for web UIs"]]></title><description><![CDATA[
<p>Timely! I spent a good chunk of yesterday investigating Bombadil. I'm a huge fan of PBT and a huge fan of temporal logic (though not linear temporal logic) and we're currently trying to level up our QA, so it seemed like a good match.<p>Unfortunately, I concluded that <i>Bombadil is a toy</i>. Not as in "Does some very nice things, but missing the features for enterprise adoption." I mean that in a very strong sense, as in: <i>I could not figure out how to do anything real with it.</i><p>The place where this is most obvious is in its action generator type. You give it a function that generates actions, where each action is drawn from a small menu of choices like "scroll up this many pixel" or "click on this pixel." You cannot add new types of actions. If you want to click on a button, you need it to generate a sequence of actions to first scroll down enough, and then look up a pixel that's on that button.<p>Except that it selects actions randomly from your list, so you somehow need the action generator, when run the first time, to generate only the scroll action, and then have it, when run the second time, generate only the click action. If you are silly enough as to have an action generator that, you know, actually gives a list of reasonable actions, you'll get a tester that spends all its time going in circles clicking on the nav bar.<p>(Something in the docs claimed that actions are weighted, but I found nothing about an actual affordance for doing that. Having weights would make this go from basically impossible to somewhat impossible.)<p>(Edit: Found the weighted thing.)<p>I am terrified to imagine how to get Bombadil to fill out a form. At least that seems possible -- you can inspect the state of the web page to figure out what's already been filled out. But if you want the state to be based on anything not on the current page, like the action that you took on the previous page, or <i>gasp</i> the state on disk (as for an Electron app), that seems completely impossible. Action generators are based on the current state, and the state must be a pure function of the web page.<p>Its temporal logic has a cool time-bounded construct, but it's missing the U (until) operator. One of their few examples is "If you show the user a notification, it disappears within 5 seconds." But I want to say "When you click the Generate button, it says 'Generating...' up until it's finished generating." And I can't.<p>(Note: everything above is according to the docs. Hopefully everything I said is a limitation of the docs, not an actual limitation of the framework.)<p>I shared my comments with the author yesterday on LinkedIn, but he hasn't responded yet. Maybe I'll hear from him here.<p>I have a pretty positive opinion of Antithesis as a company and they seem to be investing seriously in it, and generally see it as a strong positive sign when someone knows what temporal logic is, so I have hopes for this framework. I am nonetheless disappointed that I can't use it now, especially because I was supposed to finish an internal GUI testing tool this week and my god I'm behind.</p>
]]></description><pubDate>Mon, 23 Mar 2026 19:09:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=47493809</link><dc:creator>Darmani</dc:creator><comments>https://news.ycombinator.com/item?id=47493809</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47493809</guid></item><item><title><![CDATA[New comment by Darmani in "Gloop – a self-modifying agent CLI and minimal agent SDK"]]></title><description><![CDATA[
<p>While the title sounds intriguing, I'd really like examples to explain what this is good for. The Github page has more information, but it's not helpful. "XML instead of JSON" -- okay, why? I thought the consensus was generally that JSON is a better data format than XML thanks to its compactness and simplicity.</p>
]]></description><pubDate>Wed, 11 Mar 2026 11:43:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=47334350</link><dc:creator>Darmani</dc:creator><comments>https://news.ycombinator.com/item?id=47334350</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47334350</guid></item><item><title><![CDATA[New comment by Darmani in "The grep-native language for agentic systems"]]></title><description><![CDATA[
<p>Reading the page, I'm left very confused what this is. Is it a new query language, or a new data format, or both? I think it's both. Am I expected to redo everything in this format? Like, get both my freeform planning notes about what to build and also my production Postgres DB in the same file? I don't even know how to begin doing that.</p>
]]></description><pubDate>Wed, 11 Mar 2026 11:35:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=47334282</link><dc:creator>Darmani</dc:creator><comments>https://news.ycombinator.com/item?id=47334282</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47334282</guid></item><item><title><![CDATA[New comment by Darmani in "Notes on Linear Algebra for Polynomials"]]></title><description><![CDATA[
<p>It's not in these notes, but you can do some super cool stuff with the linear algebra of polynomials. Using inner products, you can not only rederive linear regression, but also its polynomial generalizations, and even zany things like finding the best fit of the form ax^3+cx (missing x^2 and constant terms).</p>
]]></description><pubDate>Thu, 26 Feb 2026 13:32:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=47165827</link><dc:creator>Darmani</dc:creator><comments>https://news.ycombinator.com/item?id=47165827</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47165827</guid></item><item><title><![CDATA[New comment by Darmani in "Show HN: An automaton's code review of Gas Town with sycophancy-mode disabled"]]></title><description><![CDATA[
<p>People tend to read articles because the author is able to share insights that would be much harder -- whether in skill, time, or energy -- to come up with themselves.<p>But here you're asking to put the reader to put in more work than you did, to find an insight that may or may not be there.<p>What is your picture of the moment-by-moment thoughts of someone who would click this and upvote?</p>
]]></description><pubDate>Sat, 14 Feb 2026 23:41:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=47019571</link><dc:creator>Darmani</dc:creator><comments>https://news.ycombinator.com/item?id=47019571</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47019571</guid></item><item><title><![CDATA[New comment by Darmani in "CIA, Pentagon reviewed secret 'Havana syndrome' device in Norway, WaPo reports"]]></title><description><![CDATA[
<p>Two paragraph article here -- there isn't information to distinguish this from the negative placebo (nocebo) effect.</p>
]]></description><pubDate>Sat, 14 Feb 2026 20:23:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=47018024</link><dc:creator>Darmani</dc:creator><comments>https://news.ycombinator.com/item?id=47018024</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47018024</guid></item><item><title><![CDATA[New comment by Darmani in "Show HN: An automaton's code review of Gas Town with sycophancy-mode disabled"]]></title><description><![CDATA[
<p>I think this could work well as a blog post.  If you're not willing to read the code yourself, maybe you could at least go through the report yourself and point out issues it highlights, show the relevant code, and explain why that's actually bad.</p>
]]></description><pubDate>Sat, 14 Feb 2026 20:21:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=47018009</link><dc:creator>Darmani</dc:creator><comments>https://news.ycombinator.com/item?id=47018009</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47018009</guid></item><item><title><![CDATA[New comment by Darmani in "Show HN: PolyMCP – A framework for building and orchestrating MCP agents"]]></title><description><![CDATA[
<p>Sounds interesting. Can you share a link or videos?</p>
]]></description><pubDate>Sat, 14 Feb 2026 20:20:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=47017997</link><dc:creator>Darmani</dc:creator><comments>https://news.ycombinator.com/item?id=47017997</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47017997</guid></item><item><title><![CDATA[New comment by Darmani in "Most technical problems are people problems"]]></title><description><![CDATA[
<p>I can write a similar article that: most people problems are technical problems.<p>This article hits on a pet peeve of mine.<p>Many companies and individuals can benefit from better processes, communication skills, and training.<p>And also people who proclaim "Most technical problems are people problems" and "It's not what you know, it's who you know" are disproportionately those who are attempting to influence others that "My skillset is more valuable than your skillset." The people who believe the opposite are heads-down building.<p>The truth is that nearly all problems are multifactorial and involve long chains of causality. They can be patched at multiple points.<p>And so while there are standard stories about "If you do the 5 Why's and trace back causality, the issue becomes a deeper human problem," you can nearly always do something else and find an alternative technical solution.<p>The standard story goes: "This thing failed because this this other thing crashed, because this thing was misconfigured, because the deployment script was run incorrectly, because no-one trained Bob how to use it." See, the human problem is the deepest one, right?<p>But you can find an alternate technical fix: why was it possible to run the deployment script incorrectly?<p>Or you can ping-pong it back into a technical problem: he wasn't trained because everyone is stressed with no time because things keep breaking because of bad architecture and no CI. So actually the technical problem is deepest.<p>But no, because that only happened because the CEO hired the wrong CTO because he didn't know anyone who could evaluate it properly....<p>...which only happened because they didn't use <startup that helps you evaluate engineers> (technical problem)<p>...which only happened because said startup didn't have good enough marketing (human problem)<p>...which only happened because they were too slow to build from their own tech debt and didn't have the money (technical problem...)<p>And so on. Ping, pong.<p>The article says: we had too much tech debt because humans weren't trained enough.<p>One can also say: we had too much tech debt because we didn't have good enough linters and clone detectors to keep out the common problems, and also we had made some poor technical choices that required hiring a much larger team to begin with.<p>If you have a pet problem, you can always convince yourself that it's responsible for all woes. That just keeps you from seeing the holistic view and finding the best solution.</p>
]]></description><pubDate>Sat, 06 Dec 2025 03:34:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=46170412</link><dc:creator>Darmani</dc:creator><comments>https://news.ycombinator.com/item?id=46170412</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46170412</guid></item><item><title><![CDATA[New comment by Darmani in "Lenses in Julia"]]></title><description><![CDATA[
<p>I had a quick skim of the link you gave -- it looks to be the same as it was 6 years ago when I experienced this issue.<p>So basically:<p>Generic function F is defined in file A, and has a method definition DEF in file B.<p>File C imports files A and B, and then calls function G that internally uses generic function F. Somewhere internally, it winds up running F with method definition DEF.<p>You move DEF to file D, but don't update the imports of file B.<p>When file B calls G, it calls F with some default implementation instead of DEF, and then you get an error from function G.<p>Some details here might be wrong over how exactly to imports need to be set up, as I haven't used Julia being traumatized by it 6 years ago, but that's basically it.</p>
]]></description><pubDate>Mon, 03 Nov 2025 23:02:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=45805521</link><dc:creator>Darmani</dc:creator><comments>https://news.ycombinator.com/item?id=45805521</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45805521</guid></item><item><title><![CDATA[New comment by Darmani in "Lenses in Julia"]]></title><description><![CDATA[
<p>So<p>In Julia, the (+) function is commonly overloaded<p>The [] is as well. For things that have no shared interface. (E.g.: Int64[1][1] contains two calls to the [] generic function, which have no interface in common.)<p>Plenty of definitions of (+) are not commutative. E.g.: for strings.<p>There is some package which uses the (+) generic function internally, meant to be used on numbers. You call it instead with some kind of symbolic expression type. And it just works. Yay! This is the kind of stuff Julia afficcionados preach.<p>Then suddenly the package gets updated so that it uses (+) in a way which assumes commutativity.<p>Your code breaks.<p>In your world, how would you be notified of a change that some internal use of the (+) function now assumes commutativity?<p>Or when Julia afficionados preach the amazingness of being able to just throw a differential operator or matrix or symbolic whatever in a place, are they just overselling something and should stop?</p>
]]></description><pubDate>Mon, 03 Nov 2025 22:53:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=45805450</link><dc:creator>Darmani</dc:creator><comments>https://news.ycombinator.com/item?id=45805450</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45805450</guid></item><item><title><![CDATA[New comment by Darmani in "Lenses in Julia"]]></title><description><![CDATA[
<p>I've worked in about 40 languages and have a Ph. D. in the subject. Every language has problems, some I like, some I'm not fond of<p>There is only one language that I have an active hatred for, and that is Julia.<p>Imagine you try to move a definition from one file to another. Sounds like a trivial piece of organization, right?<p>In Julia, this is a hard problem, and you can wind up getting crashes deep in someone else's code.<p>The reason is that this causes modules that don't import the new file to have different implementations of the same generic function in scope. Julia features the ability to run libraries on data types they were never designed for. But unlike civilized languages such as C++, this is done by randomly overriding a bunch of functions to do things they were not designed to do, and then hoping the library uses them in a way that produces the result you want. There is no way to guarantee this without reading the library in detail. Also no kind of semantic versioning that can tell you when the library has a breaking change or not, as almost any kind of change becomes a potentially-breaking change when you code like this.<p>This is a problem unique to Julia.<p>I brought up to the Julia creators that methods of the same interface should share common properties. This is a very basic principle of generic programming.<p>One of them responded with personal insults.<p>I'm not the only one with such experiences. Dan Luu wrote this piece 10 years ago, but the appendix shows the concerns have not been addressed: <a href="https://danluu.com/julialang/" rel="nofollow">https://danluu.com/julialang/</a></p>
]]></description><pubDate>Fri, 31 Oct 2025 05:28:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=45768702</link><dc:creator>Darmani</dc:creator><comments>https://news.ycombinator.com/item?id=45768702</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45768702</guid></item><item><title><![CDATA[New comment by Darmani in "Modeling Others' Minds as Code"]]></title><description><![CDATA[
<p>Au contraire. DreamCoder is a stupendous work. <a href="https://dl.acm.org/doi/pdf/10.1145/3453483.3454080" rel="nofollow">https://dl.acm.org/doi/pdf/10.1145/3453483.3454080</a></p>
]]></description><pubDate>Mon, 20 Oct 2025 20:11:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=45648684</link><dc:creator>Darmani</dc:creator><comments>https://news.ycombinator.com/item?id=45648684</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45648684</guid></item><item><title><![CDATA[New comment by Darmani in "Every vibe-coded website is the same page with different words. So I made that"]]></title><description><![CDATA[
<p>I had been thinking about things along those lines. I might do that as a separate site. Perhaps with regular resets, and with something to keep 4chan out.</p>
]]></description><pubDate>Sat, 18 Oct 2025 07:27:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=45625582</link><dc:creator>Darmani</dc:creator><comments>https://news.ycombinator.com/item?id=45625582</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45625582</guid></item></channel></rss>