<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: ackfoobar</title><link>https://news.ycombinator.com/user?id=ackfoobar</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 19 Oct 2026 06:35:52 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=ackfoobar" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by ackfoobar in "Java sealed classes and exhaustive pattern matching"]]></title><description><![CDATA[
<p>This is perhaps why the comment added "Just like Martin Odersky intended it to be!"<p>There are just too many ways to use Scala, and everyone thinks they're doing it "idiomatically".</p>
]]></description><pubDate>Sun, 18 Oct 2026 20:13:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=50145008</link><dc:creator>ackfoobar</dc:creator><comments>https://news.ycombinator.com/item?id=50145008</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50145008</guid></item><item><title><![CDATA[New comment by ackfoobar in "Java sealed classes and exhaustive pattern matching"]]></title><description><![CDATA[
<p>Pattern matching with only positional destructuring is a bad feature. I've written enough Scala to say this with confidence.</p>
]]></description><pubDate>Sun, 18 Oct 2026 20:10:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=50144966</link><dc:creator>ackfoobar</dc:creator><comments>https://news.ycombinator.com/item?id=50144966</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50144966</guid></item><item><title><![CDATA[New comment by ackfoobar in "Go Concurrency Distilled"]]></title><description><![CDATA[
<p>>> state of the art GCs<p>> That just isn't true<p>Generational ZGC is free for everyone to use.</p>
]]></description><pubDate>Mon, 28 Sep 2026 00:35:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=49872251</link><dc:creator>ackfoobar</dc:creator><comments>https://news.ycombinator.com/item?id=49872251</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49872251</guid></item><item><title><![CDATA[New comment by ackfoobar in "Go Concurrency Distilled"]]></title><description><![CDATA[
<p>>> Preemptive scheduling plus M:N mapping<p>AFAIK, in the current implementation, Java's virtual threads yields only when they block (cooperative). But the spec allows a JVM to implement them as preemptive.</p>
]]></description><pubDate>Sun, 27 Sep 2026 06:29:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=49863928</link><dc:creator>ackfoobar</dc:creator><comments>https://news.ycombinator.com/item?id=49863928</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49863928</guid></item><item><title><![CDATA[New comment by ackfoobar in "Go Concurrency Distilled"]]></title><description><![CDATA[
<p>Kotlin's coroutines basically had the same API as Go's. But also the ability to confine some coroutines' execution into certain threads (e.g. UI main thread).<p>Then they added structured concurrency, which roughly solves the same problem as Go's context, arguably more elegantly.</p>
]]></description><pubDate>Sun, 27 Sep 2026 06:24:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=49863900</link><dc:creator>ackfoobar</dc:creator><comments>https://news.ycombinator.com/item?id=49863900</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49863900</guid></item><item><title><![CDATA[New comment by ackfoobar in "Java 27"]]></title><description><![CDATA[
<p>> it took like 2 weeks to ramp up<p>I worked on a purely functional Scala codebase (Cats). I joined after the original authors were gone.<p>Some new comers were not fluent in it after ~a year.</p>
]]></description><pubDate>Thu, 17 Sep 2026 01:59:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=49735548</link><dc:creator>ackfoobar</dc:creator><comments>https://news.ycombinator.com/item?id=49735548</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49735548</guid></item><item><title><![CDATA[New comment by ackfoobar in "Where did all the public bathrooms go?"]]></title><description><![CDATA[
<p>This might be the your missing puzzle piece:<p><a href="https://en.wikipedia.org/wiki/Committee_to_End_Pay_Toilets_in_America" rel="nofollow">https://en.wikipedia.org/wiki/Committee_to_End_Pay_Toilets_i...</a></p>
]]></description><pubDate>Tue, 25 Aug 2026 19:29:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=49439371</link><dc:creator>ackfoobar</dc:creator><comments>https://news.ycombinator.com/item?id=49439371</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49439371</guid></item><item><title><![CDATA[New comment by ackfoobar in "Where did all the public bathrooms go?"]]></title><description><![CDATA[
<p>You are of course right about what the word "commons" refers to. Still, I want to quibble.<p>Maybe the definition covers both, but I still think it's worth distinguishing between incentives creating a bad equilibrium and simply antisocial behaviours. When I hear "tragedy of the commons", I think of the former.</p>
]]></description><pubDate>Tue, 25 Aug 2026 19:07:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=49439024</link><dc:creator>ackfoobar</dc:creator><comments>https://news.ycombinator.com/item?id=49439024</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49439024</guid></item><item><title><![CDATA[New comment by ackfoobar in "My thoughts on the Bun Rust rewrite"]]></title><description><![CDATA[
<p>> stuck to why he thought it was bad for Bun to do this<p>Quite the opposite. "When Jarred announced the Rust rewrite, we were ecstatic."<p>> It’s definitionally an ad hominem against Jared.<p>Who Jarred is, as a CEO, definitely has an impact on how the company develops software - how Zig is used. And the argument is that Zig is used badly in Bun. Without that context, I, as a reader, would have to actually read through a lot of code to be convinced of that point.</p>
]]></description><pubDate>Fri, 10 Jul 2026 03:48:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=48855540</link><dc:creator>ackfoobar</dc:creator><comments>https://news.ycombinator.com/item?id=48855540</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48855540</guid></item><item><title><![CDATA[New comment by ackfoobar in "A case against currying"]]></title><description><![CDATA[
<p>Coming from Scala to Kotlin, this is what I thought as well. Seeing `it` felt very wrong, then I got used to it.</p>
]]></description><pubDate>Sun, 22 Mar 2026 18:28:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=47480559</link><dc:creator>ackfoobar</dc:creator><comments>https://news.ycombinator.com/item?id=47480559</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47480559</guid></item><item><title><![CDATA[New comment by ackfoobar in "A case against currying"]]></title><description><![CDATA[
<p>As noted in the article:<p>> This feature does have some limitations, for instance when we have multiple nested function calls, but in those cases an explicit lambda expression is always still possible.<p>I've also complained about that a while ago <a href="https://news.ycombinator.com/item?id=35707689">https://news.ycombinator.com/item?id=35707689</a><p>---<p>The solution is to delimit the level of expression the underscore (or dollar sign suggested in the article) belongs to. In Kotlin they use braces and `it`.<p><pre><code>    { add(it, 3) } // Kotiln
    add(_, 3) // Scala
