top of page

Personal Projects

Various personal projects I've worked on, varying from those that are relevant to my work as a software engineer, to those that are not
(but that I think are cool anyway).

Food Web Simulator

a react app for simulating relationships between
organisms in a food web

view website
view source on GitHub

Developed by request in October 2021. A middle school science teacher needed a replacement for a Flash app she had used to simulate predator-prey relationships in ecosystems. She wanted a website that would have two dropdowns, one showing predators and another showing prey, and feedback about the choice.

I would say this project is most interesting for its management and validation of JSON stored locally, as well as upload and download capabilities. I also wanted to practice using Material UI v5 as I've only worked with v4. On the shortlist of feature-adds is a user interface for adding data (instead of forcing the user to work directly with JSON). I would like to add a simple backend to this eventually.

M5Stack Hangman

a game of Hangman for use with the M5Stack Faces keyboard module.

view source on GitHub

I received an M5Stack as a gift and wanted to find a nice project that would combine the Faces modules, button presses, using the SD card, and drawing graphics on the screen. I decided to implement a hangman game that would pull from a list of random words and show feedback on which letters had been correct and incorrect, as well as show a hangman which slowly fills up as the player guesses incorrect letters.

I used this as an opportunity to practice splitting a one-file monster into multiple, organized files. I'd worked with Arduino extensively in the HCI lab but had only ever put my programs into a single file (and for CRISPEE that file was very, very, very long). This seemed like a good chance to think about splitting the project into three logical chunks - the business logic, the graphics, and the SD card reader. Code exists for a version that uses the Merriam-Webster API to fetch the definition of the secret word, as a hint for the player, but this was not completed to the point of being ready for publication.

bottom of page