<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: shepmaster</title><link>https://news.ycombinator.com/user?id=shepmaster</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 12 Apr 2026 08:51:25 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=shepmaster" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[Why Castrol Honda Superbike crashes on (most) modern systems]]></title><description><![CDATA[
<p>Article URL: <a href="https://seri.tools/blog/castrol-honda-superbike/">https://seri.tools/blog/castrol-honda-superbike/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45948311">https://news.ycombinator.com/item?id=45948311</a></p>
<p>Points: 176</p>
<p># Comments: 35</p>
]]></description><pubDate>Sun, 16 Nov 2025 20:54:14 +0000</pubDate><link>https://seri.tools/blog/castrol-honda-superbike/</link><dc:creator>shepmaster</dc:creator><comments>https://news.ycombinator.com/item?id=45948311</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45948311</guid></item><item><title><![CDATA[New comment by shepmaster in "Futurelock: A subtle risk in async Rust"]]></title><description><![CDATA[
<p>> But it's not natural to do so.<p>I tend to write most of my async Rust following the actor model and I find it natural. Alice Rhyl, a prominent Tokio contributor, has written about the specific patterns:<p><a href="https://ryhl.io/blog/actors-with-tokio/" rel="nofollow">https://ryhl.io/blog/actors-with-tokio/</a></p>
]]></description><pubDate>Fri, 31 Oct 2025 21:05:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=45776683</link><dc:creator>shepmaster</dc:creator><comments>https://news.ycombinator.com/item?id=45776683</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45776683</guid></item><item><title><![CDATA[New comment by shepmaster in "Crates.io phishing attempt"]]></title><description><![CDATA[
<p>An official post about this is at<p><a href="https://blog.rust-lang.org/2025/09/12/crates-io-phishing-campaign/" rel="nofollow">https://blog.rust-lang.org/2025/09/12/crates-io-phishing-cam...</a></p>
]]></description><pubDate>Fri, 12 Sep 2025 15:07:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=45222939</link><dc:creator>shepmaster</dc:creator><comments>https://news.ycombinator.com/item?id=45222939</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45222939</guid></item><item><title><![CDATA[New comment by shepmaster in "Error handling in Rust"]]></title><description><![CDATA[
<p>You are quite welcome; thanks for the kind words!</p>
]]></description><pubDate>Mon, 30 Jun 2025 18:13:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=44426251</link><dc:creator>shepmaster</dc:creator><comments>https://news.ycombinator.com/item?id=44426251</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44426251</guid></item><item><title><![CDATA[New comment by shepmaster in "Error handling in Rust"]]></title><description><![CDATA[
<p>You certainly can use thiserror to accomplish the same goals! However, your example does a little subtle slight-of-hand that you probably didn't mean to and leaves off the enum name (or the `use` statement):<p><pre><code>    low_level_result.context(ErrorWithContextSnafu { context })?;
    low_level_result.map_err(|err| CustomError::ErrorWithContext { err, context })?;
</code></pre>
Other small details:<p>- You don't need to move the inner error yourself.<p>- You don't need to use a closure, which saves a few characters. This is even true in cases where you have a reference and want to store the owned value in the error:<p><pre><code>    #[derive(Debug, Snafu)]
    struct DemoError { source: std::io::Error, filename: PathBuf }

    let filename: &Path = todo!();
    result.context(OpenFileSnafu { filename })?; // `context` will change `&Path` to `PathBuf`
