Sunday, August 8, 2010

I want a better Personal Information Manager!


I have a mobile phone and it could be used for keeping track of the phone numbers and addresses of my contacts, my appointments and the things I have to do. Unfortunately, it is not quite as usable as the good old calender I used 15 years ago; the companies that produce paper organizers are still in business and perhaps I should get one again!

What are the issues?

Contacts: Initially, on my first Nokia phone, only phone numbers with a short name were stored. On the iPhone i managed to have two (or more) different lists on the phone and in my different mail accounts. They are all stored in my gmail account and sync works; on my Android phone it is really fully automatic; all my contacts were available, minutes after I switched the phone on for the first time! Open issues are:
- the mobile phone interface is not suitable to select among a large number of contacts; HTC Sense uses a T9 input system which works quite well, as long as I know a word in the contact.
- there is only one type of contact: what is the first name of a company? how to register a person in a company for whom i do not know the first name? obviously several types of contacts should be offered.

Notes: My electronic notes are as disparately distributed over many systems as my paper notes on my desks. Tomboy, using couchDB, syncs nicely all notes on my computers, but not on my mobile phone! Notes should link to other parts of my life.

Calender: The reason for having an electronic PIM is mostly that others, especially my secretary, has access to my calender and can enter appointments for me. I am not fond of the Google calender interface, but it syncs with my phone and produces alarms on midnight for 'all day events'...

Tasks: The task manager GTask, which I use on the Android, has a usable interface and syncs with the tasks in my Google calender, where the interface is barely usable. Not connected to anything else.

In brief:
- synchronization is an issue, especially if I am not connected to the Internet, which is the case whenever I am outside of Austria (data roaming is a financial risk in Europe!)

- user interface

- linkages between the items and other items i have to collect: expenses, photos, mail, folders related to the tasks I work on; there are weak links between the parts, but much more exists.

- persons and time are organizing principles, but location is equally dominating my life: I am always at one place and interact with people.

In one sentences: the ontology of the information that should go into the Personal Information Manager is not properly designed; it is a "bad" ontology, because it does not fit my reality!

Tuesday, August 3, 2010

Bloat or "as simple as possible, but not simpler"


Most software tools grow over time, only a small number stays the same. These are not increase in functionality, because they have already all what is needed; they are perfect. What is the receipt to achieve that?

In my own work I see the following pattern which leads to bloat: underestimating complexity and building something too simple. The pattern, once recognized, may lead to improved designs, such that software bloat can be avoided. Here two examples:

I tried to build a tool to automate the construction of graphical user interfaces from ontology and I included facilities for conversion between the screen representation and the representation in the application program. Different applications had different requirements for this conversion and the functionality grew ...
What was wrong? the complexity of the conversion requires a full programming language and I was, step by step and functionality by functionality inventing my own. Bad move!
What can be done? have the part which converts between GUI and application written in an ordinary programming language (in my case, Haskell) and remove all functionality which can be provided in the conversion functions written in the general programming language. - Progress: the tool becomes smaller and simpler!

I found the same approach in couchDB: parts, where complexity of the application comes in, are programmed in a programming language (e.g. views - compare with the complexity of special languages for report generation of old). CouchDB just manages the code (in javascript - a nice functional programming language!).

Bloat occurs slowly if we try to build something that is too simple, and then realize that a bit of functionality here and a bit of functionality there must be added and before we see it, we have BLOAT. It is a sign of not factoring out complexity in parts where it can be handled with the ordinary programming language and can be avoided in many cases.

Wednesday, July 28, 2010

Ontologies of what?


Following the common definition of ontology by Gruber, perhaps more precisely worded by Guarino, ontologies are formalization of concepts. Everybodies experience and ample experimental results show that concepts have a radial structure and are influenced by the context. The concept of "pet" is different when the context is "running in the garden" (prototype dog or cat), "the name of my daughter's pet when she was 3 was Bella" (stuffed animal) or "Peter's pet is swimming in the pond" (goldfish).

