Out of over a hundred blog posts over the years, I’ve picked a list of the most interesting ones. This is a good place to start if you’re visiting this blog for the first time.

Interesting Side Projects

Minesweeper AI: read pixels off the screen and put the data through a backtracking algorithm, in order to play a game of Windows Minesweeper in seconds.

Tetris AI using Genetic Algorithm: using genetic programming techniques, we ‘evolve’ a program able to play Tetris almost perfectly.

Roboroast: upload your photo to get an algorithmically generated insult using face recognition algorithms!

Algorithmic Trading Hackathon: next-level strategies to beat the Bloomberg Code B Hackathon.

Gregg Shorthand Converter: convert English to Gregg Shorthand, an old writing system.

Algorithmic Counterpoint: project at Mathcamp, generates counterpoint music in the style of Bach.

CS488 Boat Game: final project for UWaterloo Graphics course, using OpenGL

Arduino Desk Lamp: my journey into hardware hacking and a lamp connected to a light sensor

Theoretical CS

Intro to DNA Computing: overview of Adleman’s 1994 paper on solving Traveling Salesman with DNA.

Splitting utility costs between roommates is NP-complete: yes, if you’re a CS major like me, NP-hard problems tend to show up in your life.

Software Engineering

How System.out.println() really worksevery Java programmer has once wondered what really happens when we put System.out.println() — how does this function make text magically appear on the terminal.

Comparison of Mathematica / Maxima / Maple: solve the same problem in three languages to compare them.

Journey into Android Programming: my first two Android apps, and process of learning Android

Publish iOS app without testing it on device: my journey of porting WATisRain from Android to iOS, and thoughts about iOS development in general.


Hall’s Marriage Theorem explained intuitively: explanation of this useful combinatorics result, and an example using this year’s Putnam problem.

Visualizing Quaternions with Unity: quaternions are a pretty useful tool for dealing with 3D rotations.

Calculating the Plane Angles of Platonic Solids: using some vector geometry, calculate the angles on an icosahedron or dodecahedron.

Throwing a rock off a cliff: calculate the optimal angle to throw a rock off a cliff so it can go the farthest.


Four Life Lessons from Hearthstone: my decision making process and worldview using analogies from Hearthstone.

Waterloo Jobmine and First Internship: my experiences with Jobmine and co-op at Tutorjam

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: