06 February 2010

Requirements for a Knowledge Management Tool

We are in the information age, aren't we ? Well, we collect information, put it in big data bases, or distribute it accross the web. But in fact, we collect no information, but plain data, numbers, texts, images videos etc. All our computer based technology is designed for measurement and collection, this is their strong part. But I want to access information, and - in the best case - only that one which belongs to my problem.

So, the question is, how can we transform collected data to useful information ? Many philosophers had discussed and investigated, what knowledge, insight and information is. I love this point of view:

The humans are able to act in a free manner, but actions are conditioned by situations. In the course of the lifetime, a human experiences many situations (described by the data provided from the senses), and the actions performed in that situations induce new situations. Therefore, one thing is clear: data must be associated with situations, otherwise, they are meaningless, without any value for the existence of humans.

Another thing emerges from the necessarity of decisions: we all know, life faces us with problems, which force us to decide to go the one way or the other, to choose between options. The decision is the predecessor of the action, and the problem is the predecessor of the decision. Because we remember the association between situation, action (as consequence of a decision as a consequence of a problem) and the result, we can decide better in future, in more or less similar situations.

But background knowledge or experience for itself is not sufficient to decide well. A goal is needed, or let's say more generally, an intention. The experience (the situation-action-result tuples) tells us which action in the given situation may have the biggest chance to lead to success in respect to what we want (the goal, the intention).

Summary: facts (data) - situation (context) - problems(questions) - goals(intention) are the things which distinguish data from information: in combination, they help to determine the best action to take. For short, this is knowledge, in some sense it is the equation of facts - situation - problems - goals - actions solved for actions.

And from here on, I can tell what my requirements to a Knowledge Management Tools are (some things I can not explain more detail here):

  • allow to collect any kind of facts, any type of data
  • allow to collect context descriptions
  • allow to collect problems
  • allow to collect intentions
  • connect all these elements, by n:m relations
  • allow to weight (again) these connections at any time
  • allow to add or discard any connections at any time

Unfortunately, we have no advanced Artificial Intelligence today which would allow to code and access any kind of gray and color of the color set of life. We have to categorize and quantize what we experience every day. And we have technological limits. In respect to this, I would add this requirements:

  • visualise the connections
  • allow to classify context, problems and intentions
  • find connections automatically by statistical analysis of words or other means
  • allow to create context, problems and intentions recursively out of other contexts, problems, intentions, data.

The last requirement is inspired by the observation, that life is a steady flow:

  • allow to create contexts out of sequences of conditions or event descriptions.

Can't wait to play with a system which provides this features. So I hope, someone will implement this *few* requirements soon :-)

31 January 2010

Ideas for Processing I

Today, computer graphics is done by making geometry. Shapes like circles and rectangles, lines are placed in a canvas tagged with a (rectangular) coordinates. Colors and length are prescribed or calculated by providing numbers. In the 3D domain, the things work similar. Raytracing and other 3D to 2D renderings are based on geometric optics. Is there any problem ? Well, I will explain what I think about.

Since years, I was fascinated when Mr. Data in the Star Trek movies and serials said to the computer: "Computer, show me", and the computer draws the desired information in the best way, without being told to stretch, zoom or even use coordinates. From such scenes, I always got the vision of a computer kernel, which calculates, deduces, collects, and a graphical subunit, which does all the graphics. And the important thing for this is, both, the computer kernal and the graphics subunit, only *talk*. No API calls. In order to illustrate this, here is some example dialog:

"Hello Graphic Subunit, please display planet Venus, a starship type Klingon fighter in standard orbit"

"Hello Graphic Subunit, please display this 2D point set in a chart and this text"

In fact, the collaboration of the computer kernel and the graphics subunit should be the same as a customer which goes to an artist and says "Artist, paint a picture of me, embracing my power and glorious". Although many questions arise from this, I only want to point out the fact, that just the artist (the graphical subunit) has to bother about information which affects *how* the picture is drawn. He is the expert for graphics. The customer (the computer kernel), only should tell *what* to draw. In todays technical world, mostly the webserver or an application core has to deal with geometry and rendering. Of course, today graphics is described in abstract coordinates, presentation and content is divided by HTML and CSS. But that doesn't change the fact, that too many aspects of graphics and geometry are part of the application core. The latter has to call API by providing shapes, coordinates, colours.

Our technical possibilities are not powerful enough to come just closer to what I described above. At this point, I have to state a fundamental criticism: as far as our graphics technology is only restricted to geometry, it never will be powerful enough. Here is no place to provide reasons for this hypothesis, but it is my strong belief. To prevent misunderstandings, is important to note that, if I say geometry, I mean the mathematics as it is known and practiced today. I think it would extend our possibilities if we investigate more in things like image based rendering and to flip the human vision processing into the opposite direction. Vision then becomes rendering.

Well, I know, these are big mind steps and not a smooth chain of arguments, it is more a set of ideas. But anyway, this popped up some ideas to me for doing some experiments with Processing. The post is long already, so in a later post I will sketch some details.

