cool stuff i made for fun
tetris 3d project

Tetris3D is a variation of classic Tetris placed inside of a 3D world. The game is fully functional and was completed at the end of 2010. Minor tweaking may be implemented in future updates. The project is open source and may be viewed by anyone at

Windows Installer
Source Code
Visual Studio C# 2008 Project Solution and Source Code
Tetris Requirements
Tetris Checklist
hexgrid turn-based war game tech demo

This is an example of a hexgrid turn based war game I built using XNA.  It was never meant to be a full game.  I put it together so I could explore the concepts of creating an hex board game.  It was a real challenge because up to this point I had rendered many of the games I have develop in a grid using a 2-dimensional array.  I was still able to use a 2-dimensional array for the model of this hex game, but it required me to make some heavy modification for how pieces move and which spaces are adjacent.  This project required a lot of math.  I also got to find shortest path solutions when moving pieces with impassable terrain in the way.  Another interesting challenge was solving which cell the mouse clicked since the board is not a simple grid.

There are 4 teams on the board.  Each team takes turns and must right click to end their turn.  Each unit has a movement range and may not move through enemies or trees.  Units may also stop to attack each other.  Player enter attack mode by selecting the same unit twice.  When a unit takes enough damage it is removed from the board.

Visual Studio C# 2008 Project Solution
modified xna platformer tutorial

I modified the XNA Platformer Tutorial so that the stage scrolls with the player instead of being fixed.  I changed the players sprite to a power puff girl to help me learn about sprite animations, but I didn't update the audio effect, so it sounds really silly.

Visual Studio C# 2008 Project Solution
missile intercept javascript game

This is a javascript game I built based on an old game I used to love to play on the SNES with a Super Scope. The game was called Battle Clash which had a Missle Intercept mode. Basically missle fly by the screen and various distances and you need to shoot them before they are passed the screen. Missle which are further away are smaller and move slower, but need to be led more then shot at.

Creating this was a lot of fun. A big thanks to Seth Ladd who gave me a lot of ideas on how to write javascript games with his Google IO presentation

Live Demo
Source Code
multiuser html5 canvas whiteboard

This is a very old demo I built a long time ago. Most of the code is terrible, but I wanted to focus on creating an application where users could draw on a Canvas collaboratively. I wanted to focus on the most basic mechanics. In this example, I just simple ajax button calls. I used to have a more advanced demo with colors and websockets.

Live Demo

I noticed that Ion-Auth had the start of implementing a feature where you could lockout an account if they made to many login attempts, but it wasn't finished. I use a very heavily modified version of Ion-Auth I created myself that has these missing features and more. I decided to add this feature main project of Ion-Auth.

bootstrap, from twitter issue #2043

I love twitter bootstrap and wanted to help out.  Despite being overall totally awesome, the bootstrap typeahead (which is basically an autocomplete text field) isn't that great.  I saw a request for a new feature to make it so that when the typeahead gains focus is automatically displays the menu.  I created my own fork and added the feature.

Now their is a variable you can set called focusshow that when true everytime you click on the typeahead it will automatically show the menu.  Before this, you had to start typing first.

ignited datatables mysql helper

I built a library to be used with DataTables server-side requests so that you can just write a query as a string and then have it run with the DataTables request variables getting applied automatically.

It is an alterative to the active record style queries built in Ignited-Datatables.  See . I usually prefer not having to write my queries with Active Records.

You write your query then the library modifies it and runs it for you while accounting for which records to grab, the sorting, and searching.  It will respond back with an array containing all the information needed to encode the JSON response.

Usage Example:

return $this->datatableshelper->query("SELECT a, b c, FROM myTable");

This code above returns an array with an entry for sEcho, iTotalRecords, iTotalDisplayRecords, Result, and sColumns. Result is what can be used to create the aaData entry in the JSON to be returned. You have to use your own function to get this object ready to be encoded as JSON, but it's pretty darn close already. I didn't include my own JSON function because I usually like to make lots of custom edits to my data before encoding it.

