Keyboard Shortcuts

G H Go to Home
G P Go to Photography
G C Go to Generative
G R Go to Projects
G K Go to Cooking
G I Go to Interests
G B Go to Blog
? Toggle shortcuts
ESC Close modal

Generative Art

📖 Calculating...

Code-based visual systems that generate unique outputs from algorithmic rules. Not generative AI—these are deterministic systems where I write the algorithm, set parameters, and let the system explore the possibility space. Each run produces something different, but within defined constraints.

Philosophy

The goal isn't to replace manual art-making—it's to explore what becomes possible when you can iterate thousands of times in minutes. I write the rules, the system explores variations. It's a collaboration: I provide constraints and aesthetics, the algorithm provides surprise and scale.

Most important lesson: randomness isn't enough. Pure random noise is visually uninteresting. Good generative systems balance control and emergence—structured randomness. Perlin noise over white noise. Constrained color palettes over full RGB. Rules with a little wiggle room.

Technical Approach

All sketches use p5.js, a JavaScript library that makes creative coding accessible. It provides a simple API for drawing, animation, and interaction while running natively in the browser. The sketches below are live and interactive—many respond to mouse movement or generate new variations on each run.

Key Techniques

Click any sketch to view full-screen. Use arrow keys to navigate between sketches. Sketches marked with ✨ are interactive—move your mouse to control parameters and see the system respond in real-time.

Technical Challenges

Creating generative art involves solving both aesthetic and technical problems:

Performance

Complex systems can freeze browsers. Early work used Processing (Java), but I migrated to p5.js for web deployment. For computationally intensive sketches, I've moved to WebGL shaders that run on the GPU. The goal: smooth 60fps animation even with thousands of elements.

Determinism

Ensuring the same seed produces the same output across browsers and devices is critical for print reproduction. JavaScript's Math.random() varies between environments, so I use seeded random number generators for reproducibility.

Parameter Tuning

Finding the sweet spot between too rigid (boring) and too chaotic (noise) requires generating hundreds of variations and evaluating manually. I often create parameter exploration tools that let me adjust values in real-time and save promising combinations.

Color Theory

Algorithmic color selection is surprisingly hard. RGB color space doesn't match human perception—equal steps in RGB don't produce equal visual differences. I've learned to work in HSB (Hue, Saturation, Brightness) for intuitive control, use restricted palettes inspired by artists, and implement perceptually uniform color spaces like LAB when color gradients need to feel smooth.

Influences & Resources

My generative art practice draws from mathematics, computer graphics, and visual art traditions:

Artists & Practitioners

Learning Resources

Mathematical Foundations

Process & Workflow

My typical generative art workflow:

  1. Concept: Start with a mathematical or natural phenomenon (waves, growth, interference, etc.)
  2. Research: Study the underlying mathematics and existing visualizations
  3. Prototype: Build the simplest possible version in p5.js, get something on screen
  4. Iterate: Add parameters, try variations, break things and see what happens
  5. Refine: Tune parameters, adjust colors, optimize performance
  6. Export: Generate high-resolution outputs for print or web display

The best discoveries come from accidents—a misplaced parameter, a typo in an equation, an unexpected interaction between systems. The key is recognizing when something interesting emerges and exploring that direction.

Future Directions

Current areas of exploration:

The field is evolving rapidly. New techniques, tools, and platforms emerge constantly. The challenge is staying curious, experimenting constantly, and maintaining a personal aesthetic voice amidst the noise.