17 January 2010

Time to Change

In the last year, many things happened in my life as a computer professional. I am writing no code anymore, I am now working as a safety, quality and requirements engineer. And I am glad about it. Let me explain, why.

In the last years, more and more the doubt came up to me if programming is really that what I am strong in and if it is what I enjoy. Even working in different companies, where completely different software were developed, in Smalltalk, Fortran, C, C++ and and means, I always had the feeling that I doing the same frequently. The problems of software developing repeat, the kind of solutions were well-known. I met many people, all of their own style, I had bosses which could never be compared, which was and is good. But the game - software development - still was the same from my point of view. Different in colors, in tones, in details, but in fact the same. No big progress, as also some well-kown mastes of software told. And I had and have so much more interests.



I know, this picture is not objective, my losing interest and my perception of software buisness have impact on each other and are not decoupled. But which is really the cause of what doesn't matter in consequence. So I decided to take a way in my carrier which lead me away from software development. That's why I am happy to work as I told above.

But what about the hobby ? On the private side, I looked at many programming langauges, read about software processes, design patterns and new approaches in the software domain. But the doubts described above take place here again. And at the same time, old loves came back to me: philosophy, electromagnetics, teaching electronically, the question how a set of neurons can think and get insight.

I've just finished the great book "Coders at Work" of Peter Seibel, which contains interviews with some big persons of the software buisness. And the part with L Peter Deutsch, which leaves the software buisness at some late point in his life, convinced me to make this decision: even as a hobby, software development will no more the objective of my hobby activities. This means, to be precise, to look at patterns, architectures, languages for its own.

Of course, I will program to let my new ideas come to life, maybe games, graphics, experiments. But the ideas are now in front, not the question what is the best language, the best approach. I make no attempt anymore to make software development better (one exception: requirements and safety engineering). That let be the task of computer scientists, which I am not. Just be creative, as long it is possible.

For this goal, Scala and Processing had attracted my interest, which both working with the Java environment. The Java environment has so much possibilities. Erlang is nice for experiments in the artificial neural network field.

But don't misunderstand: I will not close my eyes. I will look how technology and software science is going on, because to track and judge the social impact of new things is important. But my role will be from now that of an observer, not an actor of the computer science.

30 August 2009

Holiday Project 1

As always, I planed some hobby activities for my holiday, because during workaday life there is always not enough time.
Project 1 was a drawing exercise in order to get more practice in line drawing and inking. Also, I experiment with colors and usage of Layout Markers. And here is the result (please regard it with a favor - I'm a learner :-)

I call this picture Experiment #1 : "Crossing". As can be seen, I am still fascinated from the idea of steam punk. It is an interesting task to think about which parts a steam man would comprise, and which are the characteristic building blocks of such creatures. I am very sad to have not more time to investigate this question.

One intention of this excerise was to work out to draw lines in different weights, and to get comfortable with the foundations of comic inking. Although I've done some progress, I have still huge respect to the professionals of the Comic Szene, it is really difficult to draw lines accurately ! As an result of this exercise, I am also starting to get used to Layout Markers.

It is always interesting to experience the relation of drawing to courage and resolutness. A line must be drawn without doubt or fear about error, which is also true for shadows or dark areas, or light spots. Here, only practice and strong observation will help ;-)

The next picture is planed to be carried out in oil pastels, but I can not say if my holidy is long enough. Project 2 is to create a game prototype in Processing, and Project 3 is about Erlang programming. So we'll see......

11 July 2009

Observations from a mobile world

Some weeks before, I bought a 24 inch Full HD monitor with HDMI interface. The original plan was to make the first step to a Full HD television and to have a display device for the Sony PS3. The world of BlueRay calls me loudly ......
Todays monitors can be used nearly for all, thanks to the combination of the interfaces, including sound speakers. And of course, it can be used with a Mac, in my case a white MacBook. And whow, what a feeling ! Even DVDs, rich content websites, all looks so great !



Today it was the first moment, I used the MacBook again as a notebook, with it's own display. What a shock ! All is so small, no oversight, colors and brightness, no usability, no fun. But, hey, every day, my iPhone has to show me WebSites, provide me translations and the last news from Twitter or other news portals. And this display is much smaller. And it works for me so far. Seems like a contradiction, doesn't it ?

Well, in relation to the iPhone, another effect takes place: it works the better, the more the Apps or WebSites (more exactly: their iPhone version) are adjusted for small screens. And because there are many iPhones out now and in every-day use, you can really find WebSites in fine iPhone version (and this is a completely different thing as the crappy WAP things in the past....) which show, how it could look like to design an information or an operation interface for the capabilities of the destination device. Some WebSites could be used much better in the iPhone version because they show exactly what you want, and not more (advertisements....here blinks it, there are flash something, over there a color explosion, bah) !

