Articles & Talks

Improving Our Graph Visualization

I wrote about the newly launched improvements to graph visualization in Neolace.

Building with Blockstore - How OpenCraft Developed LabXchange Using Open edX

(26 min video) Launched in 2020, LabXchange is a life sciences education platform powered by Open edX, and now freely available at This talk explains how LabXchange was built using Open edX, with a focus on the lessons learned, contributions, and insights that will be useful for others who integrate with or build on Open edX as a platform.

Open edX Core Committers Program

A blog post I coauthored after the Open edX Core Committers Program had been around for one year, reviewing its successes and previewing its upcoming expansion.

Building a uWSGI Emperor for multiple python versisons

This is a quick update to my tutorial on hosting Django Apps on Ubuntu with Nginx and uWSGI. I recently wanted to move to a mix of Python 3.4 and Python 2.7 web apps on one of my servers that was set up as described in that tutorial. Here's how to do that.

Counting stars in C++

The company I work for is looking to hire another C++ developer. So I got to thinking about interview questions in general, and questions that would demonstrate an understanding of C++ pointer arithmetic in particular. Then an interesting question occurred to me.

How I set up OGO's Phone System

When we launched the Okanagan Car Share Co-op (OGO) in Kelowna this August, we needed to set up a phone number for the co-op. We wanted a local phone number, the ability for our staff to answer the incoming calls during business hours, after-hours voicemail, and a 24/7 "emergency" line that co-cop members can call if they are having any problems with one of the co-op's cars. I proposed a VoIP solution to the board that we went forward with; it cost us nothing to setup, with no investment hardware or physical installation, and has all the features we wanted for under $50 per month.