Using Symbian Perl

I’ve been playing with Jarkko Hietaniemi’s port of Perl for Series 60 Symbian devices on my Nokia 7610.

There is a lot of work to be done on it still, but it works, and I can run simple Perl scripts.

Perl running on a Nokia 7610 phone

The screenshot above show’s me running a simple script to list the contents of the Lifeblog directory on my series 7610 phone. Here’s the code that was run on the phone to generate the listing.


my $directory = "C:\system\Data\lifeblog\";
print "$directoryn";
opendir(DIR,$directory);
foreach my $file (readdir(DIR)) {
print "$filen";
}
closedir(DIR);
sleep(5);

As you can see it’s simple stuff. I added the sleep(5) at the end just to allow me to take a screenshot as when the script has been run it prompts you to press any key to exit. In this case, the screenshot key, caused an exit. 🙂

It may not look much, but it’s bloody exciting stuff for me. The possibility of running decent Perl applications on my phone has me salivating in anticipation of the next release. At present the version out there (0.1.0) doesn’t offer any interface into the native Symbian libraries from Perl, but I’m sure that will be changing soon.

It’s easy to write simple scripts, as all I had to do for this one was to just drop it into the Perl directory on my memory card (via Nokai PC Suite) and use the PerlApp application supplied in the Symbian distribution.

The Python guys are luckier to have a fuller featured release of their favourite scripting language, but watch out, the Perl Mongers are coming!

Lifeblog – Review and Thoughts

I’ve been lucky enough to have taken part in a Lifeblog trail for Nokia in the UK over the past few weeks.

We were given a lovely new Nokia 6630 phone (that unfortunately we have to return at the end of the trial), equipped with Lifeblog and just asked to evaluate it.

Here are my thoughts, experiences and opinions on using Lifeblog.

Well firstly Lifeblog is really two pieces of software. One part runs on your series 60 based smartphone and the other runs on a fairly high spec PC running Windows. The phone stores your messages, photos, videos, etc until you can sync up with a PC to download them. I’ll cover each part separately, then as a whole.

The phone based software is excellent. All content appears in Lifeblog automatically. So I now no longer have to open various different applications to see different content. Lifeblog captures SMS and MMS messages both sent and received. It also captures any photos or videos I take. Content is kept in order, so I can cycle through by day and see all my data in order. This is great at keeping messages in context.

Best of all is the ability to post to a blog directly from the phone handset. Because Lifeblog is so well linked into the way the phone works, it means I can quickly select the content I want to blog about, and get it up on my site very rapidly. Behind the scenes, Lifeblog uses a flavour of the Atom protocol to communicate with the blog. Six Apart‘s Typepad service is supported by default, but other services are coming on stream now with a Lifeblog plugin available for Moveable Type, and a gateway into Flickr. I was even able to link Lifeblog into my own homebrew Perl based blogging system. Going over my website, you’ll probably see the posts I’ve sent via Lifeblog as I include a little strapline at the bottom of each entry highlighting the fact.

From a social point of view, as I always have my phone with me, I can blog wherever and whenever I like. It’s great that the high end Nokia phones have megapixel cameras as the images are so sharp. Lifeblog does shrink the image when posting to the web, but that’s just great, it saves me money in data charges. It’s amazing to be able just point the phone at something, and know it’ll be online a minute a later. I’ve been showing off this ability to the guys at work to much excitement.

Now for the PC side of Lifeblog…

Unfortunately this is where I’ve been having some problems. The concept is great, but its current incarnation still needs a bit of work done on it. For example, it won’t run on my 1ghz laptop. It keeps asking to update DirectX, even though I’m on the latest version. This is a shame as it’s my main machine. However, it will run on my office desktop machine, so I can share my experiences of that.

The PC version of Lifeblog takes over the whole screen when linked in. Microsoft Windows disappears and Lifeblog takes over.

The screen looks beautiful, and has the same timeline experience as the mobile version, though it contains everything that was ever in your handset. It’s great being able to scan back and see old message and photos being kept in order. There is also the ability to post to a blog from here as well, though I’ve not actually tried that, being such a fan of posting from the handset.

It’s easy to sync between the PC and the mobile phone. It just uses Nokia’s existing PC Suite software to connect up and from there it’s just an option on the menu to copy everything across. Very simple. During data transfer, Lifeblog show’s you the content coming across in real time on the screen.

