
Built from scratch. Running autonomously.




One tower. Manual dosing. Proof of concept.
A 3D-printed vertical hydroponic tower in the living room under LED grow lights. Water from a tap, nutrients dosed by hand. Proof that plants could thrive indoors with discipline and attention.

Same tower. Better growth. First telemetry.
Moved outdoors for natural sunlight. Same 27 plant sites, but stronger yields with better light and a larger reservoir. First sensors added — temperature, humidity, and pH — for the first real data. First steps toward automation.

1,200 gallons. Twelve sensors. Autonomous.
A proper greenhouse with deep water culture, NFT, and flood-and-drain in LECA. Added 11 kW water heating, a biofilter, mechanical filter, and radial flow settler. Multiple ESP32 nodes orchestrated by a Raspberry Pi. Running on its own for six months and counting.
Custom PCB, modular I/O
2-layer board designed in KiCad. ESP32-C5 with 5 STEMMA QT ports, 4 analog inputs, and Wago connectors. Plugs into any sensor or actuator.
12 sensors, automated dosing
Custom Next.js dashboard. Live camera, 12 telemetry channels, and rules that handle dosing on their own.
2 years growing, 4 harvests
Started with indoor towers, now running a full greenhouse producing green onions autonomously for over 6 months. Currently supplying a local farmers store.









Starting lettuce from seed
Multi-Camera Catheter Tracker
Sep 2024 – Present · Robarts Research Institute

Five cameras. One phantom. Millisecond sync.
A phantom mitral valve and right atrium sit at the center, ringed by AprilTag fiducial markers and five synchronized cameras. Every frame is timestamp-aligned for multi-view capture.





YOLOv26, trained across every angle.
Three thousand hand-annotated frames across all five camera perspectives. Two classes — catheter-body and catheter-tip. The grid shows live output from every camera at once.

Every ray points at the tip.
Each camera casts a ray from its center through its detected 2D point. The rays meet at the catheter's 3D position in real time. Fit through frames gives orientation. Rendered live in Three.js.
Autonomous Sorting Robot
Designed and built an autonomous robot for a timed competition. Navigate a course, identify green gems by color, collect them, and return to home base. 3D-printed chassis with ESP32 running PID on all four drive motors, ultrasonic detection, and a servo-actuated sorting gate.
Let's build something interesting.
Waterloo, ON. Available September 2026.