Saturday, February 17, 2007

Meta levels

Recently, in a discussion wth colleagues about models, meta-models, class/instance relations etc, I wanted to use "meta" as descriptive of a direction: "This model is meta this other model"- just like this painting is above the other, this time is later than this other time, this house is to the left of this other house.

The I started wondering: what would the other direction be called?
If X is meta to Y, what is Y to X?
(answer might involve "defines", "generalizes", "exemplifies", "instantiates"....)

On a related note: What do you call a general discussion over meta-levels, when you take one step to the side and see that the relation between level x and level x+1 is the same as between level x-1 and level x?

At 90 degrees to meta, in a sense. (pata? ana? cata? )

Friday, February 9, 2007

Genealogy for everyone

I have been trying out Gramps (Linux genealogy app) for some time.
First I entered my nearest family and all the names they could remember.
Then I entered a number of names, dates etc from a family tree booklet I had.
Then I searched the net for some of these names, and found some of them in other people's family trees.
The I searched the net for GEDCOM files (+filetype:ged) that contains these names.
By this time, I had some people from the Middle Ages that could be found in Wikipedia.
Childish, but cool, to say that I am descended from Charlemagne, William the Conqueror, Alfred the Great and the Norse gods.

This started me thinking:
  • I would never have been able to do this without the net.
  • The further back you go, the more people are descended from them, the more likely they are to be famous, and the more likely you are to be able to find (genealogical) data about them
  • The more data that finds its way onto the net (databases), and the more structure the data has (Semantic net?), the more this holds.
There are already some wiki-like efforts underway.
In the future, I think most people in Europe and America will be able to search from their relatives around 1900 and get a very big family tree, and most people will be able to say that they are descended from kings or other famous people around the year 1000.

Software patterns and physicality

I remember reading that a software pattern isn't a feature, it's a bug - an unrealized potential for abstraction. This is a provocative view.

A pattern is some piece of code, a way of doing things, which a designer repeats wherever it is the right solution for a problem. The concept comes from (physical) architecture, where patterns have been found for a number of challenges up from whether to have niches in walls up to where to locate cities.

I believe that there is a distinction between patterns in the physical world and patterns in the informational world. In the informational world, we can create new copies of everything and reuse with variations. In the physical world, we can't.

If somebody finds a clever method to pour concrete - the concrete still has to be poured in every location.
If somebody finds a clever method to navigate a data structure - this method may be abstracted out and applied everywhere, if the environment allows it.

Patterns progress like this:
  • research material
  • known technique
  • generalized, reusable technique (pattern)
  • language construct
  • infrastructure
  • forgotten
If your language is strong enough, you can move beyond the pattern stage.