PalmIIIxe – Part 2 – Getting iCal data into the Palm

Getting data into the Palm IIIxe is a challenge. First of all, it doesn’t have Wifi. Secondly, it uses its own data format *.PDB to store data. Which means not only do I have to find a way to sync the data over the serial port, I also have to be able to convert the data that I currently have into the compatible format.

As mentioned before in the previous post, pilot-xfer is my friend. It can help me sync data in a few ways into the Palm. Serial or network. Thank goodness that Palm at least had the sense to include Network syncing, but the pilot-link suite of tools is the one that made it possible to redirect a serial port to a network-ed system running a HotSync capable machine.

Diagram of how my Palm syncs data

Once I had this setup, getting files in and out of my Palm was possible. Not easy, but definitely possible. As shared before, the productivity utilities that I use daily are as follows.

  • iCal -> Datebk
  • Contacts -> Addressbook
  • ToDo -> Things3.0
  • Memo -> Evernote

This means that somehow, I have to convert the data from these systems into the respective PDB files that can be understood by the Palm built-in apps. I started off with iCal and Contacts as these have standard formats that we can convert into and thus transform into records that can then be written out into PDB. I’m familiar with PERL, so I started hunting for PERL packages that would handle Palm PDB files. Exporting from iCal and Contacts on Mac is easy, so there isn’t much to worry about there.

Handling ICS to Datebk PDB conversion

The PERL package I used falls under the PALM package and the ICS file parse I used is iCal::Parser. A few key things to note. What PALM can support is definitely simpler compared to what iCal can handle. So it is very important to NOT lose any data during the transformation. Therefore, all un-mappable information would go into the NOTES field in the PalmPilot. Its also important to know that the iCal Parser that I am using handles all the conversion of ICS entries into parsable calendar objects. This makes it much easier for me to be able to not worry about things like repeated events etc and just focus on the mapping. This isn’t a coding tutorial, so I wouldn’t be providing code to show how I got it done. But ultimately, I made some decisions about how things should show up on Datebk, manipulated the strings (PERL is good for things like that), provide by the parser, and wrote it out into a PDB.

High-level prices flow of the data conversion

Needless to say, it took a while for me to settle on exactly how I would like the data to show up and the abbreviations I would use, but the end result, I think, is pretty concise and usable. The screen, being only 160×160 also mean I had to choose carefully what I wanted to show. It really drives home the need to only show exactly what is required and important, and how far technology has come.

Datebk showing my iCal data
Notes field showing all other information meaningful to the event so that nothing is lost

Once the PDB file has been constructed, the next thing was to be able to move the file seamlessly to the networked HotSync machine for syncing. Making use of Dropbox to do this was no a no brainer. I previously had some Linux code that I wrote to be able to sync files, so I effectively just re-used those. I could have just used rclone to do the same. The flow below shows how the PDB file would move from the moment it has been constructed. As the files are very small, the cloud sync only really takes a moment.

Moving the file so that we can HotSync it over the network

Once the file is on the HotSync system, pilot-xfer and pilot-nredir does the rest.

Calendar Week view on iCal
View of the same week on Palm Datebk

Tada! 🙂
I now have my iCal available on my Palm.

Final bits on the conversion

Putting on the finish touches on this conversion process just requires me to now be able to automatically export the iCal entries using Apple Script, for all my calendars into a file, so that parsing script can then take over the conversion. It was at this point that I ran into some slight issues. I realised that I didn’t want to have my Mac handling the ICS file export and then running the conversion. This is largely because I didn’t want to have to re-install all those linux tools every time I change or upgrade my Mac. I wanted the tools to be on an OS whose tools are generally available as part of the system. I also wanted to ensure that all the other tools I ended up creating could follow the same structure. So I tweaked the process just a little bit….

Final ics file to Datebk syncing workflow

At the end of this, I could export any parsable file into a target folder in DropBox, and it will be MD5 checked for any changes. Once a change is detected, it would then automatically (re)create an updated PDB file which would be placed in a HotSync folder. Connecting my Palm to the RaspberryPi, which has pilot-nredir always running in a while loop, would then automatically sync, install the latest PDB file into it.


Not much… everything I have seems to translate pretty well into text. The one thing that I have to remember that this sync is ONE-WAY. It gets iCal stuff into the Palm, but not any changes in Palm back into iCal. This means that I can’t create, edit, delete entries on the Palm and expect it to carry across to my iCal.

HOWEVER, I find that short-coming ok. I use my iPhone to keep track of my calendars anyway. The Palm is really just a way for me to not have to whip out my phone just to check a calendar entry if I’m playing games on it.

