Hackers Notes for the Treo 650
Monday, May 30th, 2005Lets say you find yourself in possession of a nice new Treo 650. You’re no slouch. you’ve owned just about every form of PDA that’s come down the line. You know cellular well enough to sit up and pay attention when someone says EDGE, and to start drooling when informed that UMTS is available in your area. Your idea of bling is getting your device signed by Jeff Hawkins. So of course you can’t have just the standard list of applications on your Treo. You need the kind of application list and demo potential that will immediately establish your dominance as the alpha geek you are and send the lesser geeks scurrying off for their sync cables. Here’s my list of ultra geeky stuff I’ve thrown on my 650 in preparation for the countless showdowns that seem to happen whenever some hapless person asks “so what do you use that thing for anyway?” at the Mobile Monday meetings.
Before we start off at all, let it be known that you will need an expansion card. Hard to say if it’ll be for documents or audio or video or applications. But you will need one, and probably pretty soon after you start throwing stuff into memory on the device. Like many of the Palm devices before it (and completely unlike the Clie I currently have, grrr) the Treo takes both Secure Digital (SD) and Multi Media Card (MMC) formats. So what kind of card do you want to use with this thing? The first misperception is that the Secure Digital cards will somehow make your data more secure than Multi Media card. Not true. The “secure” part of Secure Digital applies to content put onto the cards when they’re used as a distribution media. It’s DRM, and therefor it sucks. It does absolutely nothing for you, and will actually keep you from doing what you want in some cases. I get MMC instead of SD when all other things are about equal specifically to voice my opposition to DRM.
There is another reason to go with MMC if you use lots of gadgets. Newer phones and some cameras have started using something called RSMMC (Reduced Size MMC, it’s described in the Wikipedia article). No one really needs another format, so that’s kind of a pain in the ass. But at least they threw us a bone in that RSMMC cards can be snapped into a little adapter and used in normal MMC devices. That’s decent enough. And if you do use a bunch of devices it might be worth it to get the more expensive RSMMC so that you don’t have to get another card when you do start using an RSMMC device. Got it? BUT WAIT! Of course, now that we’re getting close to an obvious answer for the alpha geek multigadget folks, it can’t be that simple. Nokia has thrown in another twist. For some reason they decided that the physical compatibility available with MMC/RSMMC was an evil that needed to be dealt with, so they went out and broke electrical compatibility. Yay! I was really afraid that I was going to be able to use the same media format in more than one device, so thank you Nokia for putting those fears to rest. Nokia have introduced the Dual Voltage Reduced Size Multi Media Card (DV-RSMMC). Groan. Eyeroll. As you might expect, the format is backward compatible, but not forward compatible. If you have a DV-RSMMC you can use it in a RSMMC device or with the adapter in a normal MMC device. However, your normal RSMMC card will not work in some of the newer Nokia phones (such as the 6630 or the 6680, two devices you’re pretty likely to run across if you run with the Nokia pack as well). So the answer would seem to be getting the DV-RSMMC, but there are two problems. One, the DV version can cost more than twice as much as the standard version. Two, up until just a few days ago the largest size DV was 256 meg, and it’s still only 512. I’ve seen RSMMC in sizes up to 1 gig, and there might be bigger for all I know. So take the two times multiplier in price, limited availability, and current limit in overall storage capacity and you’re back to making a real value judgment. I went with a large RSMMC, it was relatively cheap and I was able to walk in to Fry’s and get one off the shelf.
So what is one to put on this neat little device bristling with unfilled megs of storage space? One could purchase all kinds of software from one of the online stores, there are literally thousands of titles spread across the different commercial online Palm stores. Yawn. Not my style. I recommend one of the Palm open source sites, like the aptly named PalmOpenSource.com for all of your code and coding needs. Here’s a bunch of stuff that I either had on my Clie and have moved over, or picked up recently.
FileZ actually isn’t open source, it’s freeware. But we’ll forgive it that shortcoming because it’s such a useful application and really a base requirement. It allows you to view a list all the databases in the built in memory and the files on the expansion card, get information and attributes, sort and filter, move, copy, or delete. Basic filemanager functions, for some reason not built into the Treo but definitely essential. The document reader of choice is Plucker. Plucker uses an optimized compressed document format, which is another way of saying “no, you can’t just transfer documents over from your desktop.” For Plucker it’s worth it however. Lots of content meant for the PDA is already available in Plucker format (open source projects do make their docs and readme files available in Plucker format frequently). And there are a bunch of Linux friendly tools available to convert files to Plucker format and crawl web sites to generate snapshots for reading offline. They have a bunch of interesting stuff in the samples area of their site if you’re looking for something quick to try out. Sites like MemoWare provide fantastic catalogs of free documents if you’re looking for content instead of generating it.

