This Website

Instead of trying to hack together something on WordPress, I decided to build my own site.

This site was built from scratch using PHP (which is the version you're seeing here), and I recently rebuilt it in Rails, but I can't deploy the Rails version until I switch to a new host.

Technologies used: HTML, CSS, PHP, CakePHP, XAMPP, SQL, Ruby, Ruby on Rails

SFN Mission Control

[In progress]

Technologies used: Ruby, Ruby on Rails, React, TypeScript, GraphQL, SQL, git

Plus Support FED Dashboard

At this time, this was my favourite project that I had worked on at Shopify, this tool acts as a one-stop-shop for all of our team's data and tools.

For the developers on my team, this tool creates a prioritized to-do list, which pulls assigned tasks from our various project management tools and calendars. This also houses a Slack bot that helps preserve team knowledge.

For the team leads, this tool provides a number of smaller tools that streamline the more manual parts of our workflow. This tool also contains a reporting service, which has filled in data gaps surrounding our team's performance, allowing us to track trends in behaviour and notice any developers who may be falling behind.

While originally built on Rails, this tool was later migrated to Node.js to make it easier for other members of the team to contribute to it.

Technologies used: HTML, CSS, JavaScript, SQL, Ruby, Ruby on Rails, React, Node.js, Slack

Plus Utility Belt

For the parts of my team's workflow that happen outside the browser, we have the tool we lovingly refer to as the PUB. The Swiss army knife (or utility belt) of our tool kit, this tool streamlines just about everything we need to do. The most common use for this tool is the setup process when we start working on a customization, an often manual and tedious process.

When used in conjunction with the Plus Chrome Extension (below), it allows my team to automate everything except actually debug the issues.

Technologies used: JavaScript, Node.js

Plus Chrome Extension

As can be expected from a team that fixes issues with online stores, a non-trivial part of my team's workflow takes place in the browser. This tool, which I've contributed significantly to since joining the team, streamlines and automates sizeable portions of these workflows.

Technologies used: HTML, CSS, JavaScript

Plus Support FED Bootstrapper

After noticing that a number of members of my team were experiencing idiosyncratic issues due to inconsistencies in how they set up their dev environment, I created this script that would automate the setup process.

While this was based on an existing script, it was almost entirely rewritten to address a number of shortcomings in the original tool.

Technologies used: Ruby

BrightMatter Plan & Guide

While at Synaptive Medical, I was part of the team responsible for developing the BrightMatter Plan and BrightMatter Guide suites. BrightMatter Plan is a program used to plan neurosurgery procedures. Users are able to view and manipulate brain scans, select a target in the brain and entry point on the skull, and see which parts of the brain the planned procedure will interact with. After creating a plan, the user can export the plan to BrightMatter Guide or a 3rd party system.

BrightMatter Guide is used to guide the surgeon through the procedure. It allows the surgeon to create a mapping from real-space to virtual-space and uses that mapping to show the surgeon where their tools currently are inside the brain.

My responsibilities involved developing new features, fixing existing bugs, improving performance, participating in code reviews, and developing unit tests.

Technologies used: C#, .NET, WinForms

Simple Coin Flipper

I was surprised by how hard it was to find a simple coin flipper on the Android app store. All other coin flipper apps I could find needed touch and physical gestures or had in-app purchases.

Instead of using an app I didn't like, I decided to write my own.

The app is no longer available for download.

Technologies used: Android, Java

Hand Hygiene Prompting System

At the Toronto Rehabilitation Institute, I was part of a group that was trying to revolutionize the way hand hygiene is performed and monitored in hospitals. According to a 2013 report published by the Public Health Agency of Canada (a branch of the Canadian Government), improper hand hygiene results in 200,000 patients contracting infections while receiving healthcare in Canada, 8,000 of whom die as a result.

This project attempted to create a prompting an auditing system where healthcare providers are given a badge that vibrates whenever they enter a zone that requires them to wash their hands. When not in use, the badges are placed in a dock that displays statistics for that section of the hospital.

My role in this project was to create the software that would parse the data from the badges, archive the original file, upload the file's contents to the database, fetch the latest reports from the server, and display the reports on the dock's screen. I was also responsible for creating the auditing and management software. This was a program that allowed administrators to manage the hospitals, hospital zones, badges and users, as well as create custom reports and view a detailed event log.

Technologies used: C#, .NET, MSSQL Server, WPF

KinExercise

This was my research project while interning at the Toronto Rehabilitation Institute. The goal of this project was to create a prototype game platform that could be used to allow homebound adults to exercise in a social environment. The platform would consist of a barebones PC (such as a NUC or BRIX) connected to a Microsoft Kinect, a TV, and the internet. After starting the PC, the game platform would launch, allowing users to start playing exercise games, either with random players or with friends. While playing, they would be able to speak to the other players. The long-term goal was to also allow users to attend classes or lectures and to allow them to create simple chat rooms. The ideal result would have been an increase in exercise for homebound adults, which would have helped encourage their physical well-being, in addition to their mental well-being by creating a social environment for them.

Before being reassigned to work on the HHPS system, I was able to create a basic prototype where users could play simple games against each other and stream audio over the server. I was able to showcase the prototype at the Applied Research In Action (ARIA) showcase at the University of Toronto in April 2014.

Technologies used: C#, .NET, Unity3D, Kinect

Gait Tracker

At the Toronto Rehabilitation Institute, I was tasked with writing a MATLAB script that could analyze the position data of someone's foot and hip to determine various points of their gait, such as the frames where their toe leaves the ground or their heel lands. This was necessary because there was simply too much research data for the researchers to parse manually.

This was done using a MATLAB script that implemented a simple neural network.

Technologies used: MATLAB

WineCalc

My first Android app. After realizing that some people try to optimize their purchases - buying the maximum amount of a product for the minimal amount of money - I decided to create something similar for alcohol. While not very successful, it was an excellent learning opportunity.

The app is no longer available for download.

Technologies used: Android, Java

Retention Tracker

At the Toronto Rehabilitation Institute, there is a large TV in the lobby used to showcase promotional videos. For this project, I was asked to write a program that would use a Kinect to determine viewer retention rates.

Using a Kinect, it would use facial landmarks, such as the eyes, nose, and mouth, to determine the direction of a viewer's gaze. Using their location and gaze direction, the program would determine whether they were looking at the screen. By integrating this program with VLC, it was able to determine how many viewers were present when each video was showing and how long viewers stayed to watch the video.

Technologies used: C#, .NET, Kinect, WPF

GlassTop 3D Desktop

GlassTop was a graduate project that attempted to leverage emerging augmented reality technologies to create a new desktop paradigm. This project used an Epson Moverio wearable display (the augmented reality glasses), a LeapMotion Plus (a hand tracker), and a PhidgetSpatial accelerometer (to track head movement). These tools allowed the user to interact with the new desktop paradigm in 3D space, rendered using Unity3D. My group conducted a study using this new desktop technology and presented the findings at a showcase on campus.

The paper with the details of the study is available here and the poster from the showcase is available here.

Technologies used: C#, Unity3D

MagDrop

An experimental project that attempted to determine whether a magnetic construction toy can be used as a physical proxy to sculpt virtual objects.

This system used a magnetic construction toy containing steel balls and small magnetic pegs with motion-tracking spheres attached as a physical proxy for a virtual object. Users were able to define each of the balls to represent part of the virtual object. By moving the steel balls, users were able to manipulate the corresponding parts of the virtual structure. This project used an engine written by a PhD candidate.

The paper summarizing this project is available here.

Technologies used: C++

Surface-Based Remote Desktop

This was a project for a graduate course with the goal of creating a new type of input device to better enable collaborative projects. For this project, I created a new type of collaborative work environment using the Microsoft PixelSense. Users are given keycards (or similar items) that they can place on the workstation to log in. Like most environments, their desktop persists across sessions. When a user places their keycard on a workstation currently being used by another user, they became able to transfer documents to and from their workspace.

My presentation is available here and the demo video is available here.

Technologies used: C#, .NET, WPF

Frost

Developed as part of a game design course at the University of Toronto, Frost is an experimental art game that explores the illusion of choice. This game was showcased at the Level Up Showcase in Toronto in 2013.

A trailer for this project is available here.

Technologies used: JavaScript, Unity3D, Blender

Papers

In addition to the above projects, I've also written a few unpublished papers, which you can find below.

Twitch Plays Pokemon: An Analysis of Social Dynamics in Crowdsourced Games

This paper, written for a graduate course, analyzes the social dynamics at play in games were multiple players are able to control a single avatar. As an example, this paper uses the game `Twitch Plays Pokemon`, an experimental game where multiple players must simultaneously control the avatar in Pokemon Red.

In addition to analyzing the social dynamics of TPP, this paper also compares the behaviour found here to the behaviour found on other, more traditional, online games.

The paper is available here.

Literature Review of Video Game Input Devices

A literature review of various studied performed regarding video game input devices, from 1972 to 2010. This paper explores the evolution of video game input devices as well as some of the more important findings from some studies conducted about them.

The paper is available here.