The Personal Digital Assistant (PDA)

After I first saw the Palm device (i.e. the IBM Workpad C10, an OEM version of the PalmPilot Professional) I immediatly realised I had to have one. The Palm is the first device which really provides all the basic features of an electronic organizer. Its interface is very easy to learn and the HotSync technology makes sure you always have the right information at the right place at the right time.

It is substantially different from the PocketPC (WinCE) and Psion (EPOC) concepts in that it does not try to be a portable computer. It is a true organizer, and its size and battery life make the difference. The fact that a very active developers community exists and that a lot of the software available for it is either freeware or shareware only helps to raise the actual usability of the device.

Developing for PalmOS

For programming PalmOS applications I use the PalmOS 4.0 SDK for Windows and GCC PRC-Tools for Cygwin. For writing conduits (i.e. HotSync applications) I use the JSync Suite of the Conduit Development Kit 4.03 in combination with the Eclipse Platform/JDT. Remember to request a Creator ID from Palm Computing, Inc. if you intend to distribute your application (registration required). Note that all mentioned programming environments are available at no cost.

Of course, I started out writing a basic Hello World app, but the real reason I started programming for the Palm was to build an application for my compact disc inventory, which was already available on my desktop in CDDB Unix format, created thru NotifyCD. Using the export function, then converting to doc format and then uploading to the Palm was very cumbersome. Enter CD List, including conduit.

History of CD List, including conduit

I started out with writing the PalmOS component for providing me an interface to a CD database. A lot of Palm programming insights were provided thru Palm Programming: The Developer's Guide from Neil Rhodes and Julie McKeehan. I then wrote a little java program to build the database in pdb format (thanks to Ken Shirriff for providing basic pdb java classes) which I then manually uploaded to the Palm.

Extensive testing was done using the gremlins feature from the PalmOS Emulator (POSE), which led to uncovering some very serious design flaws. I recommend every developer to run applications under gremlins with at least 1 million itterations. Also run your application on a PalmOS debug ROM. Especially the debug ROM for PalmOS 3.5 provides a lot of extra information about programming flaws. Don't give up tracking those pesty memory leaks, because if your application is able to handle the above, it is very unlikely your application will crash the PalmOS device when distributed to a large audience.

The next logical thing to do was to build my own conduit. The conduit uses JSync, the Palm Computing Java HotSync middleware. This software allows Java based applications to communicate with your PDA thru the HotSync Manager. This allows developers to write conduits using Java (instead of C++, or worse, Microsoft Visual C++). In the CDKJ 4.0 Palm Computing also provides the sources for the Generic Conduit, a set of classes which implement a general conduit. This is very helpfull when creating a full-blown two-way conduit, since you only need to override the proper classes.

Testing of the conduit was initially done thru a null modem cable (with the speed of the HotSync application set at 19200 bps), but I switched to the network enabled version of the HotSync application, which speeds up things a lot. Below a few screenshots to clarify this setup.

Valid XHTML 1.0!