Fri Nov 28, 2008

Merging User and Computer Creativity

Endemes provide an excellent way to merge user desired characteristics and randomness (aritifical creativity). An endeme is a permuted list of characteristics that can be combined in any way and in any order. If the computer comes up with some of them and the user comes up with some of them, then they merge well. So far I've done this only on paper and with a card deck, so I'll see how this flies when I try moving it to a computer. I discovered this while trying to roll out characters using the character sheet from my last article.


[0] comments (14 views) |  | [0] Trackbacks

Posted by: Jon Grover | Nov 28, 08 | 12:12 pm

Mon Nov 24, 2008

RPG Character Sheets Using Permutation Lists

I'm an old role gamer from way back and I have decided to find a new group to game with. It is likely that I would have to run something so I decided to try using my endeme approach to paper and dice role playing games. I have built a character sheet I am fairly happy with , and I am working on story generation sheet which being much harder for me still needs a lot of work. Here is the character sheet:



The endeme sets are:

Cognitive: A) Appearance, B) Bravery, C), Creativity, D) Deduction, E) EQ, F) Financial IQ, G) Growth, H) Presence, I) Induction, J) Physical IQ, K) Kinetic IQ, L) Language, M) Mechanical IQ, N) Navigation, O) Organization, P) Practicality, Q) Recognition, R) Reason, S) Service, T) Teamwork, U) Office work, V) Visual IQ.

Motivation: A) Addiction, B) Being, C) Creation, D) Design, E) Escape, F) Food, G) Good, H) Honor, I) Intrinsic motivation, J) Justice, K) Knowledge, L) Love, M) Money, N) Future, O) Opposing, P) Power, Q) Quiet, R) Random, S) Shame, T) Terror, U) Strengthening, V) Knowing self.

Type: A) Artist, B) Business, C) Close Combat, D) Distance Combat, E) Evangelist, F) Farmer, G)
Government, H) Healing, I) Industry/artisan, J) Jesus/messiah, K) Knowledge, L) Landed, M) Money, N) Nomad/traveler, O) Outdoor, P) Powerful, Q) Chivalry, R) Religion, S) Seaman, T) Titled/elite, U) Urban, V) Vet/animals.

Physical: A) Appearance, B) Balance, C) Coordination, D) Dexterity, E) Endurance, F) Frame, G)
Growth, H) Height, I) Ice, J) Jumping/acrobatics, K) Climbing, L) Listening, M) Muscle, N) Nerd, O) Obesity, P) Piloting, Q) Quickness, R) Riding, S) Resistance, T) Tropical heat, U) Swimming, V) Velocity.

Each character will have an endeme for each of the endeme sets. An endeme is a permutation of a list with items that can be combined in an order (an endeme set). I call it an endeme because endemes means together and what an endeme does is it welds a number of pieces of data together and creates a piece of information as an emergent property.

The items on the right margin of each endeme set are bonuses to other areas or items on the sheet. For example high bravery provides a spirit (s) bonus.
[0] comments (19 views) |  | [0] Trackbacks

Posted by: Jon Grover | Nov 24, 08 | 11:28 am

Thu Nov 20, 2008

The Adjective in Computer Science

So far in computer science we have nouns (objects tables or structures),
and verbs (methods or functions).
Here is an idea for adjectives: The endeme idea I have been working on.

Perhaps there will someday be a language with a syntax like

best.proposal.accept

where proposal is an object, accept is a method, and best is an adjective.
Pproposal would probably be
a list or array with an endeme attached to each item.
Best would be an adjective method written to select a particular item in the list
based on a best match or on some more complex endeme logic.

If you made an interface called IEndeme which required an Endeme property then you
could do:

proposal.best.accept

in C#. Interesting that it is actually English in reverse.
Then 'best' would be a method which returns one item from a list of items (proposal).
I think I'll add endemes to each of the list objects I make.

public interface IEndeme
{
Endeme BaseEndeme { get; set; }
}

[0] comments (122 views) |  | [0] Trackbacks

Posted by: Jon Grover | Nov 20, 08 | 11:15 am

Mon Nov 10, 2008

Roman vs Modern

I don't know if we are in for a decline to a lower historic age level but if we are in for a decline the following statements might apply:

A classical Roman with knowledge of the future might say:
The problem is not civil society although that may fail.
The problem is that political science never got developed. There is no political balance.

A modern person with knowledge of the future might say:
the problem is not the consumer economy although that may fail.
The problem is that computer language never got developed. The computers are still mute.

[0] comments (65 views) |  | [0] Trackbacks

Posted by: Jon Grover | Nov 10, 08 | 4:26 pm

Fri Nov 07, 2008

The Best Computer Languages for Artificial Creativity

I've decided to move this answer to the main blog because it didn't format very well in the comments section.

It's taken me several days to figure out how to respond. It's difficult because no language is really good for artificial creativity. I tried for many years to design and implement a language for AC and could not. I started with Forth and first tried to improve it so that it was fully internally consistent. Then I tried to build a similar language that would treat objects and tables as the same thing. When Java came out I knew that I was outclassed.

