I have over 15 years working professionally in the software & web development industry, with over 5 years of leading teams. I graduated with an Honours Bachelor of Computng from the Univeristy of Guelph.

A wide range of experiences, collaborations, and projects have provided me with a large knowledge base to tackle many different challenges in many different environments. From solo projects handling all roles, to large dev teams where I actively worked with others to bring a project to life. From long-term products with a focus on reliability and maintainability, to quick R&D prototypes with firm deadlines. CRM platforms, web apps, video games, and online stores are just a few of the types of things I've had the pleasure of working on.

I am currently working as the Director of Technology with the fine folks over at Makers. In my spare time I always have a side-project or two on the go, so please don't hesitate to reach out if you'd like to collaborate on something new.

  • Languages: JavaScript Python PHP SQL HTML/CSS Bash
  • Frameworks: React VueJS Laravel Django Flask Apache Cordova
  • Datastores: MySQL PostgreSQL MongoDB Redis
  • Cloud: Amazon Web Services Digital Ocean Google Cloud Platform
  • DevOps: Git Docker Docker Compose Bitbucket Pipelines
  • Infrastructure: Nginx Apache HTTP Apache Thrift Beanstalkd Celery
  • Tools: Jira Slack Postman Trello Notion Bugsnag New Relic
  • APIs: Google Twilio Postmark Facebook Twitter

select work


Property.ca et al

A trio of real estate websites (property.ca / condos.ca / mrloft.ca)


With over a million registered users and over 1.8 million site sessions a month, these sites need to be able to handle high traffic loads and huge amounts of data. Users can browse active real estate listings from four different boards across Canada, along with millions of historical listings. Market stats and trends over time help users be informed to make smart decisions. Other features include listing alerts via email and push notifications, area information and demographics, mortgage calculator, compare listings tool, and more.

Built as independent codebases; a React frontend with server-side rendering to ensure search engine discoverability, and a combination API monolith & microservice backend (shared with Condos.ca CRM). All three sites run on the same codebase and use theming, feature flags, and environment variables to customize. Heavy caching and use of asynchronous jobs helps ensure optimal performance.


Condos.ca CRM

A proprietary CRM platform for real estate agents

Having a single place which aggregates leads and associated data from Property.ca, Condos.ca, and MrLoft.ca, allows Property.ca real estate agents to effectively and effieciently manage their leads and clients. Custom built tools help with engagement and conversions; digital phone numbers, automated campaigns (phone calls, emails, and text messages), real-time lead opportunity notifications, task scheduling, email and text templates, and more. Integrations with other company departments for things like deal submissions and new listing uploads have streamlined and automated many internal processes.

Built as independent codebases; a React frontend, and a combination API monolith & microservice backend (shared with Property.ca et al). Due to the use of personal information, security is a top priority.



Real estate appraisel app

A novel approach to real estate appraisels; using a weighted average of opinions and targeting local real estate agents with monetary rewards, the app attempted to provide a higher accuracy at a fraction of the cost of a traditional appraisal.

A hybrid app was built to allow the same core codebase for both iOS and Android. This required some native app-like features to be recreated manually, but still ultimately saved time and cost compared to building two completely different apps.

Ad Blitz

Ad Blitz

Youtube micro-site for Superbowl XLVIII

An ad campaign for the famous Superbowl ads (yes ads for ads), this featured an online multiplayer toss and catch game. Pair your phone with a computer and challenge your friends by throwing and catching the ball in real-time. You can also view your favourite ads in two different gallery styles and vote for your favourites.

I worked with some talented people over at Jam3. As Google was the client, we were required to use Google Cloud for all our infrastructure needs.

Swedish Fish

Swedish Fish Wall

Wall of animated talking fish

An ad campaign for Maynards. Upon loading the site, you are presented with a wall of Swedish Fish, which talk and animate when clicked. Each fish says an unique and humorous line and can also be shared on social media.

We used hardware accelerated PNG image sequences to create the fish talking animations, while playing the associated voice recordings through the browser. This project required a tool to sync the image sequences with the audio files, so I modified an open-source lip-syncing animation tool to export animations to a compatible data format (JSON) and integrated the fish image assets.

Shoosha True

Shoosha True

Shoosha True


An online beauty product store, with a focus on natural and organic products for babies and mothers. An ingredient directory allows customers to learn details about all sorts of different natural substances that are used in many of the products offered on the site.

A CMS allows for content updates without code changes. Financial transactions are offloaded to a third-party payment processor to simplify implementation and reduce security risks.