Skip to content

Instantly share code, notes, and snippets.

@meodai
Last active September 5, 2025 18:40
Show Gist options
  • Save meodai/74b395b57b2159f4a6b5ec9d621fd6b3 to your computer and use it in GitHub Desktop.
Save meodai/74b395b57b2159f4a6b5ec9d621fd6b3 to your computer and use it in GitHub Desktop.
My mission

Why I Build Generative Design Tools

I'm lazy. I hate tedious work. And I'm obsessed with the unexpected.

This combination drives everything I build. I'm less interested in curating static collections of decisions: colors, typography, components—and more compelled to build systems that think. What if we went further and treated design like Karl Gerstner treated his visual programs: as living systems with internal logic that generate new solutions? Systems that surprise me. Systems where I define the rules and let emergence do the rest.

Picking colors one by one and manually ensuring they work together is exactly the kind of tedious work I hate. So I built Poline to draw lines between anchor points instead. You set the relationships, the math does the work. I built RYBitten to translate colors through Johannes Itten's subtractive wheel, because sometimes RGB feels dead and you want colors that breathe like paint on canvas.

This idea of encoding relationships scales up. RampenSau generates entire color ramps using hue cycling and easing curves. Feed it parameters, get palettes that feel both intentional and surprising. The system explores spaces I'm too impatient to map by hand, finds edges I'm too conservative to push.

But here's where it gets interesting: what if your entire palette was alive?

Color Router treats colors like a spreadsheet where everything can reference everything else. Your button hover state isn't a fixed hex value—it's "darken the primary by 15%." Your text color isn't manual—it's "best contrast with the background, preferring brand colors." Change your primary once, watch hundreds of decisions cascade automatically.

This isn't about efficiency (though that's nice). It's about creating conditions for discovery. When you encode relationships instead of results, you get combinations you'd never try manually. You get systems that maintain coherence across complexity you couldn't track by hand. You get emergence.

I keep coming back to this idea: what if we spent less time making individual decisions and more time designing how decisions get made? Less manual color picking, more relationship building. Less fixed outcomes, more intelligent systems.

Maybe that's all these tools really are—ways to be lazy more intelligently. Ways to automate the boring parts so I can focus on the parts that actually matter: the logic, the relationships, the unexpected combinations that emerge when systems start talking to each other.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment