Skip to main content

Experience

Sr. Software Engineer at BenchSci, Toronto — GenAI & Webapps Team

Toronto, Ontario | April 2025 — Present

I am currently a member of the GenAI & Webapps team at BenchSci. We are building the disease biology generative AI platform for pharmaceutical R&D

I am working with React, Python, LlamaIndex (Gen AI workflows), FastAPI, Prefect.

Sr. Software Engineer at Clio — Data Migration Team

Toronto, Ontario | November 2023 — April 2025

  • Unlocked institutional customer segment by delivering Windows/MacOS/Linux desktop app within 9 months for terabyte-scale migrations of legal documents
  • Established coding, testing and CI/CD patterns in Node/React

Staff Engineer at Peerly

Burlington, Ontario | January 2022  — November 2023

I re-joined Peerly after a 10-year hiatus at the request of the CEO to help prepare their product for the 2024 United States election season. Peerly grew out of the Canadian political campaign services & polling firm, PrimeContact, which I helped start in 2006.

  • Collaborated on Peerly’s first AI feature using Google large language models for voter sentiment analysis, resulting in multiple industry awards and vastly increased capacity of our customers to understand voter concerns (Vertex / Gemini LLMs, PubSub)
  • Built video-transcoding microservice for MMS/SMS messaging (Python, PubSub)
  • Implemented event-sourcing pattern to enable event-driven microservices (Python, MySQL)
  • Collaborated on migrating bare-metal MySQL 5.1 database server to Google CloudSQL
  • Built integration drivers for our telecommunications vendors (Go, Python)
  • Built network VPN link with a large US telecom company (IPSec, network proxy, Google Cloud Networking)

Sr. Software Engineer at Nulolgy — API Team

Toronto, Ontario | August 2018 — December 2021

  • Built ETL tools used to integrate reports from supply chain vendors (TypeScript)
  • Built bespoke integrations with platforms such as NetSuite (TypeScript, Ruby, Java)
  • Added a GraphQL API to Nulogy’s Ruby on Rails monolith (Ruby)
  • Conducted technical interviews, mentor developers in pair programming
  • Built the initial implementation of Nulogy’s data warehouse using Kafka, Debezium, Snowflake

Full Stack Engineer at FreshBooks

Toronto, Ontario | December 2015 — August 2018

  • Delivered features on an Agile product development team (Python, JavaScript)
  • Collaborated on improving software development patterns as a member of the front-end committee (JavaScript)
  • Helped reduce flaky end-to-end tests in our CI pipeline as a member of the DevOps team (Jenkins, Groovy)

Full Stack Engineer at Beanfield MetroConnect

Toronto, Ontario | April 2012 — December 2015

  • Delivered network provisioning, sales and CRM tools for Toronto’s coolest internet service provider (Python)
  • Collaborated with overseas network hardware vendor to build WiFi management firmware used in Beanfield’s residential modems

Technical Founder/Lead Developer at PrimeContact & Peerly

Hamilton, Ontario | May 2006 — April 2012

I was one of the founding members of PrimeContact (later named Peerly), a political campaign services and polling company used by the major parties in Canada. Our company grew into the top platform in North America for contacting members and voters in the political, NGO and fund-raising space.

  • Built data warehouse for election polling results for use in Canadian and US elections (Python, PHP)
  • Built customer portals to streamline invoicing, ordering and delivering polling results to campaign staff (Python, Django, PHP)
  • Built payroll system for use by 250+ employees during the 2009 - 2010 Ontario provincial election (Python, MySQL)
  • Performed a technical platform audit during the purchase of a subsidiary company

Other Experience
#

Google Summer of Code — Summer 2009

My Summer of Code project was an email collection framework for the GNOME Desktop.  With the help of my mentor, I built an IMAP email collector and simple D-BUS API for viewing email messages and folders on the desktop as an alternative to monolithic email clients like Mozilla’s Thunderbird.


Skills
#

  • Programming languages: JavaScript, TypeScript, Python, Go, Ruby
  • Frameworks: Electron, React, Rails, Nextjs, FastAPI, LlamaIndex, Google Agent Development Kit
  • Cloud and infrastructure: GCP, AWS, PubSub, Terraform, Linux system administration
  • Data stores: MySQL, PostgreSQL, SQLite, BigQuery, Neo4J
  • Tools: Git, Cursor/VSCode, vim/tmux

Education
#

Software Development program at Mohawk College 2009 — 2010

I went back to school to formalize my professional experience gained while building PrimeContact (later named Peerly) from the ground up; however, duty soon called, and I returned to work on the 2010 Canadian elections. I opted to continue learning via entrepreneurship and a start-up mentality.


Interests
#

  • Self-hosting: I keep tabs on what the current trends are in self-hosted services such as home automation, static web sites, music, audiobooks, AI models. This allows me to stay current with technologies that I do not always get a chance to touch in my professional work
  • Cycling: I learned a love of cycling while bike-commuting in Toronto traffic and now use it to keep myself grounded. You may find me riding laps around High Park or racing against myself in time trials
  • Guitar and live jams: As a member of a fun Hamilton-area ska band in the early 2000s, I gained a love of playing live music and try to keep my musical skills sharp by playing with others
  • Running workshops: I have been lucky in my latest professional roles to make knowledge sharing a part of my growth goals. Code review and pairing are enjoyable, but leading workshops and giving talks is a new skill I actively working on