<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: jamesmunns</title><link>https://news.ycombinator.com/user?id=jamesmunns</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 16 Apr 2026 20:55:06 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=jamesmunns" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by jamesmunns in "Go on Embedded Systems and WebAssembly"]]></title><description><![CDATA[
<p>It's really not so different! In embassy, DMA transfers and interrupts become things that you can .await on, the process is basically:<p><pre><code>  * The software starts a transaction, or triggers some event (like putting data in the fifo)
  * The software task yields
  * When the "fifo empty" interrupt or "dma transfer done interrupt" occurs, it wakes the task to resume
  * the software task checks if it is done, and either reloads/restarts if there's more to do, or returns "done"
</code></pre>
It's really not different than event driven state machines you would have written before, it's just "in-band" of the language now, and async/await gives you syntax to do it.<p>Even if you don't know Rust, I'd suggest poking around at some of the examples here:<p><a href="https://github.com/embassy-rs/embassy/tree/main/examples" rel="nofollow">https://github.com/embassy-rs/embassy/tree/main/examples</a><p>And if you want, look into the code behind it.</p>
]]></description><pubDate>Sat, 04 Apr 2026 09:27:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=47637412</link><dc:creator>jamesmunns</dc:creator><comments>https://news.ycombinator.com/item?id=47637412</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47637412</guid></item><item><title><![CDATA[New comment by jamesmunns in "Interfaces and Traits in C"]]></title><description><![CDATA[
<p>Speaking as someone familiar with C and Rust (not so much Go!), although there's a parallel here to Rust's Traits, this actually is much closer to <i>dyn Trait</i> in Rust, which uses vtables and runtime polymorphism, rather than "regular" Traits in Rust, which are monomorphized versions of similar interface constraints, much closer to C++'s templates (or concepts, I'm hand waving here).<p>This isn't necessarily a negative, sometimes you actually prefer vtables and runtime polymorphism for various reasons like flexibility, or code size reasons. Just wanted to add some flavor for folks that aren't as familiar with Rust, that this isn't <i>exactly</i> how things usually work, as "regular" Trait usage is much more common than dyn Trait usage, which you have to explicitly opt-in to.</p>
]]></description><pubDate>Thu, 22 Jan 2026 16:41:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=46721638</link><dc:creator>jamesmunns</dc:creator><comments>https://news.ycombinator.com/item?id=46721638</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46721638</guid></item><item><title><![CDATA[New comment by jamesmunns in "Embassy: Modern embedded framework, using Rust and async"]]></title><description><![CDATA[
<p>As others have mentioned, ~all of the embassy HALs support nearly 1:1 parity of blocking interfaces for drivers next to the async ones. You really can avoid async entirely while still using embassy hals. The ecosystem is not tightly integrated/locked in.<p>Even data structure libraries, like embassy-sync, all have `try_` methods, which would allow for polling usage outside of async.<p>There's no mandate to use async - and helping folks that DO see value in it (which is a LOT of folks), isn't "splitting the ecosystem" - it's people doing things the way they like to do it. Embassy still works very hard to support folks who DON'T want to use async, to avoid duplicated work. There's nothing stopping you from preferring to write and maintain your own HALs, I know you have been for a while! But it's not something that people necessarily <i>have</i> to do, even if they aren't interested or don't prefer async!</p>
]]></description><pubDate>Fri, 09 Jan 2026 12:00:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=46552970</link><dc:creator>jamesmunns</dc:creator><comments>https://news.ycombinator.com/item?id=46552970</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46552970</guid></item><item><title><![CDATA[Esp-hal 1.0.0 release announcement]]></title><description><![CDATA[
<p>Article URL: <a href="https://developer.espressif.com/blog/2025/10/esp-hal-1/">https://developer.espressif.com/blog/2025/10/esp-hal-1/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45758701">https://news.ycombinator.com/item?id=45758701</a></p>
<p>Points: 7</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 30 Oct 2025 11:13:14 +0000</pubDate><link>https://developer.espressif.com/blog/2025/10/esp-hal-1/</link><dc:creator>jamesmunns</dc:creator><comments>https://news.ycombinator.com/item?id=45758701</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45758701</guid></item><item><title><![CDATA[New comment by jamesmunns in "From Rust to reality: The hidden journey of fetch_max"]]></title><description><![CDATA[
<p>If you haven't seen it, Mara Bos' "Rust Atomics and Locks"[0] is an excellent book on this topic, even if you aren't particularly interested in Rust.<p>[0]: <a href="https://marabos.nl/atomics/" rel="nofollow">https://marabos.nl/atomics/</a></p>
]]></description><pubDate>Wed, 24 Sep 2025 13:50:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=45360359</link><dc:creator>jamesmunns</dc:creator><comments>https://news.ycombinator.com/item?id=45360359</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45360359</guid></item><item><title><![CDATA[New comment by jamesmunns in "Objects should shut up"]]></title><description><![CDATA[
<p>In safety industries, particularly aviation, "alarm fatigue" is a really big deal. You recognize that pilots have limited situational bandwidth, and you REALLY don't want to be bugging them about things you can avoid. I worked in collision avoidance systems (TAS/TCASI/TCASII), and spent nearly a whole year just working on figuring out when and how we could avoid warning pilots in cases where "we're not sure exactly what is going on, so tell the pilot just in case" could potentially annoy pilots in cases like take off and landing (where they have important OTHER things to be doing!)<p>It's a fun balance between "possibly don't warn the pilot about something they should know about", and "don't warn them if they are busy doing something important".<p>More devices should have a "squelch" switch!</p>
]]></description><pubDate>Mon, 04 Aug 2025 15:00:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=44786761</link><dc:creator>jamesmunns</dc:creator><comments>https://news.ycombinator.com/item?id=44786761</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44786761</guid></item><item><title><![CDATA[New comment by jamesmunns in "Show HN: Interactive pinout for the Raspberry Pi Pico 2"]]></title><description><![CDATA[
<p>Nordic's nRF family is the major other vendor I've seen doing this, almost all peripheral can be on any pin. It's definitely a big help for designing boards.</p>
]]></description><pubDate>Sat, 12 Jul 2025 13:01:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=44541763</link><dc:creator>jamesmunns</dc:creator><comments>https://news.ycombinator.com/item?id=44541763</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44541763</guid></item><item><title><![CDATA[New comment by jamesmunns in "Ask HN: Freelancer? Seeking freelancer? (July 2025)"]]></title><description><![CDATA[
<p>SEEKING WORK | Remote | Rust and Embedded Systems<p>Location: Berlin, DE<p>Remote: Yes<p>Willing to relocate: No<p>Technologies and tools: Rust, Embedded Systems (Cortex-M, RISC-V), Desktop/server apps/tools, async/await<p>Website: <a href="https://onevariable.com" rel="nofollow">https://onevariable.com</a><p>Email: contact@onevariable.com<p>GitHub: <a href="https://github.com/jamesmunns">https://github.com/jamesmunns</a><p>Hey, I'm James! I have my company (OneVariable), and have 7+ years of embedded Rust experience, and 10+ years of embedded experience. I've been helping teams start using Rust, or scale up their use of Rust, through advising, training, and development assistance, as well as "Senior as a service" to help teams that are ramping up but still need help with questions around embedded/rust. Happy to help customers in EU and NA time zones.<p>Let me know if you need any help getting big computers talking to smaller computers!</p>
]]></description><pubDate>Wed, 02 Jul 2025 08:41:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=44441389</link><dc:creator>jamesmunns</dc:creator><comments>https://news.ycombinator.com/item?id=44441389</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44441389</guid></item><item><title><![CDATA[New comment by jamesmunns in "Rust compiler performance"]]></title><description><![CDATA[
<p>Kobzol is an absolutely wonderful person to work with. I also work in the Rust project, and any time I've interacted with him, he's been great.</p>
]]></description><pubDate>Fri, 13 Jun 2025 08:35:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=44266806</link><dc:creator>jamesmunns</dc:creator><comments>https://news.ycombinator.com/item?id=44266806</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44266806</guid></item><item><title><![CDATA[New comment by jamesmunns in "Quarkdown: A modern Markdown-based typesetting system"]]></title><description><![CDATA[
<p>You definitely can, I designed a 206x85cm standing banner for my last trade show as one of the first "production" things I built in Typst:<p><a href="https://typst.app/project/r1YNDcKpoF1sVXHf5n4VKB" rel="nofollow">https://typst.app/project/r1YNDcKpoF1sVXHf5n4VKB</a><p>Plus you can share the rendered and preview form of the project with a single link, which is pretty neat.</p>
]]></description><pubDate>Tue, 03 Jun 2025 11:51:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=44168963</link><dc:creator>jamesmunns</dc:creator><comments>https://news.ycombinator.com/item?id=44168963</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44168963</guid></item><item><title><![CDATA[New comment by jamesmunns in "Adipose tissue retains an epigenetic memory of obesity after weight loss"]]></title><description><![CDATA[
<p>Thank you for sharing, I'd never seen this before. It's an incredibly good read (and relevant for me) so far.</p>
]]></description><pubDate>Thu, 17 Apr 2025 13:02:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=43716202</link><dc:creator>jamesmunns</dc:creator><comments>https://news.ycombinator.com/item?id=43716202</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43716202</guid></item><item><title><![CDATA[New comment by jamesmunns in "I still like Sublime Text"]]></title><description><![CDATA[
<p>Thanks for Sublime Text! It's been my daily driver for over 15 years :). 10 of those developing Rust, and making heavy use of the Rust Analyzer/LSP plugin infra.<p>I also want to thank you for having such a reasonable licensing model, I'm launching my own desktop app in the next week or so, and I plan to have a very similar model to Sublime (free to use with nags, license is good for any personal usage, inclusive of updates for X period of time).</p>
]]></description><pubDate>Wed, 29 Jan 2025 08:54:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=42862936</link><dc:creator>jamesmunns</dc:creator><comments>https://news.ycombinator.com/item?id=42862936</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42862936</guid></item><item><title><![CDATA[New comment by jamesmunns in "Ask HN: Why do/don't you use C?"]]></title><description><![CDATA[
<p>For 3, if you haven't seen snapshot tests, like those using the insta crate, it makes it very easy to detect when values change like this in tests/ci.</p>
]]></description><pubDate>Tue, 07 Jan 2025 22:09:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=42628240</link><dc:creator>jamesmunns</dc:creator><comments>https://news.ycombinator.com/item?id=42628240</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42628240</guid></item><item><title><![CDATA[New comment by jamesmunns in "Rust and C++ with Steve Klabnik and Herb Sutter [audio]"]]></title><description><![CDATA[
<p>This is entirely incorrect, Ferrocene manages a specification of a subset of the language here: <a href="https://public-docs.ferrocene.dev/main/specification/index.html" rel="nofollow">https://public-docs.ferrocene.dev/main/specification/index.h...</a>, including things like a traceability matrix that links the specification to the implementation and the verification: <a href="https://public-docs.ferrocene.dev/main/qualification/traceability-matrix.html" rel="nofollow">https://public-docs.ferrocene.dev/main/qualification/traceab...</a><p>For each release of Ferrocene, this is kept up to date, and the same as C or C++, what is specified and stable can be relied upon, and implementation details are implementation details, the same as it would be if you switched from LLVM w/ SolidSands' SuperTest suite to IAR or GreenHills' toolchains which may have varying impl details but still maintain conformance with the specification.<p>The majority of safety critical teams will snapshot a single toolchain for the entire development lifecycle (sometimes updating if necessary, very rarely), but Ferrocene is releasing updates that are approaching the full Rust cadence (IIRC they've discussed going to every other release, so once every 12 weeks vs Rust's 6 week cadence), with all of the verification required to ensure the specification is still complete, and all tests are passing.<p>There's still work to specify and test more/all of the core/alloc/std library components, as well as third party crates, but from a toolchain perspective, it is much closer than you are giving them credit for. Unlike many proprietary C/C++ toolchains or verification suites, the <i>majority</i> of safety justification artifacts are publicly browseable here: <a href="https://public-docs.ferrocene.dev/main/index.html" rel="nofollow">https://public-docs.ferrocene.dev/main/index.html</a>.<p>(I am a former founder of Ferrous Systems, and one of the people that pushed for the Ferrocene project to happen, but haven't worked there for a couple years and have no monetary stake in them anymore - I think they are just still doing the right thing, and doing it well.)</p>
]]></description><pubDate>Thu, 31 Oct 2024 10:56:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=42005515</link><dc:creator>jamesmunns</dc:creator><comments>https://news.ycombinator.com/item?id=42005515</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42005515</guid></item><item><title><![CDATA[New comment by jamesmunns in "Bluesky Is Not Decentralized"]]></title><description><![CDATA[
<p>I bridged my bluesky account, if you're on mastodon and want to talk to me here, you're welcome to. Not sure if you need to opt-in on the mastodon side to be bridged to bluesky.<p>@jamesmunns.com@bsky.brid.gy<p>I think you can opt-in here? <a href="https://fed.brid.gy/bsky/jamesmunns.com/followers" rel="nofollow">https://fed.brid.gy/bsky/jamesmunns.com/followers</a></p>
]]></description><pubDate>Sat, 26 Oct 2024 12:03:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=41954236</link><dc:creator>jamesmunns</dc:creator><comments>https://news.ycombinator.com/item?id=41954236</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41954236</guid></item><item><title><![CDATA[New comment by jamesmunns in "Show HN: Running Game Boy ROMs on the STM32 ARM Cortex Microcontroller"]]></title><description><![CDATA[
<p>You don't generally need to license Arm chips unless you are designing your own chips for sale, like STM32 or Raspberry Pi do. This is something very few companies do, relative to those who just build things from existing chips.<p>If you're just building something with an existing Arm microcontrollers. The vendor (Like STMicro) has already licensed the Arm design and sold it to you.</p>
]]></description><pubDate>Tue, 08 Oct 2024 10:38:25 +0000</pubDate><link>https://news.ycombinator.com/item?id=41775824</link><dc:creator>jamesmunns</dc:creator><comments>https://news.ycombinator.com/item?id=41775824</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41775824</guid></item><item><title><![CDATA[New comment by jamesmunns in "Nesting Allocators (2023)"]]></title><description><![CDATA[
<p>In general in Rust, lifetimes enforce that references to a thing do not outlive the thing itself.<p>Even in unsafe code, it is possible to tie the lifetime of the allocations to the lifetime of the thing handing out the allocations, meaning that if you ever attempt to "escape" the scope, e.g. storing a shorter lifetime allocation in a longer lifetime allocation, that outer item can now only live as long as the shorter lifetime (even though it derives from the longer lifetime allocator). Any violation of this becomes a compile time error.<p>For example, within a function, you can have a Vec of references to local items, and although the Vec is an allocation, and COULD live forever/as long as necessary (allocations have 'static lifetime), that Vec MUST be dropped at or before when the references it contains would become invalid.</p>
]]></description><pubDate>Sun, 15 Sep 2024 21:12:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=41550453</link><dc:creator>jamesmunns</dc:creator><comments>https://news.ycombinator.com/item?id=41550453</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41550453</guid></item><item><title><![CDATA[New comment by jamesmunns in "Writing an OS in Rust"]]></title><description><![CDATA[
<p>Tock-OS, Oxid-OS (the safety version of Tock-OS, like freertos/safertos), and Hubris (from Oxide Computers) are the main three RTOSs, Embassy and RTIC are common frameworks (but not classic RTOSs) used for scheduling and resource management on bare metal systems. There are some more niche or non-public ones as well.<p>For more classic OSs (not real time), Redox is the main one, as well as a lot of research/experimental/teaching ones, including the Blog OS from this guide/submission.</p>
]]></description><pubDate>Sat, 14 Sep 2024 17:42:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=41541412</link><dc:creator>jamesmunns</dc:creator><comments>https://news.ycombinator.com/item?id=41541412</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41541412</guid></item><item><title><![CDATA[New comment by jamesmunns in "Writing an OS in Rust"]]></title><description><![CDATA[
<p>Phil's writing on OS development is always a wonderful read.</p>
]]></description><pubDate>Sat, 14 Sep 2024 16:22:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=41540773</link><dc:creator>jamesmunns</dc:creator><comments>https://news.ycombinator.com/item?id=41540773</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41540773</guid></item><item><title><![CDATA[Rust Embedded Working Group Community Micro Survey]]></title><description><![CDATA[
<p>Article URL: <a href="https://blog.rust-lang.org/inside-rust/2024/08/22/embedded-wg-micro-survey.html">https://blog.rust-lang.org/inside-rust/2024/08/22/embedded-wg-micro-survey.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=41321504">https://news.ycombinator.com/item?id=41321504</a></p>
<p>Points: 6</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 22 Aug 2024 15:41:12 +0000</pubDate><link>https://blog.rust-lang.org/inside-rust/2024/08/22/embedded-wg-micro-survey.html</link><dc:creator>jamesmunns</dc:creator><comments>https://news.ycombinator.com/item?id=41321504</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41321504</guid></item></channel></rss>