James Munns
@jamesmunns.com
Notable Protocol Enjoyer. Doing stuff, mostly in Rust and on Embedded systems. Co-host @sdr-podcast.com DMs (matrix): @jamesmunns:beeper.com DMs (signal): jamesmunns.255 he/him Kein Ort für Nazis
I need to write a blog post with the abstract: "why your wire protocol shouldn't just be a 'Request' enum going one way and a 'Response' enum going the other way" It *works*, and I *still* see people doing this with postcard, often. I gave a talk about this 2y ago: www.youtube.com/watch?v=HtBF...
Postcard: An Unreasonably Effective Tool for Machine to Machine Communication - James Munns
YouTube video by RustNL
youtube.com
Huh, for some reason I assumed data was resident in AUS, where Fastmail is based, and wouldn't have guessed it was hosted in Philly and STL. I'll probably move my personal and work emails over to EU hosting, it's neat that this is an option. Still a huge fan of fastmail!
Fastmail data can now live primarily in the EU, on servers our own engineers set up in Amsterdam. Current customers can switch in settings; new accounts pick a region at signup. Our CEO Bron's post walks through exactly what lives where. www.fastmail.com/blog/fastmai... #Fastmail #Email
Met up with a friend I hadn't seen in a while, and some new friends of friends. We got to talking about music, specifically "music that you can turn your brain off to", if you know what I mean. Here's all the stuff I/others shared, feel free to reply or repost or whatever. In no particular order:
github.com/embassy-rs/e... I love a checklist and this checklist is the best guide I am aware of "how to effectively write async embedded rust drivers for microcontrollers" I am aware of today. Parts written by myself and @balbi.sh for MCX-A, expanded by @dirbaio.bsky.social for all of embassy.
github.com
If you think hard enough and long enough about serialization then you realize something remarkable: owwie ouch oof my thinking hurt
There is no such thing as a minor API/schema change, and forwards/backwards compatibility is a trap made only to catch developers unawares. Endpoints are free, clients can call ones that match their needs, servers can stop offering them when deprecated, and either can polyfill. In this essay I will
I find it rather funny that rust programmers' "obsession" with "memory safety" can be laughed at from both sides of the programming language spectrum. functional pl enthusiasts might say that just being memory safe[^1] is not enough and rust does not help enough with program correctness[^2]. \
New blog post: How to speed up the Rust compiler in July 2026 nnethercote.github.io/2026/07/31/h...
How to speed up the Rust compiler in July 2026
My last post on the Rust compiler’s performance was in December 2025. Let’s see what has happened since then.
nnethercote.github.io
It turns out that if you put a String in an Error type of the Result for a hot function, say, deserializing 125k f32s, making that Error type 24 bytes instead of 1 will make your entire deserialization process 15% slower. I might put serde custom error support behind an opt-in flag for postcard v2.
30 weeks into the year: still about 2kg behind, but not *more* behind. Started making good progress again! This one was a bit more like the first ~5 months, though there were some annoying plateau weeks. Down a total of 14.3kg/31.5lbs, and 50.3% done! See you in 6 weeks :)
24 weeks into the year: a little behind, and mostly flat (but still down!) This 6 week stretch had a lot of "cheat" weeks: a 1w work trip to the US, family coming to visit me, and 1w+ in Prague (and a lot of Czech food and beer!) Down a total of 11kg/24 lbs, and 38.8% done. About 2kg behind now.
Pretty cool how the @oxide.computer homepage responds to different screen sizes by showing/hiding the number of racks
"We have generic parameters from outer item at home" play.rust-lang.org?version=stab... I feel like I keep re-discovering that this works, and forgetting why it's more limited than I actually want it to be in the general case, but it does print what you'd expect it to print :)
@blog.rust-lang.org.web.brid.gy code of conduct now includes "caste" as a protected characteristic. rust-lang.org/policies/cod...
Code of conduct
A language empowering everyone to build reliable and efficient software.
rust-lang.org
We're funding work to break up the resolver monolith rust-lang.github.io/rust-project...
Architectural groundwork for expansion-time evaluation - Rust Project Goals
rust-lang.github.io
I don't know who needs to hear this, but you can click and drag the subtitles in a youtube video to anywhere in the player. This is particularly useful for a software tutorial where the latest things being typed are at the bottom of the screen covered up by subtitles.
Just found an available crate name so perfect I *have* to build something for it now.
My e-bike app is entirely in metric, but the section for "how far in total have you traveled on the bike" is still called "Mileage".
It is such a ridiculous reality that to be an effective engineering lead/manager/CTO, you really ought to: * Be fairly good at engineering, to make reasonable decisions, understand all the choices in front of you * *Never* do active engineering as it takes too much of your time away from overseeing
i'm tired of "founder mode". it's time to go "engineering lead who still codes a lot and reports to the CEO but should probably spend more time building cross-team consensus" mode.
You know the unsafe code is good when you see &mut *(__ref as *mut _ as *mut _) inside of a macro
TIL that `addr_of(_mut)!` and `&raw (const|mut)` in Rust to create raw pointers *must* only be used on pointers of valid allocations when projecting to a field, following the in-bounds pointer arithmetic rules. This means that you cannot use *either* with a pointer derived from `ptr::dangling()`
And chick-fil-a runs a kubernetes cluster on a stack of NUCs in every restaurant (or at least did as of a few years back): medium.com/chick-fil-at...
Enterprise Restaurant Compute
by the CFA Enterprise Restaurant Compute Team
medium.com
This is like learning McDonald’s is based on quantum chromodynamics and the taco truck chef is Adele blog.haskell.org/enterprise-h...
For @lauramunns.bsky.social's birthday weekend, we made a 28.5km bike tour to 10 of the top ice cream places from www.the-berliner.com/food/berlins... All shop names and flavors in the alt text because it's too much :D
If you owe AWS $700, that's your problem. If you owe AWS $7 trillion, that's their problem.
AWS emailing customers they owe $7T
Do you live in Czechia? And do you want to do Rust at NXP? They're hiring! nxp.wd3.myworkdayjobs.com/careers/job/...
Embedded Software Engineer – Rust (MCU Systems)
For our teams in Brno and Rožnov, we are looking for an experienced Embedded Software Engineer focused on Rust and modern embedded systems. If you already work with Rust — or you are coming from embed...
nxp.wd3.myworkdayjobs.com
One of the most annoying things for me for modeling IPC/RPC in Rust (let alone cross language) is that you always need to name types and methods in three places: * A type/method definition * In the "server impl" location * In the "client usage" location It's just boilerplate-y, esp across crates.
Unironically I think rv32e would be a very funny "scripting interface" alternative vs other arbitrary DSLs. I think codeberg.org/pwy/kartoffels is a really good demonstration of this approach: you could offer a no-std+alloc target with domain-specific library instead, w/ a static binary output.
kartoffels
a game where you're given a potato and your job is to implement a firmware for it
codeberg.org
I’ve been tinkering with Clash and wondered if I could make validating eSPI controller drivers easier. That idea became Tamal. 😊 Clash core + Rust tools! It’s experimental, but should be useful. Why I built it: balbi.sh/posts/tamal-... Code: github.com/felipebalbi/... #haskell #clashlang #fpga
Tamal: an eSPI exerciser
Introducing Tamal — mole's idea retargeted to Intel's eSPI. An experimental FPGA exerciser that plays eSPI controller, drives legal and illegal cycles with deterministic timing, and captures everythin...
balbi.sh