<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: billmcneale</title><link>https://news.ycombinator.com/user?id=billmcneale</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Fri, 01 May 2026 20:11:28 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=billmcneale" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by billmcneale in "What's New in C# 14: Null-Conditional Assignments"]]></title><description><![CDATA[
<p>> if (customer?.Profile is not null) 
>{
>    // Null-coalescing (??)
>    customer.Profile.Avatar = request.Avatar ?? "./default-avatar.jpg";
>}<p>Isn't this over engineered? Why not allow the assignment but do nothing if any of the intermediate objects is null (that's how Kotlin does it).</p>
]]></description><pubDate>Thu, 18 Sep 2025 00:05:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=45283086</link><dc:creator>billmcneale</dc:creator><comments>https://news.ycombinator.com/item?id=45283086</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45283086</guid></item><item><title><![CDATA[New comment by billmcneale in "Zig Interface Revisited"]]></title><description><![CDATA[
<p>Why is Zig so inconsistent in its syntax?<p>We see:<p><pre><code>    pub fn implBy
</code></pre>
Camel case<p><pre><code>    (impl_obj: anytype) 
</code></pre>
Snake case<p><pre><code>    v_setLevel
</code></pre>
Mix of camel case and snake case<p><pre><code>    anyopaque
</code></pre>
whatever that is</p>
]]></description><pubDate>Sun, 20 Jul 2025 04:42:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=44622045</link><dc:creator>billmcneale</dc:creator><comments>https://news.ycombinator.com/item?id=44622045</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44622045</guid></item><item><title><![CDATA[New comment by billmcneale in "Mill: A better build tool for Java, Scala, and Kotlin"]]></title><description><![CDATA[
<p>Yeah, hard to see how better this is than Gradle. If anything, it's worse by the mere fact this is Scala, but it's really so incredibly verbose to accomplish basic tasks such as upload to Sonatype.</p>
]]></description><pubDate>Wed, 16 Jul 2025 18:08:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=44585220</link><dc:creator>billmcneale</dc:creator><comments>https://news.ycombinator.com/item?id=44585220</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44585220</guid></item><item><title><![CDATA[New comment by billmcneale in "Reflections on OpenAI"]]></title><description><![CDATA[
<p>I am convinced!<p>Which god should I believe in, though? There are so many.<p>And what if I pick the wrong god?</p>
]]></description><pubDate>Wed, 16 Jul 2025 05:21:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=44578940</link><dc:creator>billmcneale</dc:creator><comments>https://news.ycombinator.com/item?id=44578940</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44578940</guid></item><item><title><![CDATA[New comment by billmcneale in "Bypassing Google's big anti-adblock update"]]></title><description><![CDATA[
<p>Not everyone has your luxury of being able to choose their tools.</p>
]]></description><pubDate>Sun, 13 Jul 2025 04:51:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=44547619</link><dc:creator>billmcneale</dc:creator><comments>https://news.ycombinator.com/item?id=44547619</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44547619</guid></item><item><title><![CDATA[New comment by billmcneale in "A list is a monad"]]></title><description><![CDATA[
<p>But the whole promise of monads is precisely that they are a type that can compose.<p>It basically allows you to pipe successive function calls returning different types by lifting these types into a monad.<p>Don't get me wrong, that promise is very powerful and in the rare few cases where it works, it unlocks beautiful composition, but the simple truth is that monads are really not that useful outside of Haskell (and I'd say, it's even questionable within).</p>
]]></description><pubDate>Wed, 02 Jul 2025 21:36:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=44449109</link><dc:creator>billmcneale</dc:creator><comments>https://news.ycombinator.com/item?id=44449109</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44449109</guid></item><item><title><![CDATA[New comment by billmcneale in "A list is a monad"]]></title><description><![CDATA[
<p>>  That's why the pattern is so useful in the first place<p>How useful, really? Monads don't even universally compose, which is what most people sell the concept for.</p>
]]></description><pubDate>Wed, 02 Jul 2025 19:16:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=44447713</link><dc:creator>billmcneale</dc:creator><comments>https://news.ycombinator.com/item?id=44447713</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44447713</guid></item><item><title><![CDATA[New comment by billmcneale in "MCP: An (Accidentally) Universal Plugin System"]]></title><description><![CDATA[
<p>COM is exactly what OP was talking about.<p>Apps can expose endpoints that can be listed, and external processes can call these endpoints.</p>
]]></description><pubDate>Sun, 29 Jun 2025 00:30:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=44409332</link><dc:creator>billmcneale</dc:creator><comments>https://news.ycombinator.com/item?id=44409332</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44409332</guid></item><item><title><![CDATA[New comment by billmcneale in "MCP: An (Accidentally) Universal Plugin System"]]></title><description><![CDATA[
<p>Microsoft introduced this in Windows in 1993, it's called COM and is still in (heavy) use today.<p>It basically powers all inter communication in Windows.</p>
]]></description><pubDate>Sat, 28 Jun 2025 18:04:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=44406790</link><dc:creator>billmcneale</dc:creator><comments>https://news.ycombinator.com/item?id=44406790</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44406790</guid></item><item><title><![CDATA[New comment by billmcneale in "Public/protected/private is an unnecessary feature"]]></title><description><![CDATA[
<p>The question is not whether it can be done (of course it can) but rather, what is the more elegant approach.<p>There is plenty of evidence that OOP provides some flexible, extensible, and intuitive ways to design GUI libraries.<p>I have personal experience that OOP can be the better approach in other fields too (such as overriding a specific method of a larger structure).</p>
]]></description><pubDate>Fri, 20 Jun 2025 15:09:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=44328455</link><dc:creator>billmcneale</dc:creator><comments>https://news.ycombinator.com/item?id=44328455</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44328455</guid></item><item><title><![CDATA[New comment by billmcneale in "Denuvo Analysis"]]></title><description><![CDATA[
<p>A lot of that verbiage is absurd exaggerations and most of these things never became true.<p>> Being in denial about this isn't an excuse for these problems.<p>I'm not in denial, I know exactly what Denuvo entails. Whenever I buy a game with Denuvo (which pretty much never happens any more), I know exactly what I'm giving away, and I'm doing so because I'm getting something in return.<p>Similar situation to someone dropping their business card in a jar at the exit of a restaurant with the hope they'll win a free meal. They give a bit of personal information because they think they'll receive more in return.<p>You don't get to take away the choice of customers to decide how to manage their information.<p>As long as everyone is free to make that choice, nobody is getting hurt and the market forces will ultimately land on an equilibrium, like we have today.</p>
]]></description><pubDate>Wed, 11 Jun 2025 16:12:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=44249098</link><dc:creator>billmcneale</dc:creator><comments>https://news.ycombinator.com/item?id=44249098</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44249098</guid></item><item><title><![CDATA[New comment by billmcneale in "Denuvo Analysis"]]></title><description><![CDATA[
<p>>  I don't believe that "whenever [I'm] playing and enjoying a game" it was "most likely" created thanks to Denuvo<p>I never made that claim, please reread what I wrote, but here is my point again.<p>When you play a game from a publisher, they were able to create it because their previous games sold well. Therefore, anything that allows games to sell well is a positive for the entire gaming community, creators and players.<p>Denuvo is an important part of this picture, but it's obviously not the only one.<p>> And then there are people like me who simply refuse to play any game which uses Denuvo. There are thousands of excellent games out there, why should I waste time on those which treat me as a thief?<p>That's great, and I do that as well. And this is one of the reasons why Denuvo is not anti-user: everyone has the choice to not support it.</p>
]]></description><pubDate>Wed, 11 Jun 2025 12:49:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=44247073</link><dc:creator>billmcneale</dc:creator><comments>https://news.ycombinator.com/item?id=44247073</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44247073</guid></item><item><title><![CDATA[New comment by billmcneale in "Denuvo Analysis"]]></title><description><![CDATA[
<p>>  Are you going to be OK with that just because it's some corpo doing it and not the government?<p>If I willingly let them in my home and I knew they were going to do that? I don't really have the option to complain, do I?<p>Your analogy doesn't make sense. People buy the game, Denuvo is clearly advertised on it. They have the option to not buy the game. Period. It's not overreach if I willingly accepted the reach.<p>> So to sum it up, DRM is always anti user in many senses.<p>How do you reconcile this claim with the fact that Denuvo games sell by the millions every month?</p>
]]></description><pubDate>Wed, 11 Jun 2025 12:45:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=44247041</link><dc:creator>billmcneale</dc:creator><comments>https://news.ycombinator.com/item?id=44247041</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44247041</guid></item><item><title><![CDATA[New comment by billmcneale in "Denuvo Analysis"]]></title><description><![CDATA[
<p>>  by its mere definition it's always aimed against the user, therefore it's always an anti-feature.<p>Describing it as "anti user" is theoretically correct but practically incorrect. It's true that it might prevent mods and possible future uses if the servers go down, but in practice, users don't care, as is demonstrated by the fact that games that contain Denuvo routinely sell in the millions and users have no idea it's even there, and they will never know.<p>Overreaching?<p>I don't know. Companies put out a product, you're free not to buy it if you don't like it. That's one of the reasons why I call this natural market forces.<p>> So conceptually it's not any better than what fourth amendment is aimed to prevent.<p>That's a gross exaggeration. The Fourth amendment is about unreasonable searches by the government, I completely fail to see how willingly buying a digital product from non governmental organizations is connected to Fourth amendment in any rational way.<p>Again, at the end of the day, nobody forces you to buy that product, hence "natural market forces".<p>The fact that millions of these games are being bought every month tells me users don't feel that whatever flaws, perceived or real, Denuvo has matters less to them than playing these games.</p>
]]></description><pubDate>Wed, 11 Jun 2025 04:07:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=44244115</link><dc:creator>billmcneale</dc:creator><comments>https://news.ycombinator.com/item?id=44244115</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44244115</guid></item><item><title><![CDATA[New comment by billmcneale in "Denuvo Analysis"]]></title><description><![CDATA[
<p>>  it's an anti-user feature by definition.<p>That's an extremely naive take that shows some stark ignorance of the tech and market forces at work.<p>From a tech standpoint, Denuvo negatively impacting performance has been debunked many times over (see my previous post about that).<p>On the economical side, you need to realize that whenever you are playing and enjoying a game, it's most likely due to the fact that the previous games sold by that developer have been successful in making money, which was most likely made possible by Denuvo.<p>In other words, making piracy harder allows the next generation of games to be created.</p>
]]></description><pubDate>Wed, 11 Jun 2025 01:39:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=44243390</link><dc:creator>billmcneale</dc:creator><comments>https://news.ycombinator.com/item?id=44243390</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44243390</guid></item><item><title><![CDATA[New comment by billmcneale in "Denuvo Analysis"]]></title><description><![CDATA[
<p>> Worth noting that denuvo causes a lot of hitching, massive load time increases and overall performance problems.<p>There is pretty much zero evidence that this is true and some credible evidence that it is untrue.<p>For example, plenty of games have had Denuvo removed after a few months by the publisher and showed zero improvement in performance.<p>This fake narrative is being pushed by software pirates bitter that Denuvo is being so effective at preventing them from stealing games.</p>
]]></description><pubDate>Wed, 11 Jun 2025 01:34:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=44243373</link><dc:creator>billmcneale</dc:creator><comments>https://news.ycombinator.com/item?id=44243373</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44243373</guid></item><item><title><![CDATA[New comment by billmcneale in "(On | No) Syntactic Support for Error Handling"]]></title><description><![CDATA[
<p>> If a function fails, then you need to handle its failure<p>And this is exactly where Go fails, because it allows you 
 to completely ignore the error, which will lead to a crash.<p>I'm a bit baffled that you correctly identified that this is a requirement to produce robust software and yet, you like Go's error handling approach...</p>
]]></description><pubDate>Tue, 03 Jun 2025 20:22:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=44174296</link><dc:creator>billmcneale</dc:creator><comments>https://news.ycombinator.com/item?id=44174296</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44174296</guid></item><item><title><![CDATA[New comment by billmcneale in "Push Ifs Up and Fors Down"]]></title><description><![CDATA[
<p>These are some pretty arbitrary rules without much justification, quite reminiscent of the Clean Code fad.</p>
]]></description><pubDate>Sun, 18 May 2025 03:16:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=44018757</link><dc:creator>billmcneale</dc:creator><comments>https://news.ycombinator.com/item?id=44018757</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44018757</guid></item><item><title><![CDATA[New comment by billmcneale in "Java at 30: Interview with James Gosling"]]></title><description><![CDATA[
<p>> dynamic language like Kotlin and Clojure,<p>Kotlin is not a dynamic language, it's statically typed, just like Java.</p>
]]></description><pubDate>Sat, 17 May 2025 03:58:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=44011945</link><dc:creator>billmcneale</dc:creator><comments>https://news.ycombinator.com/item?id=44011945</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44011945</guid></item><item><title><![CDATA[New comment by billmcneale in "Refactoring Clojure"]]></title><description><![CDATA[
<p>> Our mission is to take this code and make it readable:<p>Anyone else finding some irony in the fact that the provided code is unreadable not because of its structure but because of the highlight colors?</p>
]]></description><pubDate>Fri, 16 May 2025 04:58:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=44001972</link><dc:creator>billmcneale</dc:creator><comments>https://news.ycombinator.com/item?id=44001972</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44001972</guid></item></channel></rss>