Justin Michaud

Junior Developer | Open Source Enthusiast

Github - Email - Resume

About Me

I am an enthusiastic Computer Science student at the University of Waterloo in Canada. I can quickly apply new tools to my projects, and I have delivered, supported and maintained applications for non-technical clients. I have experience building applications using Java, Ruby, Rust, Python, and MySQL, for Linux, Android and Arduino. You can contact me at hello@justinmichaud.com

Blog posts

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


NES Emulator

An NES emulator written in rust, and compiled to webassembly with emscripten. It has been successfully tested with Donkey Kong and Super Mario Bros, and passes nestest. It also includes optional modifications to Super Mario Bros by hooking into memory reads/writes. Next steps will be to support more mappers (cartrige hardware) and sound.Source Play Now

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


Open Source Contribution: I worked with the maintainer of the popular AnySoftKeyboard project to implement simple gesture typing, similar to the stock Google keyboard. My contributions include primarily the core gesture detector, which matches words by detecting path corners and measuring the distance to the input path. The feature is only available in development builds for now. 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.

VR Head Tracking

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

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