Costa's minimal surface, a thrice-punctured torus with two catenoidal ends and a planar end
Interactive visualization of particle and light paths around a spinning black hole, including a gravitational lensing renderer showing the photon ring and Doppler-beamed accretion disk.
How I migrated this website from Idyll to Observable Notebook Kit
Boy's surface, an immersion of the real projective plane in three-dimensional Euclidean space
Interactive 3D terrain viewer for the Denali region built from scratch with WebGPU
Visualizing 3.3 million galaxies and quasars from the Sloan Digital Sky Survey
Interactive fluid flow with the Stable Fluids method of Jos Stam.
Interactive demonstration of using the Hess-Smith panel method to compute the aerodynamic flow around an airfoil
Interactive multi-scale Turing patterns computed in WebGPU
Strange attractors — chaotic dynamical systems whose trajectories trace out intricate fractal structures
GPU-accelerated line rendering for WebGPU
Interactive mathematical plotting in Observable Notebook Kit
The 2D Kuramoto-Sivashinsky equation, a chaotic PDE modeling pattern formation in combustion fronts and thin films.
An interactive explainer of the Wilcoxon signed-rank test for comparing paired performance measurements.
An explanation and WebGL implementation of Perfectly Matched Layers for absorbing boundary conditions in the scalar wave equation.
A personal reflection on consistent yoga practice with attendance visualizations over two years.
Tips and tricks for instantiating and managing a REGL WebGL Canvas in Observable Notebooks 2.0.
Kicking the tires of Observable's new notebook tooling!
Clifford and de Jong strange attractors with interactive zooming.
Interactive visualization of a magnetic pendulum demonstrating chaotic dynamics.
Quantifying treadmill efforts (to the point of injury).
Plotting and extrapolating trends in competitive speed climbing
Approximate pixel redistribution between images using sliced optimal transport.
The Shanks transformation for accelerating slowly-converging series, demonstrated on the arctangent formula for π.
Visually compare cubic interpolation using different basis functions.
Smooth bicubic texture filtering using the GPU's built-in bilinear interpolation.
Using Jacobi elliptic functions to solve an optimization problem about falling poles and large-amplitude pendulum dynamics.
Visualizing Earth's solar terminator on a Mapbox map using NASA Black Marble imagery and WebGL shaders.
Fast generalized winding numbers in 2D for robust inside-outside queries on arbitrary polygons.
Animating periodic three-body orbits using pure CSS keyframe animations generated from Fourier decomposition.
Lawson's Klein bottle, a generalization of the Clifford torus in 4D space
Computing hexadecimal digits of π at arbitrary positions using the Bailey-Borwein-Plouffe formula.
Visualizing the phase space of simple and compound double pendulums, showing how chaos emerges from coupled nonlinear oscillations.
Interactive simulation of a chaotic mechanical system whose dynamics map to the Lorenz attractor.
Deriving the formula for point opacity in large point cloud visualizations to maintain consistent visual density.
Adaptive contour rendering in fragment shaders using screen-space derivatives for smooth, resolution-independent contour lines.
Computing Voronoi diagrams and distance fields on the GPU using the Jump Flooding Algorithm.
The Bednorz and Bednorz analytic sphere eversion, a continuous deformation turning a sphere inside out without creasing or tearing
A comparison of three approaches to rendering transparent 3D surfaces in WebGPU, including a simple two-pass hack that draws gridlines and edges through solid geometry, weighted blended order-independent transparency, and depth peeling.
Interactive 3D simulation of nanotube and fullerene structures that can be physically constructed from toilet paper tubes.
3D Gray-Scott reaction-diffusion with volumetric rendering.
Interactive bit-level visualization of how IEEE-754 single-precision floats represent integers.
2D gravitational N-body simulation using the particle-mesh method.
Interactive catalog of periodic three-body orbits with topological classification via free group words.
Another gallery of multi-scale Turing patterns
A gallery of multi-scale Turing patterns
Automatically orienting 3D scans by computing principal axes from surface normals.
A collection of lessons learned from eight months of React Native development - environment setup, Redux patterns, performance optimization, and cross-platform gotchas.
Reflections on a decade of programming projects and the search for meaning in complexity