Submitted patches for many bugs including ones that have been around for eleven years and have affected hundreds of thousands of people.
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.
An LLVM based compiler for Turing as well as a Qt-based IDE and a simple drawing library.
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.
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.
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”.
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.
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.
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.
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.
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.
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.
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”.
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.
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.
Select any text on screen with Vim keyboard navigation. Uses computer vision on screenshots to locate text.
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.
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.
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.
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
Uses OpenCV to accurately and quickly track a pink dot on a microphone headset with a 60fps webcam for precise fast optical head tracking.
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 DBus library for the D language. Uses compile-time introspection to generate efficient calls without a separate code generation step.