The most recent addition to my list of programs is TCPMP, a multiformat media player. It handles a bunch of audio and video formats. A lot of the video content I pick up off the net ends up being AVI, and I’ve had fantastic luck with that so far. Video has a lot of wow! effect even with the nontechnical crowd, so it’s just good stuff to have around to show off. And it works well as a podcast player as well, with support for mp3 audio content. I’m listening to a lot of audio on my daily trips on Caltrain, but I haven’t used it for long enough to get a feel for how the audio player impacts battery life. It does support background playback however. Startup a file and press the power button, the screen goes off and the audio keeps playing. The LCD is really the big power drain in Palm devices, so playing back with the screen off should buy you a lot of battery time. And speaking of commuting, for those in the Bay Area you’ll probably want to grab Caltrain+ and Quickplanner. Caltrain+ is a Caltrain schedule, and Quickplanner is a BART trip planner. Simple, but extremely useful to have. And finally there’s pssh for the time when you absolutely positively MUST SSH into some system right away. For some of us that’s pretty much a daily ocurance, so this is an extremely valuable tool. My personal favorite experience was SSHing into my server using pssh so that I could compile the palm chat application I was looking for and then moving it out to my public server so I could install it over the air. An excellent reason to do the happy dance. I’m not sure why they haven’t added a related question into the geek code, major oversight in my opinion.

Okay, all those are great tools and applications, we had a little productivity, a little entertainment. Now it’s time for some pure and unrefined nerditry. Welcome to on-device development tools. We’ll start off with my personal favorite, LispMe. LispMe is a scheme interpreter with extensions for the Palm platform. You can actually script up GUI applications, although you have to generate the resource files outside of the scheme environment. It does have sockets support, so scripting up little network apps is a cinch. LispMe has been around almost since the beginning of Palm time, fantastic app, but I would still replace it with Pippy in a heartbeat if Pippy were just a bit more up to date. Pippy is Python for the Palm, but it’s based on a very old (1.5.2) version of the language. Compiling the system and getting it working requires very specific versions of the Palm compile tools and a host system version of Python 1.5.2. The project is old however, and seems to be stalled. With all the geeks picking up 650s I’m really surprised no one has thrown down yet and picked up the project. Nokia has Python for the Series 60, it would be dead sexy if Python could be a cross platform dev language for mobile devices.

Right about now some of the old school hackers are saying something like “You people are all spoiled. Running dynamic languages on systems with megs and megs of storage space and more processor cycles than I can shake my walking stick at!” I’ve always had a soft spot for those guys. I do a lot of embedded systems work, and I got involved with personal computers when they did have just a few kilobytes of RAM (two kilobytes if you want to be precise). So I understand the yearning for the good old days when you flipped on your system and you were presented with a usable interface running out of a few K of prom. Fortunately when that urge hits you can just fire up Frodo and hack away on everyone’s favorite 6502 based micro. Frodo is a Commodore-64 emulator with support for saving multiple sessions and loading up disk images. The keyboard support used to be a little lacking on my TG50, but on the Treo it works fantastic. Finally, there’s the project that should not be. The Frankenstein monster of the development options - the OnBoardC suite of tools. Yep, that’s right. OnBoardC provides a C compiler, assembler for m68k, and a text editor app. All running on the device, so you can hack on the code, compile it, test it out, and end up with a real honest-to-goodness 68K palm application needing no support libraries or runtime environment. Unfortunately most work requires a commercial resource editor, but most of the time you’re not starting an application from scratch if you’re playing with OnBoardC. The toolset includes some host side scripts so that you can package up GCC or Metroworks based projects and work on them on your device when you’re on the road. The SrcEdit editor is a pretty decent general tool on it’s own as well, reading from and writing to a common Palm format called simply Doc. Apparently the world was a much simpler place when they came up with that name.

This isn’t a complete list by any means, just the stuff I happen to have with me most of the time. There’s a ton of stuff out there still. The Palm environment used to be a thriving ecosystem of open innovation and sharing, and I thought it was destined to become as widespread and strong as the Unix culture. Lately it’s been pretty dead however, and the old freeware and open source sites feel more like abandoned strip malls than hotbeds of innovation. Palm has a chance to get back into the game with the Treo 650. PDAs are a small and saturated market, but phones are seeing fantastic growth. If Palm can recapture the minds of developers the way it did with the early models of the Palm Pilot and ample support for the open tools used to hack it I think they could start making waves again.
