The Cool Stuff I make.
Realtime NYC Subway Map Visualization
Real-time LED visualization of NYC subway train locations using MTA data and an ESP32 microcontroller.
I built a physical LED map of the NYC subway that mirrors train locations in real time. A containerized Python (Flask) server pulls GTFS-Realtime data from the MTA and streams it over WebSockets to an ESP32, which runs custom C++ firmware to manage real-time state for 500+ LEDs and keep a persistent connection alive 24/7. It was a fun mix of embedded systems, live data processing, and a fair amount of soldering to get the whole thing working end to end.
Built with: C++, Python (Flask), Docker, WebSockets, ESP32, PlatformIO, and GTFS-Realtime.
WDW Live Information
React web app that displays current wait times, next show times, and restaurant walk-up availability for each Walt Disney World theme park.
Displays the wait time and status of every ride, the show status and next showtime, and restaurant walk-up availability at the four main Walt Disney World theme parks by using themepark.wiki's RESTful API.
Built with: React, NodeJS, Javascript, RESTful API, and GitHub Pages.
Live MLB Scoreboard (Wrigley Field Replica)
A replica of Wrigley Field's hand-operated scoreboard, built from 15 LED panels and driven by live MLB data.
A Python service on a Raspberry Pi tracks every game in progress through the MLB Stats API. A Rust renderer turns that into frames, and Rust firmware on an RP2350 microcontroller drives the panels. A Svelte web app controls the board and can pull up any date back to 1901 from an archive of more than 45,000 days of games. The software is running on a Raspberry Pi and Pico now, and the full 15-panel build is in progress.
Built with: Python, Rust, TypeScript, Svelte, Raspberry Pi, RP2350, WebSockets, SQLite, and Docker Compose.
Accessible Generative Art
Randomly generated art that intentionally uses a color-blind-friendly color palette.
Art should be accessible. About 5% of the world has some form of color blindness, but it's rarely considered when something is being designed. That's not out of malice; most designers just never run into the problem themselves. My program makes a conscious effort to include people with color blindness by using a color-blind-friendly palette. It randomly generates art and saves it as an SVG, randomizing the background color, number of shapes, and shape types along the way. Since it's SVG, the art scales losslessly.
Built with: Python, Hackathon, Award-Winning, Pycairo, SVG, and NumPy.
More Projects
RedDictio
Uses machine learning to analyze subreddit comments for hate and toxicity.
RedDictio was a team project to test our ability to build a webpage, connect it to a hosted database, scrape comments from Reddit, and score them with a neural network. It touched on a bit of everything: database design, data engineering, data science, machine learning, cloud computing, and web development.
Built with: Python, Flask, API, Google Cloud, AWS, Docker, SQL, and Keras.
Military-to-Civilian Terminology Translation Tool: Analysis of Job Data in Technology
Using real job postings to help veterans make resumes to transition from military to civilian jobs.
Part of my senior project, my teammates and I built a system that scrapes Indeed for job postings in tech-related fields, then uses NLP to analyze the data. That data feeds into resume creation, and users can see the source of each data point and click through to the original job posting if they want to apply.
Built with: Python, Flask, AWS, NLP, MySQL, GitHub, Docker, Jira, and Beautiful Soup.
Manufacturing Production Prototype
Simulates the creation, production, and logging for a manufacturing plant.
This project is a prototype for a manufacturing plant. It has a database that stores the products it can produce and logs each production run, including the product's serial number and the date it was produced. It was a semester-long project for COP 3003, Object-Oriented Programming, meant to demonstrate a working knowledge of encapsulation, polymorphism, inheritance, and abstraction.
Built with: Gradle, Java, JavaFX, Scene Builder, IntelliJ, H2 DB, and OOP.
Asteroids!
Modified version of the classic arcade game Asteroids!
I built a modified version of the classic arcade game Asteroids using C++, SFML, and OpenGL, with a simple vector-math-based physics engine to give the spaceship realistic motion as it navigates the asteroid field.
Built with: C++, SFML, OpenGL, OOP, and Xcode.
Traffic Light Simulator
A traffic light prototype with a pedestrian crosswalk.
I built this traffic light using assembly language, hand-wiring it myself. It uses global interrupts, pointer arrays, and timers so the microcontroller can respond to external events in real time, manage data more efficiently, and trigger events at specific intervals.
Built with: Assembly, Arduino, and Atmel Studio.
Pathfinding Visualizer
KnightHacks 2020 entry: visualizes how the A* pathfinding algorithm works.
The user picks the start and end nodes and can place walls or obstacles on the grid. The program then runs a pathfinding algorithm (A* in this case) to find the shortest path, visualizing which nodes it searches along the way and the final path it finds. It's a handy way to see how different pathfinding algorithms behave in different scenarios.
Built with: Python, Pygame, A*, and PyCharm.