This project explores the question: what does it mean to listen to an image? Given any image, it will be decomposed into a set of frequencies which are then played as audio.
Made for Drone Jam 2022.
Entwined is an art installation in Golden Gate Park. It is ~2000 LED cubes that are programmed to light up in fun patterns. Anyone can write a pattern in Java/Processing and submit it to the installation.
An analemma is the shape the sun makes when you take a picture of it every day, at the same time and at the same location, for a year.
This is a project to visualize what that would look like from any point on Earth.
Every time anyone in the world tweets "Good morning" or "Good night" in any language, this app picks it up and plots the tweet on the map.
This was my senior capstone project. It's a WebGL based viewer to help students develop an intuition for 4 spatial dimensional geometry. I gave a !!Con talk on it.
It was designed to teach an Introduction to 4D Geometry class for non-math majors. It allows you to input objects as cartesian equations or a set of points defining a convex hull, and then see it projected down into 3D in addition to being able to take 3D slices of the 4D object.
It was a lot of fun to make this and learn about how our perception of a 3D world largely happens in our brains, not in our eyes. So there's no reason we can't learn to see 4D as well.
An Atom plugin for tracing variables inline.
It was an effort to teach systematic debugging. I noticed many beginning students spent a lot of time staring at broken code. Often just asking them "What do you think the values of each variable in this line are?" and confirming those guesses was enough to solve their problem.
Pronounced eye-reen-a, as in, A.I arena.
This was a multiplayer game that won 1st place at CarlHacks. It's a space shooter where you write bots on the fly to battle each other. My initial goal was to make the process of writing great code more transparent. The audience would watch as the players designed and tweaked their algorithms in real time.
My second goal was to create a fun sandbox for thinking about AI that encourages playing the game, reflecting on your own thought patterns, and trying to write down those thoughts as code. The player can seamlessly switch between the AI bot and the human input mid-game.
A consequence of this fluid play is the ability to play as a unified augmented intelligence, for example, letting the bot handle precise aiming while you use your strategic judgment to decide when to shoot.
My most popular are Unraveling the JPEG and A Geometric Intuition to Linear Discriminant Analysis.