Personal and Academic Projects

EOS Theatre Moving Light Controller (2020 - In Progress)

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)

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)

Closeup of GranolaPods PCB

GranolaPods is a modular trail mix making machine, built in a team of four for our University of Waterloo Mechatronics 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)

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. Even though it is not a practical way of using these ICs, it is good educational "slow motion" look at the signals.

Linear Variable Differential Transformer (2015)

LVDT measuring a gauge block

An experiment in alternative techniques over the use of microcontrollers to interface with memory integrated circuits over the SPI protocol. Even though it is not a practical way of using these ICs, it is good educational "slow motion" look at the signals.

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.