<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: tubthumper8</title><link>https://news.ycombinator.com/user?id=tubthumper8</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 07 Apr 2026 02:39:31 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=tubthumper8" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by tubthumper8 in "Anthropic acquires Bun"]]></title><description><![CDATA[
<p>What do you mean by "failing tests", are you talking about runtime code? TypeScript erases all types at compile so these wouldn't affect tests. Unless you meant "compile errors" instead.<p>I've noticed LLMs just slap on "as any" to solve compile errors in TypeScript code, maybe this is common in the training data. I frequently have to call this out in code review, in many cases it wasn't even a necessary assertion, but it's now turned a variable into "any" which can cause downstream problems or future problems</p>
]]></description><pubDate>Wed, 03 Dec 2025 08:45:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=46131919</link><dc:creator>tubthumper8</dc:creator><comments>https://news.ycombinator.com/item?id=46131919</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46131919</guid></item><item><title><![CDATA[New comment by tubthumper8 in "Rust in Android: move fast and fix things"]]></title><description><![CDATA[
<p>Who said that anyone is absolved of the responsibility to write tests for business logic when using Rust? I struggle to see anything in the comment you replied to that is anywhere close to claiming this</p>
]]></description><pubDate>Fri, 14 Nov 2025 01:00:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=45922669</link><dc:creator>tubthumper8</dc:creator><comments>https://news.ycombinator.com/item?id=45922669</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45922669</guid></item><item><title><![CDATA[New comment by tubthumper8 in "A new experimental Go API for JSON"]]></title><description><![CDATA[
<p>Not sure what you mean here by "most JavaScript parser rejects null" - did you mean "JSON parsers"? And why would they reject null, which is a valid JSON value?<p>It's more that when building an API that adheres to a specification, whether formal or informal, if the field is supposed to be a JSON array then it should be a JSON array. Not _sometimes_ a JSON array and _sometimes_ null, but always an array. That way clients consuming the JSON output can write code consuming that array without needing to be overly defensive</p>
]]></description><pubDate>Thu, 11 Sep 2025 00:56:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=45206347</link><dc:creator>tubthumper8</dc:creator><comments>https://news.ycombinator.com/item?id=45206347</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45206347</guid></item><item><title><![CDATA[New comment by tubthumper8 in "(On | No) Syntactic Support for Error Handling"]]></title><description><![CDATA[
<p>Inline breakpoint, the same way you set a breakpoint on an expression in any language</p>
]]></description><pubDate>Wed, 04 Jun 2025 04:34:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=44177263</link><dc:creator>tubthumper8</dc:creator><comments>https://news.ycombinator.com/item?id=44177263</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44177263</guid></item><item><title><![CDATA[New comment by tubthumper8 in "(On | No) Syntactic Support for Error Handling"]]></title><description><![CDATA[
<p>The "Error Return Trace" described in the next section down also seems like an interesting alternative to a stack trace, possibly solving the same problem with less noise.<p>How well does it work in practice?</p>
]]></description><pubDate>Wed, 04 Jun 2025 04:25:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=44177217</link><dc:creator>tubthumper8</dc:creator><comments>https://news.ycombinator.com/item?id=44177217</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44177217</guid></item><item><title><![CDATA[New comment by tubthumper8 in "(On | No) Syntactic Support for Error Handling"]]></title><description><![CDATA[
<p>I've read elsewhere that one idea for the zero value of sum types is not making it nillable, but rather making the zero value as the 0th variant of the sum type (and if it has associated data, the zero value of that as well).<p>It's weird, but does align with design decisions that have already been made.<p>So if there was an `Option[T]` with variants `None` and `Some[T]`, the zero value would be `None` because that's the zero-th variant</p>
]]></description><pubDate>Wed, 04 Jun 2025 04:16:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=44177173</link><dc:creator>tubthumper8</dc:creator><comments>https://news.ycombinator.com/item?id=44177173</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44177173</guid></item><item><title><![CDATA[New comment by tubthumper8 in "Why Algebraic Effects?"]]></title><description><![CDATA[
<p>This post from the React team has more detail on that topic: <a href="https://overreacted.io/algebraic-effects-for-the-rest-of-us/" rel="nofollow">https://overreacted.io/algebraic-effects-for-the-rest-of-us/</a></p>
]]></description><pubDate>Sat, 24 May 2025 18:22:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=44082883</link><dc:creator>tubthumper8</dc:creator><comments>https://news.ycombinator.com/item?id=44082883</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44082883</guid></item><item><title><![CDATA[New comment by tubthumper8 in "Show HN: Hyper – Standards-first React alternative"]]></title><description><![CDATA[
<p>Can you expand more on the Gang of Four comment? Which separation does GoF describe that is applicable in this context? And what is the definition of a "concern"?</p>
]]></description><pubDate>Fri, 09 May 2025 15:45:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=43938126</link><dc:creator>tubthumper8</dc:creator><comments>https://news.ycombinator.com/item?id=43938126</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43938126</guid></item><item><title><![CDATA[New comment by tubthumper8 in "Python’s new t-strings"]]></title><description><![CDATA[
<p>Can you do it for functions defined by other people, or only for functions that you defined?<p>I'm thinking in the general case, but motivated by this example of a 3rd party function that accepts a SQL query as a string, and we'd like everywhere in our codebase to stop using that and instead use the 3rd party function that accepts the query as a t-string</p>
]]></description><pubDate>Wed, 23 Apr 2025 12:21:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=43771260</link><dc:creator>tubthumper8</dc:creator><comments>https://news.ycombinator.com/item?id=43771260</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43771260</guid></item><item><title><![CDATA[New comment by tubthumper8 in "Python’s new t-strings"]]></title><description><![CDATA[
<p>Do the python type checkers / linters / whatever have the ability to warn or error on calling certain functions? That would be nice to eventually enforce migration over to the newer functions that only take a t-string template</p>
]]></description><pubDate>Mon, 21 Apr 2025 12:52:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=43751442</link><dc:creator>tubthumper8</dc:creator><comments>https://news.ycombinator.com/item?id=43751442</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43751442</guid></item><item><title><![CDATA[New comment by tubthumper8 in "Why F#?"]]></title><description><![CDATA[
<p>"pit of success" from the previous comment might refer to this video, which is long but good especially to adjust to a different mindset<p><a href="https://youtu.be/US8QG9I1XW0?si=N07ZsYSYfA12mGVc" rel="nofollow">https://youtu.be/US8QG9I1XW0?si=N07ZsYSYfA12mGVc</a></p>
]]></description><pubDate>Fri, 04 Apr 2025 15:08:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=43583546</link><dc:creator>tubthumper8</dc:creator><comments>https://news.ycombinator.com/item?id=43583546</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43583546</guid></item><item><title><![CDATA[New comment by tubthumper8 in "Why F#?"]]></title><description><![CDATA[
<p>>that's what discriminated unions (aka product types aka algebraic data types)<p>Just an FYI, discriminated unions are not product types, they are sum types. It's named so because the total number of possibilities is the sum of the number of possibilities for each variant.<p>Ex. A sum type Color is a PrimaryColor (Red, Blue, Yellow) <i>OR</i> a SecondaryColor (Purple, Green, Orange), the total number of possibilities is 3 + 3 = 6.<p>For a product type, if a ColorPair is a PrimaryColor <i>AND</i> a SecondaryColor, the total number of possibilities is 3 * 3 = 9<p>Both sum types and product types are algebraic types, in the same way that algebra includes both sums and products.<p>For the standard library, I'm curious for the family of TryParse kind of functions, since those are well modeled by a sum type. Maybe adding an overload without an `out` argument would give you back a DU to `switch` on</p>
]]></description><pubDate>Thu, 03 Apr 2025 20:45:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=43575166</link><dc:creator>tubthumper8</dc:creator><comments>https://news.ycombinator.com/item?id=43575166</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43575166</guid></item><item><title><![CDATA[New comment by tubthumper8 in "Why F#?"]]></title><description><![CDATA[
<p>There's also going to be quite a big ecosystem / standard library difference between languages that had fundamental type system features since the beginning vs. languages that added fundamental features 23 years later.<p>Imagine all the functions that might return one thing or another, which was inexpressible in C# (until this proposal is shipped), will all these functions release new versions to express what they couldn't express before? Will there be an ecosystem split between static typing and dynamic typing?</p>
]]></description><pubDate>Thu, 03 Apr 2025 01:32:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=43563740</link><dc:creator>tubthumper8</dc:creator><comments>https://news.ycombinator.com/item?id=43563740</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43563740</guid></item><item><title><![CDATA[New comment by tubthumper8 in "Good-bye core types; Hello Go as we know and love it"]]></title><description><![CDATA[
<p>> But that is unnecessary in Go as it believes that values should always be useful – which means you don't need to even consider the error to use the value.<p>Is this true? Are values always useful? You shouldn't even need to consider the error?<p>For example, if GPS errored while calling an Uber, is it useful to ignore the error and instead display the Uber driver as being in the middle of the ocean? <a href="https://www.reddit.com/r/uberdrivers/comments/zjpv69/well_how_could_i_pass_up_this_ride/" rel="nofollow">https://www.reddit.com/r/uberdrivers/comments/zjpv69/well_ho...</a></p>
]]></description><pubDate>Fri, 28 Mar 2025 02:51:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=43500977</link><dc:creator>tubthumper8</dc:creator><comments>https://news.ycombinator.com/item?id=43500977</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43500977</guid></item><item><title><![CDATA[New comment by tubthumper8 in "Good-bye core types; Hello Go as we know and love it"]]></title><description><![CDATA[
<p>> You can do something like this<p>Do people actually do this? Is it included in the standard library? If not, should it be?</p>
]]></description><pubDate>Fri, 28 Mar 2025 02:19:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=43500746</link><dc:creator>tubthumper8</dc:creator><comments>https://news.ycombinator.com/item?id=43500746</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43500746</guid></item><item><title><![CDATA[New comment by tubthumper8 in "Good-bye core types; Hello Go as we know and love it"]]></title><description><![CDATA[
<p>It's not just syntax, a sum type forces checking for the error whereas a product type does not, so it's a semantic distinction too</p>
]]></description><pubDate>Thu, 27 Mar 2025 16:08:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=43495065</link><dc:creator>tubthumper8</dc:creator><comments>https://news.ycombinator.com/item?id=43495065</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43495065</guid></item><item><title><![CDATA[New comment by tubthumper8 in "A love letter to the CSV format"]]></title><description><![CDATA[
<p>That _shouldn't_ be ambiguous, `false` is a valid JSON document according to specification, but not all parsers are compliant.<p>There's some interesting examples of ambiguities here: <a href="https://seriot.ch/projects/parsing_json.html" rel="nofollow">https://seriot.ch/projects/parsing_json.html</a></p>
]]></description><pubDate>Thu, 27 Mar 2025 01:41:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=43489577</link><dc:creator>tubthumper8</dc:creator><comments>https://news.ycombinator.com/item?id=43489577</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43489577</guid></item><item><title><![CDATA[New comment by tubthumper8 in "JavaScript Temporal is coming"]]></title><description><![CDATA[
<p>Yeah, that's one of the core problems, there's no overloading of equals in JS and no other cases of objects using non-reference equality. Adding that in itself would be a big deal (ex. see the Records and Tuples proposal which has been going on for years and may never complete)</p>
]]></description><pubDate>Fri, 31 Jan 2025 02:16:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=42884162</link><dc:creator>tubthumper8</dc:creator><comments>https://news.ycombinator.com/item?id=42884162</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42884162</guid></item><item><title><![CDATA[New comment by tubthumper8 in "Context should go away for Go 2 (2017)"]]></title><description><![CDATA[
<p>> I understand you have an advertising quota to fill<p>This is a ridiculous statement and you are intentionally engaging in bad faith. There's no need for this in response to people genuinely trying to answer your questions. Be better</p>
]]></description><pubDate>Wed, 22 Jan 2025 18:24:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=42795906</link><dc:creator>tubthumper8</dc:creator><comments>https://news.ycombinator.com/item?id=42795906</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42795906</guid></item><item><title><![CDATA[New comment by tubthumper8 in "Context should go away for Go 2 (2017)"]]></title><description><![CDATA[
<p>Sorry to have disappointed you. I don't walk, talk, or sleep either Rust or Go, but was trying to provide some resources to help in case you hadn't seen them yet.<p>One difference I noticed in the docs is in the Go Reference it says the "go" line of the "go.mod" has to be greater than or equal to the go line of all that modules dependencies, if the go line is 1.21 or higher, so a module for 1.21 can't depend on a module for 1.22 [1]<p>That restriction doesn't apply for Rust, a library using the 2015 edition can use a dependency that uses the 2018 edition, for example.<p>That's just one difference I noticed in the implementation. The goals seem very similar if not the same<p>[1] <a href="https://go.dev/doc/modules/gomod-ref#go" rel="nofollow">https://go.dev/doc/modules/gomod-ref#go</a></p>
]]></description><pubDate>Tue, 21 Jan 2025 20:31:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=42784863</link><dc:creator>tubthumper8</dc:creator><comments>https://news.ycombinator.com/item?id=42784863</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42784863</guid></item></channel></rss>