Last updated January 1st, 1999. See the ReDo Information web page for the latest version, registration, bug reports, or other information, or send email to rhuebner@probe.net.
ReDo cures a serious lack in the built-in To Do list: the inability to schedule recurring reminders. It adds a powerful and flexible repeat capability to the To Do list program, so that you can set up reminders that automatically insert themselves into your To Do list on any required repeating basis. ReDo can remind you to take out the trash every Thursday, pay your bills on time each month, or start on that sales report 3 business days before the end of each quarter. You can even set an alarm to go off if you haven't checked off a reminder by a specified time. If you use the To Do list (or would, if only it were more powerful), you need ReDo.
I decided to write this utility the first time I had to manually cut & paste a reminder from the Date Book to my To Do list. It's the one feature from my old HP 200LX that I missed the most.
ReDo allows you to easily add, edit, schedule and delete reminders using much the same interface look and feel as the built-in To Do program. It creates and maintains a separate database containing descriptions of future To Do items and a schedule of when they should be added to the To Do list. It then uses the Pilot's "silent alarm" feature to automatically wake itself up on the next day when a reminder is scheduled to be added, updates the To Do program's database, reschedules its next wakeup call, and then turns the Pilot back off again.
The net effect is that scheduled reminders simply appear automagically in the To Do list when appropriate. After any new items are added to its database, To Do is requested to re-sort its list, so that the new reminders appear in their correct position according to whatever To Do sorting method you've chosen.
Please note: ReDo does not replace To Do, and does not display or import To Do items into its list. It maintains a completely separate database of reminders which are not yet due to be shown in the To Do list, with a schedule for each reminder which tells it when the reminder should be copied to the To Do list. The first time you run ReDo, the display will be empty. This is normal. Enter a reminder into ReDo and set the schedule for when you want it to show up in the To Do list. When that date rolls around, ReDo will insert a copy of the reminder into the To Do list for you to check off. (As you can probably tell, I've had some difficulty making this scheme of operation clear, and have gotten quite a few questions, but I'll keep trying...)
Notes on the "silent alarm" wakeup: ReDo will only schedule a wakeup alarm for those days when a new reminder needs to be inserted into the To Do list. To be precise, it schedules a single wakeup alarm for the next day on which a reminder needs to be inserted, however many days from now that single alarm might happen to be. Every time you run ReDo (or it runs itself), it updates the To Do list and then reschedules the alarm for however many days hence the next reminder will come due. This way, ReDo never turns on your Pilot when it doesn't need to.
The Quick Sleep option tells ReDo to immediately turn your Pilot off after updating the list. Since the update usually takes under a second, this means your Pilot will wake up and then shut itself off again so quickly that if you blink, you'll miss it. While this is normally a Good Thing, if the wakeup alarm were to go off while you were already using your Pilot you might find it annoying to have it shut itself off in your face, so I've made it optional. Unless, that is, you've used a utility like FpsUtil to set your auto off time to Never, in which case ReDo will always shut it off for you.
If you turn the Quick Sleep and Launch To Do options both off, ReDo will update the list so unobtrusively that you could be using it at the time and not even notice, except for a slight pause at the precise moment of update. However, ReDo does need exclusive control of the To Do database file while it updates, so if you happen to be running To Do (or another program which uses the To Do list, like Agenda) at that time, ReDo will take control away and then re-launch To Do after it completes, regardless of the Launch option setting. Normally, this will just mean that your To Do screen will momentarily blank out and then redraw itself with the new reminders in place (which is actually kinda cool to watch...).
ReDo has been extensively tested with the built-in Security app lockout feature, PowerHack 0.91, and CheckIn 0.61, with no problems found. ReDo can update the To Do list even while your Pilot is locked, without disturbing the lockout screen which will be waiting for your password. If you selected the Launch To Do option, To Do will be launched whenever you unlock your Pilot.
I think that covers all the issues, but if you have any questions or problems be sure and let me know.
Use the Install Tool of your PalmPilot Desktop software package to install ReDo.prc onto your PalmPilot. If your Pilot uses an OS version prior to 2.0.3, you then must change the Pilot's time or perform a soft reset after installation to reset all pending alarms. This is required to prevent a possible crash when the alarm goes off; see Known Bugs for details.
Note: Except for the special case of version 1.3, where ReDo was consolidated into a single .prc file, you should not delete ReDo from memory when upgrading to a newer version. Just use the install tool to install the new version of the .PRC file over the old one. If you delete ReDo, your database of reminders is automatically deleted along with it. If you do this by accident, you can use the install tool to re-install the ReDoDB.pdb file that was backed up into your C:\Pilot\username\Backup directory.
If you decide to uninstall ReDo, use the Memory application to delete it, and then once again, if you're using an OS version prior to 2.0.3, you must change the Pilot's time or perform a soft reset to reset all pending alarms. The reminder database is tied to ReDo, and will be automatically deleted when ReDo is deleted.
No changes need be made to To Do during either installation or removal of ReDo.
For consistency and ease of use, ReDo uses as much of the look and feel of To Do as I could manage. It's not a replacement for To Do, however; it's an enhancement to it. You can think of ReDo as an additional window of the To Do app. It allows you to display and schedule upcoming reminders, while To Do allows you to display and check off current reminders.
ReDo's main display shows a scrollable list of all reminders in the currently selected category. The first column of the display shows the priority of each reminder. The middle column shows the reminder's descriptive text, with a small Note icon appearing if a note has been attached to the reminder. The last column of the display shows the next date when each reminder will be inserted into the To Do list. The display starts out sorted by date, with the reminder which will be inserted earliest at the top. To avoid confusing list shuffling, new reminders are simply added to the bottom of the list, and aren't sorted into position until the next time you run ReDo.
To create a new reminder, tap the New button at the bottom of the display. A new, empty reminder will be added to the list, with the cursor positioned in the text field ready for you to begin writing. If you already have a record selected before tapping New, the new record will copy all of the selected record's settings; otherwise, it'll start with standard default settings. When you're done writing, tap on any blank part of the display outside the controls to de-select it. As with the To Do app, you can also create a new reminder by simply beginning to write it with no current reminder selected.
You can set an alarm for a reminder by including a time field with the format "NLT hhmm" in the descriptive text, where NLT stands for "No Later Than", and hhmm is a time of day in 24-hour format. For example, the reminder "Take out trash NLT 2200" will sound an alarm at 10:00 PM on the day it's due, unless you check it off the To Do list before then. The alarm will sound up to 5 times, 30 seconds apart, and then the auto-off timer will turn off the Pilot. If you've set your auto-off timer to Never, ReDo will change it back to the default of 2 minutes when the alarm sounds to prevent battery drain. For the alarm to work, you must specify a due date for the reminder using the Details window, and you must enter the time field in the exact format shown, with NLT, a single space, and a 4-digit time from 0000 to 2359. Please note that the alarms are only checked and updated when you exit the ReDo program. If you enter a new reminder with an alarm, it will not take effect until you switch to some other program. You can also manually add or edit a time field in an existing To Do list entry, but again, the change will not take effect until you run ReDo and then exit it again.
Most of the buttons and menu commands require you to have selected an item from the list before invoking them. You select an existing reminder by tapping anywhere in its text field. When an item is selected, the priority number in the first column will be shown in reverse video.
Once you've selected an item, you can tap on the Details button to change the item's settings, delete it, or edit an attached note. Tapping on the Repeat button lets you schedule when the item will be inserted into the To Do list. You can also tap directly on a priority number in the first column to change it using a drop-down list, tap on the Note icon for any item with an attached note to go directly to that note, or tap on the next date for any reminder to reschedule that item.
The Details window is where you control all of the settings concerning a reminder except when it should be inserted into the To Do list. These values will be used for the new To Do list item whenever the reminder is inserted.
Priority selects the importance of the reminder, with 1 being the most important. This is mainly useful when To Do is set to sort its list by priority.
Category sets the category of the reminder, using whatever categories you've got defined. The first time you run ReDo it copies its category list from To Do. Any changes you make to the To Do category list after that must be re-entered into ReDo to be available there, and vice-versa. This is because there's no safe way for ReDo to tell what changes you may have made in To Do; for example, it couldn't tell whether you'd merged two categories together or simply deleted one of them. New reminders start out set to the category you're currently viewing, or to Unfiled if viewing All.
The Due Date field determines what due date the new To Do list item will be assigned, if any. You can select No Due Date, When Added, 'N' Days After, 'N' Days Before, or As Needed. When Added causes the due date of the new To Do item to be set to the day the item was inserted. 'N' Days After sets the due date to some specified number of days after it was inserted. 'N' Days Before causes the item to be inserted into the To Do list some specified number of days before the scheduled Repeat date. As Needed allows manual selection of unschedulable reminders. Note that when using the Days Before option, the Repeat window is used to schedule the Due Dates of the reminders, and the reminders are inserted relative to this Due Date. This is different than the other settings, where the Repeat window is used to schedule the date of insertion, and the Due Date is relative to this insertion date.
The Days After and Days Before settings allow the choice of using normal days or Business days. If Business days are selected, only the days Monday through Friday will be counted when computing the relative date. For example, if you set the Due Date to 3 Business days after a Wednesday, it will be set to the following Monday instead of Saturday. If you set it to 3 Business days before a Wednesday, it will be set to the previous Friday instead of Sunday.
The As Needed setting is for reminders which are random in nature and aren't automatically repeatable. Instead of using a Repeat schedule, As Needed reminders display a check box in the date field. When you exit ReDo, any As Needed reminders that are checked are added to the To Do list and then unchecked again. This is perfect for grocery lists, but can be useful for other types of unschedulable but recurring reminders as well.
The Private flag is used to determine whether this reminder and any new To Do items generated by it are secret or public. If marked Private, the reminder and any items it generates won't be visible unless the Security app has been set to show private records. ReDo displays or hides private records correctly on either OS version 1.0X or 2.0.
To delete a reminder, tap on the Delete button at the bottom. A reminder can also be deleted by using the Delete Item menu command from the main display, and it'll be automatically deleted if it contains no description text or note when you de-select it in the main display.
You can create or edit a note attached to the current reminder by tapping the Note button. This brings up the full-screen note editing window, which works just like the Memo List app. You delete an attached note by tapping the Delete button at the bottom of the Note editing window. You can also attach or delete notes from the main display with the respective menu command.
The Repeat window is where you schedule the reminder for insertion into the To Do list. Instead of using multiple windows with different sets of controls for each kind of repeat period, ReDo uses a single, unified window with enough power and flexibility to allow setting almost any kind of repeating schedule. Don't worry, it's really not as complicated as it may first appear.
The basic idea behind ReDo's scheduling system is for you to describe what qualifications any given day has to meet to cause a reminder to be added on that day. All of the various qualifications are cumulative; all criteria must be met for a day to qualify (note the 'and' in each item's label). If a particular kind of requirement is irrelevant to the current reminder, just select or include all its possible values to remove it from consideration.
The Repeat Every 'N' Matches field lets you skip otherwise qualified days, to allow a reminder to be inserted every other, every fourth, etc. matching day.
The From and To fields set the overall time span for the reminder. The reminder will be inserted for the first time on the first matching day on or after the From date, and will be inserted again every 'N' matching days after that as specified in the Every field. Setting the correct From date is especially important when you're skipping matches; you should select the first date that you want the reminder inserted, so that it starts out properly synchronized. If a To date is specified, the reminder will be automatically deleted from the ReDo database after being inserted for the last time on or before that date; that is, whenever the next matching date would be after the To date.
The Dates Are field lets you select certain dates of the month as valid. Since 31 pushbutton boxes would have taken up too much space (and been a real pain to use), you enter the valid dates in text form. Enter a list of dates, specified singly (5) and/or in hyphen-separated ranges (1-10). Multiple dates or ranges can be separated by blanks or any other (non-hyphen) punctuation. For example, '1-31' allows any date; '10 12' allows only the 10th and 12th of each month; and '2-6,12,14' allows the 2nd through the 6th, plus the 12th and 14th. The date '31' is special; the last day of any month is considered valid when 31 is valid.
The Weeks Are field selects which of the 5 possible occurrences of a particular day of the week in each month to consider valid, and works in conjunction with the Days Are field below it. This is used to select combinations like the first Sunday, fourth Friday, or last Monday of the month. The 'L' button selects the Last such day in the month, whether it's the fourth or fifth one.
The Days Are and Months Are fields restrict the reminders to certain days of the week or months of the year. Just select which days and months are valid.
To see how the current settings would actually work if used, tap the Results button. ReDo will display a list showing the date(s) when the current reminder would be inserted into the To Do list, and what due date would be assigned each time, if any. This provides an easy way to verify that you're really selecting the days you wanted, and that your current settings will do what you thought they would.
When you've set all the criteria for the reminder, tap the OK button at the bottom. If you've somehow managed to select contradictory requirements that can't be matched (Every February 30th), you'll be notified with an error alert and will stay in the Repeat window so you can fix it. Each requirement type must have at least one valid selection chosen, or it'll obviously be impossible for any date to satisfy it. If your scheduling criteria are OK, you'll return to the main display, and the date column for the reminder will show the updated next date on which the reminder will be inserted.
The PalmPilot Desktop software creates a directory named something like C:\Pilot\<username>\Backup, and stores backup copies of your system preferences and other settings there whenever you Hotsync. ReDo marks its reminder database as requiring this kind of backup, so all of your reminders will be automatically backed up as a file named ReDoDB.pdb in this directory. Warning: Hotsync version 1.0 has a bug which causes it to only back up the first 32 files installed on your Pilot. Anyone still using 1.0 should consider getting the free 1.1 upgrade from USR's web site, especially if they have a lot of stuff installed.
Should your Pilot require a hard reset or suffer battery failure, it could lose its memory. If this happens, just do a Hotsync after fixing the problem, and all files in the backup directory will be automatically reinstalled. What many don't realize is that you can stick application .PRC files into this directory yourself, and they'll be automatically reinstalled after the reset as well. The only problem is that the apps you put there are deleted after the restore, so you'll need to recopy them back into the backup directory again afterwards.
What I've done on my system is create a C:\Pilot\Huebner\Apps directory, and whenever I find a new app that I want to keep around, I copy it into this directory and into the Backup directory. If my Pilot loses its memory, I do a Hotsync and everything is automatically reinstalled. Then I just copy the contents of the App directory back into the Backup directory so that it'll be ready again for the next time.
If your Pilot loses its memory and you haven't prepared like this, it's not a disaster; it just means you have to go back and re-install all the .PRC files you had before using the Install Tool. It's a drag, but no real loss. Either way, your reminders will have been automatically backed up and then restored, giving you one less thing to worry about.
As you'd probably expect after reading this far through this nice manual I went to the trouble of writing, ReDo is shareware. It's not, however, crippleware or constantly-in-your-face-ware or even plead&whineware. I don't like those sorts of programs when I download them, so I won't distribute one myself. The only "persuasion" ReDo applies is that it will discreetly and tactfully remind you to pay for what you've gotten every couple of weeks. I figure this is enough to help the decent people who intend to pay for it (eventually) remember to do so, whereas no amount of goading and kvetching will impress those who've consciously decided to steal it.
If you like ReDo enough to give it a permanent home in your Pilot, you may register it for the entirely reasonable low price of $10 to $12 US (depending on processing surcharge). Registered users will receive a code to turn off the registration reminders (which will work with all future updates), and are automatically notified by email when new versions are available. They also enjoy the smug satisfaction of knowing that they're helping to encourage the production of fine software like this for their Pilot, and (more to the point) that they're helping to encourage me to continue supporting and improving it instead of giving up on the whole thing in disgust.
In an attempt to make it as easy as possible for you to give me your money, I've set up 3 ways to register ReDo. The cost of registration varies somewhat depending on the method used. I'm charging such a low price for my software that I can't just absorb the stiff fees some payment processing companies impose, but rather than raise my prices across the board, I've decided to pass on my cost of using each payment system and let you choose for yourself.
Rick Huebner
5932 Lomita Verde Circle
Austin, TX 78749-4203If you send cash, use an opaque security-printed or brown paper envelope so you won't tempt the mail handlers into theft. Specify which of my programs you're registering, the name you wish to register it under, and please include an email address so I can send you your registration code and update notices. Your email address will never be given to anyone else, nor used for any other purpose.
ReDo is protected by copyright law, and is licensed, not sold. You're allowed and encouraged to use and redistribute ReDo in its original form, as officially distributed by me, but not to distribute registered or modified copies. You're allowed to use but not distribute one registered copy per registration fee paid. ReDo is guaranteed to work pretty much as described in this documentation, with no seriously impairing bugs, or I'll fix the bug or return your money. No other warranties or remedies are applicable, so don't go using this as your only reminder for your kid's dialysis treatments.
SOFTWARE PRODUCT LICENSE. This software is protected by copyright laws and international copyright treaties, as well as other intellectual property laws and treaties. It is licensed for use, not sold. You are allowed to use and distribute the software in its original, unmodified form as desired. You are limited to one registered copy of the software per registration fee paid, installed on a single PalmPilot organizer at any one time. You may not reverse engineer, decompile, disassemble, or modify the software. LIMITED WARRANTY. I warrant that the software will perform substantially in accordance with these accompanying written materials when installed on a PalmPilot organizer running OS versions 1.0 through 3.0.1. CUSTOMER REMEDIES. My entire liability and your exclusive remedy shall be, at my option, either (a) return of the price paid, or (b) repair or replacement of the software that does not meet this Limited Warranty. This Limited Warranty is void if failure of the software has resulted from accident, abuse, or misapplication. NO OTHER WARRANTIES. To the maximum extent permitted by applicable law, I disclaim all other warranties, either express or implied. NO LIABILITY FOR CONSEQUENTIAL DAMAGES. To the maximum extent permitted by applicable law, in no event shall I be liable for any damages whatsoever arising out of the use of or inability to use this product. My entire liability under any provision of this agreement shall be limited to the amount actually paid by you for the software.
Important Note: There's a problem with the way Pilot OS versions prior to 2.0.3 handle alarms. To avoid problems, you must force the alarms to be reset after any program that uses alarms is installed or deleted. This can be done by changing the time or date on the Pilot (you could just set it ahead a minute and then back again), or by doing a soft (paperclip) reset. Failure to do this could cause a fatal error when the alarm is triggered! OS version 2.0.3 corrects this problem, and no reset or time change is required if you're using that version or later.
For those who care, here are the details: When a program requests a wake-up alarm from the OS, it has to tell the OS who it is and what time to wake it up. Fair enough. However, the OS call for setting the alarm requires you to tell it who you are by giving it a database ID based on your current memory card address, rather than your application creator ID code as it obviously should. When the alarm comes due, the OS tries to wake you up by using the specified database ID. But... if the app has since been deleted or reinstalled, that database ID may no longer be valid, causing an Invalid Handle error. Changing the time or doing a soft reset flushes all pending alarms out of the Pilot, and causes the Pilot to ask each app to re-establish any alarms it needs. Apparently, the OS designers weren't expecting any user-installed programs to use alarms for anything. Of course, it's no problem for Date Book, since it's in ROM and its address can't ever change. OS version 2.0.3 has been fixed to safely ignore these invalid alarm addresses.
Version 1.44, November 8th, 1998: Fixed Fatal Error after HotSync problem introduced in version 1.43.
Version 1.43, September 7th, 1998: Fixed the display of private records under Palm OS 3.0+.
Version 1.42, June 28th, 1997: Alarm improvements. Added a configurable Snooze button, and fixed the OK button to no longer mark the item as completed.
Version 1.41, June 21st, 1997: Removed the automatic soft reset upon installation, since it caused problems for some users and is no longer required with OS 2.0.3 or later anyway. Also, if a reminder is already selected when the New button is tapped, the new record will copy all of the selected record's settings.
Version 1.4, June 15th, 1997: Reminders can now sound an alarm if not checked off by a specified time on their due date, added a Results button to the Repeat window which shows the To Do list insertion dates and due dates which would result from using the current Repeat settings, and changed ReDo to automatically perform a soft reset upon installation (like an OS patch) to help prevent the OS alarm bug.
Version 1.34, May 8th, 1997: Added a Preferences setting for the default priority to be assigned to new items, and fixed a problem with displaying items which are more than 11 lines long.
Version 1.33, April 28th, 1997: Made the new "toggle all" buttons larger in the Repeat window so they work better with the preliminary 2.01 Tap Bug Patch, and fixed a stupid "Error opening DB" problem caused when the update alarm was triggered with ReDo already running.
Version 1.32, April 24th, 1997: Added some convenience options to the From and To popup lists in the Repeat window, plus buttons for setting or clearing each type of selection box as a group. Also fixed a problem with not updating the To Do database after jumping into ReDo from the Find app, and an "Error opening DB" problem caused by attempting to update ToDoDB when it's already exclusively opened by another app.
Version 1.31, April 18th, 1997: Added a Preferences menu command, where you can set the time of day which ReDo will use for its silent alarm, choose whether to have ReDo turn off the Pilot immediately after updating the To Do list instead of letting the auto off timer do it, and choose whether or not To Do should be launched after the update.
Version 1.3, April 15th, 1997: Important Change: Eliminated ReDo Check entirely, and adopted a new method of automatically inserting To Do items at midnight using a silent alarm. This solution is superior to the shim program trick in every respect: easier installation, less memory used, no more category changing delays or problems, and you don't have to remember to press the button before running Agenda or other programs which share the To Do list. This also has the nice side benefit of putting the To Do list on screen when any reminders are added, so you'll see it first thing when you turn your Pilot on. More cautious (prudent?) users might want to hold off installing this for a few days, due to the unavoidable dangers inherent in my making such a fundamental change to the code. I've tested it, and I think it works, but I can't wring it out as thoroughly as a couple thousand of you will.
Special instructions for upgrades to version 1.3 or later from versions 1.21 or earlier (not necessary for other upgrades):
Version 1.21, April 12th, 1997: Fixed the scroll up and down buttons to work a page at a time on the main display (the arrows still go one item at a time), and added automatic upshifting of the first character entered into new reminders or notes.
Version 1.2, April 10th, 1997: Added a new category of reminders; As Needed. This is for reminders which are random in nature and aren't automatically repeatable. Instead of using a Repeat schedule, As Needed reminders display a check box in the date field. When ReDo Check runs, any As Needed reminders that are checked are added to the To Do list and then unchecked again. This is perfect for grocery lists, but can be useful for other types of unschedulable but recurring reminders as well. Also added alphabetical sorting of items with equal dates (or check boxes).
Version 1.13, April 10th, 1997: Switching categories with the To Do button no longer hangs if your Unfiled category is empty. Inserted reminders are now always assigned to the correct category, even if ReDo and To Do's category lists don't match. Taps in the title area of the main window no longer deselect any current record, so now ReDo works well with MenuHack. Added a couple of missing Graffiti shift indicators.
Version 1.12, April 8th, 1997: Fixed a problem introduced in version 1.11, where fixing the use of the Business Days Before Due option screwed up the default From date in the Repeat window. My apologies for any trouble this caused. Also fixed changing categories with the To Do button so that the categories are stepped through in alphabetical order instead of actual category number order, and fixed a problem with undesired category switching when using the To Do button to turn on Pilots running OS 2.0.
Version 1.11, April 8th, 1997: Fixed a problem with the new Days Before Due option, where sometimes the use of business days instead of normal days caused the reminder to be scheduled incorrectly.
Version 1.1, April 7th, 1997: First significant enhancement. Added the ability to have new To Do items inserted a specified number of days before a scheduled Due Date, and the ability to select either normal or business days for computing the relative date. Also fixed a problem with jumping to the located text after doing a Find, and a rare problem with updating the display after using the Delete Note menu command..
Version 1.02, April 5th, 1997: Fixed the To Do button's ability to be used for changing categories. I can't test directly whether it was pushed while in To Do (only To Do can do that, and it's not telling), but I can check how long ago To Do last finished running and closed its database. If that was within the last second, we must have jumped straight from To Do to ReDo Check, so I increment To Do's current category instead of checking for reminders to add. You need to push the button an extra time to get it to register, but in general it works pretty well. Also squashed a bug which bit if you went directly from a totally empty reminder to the Delete Item menu command.
Version 1.01, April 3rd, 1997: Error fixed where while in the Details window, if you brought up the Due Date drop-down list and then clicked outside of it instead of selecting an option from it, you caused a soft reset. Same problem also fixed in the date drop-downs in the Repeat window, where it caused the date selection dialog to be mistakenly invoked.
ReDo version 1.0, April 3rd, 1997: Original release.