is the newest experiment on Constraint Systems, it lets you select different rgb values using key color combinations -- simulating the experience of mixing colors.
Rgb fell out of another project, where I was returning to the grid-based editing of Hex
trying to put it together with the sprite-based font editing from Face
. With outlining and text, I'd be close to the grid-based paint program useful for creating diagrams. I decided the missing piece was color, and then I got caught up trying to decide the best interface for inputing color. I originally thought I'd use a color palette with a few (8, 16?) colors to be selected, but I wanted to experiment to see if there were more intuitive interaction set-ups -- something more similar to the hex experiment.
I decided to try a method where you use key combos to set the rgb values, one column for red, one column for green, one column for blue. Each column has options for 0, 122 (half), and 255 (full). This lets you do the basic combos, and also get mixes for things like yellow, cyan, and orange.
I used rgb because it corresponds to the colors pixels are made up of in the computer display. In some ways, if I want an intuitive, painterly interface, it would make sense to use a color space that fits better with human perception like HSL. But something I'm narrowing in on with these experiments is what exactly I want to do. I think what I want to do is bridge the gap between the computer in the user in an interesting way. I don't want to build an interface where the user doesn't have to think about what is going on in the computer at all (an approach I associate with Apple). I want to "go with the grain" of what's there. By providing an interface where people can productively collaborate with the computer, while also getting used to some of the lower-level abstractions, I can help them build knowledge that will carry over to the larger computer system and will make them feel more empowered to do other things.
That is the more philosophical motivation. It's also true I think that creative systems just thrive on constraints -- so why not use the constraints that are built into the computer. This makes for a collaborative interface on the part of the user, and it's also an interesting collaborative process for me to develop the interface, choosing which parts to augment of make more forgiving and which parts of the representation to keep laid bare.
The interface also provides a playground. One of the interesting things related to AI and its current limitations, is the question of whether it can really learn without an embodied experience of cause and effect. One of the experiments of constraint systems is how quickly we can adapt to a new system if we have quick and consistent feedback. It's something I've been exploring myself in the computer programs I use -- switching to Linux and using lots of keyboard shortcuts, using a smaller keyboard. I've been surprised at how possible the switch is, though it eased a lot by a consistent set of expectations, and a consistent mental model of how the shortcuts and the system works. I'm interested in creating those experiments in miniature. I'm also interested in the overlap between these ideas and how you learn a videogame or an instrument. I think about the system behind Minecraft a lot. Where you have this set of rules that you can reason about, there's also a lot of eccentricities, but I think the block rule set keeps it grounded. I think about how popular Minecraft is (the most popular game of all time!) how it fits into a human desire to create.