<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: kibwen</title><link>https://news.ycombinator.com/user?id=kibwen</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 21 Jun 2026 11:52:32 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=kibwen" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by kibwen in "Cargo-Geiger"]]></title><description><![CDATA[
<p>Penalizing the stdlib for using `unsafe` would be extremely counter-productive, because you could almost trivially remove all `unsafe` in the stdlib by moving those "unsafe" operations into codegen emitted by compiler (which is essentially how every other memory-safe language under the sun works, including Java, Python, etc.). Voila, no more unsafe in the stdlib... except now you have exactly the same code existing in a form that's both harder to inspect and doesn't benefit from the bevy of tools that exist to audit unsafe blocks in regular Rust code, meaning you have an implementation that's less safe in practice. And outside of the code contained in the stdlib, the majority of Rust crates don't use `unsafe` at all (exact proportion varying by domain; e.g. embedded use cases will probably all use `unsafe` somewhere).</p>
]]></description><pubDate>Sat, 20 Jun 2026 18:00:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=48611371</link><dc:creator>kibwen</dc:creator><comments>https://news.ycombinator.com/item?id=48611371</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48611371</guid></item><item><title><![CDATA[New comment by kibwen in "Computed goto for efficient dispatch tables (2012)"]]></title><description><![CDATA[
<p><i>> Therefore, the standard forces the compiler to generate "safe" code for the switch. Safety, as usual, has cost, so the switch version ends up doing a bit more per loop iteration.</i><p>Safety only has a cost in this case because the switch is fundamentally just operating on an integer. With an actual enumerated type (rather than C's primitive "enums as numeric aliases"), which even a basic type system could trivially enforce, there would be no need for this check, because the domain of the value would be guaranteed at compile-time.</p>
]]></description><pubDate>Sat, 20 Jun 2026 15:25:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=48609899</link><dc:creator>kibwen</dc:creator><comments>https://news.ycombinator.com/item?id=48609899</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48609899</guid></item><item><title><![CDATA[List of video game console color palettes]]></title><description><![CDATA[
<p>Article URL: <a href="https://en.wikipedia.org/wiki/List_of_video_game_console_palettes">https://en.wikipedia.org/wiki/List_of_video_game_console_palettes</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48578029">https://news.ycombinator.com/item?id=48578029</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 17 Jun 2026 22:43:42 +0000</pubDate><link>https://en.wikipedia.org/wiki/List_of_video_game_console_palettes</link><dc:creator>kibwen</dc:creator><comments>https://news.ycombinator.com/item?id=48578029</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48578029</guid></item><item><title><![CDATA[New comment by kibwen in "Why stdx is not on crates.io"]]></title><description><![CDATA[
<p><i>> Rust forces you to either (a) re-invent the wheel (yet again !)</i><p>This is inherent to the domain of systems programming. One-size-fits-all solutions only suffice until you need extreme performance. So, for example, Rust provides a basic hashmap in the stdlib, and as a generalist hashmap it's quite close to state-of-the-art. But as a generalist hashmap it's also beaten in specific applications by specialist datastructures, and Rust needs to provide support for building those specialist datastructures in a way that makes them feel just as first-class as what the stdlib provides.<p>Go gets away with what it does because it's for domains where it's acceptable to trade uniformity for performance. This is not a bad thing! Go is quite performant. But Rust ultimately isn't competing with Go, it's competing with C.<p>And note that I say all this as someone who is, in fact, a stdlib maximalist. But I also say all this as someone who is conscientious and informed of the realities of what it takes to design and maintain a secure, high-performance stdlib.</p>
]]></description><pubDate>Wed, 17 Jun 2026 18:04:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=48574230</link><dc:creator>kibwen</dc:creator><comments>https://news.ycombinator.com/item?id=48574230</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48574230</guid></item><item><title><![CDATA[New comment by kibwen in "Why stdx is not on crates.io"]]></title><description><![CDATA[
<p><i>> Its limited compared to Go as well.</i><p>It depends on perspective. Go is tailored for writing backends, so it's great that it provides things like net/http (we could also interpret cause and effect inversely here; Go provides net/http so it gets used for writing backends). Rust's standard library is actually pretty damn huge, but it doesn't index heavily into specific applications, and instead tries to provide comprehensive support for low-level operations that enable you to build a custom-tailored solution to whatever you need on top of it. Rust's stdlib is "small" if all you want to do is build a webserver and don't want to go shopping around for libraries, but anyone who's intimately familiar with Rust's stdlib can tell you for a fact that it's absolutely not small in absolute terms. Rust literally stabilizes <i>hundreds</i> of new stdlib functions per year.</p>
]]></description><pubDate>Wed, 17 Jun 2026 16:49:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=48573084</link><dc:creator>kibwen</dc:creator><comments>https://news.ycombinator.com/item?id=48573084</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48573084</guid></item><item><title><![CDATA[New comment by kibwen in "Sixty percent of US consumers say 'AI' in brand messaging is a turnoff"]]></title><description><![CDATA[
<p>To paraphrase Mitch Hedberg, this is the sort of thing that is now possible with AI. It used to be possible, but it still is, too.</p>
]]></description><pubDate>Wed, 17 Jun 2026 14:32:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=48571102</link><dc:creator>kibwen</dc:creator><comments>https://news.ycombinator.com/item?id=48571102</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48571102</guid></item><item><title><![CDATA[New comment by kibwen in "Sixty percent of US consumers say 'AI' in brand messaging is a turnoff"]]></title><description><![CDATA[
<p>If you don't actually take the time to write something manually inside the card, that's as thoughtless asking an LLM to generate a birthday message to someone.</p>
]]></description><pubDate>Wed, 17 Jun 2026 14:30:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=48571074</link><dc:creator>kibwen</dc:creator><comments>https://news.ycombinator.com/item?id=48571074</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48571074</guid></item><item><title><![CDATA[New comment by kibwen in "Correlated randomness in Slay the Spire 2"]]></title><description><![CDATA[
<p>The main reason to allow users to set seeds manually is to allow players to share seeds among themselves. And the reason that players want to share seeds is because players will find exceptionally rare seeds that other players might want to try out. This sort of exceptional rarity might take the form "the first shop in act 1 sells a relic that gives you 2 potion slots, then the act 2 ancient offers a relic that gives you 4 potion slots, then the act 3 ancient offers a relic that fills all your potions slots at the start of every combat". However, when players share seeds, they aren't sharing the exact series of inputs they performed in that game. This means that the relics that have been "randomly" offered like the ones above need to be offered on the same seed regardless of any prior player decision. And player decisions can generally cause the RNG to advance an arbitrary number of times. So this means that you want to have entirely separate RNGs for every thing that the player has any power to influence, because this makes the randomness of a single seed more usefully reproducible in practice.</p>
]]></description><pubDate>Tue, 16 Jun 2026 17:08:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=48558450</link><dc:creator>kibwen</dc:creator><comments>https://news.ycombinator.com/item?id=48558450</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48558450</guid></item><item><title><![CDATA[New comment by kibwen in "Amazon Announces Multibillion-Dollar Data Center in Missouri"]]></title><description><![CDATA[
<p>Frankly, it should be a crime, a felony even, to purchase something if you haven't seen an ad for it beforehand. Think of the poor middlemen!</p>
]]></description><pubDate>Tue, 16 Jun 2026 02:08:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=48549688</link><dc:creator>kibwen</dc:creator><comments>https://news.ycombinator.com/item?id=48549688</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48549688</guid></item><item><title><![CDATA[New comment by kibwen in "Swift at Apple: Migrating the TrueType hinting interpreter"]]></title><description><![CDATA[
<p>I can assure you that Rust will never have a ++ operator. Not only is it semantically bizarre, it's entirely unnecessary in a language where iteration is overwhelmingly performed via iterators rather than via manually incrementing array indices.</p>
]]></description><pubDate>Sun, 14 Jun 2026 00:52:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=48523094</link><dc:creator>kibwen</dc:creator><comments>https://news.ycombinator.com/item?id=48523094</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48523094</guid></item><item><title><![CDATA[New comment by kibwen in "There Is Life Before Main in Rust"]]></title><description><![CDATA[
<p>You don't need linker hacks to control what happens before main in Rust. You can disable the default runtime setup with `#![no_main]` in your crate root, and then manually designate a starting point via an unmangled function named appropriately for your specific platform (e.g. `_start`).</p>
]]></description><pubDate>Fri, 12 Jun 2026 23:50:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=48510753</link><dc:creator>kibwen</dc:creator><comments>https://news.ycombinator.com/item?id=48510753</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48510753</guid></item><item><title><![CDATA[New comment by kibwen in "If you are asking for human attention, demonstrate human effort"]]></title><description><![CDATA[
<p><i>> Is it the end result that matters, or the process of creating it?</i><p>One of the main reasons that art is valuable is in its ability to communicate emotions. Good art has the ability to serialize emotions within the artist and deserialize them within the mind of the viewer. It's not just "wow, this is a pretty picture", it's "wow, this is how another person sees the world, and now that I understand that, I feel an intimate connection with them".</p>
]]></description><pubDate>Fri, 12 Jun 2026 09:16:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=48501756</link><dc:creator>kibwen</dc:creator><comments>https://news.ycombinator.com/item?id=48501756</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48501756</guid></item><item><title><![CDATA[New comment by kibwen in "AI agent bankrupted their operator while trying to scan DN42"]]></title><description><![CDATA[
<p>You are not morally obliged to extend rights to anyone who does not respect your rights. This is tit-for-tat, the foundational principle of functional societies. Unleashing a bot on a group of people is a grievous disrespect that shows you have no respect for their time, and in return they are not obliged to respect you.</p>
]]></description><pubDate>Fri, 12 Jun 2026 07:47:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=48501106</link><dc:creator>kibwen</dc:creator><comments>https://news.ycombinator.com/item?id=48501106</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48501106</guid></item><item><title><![CDATA[New comment by kibwen in "Solar generates more energy in US than coal for first time"]]></title><description><![CDATA[
<p><i>> nobody likes to tear down the interstate</i><p>Lots of urban areas in the US have been resisting, tearing down, and/or relocating major roads since the freeway revolts of the 1970s:<p><a href="https://en.wikipedia.org/wiki/Highway_revolts_in_the_United_States" rel="nofollow">https://en.wikipedia.org/wiki/Highway_revolts_in_the_United_...</a><p><a href="https://en.wikipedia.org/wiki/Freeway_removal" rel="nofollow">https://en.wikipedia.org/wiki/Freeway_removal</a></p>
]]></description><pubDate>Thu, 11 Jun 2026 23:25:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=48497813</link><dc:creator>kibwen</dc:creator><comments>https://news.ycombinator.com/item?id=48497813</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48497813</guid></item><item><title><![CDATA[New comment by kibwen in "Sweet Jeebus, macOS 27 Golden Gate Removes the Dumb Icons from Menu Items"]]></title><description><![CDATA[
<p>Whether or not the successor was a friend of Dye isn't relevant here. Let's say for a moment that Apple's design woes were a result of Dye. Dye was appointed by Apple's leadership. The conclusion would that Apple's leadership isn't capable of evaluating whether or not someone is fit for the job. And even if the guy who appointed Dye isn't around any more, the guy who appointed Dye was <i>also</i> appointed by Apple's leadership; despite whatever turnover there may be, there is an entire web of leadership continuity that resulted in Apple not being capable of selecting proper leaders, which means there is no reason to suspect that the current guy will fare any better. Politics is politics; the idea that the last guy was appointed because he was good at politics only goes to show that Apple fundamentally rewards politicking, not ability, so the assumption must be that the new guy is also a politicker first and foremost. Gruber is <i>hoping</i> that the new guy, in addition to politicking, is also good at design, but that's all it is: hope, and hope as a front for refusing to face harsh truths (to wit: the harsh truth that Apple has no magic touch left, especially difficult for a lifelong super-fanboy like Gruber to understand) is called cope.</p>
]]></description><pubDate>Thu, 11 Jun 2026 17:40:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=48493667</link><dc:creator>kibwen</dc:creator><comments>https://news.ycombinator.com/item?id=48493667</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48493667</guid></item><item><title><![CDATA[New comment by kibwen in "Starfish by Peter Watts (1999)"]]></title><description><![CDATA[
<p>Years ago I read the entirety of Starfish on the gloriously Geocities-ass website linked here, and I highly recommend it. Even as someone who has a hard time keeping focus, it sucked me in.</p>
]]></description><pubDate>Thu, 11 Jun 2026 15:43:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=48491927</link><dc:creator>kibwen</dc:creator><comments>https://news.ycombinator.com/item?id=48491927</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48491927</guid></item><item><title><![CDATA[New comment by kibwen in "Sweet Jeebus, macOS 27 Golden Gate Removes the Dumb Icons from Menu Items"]]></title><description><![CDATA[
<p><i>> I don’t know if all the untalented hacks are gone, but the untalented magazine-designer hacks with clout and influence all left with Alan Dye.</i><p>As usual for Gruber, this is fanboy cope. Dye may be a convenient scapegoat, but he was not a lone wolf, he was operating with the full assent of executive leadership, which is to say, the same leadership that appointed his successor.</p>
]]></description><pubDate>Thu, 11 Jun 2026 13:49:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=48490305</link><dc:creator>kibwen</dc:creator><comments>https://news.ycombinator.com/item?id=48490305</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48490305</guid></item><item><title><![CDATA[New comment by kibwen in "Who's the smartest corvid?"]]></title><description><![CDATA[
<p>Meanwhile, 40,000 years ago: "Me and my daughter just started to feed and befriend a wolf skulking near our camp."</p>
]]></description><pubDate>Thu, 11 Jun 2026 01:40:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=48485256</link><dc:creator>kibwen</dc:creator><comments>https://news.ycombinator.com/item?id=48485256</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48485256</guid></item><item><title><![CDATA[New comment by kibwen in "Who's the smartest corvid?"]]></title><description><![CDATA[
<p><i>> smart but evil</i><p>Sadly I have yet to see evidence that something can be smart without being evil.</p>
]]></description><pubDate>Thu, 11 Jun 2026 01:36:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=48485229</link><dc:creator>kibwen</dc:creator><comments>https://news.ycombinator.com/item?id=48485229</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48485229</guid></item><item><title><![CDATA[New comment by kibwen in "Zig Structs of Arrays (2024)"]]></title><description><![CDATA[
<p><i>> Perhaps control flow isn't the right term, maybe non-trivial would be better?</i><p>Indeed, there are plenty of valid reasons to be wary of operator overloading, such as the risk that someone might insert a network call into your vector addition. There's some precedence from C++ in calling an operator invocation "trivial" when it hasn't been user-defined, in general I might go further and say that a good overloaded operator is "well-behaved" when it not only has a non-surprising implementation (e.g. no side-effects) but also its function is congruent with the specific chosen operator (so no overloading bitshift for iostreams).</p>
]]></description><pubDate>Tue, 09 Jun 2026 20:43:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=48467478</link><dc:creator>kibwen</dc:creator><comments>https://news.ycombinator.com/item?id=48467478</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48467478</guid></item></channel></rss>