Nokia's R&D future vision of interaction with mobile devices - whe this fits with MS

Last year in October, Nokia's researchers presented a very nice video of possible future phone interfaces based on nanotechnology. Such us smelling phones, phones that change shape, strech, get charged by sunlight, self clean, have transparent haptic displays, ...

It is not sure where Nokia's research is heading at the moment. MeeGo seams to be their research platform but the preferred operating system is still Windows 7? This is what they said in the middle of February:

"Under the new strategy, MeeGo becomes an open-source, mobile operating system project. MeeGo will place increased emphasis on longer-term market exploration of next-generation devices, platforms and user experiences. Nokia still plans to ship a MeeGo-related product later this year."

And later:

"Nokia will "substantially reduce" R&D expenditures while increasing R&D productivity moving forward ... MeeGo will ship this year but "not as part of another broad smarpthone platform strategy, but as an opportunity to learn." .. The MeeGo team will "change their focus into an exploration of future platforms, future devices, future user experiences." Trying to determine the "next disruption" in smartphones."

Now it's clear that MeeGo is dead (Symbian as well), and Nokia is moving to WP7 only world. Too many bad decisions such us rewriting the networking stack and QT rewrite and ... it took too much time ... but when it finally was ready to hit the market they switched to WP7. Let's just hope that it will still evolve in the meantime and become used on some devices. Until then, enjoy watching their research concepts.

Is deleting information the answer? How do we know what to delete?

How do we know what to delete on our computers? It can be hard to decide. What if we were wrong in our decision and we need the document again? It's easy if we know we can get the same content. But if we don't?

Is it even worth deleting with the cheap storage space? Compulsive hoarding might be an answer, but with a lot of information in a way, is hard to focus on information we work on at a certain point in time.

A study showed that users categorize information in three groups:

  • Important items that remained in place
  • Valuable things that moved to the archives
  • Unimportant items that were deleted.

Is has been even studied what affects deletion:

  • removed as exists in another format,
  • not needed again,
  • age,
  • size,
  • importance (value),
  • received new information,
  • unknown content,
  • available time to do maintenance.

I recently read a comment on a ./ which made me laugh (and would never work for me):

"If hasn't been accessed in 3 years then it gets deleted [porn files 6 months]."

It makes me think of a cronjob :)

1 1 find /home/user -type f -atime -2191 -exec rm {} \;
1 2
find /home/user/video/porn -type f -atime -182 - exec {} \;

I wouldn't trust any such script. Some research prototypes tried to delete and categorize email. But even Google is sometimes wrong and puts my legitimate emails in spam :(.

Similar suggestion  was made by Joshua Baer, a CEO of OtherInBox, that email should have a "best used before" field and emails with exceeded date would automatically be deleted. Besides companies not using such a thing (who would like their email being deleted) or putting the dates 100s of years from now (spam), I wouldn't trust this either. What if I leave an ad in my inbox because it's from a company that does interesting things. But I want too look at it a few months later. What if such ad included a promotion that already expired, gets deleted without me knowing it. Not a good thing.  Second example. Imagine an academic conference with its due date or a meeting invitation. I don't  want to attend it, but next year (conference) or next month (meeting) I'd love to come, so I leave such email in the inbox as a reminder. What if it gets deleted (conference due date is over and meeting as well)? I would perform a search and be frustrated not being able to find such emails.

In the meanwhile I'll follow my common sense, delete what I think I won't need anymore and hope for the best :).

Running out of inodes, no space left on device, php not cleaning sessions

Today I run into a weird problem. When I tried to open my (Serendipity) blog I got this strange error:

Query failed: 

	ORDER BY timestamp DESC

/ Can't create/write to file '/tmp/#sql_6ee_0.MYI' (Errcode: 28)

I was kind of puzzled. All other sites were working fine (such us wiki and list of pim prototypes). I sshed to a server and checked the disk usage:

myusername@pim:~$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             3.8G  3.0G  685M  82% / 

Everything fine here. I checked the /tmp folder

myusername@pim:/tmp# ls -la 
total 32
drwxrwxrwt  4 root root 20480 Apr 18 12:42 .
drwxr-xr-x 22 root root  4096 Apr 18 11:20 ..
drwxrwxrwt  2 root root  4096 Mar 24 22:42 .ICE-unix

Nothing strange here either. I tried to login to mysql:

myusername@pim:/tmp$ mysql -u myusername -p
Enter password: 
Welcome to the MySQL monitor

Everything worked fine. So I checked the ERROR 28 the web page was giving me

myusername@pim:/tmp$ perror 28
OS error code  28:  No space left on device

I tried to create a file with no success:

