I've noticed that many of the things my characters have done over a long time of role playing games have manifested in my life. The Bible says "Now the deeds of the flesh are evident, which are: immorality, impurity, sensuality, idolatry, sorcery, enmities, strife, jealousy, outbursts of anger, disputes, dissensions, factions, envying, drunkenness, carousing, and things like these, ... that those who practice such things will not inherit the kingdom of God." Galatians 5:19-21 NASB. One meaning I see in this is that if you practice something, even if you don't do it, it affects you.



I think Artificial Creativity can be used for test scripts, game worlds, game boards, business empowerment, document generation, art, design, marketing, sales.
Test scripts are used to validate programs and systems, and to insure the integrity of already developed code as it is modified and more is added. Systems with large numbers of states, that can combine with each other, can be tested by artificially generating combinations of states, and using these as test input. Systems that operate off of very complex data can be tested by artificially generating example data.
Game worlds can be generated using artificially creative means including generating characters, maps, societies, histories, settings, plots, situations, dialog, and artificially intelligent strategies for the generated characters. One area that Artificial Intelligence practitioners have long experimented with are toy universes. These are easier than the real world. They are also easier for AC systems because things are easier to generate within controlled contexts, and things generated also have meanings that are easier to interpret within contexts. Also, both areas find toy universes easier because the universes can be designed around the things that are easiest to do. An example of this for AC is the game Mine Sweeper. Which leads us to game boards.
Games can get more interesting if the game boards are different every time. Players who do not play set scenarios so well often hit a wall beyond which they can not progress. If the game board is different every time they won't get bored playing the same three easiest levels over and over again.
I have developed 'Rule of Twenty' models for human cognition, which can empower businesses by matching up the right person with the right job function. This can also be used to match people with careers. In addition AC can generate documents such as offer letters, proposals, form letters, marketing strategies, and sales copy, design tradeoffs etc.
I've been a programmer for about 20 years. Over that time I've noticed that my instincts are all wrong. When it comes to user interface I've always wanted users to be able to do more, whereas they want to do less. Having more functionality than they need would confuse them. I've always been really interested in what the programs do, not how they work, not the technology. All other programmers that I have encountered, care deeply about the technology, and not what the programs do. I have always wanted to work with command line interfaces, or better yet code. And yet the general trend of programs over this period has been toward more and more graphic interfaces. My favorite language of all time was Forth, a language which few people pay any attention to anymore.
I think what's going on is I have seen computer science for my whole career through the filter of artificial creativity. It's what I care about, and I have judged each new technology and trend by whether it can be easily used for artificial creativity, or whether it will get in the way. Object oriented programming is a good thing. It's just modular programming on steroids. Modular programming is important because you can create individual modules around AC models. I've been having oodles of fun at work with the new C# DataTable class. Using it you can have a micro database inside your program. And yet I have found no one on the web who has inherited from it into an enhanced class, and then inherited from that into specific classes to manage individual database tables as I have. Why is that? Maybe it has something to do with my instincts.
My instincts are finely honed for artificial creativity. I would not go back and use Forth because it did not make it though the object oriented revolution, needless to say through the Web scripting revolution. But it did have some characteristics which could well behoove us for artificial creativity work. The way I see Forth, it has something I call Concept oriented programming. Each concept can be distilled into a 'word' in Forth (which is like a module in any other language), and the words are strung together using spaces for syntax. The main syntactic element of Forth is a space. Spaces divide words and the relationships between modules (words) are handled by ordering and a stack. This system is so simple that even a computer could theoretically handle it. That's a key ingredient for artificial creativity programs.
User empowerment is more central to my desires than anyone I have ever worked with will allow. Artificial creativity is hard. And it is complex. It could be built piece by piece by dozens or hundreds or thousands of people. Picture a network of thousands of users each building a few pieces working together and sharing bits of model. I guess that's what the Internet is for. It is also extremely concept oriented which means it is very content oriented. In other words the users of artificial creativity programs would be the ones to build the models. What does that take? That takes being able to both use and modify the tools you use to create things. I have a concept called 'Artificial Creativity Enhancement' which would be the enhancement of human creativity activities by artificial creativity.
For example in a word processor artificial creativity enhancement would mean that some of a document written by a user would actually be written by the computer. The user would give the computer a description of what is wanted for some part of the document, and the program would write it. The user would have to be able to get down inside the word processor program and instill concepts into it for how the computer would write that part.
But it would have to be simple. For the user. This means that the syntax would have to be excruciatingly simple - like Forth. There would have to be some way to specify what they want. This sort of functionality would have to be designed in from the very beginning for this ever to work. The tool would have to be modifiable to conform to how each user thinks.
Also, the program would have to be of such a nature that the user could dig as deeply as they needed to into the substrate of the program to make the changes they need to get the results they need. The system would have to be designed so that the user could start with something they could understand readily, and then expose its complexity as the user evolved to learn more of its functionality. And it would have to be users not programmers who would do this because they are the only ones who know what they want to write. This is very different than the sort of programming we do today.
I have lived in that strange nether region between users and programmers, being very technical and yet caring about what programs do. My instincts are geared toward artificial creativity and not standard programming. Which I'm not knocking. Standard programming is critical to our civilization. So part of my goal is to extract from myself what those instincts tell me and write it here. Some of my instincts will be right for AC and wrong for other kinds of programming. Some of them will be wrong just because they are wrong and I will do my best to tell the difference. Some of them will be just plain right. You are welcome, come along for the ride.
Simplicity is important in artificial creativity because the most important characteristic of a model or a subsystem, is that the computer understand it. Simplicity helps the computer to understand. Models need to be optimally simple, and they need to be mostly correct. When you have a model that fits both criteria, you have a model that is elegant.
As an example by analogy, I have long had and interest in developing a layout for LEDs that is minimal in number, simple in configuration and which shows the letters and numbers easy to read. My layout is shown in the Artificial Creativity Blog logo:
. This is minimal in number with only nine LEDs per character. It is simple in configuration. It is rectilinear. It shows 25 of the 26 letters fairly well, and the letter V is manageable. And it does not distinguish between upper and lower case. So it is mostly correct. It shows an elegant tradeoff between simplicity and correctness.
If a model is easier for a computer it is easier for a programmer. Easy for a computer means it can grab onto it through something like a parameter list. That gets me to thinking. Perhaps I could develop a generalized interface so that the program can manipulate the models as objects. The interface might include 1) what it's for, 2) what its parameters mean in terms a computer can understand
The key reason for simplicity is the need to integrate artificially creative subsystems. Integration necessity defines what simplicity is.
What I right now have is a bunch of little programs, and models and proofs of concept and they need to be drawn together by the computer and used as needed. Maybe scheme would work. But does it have graphics? Maybe Forth would work. But it does not have objects. Maybe the profile system would work. I need to work on a profile for parameters. I need to start cranking out profiles and then design a higher level profile or model. In order to find this higher level model for integration, I need lots of simple models for various things and then see what integration scheme will work to integrate them. hmmm.
AC models for concepts are a different challenge than models for physical things like mythological creatures or even for events. Special purpose models work very well for concrete things like mythological creatures, terrain, or time periods. How do you model something like emotions or colors or cognitive types or English words?
To model concepts for artificial creativity, list them. For example a list of emotions might be fear, love, anger, sadness, happiness, joy etc. I call this a first order list. This list can be useful if you have a small set of concepts each of which your program interprets directly. The intelligence is in the interpretation, and somewhat in the list. The computer doesn't really understand anything except that there is a list, and it has a set of equally important items. The problem is most concepts are more complicated than this.
A second order list can be much more useful. The second order list gives the computer something to chew on. A second order list is a list of concepts that are combined with each other to produce the concepts that you want to model. Each item in the list can be combined with one or more of the others to generate a unique result. When they are combined you get the list you were actually interested in. By making a list of 20 concepts that can combine in any way, this results in 190 possible pairs, and 1140 triplets. The triplets have enough different results to start looking like creativity.
One easy example of a list of 20 is color. I have developed a set of color concepts which when combined should result in every color. Each one is attached to a different letter to make them easy to store and manipulate. They are:
| Letter | Color Effect | Symbol | Interpreter Action |
| A | Achromatic Aqua | [->] or (><) | desaturate |
| B | Blue | (_\) | average with blue |
| C | Cold Cyan | (->) | move around the color wheel toward blue |
| D | Dark olive | [/_] | darken and saturate |
| E | yEllow | (/\) | average with yellow |
| F | Faded brown | [_/] | lighten and desaturate |
| G | Green | (_/) | average with green |
| H | Hot pink | (<-) | move around the color wheel toward red |
| I | Infuscated Indigo | [||] | move away from saturate and desaturate toward the center |
| J | Jaded jade | [><] | move away from all extremes toward the center |
| K | blacK | [\/] | move toward black maintaining saturation |
| L | Light Lavender | [\_] | lighten and saturate |
| M | Murky Mustard | [_\] | darken and desaturate |
| N | Neutral gray | [--] | move away from white and black toward the center |
| O | Orange | (\_) | average with orange |
| P | Purple | (\/) | average with purple |
| Q | Quixotic chartreuse | (^^) | move around the color wheel toward yellow |
| R | Red | (/_) | average with red |
| S | Saturated Salmon | [<-] | saturate |
| T | whiTe | [/\] | move toward white maintaining saturation |
| U | Ugly magenta | (vv) | move around the color wheel toward purple |
start with (T) whiTe
then move the color part way toward (G) Green
then move is part way toward (A) Achromatic
then (L) Lighten the color
Finally, push the color part way around the color wheel toward blue (C) cold
Computers find rectilinear maps easier to understand than other types. The world however is a sphere. Artificial creativity relies on extreme simplicity. Think of the complexity of an artificial creativity project as C = E ^ N where C is complexity, E is the complexity of each individual part, and N is the number of parts. Therefore you want to keep complexity down as low as you can for every level. So a rectilinear map works best but the world is a sphere.
My solution is to use a cubic projection of the world I am working with. This can then unfold into a rectilinear map which a computer can easily handle. Because I am a Christian, I tend to like this particular unfolding:


