Systems Programmer • Engine & Tools Developer
Video engines, C++20 game systems, Blender pipeline tools, and AI apps that ship.
Student at Wilfrid Laurier University (computer science and film coursework), and a working videographer and web developer since 2020, including Video Assistant for Laurier Athletics since 2023. I build video engines, game systems and pipeline tools from scratch, and ship them with live demos.
🎬 UniCreate Studio • Live Demo • Case Study
Drop in a shoot, get finished short-form clips: cut, captioned, checked and ready to post. A Python video engine behind a Next.js editor.
- Engine: transcribes on the local GPU (a 5-minute recording in 9.3 s on an RTX 4060 Ti), picks the moments, plans each clip as an EditSpec, and renders it with FFmpeg.
- Preview equals export: the editor runs TypeScript ports of the engine's motion, caption, colour and timeline code, with golden files checked byte for byte across both languages.
- Broadcast-ready output: cuts land on the 30 fps grid, sound stays locked to picture, and audio is mastered to −14 LUFS / −1 dBTP, in 9:16, 16:9, 1:1 and 4:5.
- No database server: the online demo runs the real Postgres schema and row-level security in-process with PGlite (WebAssembly).
A 2D game engine in C++20 with SDL2, built for Windows and the browser (WebAssembly via Emscripten).
- Fixed-step loop: 60 Hz physics accumulator, independent of frame rate.
- Broadphase grid: uniform 120 px cells cut collision checks from O(N²) to near O(N).
- No heap on the hot path: bullets and particles come from pools allocated at startup.
- Tools and CI: Dear ImGui profiler and animation inspector. GitHub Actions builds the MSVC and WebAssembly targets on every push and deploys the demo.
🦅 Laurier Game Day • Case Study • Helmet Shuffle Repo • Live Demo
Videoboard and broadcast graphics for Laurier Golden Hawks football: the 2026 Senior Day opener, jumbotron games, 3D helmet renders and the live-stream scorebug.
- Helmet Shuffle add-on: a Blender tool that bakes a whole shell-game routine in under a quarter of a second. Three ProRes 422 HQ variants were rendered for the Oct 17, 2026 Senior Day game.
- Readable type: title and banner text tilt to face the camera, so their lines don't foreshorten.
- Game-engine export: per-frame unit quaternions [w, x, y, z], velocity vectors and Y-up positions as JSON.
📚 StepWhiz • Live Demo • Case Study
AI study app: snap a problem, get a sourced step-by-step answer, then flashcards that make it stick.
- One core, three apps: a shared TypeScript and Preact client runs the web app (PWA), a Chrome extension and an Electron desktop app, against one zod-typed API contract.
- Sourced answers: a Fastify 5 API with a SQLite source library, running on a cloud model or a local one.
- Tested: 1,200+ unit tests and 260+ end-to-end checks.
- Private by design: no accounts, and study data stays on the device.
Also built: captainsolo.ca (React 19 and Vite on Cloudflare Workers, 58 end-to-end checks) · Suburbia (3D skateboard builder, Next.js + R3F) · Velare (3D motorcycle launch concept, three.js) · CinemaVerse (social film log on live TMDB data) · Captain Funds (fundraising platform)
- Systems & engine: C++20, SDL2, Dear ImGui, WebAssembly (Emscripten), CMake, Ninja, vcpkg
- Pipelines & tools: Python, FFmpeg, faster-whisper, Blender add-ons (bpy), GitHub Actions
- Apps & web: TypeScript, React 19, Next.js, Preact, Fastify, PostgreSQL, SQLite, Electron, Chrome extensions, Three.js / R3F, Tailwind CSS, Cloudflare Workers
- Video & motion: Premiere Pro, After Effects, Blender
