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
Integrating strange attractors in WebGPU
GPU-accelerated line rendering for WebGPU with instanced triangle strips
Interactive mathematical plotting in Observable Notebook Kit
WebGPU implementation of the 2D Kuramoto-Sivashinsky equation solver using compute shaders and Cooley-Tukey FFT for 3-5x performance improvement over WebGL.
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.
A personal narrative about a two-year conflict with a neighbor over noise complaints and restraining orders.
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!
High-resolution visualization of Clifford and de Jong strange attractors with interactive zooming and trajectory-based coloring.
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.
Implementing smooth bicubic texture filtering using only 4 hardware-filtered samples instead of 16.
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.
Computing generalized winding numbers in 2D using hierarchical Barnes-Hut approximation for fast inside-outside queries.
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.
GPU techniques for rendering adaptive contours using screen-space derivatives, with multi-octave blending and antialiasing.
Computing Voronoi diagrams and distance fields on the GPU using the Jump Flooding Algorithm.
An interactive visualization of the Bednorz and Bednorz analytic sphere eversion using scroll-driven animation
Interactive 3D simulation of nanotube and fullerene structures that can be physically constructed from toilet paper tubes.
Gray-Scott reaction-diffusion in 3D using WebGPU compute shaders with volumetric rendering via instanced depth-sorted slices.
Interactive bit-level visualization of how IEEE-754 single-precision floats represent integers.
Simulating 2D gravitational N-body dynamics using FFT-based Poisson solving on the GPU.
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 using eigenvalue decomposition.
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