About
Hi, I'm Theo Belaire. I am a student at the University of Waterloo, studying Computer Science and Combinatorics and Optimization. I enjoy messing about with various languages, and some of my favourites are Haskell, Python and Rust. I've done a fair amount of work in C++ too, which is why I'm so excited about Rust :P
During my work term in Montreal in 2015, I organized and ran the Rust Meetup, which was a lot of fun.
Here are some of the projects I've worked on:
CS 488 Graphics Gallery: This is a ray tracer I built for my graphics class. Things I am particularly proud of include the light bouncing off mirrors and casting shadows properly, and height mapping on the cobblestone flooring.
Oh, and I borrowed the grass placement algorithm from Casey Muratori's dev blog, from his work on the Witness. Awesome series of posts.
Rusty-TONC: I started working through some of the examples in the excellent Game Boy Advanced programming tutorial TONC, and writing them in Rust. I have been working without the Rust std lib, but I have been working towards getting a nice little gba library to make it easier. You can check out my journey getting Rust to even run on it on this very blog.
Rust.ko: I'm trying to write a kernel module in Rust. This is the project for CS 854.
Feather Weight Java Formalization: I worked on a formalization of Feather Weight Java (a reduced version of Java that's basically lambda calculus), and formalize it in Coq.
CO 759 Bill Cook Project: I work with b2couttes on this visualization tool for combs that occur when solving the Traveling Salesman Problem. This was a C++ program that used Cairo to generate nice hulls (not necessarily convex) around overlapping sets of points.
Vinyl-json: I was experimenting with the Haskell records package [Vinyl][vinyl], and got automatic JSON serialization to work. This started for this little project, and a discussion on Reddit about how it would be hard to do this in Haskell.
There are actually two branches, one where I played around with Template Haskell, and one where I managed to avoid it.
And here is my Resume (markdown), and stack overflow profile.