2005 - Present

Simple RTS

Simple RTS is a lane-based strategy game for Unity3D. Internally, the game uses an event system to reduce interactions between game objects and simplify state management. This has a few advantages over the traditional pattern of letting game objects communicate with each other directly. Most notably, writing unit tests is a lot easier.


F is a library that adds common functional programming tools to Unity3D. More specifically, F makes working with collections, objects and dictionaries more pleasant. It simplifies data transformations and lets you convert data between common types more easily. Inspiration taken from ramda.js.

  • Declarative syntax
  • Encourages the use of lambdas and LINQ
  • Shallow immutability
  • Makes repetitive data transformations easier


csvutil is a command line utility for working with CSV files. It supports markdown and is handy for creating data snippets on GitHub Gist. Writing this gave me additional exposure to RxJS and observable streams.

React Image Timeline

Like the name suggests, react-image-timeline is an image-centric timeline component for React.js. It renders a series of events in a vertical layout. It's lightweight, customizable, and should serve as a good starting point for timeline UIs. I created the component to better understand babel and webpack.


Staff Pick & Featured on Front Page

The Pennypult is a desktop trebuchet with a unique design. It's easy to construct and powered by spare pennies. On KickStarter, it was briefly featured on the front page as a staff pick. The project was funded on the first day and reached two stretch goals! All aside, it was another fun and creative Apptivus project.


GistList is a GitHub-integrated task list for iOS. It's Apptivus's second app and a welcome departure from games. It's a useful tool if you use markdown and Gist frequently. It's one of those apps that tries to do one thing well. It's free - give it a try.

Alien Hero

Featured by Apple under the Action and Arcade categories

Alien Hero is an endless runner for the iPhone and iPad. I founded Apptivus, a small company to build it. It features a lovable green alien and terrified human bystanders. If you like games like Jetpack Joyride, you might enjoy it. Additionally, it has some great artwork, sound, and music. I learned a great deal about the App Store and monetization making this. As of today, it is no longer available in the store.


Survive! is a simple avoider game written in 48 hours for the Ludum Dare #28 game jam. It was an opportunity to experiment with Unity's new 2D rendering engine. The talented Kris Zalameda provided the artwork and design.

Minimalist RTS

This was my first submission into a Ludum Dare game competition. It's a lane-based strategy game featuring only one unit type. The contest prompt was "minimalism". I built the game in under 48 hrs and made all the art and sound from scratch. For such a simple strategy game, there is still some skill required to beat the AI.

Space Battle

This is an HTML5 project that renders a battle between space ships. Each ship follows a randomly generated path while shooting missiles at enemy ships. I used this path technique in several future projects. It can be handy to generate repeating smooth paths.

Bezier Paths

This is a demo for a random path generator. It creates smooth natural curves that are great for animating particles and movement. Under the hood, it's using bezier curves to interpolate a path along a set of control points. It's proven to be useful in future game projects including Alien Hero.

Gaussian Calculator

This is a small utility I wrote to help me define gaussian kernels for use in graphics programs. It uses raphael.js for the SVG rendering. It outputs an array definition of the kernel in tandem with the visualization.


Spheres is the first app I developed for the Apple iPad. The app renders a cloud of spheres with a moving light source and camera. The goal was to use the GPU to perform the ray-tracing calculations. The performance is acceptable even on a first generation device.

Score Tracker

I spent some time trying to learn Interface Builder and Core Data. This what I made in the process. It's a simple iOS application that tracks scores between two players. I found using both Interface Builder and Core Data somewhat clumsy. Regardless, it was a good learning experience.

Photon Mapper

I put together a simple ray tracer that rendered shaded spheres for a school project. Later, I extended the renderer to support indirect illumination and lens effects. Building this improved my understanding of lighting models and lens caustics.


  • Area Sources
  • Refraction / Reflection
  • Specular and lens caustics
  • Indirect illumination and color bleeding
  • Tone-mapping and bloom
  • Shadow caching
  • KD-Tree implemented photon maps


