Reel Timestamps
 - Directional Displace Nuke Gizmo - Nuke, Python 
00:36 - Unity Editor Attributes, Animation Modifiers, and Value Accessors - Unity, C#
00:59  - Variable Rate Function Traversal - Maya, pyMEL (for implementation example)

I enjoy working pretty much everywhere in both the games and animation pipelines, but no matter what I'm doing, there is one universal constant: tools. I build tools as I need them for whatever project I'm working on, which has led to the accumulation of a small collection of tools across a variety of applications. There are quality-of-life workflow enhancements like the Toon Boom Tool-Swap plugin for Harmony, pipeline tools like the Remote Smedge Submit Script for Maya, and even custom effects and transformations like the Directional Displacement gizmo for Nuke. Many of these tools were built over the course of the production of my short film Whittled Down, so make sure to check out my writeup on the film if you want to see some of these tools in action. Whatever the problem is, if there's a tool to fix it, I'll figure out how to build it.

I'm particularly proud of the Directional Displace Gizmo for Nuke and the Variable Rate Function Traversal function (which I applied as a Maya expression), so if you're looking for my best work I would recommend starting there.

Math and Algorithms

These are the most complex types of tools I've built. They generally involve a fair amount of applied math and are designed to solve technical challenges relating to the fundamental look of a scene.

Directional Displace Gizmo

A small Nuke gizmo that creates a human-readable displacement system.

Nuke, Math and Algorithms

Variable Rate Function Traversal

A method for changing the rate at which a function (such as an animation curve) is traversed over time, some of its applications, and a Maya expression that implements it.

Maya, MEL, Calculus, Math and Algorithms

Flicker Noise

A Nuke script that generates noise that oscillates back and forth but only changes direction when it hits the minimum and maximum values of its range.

Nuke, Python, Math and Algorithms


These are tools that help applications work more effectively, both on their own and when used as part of a larger pipeline. While they may not be used by artists directly, these tools work behind the scenes to solve challenges that make the technical aspect of managing a large project easier.

MtoA TX Typo Fix

Fixes two typos in the arnoldRenderer.xml file that break batch rendering command line flags relating to TX files.

Maya, Arnold, MtoA Plugin, Pipeline

Remote Smedge Submit Script

A simple Maya script for syncing remote render directories and generating config files for the Smedge render manager.

Maya, Arnold, MtoA Plugin, Smedge, Python, PyMEL, Pipeline


These are tools that help artists work faster. Many of them are small workflow tweaks intented to increase application quality-of-life in subtle ways.

Maya-Style Incremental Saves

Plugins for other applications to implement "Increment and Save" feature the same way that Maya does.

Nuke, Krita, Toon Boom Harmony, JavaScript, Python, Workflow

Toon Boom Tool-Swap

A plugin that adds two groups of hotkeys to Toon Boom Harmony: one to easily swap between the brush and pencil tools, and one to activate the cutter and select tools without affecting the alt key's bindings.

Toon Boom Harmony, JavaScript, Workflow

Krita Export Region

Krita plugin that allows you to export a selected region of a document.

Krita, Python, Workflow

Krita New Layer Alpha Inherit

Adds a button to toggle whether new layers are created with alpha inheritance enabled.

Krita, Python, Workflow

Krita Separate Brush and Eraser

Creates Krita hotkeys that treat the brush and eraser like separate tools.

Krita, Python, Workflow

Game Engines

These are libraries and components intended to solve problems that I often run into as a game developer. Some, like the plane renderer, are editor tools intended to make setting up a scene easier, while others, like the value accessors, are abstract libraries that make it easier to create time-saving reusable components.

Unity Value Accessors

A serializable object that allows scripts to dynamically reference the fields of other objects in the scene from within the Unity editor.

Unity, C#, Unity Library, Game Engines

Unity Editor Attributes

A collection of dynamic property drawer attributes for use in the Unity Editor.

Unity, C#, Unity Library, Game Engines

Unity Animation Modifiers

Provides components that can use equations to control any value in the Unity editor without needing to write additional scripts. It works similarly to animation modifiers in Blender or expressions in AfterEffects.

Unity, C#, Unity Editor Tools, Game Engines

Unity Plane Renderer

Unity component that simplifies rendering image planes in 3D space.

Unity, C#, Unity Editor Tools, Game Engines

Unity Alpha Corrector

Script that lets you set Unity images to have alpha values greater than one. This is useful for fixing transparent UI elements that look faded in linear color space.

Unity, C#, Unity Editor Tools, Game Engines

Unity General Interpolation

A Utils class that can be used to quickly build interpolation methods and coroutines for any object.

Unity, C#, Unity Library, Game Engines


These are fun little gadgets that don't solve any problem in particular, but do bring me a lot of joy.

Infinite Static Simulator

Plays static on your computer, fullscreen and forever.

OpenGL, C++