Selected Projects

  • Transitopia


    An online map of cycling, pedestrian, and transit routes.

    Active: 2024 - present

    Role: Sole developer

  • CalendarDate


    A tiny, high performance TypeScript library for dealing with calendar dates like "August 15, 2023".

    Active: 2023 - present

    Role: Sole developer

  • quantity-math-js


    A TypeScript library for dealing with numbers with units like "10 meters".

    Active: 2022 - present

    Role: Sole developer

  • Neolace


    A next-generation knowledge graph platform. Like a wiki that has keeps itself up to date and has integrated review workflows and graph visualizations.

    Active: 2021 - 2023

    Role: Lead developer

  • s3-lite-client


    A lightweight but powerful S3 client

    Active: 2021 - present

    Role: Sole developer

  • Vertex Framework

    Vertex Framework

    A TypeScript graph data management framework that adds type safety and ORM-like features to Neo4j.

    Active: 2020 - 2023

    Role: Sole developer

  • TechNotes

    An open engineering library that aimed "to provide a comprehensive, open, practical library of technological knowledge."

    Active: 2020 - 2023

    Role: Founder, lead developer

  • LabXchange


    LabXchange is a very feature-rich life sciences education platform and community, powered by Open edX, Django, and Discourse. An OpenCraft project.

    Active: 2018 - 2020

    Role: Lead developer


    Game engine and mobile web app that powers "Apocalypse Made Easy", an outdoor, team-based apocalypse survival training game.

    Active: 2017 - 2019

    Role: Lead developer

  • Ratio


    Simple, flexible web application for managing personal budgets.

    Active: 2017

    Role: Sole developer

  • Open edX SAML/Shibboleth Integration

    Open edX SAML/Shibboleth Integration

    I was the lead developer of the new SSO features of the Open edX Cypress release, which included SAML/Shibboleth integration. An OpenCraft project.

    Active: 2015

    Role: Lead developer

    open.edx.orgedx-platform PR 8140
  • Open edX Content Libraries

    Open edX Content Libraries

    I led the engineering design and implementation of the new "Content Libraries" feature of the Open edX platform. An OpenCraft project.

    Active: 2015

    Role: Lead developer

    edx.readthedocs.ioedx-platform PR 6459
  • Agents of Nature

    Agents of Nature

    Place-based educational adventure game for kids that can only be played in parks.

    Active: 2011 - 2014

    Role: Lead developer
  • Explore150 App

    Explore150 App

    Location-based app to connect with Canadian historic and cultural sites, as part of Canada's sesquicentennial celebrations.

    Active: 2013 - 2014

    Role: Lead developer
  • OGO Website

    OGO Website

    I developed and maintained the website for the OGO Car Share Co-op.

    Active: 2013 - 2018

    Role: Sole developer
  • Disseminate

    An application for displaying synchronized multimedia presentation on a group of iPads via an ad-hoc Bluetooth or Wi-Fi mesh network.

    Active: 2014

    Role: Sole developer

  • Quotations Collection

    Quotations Collection

    A collection of my favourite quotations.

    Active: 2006 - present
  • s3eMapView


    An extension for the Marmalade Mobile Game SDK that implements native geographical map support on iOS and Android.

    Active: 2012 - 2013

    Role: Sole developer

  • astrodendro


    A Python package for computation and analysis of astronomical data using dendrograms.

    Active: 2011 - 2012

    Role: Major contributor

  • Quantified Comparison of Molecular Cloud Structure

    Quantified Comparison of Molecular Cloud Structure

    My undergraduate thesis: using "dendrograms" to produce a quantified difference score between two data sets representing molecular clouds. Also led to this paper.

    Active: 2011 - 2012
  • astrocube


    Python package for loading and viewing radio astronomy data cubes.

    Active: 2011 - 2012

    Role: Sole developer

  • Differential Cryptanalysis Example

    Differential Cryptanalysis Example

    An Excel workbook to help understand and teach differential cryptanalysis. Includes code for a working attack.

    Active: 2011

    Role: Author

  • Get to Know Website

    Get to Know Website

    This non-profit program's complex website supports their numerous initiatives. I developed the site with PHP for several years and later re-wrote it using Django.

    Active: 2008 - 2014

    Role: Lead developer
  • Morningstar Office

    I designed and spec'd Morningstar Interactive's unique eco-friendly Kelowna office space, which was featured in Armstrong Ceiling & Wall Systems 2013/14 catalogue.

    Active: 2010

  • Nexus

    Custom time tracking, payroll, and password management software used at Morningstar Interactive.

    Active: 2009 - 2014

    Role: Sole developer

  • Scholarium

    Scholarium was a Facebook app that let university students share their timetable, find classmates, and rate professors. It had a few thousand users, and according to random people, it was one of the best Facebook apps for students. Sadly, I can't find a screenshot.

    Active: 2006 - 2008

    Role: Sole developer

  • Tom Mah Karate

    I designed, developed, and maintained the website for Tom Mah School of Karate and the Kelowna Traditional Martial Arts & Fitness Centre, which included a custom-built CMS, photo gallery, and other apps written from scratch.

    Active: 2001 - 2007

    Role: Sole developer & designer

  • KDE User Account Control Module

    KDE User Account Control Module

    One of my first open-source projects - a KDE control center module for viewing and changing basic information about your UNIX user account, such as full name, password, or the user avatar seen in kdm.

    Active: 2003

    Role: Author of the first version

    Part of plasma-desktop