Programming Side Projects Music Art Animation Blog Everything


Animation Principles for Creative Coding

September 1, 2023

For decades, animators have been teaching the 12 Principles of Animation, a framework to help animators learn how to make convincing character motion. While intended for character animation, the 12 Principles can help us with the motion of more abstract graphical elements too, and avoid our motion graphics becoming "Powerpointy."

How To Draw a Line

CC Fest, March 30, 2023

How does one add character to the stock vector line? In this session, work towards some techniques you can use to add more expression to your lines in p5, live coding our way through the math and geometry of lines to adding texture in shaders.


Black hole rendering

November 26, 2022

In which I really stretch the "science" part of "computer science" and presume to do some physics.

Speeding up tint() in p5.js

September 3, 2022

A problem I thought would be easier, but it turns out the browser is a little odd.

Flood Fill in Blender Grease Pencil

May 1, 2022

How the fill bucket tool in Blender works and how I tried to make it a little better.


Depth of field in p5.js

October 3, 2021

Let's add some blur to p5 WebGL mode!

Deforming 3D shapes in real time, for the algebraically challenged

August 1, 2021

A recent rabbit hole I went down: how do you deform and distort arbitrary 3D shapes in real time and still have useable normals without having to do a bunch of derivatives by hand?

Why does dappled light look like that?

May 8, 2021

A bit about how lighting works. Tl;dr: it's a bunch of pinhole cameras.


A year and a half of music

December 19, 2018

As a Google Play Music subscriber, I get jealous of Spotify's year-in-review stats. I decided to remedy this by scraping my music listening data and doing some analysis myself.

Improving the procedural modelling workflow

November 17, 2018

A discussion of the most tedious parts of something made to make modelling less tedious, and how they can be improved.

Real-time shadows: arriving at the SSAO algorithm

April 14, 2018

A review of the design constraints leading to the widespread use of SSAO


Purpose: A Year in Review

December 21, 2017

A reflection on the growing up I did this year.

Anatomy of a Code Golf Solution

August 11, 2017

I learned a few tricks by trying to compress some Javascript source code as much as possible.

Volumes and Subsurface Scattering

June 24, 2017

An explanation on how we use probability densities to represent permeable materials in 3D rendering

Simple Inverse Kinematics

March 12, 2017

A quick and dirty algorithm for posing bones


How Raytracing Works

October 27, 2016

After writing a raytracer, I thought I'd make a walkthrough sharing the strategies you can use to make a 3D renderer

Demystifying English Parsing

July 28, 2016

Natural Language Processing is one of those things which can seem too complicated and daunting to understand. I break down some of the base concepts to make it less of a magic black box.

Open Letter to CS247

June 6, 2016

I feel like our Software Engineering Principles course fell short, so I wrote a letter to the staff explaining what was wrong and how I thought it could be fixed.


Things to be Excited About in Perl 6

October 11, 2015

Some of the great parts about the language, and why you should be excited for its Christmas release.

Using Swivel in batch from the terminal

June 27, 2015

You can use Swivel from the command line, but it doesn't let you change the starting frame that way, so I tried to patch it in myself. It was an adventure in writing raw AVM2 bytecode.

Scrabble Solving with Regular Expressions

March 31, 2015

String parsing can make some problems a lot more fun.


March 29, 2015

Most hackathons are about coming up with innovative new ideas and making plausible startup prototypes. This one is different.

The New

February 15, 2015

How my sister's website came into existence.


Waterloo 1A Retrospective

December 25, 2014

A reflection on my experience in my first term of Software Engineering at the University of Waterloo.

YCHacks and San Francisco

August 9, 2014

I went to California for my first hackathon.

Intro to Javascript for Educators

March 23, 2014

A crash course in HTML, Javascript, and CSS geared for math teachers.


Dream Sequence Effects in Premiere and Animate Pro

August 10, 2013

How I made some of those trippy surreal effects from the opening scenes of The Weight.

Ripples Using Layer Masks in Flash

July 6, 2013

A quick demonstration of how I did that ripple effect in that one scene of Narcissus.

Fire Particles for HTML5 Canvas

February 24, 2013

Some cool Javascript/HTML5 particle effects.


Stress: A Brief Summary of the Past Month

July 30, 2012

In three acts: Website Issutes, Work at a Summer Camp, and NATA

Efficient Flash Techniques

March 24, 2012

Some techniques to be able to create Flash animations more quickly.

Responsive Web Design

February 18, 2012

Some tips regarding websites that scale and change to fit the screen and device it's on.


Swarm: AS3 Experiment

May 29, 2011

How to dynamically create a swarm of bugs in Flash.

Annoying Disc Script

March 26, 2011

For April Fool's, make someone's disc drive pop open repeatedly. It'll piss them off quickly.

AS3 Particles

January 29, 2011

Particles in Flash = cool.

Basic <canvas> Tutorial

January 26, 2011

How to do some basic scripting using the HTML canvas element.

Webcam-Controlled Games

January 14, 2011

It's a test to see if I could control a sniper game with a webcam.

New Year's Resolution

January 1, 2011

This year, I resolve not to change my website compulsively like I did in 2010.


AS2 Pixel HitTest

December 30, 2010

Test for ACTUAL collisions without a bounding box!

Synfig basics

September 15, 2010

Here's a basic tutorial to get you started with Synfig, because it's pretty complex if you don't know how to begin.

Photoshop Masks

June 12, 2010

Masking is the process of only showing part of an image on top of another. I'm here to show you how to do this.

Sound in Flash

May 21, 2010

Ahh, Flash... so many people fail to use its sound capabilities! Here's a tutorial about using sound in Flash and how to make it stay in sync.

Enemy AI

May 6, 2010

Enemy AI: The art of making interactive computer-controlled game characters!