<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: amomchilov</title><link>https://news.ycombinator.com/user?id=amomchilov</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 24 May 2026 23:19:44 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=amomchilov" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by amomchilov in "Just Use Go"]]></title><description><![CDATA[
<p>I agree with all the motives you describe, yet come to the exact opposite conclusion.<p>The overwhelmingly common case is for an error in a nested call to be bubbled up to be handled by a parent call. If you make this common case look similar to the distinct case of actually handling an error, you just obscure where the real error handling happens.<p>Writing good error handling is Go is really hindered by two other issues mixing together:
1. There’s no Result type, so while it tries to treat errors as values, it’s missing out on a lot of the benefit of that idea.
2. Multiple function return values are implemented as a special case, and aren’t themselves a value<p>Most languages that support multiple return values, do it via some notion of tuples: returning a single aggregate value that you can pass around as a whole, but that also have some nice syntax for destructuring them into local variables. Go implements as a syntactic special case.<p>You can’t assign the multiple return values of a function call into a single variable. You’re forced to take all the parts, and pack them into a struct yourself. This means that you can’t factor your result-handling logic into testable functions, without needing to do this dance at every call site.</p>
]]></description><pubDate>Sat, 09 May 2026 12:30:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=48074464</link><dc:creator>amomchilov</dc:creator><comments>https://news.ycombinator.com/item?id=48074464</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48074464</guid></item><item><title><![CDATA[New comment by amomchilov in "Rubysyn: Clarifying Ruby's Syntax and Semantics"]]></title><description><![CDATA[
<p>Next up: “all the characters you need fit on a single keyboard!”</p>
]]></description><pubDate>Sun, 05 Apr 2026 12:55:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=47648927</link><dc:creator>amomchilov</dc:creator><comments>https://news.ycombinator.com/item?id=47648927</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47648927</guid></item><item><title><![CDATA[New comment by amomchilov in "Rubysyn: Clarifying Ruby's Syntax and Semantics"]]></title><description><![CDATA[
<p>I never understood the appeal of this talking point. It’s just an accounting trick that moves the complexity to the standard library.<p>For example, SmallTalk is a class based OO system, yet this postcard doesn’t slow you how to create a class.</p>
]]></description><pubDate>Sun, 05 Apr 2026 12:31:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=47648704</link><dc:creator>amomchilov</dc:creator><comments>https://news.ycombinator.com/item?id=47648704</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47648704</guid></item><item><title><![CDATA[New comment by amomchilov in "The Australian government has announced gambling advertising reforms"]]></title><description><![CDATA[
<p>Some amount? Sure. But not at this scale.<p>If people were just going to do it anyway, these gambling companies wouldn’t be pouring billions into advertising to stimulate demand</p>
]]></description><pubDate>Fri, 03 Apr 2026 16:21:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=47628611</link><dc:creator>amomchilov</dc:creator><comments>https://news.ycombinator.com/item?id=47628611</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47628611</guid></item><item><title><![CDATA[New comment by amomchilov in "Two pilots dead after plane and ground vehicle collide at LaGuardia"]]></title><description><![CDATA[
<p>That makes digitization even more important, you sold me.</p>
]]></description><pubDate>Mon, 23 Mar 2026 20:40:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=47494787</link><dc:creator>amomchilov</dc:creator><comments>https://news.ycombinator.com/item?id=47494787</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47494787</guid></item><item><title><![CDATA[New comment by amomchilov in "Closing this as we are no longer pursuing Swift adoption"]]></title><description><![CDATA[
<p>They don’t, by default. That’s something you have to implement yourself.<p>It’s a common misconception that comes from the standard library data structures, which almost all do implement CoW</p>
]]></description><pubDate>Thu, 19 Feb 2026 13:47:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=47073667</link><dc:creator>amomchilov</dc:creator><comments>https://news.ycombinator.com/item?id=47073667</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47073667</guid></item><item><title><![CDATA[New comment by amomchilov in "MongoBleed Explained Simply"]]></title><description><![CDATA[
<p>Recent macOS versions zero out memory on free, which improves the efficacy of memory compression. Apparently it’s a net performance gain in the average case</p>
]]></description><pubDate>Mon, 29 Dec 2025 04:37:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=46417512</link><dc:creator>amomchilov</dc:creator><comments>https://news.ycombinator.com/item?id=46417512</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46417512</guid></item><item><title><![CDATA[New comment by amomchilov in "Legal sports betting linked to sharp increases in violent crime"]]></title><description><![CDATA[
<p>The industry assures us they’re just filling demand that already existed, that used to be fulfilled by a black market anyway. So now it’s all above board and taxed and hunky dory.<p>It’s a bit odd they spend a lot of money on advertising to stimulate demand though, hmmmmmmmm /s</p>
]]></description><pubDate>Sun, 28 Dec 2025 15:06:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=46411573</link><dc:creator>amomchilov</dc:creator><comments>https://news.ycombinator.com/item?id=46411573</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46411573</guid></item><item><title><![CDATA[New comment by amomchilov in "Advent of Swift"]]></title><description><![CDATA[
<p>FWIW, AoC is very non-representative of real-world string manipulation problems.<p>The AoC format goes out of its way to express all problem inputs and outputs in simple strings with only basic ASCII text, just for compatibility with the most programming environments. This is very different from almost all real-world problem, where the complexities of human language are huge.</p>
]]></description><pubDate>Mon, 15 Dec 2025 00:07:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=46268627</link><dc:creator>amomchilov</dc:creator><comments>https://news.ycombinator.com/item?id=46268627</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46268627</guid></item><item><title><![CDATA[New comment by amomchilov in "People are using iPad OS features on their iPhones"]]></title><description><![CDATA[
<p>Are you suggesting that the test for whether they should “allow” a feature is whether your mom can figure it out?<p>Why?</p>
]]></description><pubDate>Mon, 17 Nov 2025 13:22:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=45953318</link><dc:creator>amomchilov</dc:creator><comments>https://news.ycombinator.com/item?id=45953318</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45953318</guid></item><item><title><![CDATA[New comment by amomchilov in "Yt-dlp: External JavaScript runtime now required for full YouTube support"]]></title><description><![CDATA[
<p>You just reminded me of Perian. What a throwback!<p><a href="https://en.wikipedia.org/wiki/Perian" rel="nofollow">https://en.wikipedia.org/wiki/Perian</a></p>
]]></description><pubDate>Thu, 13 Nov 2025 05:23:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=45911036</link><dc:creator>amomchilov</dc:creator><comments>https://news.ycombinator.com/item?id=45911036</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45911036</guid></item><item><title><![CDATA[New comment by amomchilov in "Problems with C++ exceptions"]]></title><description><![CDATA[
<p>Typed exceptions are unlike typed parameters or return values. They don’t just describe the interface of your function, but expose details about its implementation and constrain future changes.<p>That’s a huge limitation when writing libraries. If you have an old function that declares that it can throw a DatabaseError, you can’t e.g. add caching to it. Adding CacheError to the list of throwable types is an API breaking change, just like changing a return type.<p>Swift has typed errors now, but they shouldn’t be used carefully, and probably not be the default to reach for</p>
]]></description><pubDate>Thu, 13 Nov 2025 04:52:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=45910813</link><dc:creator>amomchilov</dc:creator><comments>https://news.ycombinator.com/item?id=45910813</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45910813</guid></item><item><title><![CDATA[New comment by amomchilov in "What Dynamic Typing Is For"]]></title><description><![CDATA[
<p>Dynamic languages can execute code without type annotations, so you _can_ just dismiss types as redundant metadata. But I don’t think that’s wise. I find types really useful as a human reader of the code.<p>Whether you write document them or not, types still exist, and you have to think about them.<p>Dynamic languages make it really hard to answer “what is this thing, and what can I do with it?”. You have to resort through tracing through the callers, to check the union of all possible types that make it to that point. You can’t just check the tests, because there’s no guarantee they accurately reflect all callers. A simple type annotation just gives you the answer directly, no need to play mental interpreter.</p>
]]></description><pubDate>Sun, 19 Oct 2025 10:49:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=45633354</link><dc:creator>amomchilov</dc:creator><comments>https://news.ycombinator.com/item?id=45633354</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45633354</guid></item><item><title><![CDATA[New comment by amomchilov in "A string formatting library in 65 lines of C++"]]></title><description><![CDATA[
<p>This is the eternal selection pressure that slows new C++ adoption.<p>The kinds of places still waiting C++ aren’t usually the ones that put much emphasis on using a compiler from the past decade.<p>Java 8 and C++98 will be here forever lol</p>
]]></description><pubDate>Tue, 16 Sep 2025 11:26:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=45260780</link><dc:creator>amomchilov</dc:creator><comments>https://news.ycombinator.com/item?id=45260780</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45260780</guid></item><item><title><![CDATA[New comment by amomchilov in "Jujutsu for busy devs"]]></title><description><![CDATA[
<p>Stacked diffs are a core part of my workflow, letting me “work ahead” without being blocked waiting for reviews.<p>Setting them up in git is not to bad. Adding a change to the bottom of the stack, and restacking everything on top… that’s hell in git.</p>
]]></description><pubDate>Tue, 22 Jul 2025 12:41:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=44646164</link><dc:creator>amomchilov</dc:creator><comments>https://news.ycombinator.com/item?id=44646164</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44646164</guid></item><item><title><![CDATA[New comment by amomchilov in "A Typology of Canadianisms"]]></title><description><![CDATA[
<p>Ah yes, [a Dutch toilet](<a href="https://noplacelikeanywhere.com/destinations/dutch-toilets-and-the-poop-shelf/" rel="nofollow">https://noplacelikeanywhere.com/destinations/dutch-toilets-a...</a>)! A most regrettable invention.</p>
]]></description><pubDate>Thu, 10 Jul 2025 23:58:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=44527024</link><dc:creator>amomchilov</dc:creator><comments>https://news.ycombinator.com/item?id=44527024</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44527024</guid></item><item><title><![CDATA[New comment by amomchilov in "Texas Sheriffs Crack Bitcoin ATM with Power Tools to Retrieve $32,000"]]></title><description><![CDATA[
<p>I would be more than happy to see gift cards disappear.<p>Limited strings-attached IOU that’s worse in every way than the cash paid for them.</p>
]]></description><pubDate>Sat, 21 Jun 2025 17:14:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=44339113</link><dc:creator>amomchilov</dc:creator><comments>https://news.ycombinator.com/item?id=44339113</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44339113</guid></item><item><title><![CDATA[New comment by amomchilov in "Tiny JITs for a Faster FFI"]]></title><description><![CDATA[
<p>The unrefactorable ball of mud problem is real, which is why both Stripe and Shopify have highly statically typed code bases (via Sorbet).<p>Btw Stripe uses Ruby, but not Rails.</p>
]]></description><pubDate>Thu, 13 Feb 2025 05:36:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=43032985</link><dc:creator>amomchilov</dc:creator><comments>https://news.ycombinator.com/item?id=43032985</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43032985</guid></item><item><title><![CDATA[New comment by amomchilov in "Fish has been ported to Rust"]]></title><description><![CDATA[
<p>How many declarations did it have in C++ in total? Technically those were all unsafe, just implicitly so.</p>
]]></description><pubDate>Mon, 23 Dec 2024 14:29:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=42494605</link><dc:creator>amomchilov</dc:creator><comments>https://news.ycombinator.com/item?id=42494605</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42494605</guid></item><item><title><![CDATA[New comment by amomchilov in "Google CEO says more than a quarter of the company's new code is created by AI"]]></title><description><![CDATA[
<p>Exactly, you write them with AI</p>
]]></description><pubDate>Wed, 30 Oct 2024 23:30:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=42001736</link><dc:creator>amomchilov</dc:creator><comments>https://news.ycombinator.com/item?id=42001736</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42001736</guid></item></channel></rss>