AHHH! A UFO on the left!
AHHH! A UFO on the right!
Light Mode
Light Mode
About Fun Projects Books Blog Horseplay Monkey Business etc
Wow look at this cool guy!

Fun Projects!

Wow look at this cool guy!
🚧 UNDER CONSTRUCTION 🚧

Here are some projects I've worked on during my spare time for fun!

If you are looking for my professional projects, click here!

CRediT Role Generator

Generate CRediT contribution statements easily

Screenshot of CRediT role generator

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!

Skills Learned:

HTML, CSS, React

No Tomatoes (Rust Stopwatch)

A simple stopwatch built with Rust

Screenshot of No Tomatoes

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!

Skills Learned*:

Rust

*Skills Used might be more accurate... Rust might be the hardest thing I've tried to learn

Wridges Solver

Trying to beat my sister at a word game

Screenshot fo Wridges game

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.

Skills Learned:

Python, Optical Character Recognition (OCR), Graph Theory

The Wild Wild West

Tracking crime in my neighborhood

map of crime

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...?

Skills Learned:

HTTP requests, .pdf parsing, map visualization (folium)

This Website!

The coolest website ever

Screenshot of my website. So meta.
I want to revive the style of personal sites from the good old days. This project is helping me learn html, css, javascript, and bad website design practices. I'm inspired by the aesthetic of the "old" internet, and I try to emulate that here. I'm torn between going full fun/retro and or modern/employable. I recommend browsing the pages on neocities.com if you're nostalgic for the old web. There are some incredible webpages over there. This is an ongoing project, and in the future I plan on adding some fun elements and secrets.

Skills Learned:

HTML, CSS, SEO

The Perfect Grift

Cashing* in on TikTok

Construction worker working on my website

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.

Skills Learned:

MoviePy, PIL, OpenCV, Blender, video editing

Intruder Detection System

A classic tale of revenge

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.

Skills Learned:

Electronics, APIs (SMS), 3D Printing

Goofy ImageJ Macros

Semi-useful tools for image analysis

Construction worker working on my website

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 GitHub

Skills Learned:

ImageJ Macro Language, image analysis/processing

Starbattles / Queens Solver

Attemps at a puzzle game solver

Construction worker working on my website

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.

Skills Learned:

Python