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.