At some point in the future, I might have to re-design the entire process if I want to be able to do a 2-way sync, but it might not be worth the trouble.

See Part 1

PalmIIIxe – Part 1 – Setting up the Vintage Hardware so that it is useful again

I miss the simplicity of the Palm Pilot. Maybe I’m getting old, but there is something about it that I can’t help but to feel that its exactly what I need. No distractions of a modern GUI, and just straight out text. However, I no longer have a unit anymore. In progressing from the various PDAs, handhelds and mobile phones, I have either sold off all my units or had them break down on me. As such, I set out to select and purchase a Palm series PDA in 2018.

The selection criteria as follows. It had to be (1) easy to maintain, (2) easy to fix, (3) fun to use. This meant that no has Li-ion battery, with primitive parts to replace or change. Straight forward to rip apart and replace parts and to hack too! I ultimately settled on the Palm IIIxe. Its AAA batteries, push buttons and a screw on back meant that it met all my above criterias. (You can probably find the Palm IIIxe specs somewhere on the internet). The vintage set cost about USD$50 bucks. And just a fun project, I bought it with the intention to make it useful again, one way or another, and make it fit with the modern world that we live in.

PalmIIIxe Box
What the PalmIIIxe provided

With the Palm in hand after getting it from Ebay, I bought some sync cables (it was really hard to find) with the intention to hack them in the future, I started to get the unit ready for use. A few things presented itself as a problem immediately. (1) I can’t find a serial port, (2) I don’t have windows (for HotSync), and (3) I needed software.

Palm IIIxe PDA

(1) and (2) was challenging as I chanced upon the latest Palm OS 4.0 which the PalmIIIxe was compatible with, and needed the serial port to perform the firmware upgrade. I finally managed to have a friend dig up an old IBM Thinkpad with serial port available and flashed it. Phew!

Palm OS3 boot screen
Palm OS4 boot screen

Software was yet another challenge. As I am not primarily a windows user, (I’m a linux fan but use Mac for work), most of the default software don’t work. So Pilot-Xfer was my friend. Digging up an older DB9 Serial (RS232) to USB convertor, and using Pilot-Xfer in network mode, I managed to sync my device to a Linux VM I created just for the palm. So that solved the basic software syncing issue. And now, i started to hunt for the games that I used to enjoy.

Snapshot of the pilot-xfer MAN page

That was tough….

Almost all games and utilities where either obsolete, or the stores gone. PalmGear no longer exists, and its impossible to register some of the shareware games anymore. Some utilities that I used to use are now impossible to find. But I still managed to find a trove of stuff kept by some as an archive. Those I downloaded in entirety, so that I can hold them only own storage, and hopefully, overtime, sort through them… but more on that another time.

In the short term, I installed a bunch of free software such as the following for the Palm to be a gaming machine and some basic utilities as a start.

  • LauncherIII
  • Gobble
  • Free-Tris
  • BigTwo (my Fav!)
  • EasyCalc
  • Keyring
  • Metro
  • PalmXQ

But one thing that was still missing is the data associated with the built-in apps. DateBook, AddressBook, ToDo, Memo. In the modern day and age where everything is in the cloud, the one biggest thing I missed on the Palm apps is its simplicity and single-mindedness… something I admire and appreciated. However, in keeping with the times, all my events are kept on a Mac. My ToDo items are stored in Things (by Cultured Code). Notes in Evernote. So the question to essentially answer was…

“How do I get my Calendar, ToDos, Contacts and Memos from my modern desktop using iCal, Contacts on Mac, Things from Cultured Code and Evernote, into my Palm?”

There are no Conduits to do such things, and obviously, the pilot-suite on linux are so old that they don’t support such new tools. So the only answer was… roll your own code.

Till next time…

PS: I’m pretty sure no one is going to fry me over blogging about this as its just a hobby and it doesn’t really have any conflict of interest on my job anyway. Palm is pretty much defunct on its PDA product line anyway. So I’m going to just write about this and hopefully don’t get into any trouble.

Singapore Park Connector Network Notices

For the cyclist in Singapore. If you are riding the damn Park Connector Network (PCN), its not easy to find a closure notice of the various segments of the PCN. I’ve been pissed off multiple times riding on the PCN and getting to a section thats closed and having to do a unwanted detour. I have therefore created a RSS feed that will show all the notices from NParks. This scraps information from NParks notices using RSS creation service. Its not perfect, but it works.

So if you use RSS, subscribe to and you should see which are the sections that are closed. I hope it helps someone out there.

Sample PCN notices output