Friday, August 31, 2007

Project Dune developments

I haven't been able to post much recently due to a release being developed at work, some emails from the project team of Dune and the stewardship of a new project infrastructure for Project Dune.

You can check out the forums (phpBB) already. The wiki (mediawiki) is in development and I suspect it will be released very soon.

The project has attracted a couple of new members and is now getting ready to support itself over the following couple of months. We're adding better targets, better planning, better documentation, better milestones, better interaction with the community.

Our hosting is done by SiteGround. It's the first time I do business with them, but so far things have been fantastic. Always up and their support team responded within minutes to support requests. Absolutely awesome service, awesome packages (5000GB/month bandwidth and 500GB disk space per account) and I can certainly recommend it to others. If you do, make sure that you mention us as a reference, you will help the project out with a couple of free months of hosting.

So pretty soon the wiki comes out. We'll get all the way back to development and a regular cycle of project documentation when all is done. You should also see a couple of new (active) members on the project.

Wednesday, August 22, 2007

The mind as an activity network

The book I am reading about cognitive science is very interesting. It talks about the mind as a network that is constantly activated by external events. Mostly within the context of a book you read or a conversation you are part of.

Assuming you haven't drunk any alcohol that might impede this network activation... :) When reading a story, certain events become connected and you start to visualize them. They also become intertwined with your past experiences, so the exercise of recalling the actual events that happened at for example a restaurant may not actually be 100% true ( this is a problem for justice, thinking about it ).

If you read the following story:

"The men are sitting at the table in the diner. The waitress brings the coffee. The coffee spills on the table top. The men exchange documents. The contract is signed".

It sounds like a really boring story, but your past experiences fill in a lot of details here:
  • The men are probably businessmen, because there is a contract and documents (but the story doesn't tell)
  • The waiter looks like one of those waitress stereo-types you have seen in the movies.
  • The spill on the table is not the whole pot, but it's only the size of a coaster and since you didn't read any complaint, it might be a drop.
  • The men are not sitting next to each other, but confront each other.
  • There is an eery sense of mystery perhaps.
Cognitive science has different explanations for how the mind works. One of those is a network with activations that activate nodes and which, in parallel form, activates other nodes that are related.

Now consider memory... Memory is according to some theorists a regular activation of nodes that cause you to feel or think something similar to what you have experienced before.

So... when reality is difficult to recall perfectly... it's because memory isn't a perfect retrieval machine. It's an imperfect machine that retrieves the gist of things and something else that may or may not have occurred, but you may never be sure.

When you gather more experiences in your network, you'll probably form your opinions and personality as well. This means that you yourself becomes responsible for some things that you find important, thus those nodes become more visited and as they become more visited, they seem even stronger and more important than anything else. The objectivity of the mind in this sense is a bit of an utopia for sure. Yes, we are able to hide our subjectivity by writing and talking the right words, but it won't ever happen! :)

Recalling the events from above, you can think of various experiments like:
  • Show a couple of sentences and then ask people if they're sure they didn't read the sentence or actually did ( helps to find out how much they imagined and how much was real of the story ).
  • Re-tell the story factually, how it was read exactly.
  • After the story, let people choose words that are relevant and words that are not. This helps to find out more about the ability to associate between events and to find out the distance of concepts within a network.
Anyway, I'm just starting to read here... It's very interesting indeed!

Tuesday, August 14, 2007

Is a formal IT development process like ISO and CMM a cognitive substitute?

Not hindered by any lack of knowledge once again, I'm asking myself some questions on what the real factors for IT project success are. These factors are often broken down as planning, skills, communication and formalization of a development process (like ISO, CMM, etc.).

What I miss from the above are other properties that people should have, beyond formalization and communication and skills. It should be easy to defend that project success depends for a very high percentage on communication and its quality.

But communication is an expression of our ideas, and then my argument would be that the correct ideas should exist before we are able to communicate efficiently with others to align the team and project with those ideas that would guarantee the success of a project. So... what is more important? The efficient communication itself between the team? Or the formation of the (correct) ideas itself in the first place?

My thoughts are basically revolving around the idea that... if I were to re-design or re-think software quality as a concept, how would I explore the limitations, shape this area of thought and come to new conclusions and realizations of what, from a cognitive perspective, really goes on in an individual's mind during the development process and how this can be very strongly influenced by the communication within the team. I reckon that from this perspective on quality, personality is more important than technical skill.

