One Page PDF Version

Tristan Hume

Software Developer - BCS from the University of Waterloo



Member of Technical Staff, Current Job 2022/02/07 - present
  • Working on language model interpretability research and tools.

Jane Street

Developer, 2019-2021 2019/08/12 - 2022/01/28


Computer Vision Intern, Winter 2018 2018/01/02 - 2018/04/20
  • Built an internal model training system around Tensorflow including fast reproducible data loading, training, testing and exporting.
  • Designed, tuned, tested and integrated a machine learning model for detecting flares from rain on camera lenses.


Software Engineering Intern, Summer 2017 2017/05/01 - 2017/08/04
  • Worked on an open-source, heavily documented 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

Developer Intern, Fall 2016 2016/09/12 - 2016/12/16
  • 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 2016/01/04 - 2016/04/19
  • 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 hundreds of HCI and eye tracking papers to develop an enjoyable to use system with speed and accuracy similar to a trackpad.

Shopify (Shipping Team)

Developer Intern, Summer 2015 2015/05/04 - 2015/08/28
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 2014/08/05 - 2014/08/29
Containerized deployment tools with Go, Docker and Chef. Show more

Shopify (Apps Team)

Developer Intern, Summer 2013 2013/07/01 - 2013/08/30
Worked on Ruby on Rails projects and a new parser for Liquid. Show more

The Eclipse Foundation

High-school Co-op Developer, Fall 2012 2012/09/17 - 2013/01/18
Implemented features and fixed bugs in the Eclipse IDE. Show more

Halogen Software

Student Software Developer, Summer 2012 2012/08/13 - 2012/08/31
Investigated web accessibility and automated a data entry process. Show more



Path Tracer

A path tracing renderer capable of rendering photorealistic images. Supports a physically based BRDF, texture/normal mapping, area lights, glossy reflection, anti-aliasing, DOF, CSG, fractals, portals and much more.


Syntax highlighting Library

A fast high quality syntax highlighting library in Rust based on Sublime Text 3’s grammars. Well documented and tested, with active contributors. Powers two commercial products parsing terabytes of code per day.

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. Made when I was in grade 10.


Designed & built a keyboard

I built a working keyboard I created with AutoCAD, laser cut acrylic, custom firmware, and soldered electronics.


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.


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.


Process teleportation

I made a Rust library that can fork a Linux process onto a different computer by streaming all the memory mappings and register state and using ptrace trickery to recreate it.


Stunt font

I made a font that makes it easier to read large numbers by putting fake commas into them or underlining alternating digit groups using font shaping.


Beat Saber Patcher

I figured out the Unity binary assets file format used by the game Beat Saber on the Oculus Quest VR headset and wrote a patcher in C# that can add custom songs to the game. It was incorporated into SideQuest and used by over 80,000 people.


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.

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.


Useful tech articles

I write articles for my blog including write-ups of engineering experiences and reverse engineering stories. Some of my articles have made it to the top of Hacker News.

CS444 Compiler

Java subset compiler in Rust

I made a compiler from a substantial subset of Java to machine code along with 2 teammates for UWaterloo’s CS444 compiler class. I wrote about how our design decisions lead to it being less code than some other teams approaches.


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”.


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.


Fast Markdown viewer

An ultra-fast lightweight Markdown viewer written in Rust with GPU rendering by Webrender. Uses a custom document model, styling and text layout to start up and load enormous documents in 0.5s with 60fps scrolling.


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.


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.


Image processor

A tool written in Go which takes in a static site, scales the images down to a number of different sizes, optimizes them, then rewrites all of a site’s HTML to use responsive image tags. It’s fully incremental and configurable.

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.


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.

Emoji Engine

WebGL emoji renderer

The world’s fastest rendering engine for emoji and only emoji. Uses instanced mip-mapped point sprites with no overdraw to render 90k emojis at 60fps in a browser using WebGL. Made for TerribleHack X.

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”.


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.


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.


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.


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.


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


TerribleHack 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.


Head+Gaze tracking mouse

Uses a Tobii 4C and a TrackIR 5 with software written in Rust to combine gaze and head tracking into a fast hands-free mouse.


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.


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.

Foot Pedal Box

Cheap computer foot pedals

Built a box using a Teensy microcontroller to allow me to use $5 tattoo machine foot pedals with my computer.

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

Renders directly from UDP packet buffers to the screen for the lowest latency by taking advantage of shared memory on integrated GPUs. 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.

Generates high quality portmanteus linking two words using a graph search. Made for the TerribleHack hackathon.

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.

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.

An RSS feed of the comments of a bunch of interesting Hacker News users, nicely formatted.