Everything

Programming Side Projects Music Art Animation Blog Everything

Programming

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!

Pandemonium: A Panorama App Maximizing Jank

Proceedings of SIGBOVIK, March 20, 2025

A novel computer vision algorithm for stitching photos together with as much weird shit as possible.

The panorama feature on early smartphones produced frequent delightful visual glitches. Modern panorama apps are better at accurately reproducing their subjects, and subsequently forget their true goal: surprising the user with the unexpected and uncanny. We propose a novel camera system that maximizes occurrences of weird visuals rather than trying to sweep them under the rug.

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.

More Programming

Side Projects

snek

February 1, 2025

A wiggly snake.

Genuary 31: Camera Depth

January 31, 2025

A webcam feed + an ML-generated depth buffer. Leave 3D trails in space!

Genuary 30: Abstract Map

January 30, 2025

Generative maps drawn by a computer that can't quite remember the shape of the world.

Genuary 29: Grid

January 29, 2025

An arrangement inspired by the recent Brian Eno documentary.

More Side Projects

Music

Fifth Business

January 11, 2025

Songs about not being the main character.

Drifting

October 7, 2022

A new wave/house EP featuring upbeat drums, some flute, and more vocals than usual.

She Answered The Trees

November 19, 2021

A mashup of a few genres, centered around some ukulele

Limits

January 16, 2021

Channeling stress into dance music, inspired by Remain In Light.

More Music

Art

Hourly Comics

February 2, 2025

Made for #hourlycomicday 2025

National Gallery Stamp

December 7, 2024

The National Gallery of Canada, at the size of a postage stamp

Chicago Bean

August 17, 2024

Cloud Gate in all its beany glory

Scrungley pigeon

June 1, 2024

Painting of a pigeon I saw in Amsterdam that seemed to be having a bad day.

More Art

Animation

Blame It On The Bike!

November 17, 2024

The Ontario Government is trying to strip out bike lanes we just got finished building and is adding lots of red tape to the process of adding new bike lanes. I got annoyed enough that I wrote, recorded, and animated this thing in a week.

You Probably Can't Draw a Horse Without Reference

July 21, 2024

Our top horse scientists have been studying a very important problem at the forefront of sociopsychoequinology.

Interference

July 21, 2023

Sometimes your speakers pick up weird sounds. Based on a true story.

Pickle brine shot

April 20, 2022

A tiny animation about drinking a shot of pickle brine

More Animation

Blog

The joy of working on old computers

March 3, 2026

Happy Marchintosh! Allow me to talk for a bit about how fun it is to revive an old computer, read Encarta '98, and surf the World Wide Web.

Evolution of a Sketch

January 29, 2026

Today's Genuary prompt included the word evolution, so rather than programming an evolutionary algorithm, I've chosen to evolve a sketch manually by implementing it in a number of frameworks in the Processing family.

WebGPU in p5.js

January 1, 2026

We recently put up a release candidate build of p5.js 2.2 which adds a WebGPU mode! This won't be replacing WebGL mode for a while, and it's still very new and will benefit from testing and feedback. But it represents the start of where we see p5 going in a few years, so I wanted to talk a bit about it.

A decade in the industry

December 11, 2025

2025 marks 10 years since my first Real Job programming. Sometimes younger people in the creative coding community ask me about what my history and how I got here, so I figured it was maybe time to write some of that up and reflect a little.

More Blog