One class of problem, which I run in to when building artificial creativity model, is a problem I call the Centaur Problem. I call it this because I first ran into it while and it is well described by trying to build a model for creating mythical creatures. Mythical creatures generally have some regular creature's forequarters and some other creature's hind quarters, or they are some type of hominid, or they are some type of dragon. So an AC model for building them would be to randomly select a set of hind quarters (including human as a possibility) and a set of forequarters (including human arms and torso), roll 50% for wings, and randomly select a head, 25% it matches either the hind or the fore quarters. The lists can then be tweaked to make dragons and pegasi also possible (fire breathing, dragon body, horn etc.)
Here's the problem. The centaur is not one of the possible outcomes from this model. The reason is that the hindquarters of the human part of the centaur are also the forequarters of the horse part. This means that the model has incomplete coverage. The centaur is a pretty creative sort of concept, and so if you are making an artificially creative mythical creature generator it isn't really very creative if it can't make a centaur. The most fun generator would.
One possible fix for the Centaur Problem is to move to a meta level above the level you are modeling. Start with a list of body types: centauroid, humanoid, animoid, dragonoid, and then select the various parts. This doesn't work very well because you can't easily get say an eight legged animal. And the creativity of body style is all the work of the human making the list not the model itself. In addition it's not simple, and there is no way to tell what list (hindquarters of forequarters) to get the center pair of appendages from.
Finally and most troublingly, you have to tweak the probabilities of each body type so that centaurs do not overpower the list. If centaurs consist of 25% of your results then the creator is off balance since only about 2% of mythical creatures are centaurs. Without tweaking the probabilities the model will give you unsatisfying results. This is manageable in the case of mythical creatures but what would you do if you were modeling something really complex like, for example, construction equipment. If you start having to layer one model on top of another, missing the proper tweaking at any layer will have unsatisfying results.
Another and probably better fix for the Centaur Problem is to work at a lower level than the level you are modeling. Instead of lists of heads, fore, and hind quarters start with a random selection of the rear of the creature. Have then a list of things that can be attached moving forward to each thing you have at the present stage. So select hind quarters, then select a body type or a neck. At the body type stage, select from either the hindquarters or forequarters lists, at the forequarters stage select either a body type or a head. When you reach the head you are done. Some tweaking is still necessary but now you have a model that covers all of the basic mythical creatures, is simple and flexible. What we have done here is create the centaur possibility as an emergent property of a lower level model. It can also cerate eight legged creatures which you did not have with either of the earlier models. Very cool.
The centaur problem shows up repeatedly in many different forms in artificial creativity. Do you artificially create a building plan by modeling the spaces or the walls? Do you build terrain generators focusing on borders or regions? Do you make random names by jamming syllables together or by stringing vowels between a structure of consonants? There are many examples.
July 2010
April 2010
March 2010
February 2010
January 2010
August 2009
July 2009
June 2009
May 2009
March 2009
February 2009
January 2009
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
March 2008
February 2008
January 2008
November 2007
September 2007
August 2007
July 2007
March 2007
January 2007
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006