google stock price php scrapper

My Google Stock Price Excel Macro was really bothering me for some reason so I decided to try building another one using PHP.  This one gets the stock prices from Google in a different way using JSON.  To make the data easily available in Excel I outputted it to a very plain html table so it can be picked up using an Excel Web Query.

You can see a sample of the output here:


I created a sample where you can choose which stocks to show by changing the tickers in the URL here:,BLTI,MSFT

PHP Source Code
PHP Query Source Code
google stock price excel macro

I created a very simple Excel macro that gets a stock price in a XML file from Google and displays it in an Excel document.

Excel File
VBA Source Code
simd enhanced mips instruction architecture set

I worked on a project where we extended the instruction set for MIPS to include various vector and compound operations.

SIMD Enhanced Instructions focus on the implementation and manipulation of vectors.  The vectors implemented in our SIMD Enhanced span 64-bits and are indexed into 8-bit elements. A typical SIMD Enhanced Instruction takes two vectors, does some operation to using their elements, and stores the result back into a vector. This design allows a multiple data elements to be manipulated in a single instruction. The capabilities of the SIMD Enhanced design are not just limited to the stated typical case. Further implementation of the SIMD Enhanced design can be made to use vectors of various sizes with various element sizes.  Instructions could also be done using more than just two vectors or could be done down using a vector and a combination other data types. There is a vast variety of possibilities.

Final Project Paper and Source Code
complex parser project

This is an example of a very large and complex parser I had to build for one of my classes.  It could identify and parse a variety of different identifiers, operators, and statements.  If the user enter input that would result in a compile time error the parser would handle it and inform the user of the error.

Visual Studio C# 2008 Project Solution
simple interpreter language project

Simple Interpreted Language or SIL is a simple language created for a California State University, Long Beach CECS 543 course.  It is accompanied by a rudimentary development tool than runs in a Windows GUI.  The Windows GUI can be used to load SIL code stored in files with a .S extension or code can be edited directly in the GUI.  The Windows GUI also allows SIL code to be executed in a Console.  All SIL Programs display output to the Console and collect input from the Console.  The SIL project is capable of detecting and managing compile-time and run-time errors while running SIL Programs.  SIL supports a varity of symbols, data types, identifiers, and statement types.

Final Project Paper
Visual Studio C# 2008 Project Solution
Final Project Presentation
simple online java tic-tac-toe game with spectators

This project was a tech demo to explore Java asynchronous inter-process communication and thread locking between different machines on a network by creating a tic-tac-toe server where two players could join and compete while spectators can come as go as they please.  Since this program was just a tech demo for IPC, I wrote the program as a console application.

Source Code and Output
low level keyboard event catcher (keystroke logger)

I was curious how about how one process can hook into another process, so I did some reading about DLL Injections; which led me to reading about SetWindowsHookEx function; which then led me writing a program which captures all of the low level keyboard event and outputs any keys pressed regardless of which window has the focus to the console.  I really enjoyed this project because I've always wanted to try working with the Windows API.  It wasn't easy since the Windows API can be very low level and ugly, but I feel like a learned a ton working on this.  I wrote the program with C# and used parts of the user32.dll and kernel32.dll.  It probably has some mistakes in it since I don't have much experience working directly with the Windows API, but it seems to run just fine.  It wouldn't take much more work to turn this demo program into a key logger.

Visual Studio C# 2010 Project Solution and Source Code
simple java message server and message client

This project was a tech demo to explore Java inter-process communication between different machines on a network by creating a mail server where users could leave each other messages.  A user would only be able to read messages that were addressed to them.  Multiple clients could connect and disconnect to the server at anytime to read their mail and the system would keep working.  Since this program was just a tech demo for IPC, I wrote the program as a console application.

Source Code and Output