Everything

Programming Side Projects Music Art Animation Blog Everything

Programming

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.

Bean There, Done That: Computer-Assisted Design of Bean Sculptures

Proceedings of SIGBOVIK, March 23, 2024

An algorithm for optimizing a unique bean sculpture that best fits existing architecture.

Chicago's status as a world-class city is cemented by its iconic bean sculpture. Other cities, wanting to replicate the success, have muddied the bean waters by introducing their own bean variations: New York City has a bean sharing similar properties, and Ottawa has a sphere, dubbed the "Ottawa bean" by locals. Our economic analysis proves their worth, so naturally other cities will want their own. We present a mathematical model of the space of all bean sculptures, and an algorithm to help cities replace existing landmarks with beans.

A Jalgorithm for Japplying Jeans to Jobjects

Proceedings of SIGBOVIK, April 1, 2023

A super serious use of differentiable rendering.

For years, society has been plagued by the lack of a conclusive answer to the question of how arbitrary things would wear jeans, if they wore jeans. This paper proposes a jalgorithm to determine the mathematically optimal configuration of pants on a silhouette, leveraging recent insights in the fields of computer vision and differentiable rendering.

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

p5.strands: Writing shaders in JavaScript

April 8, 2025

We've developed a new way to get into shaders in p5.js 2.0! You can now write little snippets of JavaScript to modify the position, lighting, and material, and we'll compile it into a shader for you.

Novelty in the age of AI

March 23, 2025

I was asked to give some advice for graduating high school students on how to thrive given the Current State Of Things.

My cat broke my WiFi

February 1, 2025

I got a cat in January! One month later, she caused an internet problem that took me a day to figure out!

p5.js 2.0 and an open source philosophy

December 29, 2024

As we wrap up work on p5.js 2.0, I've coalesced some thoughts on what open source means for this project.

More Blog