Now, the current or near-future internet techniques provide so much opportunities for new ways of information and operation to the users. Have a look at HTML5, O3D, AJAX, the new JavaScript engines in modern browsers: the internet world is colored and rich as never before. And why should all the Web Designers not use this things and provide us with optical beauty, operational high usable experiences ? Display space is not a problem, look at the prices of >22 inch devices !

But my poor Mac is born in another world, as the idea itself to have a movable computer, too: its screen (and resolution) was great some years ago, today, it is catched between the iPhone and the big electronic color picture devices on the wall or on the desktop. The great user interface of an Mac OS can adapt to a big screen quickly, size can be turned to usability at once. The other direction is full of restrictions. Mac OS is not an every size auto-adapting paradigma system, as all software systems I know so far.

In fact, my observation is this, based on one year usage of the iPhone, 6 years of (Apple Mac) notebooks and now a 24 inch 16:9 display: size doesn't matter, if the informational and operational design reflect and support the natural way of use of the device.
(Important remark: the WebBrowser and the native Operating Systems converge quickly, therefore the following is stated only in respect to the Web, but is valid for OSes, too).
Because the new Web technologies provide a big toolset to implement nearly all ideas, and because the Web Browser is a potential flexible thing (it looks like a simple text file tells him to look like), I expect from the UI designers to reflect and to use the nature of each possible category of display device. You *can* use a iPhone, a Netbook, a Notebook and a wide Cinemascreen with fun and operational value, *if* you adapt not only colors, text font etc but also the paradigma of visualization of information and interactiviy !

Please designers, meet the challange, use all your creativity to give as an interface for every device, and be aware, there will be more in future: tablets with touch screens, mini projectors and gesture recognition............. That would be great, and more, it would take us to a real flexible and real mobile information society :-)

25 April 2009

Steam Gestalt

At this time, I am productive in drawing. This is cool, because in the life of Software Engineer or even Software Architect, the creative part of my person has no possibility, or at least not enough, to come out. If my information is true told from many people, then I should compliment Google on let their Software People work for some fix part of the whole time on their own ideas. I am shure that gives much value back to the company, even if this benefit maybe not measurable and described by any numbers.

But back to my work. One of my friends told me about a game embedded in a fictive world where is no electricity, but steam instead. I am very excited about this idea, so that I had to draw a gestalt at once (originally I want to ink it, but unfortunatly there is no time in the moment).

So It seems, that I got an big interest on designing gestalts, their equiment, and gesture. Of course I am far from perfect, I need much more experience. But I have a sketch block now, and where ever I got some idea, I will take the pen.

22 April 2009

UML in the Functional Programming world

UML is a well known standard notation in the context of objectoriented design and programming. It allows to define classes and their relationsships. It makes it possible to display Use Cases and the Activities performed for them. They way how objects interact together can be visualized in more than one way.

The problem is: it's all about objects. But we are in the age of a new rising star: the functional programming. Here we deal only with functions. There is an input, there is an output, no state. Just a rule to map the input to the output. No behavior. Just a chain of input - output mappings. It seems that UML doesn't fit very well. Some languages interpret functions as objects, but in the end that doesn't help. Functions are a mathematical construct, they are best defined in the way we learned in our mathematics education.

Let's go a step back and ask: what is the goal if we use UML ? It is used during the design phase, so one goal might be to communicate architectures. An other goal might be to write down design elements of the software to build, on a level which allows to use abstractions and to suppress unnecessary details. Of course, abstractions and communication is not only about data structurs, but also about what is done with this data, and by which entities. And in the end this is the nature of using UML: finding out and document what is needed, what happens, and what is get.

Ups. Thats reminds us of functions. There must be something wrong. So, again, one step back: how should we document software ? Actually, the main purpose of any software (which is not used for controlling some device, because their nature is just to be an extension of mechnics) is to provide information. Information aggregated from other informations, as well as calculated, filtered, selected and transformed information. The nature of information is to be data, which have an intention: a question to answer, an goal to achive. If we describe the data and their intention, i.e. the information, and their origins and lifecycle, we have in fact described what a system is. It doesn't matter if the technical implementation is done by functions, or by interacting objects. Thats a matter of the detailed technical description, which is important only for a small set of people (and it has to be decided for every project if the code is the documentation or any detailed UML diagrams or equations are needed). Or in other words: it is in matter of level of detail.

Let us note two additional observations:
1) The data comming from or going into the real world can be modeled better by objects than functions.
2) The context as part of the system environment is the source of intention (what will I achieve, why I do something).

Bring this all together, we can see that UML helps to document the data and their intention and their lifecycle via UseCases (maybe annotated with activity diagrams, for context and intention), Collaboration diagrams (for lifecycles), Class diagrams (for the pure data). In this sense, UML should help document software independently of the programming paradigma used with a sufficient level of detail for the most cases. And if more detail is needed, UML is appropriate for the OOP and mathematical equations for FP (and PI calculus for heavy concurrency systems).