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, scalable systems, computer graphics and emulation. I have quickly applied new languages and tools to my work, and I love building a deep understanding of problems I am working on. In my free time, I play oboe and collect old computers. You can contact me at hello@justinmichaud.com

Blog posts

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

Projects

AnySoftKeyboard

Open Source Contribution: I contributed gesture typing to the popular AnySoftKeyboard project, similar to the stock Google keyboard. My contributions include the core gesture detector, which matches words by detecting path corners and measuring the distance to the input path. Source

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 Gui Framework Demo

A 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