
UofT Star
UTSTAR builds flight vehicles — a research rocket program and a VTOL program — and avionics is the nervous system of both. My work sits in embedded software: firmware that reads a suite of sensors ([IMU, barometer, GPS, magnetometer — confirm the set]), fuses and packages that data, and streams it through a telemetry pipeline to ground systems in real time.
The core of the work is the multi-sensor telemetry pipeline. Each sensor speaks its own protocol ([I2C/SPI/UART]) at its own rate with its own noise characteristics, and the job is turning that asynchronous mess into a coherent, timestamped state picture — sampled reliably, filtered sensibly, serialized efficiently, and transmitted over a bandwidth-limited radio link without dropping the data that matters. That means thinking about packet structure, prioritization (altitude during ascent beats battery temperature), and graceful degradation when a sensor drops out mid-flight.
Embedded development is a different discipline from anything web or app. Memory is measured in kilobytes. Timing is a correctness requirement, not a performance nicety — a delayed sensor read isn't slow, it's wrong. Debugging happens over a serial cable when you're lucky and via post-flight log forensics when you're not. I've learned to write defensively: watchdogs, sanity bounds on sensor values, and logging designed for reconstructing what happened after the fact, because there is no breakpoint at 3,000 feet.
Working on a team has been as formative as the code. Avionics interfaces with every other subsystem — structures dictates where boards fit, propulsion dictates what we monitor, recovery depends on our altitude events firing correctly. Interface documents, design reviews, and integration testing aren't bureaucracy; they're what makes a machine built by dozens of students actually fly.