2026-08-27

Loose Ends


There are a handful of projects I've done over the years that I never shared or discussed publicly, so I'm going to take care of them all in one shot. Most of these are poorly documented and unorganized, which is why I've kept them private. I've made the private repos public and gave them a little clean them up.


Card Pricing

2020-10-16

It was Covid, I was a remote college student, and I had a lot of free time. I decided to dig up my old Yugioh cards and see if they were worth anything. Since I had a lot of cards and I didn't know anything about the game, I needed a better way to catalog the cards and figure out what I had.

I wrote a python script that would take a camera input and use OpenCV to find a card in the frame and extract information from it. This was a very fun and rewarding project and I remember selling some cards to an online shop for ~$200 at the end.

The setup for this was extremely janky involving an old iPhone using some wifi video feed app and a makeshift cardboard box tripod. This let me sit at my desk, slide the cards into frame, extract the card ID, call the https://yugiohprices.com/ API (RIP), and save the card into a CSV. All I had to do was position the card in the frame, verify that the card ID was detected correctly, and confirm that the name that came back from the API matched the card.

Then I loaded the data into a sqlite3 database to do some querying, found the valuable cards, and shipped them off to the card store.

I loved being able to apply what I learned in my computer vision classes (edge detection, homographies, kernels, OCR) and build a useful interactive application that made me a little bit of money.


Tanks For the Memories

2021-09-06

This is the first game I ever published online and it was part of the Stop Waiting for Godot game jam. This was my first time using the Godot game engine as I thought this would be a good learning experience.

I used visual assets from the great kenney.nl along with free sound effects and music.

I received a single comment on this game, and I can still remember how happy it made me that somebody enjoyed this horrible little game I threw together in less than 24 hours. It still makes me happy.

Yes, the name of this game is a Fall Out Boy reference and I stand by it.


plat

2021-10-03

plat is a 2D platformer I made to further learn the Godot game engine. I made it in a little under a month and published it on itch.io (go play).

This also used assets from kenney.nl and I made the sound effects and music myself this time. I remember using some mobile app to make the music but I can't track down what it was. I'm still proud of this stupid song.

I'm also proud of the particle effects, transitions, and animations that I was able to create. My favorite is the level transition.

I remember being surprised by the amount of work this was. I didn't appreciate the amount of work I had to put in to enable the game design phase to even begin. Creating tilemaps, systems for setting up enemy paths, adding new enemies, and testing gameplay features all were entire projects in their own respect.

The experience of creating an explicit state machine for the player controls was informative. Shoutout to the GameEndeavor tutorials. This made tweaking the game feel a lot easier, which was much appreciated due to how hard that problem can be.

I'm most proud of myself for shipping this. I need to do that more.


ttt-bitboard

2022-08-07

This was a small toy project to play with some of the ideas and methods discussed in Cameron Browne's Bitboard Methods for Games paper. This implements a CLI Tic-Tac-Toe game using bitboards for the game state, implemented in C. Each Tic-Tac-Toe board can be represented with 9 bits, so we use a 16 bit short for each player's state.

I found this to be a fun and interesting intro to these concepts, and would recommend it as an introduction to working directly on the bits of integers to represent different types of state.


pi-clock

2024-04-23

My girlfriend, now wife, was using an Amazon Alexa every morning to get weather updates and other useful information while getting ready. I wanted to replace this with something more personal that didn't involve having an always-on microphone in our apartment, so I created pi-clock.

This is a simple webapp that runs on a Raspberry Pi set to Kiosk mode. It displays weather forecast information and a live satellite GIF, along with the date and time. This involves a couple systemd processes, a python3 http.server, and a small JavaScript app.

It was really cool to build a physical product using my software skills. This also introduced fun challenges like optimizing startup time, tuning the page's design to best work with the monitor I was using, and ensuring things gracefully fell back in the case something didn't load.

My favorite of these problems to solve was how to minimize burn-in on the screen. To address this, I added a swipe (a vertical white and black line) that passes over the whole screen on a regular interval.

I enjoyed the experience of making some changes, running ./deploy.sh and seeing the screen on the Pi next to me update. There is something special and tangible about making things like this that I often don't get to feel with software.


mercury

2025-07-10

A friend of mine introduced us to a card game that involved scanning a QR code, blindly listening to the song that would be played, and then guessing the year that song was released relative to the cards you've already seen. We had a lot of fun playing this game and I wanted to make her a custom deck for her birthday, so I created mercury.

This project takes a public Spotify playlist and uses the API to produce a deck of cards with the relevant information present. It produces the card images themselves and a design for the box automatically. You can also have the script display statistics about the playlist and deck you've built, which can help visualize how fair or hard the deck will be to play.

Most importantly, you can take the output directly to someone like Make Playing Cards and have the physical deck made and mailed to you. I didn't account for the production time here, so I missed my friends birthday. However, I was eventually able to give this to her and seeing somebody open and use something I made with software was once again incredibly rewarding.


Like most people in this line of work, I got into computers and software because they were fun. It feels like we've been somehow losing that along the way.

I'm working to get it back.