$ whoami
Hi, I'm Keith.
By day I design and build systems for people. This is where I go down the rabbit holes: kernels, instruction sets, sensors, and whatever broke last night. It's a lab notebook, not a highlight reel.
- name
- Keith Gangarahwe
- based
- Harare, Zimbabwe · UTC+2
- day job
- systems & software engineer, final-year student
- writes in
- Zig, C, C++, Go, TypeScript
- targets
- RISC-V (ESP32-P4, ESP32-C3), ARM7TDMI, QEMU virt, ESP32-S3
- tools
- QEMU, GDB, build.zig, ESP-IDF
What this is
A public research notebook. Posts get written while the thing is being built, not after it works, so the wrong turns stay in: the kernel that built, linked, ran with zero errors and printed nothing; the dissertation proposal that didn't land. If a post explains a fix, it probably also explains the three things I tried first.
What's on the bench
- Aeroponic Vertical Farming: Environment Control with Data-Driven Crop Advisory · 1 part so far
- A Minimal Operating System Kernel with Runtime Instruction Translation for Low-Cost RISC-V Microcontrollers · 9 parts so far
10 posts in total. The writing page has all of them, and the projects page groups them into series that read best in order.
Why so low-level?
Because that's where the interesting failures live. A microcontroller doesn't have an operating system to hide behind, and a translator either produces the right instruction or it doesn't. The same instinct runs through everything here, from the kernel to the farm controller: watch a signal you already have, model what "correct" looks like, and shout when reality departs from it.
How this blog is built
- SvelteKit with every page prerendered, and posts written in Markdown (mdsvex).
- Iosevka for code and Iosevka Aile for text, subset at build time to only the characters the site uses.
- Link-preview cards rendered at build time, one per post.
- Static files on Cloudflare. No analytics, no trackers, no cookie banner.
- An RSS feed, because it's still the best way to follow a blog.
Elsewhere
- keithgang.dev: the clean-cut version, with the systems I build, the products, and how to work with me.
- GitHub: the code behind every series.
- hello@keithgang.dev: corrections, questions, or "you're doing it wrong" are all welcome.