My best recommendation considering the languages that exist now, is to pick one of the modern object oriented languages: C#, Ruby, Python, or VB.NET, or possibly Java or Scheme. Necessary characteristics of a good Artificial creativity language are three:
  1. You can create chunks of code that are easy to build upon and to use in multiple programs. That means that the language should probably be object oriented. There is a problem with object orientation however. Creativity means doing unexpected and unusual things with things. In a program the things are objects. The strong typing in object oriented languages tends to prevent doing unusual things. Getting around this can be done somewhat with inheritance but that makes programs breakable to change. Patterns reduce this problem somewhat but at the expense of the programmer needing to be an advanced programmer and a patterns expert. Most creativity programmers are not, and probably can't become this kind of expert. These two kinds of expertise require different talents, and there are few people who have the right talent set for both kinds of expertise. Object orientation and strong typing is great for working with data but once you start pushing up into the realms of working with information and artificial creativity they become a bit of a liability also.
  2. There should be no obvious creativity blockers in the language, that take you away from the creative work of programming. So, C++'s problem with memory leaks and pointer bugs takes you away from the flow of creativity while you have to go try to find and fix them. Scheme's underdevelopment, Java's verbosity and Perl's reuse problems also seem to stop the flow of creativity.
  3. The language needs to be general purpose. Artificial Creativity is a very new and underdeveloped field so at least for the next few years you are going to have to be a programmer and you are going to have to build a lot of your own stuff. This leaves out special purpose languages like PHP and JavaScript.


There is no right or wrong answer. My own personal preference is for languages in which I can control the layout of the code. When the code is laid out a certain way it boosts my productivity with my own code. Other people find that a standardized layout is more helpful to them. It helps their productivity with looking at other people's code. I also like languages that are popular with employers. Getting paid is a good thing. Here in Indiana most employers prefer the Microsoft side of the street. Between Microsoft's two modern languages, VB.NET has a standardized code layout, and C# allows me to control code layout. So C# is the right language for me to use for Artificial Creativity. If you live in an area where the employers prefer open source coding and you prefer a standardized layout, Python would be the right language for you to do Artificial Creativity work. Ruby is good for when you have open source employers where you like to control layout, and VB.NET is good for when you have Microsoft based employers and you like a standardized layout.
The Right Computer Language for Artificial Creativity Work


Until a language comes along that is better suited to Artificial Creativity these are my best suggestions.

[0] comments (53 views) |  | [0] Trackbacks

Posted by: Jon Grover | Nov 07, 08 | 4:19 pm

Wed Nov 05, 2008

The Meta-Creator System and Accessing Data

The connection of graphics and reality is hard, because, how do you know what reality is behind a graphic?. People don't want information because they don't trust it. But the endeme allows a potentially trustworthy port of data to information because users can see exactly what it means.

These are four requirements for excellent UI's regarding forms and graphics strongly-and-weakly connected to data:

i.
- Form and graphic items need to be strongly connected to data.
- The presentation must be separate from the function.

ii.
- Forms and graphics need to be a representation of the data in them.
- Customers will not stand for forms done a different way that what they want.

A solution would be the development of 'meta-creator' systems. A meta-creator system could make forms and graphics as representations of data. The user would have to input their desires to the meta-creator system and it would devise the representation. In addition, the user would demand certain highly specific detailed characteristics for the format.

A meta creator system would build systems representing data using inputs for their design by interpreting user descriptions. We need a system that can understand English or another language. It also needs to know something about layout. This may be analogous to semantics and syntax in a textual system. What if you had just one screen to interact with a database with and the computer would display various things on the screen based on things the user 'said': bubble sprays, forms, tabular lists, detail items, interpretations, editing lists, self analysis, save dialog, data interpreter, meta-creator controls.

Here are some specifications a user could make:

(rare) 'I want to see how xyz are related' - bubble spray
(common) 'I want to input a new X with its related Y and Z data' - forms
(common) 'I want to see a list of x's including their Y's' - tabular list
(rare) 'I want to know what you think about X' - interpretations
(common) 'I want information about X' - detail items
(rare) 'I want to edit item Y of all the X's like Z' - editing lists
(rare) 'I want you to identify what data is missing' - self analysis
(common) 'I want to download X Y Z' - save dialog
(rare) 'I want to cut and paste all this data into you' - data interpreter
(rare) 'I want you to handle these pieces of data as a unit' - meta-creator controls
(rare) 'I want menus over here with a major category W for X Y and Z' - meta-creator controls
(rare) 'I want this system to look professional' - meta-creator controls
(rare) 'I want to keep X Y and Z data on Ws' - database generator and meta-creator controls
(rare) 'I want to add X's to the data we keep on Y's'


Here are some misc. related Ideas:
- a program that can learn about its user(S)
- a program that will open in a state its user wants (what states even matter?, what programs might benefit from them?)
- smart multi-level menus. a program to consolidate menus and organize them how the user wants, can tell if the user has a hard time finding an item and looks for categories of commonly used items
- bubble spray program

[0] comments (41 views) |  | [0] Trackbacks

Posted by: Jon Grover | Nov 05, 08 | 11:46 am

