Introduction
I'm a full stack developer with 10+ years of experience shipping software, from payment platforms and customer portals to 3D marketing apps and hybrid mobile products.
Away from work I'm a game jam regular, always tinkering on a side project (and playing too much Age of Empires II: DE).
Work
Sonar SoftwareSoftware Engineer → Senior Software Engineer · Full-time
Three products over five years: the field-tech mobile app, payments and billing on the core platform, and the customer portal.
Mobile: Field Tech
- Sole developer of the app ISP installers use to manage jobs, tickets and inventory
- Built its offline sync so technicians keep working without a connection
- Rebuilt it from Flutter in React Native and TypeScript, and now building white-label versions on the same codebase
- Shipped card scanning for on-site payments, signed contracts, iOS Live Activities and the mobile CI/CD pipeline
Core Platform
- Co-built SonarPay's disbursements, disputes, card verification and refunds on Payrix with one other developer, starting on the front end and now working full stack
- Built flexible 30-day billing with proration alongside the same developer, released behind feature flags
- Built Print-to-Mail with another developer, one of a set of white-label add-ons like SMS that customers can turn on à la carte
- Split 35+ global frontend services into explicit imports, fixing circular dependencies and webpack memory issues
- Built an AST-based code generator for type-safe enums used across the codebase
Customer Portal
- Rebuilt the subscriber payment flow with auto-pay and multi-currency, and now rebuilding the rest of the portal
TS, Vue, PHP, Laravel, GraphQL, PostgreSQL, Flutter/Dart, Riverpod, Drift/SQLite, React Native, Redux Toolkit, Apollo, Auth0, Azure Pipelines, GitHub Actions, Fastlane, Docker
XelloFull Stack Web Developer · Full-time
- Maintained and evolved a micro-frontend shell application orchestrating web-component-based modules
- Migrated legacy AngularJS components, services, and unit tests to Angular and Jest
- Localized the product for the UK market, adapting flows to a different school system
- Improved performance of existing SQL queries and authored new stored procedures
TS, SCSS, Angular, NgRx, RxJS, .NET, SQL, Slack API, Jest, Jenkins, Octopus, Azure
WuzzalsFull Stack Web Developer · Contract
- Sole developer maintaining and extending the Laravel + Vue platform for a personalized children's-book company
- Automated the book-cover creation pipeline with Photoshop Action scripts and dynamic image resizing
- Refactored components for reusability and improved site-wide performance and design
- Launched comic books as a new product line and introduced a Trello workflow adopted company-wide
- Managed support for users, writers, artists, and teachers
Laravel, Vue, Photoshop scripting
TrailerworksFull Stack Web Developer · Contract
- Built the company's interim and final marketing sites in React
- Wrote technical estimates for client RFPs
- Managed the existing Magento e-commerce store
- Launched a Shopify storefront for honey produced on site
React, Magento, Shopify
GrassriotsFull Stack Web Developer · Contract
- Cut campaign delivery time from over a month to about ten days by streamlining the development workflow
- Rebuilt the Webpack configuration, improving build reliability, performance, and developer speed
- Added multilingual support with languages easy to add or remove
- Modernized the codebase from ES5 prototypes to ES6 classes
- Delivered campaigns for UNICEF Canada, World Vision, Ecojustice, and Cystic Fibrosis Canada
JS (ES6), Webpack, Babel
GEFrontend Developer · Contract
- Built interactive 3D marketing apps in Babylon.js for GE Healthcare, Energy, and Grid Solutions
- Prototyped and benchmarked modern frontend frameworks against GE's in-house Haxe stack to guide platform decisions
- Rebuilt a Flash-based conference showcase as an HTML5 Vue app shipping to web and desktop (Electron) with offline storage
Babylon.js, Vue, Electron, Haxe
IndegeneFrontend Developer · Full-time
- Developed Angular 2 components and themed an Ionic 3 hybrid web/Android app for the pharma industry
- Designed backend microservices in collaboration with the Java Spring team
- Implemented Redux state management and custom offline state handling for Android
- Internationalized the app and maintained support down to Android 3.0 tablets
- Interviewed and onboarded new hires
Angular 2, Ionic 3, Redux, Java Spring
Digital EchidnaFull Stack Web Developer · Full-time
- Delivered front-end themes and custom back-end modules across Drupal client sites
- Built Python scrapers for content migration and maintained a CodeIgniter application
- Represented the company at Drupal 8 code sprints in Ohio and Toronto
- Built sites to meet AODA accessibility standards
- Onboarded co-ops, interns, and new hires
Drupal 7/8, PHP, Python, CodeIgniter
ProjectsView all →
In developmentReality64
A cross-platform desktop editor and engine for making real Nintendo 64 games: author scenes, cutscenes, and UI on PC, then build a .z64 ROM that runs in an emulator or on original hardware.
Free demoCondoPulse
Statuspage.io for condo buildings: tracks elevator uptime, amenity outages, and per-unit issues, giving residents, boards, and property managers a public accountability record.

Pandemonium
A souls-like boss-battle game for the Nintendo 64, built in C for the 2025 N64brew Game Jam. The making-of video has over a million views on YouTube.

E-Ink Image Converter
A browser-based tool that converts images into dithered BMP files ready for e-ink displays.

Image Comparison Tool
A simple web tool for visually comparing before-and-after images with drag-and-drop support, plus an MCP server for AI-driven workflows.

Lightbox Quote Checker
Check whether your message will work within the constraints of a letterboard lightbox.
- Reality64 — A cross-platform desktop editor and engine for making real Nintendo 64 games: author scenes, cutscenes, and UI on PC, then build a .z64 ROM that runs in an emulator or on original hardware.
- CondoPulse — Statuspage.io for condo buildings: tracks elevator uptime, amenity outages, and per-unit issues, giving residents, boards, and property managers a public accountability record.
- Pandemonium — A souls-like boss-battle game for the Nintendo 64, built in C for the 2025 N64brew Game Jam. The making-of video has over a million views on YouTube.
- E-Ink Image Converter — A browser-based tool that converts images into dithered BMP files ready for e-ink displays.
- Image Comparison Tool — A simple web tool for visually comparing before-and-after images with drag-and-drop support, plus an MCP server for AI-driven workflows.
- Lightbox Quote Checker — Check whether your message will work within the constraints of a letterboard lightbox.
Skills
My core stack
Also experienced with
Education
Interactive Media Specialist
Fanshawe College · 2014–2015
3D Character Design & Animation
Fanshawe College · 2013–2014
Interactive Media Design
Fanshawe College · 2011–2013