Justin Michaud

Junior Developer | Open Source Enthusiast

Github - Email - Resume

About Me

I am a Computer Science student at the University of Waterloo in Canada, interested in Free & Open Source software, computer graphics and emulation. In my free time, I play oboe and collect old computers. You can contact me at hello@justinmichaud.com



Made a patch adding stereoscopic rendering support to GlideN64 Nintendo 64 graphics plugin. Every draw call that the game makes to the high-level emulation code is doubled. Then, after the game applies its projection matrix to vertices, this "untransforms" them from clip space, applies the eye translation, then re-projects them to avoid toe-in artifacts. It is too unstable to be merged. Source


I contributed a gesture typing implementation to the popular AnySoftKeyboard project, similar to the stock Google keyboard. It works by generating simulated paths for words, then comparing them to the input path. There is still a lot of work to be done to improve accuracy, usability and performance. Source

NES Emulator

An NES emulator written in rust. It has partial support for Mapper 4 and audio. An old version also includes optional modifications to Super Mario Bros by hooking into memory reads/writes, allowing new levels to be loaded in and out. Source (new version, with partial audio and Mapper 4 support) Source (old version) Play Now (old version with game modifications)

Rust Gui Framework Demo

A demo fork of servo browser engine supporting a simple react-like declarative rust html macro and native rust event handlers. Like electron, but using native rust + servo instead of javascript + webkit. Source

VR Head Tracking Shooter

A shooter game for Google Cardboard that uses BoofCV to track the position of your head, allowing you to doge obstacles and shoot enemies. Using Bluetooth, a TCP connection allowed head tracking data to be sent to the android phone in the headset. Built using OpenGL and LibGDX for Mhacks 8. Source

What is a monad? (Lightning talk)

Lightning talk + Scala worksheets about Future, Try, and Option monads, plus some bonus worksheets on the IO monad and monad transformers. Source

Rust Raytracer

A small ray tracer built to try Rust. Basic reflection, refraction and shading are implemented, as well as simple perturbation to simulate surface roughness. While the code is a mess, it was interesting to learn about Rust's borrow checker, as well as its use of composition over inheritance. Source

Sudbury Action Centre for Youth

A web application to track clients, donations and client visits for the Sudbury Action Centre for Youth. Using Python and Django, it produced data that allowed them to gain insight into how clients use their services. I collected requirements from non-technical users, iterated frequently to ensure the application created value, and learned a new set of tools to increase maintainability.

Remote Support

An open-source remote support tool using Java and UDP hole-punching, developed to provide quick and simple ssh access through a NAT without port forwarding. It used Netty and UTP, a reliable protocol build on UDP, to tunnel multiple tcp connections with a small discovery server to handle NAT traversal. Source

Sudbury Transit

A small, Open Source Android transit application using the Sudbury Open Data API, available on F-Droid. It allowed me to contribute to Open Source and my community, and to gain familiarity with the OpenStreetMap api. Source

Blog posts

Super Mario Bros. Level Generation Using Torch-RNN
Read more... medium.com