Tue Nov 04, 2008

Programming is Creative

Programming is a creative act, and if we lose sight of that, we are no longer working with what is. Computer science is not a science of nature. It is a science based on what we have created (this is someone else's idea so I need a reference here). So the work of computer science is creativity, that is, us creating things. It is only a short leap from there to computers creating things - Artificial Creativity.

[3] comments (53 views) |  | [0] Trackbacks

Posted by: Jon Grover | Nov 04, 08 | 12:01 pm

Mon Nov 03, 2008

Endemes for HL7 Messages

I'm beginning to explore the possibility of applying the Endeme principle to HL7 Messages. This is a first pass at an endeme set. The reason it is not a real endeme set is that it is simply a list of categories. In an endeme set the list of items would combine in various ways to describe new emergent properties. It is a first pass. The HL7 message format has about 2000 fields. Studying how the fields are made out of combined list items would probably be the next step.

Endeme Set	 	main A08 segment		segment abbreviations			description
----------------------	----------------		---------------------			-----------------------
A. Accident		ACC_Accident			ACC, ZAC				accident information
B. Bill			UB1_Ub82Data			UB1, (BLG)				billing data
C. Claim		UB2_Ub92Data			UB2					claim form data
D. Diagnosis		DG1_Diagnosis			DG1					diagnoses
E. Event		EVN_EventType			EVN, ZDG, (ZCV, ZAB)			transfer, cancellation, discharge
F. Financial		(not used in A08)		(FTN)					financial, transaction
G. Guarantor		GT1_Guarantor			GT1					guarantor
H. Heads up		ZPV				ZPV					warning, alert, precaution, notice, indication, heads up
I. Insurance		IN1_Insurance			IN1, IN2, IN3, ZIN, (ZCI)		insurances
J. Job info		ZPI				ZPI, (ZCE)				patient employment information
K. Kind			PD1_PatientDemographics		PD1					kind, membership, demographics
L. Label/Identity	PID_PatientIdentification	PID					patient identification data
M. Medication		(not used in A08)		(RXA,RXC,RXD,RXE,RXG,RXO,RXR,ORC)	medications, medical orders
N. Newborn		ZNB				ZNB					newborn, baby
O. Observation		OBX_ObservationResult		OBX, (OBR?,OM1,OM2,OM3,OM4,OM5,OM6)	observation data
P. Procedure		PR1_Procedures			PR1, ZPR				medical procedures
Q. Query		(not used in A08)		(QRD, QRF, URD, URS)			query, report
R. Relatives		NK1_NextOfKin			NK1					relatives, kin
S. Sensitivity		AL1_PatientAllergyInformation	AL1					sensitivity, allergy
T. Technical		(not used in A08)		(DSP,MFA,MFE,MFI,MRG,MSA,NSC,NST)	
U. Users		(not used in A08)		(PRA, STF, RQ1, RQD)			practitioner, staff, requisition
V. Visit		PV1_PatientVisit		PV1, PV2, ZCA, (NPU)			visit information

segments in parens are not use in the A08. [0] comments (37 views) |  | [0] Trackbacks

Posted by: Jon Grover | Nov 03, 08 | 11:27 am

Fri Oct 24, 2008

Too much consistency in UI Design confuses me

Here are some problems I have with many UI designs:

If everything looks the same, I can't tell them apart.
If every page looks the same, I can't tell where I am.
If every menu looks the same, It doesn't 'compute' in my head.
If every table looks the same, how can I tell at a glance which table it is which and what it means?
If every list looks the same, each just looks like a block of grey.
If every block of text uses the same font then what is the difference between them?

This is not to say that some level of consistency is bad. I have seen pages where every block of text had a different color, font, size or something. That doesn't work either, But if an application or a site has 100 pages, Why not have ten different page designs ordered by some categorization within the program? or If there are ten parameters that can be consistent, why not have five consistent in every place, and five different as best suits that place?


[1] comments (81 views) |  | [0] Trackbacks

Posted by: Jon Grover | Oct 24, 08 | 8:32 pm

Thu Oct 23, 2008

History of Inventions in My Time Travel Game

I have taken a page from the game Civilization and have identified 22 advances for each level. They have been sorted into 22 realms such as religion, art, government, economics, technology, migration etc. The waste items are things that are major and can scuttle an age. These advances will probably be part of my game although I'm sure others exist in reality.

The colors have to do with the sorts of things that predominate in one age or another. Red(pink) is chaos - darkness, distribution and communication advances. Yellow is material advances. Green is enlightenment - religions, newness, consciousness and scientific advances etc. Blue is organization advances. We are presently in an 'Enlightenment' Age. So was Gutenberg. I'm waiting for an analog to Gutenberg sometime fairly soon. I call these harmonics. Each age has a predominating harmonic. A,E,I are all Enlightenment. B, and F are organization. D and G are material. E and H are chaos. The most recent Chaos age was 1937 to 1993 which I call the Holocaust age.



[0] comments (49 views) |  | [0] Trackbacks

Posted by: Jon Grover | Oct 23, 08 | 12:34 pm

  NEXT page