Project Image Gallery

Hi!

Below is a collection of images from (mostly personal) projects I've worked on over the years. A few things to keep in mind:

  1. This gallery is not comprehensive; I've done more than what's shown here.
  2. It is biased towards projects that are visually interesting (so expect a disproportionate amount of computer graphics work).
  3. This is an unordered collection (I sorted alphabetically by file name).
  4. I'll try to make this page prettier soon, but I don't have time to muck with CSS right now.

There are 50-100 MB of images here, but they're set to loading="lazy". I've tried to keep any wallpaper-worthy photos at their full 1920x1080 resolution. Enjoy!

Conway's Game of Life cellular automata with some bloom and colors based on cell lifetimes.
A demonstration of a tool I wrote to render massive point clouds (and one of my favorite wallpapers).
Bathymetric detail of the Puerto Rico Trench parsed and filtered through some scripts I wrote.
Order sRGB color space with a 3D Hilbert curve, then wrap that line into an image with a 2D Hilbert curve, and you get this.
A tight breadboard audio amplifier I made for a university class.
An output from my random cellular automata / PDE explorer.
A nice render of the bifurcation diagram of the logistic map. Currently my Zoom background.
The paths of many 'ants' marching in cardinal directions, each occasionally spawning more orthogonal ants.
A few space-themed coasters I laser-engraved for my family.
A tool I made to extract optimal quantization palettes from photos.
An in-development screenshot of a Qt application I wrote to monitor and automate test equipment in my university's particle physics lab.
The prerequisite / corequisite network for my school's academic courses.
A flexible concept material I designed and 3D-printed.
Data from the James Webb Space Telescope is incredibly high-resolution, so much so that this happened while developing my @JWSTPhotoBot.
A render of a Peter De Jong attractor.
A diffraction pattern formed by shining a laser through a bunch of small, anisotropically-distributed holes (think Poisson disc sampling). Part of my senior optics lab.
Field lines from dipoles!
Using custom character sets and a 74HC595 shift register to draw graphs on an LCD display.
A simulation of diffusion-limited aggregation (DLA).
The vibrational eigenmodes of a heart shape.
Error diffusion strategies! I might publish the processes for the bottom two someday. I'm not sure I'll keep the names, though. Also, I'm not sure this is a faithful representation of Ostromoukhov's technique.
Exploring an infinite, procedurally-generated 'maze' with an LED display and an arduino. I think I had attached a joystick.
A compact way to do cellular automata with bit twiddling (rules are encoded in binary in the 32 bits of the input integer).
A cool-looking 2D Frourier transform that I apparently thought looked interesting enough to save.
A 3D fractal flame rendered with my point cloud software (with simulated depth of field).
A 2D histogram of pulses coming from a Gas Electron Multiplier detector observing muons. The features shown here are anomalies that were very difficult and frustrating to diagnose.
A flowchart documenting the shading pipeline in a 2D graphics engine I made.
A texture index glitch I ran into while programming a game.
The sRGB color cube embedded in LCH space and plotted in 3D (dithered into a .gif).
A little experiment/sanity check. Intuitively, random vectors in high dimensions all have roughly the same length.
A screenshot of the geometry buffer (G-buffer) channels in a graphics engine I wrote.
A glitch in a mesh relaxation program I wrote in C++.
Testing a screen-space ambient occlusion (SSAO) algorithm on the San Miguel model.
A glitch in a GPU fluid sim (OpenGL/C++) where 'grain boundaries' began to form, covering the density texture with little polygons.
A gradient of the daytime sky I extracted from a nice photo I took.
A 3D model generated by a program I wrote to voxelize network embeddings (for 3D printing purposes).
Pretty self-explanatory!
A random page of my homework in a university math class.
The output of software I wrote to automatically search the space of fractal flames (iterated function systems) and identify visually-interesting ones.
Image interpolation techniques from my Processing library, imageutils.
While making @JWSTPhotoBot, I tried experimenting with automatic stacking to make colored composite photos. This photo was generated somewhere in that development process.
A kernel density estimate for measurements of the magnetic field during an ESR lab. The separation between the peaks is roughly equal to the Earth's magnetic field along the axis we were measuring.
A klein bottle with a confusing (but, in some sense, optimal) embedding!
A histogram of waiting times between events in a scintillator detetor. The 'decays' peak is from muons decaying while inside the detector.
A lookup table (LUT) for use in a game engine I made.
The output of a program I wrote to learn about different map projections. I think this is an Eckert VI projection.
The output of a Monte Carlo simulation I created to explain the different features in a gamma spectrum we measured in a university lab.
A wallpaper-worthy render of the Lorentz system.
A screenshot of some software I wrote to visualize the Minkowski-GJK algorithm for determining whether two convex polygons are intersecting. I made this before a variety of excellent YouTube videos were available on the topic.
The first convolutional neural network I ever made (an MNIST classifier), from back in 2015. I didn't use any libraries for this.
A screenshot from a slick animated presentation I gave in my senior year of high school (I manually animated the whole thing in Processing).
The n=5,m=13,l=2 eigenmode of a Hydrogen-like atom, rendered with a volumetric GLSL shader.
The output heightmap of a naive erosion simulator I made.
A screenshot of software I wrote to correct tracking innacuracies in the Python library OpenSeeFace.
A million randomly-placed particles under the influence of gravitational attraction (a big N-body simulation). Optimized using the Barnes-Hut algorithm.
An FFT of live audio mapped to piano notes.
A screenshot of software I wrote to simulate PID controllers acting on a quadcopter.
The interior of a school playhouse I helped design (unfurnished).
That time I broke a $1500 piece of equipment because one power cable fit into a slot that it really shouldn't have. Voltage regulator chips are not supposed to have bumps.
A map of the nuclear decay network (decay paths between isotopes) with low branching ratio edges and some isotopes omitted.
A fun rendering method for voxel data where you draw large *squares* at each point. If you're not paying much attention, they look like cubes.
Software me and some friends made in high school for PID tuning our quadcopter in a test stand. Please ignore the text in the bottom left (we were children).
Some sort of genetic algorithm-like neural netowrk thing trying to act as a controller.
My first time experimenting with raymarching signed distance fields (SDFs).
A visualization of radial basis functions (or something like them).
A screenshot from one of my university research presentations.
A screenshot of a tool I made to explore polyhedra hiding inside symmetric groups.
A screenshot of a program I wrote to visualize the scanline floodfill algorithm.
The Sierpinski triangle, rendered using the chaos game in MIT's Scratch (a drag-and-drop language for beginner programmers).
A screenshot of my snake cube puzzle solver.
A screenshot of a graphics engine I wrote in C++.
A mildly-disturbing fractal featuring my friend Seth.
Some cool particle physics software I got to use/modify during a summer at Temple universty.
A pulse from a micro-pattern gaseous detector (yellow), its filtered version (magenta), and the resulting logic signal (cyan).
A detailed render of the Buddhabrot fractal (another way to visualize the Mandelbrot set).
A little DIY diffraction grating spectroscope for my family (and I) to play with.
A hollow sphere of gas v.s. a solid one. I don't recall why I rendered this.
A semi-photorealistic render of a marble resting on ice I made in Blender.
A fast screen-space subsurface scattering demo from long ago.
The setup I used to test my temperature when I had COVID and didn't have a thermometer available.
A tileable background texture (particle flows in a Perlin noise field).
A nice diagram I made for a university lab report.
A terrain-rendering LOD/mesh subdivision system on triangular grids for procedural planets.
A glitchy voxel raymarcher I ocasionally developed during my intro CS class in college.
Delaunay triangulation on a set of points masked with some sort of noise field.
I really have no idea what this is. It kind of hurts to look at.
A screenshot of a 3D n-body simulation using RK4 integration in C++.