A collection of projects spanning mobile apps, browser extensions, embedded systems, and games. Open to work — let's build something.
An interactive mobile language learning app built for Android as part of a research study in the Mobile User Interfaces course at York University. GenGO! implements a spaced repetition system alongside a range of unique interaction methods — tapping, typing, voice control, and dragging — so users can study foreign languages in different ways.
The results were genuinely surprising: more interactive study styles actually yielded lower test scores, contradicting the initial hypothesis. The research findings made the project far more interesting than just shipping an app.
Built for Hack the 6ix 2025, Post Guardian is a Chrome extension that helps users pause and reflect before posting on social media. It analyzes the tone of a draft in real time using the Gemini API and prompts users with thoughtful feedback — encouraging more intentional and responsible sharing online.
The goal was to blend thoughtful UX design with real-time AI analysis to promote digital mindfulness without interrupting the posting experience.
An embedded heart rate monitor built as the final project for the Embedded Systems course at York University. Pulsefex captures and displays real-time heart rate and SpO2 levels using the MAX30102 pulse oximeter and TMP102 temperature sensor, running on an STM32WB55RG microcontroller with output to a SSD1306 OLED screen.
My first embedded systems project — I was eager to get deep into the hardware side and contribute as much as possible to the circuit design and firmware.
An ML model that predicts the winner of every MLB game, trained on every regular-season game since 2021 and walk-forward validated at 56.6% over 12,138 out-of-sample games, +3.6 pts over always picking the home team. An early 60.5% result turned out to be a data leak; after rebuilding every stat point-in-time, measured improvements (Marcel-style pitcher projections, and a regularized logistic regression that beat both random forest and XGBoost) got it to an honest 56.6%.
Fully serverless: a GitHub Actions pipeline runs three times a day, rebuilds 59 features from the MLB Stats API and Open-Meteo, retrains in Python, scores games with a pure-JS inference engine, and publishes static JSON to GitHub Pages. Every pick is locked before first pitch, explained factor by factor, and graded publicly.