Projects

StatShot

StatShot is a golf analytics iOS app built collaboratively with my Hopkins golf team Co-Captain Ryan Coffey. StatShot allows golfers to quickly and easily input round data, and then proceed to analyze their rounds using an innovative new technique called Strokes Gained. Strokes Gained allows golfers to see exactly which part of their game needs the most practice. We released the first public version of StatShot just two months after its inception.


StatShot uses SwiftUI and SwiftData

Landing Page

6502 Breadboard Computer

This 6502-based computer is based on Ben Eater's design. Because it sits right between the low-level hardware I built in my 8-bit CPU project and the high-level software I generally deal with, this project was simultaneously capable enough to teach me real assembly programming and yet simple enough for a beginner to understand. I extended Ben Eater's design with a PS/2 keyboard interface and a simple text editing program.


This computer uses WDC 65C-Series ICs and 6502 Assembly

Source Code

Discord Imitator Project

The Imitator Project created a Discord bot that would imitate one of my good friends. It queries Anthropic Claude with a prompt and contextual conversation data to get a response to send to the chatroom. I updated and extended DiscordKit, created a new Anthropic Swift library, created a new ImitatorAI Swift library, and deployed a custom implementation of those libraries onto my personal server.


The Imitator Project uses Swift, SwiftAnthropic, DiscordKit, and ImitatorAI.

8-Bit Breadboard CPU

Built over the span of about 2 years, this 8-Bit breadboard CPU is based on Ben Eater's design and tutorials. This project has given me a deeper understanding of computer architectures and how they work on an extremely low level. Though it isn't very powerful, it is a great low-level representation of real computer architecture and microcode.


This CPU uses TI 74LS-Series ICs

The 8-Bit CPU

More Projects

Study Group Finder (HackCMU 2024)

Close this Dialog

Study Group Finder was a small project built in no more than 10 hours for the HackCMU 2024 Hackathon. It is not feature-complete, but it was built very quickly and is very extensible, built with a robust backend.


Study Group Finder was built using Firebase and Next.js

Memeinator

Close this Dialog

Memeinator is an iOS app that allows you to easily change regular text into meme text, currently available on the App Store for free. It includes complex, layered text transformations and a keyboard extension. Memeinator is monetized with In-App-Purchases using StoreKit 2. Memeinator's source is robust and well-documented, and open-source.


Memeinator uses Swift, SwiftUI, StoreKit, and KeyboardKit.

Portfolio

Close this Dialog

This website is just as much a place to show off my projects as it is a showcase of my design and development skills. It's built with basic HTML and CSS, although it would be nice to someday rewrite it in a library like SolidJS. It's hosted on my homelab, and it's a great place to find lots of different information about me.


My Portfolio uses HTML5, CSS3, and JavaScript.

Memeinator Site

Close this Dialog

The Memeinator landing page is a simple yet beautiful website built using SolidJS. After my experience with SwiftUI and declarative UI, SolidJS came very naturally to me and I find it much more convinient to use than just basic HTML/CSS. It is hosted on my Homelab.


HTML CSS SolidJS

Reggiebot

Close this Dialog

Reggiebot is a small Discord Bot intended to send pictures as replies to messages. I intended to help build my skills in the Rust programming language by creating a small, superficial project in the Rust ecosystem. Through this bot, I've learned the basics of Rust and I've learned about automatic deployment techniques using Docker. It's named after a close friend of mine.


Reggiebot uses Rust, Serenity, and Docker.

DiscordKit

Close this Dialog

DiscordKit is a proof of concept library for interacting with the Discord API. While DiscordKit's API coverage is extremely small and it is surely not ready for use in a production project, it is a robust foundation that could be easily extended to include far more of the API.


DiscordKit uses Swift and Vapor.

Source Code

Aer

Close this Dialog

Aer 1 is an advanced Discord bot that is used for moderation and other administration tasks. It can easily be configured and deployed. It currently runs in a number of servers and is available to self-host.


Aer uses Node.js, Yarn, Discord.js, and PM2.

Source Code

Helium

Close this Dialog

Helium is my home server, my playground for learning server-side technologies and selfhosting. It currently hosts all of my websites, a Nextcloud instance, a VPN, a mailserver, a Minecraft server, a Jellyfin media server, and more. Each service is behind a reverse proxy and every service is completely Dockerized, running on Rocky Linux.


My Homelab uses Docker and Rocky Linux.

The Dumptruck

Close this Dialog

The Dumptruck is hydroponics automation and testing robot built collaboratively with Davis Bachner. Davis worked on most of the hardware, and I wrote the software. The Dumptruck can support three plants, each with different nutrient schedules, useful for A/B testing. The Dumptruck includes a web interface, scheduler, motor driver, and a pH sensor all running on a Raspberry Pi and an Arduino. The Dumptruck has an advanced, modular and extensible project architecture. The Dumptruck's source code is open-source.


The Dumptruck uses HTML/CSS/JS, Express.js, Python, Raspberry Pi, Arduino, Redis, and more.

Source Code