Personal, Academic, and Professional Projects

LumiRace Slotcar Lighting Controller (2023 - In Progress)

Photo of LumiRace powering the lights in a slot car

LumiRace is the world's most advanced lighting controller for slot cars. Designed for maximum realism and immersion, it features auto-dimming headlights, brake lights that react accurately to the car's motion, and hazard lights that automatically activate when the car de-slots. LumiRace can be installed without any soldering required, and customized with easy-to-use PC software.

Chat o' Lantern (2023)

Animation showing multiple lighting emotes of Chat o' Lantern

Chat o'Lantern is a friendly AI trapped in a Jack o' Lantern... with a dark and sinister alter-ego. It listens to you and responds in unique ways. No audio or responses are hardcoded - everything you hear is created on-the-fly using AI APIs for transcription, response, and voice generation.

Read on to learn more... if you dare.

Laser Diode Analyzer (2020 - 2022 | World Star Technologies)

Image of the Laser Diode Analyzer

The Laser Analyzer is an advanced and user-friendly tool to test laser diodes in production environments. In seconds it plots the diode's output power, voltage and feedback photocurrent as a function of input current. I acted as the project leader and was a majority contributer to the STM32 C++ codebase, where I programmed low-level hardware, the user interface, and high-level application logic. Other end-to-end contributions include mechanical design and prototyping, PCB layout, board bring-up, documentation, ad copy, product videos, and more.

Low-Power Capacitive Soil Tracker (2022 - In Progress)

Image of the Soil Track

This soil tracker helps you grow healthier plants by clearly showing how your plant is drinking, and when you need to water next. Unlike other moisture meters, it is designed to be left in the plant 24/7 without corroding, reducing the damage to roots caused by repeated checks. The STM32 microcontroller measures the capacitance of a custom probe inserted into the soil, calculates the moisture content and displays the results on a crisp e-paper display. A minimalistic interface promotes a closer, distraction-free connection with the plant itself.

EMRSNxEOS Theater Lighting Control System (2020 - 2022)

EMRSNxEOS on a breadboard

A collaboration with Emerson Kafarowski, the EMRSNxEOS Moving Light Controller is an open-source portable programming wing for use with theatrical lighting systems. Lighting consoles are generally large and expensive, limiting their use in small and non-traditional venues. The goal is to build a customizable hardware platform for lighting designers that maintains the efficiency and ease of use granted by more expensive lighting consoles. The system is developed in C++ for the ESP32, and communicates with the EOS lighting software using Open Sound Control (OSC).

HapticEye Clock (2019-2020)

Image of HapticEye PCB

Regularly faced with the problem of waking up in the middle of the night and being unable to open my eyes to read a normal clock, I designed a clock that uses an alternative method to communicate the time. The user can choose from a haptic mode - where the time is relayed by a sequence of vibration pulses - or audio mode, where the clock speaks the time out loud.

calc.50x.ca Hex Decimal Binary Converter (2020-2021)

UI of calc.50x.ca

My favorite website for converting between hexadecimal, decimal and binary went down in November 2020, so I set out to recreate it from scratch. I used it as an opportunity to learn JavaScript and CSS Grid. Best of all, I got my favorite converter app back for my own use on other projects!

GranolaPods Modular Trail Mix Making Machine (2019 | University of Waterloo)

Closeup of GranolaPods PCB

GranolaPods is a modular trail mix making machine, built in a team of four for my Fourth Year Design Project (FYDP). I designed the circuit, PCB and firmware for a modular motor control board. I also developed the front-end user interface and back-end system control software.

5" FPV Racing Quadcopter (2018)

Top view of drone, next to a plant

I have been a fan of R/C cars and helicopters for a long time, and was fascinated by the speed and agility of racing quadcopters when they first appeared on the market. As my first foray into the hobby and to learn more about these machines, I built my own 5" FPV racing quadcopter.

RS-485 ROV Controller with Telemetry Link (2017 | University of Waterloo)

Image of Controller

As part of a design project to build a (Remotely Operated Vehicle) ROV to navigate an underwater course, I designed an AVR-based controller to drive the ROV by tele-operation over RS-485. In addition to the tele-op mode it also features a telemetry readout from sensors aboard the ROV and a macro record/playback function.

ALIAneS Nintendo Entertainment System Emulator (2016)

Animated view of ALIAneS playing Donkey Kong

This is a work in progress (but functional!) emulator for the Nintendo Entertainment System (NES). Using it you can play games such as Super Mario Brothers and Donkey Kong from cartridge ROM memory dump files on your computer. It emulates all official opcodes of the 6502 Microprocessor. It emulates the 2C07 Picture Processing Unit on a scanline-by-scanline level, though this code is still in development.

LED Strip PWM Controller (2016)

Circuit Board of PWM Controller

This controller board was developed to efficiently dim an off-the-shelf 12V LED strip, for use as accent lighting on a boat. I designed the circuit and PCB from scratch, and assembled and tested it myself.

No-μController EEPROM Reader (2016)

Circuit on a breadboard

An experiment in alternative techniques over the use of microcontrollers to interface with memory integrated circuits over the SPI protocol. By replacing digital signals with buttons and LEDs, a user can visualize how a microcontroller behaves when interacting with such devices. Even though it is not a practical way of using an EEPROM, it is good educational "slow motion" look at the process.

Linear Variable Differential Transformer (2015 | University of Waterloo)

LVDT measuring a gauge block

Based on the principles of electromagnetic coupling, LVDTs are capable of extremely high precision measurements. In a team of four we built one from scratch using scrap parts and various electronics components, including discrete op-amps as a signal amplifier and an Arduino for analog-to-digital conversion and display.

Java Infinite Monkey Theorem Model (2013-2014)

Sample output of the IMT program

This application simulates the Infinite Monkey theory (which states that a monkey, typing into infinity will eventually type a well known piece of literature) by creating sentence-like gibberish and finding English words. It has evolved from its first form to become much faster by implementing more efficient search algorithms.

Pacman 3000 (2012)

Screenshot of Pacman3000

Pacman 3000 was developed as a demo for a grade 9 business trade show. Starring Pacman in a fully 3D world, the player must collect coins while navigating the terrain, avoiding ghosts and laser turrets.