You can now view these demos in your browser!
m4vga is a technique/library for hacking the STM32F407 to generate
high-quality analog color video signals with just a handful of resistors.
I wrote the C++ version between 2012 and 2015, and rewrote it in Rust in 2019 to
put my money where my mouth is.
I did this because it was an immense technical challenge. Read on for details,
including links to a series of blog posts I wrote examining the code in detail.
LRtDW is a series of articles putting Rust features in context for low-level C
programmers who maybe don’t have a formal CS background — the sort of
people who work on firmware, game engines, OS kernels, and the like. Basically,
people like me.
I’ve added Rust to my toolbelt, and I hope to get you excited enough to do the
Why Learn Rust the Dangerous Way? Introduction and ground rules.
You can’t write C in just any ol’ language: translating a grungy
optimized C program into grungy optimized unsafe Rust.
References available upon request: how Rust references are
different from pointers, how they are the same, and why we care.
Measure what you optimize: taking a hard look at an optimization
based on uninitialized memory, and converting it to safe code that’s just as
A more perfect union: considering alternatives to pointer casting,
and how to write safe wrappers for
Making safe things from unsafe parts: finally converting most of the
program to safe code, and making sure that the
unsafe bits are safe-ish.
Let the compiler do the work: a bonus section that looks at how
we’d write the program idiomatically in native Rust, and rely on
auto-vectorization to make it fast.
Here’s a collection of WebAssembly graphics demos and effects I’ve written. Most
of these are trying to pack the most pizzazz into the smallest number of bytes.