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
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.
How System.out.println() really works: every 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