Welcome! Here’s a list of the top posts on this blog over the years. It’s 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.
- WATisRain: Android/iOS app that helps you navigate around the buildings of UWaterloo without going outside.
- 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.
- AI Final Project: given a melody, use Hidden Markov Models to find a harmonizing chord progression for it.
- 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
Opinion
- Are programming competitions a good use of time: my thoughts on programming contests and the cost/benefit tradeoff of training for them.
- Four Life Lessons from Hearthstone: my decision making process and worldview using analogies from Hearthstone.
- Applying to Graduate School in Computer Science: my advice on applying to grad school in Canada and the US
- How to succeed in your first tech internship: lessons learned after doing 5 internships that I wish I knew back then.
- The Power Law Distribution and the Harsh Reality of Language Learning: why getting good at a language is more difficult than you might think
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 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.
Math
- How a simple trick decreased my elevator waiting time by 33%: sometimes, mathematical insight comes from the most mundane things, like slow elevators.
- 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.