Projects
Most of my recent work is applied AI: agents, retrieval, and models picked for cost. I also build desktop tools, hardware and mobile apps, a lot of them at hackathons.
Most of my hackathon projects were team efforts and are labelled that way. Where I can name my part, I say it.
Case studies
Campus
Aug 2026 to nowsolo
My courses are spread across six Brightspace pages, so I built one place to check deadlines, study from slides and test a draft against the brief. Campus syncs everything into SQLite and answers from the course files with hybrid retrieval: a lexical prefilter, embeddings and a cross-encoder reranker. Its 20-tool agent logs every change it makes to my notes or due dates, and it runs on any OpenAI-compatible endpoint, local or hosted.
Campus wordmark. Open the full-size file 

Campus course hub and chat, with an exact citation. Open the full-size file
- courses, in daily use (I'm the only user)
- 6
- tests in CI on every push
- 308
- agent tools
- 20
- Python
- FastAPI
- SQLite
- embeddings
- cross-encoder reranking
- React
NixOS homelab
May 2026 to nowsolo
My laptop and a home server built from used parts run from one NixOS flake. Hermes Agent, from Nous Research, proposes the config changes, but nothing applies until I approve it, and a failed build rolls back to the last good one. One bug I won't forget: I set a WireGuard VPN as the server's default route, the peer died, and the whole machine went dark until I reset it by hand. Now the VPN lives inside the one container that needs it.


Homelab Dashboard and Service Overview. Open the full-size file
- machines, one NixOS flake
- 2
- hardened containers
- 27
- agent sessions since June 2026
- 472
- agent skills in git
- 191
- tool calls
- 58,000
- NixOS
- Nix flakes
- Docker
- Tailscale
- Hermes Agent
- llama.cpp
AWARE
Jul 2026Hack the 6ix 2026solo
Built solo at Hack the 6ix 2026. It watches a camera, listens for sounds and reads sensors, and you set automations in plain English, like "when glass breaks after 10pm, alert me." A 1B model turns that into a rule, plain code checks every rule each 500 ms, and vision, audio and the LLM all run on one $80 board with no cloud inference.


AWARE device on an Arduino UNO Q. Open the full-size file 

AWARE web dashboard. Open the full-size file
- rule checks, no LLM in that loop
- 500 ms
- Arduino UNO Q, all inference on board
- $80
- Python 3.12
- YOLOv8n
- YAMNet
- Whisper-tiny
- MiniCPM5-1B (GGUF)
- Arduino UNO Q
CareBridge
Feb 2026Spark 2026team project
Overall 3rd placeSpark 2026
Overall 3rd at Spark 2026, built with my team. We started from a winter storm that cut off a regional hospital and led to missed referrals and follow-ups. Patients check in by chat or voice, and providers get one timeline with risk signals pulled from those conversations.


CareBridge Provider Dashboard. Open the full-size file 

CareBridge Financials View. Open the full-size file 

CareBridge Pitch Slide. Open the full-size file
- React
- TypeScript
- Vite
- FastAPI
- Supabase
- Cohere
- ElevenLabs
AI and LLM
AgenticArmy
Mar 2026GenAI Genesis 2026team project
VS Code extension and FastAPI backend for running several coding agents in parallel, with a human approving the plan.


AgenticArmy Title Card. Open the full-size file 

AgenticArmy Workflow Overview. Open the full-size file 

AgenticArmy Multi-Agent View. Open the full-size file
- TypeScript
- VS Code API
- FastAPI
- Python
Gaming and Mental Health Analyzer
Mar 2026 (approx.)Dataquestteam project
scikit-learn models that predict five wellbeing risks from gaming habits, trained on a 1,000-row Kaggle dataset.


Gaming & Mental Health Results Dashboard. Open the full-size file 

Model Training & Performance Metrics. Open the full-size file 

ML Model Comparison. Open the full-size file
- Python
- scikit-learn
- pandas
Whack-A-ML
2026solo
A PPO agent learns to hit targets with a simulated arm in Unity, with curriculum learning.


Whack-A-ML Training. Open the full-size file
- Unity
- ML-Agents
- PPO
- C#
Auralis
Nov 2025Hack Western 12team project
Best AI Application Built with CloudflareHack Western 12 2025
3D virtual doctor with emotion detection and voice.


Auralis Project Overview. Open the full-size file 

Auralis 3D Characters. Open the full-size file 

Auralis Chat Interface. Open the full-size file 

Auralis Summary View. Open the full-size file 

Auralis Health Report. Open the full-size file
- Next.js
- Three.js
- face-api.js
- FastAPI
Tools and apps
ferret
Oct 2026 (approx.)solo
Local-first semantic search over text, images and PDFs in Rust: hybrid vector, FTS5 and filename search fused with RRF.
- Rust
- SQLite FTS5
- llama.cpp
Glyph
2026solo
Leader-key command overlay for Windows, so you don't have to memorize shortcuts. Per-app bindings, YAML config, ships on WinGet.


Glyph wordmark. Open the full-size file 

Glyph App Keymap. Open the full-size file 

Glyph App Overlay. Open the full-size file 

Glyph Settings. Open the full-size file
- C#
- WPF
- YAML
- WinGet
Animarker
May 2023Washington Justice Encodesolo
My first hackathon, done solo. An Android wildlife tracker: a TensorFlow CNN identifies the species and the sighting goes on a map.


Animarker Overview. Open the full-size file 

Animarker Map View. Open the full-size file 

Animarker Upload Screen. Open the full-size file
- Kotlin
- Android
- TensorFlow
SafeRoute
2025solo
Android app for reporting hazards and routing around them.


SafeRoute title card. Open the full-size file 

SafeRoute User Flow. Open the full-size file
- Kotlin
- Android
- Google Maps API
UWO Mealplan Calc
2024solo
Chrome extension that tracks meal plan spending.


Mealplan Settings View. Open the full-size file 

Mealplan Projections. Open the full-size file
- JavaScript
- Chrome Extensions API
Hardware and embedded
FLEXFIRE-X
2025solo
Forearm launcher inspired by Cyberpunk 2077. Flex your forearm and an EMG sensor fires it. Nine 3D-printed parts.


FLEXFIRE-X Demo Render. Open the full-size file 

FLEXFIRE-X Demo. Open the full-size file 

FLEXFIRE-X Exploded View. Open the full-size file 

FLEXFIRE-X Launcher. Open the full-size file
- Arduino
- EMG sensors
- 3D printing
- C++
Rubber Band Turret
2023solo
Bluetooth turret I control from an Android app.


Rubber Band Turret Build. Open the full-size file 

Rubber Band Turret. Open the full-size file
- Arduino
- C++
- Bluetooth
- Android
Wasteland
Feb 2025MakeUofT 2025team project
Horror game you play with a sensor glove.


Wasteland Gameplay. Open the full-size file 

Wasteland Wearable Glove. Open the full-size file
- Unity
- Arduino
- C#
Object-Love-Interface
Feb 2026CTRL+HACK+DEL 2.0team project
Best Useless HackCTRL+HACK+DEL 2.0 2026
IoT objects with voices and personalities.


OLI Device Open. Open the full-size file 

OLI Product Shot. Open the full-size file
- ESP32
- Arduino
- Python
- Node.js
AR and VR
Eyecandy
Sep 2025Hack the North 2025team project
Snap Spectacles AR Runner UpHack the North 2025
AR try-on of Shopify products on Snap Spectacles.


Eyecandy title card. Open the full-size file 

Eyecandy AR Demo. Open the full-size file
- Lens Studio
- TypeScript
- Snap Spectacles
VR ODM Gear Sim
Sep 2023Hack the North 2023team project
Cardboard VR sim with an Arduino glove controller.


VR ODM Gear Gameplay. Open the full-size file 

Arduino Glove Controller. Open the full-size file
- Unity
- Arduino
- C#
Omni-Reality
Sep 2026Hack the North 2026team project; the post-event work is mine
A mixed-reality assistant for the Quest 3S that answers in the room: SAM 2 highlights on the object you mean, guided steps, and furniture at life size. Built with my team, and I kept going on the spatial system after the event.


Guided Mode: a chips bag on a desk highlighted in blue, with the caption telling the user to move it to the trash. Screenshot by Tim Roch. Open the full-size file
- Unity
- C#
- Meta Quest 3S
- SAM 2
- Qwen Omni
- Gemini Live
- Python
- WebSockets
Archive: earlier builds, small games and team hackathon projects
AgntOS
2026
solo
VitalSign
2026 · DeltaHacks 2026
team project
NowAndThen
2026 · UofTHacks 13
team project
Lumen
2025 · TerraHacks 2025
Best Use of MongoDB Atlas
team; I built the Unity mini-games
Careerly
2024 · NSBEHacks 2024
3rd overall; Cohere's Challenge 1st place
team project
Cyberdeck
2026
solo
Portfolio v2
2026
solo
Street Cleaner
2023 · GameHACKS 1.0
Second Award
team project
Stupid Spotify
2025 · Stupid Hackathon @ Western
Worst UX
team project
Mōtaru
2024
solo
Zenith Tower
2024
solo
Tic Tac Toe Ultimate
2024
solo
Hackathon awards
Careerly
NSBEHacks · 2024
3rd overall; Cohere's Challenge 1st place
Team project
Auralis
Hack Western 12 · 2025
Best AI Application Built with Cloudflare
Team project
Lumen
TerraHacks · 2025
Best Use of MongoDB Atlas
Team project; I built the Unity mini-games
Eyecandy
Hack the North · 2025
Snap Spectacles AR Runner Up
Team project
CareBridge
Spark · 2026
Overall 3rd place
Team project
Street Cleaner
GameHACKS 1.0 · 2023
Second Award
Team project
Object-Love-Interface
CTRL+HACK+DEL 2.0 · 2026
Best Useless Hack
Team project
Stupid Spotify
Stupid Hackathon @ Western · 2025
Worst UX
Team project
| Event | Year | Project | Prize |
|---|---|---|---|
| NSBEHacks | 2024 | Careerly | 3rd overall; Cohere's Challenge 1st placeTeam project |
| Hack Western 12 | 2025 | Auralis | Best AI Application Built with CloudflareTeam project |
| TerraHacks | 2025 | Lumen | Best Use of MongoDB AtlasTeam project; I built the Unity mini-games |
| Hack the North | 2025 | Eyecandy | Snap Spectacles AR Runner UpTeam project |
| Spark | 2026 | CareBridge | Overall 3rd placeTeam project |
| GameHACKS 1.0 | 2023 | Street Cleaner | Second AwardTeam project |
| CTRL+HACK+DEL 2.0 | 2026 | Object-Love-Interface | Best Useless HackTeam project |
| Stupid Hackathon @ Western | 2025 | Stupid Spotify | Worst UXTeam project |