Alarmist 2.0 docs Alarmist allows the user to schedule an arbitrary number of alarms for arbitrary times in the future. The alarms will wake a sleeping Newt and can play various sounds and display various messages. The alarms may be scheduled to repeat at particular intervals and various aspects of their annoyingness can be adjusted with preferences settings. This version of Alarmist is rather larger than previous versions (it's about 215K on Newt vs. about 135K for version 1.11). MP0 and MP100 users will probably want to store it on a card, and some folks won't want to devote that much space to an alarm clock, however cool. I do intend to continue to support version 1.x as a sort of Alarmist "lite". ------------------------------------------------------------- Revision history of documentation 10/19/94 Updated docs to reflect new features in version 2.0, adding subsections in the Using Alarmist section on preferences and repeating alarms. Made numerous small changes describing new or changed features. 08/15/94 Changed docs to reflect new settings for A Lot alarm. 08/07/94 Changed Using Alarmist section to reflect new interface for saving alarms and describe new Try Sound button. Changed phrasing in a couple of places in an effort to be clearer. 06/13/94 Tweaked for version 1.00 release. 06/10/94 Added description of partial incompatibility with SleepAid in Known problems and limitations section. 05/28/94 Added short description at the top and added caution about running batteries down in the Important cautions section. Generally cleaned up the cautions section. Filled in section about pricing. 05/25/94 Fixed typo. 05/19/94 Added new section, If an alarm is missed altogether, in the Using Alarmist section, describing the floater that appears at power on if any alarms have been missed. 05/16/94 Changed section about one alarm interrupting another to reflect new way of handling that. Changed a few words in the Support section. Removed bit about default message. 05/12/94 Fixed a couple of typos and deleted one irrelevant phrase. 05/11/94 Initial beta docs. ------------------------------------------------------------- Contents Blurb Revision history of the docs Contents Important cautions (really!) Legal stuff Introduction Support Price Using Alarmist Known problems and limitations Plans for the future Revision history of the program Acknowledgments ------------------------------------------------------------- Important cautions When you install Alarmist, it adds additional alarm functionality to your Newt. A set of supplementary system routines from Apple is added to your Newt's system software if it's not there already. (As of this writing, no version of Newt's system software that I know about includes the alarm functionality, so the extension to the system software will be installed on your MP0, MP100, or MP110. I don't know whether or not the MP120, which is available only in Germany as of this writing, has the improved alarm code built in.) This installation happens only once even if you install several apps that make use of alarms, but it does consume about 4K of your Newt's internal store. (The internal store is the memory available to hold packages and soups and the amount free is shown when you tap Extras, Prefs, Memory.) If you can't afford to give up 4K of the internal store, don't install Alarmist. (Note that it is unwise to fill your internal store entirely; it is wise to keep at least 10-20K free.) You can delete Alarmist in the usual way and get back the large majority of the space it took up (see the subsection Deleting Alarmist in the Using Alarmist section for details), but the only way to get the 4K of your internal store back is to do a reset with Newt's power switch held down. Doing that will erase all the data in your Newt! If it were possible for the app to remove the alarm functionality, I would give you the option of doing so, but I can't. If you wish to try Alarmist out and are not sure that it will fill your needs, you should make a backup of the data in your Newt (preferably more than one, each stored in a separate place) using Newton Connection, then install Alarmist and try it out. If you find that you don't like the app and want to get the 4K back, you will need to do the "hard" reset and restore all your data from the backup. Naturally, if there's anything wrong with your backups, you are out of luck. Though Alarmist has been tested with some care, it is not guaranteed to work properly (see the license below). If, for some reason, it doesn't work properly and you oversleep and lose a zillion-dollar (franc, pound, yen, mark, lira, etc.) contract, don't blame me. Please do tell me what has happened so that I can fix the app so that it doesn't happen again. Since it is Alarmist's job to get your attention, it is going to have to spend Newt's battery power to do that. It is quite possible to set alarms that will cause Alarmist to run Newt's batteries down to nothing if you ignore them for long enough. See the section Using Alarmist below for more details. Since Alarmist warns you of any missed alarms when you turn Newton on, some code from Alarmist must run each time you turn Newton on. I believe that the code is clean, but it's pretty well impossible to be absolutely sure that nothing could ever go worng or conflict with it. Please also see the Known problems and limitations section below for other issues you should be aware of. ------------------------------------------------------------- Legal stuff Alarmist (the software that this documentation describes) and this documentation are all Copyright 1994 Matthew Dixon Cowles and his licensors. All rights reserved. Apple, Newton, and Newton Connection are trademarks of Apple Computer, Inc., registered in the United States and other countries. NewtonMail and MessagePad are trademarks of Apple Computer, Inc. Here is the software license that Apple Computer, Inc. requires that Newton software written with the Newton Toolkit carry. It isn't exciting reading and it exhibits lawyers' curious use of capitalization, but I advise you to read it since it does apply to all users of Alarmist. 1. License. The application, demonstration, system and other software accompanying this License, whether on disk, in read only memory, or by any other media (the "Software"), the related documentation and fonts are licensed to you by Matthew Dixon Cowles. You own the media on which the Software and fonts are recorded but Matthew Dixon Cowles and/or Matthew Dixon Cowles's Licensor(s) retain title to the Software, related documentation and fonts. This License allows you to use the Software and fonts on a single Newton Product (which, for the purposes of this License, shall mean a product bearing Apple's Newton logo), and make one copy of the Software and fonts in machine-readable form for backup purposes only. You must reproduce on such copy Matthew Dixon Cowles's copyright notice and any other proprietary legends that were on the original copy of the Software and fonts. You may also transfer all your license rights in the Software and fonts, the backup copy of the Software and fonts, the related documentation and a copy of this License to another party, provided the other party reads and agrees to accept the terms and conditions of this License. 2. Restrictions. The Software contains copyrighted material, trade secrets and other proprietary material and in order to protect them you may not decompile, reverse engineer, disassemble or otherwise reduce the Software to a human-perceivable form (does not apply to users with source code licenses for Alarmist). You may not modify, network, rent, lease, loan, distribute or create derivative works based upon the Software in whole or in part. You may distribute for a nominal download or duplication charge at most Alarmist. Except for that exception, you may not electronically transmit the Software from one device to another or over a network. 3. Termination. This License is effective until terminated. You may terminate this License at any time by destroying the Software and related documentation and fonts. This License will terminate immediately without notice from Matthew Dixon Cowles if you fail to comply with any provision of this License. Upon termination you must destroy the Software, related documentation and fonts. 4. Export Law Assurances. You agree and certify that neither the Software nor any other technical data received from Matthew Dixon Cowles, nor the direct product thereof, will be exported outside the United States except as authorized and as permitted by the laws and regulations of the United States. If the software has been rightfully obtained by you outside of the United States, you agree that you will not re-export the Software nor any other technical data received from Matthew Dixon Cowles, nor the direct product thereof, except as permitted by the laws and regulations of the United States and the laws and regulations of the jurisdiction in which you obtained the Software. 5. Government End Users. If you are acquiring the Software and fonts on behalf of any unit or agency of the United States Government, the following provisions apply. The Government agrees: (i) if the Software and fonts are supplied to the Department of Defense (DoD), the Software and fonts are classified as "Commercial Computer Software" and the Government is acquiring only "restricted rights" in the Software, its documentation and fonts as that term is defined in Clause 252.227-7013(c)(1) of the DFARS; and (ii) if the software and fonts are supplied to any unit or agency of the United States Government other than the DoD, the Government's rights in the Software, its documentation and fonts will be as defined in Clause 52.227-19(c)(2) of the FAR or, in the case of NASA, in Clause 18-52.227-86(d) of the NASA Supplement to the FAR. 6. Disclaimer of Warranty on Software. You expressly acknowledge and agree that use of the Software and fonts is at your sole risk. The Software, related documentation and fonts are provided "AS IS" and without warranty of any kind and Matthew Dixon Cowles and Matthew Dixon Cowles's Licensor(s) (for the purposes of provisions 6 and 7, Matthew Dixon Cowles and Matthew Dixon Cowles's Licensor(s) shall be collectively referred to as "Matthew Dixon Cowles") EXPRESSLY DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. MATTHEW DIXON COWLES DOES NOT WARRANT THAT THE FUNCTIONS CONTAINED IN THE SOFTWARE WILL MEET YOUR REQUIREMENTS, OR THAT THE OPERATION OF THE SOFTWARE WILL BE UNINTERRUPTED OR ERROR-FREE, OR THAT DEFECTS IN THE SOFTWARE AND THE FONTS WILL BE CORRECTED. FURTHERMORE, MATTHEW DIXON COWLES DOES NOT WARRANT OR MAKE ANY REPRESENTATIONS REGARDING THE USE OR THE RESULTS OF THE USE OF THE SOFTWARE AND FONTS OR RELATED DOCUMENTATION IN TERMS OF THEIR CORRECTNESS, ACCURACY, RELIABILITY, OR OTHERWISE. NO ORAL OR WRITTEN INFORMATION OR ADVICE GIVEN BY MATTHEW DIXON COWLES OR AN AUTHORIZED REPRESENTATIVE OF MATTHEW DIXON COWLES SHALL CREATE A WARRANTY OR IN ANY WAY INCREASE THE SCOPE OF THIS WARRANTY. SHOULD THE SOFTWARE PROVE DEFECTIVE, YOU (AND NOT MATTHEW DIXON COWLES OR AN AUTHORIZED REPRESENTATIVE OF MATTHEW DIXON COWLES) ASSUME THE ENTIRE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION IF IMPLIED WARRANTIES, SO THE ABOVE EXCLUSION MAY NOT APPLY TO YOU. 7. Limitation of liability. UNDER NO CIRCUMSTANCES INCLUDING NEGLIGENCE, SHALL MATTHEW DIXON COWLES BE LIABLE FOR ANY INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES THAT RESULT FROM THE USE OR INABILITY TO USE THE SOFTWARE OR RELATED DOCUMENTATION, EVEN IF MATTHEW DIXON COWLES OR AN AUTHORIZED REPRESENTATIVE OF MATTHEW DIXON COWLES HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME JURISDICTIONS DO NOT ALLOW THE LIMITATION OR EXCLUSION OF LIABILITY FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES SO THE ABOVE LIMITATION OR EXCLUSION MAY NOT APPLY TO YOU. In no event shall Matthew Dixon Cowles's total liability to you for all damages, losses, and causes of action (whether in contract, tort (including negligence) or otherwise) exceed the amount paid by you for the Software and fonts. 8. Controlling Law and Severability. This License shall be governed by and construed in accordance with the laws of the United States and the State of California, as applied to agreements entered into and to be performed entirely within California between California residents. If for any reason a court of competent jurisdiction finds any provision of this License, or portion thereof, to be unenforceable, that provision of the License shall be enforced to the maximum extent permissible so as to effect the intent of the parties, and the remainder of this License shall continue in full force and effect. 9. Complete Agreement. This License constitutes the entire agreement between the parties with respect to the use of the Software, related documentation and fonts, and supersedes all prior or conterporaneous understandings or agreements, written or oral, regarding such subject matter. No amendment to or modification of this License will be binding unless in writing and signed by a duly authorized representative of Matthew Dixon Cowles. ------------------------------------------------------------- Introduction Alarmist is an alarm application from Mondo Info, by Matthew Dixon Cowles, for the Apple Newton MessagePad. (Whew.) It allows the user to schedule alarms to go off at some time in the future. The alarms may have one of four degrees of "annoyingness" and each may have a message associated with it. When the alarm goes off, a floater is displayed and a sound may be played. The user can acknowledge the alarm by tapping a button or defer ("snooze") the alarm. If the alarm is ignored (neither acknowledged nor snoozed) and the alarm is set to do so, the alarm will automatically be rescheduled in an effort to get your attention later. A list of alarms (if any) that have been ignored is displayed at power-on. Alarms may also be set to repeat at particular intervals. The various names and properties of the four degrees of annoyingness may be changed in Alarmist's preferences. You should bear in mind in reading this documentation that it is really a description of how I intend that Alarmist should work. As the license agreement above indicates, I don't promise that it does work as I've described. ------------------------------------------------------------- Support I am extremely interested in getting feedback from users. I would be delighted to hear comments, thoughts and suggestions about the documentation, feature requests, bug reports, expressions of praise, and lucrative job offers. If you are reporting a bug, please try to be as specific as possible about the actions that lead up to it. If you are expressing praise or making a job offer, please try to be as generous as possible. I can't promise to implement all features that are requested, but I will keep track of them and will be more likely to implement those that are requested most often. Many of the changes in version 2.0 were requested by users. Support for Alarmist is currently only available by mail, preferably e-mail. My e-mail addresses are: NewtonMail, eWorld: MattC (@eworld.com) AppleLink: MONDO (@applelink.apple.com) CompuServe: 73134,2536 (73134.2536@compuserve.com) If you don't have an e-mail account, please send a note by the postal service to: Matthew Dixon Cowles 4501 Park Glen Road, no. 345 St Louis Park, MN 55416 USA ------------------------------------------------------------- Price Alarmist is shareware. If you use Alarmist beyond a reasonable trial period, you must register it by sending 15 US dollars (by check, money order, bank draft, or cash if you really want to) to the address above. Please include an e-mail address and a snail-mail address. Please also include a note saying what version of Alarmist you are using. If you register and there is a newer version available, I will send you a disk with the newer version. People who have registered their copies will generally be kept up do date about new versions of Alarmist. Source code for Alarmist is available in case you'd like to see just how bad a programmer I am. Source code for Alarmist is available to registered users for 20 US Dollars, by mail only. (That's a total of 35 USD for source if you haven't previously registered your binary copy.) Note that a source code license allows you to modify your own copy of Alarmist and to use the code for general inspiration, but it does not allow you to distribute derivative works. ------------------------------------------------------------- Using Alarmist -- Installation -- Getting started and entering alarms -- Repeating alarms -- Preferences -- When an alarm goes off -- If an alarm is missed altogether -- Deleting Alarmist -- Installation Install Alarmist just as you would any Newton package. Use Newton Connection or any of the other programs that will send packages to your Newton. (Check the documentation that came with the program you use for details.) Once you have installed the app, you will see a new icon, an alarm clock, in your extras drawer. Tap it to open Alarmist. -- Getting started and entering alarms When you first open Alarmist, it opens to an overview, showing the alarms that are scheduled and the current time according to your Newt. (The time display is kept updated as long as the app is open.) The alarms that are closest to going off are at the top of the scrolling list. Of course, the very first time you open the app, you will see an empty list. When there are alarms in the overview, it will show the date and time the alarms are scheduled for, the message that will be displayed when the alarm goes off (or at least the first part of it), and the name of the alarm's degree of "annoyingness". The default names for the four levels of annoyingness are Once, Some, A lot, and Forever, corresponding generally to how long the alarm will beep at you. (See below for a description of all the things that the annoyingness of an alarm controls.) If the alarm has been missed (see the section If an alarm is missed altogether below for details), an indication of the alarm's state will be shown in the overview also. If the alarm is set to repeat (see the section Repeating alarms below for details), the annoyingness name will be followed by "(R)". When the overview is visible, you will see two buttons in Alarmist's status bar: an info button (with an i in it) and New. The menu that appears when you tap the info button has "About", "Prefs", and "Delete All Data" in it. See below for information about the preferences settings and deleting all of Alarmist's data. You already know about about boxes. The New button will create a new alarm and display it in the entry view, and tapping an existing alarm in the overview will display it in the entry view. When you create a new alarm, it's set for one hour in the future. You will want to change the time and perhaps the day for which the alarm is scheduled to something more useful. Use the little month calendar to set the proper day for the alarm (change months with the arrows to the left and right of the month's name). Set the time of the alarm using little clock and use the radio buttons below the clock to specify whether the alarm should be scheduled for AM or PM. When you're done changing or viewing an alarm in the entry view, tap Set or the overview button (the dot between the up and down arrows) to set your alarm. In the entry view, the time and day selected will be shown in text just below the clock and calendar, and below that will be the length of time (in days, hours, and minutes) in the future (or the past) that the alarm is set for. (Of course, alarms in the past don't make any sense and Alarmist won't let you close the entry view if the alarm is set for a time in the past.) In addition to scheduling the alarm, you can specify a sound for the alarm by choosing one of the sounds that are available from the list that appears when you tap the diamond that's next to the "sound" label. You can experiment with the sounds to see which ones you might like for your alarms using the Try Sound button. Note that if you have "Alarm sound effects" turned on in the Sound section of your Newt's preferences, Newt will try to play both the beep sound you have selected in Newt's preferences and also any sound you have instructed Alarmist to play when the alarm goes off. When you create a new alarm, Alarmist will set the annoyingness and sound to whatever was last used as a default, or to whatever you've specified as a default in the preferences. To the left of the sound picker is a set of radio buttons that you use to specify how annoying the alarm should be. By default they are labeled Once, Some, A lot, and Forever. Which radio button you choose controls various things and those things can be changed in Alarmist's preferences. See below in the Preferences section for the details. Tapping on the label Annoyingness in the entry view will display the current settings for the annoyingness setting that's currently selected. At the bottom of the entry view is a place for you to write a message that will appear when the alarm goes off. In the entry view, a button appears labeled Forget. Tapping the Forget button, deletes the alarm that you're currently looking at. Another button is visible in the entry view, the Calendar button. Tapping it displays a list of the meetings (not repeat meetings or calendar notes) that are scheduled in the future in your calendar. Tapping on one of the entries in the list and then tapping the Use button (or just double-tapping on the item) will close the list of meetings and set the alarm time and message to the ones from your calendar. Note that there is no permanent connection between the meeting and the alarm -- this is just a handy way of specifying the time and message for the alarm. If you change the time of the meeting or its text in the calendar app, Alarmist will carry on oblivious to your change. You can confirm the alarm (save any changes, in effect) by tapping the Set button or the system's overview button. If you close the app (using the close button in the lower right) and you have made any changes to the alarm that's displayed, Alarmist will ask if you want to quit without saving the changes. This is actually the only way to close the entry view without saving changes to an alarm. If you go back to the overview, you will see any alarms in the scrolling list. Tapping on any of the items in the list will open the entry view for the alarm, allowing you to make any changes you'd like. -- Repeating alarms If you wish, an alarm can be set to repeat according to a simple schedule. (The default repeating schedule for an annoyingness can be set in the preferences, discussed below.) It's possible to tell whether an alarm is set to repeat by checking the text of the button that opens the slip in which you specify the schedule. If the button says Set Repeat, repeating is not active. If it says Change Repeat, repeating is active. When you tap the button, a slip opens in which you can specify the schedule according to which the alarm repeats. The first element, at the top of the slip, is a set of radio buttons that turns repeating on or off. Below that is a section in which you specify how often the alarm should repeat. The first item is a number that you can specify by editing the text or moving the slider and the second specifies the time unit that the first item is multiplied by. Your choices for time unit are limited to minutes, hours, days, and weeks. (As with the sliders in the preferences, some numbers are left out of the slider's range, so if you want an alarm to repeat every 37 minutes, you'll have to enter that value yourself.) The next section allows certain days of the week to be exempted from alarms. You could, for example, have an alarm that repeated every day, but not on Saturdays or Sundays. The alarm won't be scheduled to repeat on days that are highlighted. The last section allows you to specify a day and time after which the alarm won't repeat. This works just like the day and time specification in the main part of the entry view except that you can choose a month from a popup list that appears when you tap the month name. My reasoning for the difference is that you're unlikely to want to set an alarm very many months in advance, so tapping month arrows shouldn't be a problem, but it's quite possible that you may want to set an alarm that repeats, in effect, forever or one that repeats only for the next week. The popup menu allows you to change months by large amounts quickly. Closing the repeat schedule slip with the closebox in the lower right sets the alarm's repeating schedule and changes the text of the button if necessary. Once you've set an alarm to repeat there are, possibly, a large number of alarms theoretically "scheduled". That is, if I set an alarm to repeat every five minutes from now until 2040, there are a whole bunch of alarms waiting to go off. To make the problem manageable, Alarmist only schedules one instance of a repeating alarm at a time. When that alarm goes off, the next instance is created and scheduled for the appropriate time in the future. For that reason, it's not possible to delete an individual instance of a repeating alarm without deleting all of the future instances of the alarm. -- Preferences You get to Alarmist's preferences by tapping on the info button in Alarmist's status bar (at the bottom of the screen) and choosing Prefs from the menu that appears. Alarmist has five panels in its preferences roll. You can tap on the name of one you want to look at to change in the overview that's displayed initially and scroll among them in a fashion that should be pretty obvious. The Restore Factory Settings button in the bottom of the preferences view does just what it sounds like it does. The topmost panel in the preferences allows you to specify the annoyingness setting that a new alarm gets when it is created. It can be set to any of the four degrees of annoyingness or it can be set to have Alarmist use whatever degree of annoyingness was last used. The remaining four panels in Alarmist's preferences roll allow you to specify the names and the attributes of the four degrees of annoyingness. You can change the name for a given degree of annoyingness by editing the text of the Name field in the usual fashion. The default sound for a degree of annoyingness can be set with the radio buttons labeled Default Sound. Whether or not an alarm of a given degree of annoyingness repeats by default can be set with the "Set Repeat" button. Just as in the entry view, the button changes its name to "Change Repeat" if repeating is active. See the discussion of repeating alarms above for the details of what's going on here. The setting here is just the default for the annoyingness. It's important to note that, with the exception of the sound and the repeat setting, the other attributes of a given annoyingness are not stored with an alarm. When the alarm goes off, it checks the current preferences settings to see what it should do. That is, if you set an alarm to Forever when the preferences are set to the defaults and then change the settings for the fourth annoyingness setting before that alarm goes off, it will use the attributes that are in effect when it goes off, not the attributes that were in effect when it was scheduled. That makes some sense, I think, because it's possible to override the default sound and the default repeat in the entry view while the other settings that are in the preferences can't be changed in the entry view. The Set volume to maximum when alarm goes off checkbox does just what it sounds like it does. If you routinely turn your Newt's volume down or off, you will probably want to check this checkbox in most if not all of your annoyingness settings. The remaining settings are numerical and can be changed by editing the text in the fields or by moving the sliders underneath the fields. The sliders skip some numbers in the interests of providing a large range of values. If you want one of the numbers that the sliders skip (62 beeps, for instance), you will have to enter the text in the usual fashion. The first numeric setting, Keep alarm alert open (minutes), controls how long the alarm alert is displayed when the alarm goes off. Note that Newt doesn't sleep when the alarm alert is displayed, so setting this value too high can cause Newt to consume its batteries pretty fast if you're not around to notice the alarm. The setting Alarm attempts controls how many times Newt tries to get your attention by having the same alarm go off again. Note that this setting has nothing to do with an alarm's repeating. This setting is intended for attempts to get your attention for a particular alarm. The repeating that's set by the Set repeat button is intended for alarms that exist off into the future on a regular schedule. The setting Delay between tries controls how long after the alarm alert closes Alarmist should wait before trying to get your attention again by having the alarm go off. The setting Beeps to make controls how many times Alarmist plays whatever sound you've specified when the alert floater opens and the Delay between beeps setting controls what it sounds like it controls. You should note that none of the settings having to do with timing (Delay between beeps, Keep alarm alert open, and Delay between tries) is guaranteed to produce absolutely exact results. The results should be sufficiently close for any reasonable purpose. -- When an alarm goes off When an alarm goes off, the alarm opens a floater that shows your message and plays any sound you've specified, according to the annoyingness and preferences you've set. (See above for a discussion of an alarm's annoyingness.) There are several buttons in the floater: Acknowledge, Snooze 5, 15, 30, and 60. Acknowledge (reasonably enough) finishes the alarm there and then. Snooze 5 reschedules the alarm for five minutes from the current time and the other buttons reschedule the alarm for the number of minutes in their labels. Turning Newt off with the power switch will turn Newt off and will also snooze the alarm for 5 minutes. (I put this feature in because I was certain that if I tried to tap something with a pen just after being woken up, I would be likely to do some damage to Newt's screen or poke myself in the eye.) Note that snoozing an alarm doesn't count against the number of times the alarm will be rescheduled if it's ignored. The alert floater also displays the time at which the alarm was originally scheduled, in case you're only becoming aware of it sometime after it originally went off. -- If an alarm is missed altogether The alert floater is displayed for 5 minutes (or whatever other duration you've set in the preferences) after the alarm goes off and then it closes itself. If you turn your Newt on at any time after you have missed an alarm, a floater opens to inform you of the alarms you have missed. The floater displays the original time that the alarm was scheduled for and the message that you entered for the alarm. If an alarm that has been missed is still pending because it has been rescheduled, "Missed, alive" is displayed to the right of the time that the alarm was originally scheduled for. If the alarm has gone off as many times as its annoyingness specifies, "Missed, dead" is shown. The same messages appear next to the missed alarms in the overview of alarms in the main app if you open it when there are missed alarms. Note that an alarm that you have snoozed doesn't appear in this list since you're presumably aware of it. The missed-alarm floater has three buttons. The first is a standard close box. Tapping it closes the floater and leaves things as they are. The next time you turn on your Newt, the floater will appear with the missed alarms displayed. The Acknowledge all button closes the floater and causes Alarmist to discard the information about the missed alarms and also cancels any rescheduled attempts that are pending. The last button, Open main app, closes the floater and opens the main portion of Alarmist without deleting the information about missed alarms or cancelling pending attempts. If there are any missed alarms, the main app will display "Missed alarms!" in its upper right. Tapping on that text will open the missed-alarm floater so you don't have to turn Newt off and then on again to see it. If you tap on a missed alarm in the overview in the main app, the notation that the alarm was missed is discarded. (You must be aware of the alarm by this time.) A "live" missed alarm is recorded as being scheduled for the next time it would try to get your attention, as specified in the preferences and a "dead" one is shown as being scheduled for the original time it went off. Note that if you edit a dead missed alarm, you'll be looking at an alarm scheduled in the past in the entry view. Since you can't set an alarm to go off at a time in the past, you'll have to set a dead missed alarm for some time in the future or delete it before you can leave the entry view. Alarmist reminds you of all that if you tap a missed alarm in the overview in case you have forgotten. -- Deleting Alarmist If you wish to delete all of the data Alarmist has stored in your Newt (heaven knows why), choose Delete All Data from the menu in the info button. You will have to confirm your choice a couple of times, and when you have Alarmist will delete all missed and pending alarms and all preferences settings. After that, you can delete Alarmist from Newt's card or internal store in the usual way and Alarmist won't leave anything behind except for the 4K of your internal store that the new alarm routines require, as mentioned above in the Important cautions section. ------------------------------------------------------------- Known problems and limitations -- Space in the NewtonScript heap -- Partial incompatibility with SleepAid -- If the app isn't available when an alarm goes off -- Competing alarms -- Wacky preferences settings -- Small bug in the system alarm code -- Space in the NewtonScript heap If there isn't enough space left in the NewtonScript heap to display the alert floater (it takes less than 1K), at best the only indication that you're going to get of an alarm is an error message. -- Partial incompatibility with SleepAid Unfortunately, there is a partial incompatibility between Alarmist and the fine and useful utility SleepAid. When an alarm's alert floater is shown, in order to be able to distinguish between Newt's sleeping because the sleep time has elapsed and Newt's sleeping because the user has used the power switch, Alarmist sets the system's sleep time global to never (indicating that Newt should never sleep until the power switch is used) and then sets it back to whatever it was before when the floater closes itself. Unfortunately, SleepAid appears periodically (every minute or so) to reset that global to whatever has been specified in SleepAid's preferences. (I can't complain about this behavior too much; if Alarmist can play with the sleep time behind the user's back, so can SleepAid.) What Alarmist does in a semi-successful attempt to deal with this problem is to check, when Newt if powering down, to see if the sleep time has been changed from never. If it has, the alarm behaves as though it has been ignored (reschedules itself if appropriate and notes that it has been missed). If the sleep time is still set to NIL, the alarm is certain that the user has hit the power switch and snoozes itself. What this really means to the user is that if SleepAid is installed, the power-switch-to-snooze function will be unreliable. Sometimes (likely if the power switch is hit right after the alarm goes off) it will behave as expected. Other times (likely if the user has waited a bit after the alarm has gone off to hit the power switch), it will instead act as though the alarm was ignored rather than snoozed. That's probably not as bad as it sounds. If an alarm is important, you will probably set it to an annoyingness setting that has a large number of tries specified in the prefs. If one of those alarms is ignored, it will go off again and will reschedule itself. For that reason (given a sane setting for the Delay between tries preference for the alarm's annoyingness), the major difference between ignoring the alarm and snoozing it is that it will go off again sooner if it has been ignored or if it thinks it has been ignored because SleepAid is doing its job. -- If the app isn't available when an alarm goes off All alarms are stored internally in your Newt, not on a card, regardless of whether you have "Store new items on card" checked. An alarm will go off if you have scheduled it with Alarmist stored on a card and then removed the card (or deleted the app altogether). Unfortunately, the ability to play sounds, snooze and repeat alarms, and so forth, are contained in Alarmist. If the app is unavailable when the alarm goes off, you will see a standard Notify alert (the thing with the wavy border) with your message in it and a message about how the app must be available if you want sounds and so forth. -- Competing alarms If an alarm goes off while the alert floater for another alarm is visible, the first alarm's alert floater is closed and the alarm is rescheduled just as though it had been "snoozed". Note that it is possible for a lower-priority alarm to interrupt a higher priority alarm! Since snoozing an alarm doesn't count against the number of times it will be rescheduled, it's possible for two alarms to contend for the screen forever. -- Wacky preferences settings Alarmist doesn't attempt to check the settings you make in the preferences for sanity. It's entirely possible to come up with settings that won't try very hard to get your attention or settings that will eat your batteries quickly. -- Small bug in the system alarm code The system alarm code has a small bug in it that will probably be fixed shortly. The fix will have to be incorporated into a new version of Alarmist. Here is a short description from one of the kind llamas at PIE DTS: If you have a meeting with an alarm residing on a card AND there are not alarmed meetings stored internal - then yanking the card cancels all pending alarms. The work-around is to tell your users to create an alarmed meeting (on the internal store) for the year 2000. ------------------------------------------------------------- Plans for the future Well -- in five years, I'd like to be retired and living on a tropical.... Only kidding. At the moment, I don't anticipate adding a great many features to Alarmist. It does what I need it to do and (as far as I can tell) it does it reasonably well. It is my theory about Newton applications that they should be small, slick, simple, and (if possible) elegant. I would like to add repeat meetings to the list of calendar items that can be displayed in the entry view. The only reason that I haven't yet is that it's kind of a pain in the %^&@@$#$. I am very interested in knowing what other people would like Alarmist to be able to do. I can't promise that I'll add every feature that's requested, but I do promise to take feature requests into consideration (see the Support section above). -- Well, I wrote that in the docs for version 1.0 and look where we are now. A 200K alarm clock is pushing the limits of sanity. Still, do tell me what you'd like to see changed. ------------------------------------------------------------- Revision history of the program 10/19/94 Version 2.0 released. 09/01/94 Version 1.11. Fixed a setting that prevented word recognition from working on German MPs. 08/11/94 Fixed a bug that caused the "Missed Alarms!" text in the main app to appear sometimes when there weren't actually any missed alarms. 08/08/94 Changed number of beeps and reschedules for A Lot alarm, made "Missed Alarms!" text in main app highlight when tapped, fixed bug that caused problems if "Missed Alarms!" text tapped when missed alarms floater was already open. 08/07/94 Fixed bug that prevented Alarmist from increasing Newt's sound volume if it was turned down when an alarm went off. Added Snooze 15, 30, and 60 buttons to alert floater. Made base view align itself with the bottom of the screen per UI guidelines. Made base view draggable. Had Alarmist use last annoyingness and sound settings as default for new alarm. Changed saving alarm interface based on user requests. Added Try Sound button per user requests. 06/13/94 Release 1.0 Removed beta warnings and sent Alarmist out into the world. 06/09/94 Added work-around to mitigate partial incompatibility with SleepAid. 06/01/94 Fixed a bug that prevented an alarm that had been snoozed from closing the alert when it went off again. 05/30/94 Changed alert floater to set action sound effects to on (so that sounds are played) when playing an alarm sound and then back to whatever it was previously. 05/26/94 Beta release 1.0b4 Fixed bug in the missed alarms floater -- the floater now updates the alarm list in the main app when the acknowledge all button is tapped if the app is open under the floater. 05/24/94 Beta release 1.0b3. Fixed bug in the alarm floater pointed out by alert beta-tester. The alert floater didn't make any distinction between Newt sleeping on account of the user hitting the power switch (which should cause a snooze) and Newt sleeping on account of the time set in the Prefs being up. If an alarm was open when the idle time set in the prefs expired, the alert floater would snooze itself rather than rescheduling itself or noting the missed alarm. Fixed by setting the sleep time to never when the alarm floater is open. When the alarm floater closes itself, it restores the previous value to the sleep time. 05/21/94 Beta release 1.0b2. 05/21/94 Fixed bug that occurred if the entry view for an alarm was open when that alarm went off and then user deleted alarm. 05/18/94 Added the floater that appears at power-on if any alarms have been missed. 05/16/94 Changed sound for beep choice since it appears that Newt's sound-playing software can sometimes get confused and not play that sound at all. Added code that causes an alarm that's opening on top of another alarm to force the first alarm to snooze. Removed the default alarm message. 05/12/94 Fixed a bug that appeared if the user closed the app while the delete animation was still running. Added a clearUndoStacks() to avoid an error if the user installed the app on a card deleted an alarm, pulled the card, and then hit the undo button. Fiddled with the about box some. 05/11/94 1.0b1 Initial beta release to a few brave souls. ------------------------------------------------------------- Acknowledgments My thanks go to: Michael Schmidl, bug-finder without peer; Greg Keene of The Watertown Group, Inc; and the other folks who have tested Alarmist and made suggestions. Without their help Alarmist wouldn't be nearly as good as it is. Whoever it was who suggested on one of the online services that an alarm app should inform users of missed alarms when Newt was next turned on. (If you read this, let me know who you are -- I'd like to give credit where it's due.) Kent Sandvik; Mike Engber, especially for his fine examples WakeUpAndGoToSleep and FalseAlarm, from which I have swiped most of the non-buggy code in this app; Bob Ebert; Maurice Sharp; and the rest of the PIE DTS team, who have shown saint-like patience and have even told me which parts of the manual I hadn't read.