## Brick Breaker (w/Audio)

Warning: this one has audio, so you may want to turn down your computer volume before clicking it. This brick breaker game was another Game Dev class project. I think we had a few weeks to work on each of these games in Game Dev. There's not much to say about the program itself it's just another brick-breaker clone.

## Canvax Chat

Warning: There's quite a few bugs in this one (can't remember if I added the bugs after or not), but I built this project with some friends from University during a MLH competition at USU. It is a collaborative sketching app that uses a node server and socket.io. It was pretty fun to build, we started in the evening and I believe we went until the next evening when we finally stopped working on it.

## Jigs Sketch

Warning: This ones a bit of an unfinished project. A bit of backstory on this project: I was starting to read the book A Programmer's Introduction to Mathematics by Jeremy Kuhn (great book by the way haven't finished it yet but got through atleast the first two maybe three chapters so far). Anyways Jeremy has a challenge after explaining there is a unique polynomial that there is a unique degree n polynomial that goes through n+1 points. He gives the equation as well as pseudo code for writing your own way to find the polynomial. After writing the code and looking at one of the exercises in the end of the chapter I decided to try and use a spline in a drawing application. Anyways long story short I ended up using a Catmull-Rom Spline which is really excellent for getting a smooth curve through a small amount of points. By the way Jigs is my nickname.

## Maze Solving

This was a maze generating and solving game I made for my Game Development class. Jamis Buck the author of Mazes for Programmers and a Ruby on Rails contributor came to my game dev class just to talk about mazes and how we could use different algorithms to do things such as generating procedurally a 2D over-world map which always has certain properties that different maze algorithms have such as always having a path between two points.

## Snake Game (w/Audio)

Warning: this one has audio, so you may want to turn down your computer volume before clicking it. This was a fun one. We had to make a mini game in a couple of hours and we didn't know what we were going to be making until the assignment started. We could prepare our code in advance and use all our other game logic.

## Sudoku Solver

I used Knuth's algorithm X with Dancing Links. Algorithm X with Dancing Links is a fairly efficient educated brute forcing back-tracking algorithm that would let you solve a more general problem called the exact cover problem (other examples besides soduku include tiling a space with polionimoes ). Dancing Links is the name of the data structure used, because what happens is you use a quadruply linked-list (think like a doubly-linked list forward and backwards that make a grid) and are able to hide and show nodes in the list as you traverse the exact-cover problem search space. The main benefit of creating and hiding nodes is saving memory operations like creation and deletion. The reason for the quadruply linked list is, if your search space (usually visualized by a matrix) is fairly sparse then the doubly linked list can save alot of space and also a lot of time taking them both from space and time per row from O(n) to O(k). Algorithm X is the algorithm that has to do with using dancing links to solve the exact cover problem. It took me several reads of Knuth's paper, and finally with much help which largely came from other sources I was able to understand it (Knuth uses some strange syntax for linked-list setting and lookup in my opinion). I finished each implementation in about two weeks total. One week was spent for the initial implementation and one week for the UI using things I was learning in Object Oriented (it was for an assignment in that class).