What is the context implied when a concept is formalized in an ontology? Are we tacitly assuming that no context is affecting the concept? Aerts, Rosch and Gabora (2008) posit a "ground state" for a concept, which is the state the concept is in before any context is operating on it; it is clearly different from person to person and more a fiction which results from their expertimental setting in Aerrts and Gabora (2005) than an observable concept state.

Ontologies in information science are necessary to explain how a concept is used in an information system application. This application gives the context for the concepts. The ontology is appropriate if it formalizes the concepts as they are used in the application -- more should not be demanded.

What follows:
A concept in one information system is in a different context than in another one. Understanding the relations between the same concept used in two different applications (i.e. in two different contexts) is difficult; this is the "interoperability problem". The metthods described by Aerts, Rosch and Gabora (2008) applying a quantum mechanical framework may be useful.

An ontology is right, if it describes the concept as it is used in the application; an ontology can only be judged in the context of the application. To construct ontologies outside of an application which fixes the context is not meaningful and judging an ontology without considering the context is inappropriate; it is not defined what would be a "good ontology" and what would be a "bad ontology" without a fixed context. -- I fear we are trying to often to much to produce an Ontology, describing reality, not our concepts of reality influenced by context.

References
Gabora, L.; Rosch, E. & Aerts, D. Toward an Ecological Theory of Concepts Ecological Psychology,, 2008, 20, 84-116
Aerts, D. & Gabora, L. A theory of concepts and their combinations I: The structure of the sets of contexts and properties Kybernetes, 2005, 34, 167-191
http://www.vub.ac.be/CLEA/aerts/publications/2005SCoP01.pdf

Aerts, D. & Gabora, L. A Theory of Concepts and Their Combinations II: A Hilbert Space Representation Kybernetes, 2005, 34, 0402205
http://www.vub.ac.be/CLEA/aerts/publications/2005SCoP02.pdf

Tuesday, July 27, 2010

Ontology and Concepts


Ontologies describe concepts, concepts humans form in their heads of real things - physical or abstract - which exist outside of their heads. Concepts are more or less detailed, as the circumstances require; the real (outside) things are always fully determined: there is no dog without a definite fur color or gender - but a concept of a dog a friend talks about may remain of unspecific color or gender, as long this is not relevant for the story he is telling.
We construct concepts in reaction to outside stimuli - something we see or a word we hear. Concepts are in a state. If a conversation continues, the concept becomes more specific; for example, the hair color of the dog may become mentioned.
Rosch has pointed out, that concepts are not fixed sets of things, but have a radial (graded) structure: some exemplars are better examples than others. Robins are "better birds" than penguins or ostriches. The structure of a radial category may change under the influence of a context: if the discussion focuses on Antarctica, penguins become "better" examples of birds.
How to model concepts and the effects of contexts on them? Consider additional information as a piece of context, which changes the state of the concept. Aerts and Gabora in "A theory of concepts and their combination" (2005) suggest that quantum mechanics provides a framework to model the state of concepts and the action of context on the state of the concept.
I have constructed concrete models of the concept "pet", following the experimental data they report in the paper. Starting with a little determined state of the concept "pet", where the pet can be a dog, a cat, a goldfish, additional context, e.e. a statement "the pet is running in the garden", makes the state of the concept more determined: goldfish is excluded, dog or cat becomes more likely. The formal model does identify absurd combinations of contexts, e.g. "the pet runs in the garden" and "the pet is a fish" - humans in conversation will in this moment ask for clarification...

What have I learned? The confusion between concepts and things in reality is difficult to avoid - we have a natural tendency to talk about the things, but meaning the concepts. Accepting that concepts have states makes the ontology enterprise much more difficult: when we give the ontology of a concept, which state are we describing?

Monday, August 31, 2009

Progress in Social Sciences?

