💾 Archived View for alextheuxguy.mooo.com › 2023-07-12.gmi captured on 2023-07-22 at 16:24:36. Gemini links have been rewritten to link to archived content
-=-=-=-=-=-=-
I'm releasing my first Palm OS application, a weight tracker for Palm OS >=3.0.
You might be asking a few questions, like how did I write an app for Palm Pilot? And why, when the platform has been dead for 15 years? But first, the app itself!
Weight Tracker provides a simple interface for setting a goal weight, and tracking your progress towards that goal each day. Some features to note:
Weight Tracker is free & open source software. You can download the latest release and view the source code on GitHub.
Why did I spend the time to build an app on a dead platform? Simplicity! Let me explain.
Modern smartphones have tons of features (not to mention tons of available weight tracking apps). But with that comes a constant source of distractions and features that get in your way.
Notifications, advertisements, tracking, etc. The Palm Pilot has none of that. It does what you need it to do, and nothing else. It has limited storage, no notifications, no tracking, not even an internet connection.
Thanks to that, I find myself being more focused when using the device, not to mention getting days of battery life (and it's quite a bit lighter than my iPhone).
This is why I have started creating apps for the platform, it's simple to use. Palm OS stays out of your way, let's you accomplish what you need to do, and go about your day.
Weight Tracker was created using a now defunct IDE, Handheld Basic++ (HB++), developed by Peter Holmes Consulting and released in 2004 (I think). I found a copy of the IDE on PalmDB, a website dedicated to archiving Palm OS software.
HB++ used an object-oriented BASIC language and compiles to native 68k code, resulting in very performant apps.
Although the HB++ website is long gone, I tracked down the documentation site on archive.org, and leveraged the included samples to figure out the SDK.
Development in HB++ was surprisingly easy. The language supports modern features (relative to say Atari B.A.S.I.C.), such as classes, enums, events and databases.
The HB++ IDE includes visual editors for UI and database tables, as well as a Palm Pilot simulator.
Here are a few interesting features of HB++ that I worked through.
For Weight Tracker, I save each entry in a "RecordSet", a class for interacting with a database table. RecordSet works by opening a table in the specified mode (read, write, both) and points to the first record in the table.
To read each item, you grab fields directly off the RecordSet class. You then move the pointer forward to the next record until "EOF" is true.
Updates involve changing a record's fields, then marking the record as "dirty" and performing an "update()".
An interesting feature of tables in Palm OS is the ability to mark fields to be backed up during the HotSync process.
HotSync is a Palm feature where you connect your device to a computer and sync the
data from your PDA to your PC. Marking a field for HotSync means the data will be preserved on your PC in the case that your Palm Pilot experiences data loss.
Storing preferences in HB++ involves serializing properties into the system preferences for the app.
I believe this is a Palm OS feature, as a developer you simply read or write your serialized stream into the preferences object.
Palm OS provides a defined UI kit that includes buttons, checkboxes, popups, modals, form elements and a few others. This common UI kit ensures apps follow the design language of Palm OS, including the theme tint set in system preferences.
This enforced consistency is a huge benefit of Palm OS, a refreshing change from the world of every app looking different thanks to things like React Native.
Laying out user interfaces in Palm OS is more free-form than modern app frameworks. For example, one thing I was surprised by is being able to drop any control into the titlebar of a form.
In iOS, you can place specific actions in this area, but in Palm OS you can drag and manually position whatever you would like.
In Weight Tracker, I placed a "popup" control in this area to allow the user to switch screens.
Popup control in Weight Tracker
HB++ has a nice article in the documentation about Palm OS UI guidelines. A few things that stood out to me:
I love these callouts, they reinforce the nature of the device and the ways and places someone might use it. Don't distract the user, focus on content, allow things to be done quickly and frequently.
A lot of these guidelines seemed to have been lost in modern app development. A modern app might not work on the subway because it requires a constant internet connection. Modern apps are filled with
decorative images and other elements. Completing a task is often not the focus of a modern app, because that would mean less engagement and, in turn, less ad revenue.
I've got a few extra QoL things I want to add to this app, but for the most part it does what I want it to do and therefore is feature complete.
The next two apps I'm looking to create are a bookmark manager and a markdown based editor. I've also had my sights set on creating something for Gameboy Advance, stay tuned!
---
Enjoyed this article? Reach out!