Personal Projects
I am an early riser, and after I have a cup of coffee in my hand every morning, I got straight to my personal PC and hack away at personal projects until 6:30 am when I put my PC to sleep and open my work laptop. I build a lot of tools for myself, experiment with different technologies, and sometimes even contribute to open source projects. Here are some of the personal projects about which I am most enthusiastic.
Being the open-source software loving, tinfoil hat wearing guy that I am, I moved away from GitHub when Microsoft acquire it and began using GitLab. In other words, my older projects are on GitHub and newer projects are on GitLab.
last-port
Repo:
View repo
This project implements my portfolio website using Astro after evaluating several static site generators. I chose Astro to avoid Gatsby's boilerplate complexity and Next.js's Vercel dependency, finding its routing, plugins, and templating capabilities particularly efficient for this use case. The implementation integrates React components for familiar templating patterns while using Tailwind CSS and Daisy UI for styling - a departure from my typical styled-components approach that offers better compatibility with static generation.
Games Library
This React-based project was created during my onboarding at Indeed to quickly acquire proficiency with the framework. The implementation intentionally incorporated both class-based and functional components along with Redux and Context API for state management, providing comprehensive exposure to React's capabilities through practical application. The core functionality focuses on cataloging and searching a personal video game collection, evolving from a learning exercise into a production-like application through ongoing updates and feature enhancements that extend beyond the original educational purpose.
Stringman Utils
Repo:
View repoThis TypeScript utility library was created to address recurring string manipulation requirements in my professional work. It provides essential functionality including email validation and casing transformations, which have proven valuable across multiple projects. Currently published on npm with steady adoption, future development will focus on removing unit conversion utilities (better suited for separate packages) while expanding the collection of available string manipulation methods.
video-game-db-supplemental-data
As an avid video game collector with specialized knowledge about games and consoles, I developed this tool to associate obscure information (such as launch titles or banned games) with standard video game APIs. The solution processes curated lists of specialized data—sometimes generated through web scraping—and maps them to API datasets using a dedicated user interface for verification. The result is a comprehensive personal database containing nearly 20,000 unique data points that can be seamlessly integrated with common video game APIs.
WF Events Calendar
Originally believing my hometown lacked interesting entertainment options, I discovered there were many hidden opportunities. To better access these, I created this repository which aggregates event data through web scraping and ICS file parsing from multiple local sources. The collected information is presented in both ICS and JSON formats, with a location API ensuring properly formatted addresses for easy navigation integration. Later enhancement included implementing a Sanity.io backend to efficiently store and serve this data through the Fallstown Festivities project I also created.
touchscreen-components
When my friend, who owns a commercial HVAC business specializing in custom systems design, expressed frustration with outdated touchscreen control interfaces, he provided me with hardware to develop an improved solution. Through documentation analysis, I discovered the controller contained an embedded web server capable of hosting custom graphical user interfaces. I developed a modern interface featuring themed visualizations and control elements, with a translation layer enabling multi-language support. The clean architecture allows my friend (who has basic programming knowledge) to extend functionality as needed. This solution addresses his original concerns while providing a foundation for future enhancements. He has successfully implemented it in his projects and expressed satisfaction with both its capabilities and extensibility.
linux-app-updater
To manage updates for Linux applications installed via source code or AppImage formats - which lack native update capabilities - I developed a configuration-based solution where users specify which applications to monitor through configuration files. The system consists of scripts that periodically check for newer versions, download available updates automatically, and install them when possible based on application type. These scripts integrate with my other Node.js utilities through a master shell script executed across all machines, ensuring consistent application updates throughout my environment.
fallstown-festivities
I developed this website to provide comprehensive local information, featuring an automatically-updated events calendar through custom web scraping and iCal parsing. Data is stored in Sanity CMS and served via Astro/React with Tailwind styling. The site incorporates weather data from Open-Meteo API and water level data from state sources. Built as a static site that regenerates daily for fresh content, it emphasizes performance, SEO, and mobile responsiveness. The launch is anticipated after final photography of local attractions to serve as the site's hero images.
everdrive-firmware-updater
Retro gaming enthusiasts often face challenges maintaining firmware across their collection of modern retro devices (upscalers, flash carts, handhelds) that receive periodic updates. My solution automates the process by checking for updates based on device configurations and current versions, then downloading necessary files when available.
simpleGames
Repo:
View repo
As a gaming enthusiast, I created this project to understand fundamental game engine concepts without relying on libraries. By building browser-based games using Canvas API, I explored core mechanics like rendering, collision detection, and animation. The repository contains multiple iterations of two classic game styles: Breakout (brick-breaker) and shoot-em-up, demonstrating my experimentation with these core principles.
Home Projects
I've always got a project going on around the house. Here's a little bit about a few of my favorite projects and some I've not yet done but are planning to take on soon.
My home Server

I took some of the old PC parts I had lying around and built a pretty powerful home server. After a quick installation of Ubuntu Server, I was ready to start getting some useful apps installed. I ran Pihole on a Raspberry Pi for years and Home Assistant on an old Mac Mini I got from a friend and converted to being a Linux box. That said, those 2 apps were all I needed to replace, but after some experimentation and finding Runtipi, I ended up with a server full of apps and a new set of habits using my self-hosted apps. Now I’ve written several bash scripts and cron jobs to keep it updated and backed up to multiple hard drives, so I lose nothing if the machine dies on me.
Smart Home

The lights turn off when no one is home, the kitchen and dining room lamps turn on at sunset, the scanning of many RFID tags I have around my house will toggle on or off different combinations of things around the house. These are some automations I have set up using Home Assistant and a ton of smart devices. I have hand rolled a lot of my own home automations though Home Assistant. I even have it exposed to the outside world using port forwarding and an inexpensive service to make this simpler.
Plans for other projects
Projects I want to get around to doing.
Make some indie games
I’ve wanted to make some video games for a long while, now. Making and releasing an indie game seems like something I’d enjoy and could potentially open another income stream. I’ve bought the classes I need to learn Godot game engine and installed the software I need to start developing a game. Now, I just need to set aside the time to get started!
Finish my in-progress projects
I’ve got a couple of projects I’ve started that I really want to get finished and launched. My Fallstown Festivities site would be at the top of that list as the people in my hometown really need a good place to go to discover things to do around town. Aside from that, I’ve begun working on a PWA for a golf cart crawls that will make things easier for every one that does golf cart crawls to keep track of the route, the votes on “best stop”, and even the winners of the games we play on the crawls.
Build and program a LED ticker
I found this really cool LED ticker that has a mobile companion app and allows you to easily display different bits of information. While I really like the device, I think it is insanely overpriced. I started poking around and found similar projects using Raspberry Pis. Being that I have a handful of Raspberry Pis lying around, I figured I could 3D print a case, use a Raspberry Pi I already have, and the only thing I would need to buy is an LED matrix screen. Then I could have the exact result I wanted for a fraction of the price, plus I really enjoy projects involving both hardware and software work.
Build and program a fitness tracker for my home gym
I have a home gym in my garage that gets used by my family and me quite regularly. We added a whiteboard to the gym for tracking weights and workouts, but I felt like I could do better. One day I had the idea to program a web app intended to run on a Raspberry Pi and the interactions could all be through a touchscreen in the garage. Then, everyone could have their data baked up and potentially even synced to their phone.