Featured Challenge:
#183 β€” Mathematical Marbling

All aboard as I attempt to simulate the artistic process of paper marbling. The algorithm is based on the paper 'Mathematical Marbling' by S. Lu, A. Jaffer, X. Jin, H. Zhao, and X. Mao. The code is written in JavaScript using the p5.js library.

may 02, 2024

Mathematical Marbling

Filter by Language


Filter by Topic

Pick a topic to filter

It's the Mandelbulb! What happens when you take the original fractal (The Mandelbrot Set) and extend it into 3D space. And how do you visualize it in Processing (Java) as a point cloud?

The Mandelbulb

In this video I explore the wonders of the copy() function in the creative coding platform Processing, simulating slitscan photography and bending time itself! This video is thanks to Tim RodenbrΓΆker’s generous donation to The Processing Foundation!

Slitscan Time Displacement Effect

In this episode of Coding in the Cabana, Gloria Pickle and I investigate the Marching Squares algorithm and apply it to Open Simplex Noise in Processing.

Marching Squares

Coding in the Cabana is a series where I attempt challenges from my garden cabana in Brooklyn, NY. In this episode, I animate the path of the classic "space filling curve" known as the Hilbert Curve.

Hilbert Curve

It's the second episode of Coding in the Cabana! Here I attempt to visualize the Collatz Conjecture in Processing.

Collatz Conjecture

The Ramer–Douglas–Peucker algorithm (aka "iterative end-point fit algorithm"), takes a curve composed of line segments and reduces the fidelty to a "lower fidelity" curve with fewer points.

RDP Algorithm

Can I build an interactive 3D Rubik's cube in Processing? Yes! Someday I hope to return to this project and add an AI solver!

Rubik's Cube

In this multi-part coding challenge I show how to use a noise field and polar coordinates to create a perfect GIF loop.

Polar Noise Loops

In this multi-part challenge, I use a parametric equation (from Wolfram Mathworld) to draw a heart curve in Processing (Java).

Heart Curve

In this video, I follow Mike Ash’s guide to Fluid Simulation and port Jos Stam’s "Real-Time Fluid Dynamics for Games" algorithm and code in Processing (Java).

Fluid Simulation

In this holiday coding challenge, I create a "Brownian Tree Snowflake" in Processing (Java). This video was recorded as part of a fundraiser for the Processing Foundation.

Brownian Tree Snowflake

In this coding challenge, I implement Omar Pol’s fractal toothpick sequence.


In this coding challenge, I create a flocking simulation in JavaScript based on Craig Reynolds "boids" algorithm.

Flocking Simulation

Yes, sorting numbers can be fun! In this challenge I attempt to implement the "bubble sort" algorithm in Processing (Java) and visualize the process itself with animated lines.

Bubble Sort Visualization

Can I draw and rotate a 3D cube using Processing's 2D renderer with just some math?!?! Yes! Watch to learn more about rotation and projection matrices along with perspective and orthographic projection!

3D Rendering with Rotation and Projection

In this coding challenge, inspired by Numberphile I visualize "sandpiles" with Processing (Java).


In this coding challenge, I implement a pixel-based β€œfire” algorithm using Processing (Java).

Fire Effect

In this coding challenge, I attempt to simulate 2D water ripples using Processing (Java).

2D Water Ripple

Happy Star Wars day! May the fourth be with you! In this challenge, I code the iconic text scrolling/title crawl in Processing (Java) in 15 minutes!

May the 4th Scrolling Text

In yet another β€œPi Day” coding challenge, I attempt to generate a pdf β€œBook of Pi” with the first 10 million digits of Pi mapped to color. Processing (Java) is used for this project.

The Book of Pi

In this coding challenge, I create a double pendulum simulation in Processing.

Double Pendulum

In this coding challenge, I attempt to implement the Floyd-Steinberg Dithering algorithm and create a "image stippling" effect on an image (kitten, of course) using Processing.

Floyd-Steinberg Dithering

Langton's Ant is a cellular automaton that starts off with simples rules but takes on complex emergent behavior.

Langton's Ant

Getting tied up in 3D Knots in Processing is loads of fun! Thank you to Paul Bourke for the helpful reference and formulae!

3D Knots

In this multi-part challenge, I create a simplified version of the classic Atari video game Frogger in Processing (Java).


In this challenge, I attempt (emphasis on the word "attempt") to program the classic video game Pong in Processing (Java).


In this multi-part coding challenge, I demonstrate how to implement kinematics in Processing (Java).


In this two part challenge, I cover beginShape(), endShape(), and texture(), TRIANGLE_STRIP, QUAD_STRIP, and more. I combine these geometry functions with the Toxiclibs physics library to simulate a waving flag (with a unikitty image texture!)

Texturing Cloth Simulation

In this coding challenge, I attempt to create a "Fractal Spirograph" with Processing (Java). The visuals are inspired by images and explanation on C. J. Chen’s blog.

Fractal Spirograph

In this coding challenge, I follow up on the Earthquake Data Visualization challenge and create a 3D version in Processing(Java) using spherical coordinates. I also discuss some 3D vector math including the cross product.

3D Earthquake Data Visualization

In this coding challenge, I simulate a "random walk" with vectors in p5.js, varying the distance of each step size. This is known as a "LΓ©vy Flight" (named after french mathematician Paul LΓ©vy.)

Random Walker with Vectors and LΓ©vy Flight

In this coding challenge, I simulate a "random walk" with the p5.js library. This video is part of the course Nature of Code at ITP, Tisch, NYU.

Random Walker

In this multi-part coding challenge, I demonstrate how to use a circle packing algorithm.

Circle Packing

In this coding challenge, I implement β€œPixel Sorting” in Processing (Java). Using a β€œselection sort” algorithm, I sort the pixels of an image by brightness and hue.

Pixel Sorting in Processing

In this challenge, we build a word counting (concordance) application, and visualize the frequency of each word using variable font size! We also implement the TF-IDF algorithm

Word Counter

In this coding challenge, I implement a "Poisson-disc Sampling" algorithm to evenly (but randomly) distribute a set of seed points throughout a canvas. The algorithm is implemented in JavaScript using p5.js.

Poisson-disc Sampling

Let's code some Metaballs (aka Isosurfaces) in Processing and how to control them using the Blob Detection methodology from my computer vision tutorial!


In this 4th of July themed coding challenge, I build an HTML5 canvas fireworks simulation from scratch using the p5.js JavaScript library. I also show how to use Processing to create 3D Fireworks.


In this coding challenge, I use the "superformula" to make a 3D "supershape" in Processing. This is part 4 of a multi-part series on superformulas, superellipses and supershapes

3D Supershapes