Gallery

Various visualizations for some projects I have worked on since 2020. Enjoy!

Snake-cube solver

Basic idea of the snake puzzle is to fold the snake into a box.
My Julia implementation can solve the base 27 block problem in 13 microseconds using a depth first tree search. Solving larger puzzles with different configuration is also possible. The above slices through various "branches" of the solution tree for demonstration purposes.

Lenia

Lenia are a continuous generalization of Conway's Game of Life. This is my julia implementation of the basic algorthim and can generation beautiful patterns reminiscent of fluid dynamics.

Denoising Diffusion probabilistic models from first principles

This is an attempt to explore and reproduce a minimal example of Lior Sinai's brilliant tutorial on Denoising Diffusion probabilistic models from first principles. github

Server-side tic-tac-toe!

You can play server-side tic-tac-toe here! Uses htmx and oxygen.jl

Calculator

I used a shift-reduce parser which avoids using Javascript's eval function which is both slow (not JIT compiled) and a potential security vulnerability. github.

Error and sensitivity of single steps of ODE solvers

Uses DifferentialEquations.jl to plot single steps of any ODE solver in DifferentialEquations.jl. You can see how the ODE solver introduces error by "jumping" to adjacent integral curves of the exact solution of the differential equation.
.

Finite difference solver for the Navier-Stokes equation

A coupled flow for the incompressible, viscous navier-stokes equation. You can view the course code on my github
.

Fast poisson solver using the Euler-Poisson-Darboux Equation

We can see the Euler-Poisson-Darboux (EPD) equation is able to find the "steady state" faster than the heat equation. Closely related to gossip problem in computer science or more generally solving elliptic PDEs numerically quickly.

Ellipsoidal Earth with trajectory animation

Trajectory of a rocket from GPS time series data projected accurately onto as WSG84 model of the Earth.

Interactive stress-strain curve

We can model a simple polymer material with molecular dynamics and interactively output coordinates to Makie.

Figure 1: Basic initialization

Figure 2: Stretching
Figure 3: Compression

Ray tracer

Ray tracer implemented in Julia using Peter Shirley’s book "Ray Tracing in One Weekend".

Bee swarm image interpolation and modal analysis

Figure 1: Image analysis fitting a video of a bee swarm scattering to a 3D model.
Figure 2: Computing vibrational modes of a bee swarm model ordered by energy (lowest to highest).

Lotka-Volterra network modelling

Figure 1: Simple graphic showing flow of biomass in a lotka-voltera network
Figure 2: Biomass flow in a more complicated lotka-voltera network
Figure 3: Neural network controlling one organism's population to prevent extinction of organisms in other nodes of the network.