Some initial thoughts that could start this theory are:
  • Personal traits and attitude that seek out error are far more important than any compliance with rules or regulations.
  • Quality cannot be undoubtedly and efficiently measured without establishing clear criteria with the user or client.
  • Thought pattern development, problem analysis, conflict resolution, behaviour etc. are not generally part of quality theories (unless you accept the very vague terms in ISO/CMM documents that might just mean about anything).
  • The nature and objective of the project should be very clear from the start.
  • Software engineers should understand general errors of thought and learn to voice concerns more readily and harshly.
  • Disposition towards stakeholders may put pressure on engineers to change their response.
A natural reaction when encountering a problem, accident or incompliance is to establish rules and guidelines that people need to adhere to in an attempt to prevent similar occurrences. This might also stimulate a certain no-thought attitude where rules and guidelines are simply followed without understanding the actual matter and nature of the job. It can also falsely be used as a means to indicate progress. The latter can result in very serious problems developing until it's too late to recognize them. It might also result in a couple of people that know and a couple of people that follow blind.

So, my focus and view on quality in this post is to ramify about identifying cognitive processes and nature of the human mind that are most contributing to developing quality software. So, rather than thinking of process as a set of rules and actions, I regard process as a set of traits, attitudes and motivations that someone needs to develop in order to develop high quality software.

Traits, attitudes and motivations can also be called company culture. If we understand how we can influence this culture from within, we should have the capability to improve the quality that a certain person is able (and willing) to develop.

But there is another problem here. Without a framework for measuring the level of quality produced, the entity has no means of knowing whether their actions are effective. This probably requires frequent peer reviews and other means for measuring compliance in an attempt to adjust traits, attitudes and motivations, all to become more efficient all the time and eventually contribute more significantly to this process of self-enlightenment.

The problem here is the same as the one indicated at the start. There are (not yet) true absolute criteria of measuring software quality. Any attempt to establish such a criteria has so far resulted in a total mess, since the entities that are impacted by these criteria attempt to maximize on the goals given to them individually. This is because these criteria are often aligned with promotion factors or budget allocations.

There have been good successes, because the factors that indicate quality can differ from one project to another. Now... given this is a truth. How can we ever consider to develop a framework or "standard" of quality that encompasses each and every different situation or project? Standard in the sense of rules, regulations and processes as actions.

Monday, August 06, 2007

Knowledge has arrived!

I ordered books from Amazon about Cognitive Science, distributed intelligent multi-agent systems, we got "Corporation be Good!", the market for virtue, "The language instinct" and "How the Mind Works"...

The purpose is not just to consume the knowledge within the books. I've interestingly experienced that through cognitive science explorations around, I've started to think more focused on very philosophical issues like the meaning of meaning. When making life decisions and so on, it's a good idea to know why and what you are doing things for.

So... if I don't post here for a while... that's the reason!

Saturday, August 04, 2007

