Thanks for visiting. A few notes:
Wave Files to Video Concatenation Script
Python Script
Given a number of wave files (optionally divided into different classes and provided with captions), this script generates a video using FFmpeg within which all the sounds are played sequentially and each sound's caption (or file name if no captions were provided) is displayed for its duration. Automating the use of the FFmpeg drawtext filter was rather interesting given the multiple levels of escaping necessary to handle special characters in captions.

Note that the duration of each audio file is assessed in a separate operation before generating its associated video file. Technically, this step could be omitted by using FFmpeg's -shortest option, but its accuracy seems to vary from build to build (at the time I wrote this script, using -shortest made each intermediate video roughly two seconds longer than its associated wave file).
Call of Dudley
Unity 3D Project
Something I created for the 2015 Procedural Generation Jam. It generates an n-ary tree of rooms and places doors and telephones within the resulting structure to reduce draw distances and permit the inclusion of a largely superfluous narrative, respectively. Each room is essentially an extruded irregular convex polygon (with parameters such as radius and number of sides chosen randomly within specified ranges). Room meshes are assembled on the fly and new rooms are checked to ensure that they don't collide with any existing rooms before being added to the tree.
MATLAB 3D Maze
MATLAB Script
A MATLAB-based homage to the classic Windows 95 3D maze screensaver.
Sierpinski Tetrahedron
Processing Script
An iterative Sierpinski tetrahedron for the landing page of my site. Here's a GIF of it (although I recommend viewing the genuine article via the title link above):
SSH Shell Script Generator
Python Script
A Python script that generates a shell script to automatically open multiple SSH connections (each in its own named tab) within one terminal window. The resulting shell script can be configured to prompt for a single password, which is then used to connect automatically (useful when connecting to several test servers that share a password), or to simply open a tab for each connection and leave the user to enter each password. I've only tested the generated shell scripts on Ubuntu, but they should work anywhere GNOME Terminal is installed.

Full details are included in the script itself; the resulting terminal window produced by the shell script looks like this:
Vertex Info Editor Script for Unity 3D
C# Script
An editor script for the Unity 3D game engine that displays the index and UV coordinates of each individual vertex making up a triangle within a mesh. Useful if you're writing code that needs to refer to specific vertices within an existing mesh (e.g., to change their UV coordinates).
Stereo Image Pair to Minimal-Ghosting Anaglyph Image Conversion Script
MATLAB Script
A MATLAB script that takes a pair of left/right stereo images and converts them into a red/cyan anaglyph image that should have minimal ghosting (i.e., cross-channel leakage between the two source images), provided the colour configuration of the monitor this script is tuned for matches the configuration of the monitor being used to view the image reasonably well. For details of the algorithm (which differs from "regular" anaglyph conversion in a few important respects), please consult the code.

Here's an example of this script's output, based on a pair of stereo images taken by Arthur Gron (view using red/cyan anaglyph glasses with the red filter placed over the left eye):
Liquid Crystal Shutter Glasses
Device (Work Project)
A pair of shutter glasses I designed to occlude one or both eyes of a participant during vision experiments while employed by the Hospital for Sick Children's Vision Neuroscience lab. I designed the frame in SolidWorks; it was produced using an FDM 3D printer (specifically, a MakerBot Replicator 2 at the Toronto Reference Library). The liquid crystal cells are controlled by an Arduino program I wrote that generates two square waves per cell. By altering the relative phase of the two signals, each cell can be switched between its transparent and opaque states independently.
Procedural Skyscraper Demo
Unity 3D Project
I wrote a C# script to generate and UV map skyscraper meshes in the Unity 3D engine based on various specified parameters, including window dimensions and number of storeys. At the moment, my demo of this code simply rotates a camera around one skyscraper while periodically regenerating it and several adjacent buildings from randomized parameters. I plan to expand the demo and make it available online, but for the moment here's a video of it in action:
Isovergence Target Surface
Apparatus (Work Project)
This piece of equipment was my solution to the problem of presenting targets at specified angular positions on a toroidal isovergence surface for vision experiments ("isovergence" refers to targets that maintain a constant angle between the gaze vectors of both eyes). I created the CAD model for this part in SolidWorks and the physical surface was produced at Toronto Rehab's iDAPT centre using a stereolithography machine.

This photo shows the isovergence surface installed within the alignment gantry discussed below.
Alignment Gantry
Apparatus (Work Project)
This device was designed to fit within a magnetic field scleral search coil system and provide accurate positioning of an existing chin rest assembly (not pictured) and a custom calibration gimbal within the central volume of the field (shown as a green cube in the inset of the image below). The gantry is made of acetal (a.k.a. Delrin) to avoid interfering with the magnetic field generated by the coil system. I created the necessary CAD models using SolidWorks and a fully parametric approach whereby the critical dimensions of all the parts were controlled by variables stored in one external file.
AirSHIP (Nuit Blanche 2011)
Art Installation
An art installation I helped create with other members of the U of T's Solar Blimp Design Team. Here's an article about it on the U of T engineering news site. Here's a promotional video I created with footage from our pre-Nuit Blanche test setup (I generated the animation using a MATLAB script):
Virtual Surface Apparatus
Apparatus (Work Project)
I designed this apparatus for behavioural experiments involving reaching and eye movements (the basic concept is adapted from a 1995 paper by Daniel Wolpert et al.). It includes a monitor, a partially-silvered mirror (to modulate or eliminate limb visibility), a limb tracking system, an optional head-mounted eye tracker, and a custom multi-threaded C++ program to run experiments, provide the experimenter with real-time feedback on a participant's performance, and collect tracking and performance data. The program for this apparatus was fairly involved, as it required a GUI (which I implemented using the cross-platform wxWidgets GUI library), affine transformations to map 3D coordinates from the limb tracker to 2D coordinates in space and vice versa (after deriving these transformations, I tested them in MATLAB and then incorporated them into the program itself using LAPACK and Armadillo), and integration with third-party APIs for the various tracking hardware. I also created a full-featured data processing and analysis program in MATLAB to handle the summary and time-series data generated by the C++ program when running experiments on the VSA. Here's one of its windows: An overview video describing the system is available here.
Rush Hour for the Meggy Jr
Meggy Jr Game
An implementation of ten levels from the Rush Hour sliding block puzzle on the Meggy Jr RGB (an Arduino-based gaming device).
"Select Your Own Adventure" Flash XML Interpreter
Miscellaneous Project
A Flash file that can interpret a basic "Choose Your Own Adventure"-style book stored in XML and display it interactively so it can be easily navigated. Simple, but it gets the job done.