Programming

I'm a programmer with an interest in computer graphics. I spend my time working on animation software, developing p5.js, and working with the creative coding community to make better tools.

Spring Theory: Proof of Why Cat Toys End Up Under The Couch

Proceedings of SIGBOVIK, March 15, 2026

A probabilistic model of cats playing with spring toys that explains this strange phenomenon.

When my cat's favourite toys are put out, they inevitably and rapidly end up shoved under the couch. This work confirms via computer simulation that cat toys will *always* end up under the couch. When fitting the theoretical model to real-life observed speeds, we discovered the existence of *dark car fur*, an unseen mass under the couch increasing the rate at which toys get stuck. The model predicts 10,000kg of dark cat fur under my couch to explain the motion of cat toys in my apartment. Since cats are perfect spheres and celestial bodies are perfect spheres, this model opens the door to a new understanding of astrophysics.

Tall Tales: Tangent-Aligned Text Stretching

September 28, 2025

Stretching a font generally doesn't look very good. Instead, we can find the most stretchable areas automatically and preserve the details in the rest!

Slices of a font stretch proportional to how well the tangents at that slice align with the stretch direction. This technique works for standard outline fonts, so you can try it on just about any font!

Vertex Shader Domain Warping with Automatic Differentiation

May 14, 2024

I worked out some math to be able to apply arbitrary warps to 3D meshes in a shader and still get correct lighting and reflections.

Domain warping is a technique commonly used in creative coding to distort graphics and add visual interest to a work. The approach has the potential to be used in 3D art as mesh vertices can be efficiently warped using a vertex shader in a WebGL pipeline. However, 3D models packaged for the web typically come with baked-in normal vectors, and these need to be updated when vertex positions change for lighting calculations to work. This is typically done via finite differences, which requires parameter tuning to achieve optimal visual fidelity. We present a method for 3D domain warping that works with automatic differentiation, allowing exact normals to be used without any tuning while still benefiting from hardware acceleration.

Major programming projects Side projects

Arts and Design

In my spare time, I draw, make animations, and write music. I make a lot of sarcastic cover songs as well as serious music.

Art Animations Music