I was interested in politics and economy when I was 20; I read the “Limits to Growth” and economic texts on development by Binswanger and Myrdal. Recently I asked myself what is changed in our understanding of politics and economy since then. The question is not what is different in politics and eocnomy today compared to the 1970 and 80s, but to identify the methodological changes, the changes in our thinking between then and now. How are the tools for analysis advanced? Is there an advance in the way we understand society or do we only have more data and different situations?
The question is about the models underlying our analysis. Economy is, primarily, based on dynamic models and typically interested in equilibrium states; markets tend to an equilibrium between supply and demand - at least in theory as presented by Samuelson. These models typically had 2 actors (or two groups of actors); the suppliers and the consumers, the industrialized and the less industrialized world etc.
In the last years, I see increasingly models with 4 (and sometimes more) actors. The Club of Rome and Simcity made the idea of simulation models by Forrester popular. Models with 4 actors – i. e. multi-agent models – were used to analyze international monetary issues; I have used it to understand why the dollarization in the 1990s in South America did not work (despite the standard static theory and the IMF predicting success) and found a wonderful 3 agent model for corruption.
These multi-agent models seem to me very helpful to explain the situations I could not understand in 1990– e.g. the politics and economy of Africa. The simple “Europe exploited its colonies” model is not correct, as is demonstrated since decolonization. A model with four actors: the elite in the industrialized world, the elite in the third world country and the population in the industrialized and third world country shows the common interest in the economic elites and explains the investments and debts, together with the political pressures observed today..... Similar models can be used to analyze the situation in Afghanistan, Pakistan, or the Iraq. John Perkins wrote “The economic hit man”; very depressing reading about U.S.A. politics in the 1980s, confirming a the model.


Friday, August 21, 2009

Fujitsu Lifebook P1630 Network

I will collect on this blog page hints for others with a P1630:

The network connection on the P1630 was sort of flaky. It improved after installing linux-backports-modules-jaunty.

sudo apt-get install linux-backports-modules-jaunty
restart!

Now I have a decent signal level and it connects quickly.

Thursday, August 20, 2009

Fujitsu Lifebook P1630 Touchscreen














I have a new ultraportable (1 kg) Lifebook P1630 with a touchscreen. I hope to use it for presentations in the same manner I use currently the Fujitsu Stylistic 5010 tablet.
The P1630 comes with Vista installed - but this is unusable slow on a Core 2 Duo processor and I do not tolerate the waiting updates of MS software forces on me. I want to run Linux, meaning Ubuntu 9.04 Jaunty!
Installation was a breeze (much faster than just the update with MS) and everything worked out of the box, except for the touchscreen.

With help from the web, I got it working. This is to report what I did, to help others with P1630 (and probably P1620). The P1630 (and 1620) connect the touchscreen via usb, not serial - thus the advice for P1510 etc. does not work (e.g. this script). The method proposed by Sam Engstrom propagated here does also not work, because it connects the touchscreen using a setserial and /dev/ttyS0. It seems that this could be solved by connecting the touchscreen to an eventN (with a hal/policy?) and then use wacdump /dev/input/eventN (N a number 1..9). I did not explore this further.

I got the touchscreen of the P1630 working with these tools. This worked immediately, with the BIOS set to "tablet" (not "touch screen") except for some confusion with the calibration. The calibration routine acted strangely on my system: after calibration any touch on the screen would open the trash folder (anybody has an explanation? I had observed this before I installed any touchscreen software already). The calibration routine did leave the max_x and max_y values set to the initial -1 values. I fixed in the code by adding two additional tests to read:

if (calibrate) {
calib_minx = ..
calib_miny = ..
calib_maxx = (calib_maxx==-1)?x:((x>calib_maxx)?x:calib_maxx);
calib_maxy = (calib_maxy==-1)?y:((y>calib_maxy)?y:calib_maxy);
}

make! sudo make install! and it works.

The sampling of the stylus is unfortunately not very rapid and handwriting looks wiggly. Does anybody have a hint how this could be improved?

Addition: I learned that there are new (corrected) versions available, the change has the same effect, but I have not tried it yet.