Now for the overall take on Lifeblog.

I think it’s bloody brilliant. Nokia’s concept of a Digital Shoebox works really well. It’s a place to keep all that content that may otherwise be lost or backed up in various places all together. As the mobile phone takes a central role in modern lifestyles, the ability to automatically use it as a multimedia diary is very powerful.

The downside is the software needs a powerful PC to run on. This will probably be addressed as the software matures and older computers are replaced. The other side is the cost. I’ve been lucky at being able to use a full version as part of the trial instead of having to pay for it. The price point is a little too high I’d say at present, but a reduction here would really boost uptake.

There is a free version of Lifeblog available from Nokia that can store up to 200 items. If you have a compatible phone, I’d really urge anyone to give it a try. Beware though, it can be addictive 🙂

This review was based on Lifeblog 1.5.

CellTrack’ing Between Colchester And London

I’ve been looking at CellTrack program for series 60 phones recently.

This is a native series 60 Symbian application that can record details of the current mobile phone cell your phone is using. It also lets you annotate each cell if you want.

Celltrack is something I downloaded for my Nokia 7610 a while ago, and have just installed on the Nokia 6630.

Screenshot of CellTrack running on a Nokia 6630

On Monday, while the train was running slow, I had it running and started to annotate stations so I could tell where I was in the evening when it’s dark outside. CellTrack has a feature that allows you to log used cells to a flat tab seperated file. In my case, as I have the software installed on the 6630’s MMC card, the file can be found in the directory E:NokiaOthersCellTrack and copied off using the Nokia PC Suite.

Here’s the journey I took on Tuesday morning by train. I turned on CellTrack at Marks Tey station and had it running to just before the train pulled into Stratford station in East London.

Time Cell ID LAC Cell Name Description
07:26:08 12972 629 XXBC97 B Marks tey station
07:27:15 12973 629 XXBC97 C Approaching marks tey
07:27:35 8812 629 XXB881 B Approaching kelvedon
07:28:03 4340 629 XXB434 A no info
07:29:01 4339 629 XXB433 X Kelvedon station
07:29:25 4341 629 XXB434 A Approaching kelvedon
07:31:40 16772 629 XXBG77 B Between witham and kelvedon
07:32:10 16774 629 XXBG77 X Between kelvedon and witham
07:32:43 2084 629 XXB208 X Approaching witham
07:34:09 2086 629 XXB208 F Witham station
07:36:34 382 629 XXB038 B Approaching witham
07:37:15 2086 629 XXB208 F Witham station
07:37:55 7249 629 XXB724 X Hatfield Peveral station
07:38:33 7251 629 XXB725 A Approaching hatfield peveral
07:39:30 13877 629 XXBD87 G Approaching hatfield peveral
07:39:40 13878 629 XXBD87 X Between hatfield peveral and chelmsford
07:39:52 13879 629 XXBD87 X Between hatfield peveral and chelmsford
07:41:17 3910 629 XXB391 A Approaching chelmsford
07:41:37 3912 629 XXB391 B Approaching chelmsford
07:42:07 16055 629 XXBG05 E Chelmsford station
07:43:01 3877 629 XXB387 G Chelmsford station
07:43:52 16057 629 XXBG05 G Approaching chelmsford
07:44:10 3879 629 XXB387 X Approaching chelmsford
07:44:24 5282 629 XXB528 B Approaching chelmsford
07:44:46 16779 629 XXBG77 X Between chelmsford and ingatestone
07:44:58 16778 629 XXBG77 X Approaching chelmsford
07:45:08 16779 629 XXBG77 X Between chelmsford and ingatestone
07:45:31 16780 629 XXBG78 A no info
07:45:49 2073 629 XXB207 C Between chelmsford and ingatestone
07:46:01 367 629 XXB036 G Between chelmsford and ingatestone
07:46:11 12354 629 XXBC35 X Between ingatestone and chelmsford
07:46:25 12355 629 XXBC35 E Between ingatestone and chelmsford
07:47:03 2073 629 XXB207 C Between chelmsford and ingatestone
07:47:21 369 629 XXB036 X Approaching ingatestone
07:47:32 11240 105 XXBB24 A Approaching ingatestone
07:48:14 11242 105 XXBB24 B Ingatestone station
07:48:34 3755 105 XXB375 E Ingatestone station
07:49:14 3756 105 XXB375 F Between ingatestone and shenfield
07:49:30 11239 105 XXBB23 X Between shenfield and ingatestone
07:50:09 16872 105 XXBG87 B Approaching shenfield
07:50:35 16875 105 XXBG87 E Approaching shenfield
07:50:49 3661 105 XXB366 A Approaching shenfield
07:51:42 3662 105 XXB366 B Shenfield station
07:51:54 3663 105 XXB366 C Shenfield station
07:55:03 531957 0 XXB-76 X ?:no info
07:55:25 531957 65535 XXB-76 X ?:no info
07:55:59 0 0 XXB000 A ?:no info
07:56:50 7240 105 XXB724 A no info
07:57:26 3788 105 XXB378 X no info
07:57:52 3789 105 XXB378 X Approaching gidea park
07:58:09 2068 105 XXB206 X no info
07:58:19 16035 105 XXBG03 E Gidea park station
07:59:31 19568 105 XXBJ56 X no info
07:59:45 5057 105 XXB505 G no info
08:00:16 197140 3008 XXB-12 F *:Gidea park station
08:01:09 10925 105 XXBA92 E no info
08:01:26 5058 105 XXB505 X Approaching gidea park
08:01:59 6249 700 XXB624 X Approaching gidea park
08:02:18 1381 700 XXB138 A no info
08:02:30 197214 3009 XXB-69 A no info
08:03:19 4829 700 XXB482 X no info
08:03:23 8611 600 XXB861 A Seven kings station
08:03:49 7748 600 XXB774 X no info
08:04:49 11170 700 XXBB17 A Approaching ilford
08:05:17 9724 600 XXB972 X Manor park station
08:05:39 3325 600 XXB332 E Approaching manor park
08:06:02 9726 600 XXB972 F Manor park station
08:06:16 17536 600 XXBH53 F Approaching forest gate
08:06:44 17535 600 XXBH53 E Forest gate station
08:07:55 1335 600 XXB133 E no info
08:08:19 14197 600 XXBE19 G no info
08:08:38 10334 700 XXBA33 X Maryland station