</code></pre>
Then modifying the "hole in the expression" is easy. Suppose we want to subtract the first argument by 2 before passing that to `add`:<p><pre><code>    { add(subtract(it, 2), 3) } // Kotlin
    // add(subtract(_, 2), 3) // no, this means adding 3 to the function `add(subtract(_, 2)`
    x => { add(subtract(x, 2), 3) } // Scala</code></pre></p>
]]></description><pubDate>Sun, 22 Mar 2026 18:10:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=47480369</link><dc:creator>ackfoobar</dc:creator><comments>https://news.ycombinator.com/item?id=47480369</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47480369</guid></item><item><title><![CDATA[New comment by ackfoobar in "A case against currying"]]></title><description><![CDATA[
<p>> explicitly written to do this<p>In that case I want the signature of "this function pre-computes, then returns another function" and "this function takes two arguments" to be different, to show intent.<p>> achieved through compiler optimisation<p>Haskell is different in that its evaluation ordering allows this. But in strict evaluation languages, this is much harder, or even forbidden by language semantics.<p>Here's what Yaron Minsky (an OCaml guy) has to say:<p>> starting from scratch, I’d avoid partial application as the default way of building multi-argument functions.<p><a href="https://discuss.ocaml.org/t/reason-general-function-syntax-discussion/537/23" rel="nofollow">https://discuss.ocaml.org/t/reason-general-function-syntax-d...</a></p>
]]></description><pubDate>Sun, 22 Mar 2026 17:50:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=47480139</link><dc:creator>ackfoobar</dc:creator><comments>https://news.ycombinator.com/item?id=47480139</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47480139</guid></item><item><title><![CDATA[New comment by ackfoobar in "Java is fast, code might not be"]]></title><description><![CDATA[
<p>The premise of this joke is dead since 2020, when ZGC was production ready.</p>
]]></description><pubDate>Fri, 20 Mar 2026 18:23:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=47458592</link><dc:creator>ackfoobar</dc:creator><comments>https://news.ycombinator.com/item?id=47458592</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47458592</guid></item><item><title><![CDATA[New comment by ackfoobar in "Java is fast, code might not be"]]></title><description><![CDATA[
<p>> ditch ORMs ... make good use of SQL<p>I think Java (or other JVM languages) are then best positioned, because of jooq. Still the best SQL generation library I've used.</p>
]]></description><pubDate>Fri, 20 Mar 2026 18:16:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=47458498</link><dc:creator>ackfoobar</dc:creator><comments>https://news.ycombinator.com/item?id=47458498</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47458498</guid></item><item><title><![CDATA[New comment by ackfoobar in "Hammerspoon"]]></title><description><![CDATA[
<p><a href="https://github.com/peterklijn/hammerspoon-shiftit" rel="nofollow">https://github.com/peterklijn/hammerspoon-shiftit</a><p>I use ShiftIt (a lovely project, but dead) reimplemented in Hammerspoon. It is very comprehensive.</p>
]]></description><pubDate>Fri, 13 Mar 2026 23:06:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=47371206</link><dc:creator>ackfoobar</dc:creator><comments>https://news.ycombinator.com/item?id=47371206</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47371206</guid></item><item><title><![CDATA[New comment by ackfoobar in "Following 35% growth, solar has passed hydro on US grid"]]></title><description><![CDATA[
<p>I guess the answer has to depend on demographics. But if we are spitballing, it probably wouldn't be all bad for every country to have a Lee Kuan Yew.</p>
]]></description><pubDate>Wed, 25 Feb 2026 19:09:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=47156264</link><dc:creator>ackfoobar</dc:creator><comments>https://news.ycombinator.com/item?id=47156264</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47156264</guid></item><item><title><![CDATA[New comment by ackfoobar in "NewPipe: YouTube client without vertical videos and algorithmic feed"]]></title><description><![CDATA[
<p>I'd gladly pay for Premium (I'm already paying for YT Music, the price difference is minimal) if they allow turning off shorts. But they won't. They see time spent in app goes up when they hypnotize the users. They're too Goodhart'ed to realize that quite a lot of users don't enjoy being hypnotized.</p>
]]></description><pubDate>Sun, 15 Feb 2026 11:31:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=47022921</link><dc:creator>ackfoobar</dc:creator><comments>https://news.ycombinator.com/item?id=47022921</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47022921</guid></item><item><title><![CDATA[New comment by ackfoobar in "A16z-backed Doublespeed hacked, revealing what its AI-generated accounts promote"]]></title><description><![CDATA[
<p><a href="https://www.tiktok.com/@chloedav1s_" rel="nofollow">https://www.tiktok.com/@chloedav1s_</a> is the first account mentioned in the article. (Unless TikTok's UI is horrendously bad and I misunderstood) They are literally still images.</p>
]]></description><pubDate>Thu, 18 Dec 2025 15:06:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=46313454</link><dc:creator>ackfoobar</dc:creator><comments>https://news.ycombinator.com/item?id=46313454</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46313454</guid></item><item><title><![CDATA[New comment by ackfoobar in "A16z-backed Doublespeed hacked, revealing what its AI-generated accounts promote"]]></title><description><![CDATA[
<p>Your scenario is sth like: guy sees bad AI, good AI, and genuine content in his feed. Bad AI gives him confidence in his ability to detect slop, but he thinks the good AI is genuine content. Here the higher the quality of the slop, the harder it is to detect.<p>In this case some slop is hacked and exposed. I check them out to see if they're good yet. The quality of the slop is unrelated to whether they'd get hacked.</p>
]]></description><pubDate>Thu, 18 Dec 2025 15:00:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=46313378</link><dc:creator>ackfoobar</dc:creator><comments>https://news.ycombinator.com/item?id=46313378</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46313378</guid></item><item><title><![CDATA[New comment by ackfoobar in "A16z-backed Doublespeed hacked, revealing what its AI-generated accounts promote"]]></title><description><![CDATA[
<p>I checked out one of the accounts mentioned, mostly to check if I can discern fake accounts. The content is just still pictures. I'd dismiss those whether or not they're AI. Well, I'm not on TikTok anyway.<p>This reminds me of some youtube videos when I was researching some stuff to buy. Those videos are just still images plus text-to-speech narration, usually with an annoying background music.</p>
]]></description><pubDate>Wed, 17 Dec 2025 22:25:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=46306435</link><dc:creator>ackfoobar</dc:creator><comments>https://news.ycombinator.com/item?id=46306435</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46306435</guid></item></channel></rss>