<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: moltonel</title><link>https://news.ycombinator.com/user?id=moltonel</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Mon, 25 May 2026 19:00:37 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=moltonel" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by moltonel in "Migrating from Go to Rust"]]></title><description><![CDATA[
<p>Go funcs can return both a value and an error, or neither, it's a common gotcha. Having to check the behavior each time is no fun.<p>Missing error handling is checked at compile-time in Rust (lint-time in Go), and can be enabled for any struct or function (<a href="https://doc.rust-lang.org/reference/attributes/diagnostics.html#the-must_use-attribute" rel="nofollow">https://doc.rust-lang.org/reference/attributes/diagnostics.h...</a>), not just `Result<T,E>`.<p>Returning an error to the caller in Rust can be done with a single character.</p>
]]></description><pubDate>Mon, 25 May 2026 09:49:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=48265094</link><dc:creator>moltonel</dc:creator><comments>https://news.ycombinator.com/item?id=48265094</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48265094</guid></item><item><title><![CDATA[New comment by moltonel in "Migrating from Go to Rust"]]></title><description><![CDATA[
<p>Yes, but all else being equal it is a higher bar in Rust than in Go. There are fewer things left for the human to check after a clean build+lint in Rust than in Go. The issue of over-engineered AI output is orthogonal to that.</p>
]]></description><pubDate>Mon, 25 May 2026 09:22:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=48264943</link><dc:creator>moltonel</dc:creator><comments>https://news.ycombinator.com/item?id=48264943</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48264943</guid></item><item><title><![CDATA[New comment by moltonel in "Migrating from Go to Rust"]]></title><description><![CDATA[
<p>I find Go harder to review than Rust.<p>The verbose error handling diluting the interesting parts is one thing, but the main issue is the weak type system. Having to read the callee's code to check if it deviates from `res xor err`, or if it mutates its arguments. Figuring out which interface that `func (o *Obj) ()` is implementing, if any. Dealing with documentation that is a wall of 100 disappointing oneliners all repeating the function name.<p>Rust is information-dense and takes longer to master, but it's not inherently cryptic, there's a finite amount of things to know. Memory management sometimes take a bit of thought to write, but it's straightforward to review, you can trust it's correct if it compiles, you just keep an eye out for optimizations.</p>
]]></description><pubDate>Mon, 25 May 2026 09:05:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=48264853</link><dc:creator>moltonel</dc:creator><comments>https://news.ycombinator.com/item?id=48264853</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48264853</guid></item><item><title><![CDATA[New comment by moltonel in "MessageFormat: Unicode standard for localizable message strings"]]></title><description><![CDATA[
<p>> Gettext is functionally limited to source code being English (or alike). It handles all translation languages just fine, and competently so.<p>The *ngettext() family of functions take two strings (typically singular/plural) and rely on a language-wide expression to choose the variant (possibly more than 2 variants). There's no good reason for taking two strings, this should be handled in the language file, even without a DSL. Ngettext handling a single countable makes some corner-cases awkward, like gendering a group with possibly mixed-gender elements. The Plural-Forms expression not being per-message means that for example even in English "none/one/many foo" has to be handled in code, and that a language with only a rare 3rd plural has to pay the complexity for all cases.<p>Arguably, those are all nitpicks, Gettext is adequate for most projects. But quality translations get cumbersome very quickly.<p>> You can’t reasonably expect translators to write correct DSL expressions.<p>This feels demeaning. Translators regularly have to check the source code, and often write templates, they're well able for a DSL like MessageFormat's, especially when it's always the same expressions for their language. It saves a trip to the bugtracker to get developers to massage their code into something translatable. You can't reasonably expect a English-speaking developer armed with ngettext to know (and prepare their code for) the subtleties of Gaelic numerals.</p>
]]></description><pubDate>Mon, 16 Feb 2026 17:47:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=47037928</link><dc:creator>moltonel</dc:creator><comments>https://news.ycombinator.com/item?id=47037928</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47037928</guid></item><item><title><![CDATA[New comment by moltonel in "MessageFormat: Unicode standard for localizable message strings"]]></title><description><![CDATA[
<p>It's not hard to make a case against gettext, despite its maturity and large ecosystem.<p>IMHO pluralization is a prime example, with an API that only cleanly handles the English case, requires the developer to be aware of translation gotchas, and honnestly confusing documentation and format. Compare that to MessageFormat's pluralization example (<a href="https://github.com/unicode-org/message-format-wg/blob/main/spec/README.md#about" rel="nofollow">https://github.com/unicode-org/message-format-wg/blob/main/s...</a>) which is very easy to understand and fully in the translator's hands.</p>
]]></description><pubDate>Mon, 16 Feb 2026 15:15:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=47036054</link><dc:creator>moltonel</dc:creator><comments>https://news.ycombinator.com/item?id=47036054</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47036054</guid></item><item><title><![CDATA[New comment by moltonel in "Use Maps in Lite mode"]]></title><description><![CDATA[
<p>You'll need 100s of areas if you want to minimise your local storage usage, and micro-managing that would be a PITA. GM announces 'up to 1750mb' to download the part of my country I traveled to in the last month, it's a non-starter.<p>Compare that to the 179mb/113mb that I need with OSMAnd/Maps.me for the <i>whole country</i> without fiddling. Add to that the fact that OSM's data is significantly better than Google Map's for my country (YMMV) and that there's no such thing as "offline mode not available in some regions" with OSM.</p>
]]></description><pubDate>Sun, 08 Jan 2017 21:42:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=13352195</link><dc:creator>moltonel</dc:creator><comments>https://news.ycombinator.com/item?id=13352195</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=13352195</guid></item><item><title><![CDATA[New comment by moltonel in "Routing on OpenStreetMap.org"]]></title><description><![CDATA[
<p>OsmAnd is great but its target users are OSM contributors and map geeks, not "Joe User looking for a GM alternative".<p>For your usecase, have a look at mapswithme instead. It's proprietary but very neat. Does only the basics but does them well.<p>There are plenty of mobile apps using OSM data, some of them high quality and improving regularly. If one app doesn't suit you, look around. Have another look if you last tried many months ago.</p>
]]></description><pubDate>Tue, 17 Feb 2015 10:35:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=9061507</link><dc:creator>moltonel</dc:creator><comments>https://news.ycombinator.com/item?id=9061507</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=9061507</guid></item></channel></rss>