PROJECTS

I designed a local Ollama-based personal assistant that summarized New York Times articles using real-time Text-to-Speech. The system refreshed its dataset daily from a live RSS feed and answered both current and historical questions stored and vectorized locally.
2024

NYT Large Language Model (LLM)

I designed a local Ollama-based personal assistant that summarized New York Times articles using real-time Text-to-Speech. The system refreshed its dataset daily from a live RSS feed and answered both current and historical questions stored and vectorized locally.

Originally meant to help me clean my room remotely, this three-wheel robot evolved into a PS4-controlled rover with a camera, ultrasonic sensor, and claw arm. Built with Raspberry Pi and OpenCV, it detected and grabbed 3d-printed green cubes autonomously or via controller. (Unfortunately, it never quite mastered room cleaning).
2019

Raspberry Pi Robot

Originally meant to help me clean my room remotely, this three-wheel robot evolved into a PS4-controlled rover with a camera, ultrasonic sensor, and claw arm. Built with Raspberry Pi and OpenCV, it detected and grabbed 3d-printed green cubes autonomously or via controller. (Unfortunately, it never quite mastered room cleaning).

I designed a custom ESP32-based environmental controller for mushroom cultivation (the legal kind). Built on a custom KiCAD PCB, it controlled humidity, UV lighting, PC fans, and a Peltier element for heating/cooling. It also included an OLED interface and internet connectivity for monitoring.
2024

Mushroom Environment Controller

I designed a custom ESP32-based environmental controller for mushroom cultivation (the legal kind). Built on a custom KiCAD PCB, it controlled humidity, UV lighting, PC fans, and a Peltier element for heating/cooling. It also included an OLED interface and internet connectivity for monitoring.

I built a quadcopter powered by a Raspberry Pi with an onboard camera, GPS, and Bluetooth/WiFi control. The project explored PID flight control and quadcopter dynamics—the Raspberry Pi wasn't ideal for flight control, but the lessons were invaluable.
2022

Raspberry Pi Quadcopter

I built a quadcopter powered by a Raspberry Pi with an onboard camera, GPS, and Bluetooth/WiFi control. The project explored PID flight control and quadcopter dynamics—the Raspberry Pi wasn't ideal for flight control, but the lessons were invaluable.

For a 3 day UMass Amherst hackathon, I developed VibeQ, an app that let multiple users vote on the next Spotify song in a shared queue via QR code. Built with React Native (Expo) and Firebase, it won two runner-up awards at a UMass Amherst hackathon.
2021

VibeQ - Spotify Group DJ App

For a 3 day UMass Amherst hackathon, I developed VibeQ, an app that let multiple users vote on the next Spotify song in a shared queue via QR code. Built with React Native (Expo) and Firebase, it won two runner-up awards at a UMass Amherst hackathon.

I built a 2D physics simulator in Python using Pygame, featuring gravitational bodies, instantaneous velocities, and dynamic interactions. Users could create, move, and observe objects as they interacted under Newtonian forces.
2018

Newtonian Physics Simulator

I built a 2D physics simulator in Python using Pygame, featuring gravitational bodies, instantaneous velocities, and dynamic interactions. Users could create, move, and observe objects as they interacted under Newtonian forces.

I built the Beamshyft website to connect developers to cost-efficient interior materials. Developed with Next.js, it enabled users to request custom furnishings directly from producers. Now, the company has pivoted to focus on consumer-facing distribution, and I'm proud to have contributed to its early growth.
2025

Beamshyft - Lower Construction Costs for Developers

I built the Beamshyft website to connect developers to cost-efficient interior materials. Developed with Next.js, it enabled users to request custom furnishings directly from producers. Now, the company has pivoted to focus on consumer-facing distribution, and I'm proud to have contributed to its early growth.

To improve print quality on my budget 3D printer, I designed a custom fan mount and nozzle system in Fusion 360. The upgrade significantly improved cooling performance, overhangs, and overall print precision.
2017

3D Printer Cooling System

To improve print quality on my budget 3D printer, I designed a custom fan mount and nozzle system in Fusion 360. The upgrade significantly improved cooling performance, overhangs, and overall print precision.

To avoid double-feeding our cat Kevin, I soldered a WiFi-enabled smart button that logs and displays feeding times using an ESP8266, SSD1306 OLED, and a single button. The device fetched NTP time and kept everyone honest. Including Kevin.
2025

FeedKevin! - Pet Food Timer

To avoid double-feeding our cat Kevin, I soldered a WiFi-enabled smart button that logs and displays feeding times using an ESP8266, SSD1306 OLED, and a single button. The device fetched NTP time and kept everyone honest. Including Kevin.

I implemented Conway's Game of Life in C++ and color-graded cells based on the rule they followed, exploring how simple rules produced complex patterns.
2020

Conway's Game of Life (C++)

I implemented Conway's Game of Life in C++ and color-graded cells based on the rule they followed, exploring how simple rules produced complex patterns.

I created a modern blockbreaker game using JavaScript and an HTML5 canvas. It featured multiple levels, progressive difficulty, and crisp collision physics.
2019

Blockbreaker

I created a modern blockbreaker game using JavaScript and an HTML5 canvas. It featured multiple levels, progressive difficulty, and crisp collision physics.

In high school, I wrote a Swift-based mobile app that aggregated grades, homework, and schedules. The IT department mistook it as a student privacy issue and issued a cease-and-desist. An early lesson in innovation (and red tape).
2018

MyHS - High School Student Portal

In high school, I wrote a Swift-based mobile app that aggregated grades, homework, and schedules. The IT department mistook it as a student privacy issue and issued a cease-and-desist. An early lesson in innovation (and red tape).

Because living in an attic made it hard to tell who was home, I created an ESP8266-based device that detected nearby phones by MAC address and sent notifications. I eventually decommissioned it because it's creepy.
2016

Anybody Home?

Because living in an attic made it hard to tell who was home, I created an ESP8266-based device that detected nearby phones by MAC address and sent notifications. I eventually decommissioned it because it's creepy.

To prevent frozen pipes during winter, I built a breaker panel monitor that detected circuit trips and sent notifications via IFTTT. It was a reliable, low-cost safeguard, and far cheaper than calling an electrician... though we still did that.
2023

Breaker Panel Monitor

To prevent frozen pipes during winter, I built a breaker panel monitor that detected circuit trips and sent notifications via IFTTT. It was a reliable, low-cost safeguard, and far cheaper than calling an electrician... though we still did that.

Because Wordle was too easy, I created Curdle: a Wordle-style game featuring real five-letter cheese names (There are 42, in case you were wondering. And yes, it probably would have been better to include all cheeses, hangman-style). Built with JavaScript, it refreshed daily and offers a flavorful test of dairy vocabulary. Feel free to give it a try!
2022

Curdle - Wordle for Cheeses

Because Wordle was too easy, I created Curdle: a Wordle-style game featuring real five-letter cheese names (There are 42, in case you were wondering. And yes, it probably would have been better to include all cheeses, hangman-style). Built with JavaScript, it refreshed daily and offers a flavorful test of dairy vocabulary. Feel free to give it a try!