World of Plankton

World of Plankton was created by the outreach arm of the Jefferson Project at Lake George, a non-profit environmental partnership between Rensselaer Polytechnic Institute, IBM Research, and The Fund for Lake George. It is a 3D educational and explorative game in which the player travels the waters of Lake George, finding and examining the fish and plankton that inhabit them.

Project Website

The version of the game that is available for download on the project website above is a desktop game that was developed before I joined the team. I was brought on to port the game from desktops and controller input to tablets and touch input, and at the same time to clean the game up, make it more accessible, and prepare it for museum release. Unfortunately, no public release of the new, tablet version of the game which I am developing is currently available. Please enjoy some screenshots of the game instead.


My entry to Global Game Jam 2018. A two-man project for which I provided the programming and level design, and Steve Carcamo did the art and character design. Built using the Unity engine and C#.

View on GGJ Website View on GitHub

The game is a 2D sidescroller, in which a hamster-shaped alien crash-lands on Earth. Using his mental mastery over technology, he must take control of the Earthlings' appliances to get his ship back and return home. Possessing a machine leaves your body comatose and defenseless. I love the animation Steve did of the little guy twitching on the ground.


My entry to Gynvael's Winter GameDev Challenge 2017/18. Contestants were given four weeks to create a turn-based tactical game from scratch, with stringent space requirements. All JavaScript, image files, and other resources had to be packed into a single HTML file, which was 20 KB or smaller. Among other tactics, I ended up using a Python script to compile all my sources together and compress them into a self-extracting PNG file.

View on GitHub Contest Website Play Online (Chrome only)

According to the rules of the contest, the game only had to run on the latest version of Chrome. It is not guaranteed to run on any other browser. The contest website contains a YouTube video showing gameplay.

The game features two competing teams of frogs, as well as a computer-controlled team of bugs that can be eaten to regain health. It is played using the left mouse button to drag the camera and to select units, and the right mouse button to direct them.

Unfortunately, due to a mix-up on my part regarding the deadline's time zone my submission could not be considered for the final ranking. I'm still happy with the time I spent on it, and proud of the techniques I learned.

HTML5 Video Keyboard Shortcuts

A Chrome plugin that adds keyboard controls and shortcuts to Chrome's built-in video player. At time of writing the plugin has over 5,000 users and an average 4.25 star rating. Built using JavaScript, with a little HTML and CSS for the options menu.

View on GitHub View on Chrome Webstore

In March 2016, I finally got fed up with Chrome's built in HTML5 video player. While basically functional, it had no keyboard controls at all, which made things like skipping ahead or back tedious at best, and challenging at worst.

I decided to write a simple Chrome plugin that added the shortcuts I wanted, mostly drawn from Google's own YouTube player. After I'd finished that, it seemed simple enough to polish it up and release it publicly. It certainly wasn't as simple as I'd initially planned, but I've found the process very rewarding.

Cursed Words Translator

A website I made to automate translations to and from the fictional language spoken by dark spirits in the webcomic Paranatural by Zack Morrison.

View on GitHub Use the Translator

The language looks like a series of stylized skulls. Dedicated fans discovered that each pair of skulls corresponds to a spoken word from the webcomic itself, but parsing each skull pair and then finding the correct word on the correct page was time-consuming work. The translator can instantly translate in both directions, and even renders the skulls using HTML5's canvas.

Initial development happened in 2016, and was one of my first JavaScript projects. As such, the code was a bit of a mess. In Spring 2018 I returned to the project and rewrote it from the ground up, leaving the code much easier to read and extend.


A website I coded to help myself and others with the development of Minecraft commands. Minecraft commands can view and edit the NBT (Named Binary Tags) format used in Minecraft's save games, using a JSON-like textual format known as SNBT (Stringified NBT).

This website is a tool that takes an unformatted SNBT tag, checks the syntax for errors, prettifies the tag with line breaks and indentation, and outputs the result. It makes it much easier to spot mistakes in the tag, and can tell you if the tag contains an error without needing to boot up Minecraft.

View on GitHub Use the Linter

The linter has a lot of options to accomodate different formatting preferences. It is also available as a library for use on the web or with Node.js, although to the best of my knowledge this has yet to be used by anybody.


A side-scrolling raft game built using the Phaser JavaScript engine for RPI's Game Development I course by me and four other students.

View on GitHub Play Online

For this game, our team was given the prompt Some dudebros pull a prank that goes horribly wrong. The game stars six college fraternity brothers who soap a fountain, accidentally flooding their entire campus. They must escape the flood of suds on a floating mattress, collecting party supplies along the way.

My notable contributions:

  • Procedurally generated scrolling background.
  • A system for randomly spawning obstacles and/or collectibles ahead of the player. The system ended up being used for the grand majority of level design.
  • An unconventional health display, in the form of the number of people on the raft. Taking damage causes bros to fall off. Certain animations will only play if enough bros are present.
  • Robust player tinting/flashing system.
  • All voice acting (for my sins).

Named Prismarine

I named the block "Prismarine" in the game Minecraft.