yet___another___jonathan

Juliascape

Fractals are some of the most beautiful and ubiquitous ways to generate global structure from purely local rules, but they almost always appear as 2D rasters. Here, I've written an OpenGL 3D fractal renderer, allowing you to experience them as a landscape. I do two cool mathematical tricks to make this possible: first, instead of doing a pixel-by-pixel iteration to compute the fractal, I can use something called the Douady-Hubbard potential, and second, instead of raytracing such a surface, I use an alternate technique called raymarching!

These fractals are called Julia sets. Each one is uniquely associated with a single complex number, meaning that there are an infinite number of them. This renderer lets you specify any "seed" number, allowing you to sample any one you wish.

Planar Circuit Visualizer

I wrote this simulator for myself when I was trying to understand the projector formalism for resistive meshes with on-edge voltage sources, but it's really fun to just set voltages on various edges and watch flows emerge throughout the entire network!

Abelian Sandpile

This is a demo I made for the Santa Fe Institute, designed as a literal sandbox demo of one of the most foundational thought experiments in complex systems theory. Originally it was introduced by Per Bak and co. in the late 80s, like so many cool ideas that are still relevant today. I wrote the renderer from scratch - each "cube" is actually just a distorted square, but this means I can render a huge number of cubes rather fast. You can click to place your own grains of sand and influence the simulation!

The sandpile is called abelian because of the way the update rules work - piles of sand "topple" when they're four grains or higher, and you'll reach the same final state regardless of what order you topple piles in. This means that the toppling operation is abelian (it commutes with other topple-ops). Incidentally, this property lets me save quite a bit of pain in coding the update rules for the simulation...

Gradbowl

We often read about optimizer hyperpameters like "momentum", "alpha", and "beta", but what do these actually mean in practice?

Here, you can specify a landscape of your own making and set different optimizers to work. Play with hyperparameters and see how these change the trajectories of the balls as they struggle downhill. See if you can find the right parameters to make optimizers escape local minima.

Lenia

Well, not Lenia itself - instead, this is a Wikipedia article I wrote about this clever continuous-space extension of discrete cellular automata like Conway's Game of Life.

(pictured: some guy)

Hi, I'm yet another Jonathan (Lin). Professionally speaking, I've been interested in the dynamics and applications of computers in all their forms, whether those be traditional von Neumann "grocery list" Turing machines, or alt/indie styles of computing like neuromorphic, deep learning, and reservoir computers. However, I generally take thoroughly unpaid interests in nonlinear dynamics, chaos, and pattern formation - which appear in fractals, swarms, and cellular automata, among other things. The rest of my site contains links to toys and other things I've made for myself and others, with some hands-on ways to poke and prod at these beautiful things to learn more about them.

Currently I'm a PhD candidate at the University of Southern California, studying neuromorphic computing with memristors under Joshua Yang. I have a B.S. in Computer Science from the University of Maryland, College Park and an MEng. in Bioengineering from the same. I've worked in T-4 at Los Alamos National Laboratory on neuromorphic computing using memristors and other memory materials like photorefractive crystals with Francesco Caravelli. I've also animated a course in complex dynamics with the Santa Fe Institute using Grant Sanderson's Manim.

If you want, email me!