Using the ToDoList application to do a grocery list


Just doing the list is easy, the hard part is sorting by aisle number. This page describes the general procedure for doing the list, then using the Sort by Due Date capability to display the list sorted by grocery store aisle numbers. Some mention of the freeware Shopper application is made.


The techniques described here were developed on a HandSpring Visor Deluxe PDA, which uses an unalterable ROM containing version 3.1 of PalmOS. It is believed that the techniques described here should be generally applicable to all situations, but it should be noted that some adjustment may be needed for other devices or for later versions of the PalmOS system.

Basic Grocery List

One ToDoList item is created for each item on the shopping list. It is convenient to create a new "Groceries" catagory to segregate the shopping list from other to-do items. Before going shopping the "Show" button is used to get to the Preferences window. "Show Completed Items" is checked and Preferences is exited. All items will now be visible. If an item should be bought, it should be UNCHECKED. If an item is not to be bought, it should be CHECKED. Yes, this is counter-intuitive, but we are kluging here. A to-do item for X is interpreted as "make sure we have X", thus if we in fact DO already have enough of X the task is satisfied (therefore checked), and if we do NOT have enough of X the task is NOT satisfied.

When at the store, "Show Completed Items" is unchecked. Now only the unchecked items will be displayed. As each item is bought, it can be checked, and when checked the item disappears from the list. At the completion of the list, no items will remain unchecked. This is the basic procedure.

What about sorting by location?

It is possible to put the items into the list in the exact order they occur in the store. However, the synching process disturbs the order of the items. This falls out from the fact that the Palm OS "database" abstraction does not maintain a fixed record order, records in a database are seen as independant of each other.

It is possible to synch the database up to a Palm Desktop, export the items to an ASCII file, manually sort the items in the desired order, purge the database on the Palm Desktop, import the manually sorted file back into the Palm Desktop, purge the database on the PalmOS device, then synch the items down to the PalmOS device. However, synching still disturbs the item order.

The idea currently under investigation is to set the "Sort By:" (in Preferences) to "Due Date, Priority", then supply a set of ersatz due dates to force the sort to the desired order. (Another idea is to sort by "priority", but there are only 5 levels of priority, so at best this would allow ordering by 5 "zones" in the store).

Since the store I use has 24 aisles it is convenient to assign one day of the month to each aisle. That is, items stocked in aisle 2 have a due date of 4/2/2001 and and items stocked in aisle 24 have a due date of 4/24/2001. The "Show Due Dates" box can be checked in Preferences to show the due dates on the right side of the display.

What about aisle zero?

So we would like to assign aisle zero to the fresh produce section of the store, which logically comes before aisle one. It doesn't let us give zero as a day of the month. We could always use January for aisle zero, February for the numbered aisles, and March for batteries and silly gossip magazines?

Kvetches, kvetches!

The month shows on the due date display. If the due date happens to be a current date, it shows up on the calendar application. If we use a date safely in the past, an exclamation point shows on the due date display. We could set it safely in the future (10 years from now) but then 10 years from now we would have to push it even farther into the future. And it is inconvenient to set far future dates. Of course, the aisle number could be added to the item name, so the due date would not need to be displayed, but then the item name would have to be adjusted (in tandem with the due date) when the stock moves in the store.

What about Shopper?

There is an application specifically for this purposea written by Andrew Webb at ParticleSoft. We have been in correspondance as to a desired feature set. The application is presently somewhat rudimentary, but he says aisle numbers will be added in some future release. For now the items are displayed alphabetically, so one could impose an ordering by appropriate naming of the items. For example, 00 Apples, 01 Milk, 02 Spaghetti. Note that without the leading zero an alpha sort gives the inappropriate sequence: 1,10,13,14,15,2,22,24,26 so putting on the leading zero forces a numeric sorting order.