Dates and iPhoto

I did something wonderful today! I went back through all the digital photograph “rolls” which I imported into iPhoto upon originally getting iPhoto (since I’d already had a digital camera for 3 years by then), and set the roll dates to be the date when the pictures were taken, as opposed to being the date that they were imported. For most of them, I had actually included the date in the name of the roll anyway, so I wasn’t concerned. For many of the others, the metadata which JPEG allows contained a date. For a select few scanned photographs and digitals taken by a camera with an incorrect clock, I had to do things the hard way. In iPhoto, you can click on a “roll” in Library view, and the Information window in the lower left gives a date for the whole roll, as well as a range of dates during which pictures in the roll were taken. It is this date for the whole roll which I corrected. Now, my iPhoto library is actually in chronological order.


EnigMail and OpenPGP with Mozilla Thunderbird (OS X, Debian Linux, Windows XP)

Today I have successfully installed and used EnigMail with gnupg in Mozilla Thunderbird on three different platforms: OS X 10.4, Debian Linux (testing/etch), and Windows XP sp 2. Incredibly, things just worked on OS X and Linux, but required some tinkering in Windows. Here’s what went wrong, and how I fixed it.

I created my keypair in OS X, since I installed everything there first. I then exported the key (OpenPGP Key Management : File : Export keys to File) to a file and copied it to my Linux machine, where I used the corresponding “Import Keys from File” command to import the keypair. This just worked; beautiful.

I then copied the exported keyfile to my Windows machine. However, upon installing EnigMail in Thunderbird on Windows, a wizard opened up to help me create my first keypair and make sure Thunderbird’s settings are sane for use with EnigMail. Thinking I would just delete the generated keypair and import my “real” keypair, I let the wizard finish.

I then deleted the created keypair and imported my “real” keypair, as planned. However, upon trying to sign a message, I get the following error:

enigmail> C:\Program Files\GNU\GnuPG\gpg.exe --charset utf8 --batch --no-tty -- status-fd 2 --comment 'Using GnuPG with Mozilla -' -- digest-algo sha1 -t --clearsign -u 0x52B4252C --passphrase-fd 0 --no-use-agent gpg: skipped "0x52B4252C": secret key not available gpg: [stdin]: clearsign failed: secret key not available
enigmail.js: Enigmail.encryptMessageEnd: Error in command execution
enigmail.js: Enigmail.encryptMessage: Error in command execution

I did a good bit of googling and didn’t find anything useful; all the tests I did using my imported “real” keypair with gpg manually were successful. It was then that it dawned on me: 0x52B4252C is the identifier for the keypair that the wizard created, and not my “real” keypair. Strange, why didn’t EnigMail forget about that key when I deleted it? At any rate, it didn’t. And the wizard hard-coded the key to be used for signing things. To fix this, go to:

OpenPGP : Default Composition Options : Signing/Encryption Options… :
Use Specific OpenPGP Key ID (0x1234ABCD)

0x52B4252C (the digest of a my non-existent key) was in the box; select your “real” key and you should be good to go! I find it absolutely incredible that these very good tools are available and work well on all three operating systems. 2006 is a good year.

C++ Development for Symbian Series 60 Phones

I’ve tried a bunch of different toolsets, without ever really being happy. Some that I’ve tried include:

However, Nokia has now released Carbide C++, which is supposedly specific to developing phone applications. After installing Carbide, it is also necessary to install an appropriate SDK for your particular mobile phone platform. Looking at Device Details on Nokia’s website, specifically those for the 6620, I learned that I needed “S60 2nd Edition, Feature Pack 1”. Browsing on Nokia’s SDK download pages, it is nearly impossible to figure out which SDK is the right SDK. I thought I had done it, only to discover that what I thought was the generic Symbian Series 60 SDK 2nd Edition Feature Pack 1 was actually for .NET. There is hope, though…

Once Carbide C++ has been installed, it automagically opens up a local html file. I have pasted some of its contents here because they contain simple links to the appropriate SDKs:

SDK Support in Carbide.c++
Release 1.0.0 Revised Feb 14, 2006

To complete your installation and start Symbian C++ application development, you may want to install one or more of the following SDKs:
S60 SDKs (

Series 80 Platform SDKs


You also need to install:

Perl (

I installed “S60 2nd Edition, FP 1” for my Nokia 6620. Note that during installation it claimed to be for MetroWerks Codewarrior. I believe Nokia bought that product and renamed it Carbide, but I’m not sure. I also installed ActivePerl version 5.8.6 build 811. This is newer than the one suggested by the Carbide docs, but it seems to work.

It’s slightly confusing to figure out how to create a project that will actually run on the phone. The steps I followed are:

  • File : New -> Symbian OS C++ Project (choose a name in the resulting dialog box).
  • Choose “Symbian Polymorphic DLL Project : S60 2.x [type] application” , where type indicates the basic structure of the application you’re trying to build. One of them is “Hello World”, a reasonable pick for first-timers.

Carbide is not without its limitations, some of which include:

  • The only build option is Build-All; its not possible to build a single source file. Time-consuming for large projects.
  • No built-in support for SVN (that I’ve discovered yet, anyways). I’m still not sure how difficult it will be to keep a project current in a revision control system if Carbide is used.

But some things I really like are:

  • Powerful rename options. So many IDEs choke badly if too many project files are renamed.
  • Sane workspace management. I feel like the IDE is helping me, rather than moving files around according to some arcane set of rules.
  • Importing of other projects from .mmp or .inf files. Most of the examples I tried just worked; unheard-of for these phones!