OneVariable Newsletter - 2021-12-01


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 we are to the end of the year! In order to make sure I had enough hardware to keep making progress on my Powerbus project: I switched gears to hardware design.

It took most of the week, but on Monday I sent out the current design to JLCPCB to have a small run of ten boards built, including having most of the surface mount components populated. They should be here in about two weeks.

This will let me quickly get these boards fully ready-to-use, requiring MUCH less manual assembly as compared to the original "version zero" boards.

...read more

OneVariable Newsletter - 2021-11-24


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 been working on "Anachro Forth", a forth-inspired, bytecode-compiled scripting language for Anachro Powerbus platform.

The intended use case for Anachro Forth is to write and compile scripts on a Host PC, and to load and execute these scripts in a constrained, no_std environment, such as on embedded systems or WASM targets.

...read more

Anachro-PC - The Anachronistic Personal Computer


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 done in Rust. I do hope to specify the protocol/operational semantics well enough that you could create a component that was written in Micro/Circuit Python, C/C++, Ada, or maybe even as an embedded linux PC.

I currently am working on other projects, but I feel like this would be a fun project to stream, or maybe even write a book about learning embedded systems, or learning Rust with embedded systems?

If you'd be interested in taking a class building/using a system like this, or would be interested in seeing this happen, send me a message.

...read more

Adagio - 001


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 bits per minute, give or take a few. We had mastered faster than light communication, and it was slow as hell.

...read more

Formatting is Unreasonably Expensive for Embedded Rust


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:

  1. Out of the box formatting machinery, including format!(), write!(), and panic!() in Rust is not program space efficient
  2. More problematically, there is no way to change or opt-out of this cost, and it can show up in unexpected places that are outside of developer control

To be clear: I don't think that these issues are a failing of the language, but rather a sign of growth. The current formatting solution has managed to work without issue for most people (and is still okay-ish in edge cases like embedded) for the better part of 4 years. However as we push Rust to more use cases, the language will need to adapt if it would like to fill into these spaces.

This post aims to illuminate the challenges faced today, and attempt to draw an attainable set of paths moving forward.

...read more
< < Back | Next > >