Jefferson Project Data Viewer

The Jefferson Project at Lake George is a non-profit environmental partnership between Rensselaer Polytechnic Institute, IBM Research, and The Fund for Lake George. Part of the project involves monitoring the lake with a number of sensors, which generate a lot of data every day. This project aims to display that data in an intuitive and immersive way, projecting the weather and water readings into a virtual recreation of Lake George and allowing you to watch them play out. Built using the Unity engine and C#, plus some rendering and compute shader programming.

Info About the Jefferson Project

Development of the viewer was started by Michael Henderson, an IBM researcher. I was brought on by him to optimize and further develop the project.

My notable contributions
  • Greatly optimized the terrain system, which was one of the main performance bottlenecks. The terrain system uses high-resolution draped terrain images pulled from a remote server, rather than the texture splatting more commonly seen in games. This made balancing looks, network speeds, memory usage, and GPU bandwidth a challenge. By improving chunk sizing and resizing, caching, data structures, and mesh creation, I was able to make it run at a consistent framerate on target systems.
  • Greatly optimized the system used for drawing wind and water currents. The updated system makes heavy use of the GPU for updating and rendering particles, leading to an extreme improvement in performance.
  • Optimized and improved the system that placed points of interest in the world, such as sensor platforms. PoI are now created dynamically based on data from the remote server instead of placed by hand, meaning that new sensors will be automatically integrated.
  • Added completely new holographic displays to all sensor platforms, allowing users to easily bring up a graph of any value the sensor tracks. The graph can display the progression of a value over time, or compare two different values.
  • Added the ability for the automatic progression of time to halt and wait for necessary resources to load.
  • Redesigned a large part of the UI for better looks, user experience, and performance. This includes redesigning the date/time selector and the mini map, and creating the compass rose at the bottom and the "Waiting for" display at the top.
  • Integrated a day-night cycle and weather plugin with the existing date and time system.
  • Began work on displaying the cloud density data. The current system uses horizontal slices, but I was looking into a raytraced rendering system.

Unfortunately, the data viewer is not publicly available, and is only used internally by the research team. Please enjoy some screenshots of it instead.

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 museum installation centering around a virtual touch pool, in which a number of users can view and interact with the fish and plankton found in Lake George. The touch pool was built using the Unity engine and C#.

Project Website Video of the Touch Pool

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 a touch-driven museum experience. Due to my input, the game was transformed from a first-person exploration game, suitable for one player at a time, into a top-down virtual touch pool.

At time of writing, The World of Plankton is installed at the ECHO, Leahy Center for Lake Champlain.


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 7,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.