Hi, my name is Andrew. I write software for fun and for work, and some of it is open source.

Projects

Flash Management

Flash management stack consisting of a flash translation layer (dhara) and an SPI NAND driver. Uses an STM32L432KCUX MCU connected to a Micron MT29F1G01ABAFDWB SPI NAND SLC flash chip.

This project is intended to be the “minimum implementation” needed to tie a FAT filesystem, flash translation layer, and low-level flash driver together. Most areas of the source code are heavily commented (probably over commented) in an effort to make it easy as possible for people unfamiliar with ONFI & flash translation concepts to follow.

Quad Rotor

WIP A quad rotor flight controller written in Rust with the Embassy framework.

Halfling

Build and task automation system written in python; intended to be simple to understand and easy to extend with a halfling.py file in your project root. Currently supports C and C++ builds out of the box (with incremental builds based on file modified times); supports custom/user-defined builds and generic tasks.

C Data Structures

Implementations of common data structures in C (dynamic array, linked list, queue, hash table). I wrote this for fun, learning, and to try out a test framework I hadn’t used (Unity). These aren’t very useful, since they only work on integers.

AHRS Filter Fusion Viewer

Interactive python notebook for viewing fusion results on raw accelerometer, gyroscope, and magnetometer data. Useful for tweaking fusion parameters and viewing the results.