PDF Version

Tristan Hume

Student Developer - University of Waterloo Computer Science

Work

Google

Software Engineering Intern, Summer 2017
  • Worked on an open-source Conflict-free Replicated Data Type for text, refining it for fast and seamless editing and merging.
  • Implemented multi-device text synchronization for the Fuchsia operating system including reliable merging of changes after editing offline across devices.

Jane Street Capital

Developer Intern, Fall 2016
  • Wrote a js_of_ocaml-based debugging and exploration tool that reinterprets a rule matching language to find all possible paths given a set of constraints on the input.
  • Implemented parsing and processing code for a low latency binary UDP market data feed with zero-allocation OCaml. Learned a lot about finance in the process.
  • Developed a custom tree diffing algorithm based on minimizing a cost model using dynamic programming accelerated with an A* search for large trees.

UWaterloo HCI Lab

Undergraduate Researcher, Winter 2016
  • Designed and developed a hands-free mouse alternative that combines the speed of an eye tracker and the accuracy of head tracking using MAGIC.
  • Developed high accuracy low-latency audio recognition algorithms for using various mouth noises (e.g lip popping) to perform actions like clicking.
  • Combined knowledge from reading hundreds of academic papers on HCI techniques and eye tracking computer vision algorithms to develop an enjoyable to use system with speed and accuracy similar to a trackpad.

Shopify (Shipping Team)

Developer Intern, Summer 2015
Helped develop Shopify Shipping. I fixed production disruptions, implemented package tracking and owned the development of the unified fulfillment and label purchase form now used by thousands of merchants every day. Show more

Shopify (Stack Team)

Developer Intern, Summer 2014
Containerized deployment tools with Go, Docker and Chef. Show more

Shopify (Apps Team)

Developer Intern, Summer 2013
Worked on Ruby on Rails projects and a new parser for Liquid. Show more

The Eclipse Foundation

High-school Co-op Developer, Fall 2012
Implemented features and fixed bugs in the Eclipse IDE. Show more

Halogen Software

Student Software Developer, Summer 2012
Investigated web accessibility and automated a data entry process. Show more

Projects

Rate With Science

Wikipedia data processing

I extracted the link graph of Wikipedia into a 600MB binary file with a custom format designed for fast path finding in memory. I’ve rewritten the path-finding server in Rust, Nim and D for fun.

StashLine

Personal finance app

An IOS app for long term personal finance simulation with 7000 users. Has a custom built UI that instantly updates a visualization of your entire life’s financial future while you manipulate inputs.

The Open Turing Compiler

LLVM front-end, IDE and library

An LLVM based compiler for Turing as well as a Qt-based IDE and a simple drawing library.

PolyType

Designed & built a keyboard

I built a working keyboard I designed in AutoCAD and put together with laser cut acrylic layers, Cherry MX switches, lots of soldering, and an ARM microcontroller.

Dayder

Spurious correlation finding web app

A Rust web app for finding spurious correlations in 390,000 time series data sets. I wrote custom optimized DOM, JS Canvas rendering, caching, correlation and binary serialization code for instantly responding to queries.

SmartGaze

Eye tracking algorithms

I reverse engineered my Eye Tribe tracker’s USB protocol by scripting LLDB to capture their USB messages and implemented a glint and iris tracker on the raw image feed suitable for high accuracy eye tracking.

EyeLike

OpenCV pupil tracking implementation

An implementation of a webcam pupil tracking algorithm in OpenCV that garners weekly emails from researchers and 30,000 views per year. It is the first hit on Google for “OpenCV eye tracking”.

Syntect

Syntax Highlighting Library

A high quality syntax highlighting library in Rust based on Sublime Text 3’s grammar and theme formats. Relentlessly optimized for high performance and excellent highlighting quality. Well-documented, tested and fully-featured.

IndexView

JS canvas visualization

An exploration tool for long term financial market data written in JavaScript with a custom canvas graph widget allowing for fluid zooming and navigation of hundreds of years of data with live stats.

Electioneering

Hack The North 2015

Simulation of the Canadian electorate in the form of a game. I generated the map of 30,000 simulated citizens using real polling and demographic data.

Spacemacs Layers

Heavy contributor of Emacs Lisp

Contributed many layers and fixes to the Spacemacs Emacs distribution. I was the First contributor and a long-time top contributor.

Blog

Useful Tech Articles

I post useful posts on my blog ranging from tutorials to reverse engineering stories. My various posts have garnered over 200,000 views.

DoubleVision

PNG image trickery

A tool for generating PNG images that show one thing in thumbnails and a different thing in another. Exploits some PNG implementations implementing gamma correction and some not.

Bitty Chess

CS256 final project

My CS 246 final assignment: A chess engine with all rules, graphics, 5 levels of A.I and human players implemented in 15 hours and 993 lines of code. This is half the lines of code and less than half the time most of my classmates needed. The code is quite readable, the small size was achieved through clever design.

PathSpan & EstimationLine

iPad Apps for psychology research

IOS apps developed in 2010 on contract for a professor at Carleton University for performing common psychological tests. I was paid to develop the apps but retained the rights to the code and to sell them.

Pro

Git repo manager

Finds Git repositories on your computer and lets you quickly switch to them, list them, and run commands on them. A small project, but a useful one with thousands of users.

Hammerspoon Modules

Pro window management

I’ve contributed 3 different modules for the Hammerspoon window manager: one can add tabs to any OSX app, one allows switching to any window with two keystrokes, and one allows scrolling down by saying “ssssss”.

MacRanger

Forked file manager

A fork of ranger (a command line file manager) with support for inline images on OSX, file icons, drag and drop, OSX trash, and more enhancements.

BlinKey

One button keyboard

A small batch of one button keyboards with RGB LEDs that can type a keyboard shortcut and can have their colour controlled by the blink(1) protocol.

KeySelect

Single evening project

Select any text on screen with Vim keyboard navigation. Uses computer vision on screenshots to locate text.

Turing in Turing

Turing interpreter

My grade 9 programming class (a grade 11 class, I took it in grade 9) final project: a Turing interpreter written in Turing, including a GUI.

Grade 11 Math Summative

Drawing with functions

Python program to convert images to massive piecewise functions that show the image when plotted. Outputs images with matplotlib and giant LaTeX PDFs of the functions.

ScreenTunes

Most popular project

Two hour hack with JS Canvas that made it to the front page of Reddit via /r/InternetIsBeautiful. It makes some LCD screens emit a tone.

PopClick

Mouth noise recognizer

Low-latency high accuracy audio recognizer for mouth noises. Written for my HCI research and later used for hands-free OSX scrolling as a Lua module

FaceHack

TerribleHacks 2015

One day project that deforms your face on top of faces in videos. Face tracking in C++ with DLib and UI in Javascript with WebGL. Made for TerribleHack 2015.

SmartHeadTracker

Head tracking mouse

Uses OpenCV to accurately and quickly track a pink dot on a microphone headset with a 60fps webcam for precise fast optical head tracking.

LookMouse

Head tracking mouse

A weekend project to build a head tracking mouse using a 9DOF IMU (basically an orientation sensor) connected to a microcontroller in a 3D printed case.

Generates slides as you speak using the Google speech-to-text API. Made for the TerribleHack hackathon.

Explore an overview of a codebase by rendering every character as a tiny syntax highlighted dot. Written with Rust, syntect and gfx-rs.

A web app for doing common calculations related to normal distributions. Nice minimal UI that updates calculations as you type and saves the state in the URL so you can link others to it.

A DBus library for the D language. Uses compile-time introspection to generate efficient calls without a separate code generation step.