</code></pre>
- You can choose to capture certain values implicitly, such as a source file location, a backtrace, or your own custom data (the current time, a global-ish request ID, etc.)<p>----<p>As an aside:<p><pre><code>    #[error("failed to open a: {0}")]
</code></pre>
It is now discouraged to include the text of the inner error in the `Display` of the wrapping error. Including it leads to duplicated data when printing out chains of errors in a nicer / structured manner. SNAFU has a few types that work to undo this duplication, but it's better to avoid it in the first place.</p>
]]></description><pubDate>Mon, 30 Jun 2025 18:12:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=44426247</link><dc:creator>shepmaster</dc:creator><comments>https://news.ycombinator.com/item?id=44426247</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44426247</guid></item><item><title><![CDATA[New comment by shepmaster in "Error handling in Rust"]]></title><description><![CDATA[
<p>In addition to the sibling comment mentioning thiserror, I also submit my crate SNAFU (linked in my ancestor comment). Reducing some of the boilerplate is a big reason I enjoy using it.</p>
]]></description><pubDate>Mon, 30 Jun 2025 18:03:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=44426166</link><dc:creator>shepmaster</dc:creator><comments>https://news.ycombinator.com/item?id=44426166</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44426166</guid></item><item><title><![CDATA[New comment by shepmaster in "Error handling in Rust"]]></title><description><![CDATA[
<p>> I create one error type per function/action<p>I do too! I've been debating whether I should update SNAFU's philosophy page [1] to mention this explicitly, and I think your comment is the one that put me over the edge for "yes" (along with a few child comments). Right now, it simply says "error types that are scoped to that module", but I no longer think that's strong enough.<p>[1]: <a href="https://docs.rs/snafu/latest/snafu/guide/philosophy/index.html" rel="nofollow">https://docs.rs/snafu/latest/snafu/guide/philosophy/index.ht...</a></p>
]]></description><pubDate>Mon, 30 Jun 2025 01:57:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=44418451</link><dc:creator>shepmaster</dc:creator><comments>https://news.ycombinator.com/item?id=44418451</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44418451</guid></item><item><title><![CDATA[New comment by shepmaster in "Error handling in Rust"]]></title><description><![CDATA[
<p>Thanks for using SNAFU! Any feedback you'd like to share?</p>
]]></description><pubDate>Mon, 30 Jun 2025 01:55:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=44418435</link><dc:creator>shepmaster</dc:creator><comments>https://news.ycombinator.com/item?id=44418435</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44418435</guid></item><item><title><![CDATA[Parking_lot: Ffffffffffffffff]]></title><description><![CDATA[
<p>Article URL: <a href="https://fly.io/blog/parking-lot-ffffffffffffffff/">https://fly.io/blog/parking-lot-ffffffffffffffff/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=44120732">https://news.ycombinator.com/item?id=44120732</a></p>
<p>Points: 7</p>
<p># Comments: 3</p>
]]></description><pubDate>Wed, 28 May 2025 21:15:14 +0000</pubDate><link>https://fly.io/blog/parking-lot-ffffffffffffffff/</link><dc:creator>shepmaster</dc:creator><comments>https://news.ycombinator.com/item?id=44120732</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44120732</guid></item><item><title><![CDATA[New comment by shepmaster in "Compiler Explorer and the promise of URLs that last forever"]]></title><description><![CDATA[
<p>As we all know, Cool URIs don't change [1]. I greatly appreciate the care taken to keep these Compiler Explorer links working as long as possible.<p>The Rust playground uses GitHub Gists as the primary storage location for shared data. I'm dreading the day that I need to migrate everything away from there to something self-maintained.<p>[1]: <a href="https://www.w3.org/Provider/Style/URI" rel="nofollow">https://www.w3.org/Provider/Style/URI</a></p>
]]></description><pubDate>Wed, 28 May 2025 16:56:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=44118070</link><dc:creator>shepmaster</dc:creator><comments>https://news.ycombinator.com/item?id=44118070</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44118070</guid></item><item><title><![CDATA[New comment by shepmaster in "Show HN: Stack Error – ergonomic error handling for Rust"]]></title><description><![CDATA[
<p>I hope to read through your crate and examples later, but if you have a chance, I’d be curious to hear your take on how Stack Error differs from my library, SNAFU [1]!<p>[1]: <a href="https://docs.rs/snafu/latest/snafu/index.html" rel="nofollow">https://docs.rs/snafu/latest/snafu/index.html</a></p>
]]></description><pubDate>Sun, 18 May 2025 21:24:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=44024410</link><dc:creator>shepmaster</dc:creator><comments>https://news.ycombinator.com/item?id=44024410</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44024410</guid></item><item><title><![CDATA[New comment by shepmaster in "A Rust Documentation Ecosystem Review"]]></title><description><![CDATA[
<p>SNAFU author here, thanks for including my crate! I’ll try to give your review a thorough read through later and incorporate feedback that makes sense.<p>I do have <a href="https://diataxis.fr/" rel="nofollow">https://diataxis.fr/</a> and related stuff open in another tab and keep meaning to figure out how to best apply it for SNAFU.<p>Out of curiosity, do you recall if you also read the top-level docs[1]? That’s intended to be the main introduction, I actually don’t expect most people to read the user’s guide, unfortunately.<p>[1]: <a href="https://docs.rs/snafu/latest/snafu/index.html" rel="nofollow">https://docs.rs/snafu/latest/snafu/index.html</a></p>
]]></description><pubDate>Sun, 11 May 2025 14:10:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=43953945</link><dc:creator>shepmaster</dc:creator><comments>https://news.ycombinator.com/item?id=43953945</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43953945</guid></item><item><title><![CDATA[New comment by shepmaster in "Rust’s dependencies are starting to worry me"]]></title><description><![CDATA[
<p>I agree. Unfortunately, I think that a lot of the people who ask for a bigger standard library really just want (a) someone else to do the work (b) someone they can trust.<p>The people working on Rust are a finite (probably overextended!) set of people and you can't just add more work to their plate. "Just" making the standard library bigger is probably a non-starter.<p>I think it'd be great if some group of people took up the very hard work to curate a set of crates that everyone would use and provide a nice façade to them, completely outside of the Rust team umbrella. Then people can start using this Katamari crate to prove out the usefulness of it.<p>However, many people wouldn't use it. I wouldn't because I simply don't care and am happy adding my dependencies one-by-one with minimal feature sets. Others wouldn't because it doesn't have the mystical blessing/seal-of-approval of the Rust team.</p>
]]></description><pubDate>Fri, 09 May 2025 14:05:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=43936915</link><dc:creator>shepmaster</dc:creator><comments>https://news.ycombinator.com/item?id=43936915</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43936915</guid></item><item><title><![CDATA[New comment by shepmaster in "Rust’s dependencies are starting to worry me"]]></title><description><![CDATA[
<p>I agree with your general point, but for this specific functionality, I’ll point out that setting environment variables of the current process is unsafe. It took us a long time to realize it so the function wasn’t actually marked as unsafe until the Rust 2024 edition.<p>What this means in practice is that the call to invoke dotenv should also be marked as unsafe so that the invoker can ensure safety by placing it at the right place.<p>If no one is maintaining the crate, that won’t happen and someone might try to load environment variables at a bad time.</p>
]]></description><pubDate>Fri, 09 May 2025 13:52:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=43936762</link><dc:creator>shepmaster</dc:creator><comments>https://news.ycombinator.com/item?id=43936762</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43936762</guid></item><item><title><![CDATA[New comment by shepmaster in "Matt Godbolt sold me on Rust by showing me C++"]]></title><description><![CDATA[
<p>Yeah, with SNAFU I try to encourage people going all-in on very fine-grained error types. I love it (unsurprisingly).</p>
]]></description><pubDate>Tue, 06 May 2025 19:39:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=43908842</link><dc:creator>shepmaster</dc:creator><comments>https://news.ycombinator.com/item?id=43908842</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43908842</guid></item><item><title><![CDATA[New comment by shepmaster in "Writing C for Curl"]]></title><description><![CDATA[
<p>> [Rust and C++] encourages creating a library of types with inheritance<p>You'll want to expand on and clarify your meaning here, as Rust does not have inheritance.</p>
]]></description><pubDate>Mon, 07 Apr 2025 12:36:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=43610579</link><dc:creator>shepmaster</dc:creator><comments>https://news.ycombinator.com/item?id=43610579</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43610579</guid></item><item><title><![CDATA[New comment by shepmaster in "My Browser WASM't Prepared for This. Using DuckDB, Apache Arrow and Web Workers"]]></title><description><![CDATA[
<p>Yep, as the sibling said, it’s to prove the point in a snarky manner. The yellow-on-white color, the wobbling, upside down path of text, the font choice, the unrelated image; all of these serve to make the concept actively hard to process.<p>Hopefully this sparks a little “wow I wonder if my image of text was also hard to read like I just experienced” moment.</p>
]]></description><pubDate>Sun, 06 Apr 2025 13:37:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=43601344</link><dc:creator>shepmaster</dc:creator><comments>https://news.ycombinator.com/item?id=43601344</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43601344</guid></item><item><title><![CDATA[New comment by shepmaster in "My Browser WASM't Prepared for This. Using DuckDB, Apache Arrow and Web Workers"]]></title><description><![CDATA[
<p>We made this to be used as a reply when pictures are misused where text would be better:<p><a href="https://fewer.pics/" rel="nofollow">https://fewer.pics/</a></p>
]]></description><pubDate>Sun, 06 Apr 2025 13:16:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=43601233</link><dc:creator>shepmaster</dc:creator><comments>https://news.ycombinator.com/item?id=43601233</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43601233</guid></item><item><title><![CDATA[New comment by shepmaster in "Just write a test for it"]]></title><description><![CDATA[
<p>Agree with simonw’s sibling comment. To add to it, I’m the primary maintainer of the Rust playground and basically self-review every single commit.<p>The rust-lang/rust repository has higher scrutiny (in part driven by tools like bors, the subject of the article).</p>
]]></description><pubDate>Sun, 30 Mar 2025 12:40:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=43523693</link><dc:creator>shepmaster</dc:creator><comments>https://news.ycombinator.com/item?id=43523693</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43523693</guid></item><item><title><![CDATA[New comment by shepmaster in "Muons used to test the condition of a road bridge in Estonia"]]></title><description><![CDATA[
<p>That is a use of <a href="https://en.wikipedia.org/wiki/Weathering_steel" rel="nofollow">https://en.wikipedia.org/wiki/Weathering_steel</a>, actually!</p>
]]></description><pubDate>Thu, 20 Mar 2025 11:29:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=43421784</link><dc:creator>shepmaster</dc:creator><comments>https://news.ycombinator.com/item?id=43421784</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43421784</guid></item></channel></rss>