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-powered prediction system for MLB games, trained on 13,000+ games (2021–2026) using a RandomForestClassifier competing against XGBoost each training run. Achieves ~60% accuracy versus the 52.5% baseline — with walk-forward cross-validation to prevent data leakage.
Includes a live FanDuel odds scraper (Playwright), a bet tracker, and weather/ballpark/umpire features pulled from the MLB Stats API and Open-Meteo. The key architectural decision: Python trains and exports the decision trees as JSON, then Node.js walks those trees directly for inference — no Python dependency at request time.