I've discovered in doing artificial creativity designs that I am working with information rather than data. The distinction is not well defined. I see information as data that has meaning to people, and data as information that does not have meaning to people, only to a computer. The endeme data structure that I am now using for many of my artificial creativity designs is meant to hold information rather than data. Information is meaningful to a human. Data is meaningful to a computer.
I have become interested in the following way to shift from data programming to information programming. Create classes for columns in a table rather than for rows. The standard approach is to make classes for rows in a table so that each column ends up being a field in the class. This is strong typing, it also resists a generic approach to analyzing the data in the class or the table. Working from the other axis is harder and more prone to the problems associated with weak typing and mis-modeling the natural objects in a table (the rows). However, one begins with a string for the column name, an approach to the display of that data, an analysis approach, and an approach to the display of that analysis. Combining these things as fields in a 'column' class forces a more generic approach. And it is still 'object oriented', thus somewhat controllable.
Of course taking this course I expect to be crashing and burning sometime quite soon. Maybe it is through failure that this direction will succeed in a business setting. If the system becomes a failure, then the people asking for things from the system will ask for less. Just tell them you are going to make this part of the system broken, then try to meet their needs. You will be able to meet most of them with a lot of pain and in the process as long as you avoid making row objects you will be able to do refactoring on an entirely different plane.
You see, dividing things up by column rather than row requires that the functions applied to each column will need to be excessively generic. This means lots of extra development and once this is refactored you will get generic classes, objects and functions that will be of use when looking at any XML or table, or at least building blocks. You're going to be suffering through all sorts of difficulties, using every trick in the book both old techniques and new to get it to work. People will see you struggling and will ask for fewer little things and you can tell them that you can do big things for them but they won't be perfect. Imperfection can be the beginning of information programming. To make this manageable just do it with part of your project small enough so that if you completely crash and burn you can rewrite that part from scratch, and large enough so that you have a bunch of fields with diversity to play with. You're going to be forced into writing small parsers, using the strategy pattern, lots of delegates, and even using endemes.
I've been thinking about the difficulties of strong typing combined with the necessity of strong typing. I have come to the conclusion that artificial creativity programming works best off of a base of information programming. That we have so few standard information data structures, is part of the problem that artificial creativity faces. If the base isn't there, you can't build on it. I continue my search to find information data structures.
Thanks.
The benefits of hackneyed creativity.
When a human writes a book or creates something that is generally derivative and formulaic, we call that hackneyed. The person is called a hack. We think of it as uncreative. Don't knock it. There is no point in waiting for for computers to be able to do 'true' creativity before we declare success. If a computer does hackneyed creativity easily and consistently, that is a substantial advance in artificial creativity. It will also be helpful the the 'hacks' tell us their formulas so we can embed those formulas in software.
Once we have a solid foundation of hackneyed artificial creativity, then we can move on to the next step of more creative creativity, what people often call 'true' creativity. This of course presumes that the hackneyed creative system's software is available. We can only reach 'true' creativity with computers by building on hackneyed creativity if the hackneyed creativity software is accessible.
Thanks.
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