myusername@pim:/tmp$ touch bla.txt
touch: cannot touch `bla.txt': No space left on device

Then I googled a bit and found out that I might be running out of inodes.

myusername@pim:/tmp$ df -i
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sda1             250976  250957      19  100% /

Yep, that was it. Now I had to find which folder had a lot of files that were taking up the inodes (as root). Not all results are shown in the below output.

myusername@pim:/var$ cd /
myusername@pim:/$ sudo bash 
root@pim:/$ for i in /*; do echo $i; find $i -type f | wc -l; done
/bin 91
/boot 23
/dev 346
/etc 745
/home 5
/lib 1709
/media 0
/proc 11435
/root 5
/sbin 103
/sys 3863
/tmp 0
/usr 45188
/var    186774

I went to /var and run the same command

root@pim:/var$ for i in ; do echo $i; find $i -type f | wc -l ;done
backups 1
cache 55
lib 173682
log 47
mail 2
run 16
spool 19
www 12950

So I needed to check /var/lib

mkljun@pim:/var/lib$ for i in ; do echo $i; sudo find $i -type f | wc -l ;done
apt 9
doc-base 37
dpkg 2342
misc 2
mlocate 1
mysql 665
php5 170453
screen-profiles 21
ucf 23
xml-core 2

The folder /var/lib/php5 contained 170k files! It was kind of strange why all these files were not deleted after a session timeout. I certainly did not have 170k users visiting my pages (I wished this to be true though).

root@pim:/var/lib# cd php5
root@pim:/var/lib/php5# ls -l | wc -l

I checked the maximum time set for a php5 sessions to live.

root@pim:/var/lib/php5# /usr/lib/php5/maxlifetime

24 minutes. I decided to delete older files.

root@pim:/var/lib/php5# find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 -exec rm {} \;
root@pim:/var/lib/php5# ls -la
total 11768
drwx-wx-wt  2 root     root     12017664 Apr 18 12:35 .
drwxr-xr-x 38 root     root         4096 Sep 22  2010 ..
-rw-------  1 www-data www-data      168 Apr 18 12:23 sess_389b8191e2563e8bb43c41e20e015c0d
-rw-------  1 www-data www-data      118 Apr 18 12:11 sess_52c9acc7779f5cfd7e7e92a900fe7f19
-rw-------  1 www-data www-data      160 Apr 18 12:27 sess_bb8cfa842ceb0027cc9e4082ad8b0419

I checked the inodes usage.

root@pim:/tmp# df -i
Filesystem            Inodes   IUsed   IFree IUse% Mounted on
/dev/sda1             250976   80524  170452   33% /

That was it.

Why PHP is not deleting expired sessions is another question. I went to my php.ini file and found this:

; After this number of seconds, stored data will be seen as 'garbage' and
; cleaned up by the garbage collection process.
session.gc_maxlifetime = 1440

; NOTE: If you are using the subdirectory option for storing session files
;       (see session.save_path above), then garbage collection does not
;       happen automatically.  You will need to do your own garbage
;       collection through a shell script, cron entry, or some other method.

So all I needed to do was to create a cron job (I decided to rut it every hour as root)

root@pim:/tmp# crontab -e 

0      /usr/bin/find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 -exec /bin/rm {} \;

Hopefully this will help some other soul out there.

An IT savy guy watching the noob surf the web. Are interfaces that easy

I came across an interesting video showing an IT literate person watching a novice doing some web searching and going nuts meanwhile.

I often find myself in a similar situation, looking at someone doing something on a computer, in what seams to me the hardest possible way to do it. But there are many ways to do the same thing on a computer and we are all given options (like driving the car form A to B can be done on different streets). But beware, most of the advanced options (like Ctrl-C Ctrl-V) are hidden and not obvious to most people (conclusion from observations). 

Friends sometimes mention that I am too patient and that they could not stay calm watching the slow motion of computer usage. But I let users do the things they are used to. If I try explain how to do things faster to my dad for example, I only confuse him. If he asks me how to do it then I help. Otherwise I am happy that he can do at least some things on his computer.

Is it really users who fail to use software or is it interfaces that fail users? I know quite a few people who type URLs in google search box!! I know people who know URLs by heart but still type therms (and not URLs) in google search box to find desired pages! I even know a guy who keeps all his important  bookmarks in FF toolbar and never uses them. Instead he uses google to find those pages! So is there a right way to do it? No! There are many ways, some shorter and some longer but eventually they all solve some problems.

The other day I asked a student to show me  the size of a file (called output.txt) in command line. And to my astonishment he seriously typed:

$ ls -l > file.txt
$ awk '/output.txt/ {print $5}' file.txt

Voice recognition and narative based PIM interfaces

You know it from your phone: tell a name, and I'll call that person for you. Example: I speak to the phone "mum" and it calls dad :). Joke aside, voice recognition on the phones never worked for me. But apparently the Windows 7 voice recognition is way better of what we had so far. And is usable to dictate text after some training.

When I think about voice recognition, narrative interfaces come to mind. The Quill prototype, for example finds a document [PDF] if you type in the story about it:

Another tool that comes to mind is Feldspar. Instead to typing the story, user incrementally specifies associations [PDF] about the searched-for information.

It would be nice to see how such interfaces would work with a good voice recognition. In the mean while, we cam dream about the possible future to be able to talk to computers like in Sun's Starfire.