Defining good Contacts application

What defines good Contacts application? Some will say that it depends on device which runs it, but I think that it is not true.

I am using Nokia E66 phone. It is running Symbian S60 3rd Edition FP1 (what ever it means). As a phone it has phone book called “Contacts”. Simple application which allows to have unlimited amount of entries with quite big set of possible fields. But phone also has GPS unit and is able to connect to Internet via WiFi, Bluetooth and GSM. Why I mention it? Because default address book ignore those elements…

So what should good Contacts application do? Except standard fields like phone numbers, SIP “numbers”, email addresses, web addresses, home/work addresses, birthdays, anniversaries, pictures, notes… I think that things like GPS coordinates for each address would be nice — add “Drive/Walk to” functionality and you get phone which can really be named “Navigator” (IIRC there was PalmOS powered PDA with that function).

Next thing which would be nice (especially with flat rate for GPRS) would be integration of IM communicator. Why I have to launch separate application to check who from my friends is available on Jabber, Skype, ICQ, GaduGadu, AIM, MSN etc. Why not have device auto login into those networks to check who from entries in address book is available to chat/talk with. And then let me choose do I want to make GSM call or Skype, SIP or other VoIP call. This will also remove situation which is present in most multi-protocol communicators: few entries for one person just because it use 7 accounts on 5 protocols. And let integrate all chats in one application with SMS/MMS stuff — this is done on Palm Pre according to their promotion videos.

And all those things should sync with external servers of course. So if I have Facebook account then let it fetch my connections from there and merge into address book — this is done on Palm Pre already. But let it be also second way (if user choose to) — so phone will check who from my contacts have a Facebook account and send join request.

Next thing: groups… Symbian has groups support and this is working, user can even define conferences numbers for groups and few other things. Next step should be linking contacts — you know: wife, kids, secretary, co-worker who do your job when you are on vacations… PalmOS Agendus had something like that, Symbian has only imitation (it is possible to enter person name but thats all).

Will there be such application? Maybe one day…

Hacking UI for small resolutions

One of devices which I have on desk is BUG on which we are using Connection Manager (connman) to manage Ethernet/WiFi connections. It works nice but there are problems with connman-gnome (small application which shows information from connman).

The problem is that we have QVGA resolution screen and UI for connman-gnome expects at least VGA. The result is not nice:

Original look

The main part of screen is occupied by list of network interfaces and nothing more can be seen.

I lack GTK+ skills to rewrite application to have more sane UI but decided to try anyway. Dropped most of spacings, icons were removed (there is ‘Connected/Not Connected’ text for each interface), changed width of widgets and application is more usable now:

New look

Some spacing should be added in few places but other then that it looks better then it was before.

2.6.30 on AT91 board from Atmel

Recently I got my AT91SAM9263-EK board back (it was not booting due to problem with backup battery) and decided to upgrade it to 2.6.30 Linux kernel.

But I got problem which was UBI subsystem not able to initialize. This looked strange but after checking what is going on I found reason. Before I was using 2.6.28-at91-exp kernel build with OpenEmbedded and at91-exp patch added “Bootstrap” flash partition so I had three of them in NAND and just two under 2.6.30 release. Changing “bootargs” in U-Boot solved problem.

I also enabled several things in kernel:

  • I²c with eeprom support
  • suspend
  • backlight
  • keyboard (which is just two keys: “left button” and “right button”)
  • leds (all 3 of them)

To get sound working I updated linux-2.6.28-exp.patch to newer version and also removed most of code from it (which supported newer boards). I did not yet tested too much how resulting kernel works but at least it boots properly and supports most of components.

Other AT91 boards should work fine with 2.6.30 but I lack access to hardware so no plans for update currently.

Embedded package managers sucks

Years ago someone wrote IPKG in pure shell. It can be still found in some distributions. Then it was rewritten into C and this version we used in OpenEmbedded derived systems. It had some bugs, we patched some of them, from time to time there was even upstream development done for it.

Then Openmoko arrived and forked IPKG — new project got OPKG name. It was written by OpenedHand and Openmoko developers. Their main goals were:

  • callbacks for GUI package managers
  • GPG signed repositories
  • fixing bugs

Many things got changed, OE patches got merged, new bugs was added. Those who use CLI version of opkg (so far the only usable client) lost some functionalities — for example there is no progress bar when packages are fetched.

For last few months OPKG is in unmaintained mode again and I think that this is some kind of curse on embedded market package managers.

Some time ago I discovered that when many (>50) packages needs to be upgraded then opkg segfaults during process and this is not a matter of going out of RAM as I have ~400MB free. Today it did not gave value of PATH for post install scripts… I wonder what else can be found ;(

What are other options? So far I know two — dpkg + apt or rpm + yum. First one costs few megabytes of space, second one require also Python so it is not acceptable for most of our targets. Both also require rebuilding of everything 🙁