Electrical Engineering @ University of Waterloo
Firmware · Embedded Linux · Hardware/Software Systems
I build embedded systems close to the hardware, mostly in C and C++.
My background is in bare-metal firmware, RTOS systems, device drivers, communication protocols and hardware debugging. Recently I've been spending more time on embedded Linux, networking and systems that combine Linux compute with microcontroller firmware.
I'm currently part of the firmware team for Midnight Sun Solar Racing & Waterloo Aerial Robotics at the University of Waterloo.
STM32 · ESP32 · PIC18 · Raspberry Pi · FreeRTOS · CAN · UART · SPI · I2C · Ethernet
Custom 2K 120 Hz VR headset built around an STM32F411, 9DoF IMU, LiDAR and a custom PCB.
Wrote the firmware for sensor acquisition and orientation fusion, then streamed head tracking over USB HID into SteamVR.
C STM32 USB HID I2C IMU Fusion LiDAR KiCad
Building a TCP/IP stack from scratch in C on Linux using a TAP interface.
Implemented Ethernet, ARP and IPv4 handling alongside TCP connection state, retransmission and timeout logic.
C Linux TAP Ethernet ARP IPv4 TCP
Built an on-device perception system using a Raspberry Pi 5 and Hailo-8L.
Runs object detection locally, stores last-seen object locations and controls a pan-tilt camera to search its environment.
Raspberry Pi 5 Hailo-8L YOLOv8 OpenCV PWM
Most recently at Belimo, writing bare-metal C for PIC18 controllers and debugging CAN, UART, I2C, timing and controller state issues.
Previously at AeroCardia, building C++ sensor drivers, FreeRTOS data pipelines and BLE firmware for a wearable medical device.



