I design software that brings hardware to life.
I'm a Mechatronics Engineering student at the University of Waterloo, and most of my experience has been in embedded software, flight software, and tools for manufacturing. Across four internships, I've worked in C, C++, and Python on everything from ESP32 peripherals and Embedded Linux to lunar-rover flight software and prototype hardware bring-up. I like the parts of software engineering where you have to figure out what the hardware is actually doing, not just what the documentation says it should do.
- Redesigned a force-calibration routine in Python and C++ around closed-loop control after identifying its constant-stiffness assumption, reducing error from 12% to 0.2%.
- Root-caused an intermittent EEPROM-write failure to a startup data flush that timed out requests after 60 ms, then made writes deterministic by polling for an idle bus first.
- Led bring-up for 16 prototype 3D printers, debugging first-run hardware and software failures and driving each through resolution with hardware, mechanical, and software engineers.
- Characterized an ultrasonic sensor in Python to trace inaccurate readings to blind-zone interference, invalidating the 80–88 mm specification and leading to a hardware revision.
- Built a Python wrapper over Embedded Linux firmware APIs for subsystem and actuator control that became the team's standard tool for NPI printer bring-up.
- Authored an Embedded Linux UART driver in C for a NASA lunar-rover sensor, compressing telemetry with a custom userspace Huffman algorithm for 30% faster downlink.
- Eliminated silent serial data corruption across 5 flight sensors by tracing packet hexdumps to struct padding and non-atomic writes.
- Devised lock-free circular buffers in C for 16 concurrent telemetry streams, preventing producer stalls during real-time sensor acquisition.
- Rewrote the cFS System Bus unit-test suite after finding 185 legacy tests no longer verified subsystem behavior, restoring meaningful regression coverage.
- Automated production harness-test creation by parsing PCB netlists with Python and generating shell scripts, reducing validation time from 8 hours to 1 minute.
- Developed a Python GUI for automated validation of a 232-kWh battery over CAN, eliminating manual cell-voltage checks during electric-boat production.
- Wrote 3 multiplexed SPI drivers in C on ESP32 under memory and GPIO constraints, debugging chip-select timing with an oscilloscope.
- Developed 81 Python HIL test scripts to automate full-system testing and validate embedded EV-charger firmware using MQTT and cloud telemetry.
- Engineered an IP-failover state machine in C across Ethernet, Wi-Fi, and LTE uplinks, keeping field-deployed EV chargers at 99.7% uptime.
- Designed a real-time load-balancing algorithm in C over MQTT that reduced charging-current imbalance by 45% across simultaneously charging EVs.
A few pieces of work I'm proud of. The details stay high-level where the work is proprietary.
Replacing a calibration guess with feedback
A production force-calibration routine assumed a constant stiffness coefficient. I redesigned it around closed-loop control so the printer could seek the target force instead of relying on the estimate.
Tracking down an intermittent EEPROM failure
An EEPROM write failed intermittently during startup. I traced it through the startup sequence and found a data flush occupying the bus long enough for the 60 ms request timeout to expire.
Making more room on a rover's telemetry link
I wrote an Embedded Linux UART driver for a lunar-rover sensor, then added a custom userspace Huffman compressor to reduce the amount of data sent over the fixed downlink.
Testing the whole charger, not just the code
At FractalEV, I built Python hardware-in-the-loop tests that exercised embedded EV-charger firmware as a full system, using MQTT telemetry to check what happened outside the individual component under test.
University of Waterloo
Mechatronics Engineering
Computer Engineering Option
Software Engineering Internships
Graduating 2028
C · C++ · Python
Linux · Embedded Systems
Let's talk.
I'm looking for a 4-month or 8-month software internship starting January 2027. I'm especially interested in embedded systems, flight software, Linux, and software that interacts with real hardware.