BubbleSnatch was my first published iOS application on the App Store. It's a physics-based puzzle game where you rescue colored sea creatures. It's an enjoyable game and was generally well received. I learned a ton from making this game and it was a good introduction to Objective-C and the iOS platform. Currently, it is no longer available on the App Store.

HDR Artifacts

In college, I solved a problem related to CCD cell arrangement in digital cameras. Artifacts were found at the boundary between light and dark areas of HDR images. In most CCD arrays, there are 3 cells per pixel (one for each color channel). The cells are arranged close together in clusters of 3. The difference in position between cells introduce errors in the captured image. To deal with this, I wrote a filter that corrects the issue. See a visualization below.

OpenGL Engine

This is an OpenGL game engine that I started writing in college. It's not complete, but, bits and pieces have made their way into my other projects. This project taught me the fundamentals of OpenGL and multi-pass rendering. It's written in C++ and runs on Windows.


  • Per-pixel directional lighting
  • Tangent space normal maps
  • Per-pixel exponential fog
  • Camera that can follow bezier curves
  • Quaternion-based rotations
  • Heightmap generated terrain
  • Cube and sphere environment mapping
  • Mesh subdivision and deformation support
  • Particle systems and rigid body physics
  • Per-triangle collision detection


Front page -

This game was my most successful attempt at making a 3D shooter in Flash. Flash does not provide support for capturing the mouse so the controls feel a little weird. Temple features monsters, exploding barrels, and dynamic lighting. I wrote my own 3D renderer in the process. Writing the game definitely furthered my knowledge of 3D graphics and game design. The game was sponsored by


This was my first attempt at making a 3D first person shooter for Flash. I used PaperVision3D for the 3D rendering. At the time, it was not well-suited for games. The performance of the game is poor and sacrifices were made on the visuals. I ended up writing a more performant 3D engine for Temple, a future game. I learned a great deal making this, but, the end result is not something I am particularly proud of. The game was sponsored by


Front page -

3000AD is a MechWarrior-inspired action game. It features tanks, giant walking robots, and lots of explosions. This was before I started working with a designer so I had to produce the artwork myself. The game was well received in the Flash game community despite the generic artwork. The game was sponsored by

Zombie Slayer

Front page -

This was the first game I wrote for Flash 9. ActionScript 3.0 and the accompanying speed improvements were a welcome change. This game has some interesting physics and lots of zombie action. I did everything myself so the art and sounds are not the highest quality. Despite this, people liked the game and was featured on the front page. ActionScript's similarity to JavaScript prepared me for future web projects. The game was sponsored by


Placed in Fourth of July competition on Kongregate

This is a game like Missile Command. It features explosions big and small, bombers planes, and many powerups. Missiles placed in a Fourth of July game contest on Kongregate and I won a small lump of money. Not bad for a few hours of coding!

Burning Bridges

This is a real-time strategy game I wrote in high school. The A* path-finding was my first introduction to search algorithms. In a sense, it was my first "big" game. I even wrote a level editor to go with it. People seemed to enjoy the game despite it's dated graphics.

Sim Hell

This was my first Flash submission to Newgrounds. I updated it a few times and this was the end result. I built this to testbed some physics code. It inspired me to make an action game called Zombie Slayer a couple years down the road. Writing this taught me the fundamentals of particle-based animation.

Space Rocks

Space Rocks is a clone of Asteroids written for Flash. It was one of many games I wrote on my journey to learn Flash. It features, powerups, lasers, and some simple particle effects. Writing the game taught me the skills to build more advanced games like 3000AD and Temple.


Lander was the second game I wrote for Flash. It's a remake of a classic game I used to play on Windows 3.1. I added some floating boulders as obstacles. Rescue all the astronauts and return to the landing pad to win!


Flak is the first game I wrote in Flash. It's a clone of the classic game Ack Ack with a few improvements. Coming from Visual Basic, it was great to work Flash's vector graphics APIs. ActionScript became my introduction to dynamic programming languages.