The “On the Road” episode has two parts, covering different Rust conferences in May 2024. The first section is from RustNL in Delft, the Netherlands, where James interviews Laura and Jonathan, some of the organizers of the event, on their history with Rust and the struggles and successes of putting on these conferences. The second section of this episode comes from the Oxidize Conference 2024,…
James talks with Scott Mabin about how he joined the Espressif team and got involved in embedded Rust, the working culture in chip manufacturing companies and preferences about designing and building mechanical keyboards. This episode was recorded on November 8th, 2023.
Another episode is coming from the archives, originally recorded in May 2022 with Manish Goregaokar as the guest- James and Manish touch on many topics, including: internationalization of languages, zero-copy deserialization in Rust, speedrunning video games and Vaccinate CA. Originally recorded on 2022-05-09
This episode is coming from the archives, originally recorded in May 2022 - James talks with Steve Klabnik from Oxide Computer about knowledge transfer within the Rust community, how learning-by-doing and reading datasheets help you develop, and how limits and regulations are put in place across many different fields. Originally recorded on 2022-05-04
In this episode, James chats with Ryan Summers about the process of developing protocols, the guidelines of working in safety critical and embedded engineering. Originally recorded on 2023-08-03
James has been working on mnemOS , a hobby-grade operating system written in Rust, in his free time. Check out the repo here , and read about the history and current progress on OneVariable's blog . In this episode, James chats with Sophia about the intricacies of writing programming languages, what makes designing programs fun, strategies for defining goals, and more. Originally Recorded on…
Quoting from the README: Postcard is a #![no_std] focused serializer and deserializer for Serde. Postcard aims to be convenient for developers in constrained environments, while allowing for flexibility to customize behavior as needed. I first published postcard back in 2019, as a way to get "all the good stuff from Serde " in a format that would work for embedded systems. Since then, people all…
Quoting from the README: Postcard is a #![no_std] focused serializer and deserializer for Serde. Postcard aims to be convenient for developers in constrained environments, while allowing for flexibility to customize behavior as needed. I first published postcard back in 2019, as a way to get "all the good stuff from Serde " in a format that would work for embedded systems. Since then, people all…
Recently, I wanted to generate some sounds for MnemOS , and I wanted it to go fast. This is a little mini-blog post describing how I did that using fixed point math, and reduced the total CPU usage to about 20% of the original amount.
Today I'm introducing MnemOS v0.1.0, a small, general purpose operating system, written in Rust. MnemOS is designed for constrained hardware, including microcontrollers. This release includes the v0.1.0 versions of: The MnemOS Kernel The MnemOS Userspace Library The MnemOS Common Library , which defines the System Call interface shared between userspace and kernel. Together with the…
James chats with Eliza about systems, systems of systems, operating systems, java, java cards, what posix did wrong, and a ton of other rust adjacent things. Originally Recorded on 2022-04-08.
This article was originally featured on the OneVariable Applied Research newsletter. If you'd like to get early access to these reports, you can sign up for the newsletter here . Newsletter emails are sent every Wednesday. Articles are posted on my blog one week after appearing on the newsletter. Abstract and Results The new year continues with more hardware-related distractions. This week, I…
This article was originally featured on the OneVariable Applied Research newsletter. If you'd like to get early access to these reports, you can sign up for the newsletter here . Newsletter emails are sent every Wednesday. Articles are posted on my blog one week after appearing on the newsletter. Abstract and Results Happy new year! I took the last week off of the newsletter, as I found…
This article was originally featured on the OneVariable Applied Research newsletter. If you'd like to get early access to these reports, you can sign up for the newsletter here . Newsletter emails are sent every Wednesday. Articles are posted on my blog one week after appearing on the newsletter. Abstract and Results It has been start-and-stop this week, with a little bit of down time for…
This article was originally featured on the OneVariable Applied Research newsletter. If you'd like to get early access to these reports, you can sign up for the newsletter here . Newsletter emails are sent every Wednesday. Articles are posted on my blog one week after appearing on the newsletter. Abstract and Results Shortly after the newsletter went out last week, I picked up the laser cut…
🥳🥳🥳 Hardware has arrived! 🥳🥳🥳 This article was originally featured on the OneVariable Applied Research newsletter. If you'd like to get early access to these reports, you can sign up for the newsletter here . Newsletter emails are sent every Wednesday. Articles are posted on my blog one week after appearing on the newsletter. Abstract and Results The most exciting news this week: The…
More design, lots of waiting, and a bit of planning! This article was originally featured on the OneVariable Applied Research newsletter. If you'd like to get early access to these reports, you can sign up for the newsletter here . Newsletter emails are sent every Wednesday. Articles are posted on my blog one week after appearing on the newsletter. Abstract and Results Compared to last week,…
A quick detour into hardware design This article was originally featured on the OneVariable Applied Research newsletter. If you'd like to get early access to these reports, you can sign up for the newsletter here . Newsletter emails are sent every Wednesday. Articles are posted on my blog one week after appearing on the newsletter. Abstract and Results Over the last week, I realized how close…
First up for OneVariable Applied Research: a Forth. This article was originally featured on the OneVariable Applied Research newsletter. If you'd like to get early access to these reports, you can sign up for the newsletter here . Newsletter emails are sent every Wednesday. Articles are posted on my blog one week after appearing on the newsletter. Abstract and Results This week, I've…
James chats with Sylvan Morris about introducing Rust into a company, working at an embedded startup, over the air bootloaders, and managing risk. Originally Recorded on 2020-12-28.
James chats with Yoshua Wuyts to discuss Control Theory in traditional software domains, the possibilities of RISC-V, and open source hardware. Originally Recorded on 2020-12-30.
James chats with Michael Nitschinger of Couchbase to discuss Coffee Machines, PID control loops, Bluetooth Low Energy, and Databases. Originally Recorded on 2020-12-28.
James chats with Bryan Cantrill of Oxide Computer to discuss the open source hardware explosion, Oxide's experience with Embedded Rust, the importance of a culture of sharing knowledge, and the joy of fixing hard-to-diagnose systems problems. Originally Recorded on 2021-01-10.
James chats with Clifford Heath to discuss the differences between procedural and structural code, using natural language processing to describe software, code generation, and programming education approaches. Originally Recorded on 2020-12-27.
James chats with François Baldassari to discuss embedded systems, engineering practices (and where the industry is lacking), and the social side of improving the skills of embedded systems teams. Originally Recorded on 2021-01-07.
James chats with Michael Gattozzi to discuss developer tooling, message serialization, and undefined behavior in Rust. Originally Recorded on 2020-12-26.
James chats with Christopher Hunt to discuss programming languages, the cost of software abstraction, Bluetooth, and state machines. Originally Recorded on 2020-12-23.
James chats with Lachezar Lechev to discuss Rust in Avionics, drone simulation technologies, and burnout in software development. Originally Recorded on 2020-12-23.
TL;DR - These are my notes for a potential computer hobbyist personal computer architecture. Someone called it "Minix for motherboards". This roughly describes an architecture of off the shelf microcontroller components that can be used to create a basic standalone PC, somewhere in the neighborhood of performance of an old 286/386 DOS style PC. If I build this, it will almost certainly be…
She took a painful breath and looked up at the sky. Her heart was pounding. There was nothing to do but wait. Somewhere, at the edge of the solar system, her robot, HER ROBOT, was receiving its first instructions. It was waking up, and was being told to listen to her commands. Even though the synchronization message was only a few hundred bytes, it was still going to take another hour or so. 70…
As a (late) part of the #rust2020 request, I wanted to talk about one of the paper-cuts that has become decently problematic for new and experienced users of Embedded Rust: The size costs of formatting in Rust today are unreasonably expensive for users of Rust on bare metal embedded systems. In particular there are two root issues I can see: Out of the box formatting machinery, including format!()…
For open source projects, it can be difficult to find balance between a number of factors: the free time of contributors, the desires of the communities using the project, the ability to on-ramp and mentor new contributors, and to provide necessary guidance and feedback. The Rust Project, and multiple sub-teams and working groups have found success in use of the RFC Process for making informed,…
Hey all, just a quick note on whats going on in my life right now. I'm leaving my current position at Geeny/Telefónica Next, and focusing on a personal project around Continuous Integration for Firmware and Hardware development for (at least) the next few months. This would help developers implement Hardware in the Loop testing as described by a previous blog post of mine. Oh, and…
At the recent 2018 Rust All Hands, I met up with Katharina @spacekookie , who works on an open source project that creates software for Embedded Linux Devices. She had talked with the other engineers on the project about including some Rust components, however with their limited flash storage space (8MB for the whole firmware, including operating system and all other software), she was worried…
Phew, it's been a busy six months or so since I've last posted. So busy, in fact, that I had two weeks of vacation left over from last year that I was able to roll over to this year, but it had to be used by the end of Q1. Tomorrow (2018-02-19) kicks off my first day of vacation, and I wanted to share what I'm planning on doing for the next two weeks - something I'm calling The…
Recently I've gotten the chance to work in Rust a little more often, and I've been using the wonderful web framework Rocket . Primarily, I've been using it to develop a REST server, serving and receiving JSON data. I've also been using error_chain , which is a great tool to avoid error handling boilerplate. However, I was having difficulty getting them to work together the way…
As a note, this will be the first in a series of posts exploring content I will be presenting to the Rust DC group on June 15th, where I will be integrating Rust code on the nRF52 Development Kit to create a Rust-Powered Bluetooth Peripheral. See the meetup event for more information. This post will serve as the first introduction to a few topics, and I will be building on this information as I…
A quick note: I've added a section for "Native" Testing in my previous post regarding CI Testing Techniques for Embedded Systems. Its definitely an important technique that I should have mentioned from the start! Check it out here , and let me know if there are any other techniques that I missed. Thanks to Ludwig Knüpfer for bringing it to my attention.
I was wondering what solutions exist for CI in the embedded space. I'm trying to streamline and speed up project development ... and feel CI might help in that process. I come from a higher level language background and have seen tools like TeamCity and Vagrant manage the build-test-deploy pipeline, and was wondering if this is a thing in the embedded world too. Vignesh Sankaran I recently…
For Christmas, my lovely wife got me a Novation Launchpad Mk2. These are billed as the "iconic grid performance instrument", and some day I hope to actually make some music with it. Until then, its a really cool 9x9 button grid with RGB LEDs. Pefect for playing around with!
I've written a bit about embedded devices, and a bit about Rust in the past, but I wanted to share something I've been working on (wtih the help of some really smart people) for the last few weeks. Today I was able to publish a crate called teensy3 , which contains most of the boilerplate necessary to get started using Rust on the Cortex M4 based PJRC Teensy 3.1 or 3.2 , as well as…
I thought this was interesting: grepping through my logs, I noticed a burst of what looks like an automated vulnerability scanning. This is all interesting, because my blog is entirely made up of static pages (nothing to POST to), and uses no PHP. TL;DR ~80 GETs/POSTs from one IP for generic PHP and Wordpress pages, likely each with their own sets of known vulnerabilities. There were a couple…
I just wanted to share how I solved a little problem: I have one device that is connected to two networks: A and B. The A network is semi-public, and network B is completely private. I would like to connect from a device on network A, to a specific socket on a device on Network B. To do this, I need to forward a public port from Network A on my middle device, to a private port and IP on Network B.…
Human Beans around Neukölln A photo posted by James (@jamesmunns) on Aug 20, 2016 at 6:34am PDT More beans A photo posted by James (@jamesmunns) on Aug 20, 2016 at 8:10am PDT
A recurring theme in my last three jobs has been the automation of hardware and hardware software integration testing. During long software development cycles (years), it is critical that features that are considered "done" or "stable" do not unexpectedly regress. During short software development cycles (months), it is critical to never spend time where it isn't necessary. This is true for…
One of my goals for this month is working in rust every day. One thing that I am interested in is getting Rust talking with other languages. Having this knowledge will help me interface with existing libraries, rewrite tools in Rust, and hopefully learn a little along the way.
So, heres the first 30 day challenge. This month, I chose three goals, all of which are "do X for Y minutes every day" goals. The goals for this month are Bodyweight Exercise , Apartment Cleaning , and Rust Programming .
When someone asks me what my hobbies are, my usual answer is something like "Well, programming I guess, I like cooking, oh yeah, I play a little bit of Ukulele too!", which overall isn't a very exciting or convincing answer. I have a ton of things I do a little bit of, and even more that I want to make progress on. How can I not only get better at things, and FEEL like I've gotten better…