So what do some of the columns mean? Well Cell ID is the ID taken from the actual cell. LAC means the location area code of the cell. I’m not sure what Cell Name actually is, the CellTrack site says it comes from the cell broadcast as I have a service number set. The description is the text I entered to give a rough location to the cell.

As I said before, the log file has the data in tab seperated format. The data is recorded in the following order…

  1. Date
  2. Time
  3. Cell ID
  4. LAC
  5. Country
  6. Net
  7. Signal
  8. Signal dBm
  9. Cell Name
  10. Description

This makes it very easy for us to write a data extractor using Perl. Here’s the code I used to generate the table above.

#!/usr/bin/perl -w
use strict;
## Perl script to parse the CellTrack trace.log file, and split selected
## contents into an HTML table.
## Robert Price - rob@robertprice.co.uk - March 2005
## start the table, and print out a table header.
print "<table>n";
print " <tr><th>Time</th><th>Cell ID</th><th>LAC</th><th>Cell Name</th><th>Description</th></tr>n";
## iterate over each line, placing the contents in $line.
while (my $line = <>) {
## clean up the data a bit.
chomp($line); # loose trailing linefeeds.
$line =~ s/r//g; # loose any rogue carriage returns.
$line =~ s/t */t/g; # remove preceeding spaces from data.
## split the data in $line into variables.
my ($date,$time,$cellid,$lac,$country,$net,$strength,$dBm,$cellname,$description) = split(/t/,$line);
## create a copy of $time, and format it so it has colons between hours and minutes.
my $nicetime = $time;
$nicetime =~ s/(d{2})(d{2})(d{2})/$1:$2:$3/g;
## print out the data we're interested in.
print " <tr><td><a link="$time" />$nicetime</td><td>$cellid</td><td>$lac</td><td>$cellname</td><td>$description</td></tr>n";
}
## close the table.
print "</table>n";

You may have noticed I didn’t bother to print the country or network used. Well that’s because it’s always the same for me. The country is 234 (UK) and the network is 33 (Orange). This may be more interesting when travelling abroad and using roaming.