And we thought we are clever... :(

Some recent discussions and readings are about cognitive science and behaviour. Behaviour sciences and anthropology are very interesting study areas where some people like to draw similarities between behaviours of animals and humans.

When we're young, we learn that humans are the superior intelligent species, given that we are able to apply rationality and reason to cases. The very idea of intelligence is a bit of a loose concept in my opinion. I find it a bit difficult to truly define what intelligence means, even not in words.

To give examples about the daftness of human beings, just look at war. When you really think about it, war is a very foolish concept, you could make analogies with male leaders of animal groups like moose or elephants that are struggling to come out as a leader of a group. A very simple and basic animal activity. I liked the book Humanity by Jonathan Glover. It shows how far we as humans still need to go to really exceed ourselves and to really become the intelligent species on this planet.

Actually, somewhere in this book I read about an occurrence in the first world war, where soldiers of different sides got together for a Christmas mass and the other day buried their dead and played soccer in the battlefield. The film is called "Joyeux Noel" and really shows you how still close to basic animalistic behaviour (and instinct?) we get. As soon as people found out that the people on the other side were equal, they discovered it didn't make any sense whatsoever to shoot one another. This created quite a difficult situation for the officers, because it means a total impasse of the war situation! How else to resolve a conflict than through violence?

Recent technological improvements in warfare were mostly aimed at increasing the distance between the killer and the victim. The objective to better guarantee the killer's life. From a psychological perspective, killing from a distance is much easier and comfortable. You don't have to drive a knife in the other guy's belly, the guy doesn't scream in your ear, so it's easier to be done with it. The objective being....... ..... ? It's all about deprivation of the resources on the other side, whether these are human resources or material resources. There are warbots on the market now that can be armed with guns and have the ability to fire. Will we see largely mechanized armies in the future, where robots do the fighting for us? If this is the case, then it really gives us new information about ourselves. How boy-ish we actually are in the resolution of conflicts (or starting them). Yes, humans fight on both sides, although their political and cultural development may significantly differ. The same existential rules apply however.

Jonathan Glover talks about moral resources. Think of them as your capability to apply rationality to a given discussion or event. Tribalism (the sense of belonging to a group) can overwhelm these resources, which can thus lead to very severe levels of violence that in other occasions would be deemed totally inappropriate (read: when applying common sense in regular situations). Some psychological experiments put very good friends into different groups to analyze their behaviour. In no time, they turned enemies to one another if their motives couldn't be aligned any longer (motives that are in opposition with the group to which they belong).

Belief is also a factor. Belief. It's a very dangerous thing that can have enormous consequences, especially when certain people are not willing to consider alternatives to whatever they believe. Belief is highly influenced by propaganda and as such, propaganda is a strong tool to (knowingly) influence your disposition towards other people. The trick in this case is to de-rail the enemy or the other side and reduce their status or value. Dehumanize them. Once dehumanized and reduced to second class, the killing becomes a lot easier.

So, if we see how easy it is for our minds to fall into a certain trap of extreme simplistic and animalistic behaviour... how much of our reasoning is really governed by reason and intelligence? I reckon that a lot of arguments in discussion are raised in defense of the continuation of our instincts. Even though they sound intelligence, they do not necessarily take (sufficiently) into account what all the important factors really are.

Our beliefs and emotional disposition towards a subject and morality changes due to worldly events. One could argue that countries that had more problems (war) to deal with historically are also the countries that are now in the first world. Maybe this is also caused by behaviour in general. In Brazil for example, people absolutely hate conflict and do everything in their power not to have to tell someone what they think or that changes in jobs for example need to take place. Compared to Holland and the UK, anybody that steps out of line of generally accepted practice will very quickly be pointed out, or appropriate steps will be taken to conform. Maybe this kind of behaviour leads to more wars (to force other countries to behave similarly or "in line with common sense"), whereas other countires seek to avoid conflict and "live with it".

All in all, the whole point of this post is to re-consider the fact of rationality and intelligence. We cannot assume that we are 100% rational thinkers by reason, morale and so on. There are definitely some animalistic factors involved that influence our beliefs (beliefs influencing our decisionmaking process). After all, how strongly you feel about something being true is how strongly you react to a certain event. I'm not sure whether us humans are able to deal with this in full at some point in time. We'll probably need to emotionally detach ourselves and think like Data, of Star Trek. :)

Maybe it's all part of being human.... :)

Thursday, August 02, 2007

The importance of Cognitive Science

I bought a couple of books on Cognitive Science from Amazon. It's an increasing field of science and it is very interestingly right in the middle of a couple of fields of research: Psychology, Linguistics, Sociology, Neuroscience, Artificial Intelligence, Anthropology and a couple more.

The importance and application of cogsci is here now and in its fullest, to develop new applications for computers that go beyond the general click-and-do and replication of human action. Cogsci is an adventure into the (partial) replication of human will and need with the objective to filter information, entities or people on our behalf.

Think about social websites that are popping up everywhere. Why do I have to go online? Do I have the time and do I want to browse through paaaaages of irrelevant nonsense just to find something I find remotely interesting? And even if I resolve one particular need at that time, what about all the other stuff that comes next?

So, why consider social networking as the action of going online in the first place? Shouldn't we think of social networking as an ambient network that is all around us, all the time? Going online is a bit boring and limiting, but the alternative of being constantly notified of new events is pretty boring too.

The resolution is that a computer therefore must find out information that is meaningful to us at the time. For this, it needs to find out interests (beyond keyword-matching), find out how we feel, find out where we want to go, find out what we (would like) to buy, find out what is going around us and with us basically. More sensors in our environment are likely to produce that kind of information. Some smarter ways of interaction remotely (through phones) are also going to help. Some smarter ways of data mining and finding relevant resolutions are key to the resolution of this problem.

The problem is always that a computer has very limited sensors of its environment and cannot infer or create a meaningful representation (of meaning) in the first place. It doesn't have emotional sensors to find out our mood (unless we instruct some nonsense ambient ball for example to choose it). This makes the computer quite a limited and hopeless item in our battle for filtering information, yet!