Here are some projects I've worked on during my spare time for fun!
If you are looking for my professional projects, click here!
I couldn't find a simple tool to generate CRediT roles for my publications, so I made one! I think this tool can help other researchers generate CRediT roles for their publications too. This is a simple web app that allows you to select roles and generate a formatted list of authorship contributions.
The site went live in early August 2025. As of 2025-09-28, this site has helped 71 visitors! Pretty cool!
Check it out on www.credit-role-generator.app!
HTML, CSS, React
A simple command-line stopwatch written in Rust. Built because I wanted to learn Rust and make something I'd actually use while studying. It's like a pomodoro timer — but without the pomodoro... no tomatoes
I LOVE this project and I use it all the time! I plan to do a bigger writeup on it soon. :)
Check it out on GitHub!
Rust
*Skills Used might be more accurate... Rust might be the hardest thing I've
tried to
learn
My family likes to solve crosswords and play word games. Wridges is a word game by the Washington Post.
The objective of the game is to create words from a grid of letters. I can usually match the
daily average if I try, but I wanted to aim higher and torture my sister.
In this project I've attempted to make a solver for the puzzle. My solver uses graph theory
to find the best and longest words available after using optical character recognition to
identify available letters. I
still haven't figured out how to automatically get screenshots from the site, but I might
come back to this project some day.
Python, Optical Character Recognition (OCR), Graph Theory
I used to live in the bad part of town, which I later learned was locally known as the Wild West. During my time in the west, I witnessed car break-ins, heard gunshots, and had my own home invaded. There was always something interesting happening just outside my window.
With this project, I want to visualize just how interesting the Wild West really is. The idea is to drop pins on a map according to the locations from local police reports. Maybe I would be able to see a huge crime hotspot in the west...?
HTTP requests, .pdf parsing, map visualization (folium)
HTML, CSS, SEO
Short-form content is a digital gold rush. I've automated production of TikToks using OpenCV and moviepy. Originally, I wanted to make videos that seem like they would be a part of an ARG campaign- but these videos performed extremely poorly. Since then, I've tried to optimize the videos to retain viewer impression, but this also ends poorly.
*People don't want to watch 'ai-generated' or code generated slop. In general, retention is bad and dislikes are high, but this has been a fun project! Lately I've been trying to incorporate Blender and DaVinci Resolve to make the videos more appealing.
MoviePy, PIL, OpenCV, Blender, video editing
Someone broke into my apartment and moved my vacuum. I used a Raspberry Pi and IR motion sensor to send alerts to my phone to catch the next intruder in the act. I later 3D printed a case to hold the assembly together. I learned about working with APIs, software, and hardware.
Here, I've re-enacted the scene I was hoping to capture. Don't be fooled, the intruder is still at large.
No, the intruder didn't vacuum my floors.
Electronics, APIs (SMS), 3D Printing
Some of the first code I've ever wrote was in the ImageJ macro language using notepad. I was interested in improving the data analysis workflow for making measurements on fluorescence microscopy images. I wrote a series of macros that automatically place regions of interest (ROIs) over regions of interest, identify the presence of cancer cells, and made data collection easier. ImageJ is awesome!
See the code on GitHubImageJ Macro Language, image analysis/processing
Starbattles are a fun logic puzzle. The objective is to fill a grid of shapes with stars, with a few simple limitations for how stars can be placed. I like solving these puzzles (I'm ranked in the top 2% of puzzlers), so naturally (ambitiously/naively), I thought I'd try to get a computer to solve them for me. This is the first project I've ever attempted.
For some reason I used python's turtle graphics to create a game board that I could interact with. I can encode different boards and display them using the turtle graphics. I never got around to the solving heuristics, but having a program solve these puzzles is something I think about constantly. I'm very tempted to try and use Rust for this problem.
Python