Abstract:
Systems and methods for maintaining a health-related action database are disclosed. The method may include receiving first information corresponding to a health-related action of a first user on a first computing device; wirelessly transmitting the first information from the first computing device; receiving second information corresponding to a health-related action of a second user on a second computing device; wirelessly transmitting the second information from the second computing device; receiving the first information and the second information using a third computing device; and updating a database on the third computing device with the first information and the second information, where the first information comprises a description of the health-related action of the first user, and the second information comprises a description of the health-related action of the second user.

Description:
CROSS REFERENCE TO RELATED APPLICATIONS 
       [0001]    The present application is a continuation of U.S. patent application Ser. No. 14/088,715, filed Nov. 25, 2013, which is a continuation of U.S. patent application Ser. No. 13/087,083, filed Apr. 14, 2011, now U.S. Pat. No. 8,620,585, which is a divisional of U.S. patent application Ser. No. 11/931,839, filed Oct. 31, 2007, now U.S. Pat. No. 7,953,549, which is a continuation of U.S. patent application Ser. No. 11/169,863, filed Jun. 29, 2005, now U.S. Pat. No. 7,480,512. U.S. patent application Ser. No. 11/169,863 is a continuation-in-part of U.S. patent application Ser. No. 10/759,289, filed Jan. 16, 2004, now U.S. Pat. No. 7,292,867, and also claims priority to U.S. Provisional Patent App. No. 60/584,300, filed Jun. 30, 2004. U.S. patent application Ser. No. 10/759,289 claims priority to U.S. Provisional Patent App. No. 60/440,519, filed Jan. 16, 2003. These applications are incorporated herein by reference in their entireties. 
     
    
     BACKGROUND OF THE INVENTION 
       [0002]    1. Field of the Invention 
         [0003]    The present invention relates to systems and methods for presenting comparative athletic performance information. 
         [0004]    2. Background Art 
         [0005]    As Global Positioning System (GPS) technology has matured, location-aware electronics have been integrated into a number of different mobile platforms, such as automobiles, mobile telephones, two-way radios, and hand-held GPS receivers, in order to provide location information. Location awareness supports the provision of various location-based services. 
         [0006]    Portable and/or wireless electronic devices have also been developed or adapted for use in various commercial, personal or leisure activities to assist people in performing the activity and/or to enhance the enjoyment and/or efficiency of the activity. Such electronic devices may or may not be GPS-enabled. 
       BRIEF SUMMARY OF THE INVENTION 
       [0007]    Embodiments of the present invention relate to a method for maintaining a health-related action database using a portable fitness monitoring system, including receiving first information corresponding to a health-related action of a first user on a first computing device, the first computing device comprising a first microprocessor, a first display screen, a first user input, a first satellite positioning system receiver, a first accelerometer, and a first wireless communication transceiver; wirelessly transmitting, via the first wireless communication transceiver, the first information from the first computing device; receiving second information corresponding to a health-related action of a second user on a second computing device, the second computing device comprising a second microprocessor, a second display screen, a second user input, a second satellite positioning system receiver, a second accelerometer, and a second wireless communication transceiver; wirelessly transmitting, via the second wireless communication transceiver, the second information from the second computing device; receiving the first information and the second information using a third computing device, the third computing device comprising a third microprocessor and a third memory; and updating a database in the third memory on the third computing device with the first information and the second information, where the first information includes a description of the health-related action of the first user, and the second information includes a description of the health-related action of the second user. 
         [0008]    Embodiments of the present invention also relate to a portable health coaching system including a first portable electronic device having a first display screen, a first user input, a first satellite positioning system receiver, a first accelerometer, a first wireless communication transceiver, a first memory, and a first processor configured to receive a first input from a user on the first user input, the first input being related to a health-related action, identify electronic data stored in a database on a remote computing device based on the first input, the electronic data being related to the health-related action; and cause the electronic data to be modified and stored in the remote computing device database 
         [0009]    Embodiments of the present invention also relate to a method for modifying an electronic health information database including providing a user input on a first display of a first portable electronic device, the first portable electronic device further comprising a first microprocessor, a first satellite positioning system receiver, a first accelerometer, and a first wireless communication transceiver; prompting a selection related to health-related action on the user input; identifying electronic data stored in a database on a remote computing device based on the selection, the electronic data being related to the health-related action; providing supplemental electronic data on the user input related to the electronic data; and transmitting, via the first wireless communication transceiver, the supplemental electronic data to the remote computing device to be stored in the database in association with the electronic data. 
         [0010]    Further embodiments, features, and advantages of the present invention, as well as the structure and operation of the various embodiments of the present invention, are described in detail below with reference to the accompanying drawings. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS/FIGURES 
         [0011]    The novel features believed characteristic of the invention are set forth in the appended claims. However, the invention, as well as a preferred mode of use, will best be understood by reference to the following detailed description of an illustrative embodiment when read in conjunction with the accompanying drawings, wherein: 
           [0012]      FIG. 1  is a schematic diagram of an exemplary environment in which the present invention may be practiced; 
           [0013]      FIG. 2A  is a block diagram of an illustrative portable fitness device in accordance with the present invention; 
           [0014]      FIG. 2B  is a layer diagram of an exemplary software configuration of a portable fitness device in accordance with the present invention; 
           [0015]      FIG. 3  is a layer diagram of an illustrative software configuration of a server computer system in accordance with the present invention; 
           [0016]      FIG. 4A  depicts an exemplary graphical user interface of a route wizard through which a remote user may build a route, search for a route within a route database, and select routes within a predetermined training plan; 
           [0017]      FIG. 4B  illustrates an exemplary route wizard graphical user interface through which a user may enter parameters and attributes of a new route; 
           [0018]      FIG. 4C  depicts an exemplary route wizard graphical user interface through which a user may search a route database for an existing route; 
           [0019]      FIG. 4D  illustrates an exemplary route wizard graphical user interface that presents a navigable geographical map populated with graphical indications of locations for which preexisting maps are stored within the route database; 
           [0020]      FIG. 4E  depicts an exemplary route wizard graphical user interface within which a user may identify a selected route for detailed viewing; 
           [0021]      FIG. 4F  depicts an exemplary route wizard graphical user interface that presents a detailed description of a route and permits the user to upload the route to a portable fitness device; 
           [0022]      FIG. 5A  illustrates an exemplary graphical user interface of a training journal through which a user may view routes traversed with a portable fitness device in accordance with the present invention; 
           [0023]      FIG. 5B  depicts an exemplary graphical user interface of a training journal entry detailing a particular route traversed with a portable fitness device in accordance with the present invention; 
           [0024]      FIG. 5C  illustrates an exemplary graphical user interface of a training journal entry showing a route view in which multiple route and/or performance parameters are concurrently graphically presented in a banded format along a route path; 
           [0025]      FIG. 6A  is a high level logical flowchart of an exemplary method of authoring a training plan in accordance with the present invention; 
           [0026]      FIG. 6B  is a high level logical flowchart of an exemplary method of installing a training plan into a training journal in accordance with the present invention; 
           [0027]      FIG. 6C  is a high level logical flowchart of an exemplary method of automatically downloading one or more workouts within a training plan to a portable fitness device in accordance with the present invention; 
           [0028]      FIG. 6D  is a high level logical flowchart of an exemplary method by which a portable fitness device presents comparative performance information in substantially real time in accordance with the present invention; 
           [0029]      FIG. 7A  depicts the over-reporting of distance traveled by unfiltered GPS waypoints when a GPS receiver is traveling at low velocity; 
           [0030]      FIG. 7B  is a high level logical flowchart of an exemplary method of processing raw GPS readings in accordance with the present invention; 
           [0031]      FIG. 8  is a high level logical flowchart of an exemplary method of automatically presenting comparative split information in accordance with the present invention; 
           [0032]      FIG. 9  is a high level logical flowchart of an exemplary playlist management architecture in accordance with the present invention; 
           [0033]      FIG. 10A  is a high level logical flowchart of an exemplary method of pre-processing an audio track to determine a corresponding pace in accordance with the present invention; 
           [0034]      FIG. 10B  is a high level logical flowchart of an exemplary method of constructing a user playlist in accordance with the present invention; 
           [0035]      FIG. 10C  is a high level logical flowchart of a location-based method of presenting audio tracks as a route is traversed in accordance with the present invention; 
           [0036]      FIG. 10D  illustrates an exemplary user interface by which user audio preferences may be entered in accordance with the present invention; 
           [0037]      FIG. 10E  is a high level logical flowchart of an exemplary method of dynamic playlist management in accordance with the present invention; 
           [0038]      FIG. 11A  is a high level logical flowchart of an exemplary method of publishing a challenge route to a user community in accordance with the present invention; 
           [0039]      FIG. 11B  is a high level logical flowchart of an exemplary method of staging the traversal of a challenge route in accordance with the present invention; 
           [0040]      FIG. 11C  is a high level logical flowchart of an exemplary method of presenting the results of a traversal of a challenge route in accordance with the present invention; 
           [0041]      FIG. 12A  is a high level block diagram of a system architecture that provides nutritional guidance to a user in accordance with the present invention; 
           [0042]      FIG. 12B  is a high level logical flowchart of an exemplary method by which a client device queries a service for nutritional guidance in accordance with the present invention; and 
           [0043]      FIG. 12C  is a high level logical flowchart of an exemplary method by which a server device responds to a query for nutritional guidance in accordance with the present invention. 
       
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
       [0044]    With reference now to the figures, and in particular with reference to  FIG. 1 , there is depicted an exemplary embodiment of an environment in which the methods, systems, and program products of the present invention may advantageously be practiced. In particular,  FIG. 1  illustrates an environment  10  in which a location-aware portable fitness device  12  is utilized by an athlete  14  while engaged in a fitness activity, such as running, cycling, hiking, climbing, skiing, etc. 
         [0045]    As shown, environment  10  includes a constellation of earth-orbiting global positioning system (GPS) satellites  20 . As is known in the art, GPS satellites  20  continuously emit GPS signals  22 , which enable GPS-equipped devices, such as portable fitness device  12 , to continuously determine their position, velocity, bearing and elevation as long as a sufficient number of GPS satellites  20  can be acquired. 
         [0046]    Environment  10  further includes a wireless wide-area network (WAN) communication system including a plurality of geographically distributed communication towers  30  and base station systems (BSS)  32  (only one of each is illustrated for simplicity). Communication tower  30  includes one or more antennae  34  supporting long range two-way radio frequency communication wireless devices, such as portable fitness device  12 . The radio frequency communication between antennae  34  and portable fitness device  12  may utilize radio frequency signals  36  conforming to any known or future developed wireless protocol, for example, CDMA, GSM, EDGE, 3G, IEEE 802.x (e.g., IEEE 802.16 (WiMAX)), etc. The information transmitted over-the-air by BSS  32  and cellular communication tower  30  to portable fitness device  12  may be further transmitted to or received from one or more additional circuit-switched or packet-switched communication networks, including, for example, the Internet  40 . 
         [0047]    As is well known to those skilled in the art, Internet  40  is a worldwide collection of servers, routers, switches and transmission lines that employ the Internet Protocol (IP) to communicate data. For example, Internet  40  may be employed to communicate data between any of server computer system  42 , client computer system  44 , and portable fitness device  12 . For example, as described further below, Internet  40  may be utilized to communicate to portable fitness device  12  route information from a route database  52  stored within data storage  50  associated with server computer system  42 . Similarly, portable fitness device  12  may transmit route and performance information to server computer system  42  for storage in training journal database  54  via Internet  40 , BSS  32 , and communication tower  30 . In addition, a user stationed at a remote client computer system  44 , for example, athlete  14 , a remote trainer or other user, may access real-time or historical performance information regarding the training of athlete  14  via server computer system  42  and Internet  40 . 
         [0048]    Referring now to  FIG. 2A , there is illustrated a high-level block diagram of an exemplary implementation of portable training device  12  in accordance with the present invention. As illustrated, portable training device  12  includes a central processing unit (CPU)  60  that controls the operation of portable fitness device  12  in accordance with client software  154  described further below with respect to  FIG. 2B . As shown, CPU  60  is coupled, either directly or indirectly, to a variety of different components within portable fitness device  12 . For example, portable fitness device  12  includes an internal memory device  62  for storing the client software, as well as various route, performance and environmental information regarding a training activity of athlete  14 . The storage provided by internal memory device  62  may be further augmented by a removable storage medium inserted within removable memory slot  64  and/or dedicated audio storage  66  for storing audio data. The audio data may include, for example, music tracks encoded in MP3 format, synthesized human speech tracks, voice annotations by athlete  14  recorded via an internal or external microphone  68 , as well as other audio data. 
         [0049]    In addition to microphone  68 , portable fitness device  12  may include a number of other input/output (I/O) devices. For example, portable fitness device  12  may include one or more manually manipulable input buttons  80  that permit athlete  14  to start and stop recording of GPS data, annotate a route while athlete  14  is traversing the route, and/or to enter desired settings of portable fitness device  12 . Portable fitness device  12  may also include a speaker  82  and display  84  through which portable fitness device  12  may present real-time performance information (e.g., elapsed distance, elapsed time, pace, distance to go, heart rate, etc.), turn-by-turn directions, real-time remote training recommendations, maps, and other information in audio and/or visual format. 
         [0050]    Portable fitness device  12  is equipped with a power supply  90  that powers CPU  60  and the other components of portable fitness device  12 . Power supply  90  includes a battery and may further have an associated power port  92  through which the battery may be charged from an AC power source. Alternatively, the battery within power supply  90  may be charged utilizing a wireless inductive charging device, as is known in the art. 
         [0051]    Portable fitness device  12  further includes a GPS receiver  100  and associated GPS antenna  102  that receive GPS signals  22  from GPS satellites  20 . GPS receiver  100  processes GPS signals  22  to present to CPU  60  time-stamped waypoints, which include at least a time, a latitude, and a longitude. If at least four GPS satellites  20  have been acquired, the time-stamped waypoints presented to CPU  60  by GPS receiver  100  preferably further include an elevation. As discussed further below, the time and position information supplied by GPS receiver  100  is utilized by client software  154  running on CPU  60  to build a record of a route traversed by athlete  14  and to determine performance information (e.g., elapsed distance, elapsed time, pace, distance to go, heart rate, etc.) regarding the athlete&#39;s traversal of the route. 
         [0052]    Portable training device  12  supports two-way wireless WAN communication with communication tower  30  with WAN transceiver  104  and its associated antenna  106 . As known to those skilled in the art, WAN transceiver  104  includes a receiver for receiving radio frequency signals  36  and a transmitter for transmitting radio frequency signals  36 . As discussed in greater detail below, radio frequency signals  36  may include route information transmitted to portable fitness device  12 , route and performance information transmitted from portable fitness device  12 , settings for portable fitness device  12 , and one or two-way voice communication (e.g., a voice conversation between athlete  14  and a remote trainer stationed at remote client computer  44 ). The data sent and received by WAN transceiver  104  may alternatively be communicated via an optional data port  108 , which may employ short range wired or wireless communication (e.g., RS-232 or infrared). 
         [0053]    In order to support communication with other electronics within close range, portable fitness device  12  may be further equipped with one or more local wireless interface(s)  110  and associated antennae  112 . For example, local wireless interface(s) may include interfaces for 802.11x, Bluetooth, 900 mHz communication or the like. Utilizing such technologies, portable fitness device  12  may communicate with or sense data from a heart rate monitor  120 , headphones  122 , shoes  124 , and a watch  126  worn by athlete  14  during a fitness activity. In this manner, portable fitness device  12  may gather information regarding athlete  14 , such as his/her heart rate and body temperature, and if the athlete&#39;s shoes  124  are equipped with an RFID tag, the shoes  124  worn during the fitness activity. Portable fitness device  12  may similarly present to the user performance, directional and training information via watch  126  and headphones  122 . 
         [0054]    Of course, in alternative embodiments, portable fitness device  12  may sense or communicate with particular devices utilizing wired or wireless interfaces. For example, microphone  68  may alternatively be incorporated within wireless headphones  122 , and heart rate monitor  120  may alternatively be coupled to CPU  60  via a wired interface. Thus, those skilled in the art will appreciate from the block diagram provided in  FIG. 2A , that any number of internal or external devices and sensors, such as temperature and barometric pressure sensor  130 , may be coupled to CPU  60  via either wired or wireless interfaces. In this manner, client software running on CPU  60  may associate with the time and position information provided by GPS receiver  100  various data of interest regarding athlete  14 , his/her environment and the route being traversed. The data may be stored locally by portable fitness device  12 , for example, within internal memory device  62 , or transmitted over-the-air by WAN transceiver  104 , possibly in real time. 
         [0055]    It will further be appreciated that portable fitness device  12  may be implemented as a special purpose device or may alternatively be realized on a conventional portable device platform, such as a mobile telephone, MP3 player, digital camera, PDA, etc. 
         [0056]    With reference now to  FIG. 2B , there is illustrated a layer diagram of an exemplary software configuration of portable fitness device  12  in accordance with one embodiment of the present invention. As illustrated, the software configuration of portable fitness device  12  includes at a lowest level an operating system (OS)  150  that provides a collection of services, such as thread scheduling, memory management, interrupts, etc., that may be accessed by higher-level software. Running on top of operating system  150  is a runtime environment  152 , such as one of the JAVA or BREW runtime environments. Finally, the software configuration of portable fitness device  12  includes a portable fitness device client  154  running on top of runtime environment  152 . Portable fitness device client  154  may be downloaded to portable fitness device  12  over-the-air, for example, via the wireless WAN and WAN transceiver  104 . 
         [0057]    As illustrated, portable fitness device client  154  comprises a number of individual modules, each performing a function of portable fitness device  12 . Those skilled in the art will appreciate that the illustrated modules are illustrative rather than exhaustive, and that portable fitness device client  154  may include additional or alternative modules to support or extend the functionality of portable fitness device  12 . 
         [0058]    As shown in  FIG. 2B , the modules within portable fitness device client  154  preferably include a number of reader modules  160 - 166 . GPS reader  160  receives from GPS receiver  100  time-stamped waypoints including at least time, latitude and longitude information, and, depending upon implementation and the number of GPS satellites  20  from which GPS signals  22  were received, elevation and error information. Utilizing the time-stamped waypoints received from GPS receiver  100 , GPS reader  160  calculates performance and route information for athlete  14 . For example, GPS reader  160  may determine the start and stop times at which a route was begun and ended, an elapsed time, an elapsed distance, distance remaining in the route, elevation change, average elevation, current pace, average pace, bearing, etc. 
         [0059]    The remainder of readers  160 - 166 , for example, heart rate reader  162  and annotation reader  164 , similarly obtain input data and associate the input data with a corresponding time-stamped waypoint obtained by GPS reader  160 . Readers  162 - 166  may also perform additional calculations to determine instantaneous, differential or cumulative quantitative characterizations of the route, the performance of athlete  14  or of his/her environment. Thus, for example, heart rate reader  162  may obtain an instantaneous heart rate reading from heart rate monitor  120 , associate that heart rate reading with the time-stamped waypoint obtained by GPS reader  160 , and calculate an average heart rate. Similarly, annotation reader  164  may store a route annotation entered by athlete  14  via input buttons  80  or microphone  18  with a time-stamped waypoint obtained by GPS reader  160 . 
         [0060]    The data gathered and calculated by readers  160 - 166  are then parsed and formatted by formatter  170  into a predetermined data format that associates the performance and route data with a timestamp and geographical location. The particular data format employed by data formatter  170  is implementation-dependent, but is preferably compact to conserve the capacity of internal memory device  62  and the bandwidth of the communication link between portable training device  12  and the wireless WAN. Storage capacity and wireless communication bandwidth may further be conserved by applying a data compressor  172  to the formatted data produced by data formatter  170 . 
         [0061]    After data obtained and calculated by readers  160 - 166  have been formatted by data formatter  170  and optionally compressed by data compressor  172 , the data are either stored within internal memory device  62  (or audio storage  66  or a removal memory loaded in removable memory slot  64 ) or are transmitted over-the-air via WAN transceiver  104 . Upload manager  174  and route and performance recorder  176  determine whether or not to upload and/or store data locally based upon one or more criteria, for example, whether WAN transceiver  104  can acquire a connection to the wireless WAN, the available storage within internal memory device  62 , an indication of whether or not a remote user is tracking the training of athlete  14  in real-time, and/or other criteria. If, based upon these and/or other criteria, upload manager  174  decides to upload the formatted and compressed data, upload manager  174  outputs the data via WAN transceiver  104  and antenna  106  to client computer system  44  and/or server computer system  42  utilizing radio frequency signals  36 . Data transmitted to client computer system  44  is typically graphically presented within a display device, and data transmitted to server computer system  42  is typically stored within training journal database  54 . 
         [0062]    As noted above, portable training device  12  may alternatively receive data over-the-air from the wireless WAN. In a preferred embodiment, the data received over-the-air from the wireless WAN may include route information transmitted by server computer system  42  from route database  52 , settings of portable fitness device  12  transmitted by server computer system  42  or client computer system  44 , and training recommendations transmitted from server computer system  42  or client computer system  44 . Route information, which may be identified as such, for example, by an XML header, is received, processed and stored by route storage manager  182 . The route information may be, for example, turn-by-turn directions keyed to particular geographical areas defined by a latitude and longitude range duple. By storing route information in this format, when GPS reader  160  obtains a time-stamped waypoint falling within a particular geographic area defined by a latitude and longitude range duple, audio presentation module  192  can present an audible instruction to athlete  14  via speaker  82  and/or headphones  122  to direct athlete  14  how to traverse a desired route. 
         [0063]    Settings data, which may be identified as such, for example, by an XML header, is initially received, processed, and output by data decompressor  180  is then subsequently processed by settings manager  184 . For example, settings manager  184  may utilize settings data to update storage locations within internal memory device  62  governing particular aspects of the operation of portable training device  12 . In addition, based upon the received settings, settings manager  184  may notify upload manager  174  or route and performance recorder  176  to initiate upload or storage of route and performance information. 
         [0064]    Training recommendations received, processed and output by data decompressor  180  are subsequently processed by training input manager  186 . These training recommendations preferably take the form of either voice data communicated by a human trainer utilizing, for example, a voice-over-IP (VoIP) connection to portable training device  12 , or a predetermined data command representing an audio message. In the former case, training input manager  186  exports the audio data directly to audio presentation module  192 , which, in turn, directly presents the audio data to athlete  14  via headphones  122  and/or speaker  82 . If, however, the training recommendation takes the form of a data command representing an audio message, training input manager  186  locates an audio track within audio storage  66  or internal memory device  62  corresponding to the data command and presents the audio track to audio presentation module  192  for subsequent presentation to athlete  14 . In this manner, a remote human trainer (who may be stationed at client computer system  44 ) or an automated training plan service may provide training recommendations directly to athlete  14  in substantially real-time. And, if portable training device  12  is equipped with a microphone  68 , athlete  14  may similarly communicate audibly with the remote trainer (e.g., via VoIP) through the execution of annotation reader  164  data formatter  170 , data compressor  172  and upload manager  174 . 
         [0065]    Audio presentation module  192  is also preferably equipped to present, in audio format, turn-by-turn directions correcting the course of an athlete  14  to return to a route if a turn is missed, as well as turn-by-turn directions providing the most direct return path to the starting point. Such turn-by-turn directions are preferably computed by server computer system  42  based upon real time location information received over-the-air from portable fitness device  12  and then transmitted to portable fitness device  12 , again utilizing over-the-air communication via the wireless WAN. Audio presentation module  192  may also be utilized to decode and present audio entertainment tracks, such as the MP3 files stored within audio storage  66 . 
         [0066]    As further depicted in  FIG. 2B , portable fitness device client  154  includes a visual presentation module  190  that manages the presentation of route, performance and environmental information to athlete  14  via optional display  84  and/or the display of watch  126 . It should be noted, however, that it is presently preferred to present data of all types to athlete  14  during the course of a fitness activity in audio format so that the concentration and attention of athlete  14  is not diverted from training efforts. 
         [0067]    Finally, route publication manager  194  of portable fitness device client  154  supports the sharing of routes between multiple portable fitness devices  12 , for example, utilizing the local wireless interface  110 , WAN transceiver  104 , or data port  108 . In this manner, an athlete  14  can directly share selected routes (e.g., as identified utilizing input buttons  80 ) to other athletes having compatible portable fitness devices  12 . 
         [0068]    Referring now to  FIG. 3 , there is depicted a layer diagram of an exemplary software configuration of server computer system  42  of  FIG. 1  that, in accordance with the present invention, provides an automated web-based route generation, route journaling, route visualization and other services. The services may be offered to a plurality of athletes  14  or other users forming a user community, may be restricted to users that have been issued login IDs and passwords for accessing server  42 , and may further be offered in exchange for a subscription fee. 
         [0069]    As shown, at the lowest layer the software configuration of server computer system  42  includes an operating system (OS)  210 , which is preferably one of the commercially available operating systems, such as Windows, UNIX, LINUX, AIX, etc. OS  210  has an associated application programming interface (API)  212  though which middleware and application programs may access the services of OS  210 . 
         [0070]    Running on top of OS  210  is a hypertext transport protocol (HTTP) server  214 , which, as is well known in the art, communicates data over Internet  40  utilizing HTTP. In particular, HTTP server  214  supports data communication with portable fitness device  12  and one or more remote client computers  44  utilizing HTTP. Communication with server computer system  42  may alternatively or additionally be conducted utilizing a sockets layer interface or other lower layer protocol running over IP. 
         [0071]    In addition to HTTP server  214 , the application software of server computer system  42  includes a number of different modules supporting the client-side functionality provided by portable fitness device client  154 . In the depicted embodiment, these modules include a route generation and publication module  220 , a data recorder module  226 , and a visualization module  230 . Those skilled in the art will again appreciate that alternative or additional modules may be implemented within server computer system  42  in order to provide or extend the described or additional functionality. 
         [0072]    Route generation and publication module  220  generates routes to be traversed by athletes  14  during fitness activities, stores the routes within route database  52  ( FIG. 1 ) for subsequent access, and downloads the routes to portable fitness devices  12 . In a preferred embodiment, route generation and publication module  220  includes a route wizard  222 , which, as described below with respect to  FIG. 4A-4F , guides a user through a step-by-step process for generating routes having desired parameters and attributes. As shown in  FIG. 3 , route generation and publication module  220  preferably accesses a local or remote map database  224  that stores street and/or trail information in association with at least latitude and longitude information, and preferably elevation information. Thus, given at least one terminal point (e.g., a starting point), route generation and publication module  220  is able to construct one or more routes having a desired length, elevation profile, and other parameters and attributes. Routes generated by route generation and publication module  220  are stored for subsequent access within route database  52 . 
         [0073]    Once a particular route is scheduled by an athlete  14  as discussed further below, route generation and publication module  220  transforms the route into a sequence of turn-by-turn instructions and publishes the route to a portable fitness device  12  via HTTP server  214  and the wireless WAN. Because route generation and publication module  220  can obtain elevation information along a desired route directly from map database  224 , route generation and publication module  220  is also able to advantageously supply, in conjunction with a route, elevation information for the route. In this manner, the elevation information supplied by route generation and publication module  220  can assist or replace the elevation information provided by GPS receiver  100 . Thus, if less than four GPS satellites  20  are acquired, or if GPS receiver  100  is not designed to process elevation information, portable fitness device  12  can still determine elevation-dependent route and performance data regarding a route traversed by athlete  14 . 
         [0074]    Data recorder module  226  receives route and performance information from portable training device  12  via the wireless WAN and/or local wireless interface  110  and/or data port  108  and utilizes such data to build a virtual training journal for athlete  14  within training journal database  54 . As noted previously, depending upon the operation of the upload manager  174  and route and performance recorder  176  within portable fitness device client  154 , data recorder module  226  can build a journal entry describing the traversal of a particular route in substantially real time (i.e., during traversal of the route). Data recorder module  226  also preferably supports an interface through which a route recorded by data recorder module  226  can be exported to route database  52  for subsequent viewing, selection and scheduling within a user&#39;s training journal. 
         [0075]    The exemplary software configuration of server computer system  42  finally includes visualization module  230 . Visualization module  230  supports one or more interfaces through which users of remote client computer systems  44  can view and/or annotate the data recorded within training journal database  54  by data recorder module  226 . In the depicted embodiment, visualization module  230  includes training journal interface  232 , which, as described in detail below, permits an athlete  14  to view and/or annotate a journal entry describing a route traversed during a fitness activity after completion of the route traversal. In a preferred embodiment, visualization module  230  further includes a real-time interface  234  through which a user at a remote client computer system  44  may view, in substantially real time, data logged within training journal database  54  for one or more athletes. Thus, for example, a spectator having access to Internet  40  can view the real-time standings of multiple competitors in a fitness activity, such as a marathon, cycling race, or other competitive event. Similarly, a remotely located trainer having access to Internet  40  via a client computer  44  can view the progress of one or more athletes  14  engaged in one or more training activities in substantially real time. 
         [0076]    Visualization module  230  also preferably includes support for the export of selected journal entries between accounts of different users of the back-end service provided by server computer system  42 . For example, visualization module  230  preferably permits a user to transmit a journal entry representing a traversal of a route via email. In addition, visualization module  230  may permit a user to create a “buddy” account that may be accessed and even annotated by guest users. In this manner, if the services provided by server computer system  42  are provided for a subscription fee, marketing of the service is enhanced by the ability of non-subscribers or subscriber having reduced-cost subscriptions to view journal entries created by exercise partners. 
         [0077]    Referring now to  FIGS. 4A-4F , there are illustrated a sequence of graphical user interface (GUI) windows presented by route wizard  222  to a user of client computer system  44  by HTTP server  214 . As noted above, route wizard  222  provides a graphical and intuitive interface through which a remote user can automatically build, search for, and/or schedule routes to be traversed during a fitness activity. 
         [0078]    In order to access route wizard  222 , a user stationed at a remote client computer system  44  first logs into server computer system  42  via Internet  40  and HTTP server  214 . As is well known to those skilled in the art, the login process typically includes the entry by the remote user of a login ID and password or other authentication information to server computer system  42 , which then authenticates the identity of the user by reference to the user database or the like. 
         [0079]    Following the preliminary authentication process, an exemplary embodiment of route wizard  222  first presents a graphical user interface (GUI) window  250  to the user. Within GUI window  250 , the user is prompted to select one of three options  252 ,  254  and  256 , which are each associated with a respective one of radio buttons  258   a - 258   c . Thus, the user is permitted to build a new route (option  252 ), search for an existing route within route database  52  (option  254 ), and access one or more routes within a pre-packaged training plan (option  256 ). After the user has indicated a preference among options  252 - 256  by selecting one of radio buttons  258   a - c  utilizing cursor  262  or a keyboard, the user selects Next button  260  to proceed to the next step. 
         [0080]    If the user selected option  256  indicating that the user desires to select a pre-packaged training plan, route wizard  222  may subsequently present the user with one or more additional windows in which a training plan meeting the user&#39;s needs and desires is designed. Route wizard  222  then automatically populates the training journal of the user with a schedule of fitness activities that conform to the distance, time, goal event (e.g., marathon) and/or other parameters of the training plan. Thereafter, the user may be permitted to build or search for routes within route database  52  as described below with respect to  FIGS. 4B-4F  in order to fulfill the requirements of the scheduled fitness activities. 
         [0081]    Assuming that the user selects option  252  of GUI window  250  in order to build a new route, route wizard  222  next presents to the user the GUI window  270  shown in  FIG. 4B . As shown in  FIG. 4B , window  270  includes a number of GUI components prompting the user to enter parameters for the new route to be built and, optionally, desired attributes of the route. 
         [0082]    Specifically, the user is first prompted in section  272  to designate a starting point of the route (which in this embodiment is also the ending point) by entering a street address or ZIP code or by selecting a route within route database  52  having the desired starting point. Next, the user is prompted in section  274  to enter a desired overall length of the route, specified either by distance or by time. If time is utilized to specify the length of the route, a desired or historical average pace is preferably entered so that a route distance can be computed. In addition to the route parameters collected in sections  272  and  274 , GUI window  270  may also prompt the user to enter optional route attributes. In the illustrated embodiment, the optional route attributes include a maximum distance that the route may extend from the starting point, a desired elevation profile of the route, a desired pattern of the route, a desired safety characterization of the route, a desired flow of the route, and whether or not the route may be a pre-existing route stored within route database  52 . 
         [0083]    Once the user has entered all required parameter and any optional route attributes within GUI window  270 , the user selects Next button  280  utilizing cursor  262 . In response, route generation and publication module  220  builds one or more routes conforming as closely as possible to the route parameters and route attributes entered through GUI window  270 . The presentation of such routes by route wizard  222  is described below with respect to  FIG. 4E . 
         [0084]    Referring now to  FIG. 4C , there is illustrated an exemplary embodiment of a GUI window  300  presented by route wizard  222  to a user of client computer system  44  is response to selection of option  254  in GUI window  250  of  FIG. 4A . That is, in response to a user input indicating that the user desires to search for a pre-existing route within route database  52 , route wizard  222  prompts the user through GUI window  300  to enter parameters and attributes of routes of interest to the user. 
         [0085]    In the depicted embodiment, GUI window  300  includes two modalities by which the user may specify parameters for the route. In particular, in section  302 , the user is permitted to specify a location of the route by ZIP code or city name. Alternatively, as represented by button  304 , the user may specify a geographic location of the route or routes to be located by the search through a map interface. For example, if the user selects button  304  utilizing cursor  262 , route wizard  222  may present window  320  of  FIG. 4D , which is described below. 
         [0086]    Still referring to  FIG. 4C , in section  306  of GUI window  300 , the user is permitted to input into route wizard  222  desired attributes of the route to be located through the search of route database  52 . For example, in the illustrated embodiment, the route attributes include a range of route distance, an elevation profile, a route pattern, a route safety profile, a route flow, and amenities adjacent to the route. After the user has successfully entered a route location and any desired route attributes, the user may select Next button  308  utilizing cursor  262  to invoke a search of route database  52  by route generation and publication module  220  to locate one or more routes, if any, characterized by the desired route location and any route attributes. Assuming route generation and publication module  220  locates one or more routes of interest within route database  52 , route wizard  222  presents the routes to the user through an interface such as that depicted in  FIG. 4E , which is described below. 
         [0087]    Referring now to  FIG. 4D , there is illustrated an exemplary GUI window  320  in which route wizard  222  presents a navigable geographical map populated with graphical indications of locations for which preexisting routes are stored within the route database  52 . In the depicted embodiment, GUI window  320  includes a graphical representation  322  of a geographical area, for example, a political, cultural, or regional boundary. Within geographical representation  322 , route wizard  22  presents a number of indicia  324   a - h  identifying geographic locations of one or more pre-existing routes for which route database  52  stores route data. 
         [0088]    In response to the user flying over one of indicia  324  utilizing cursor  262 , route wizard  222  displays in a separate window or frame  330  route maps  332 - 336  of the routes in the geographic location corresponding to the selected indicia  324 . Graphical representations  332 - 336  may be advantageously presented overlaying a street or topographical map within window  330 . If the user visually identifies one or more routes of interest at a particular geographical location through visual inspection of indicia  324  and/or the route maps  332 - 336  displayed within windows  330 , the user may select that geographical location by clicking on the associated indicia  324 . In this manner, GUI window  320  and its associated functionality provide the user with a graphical and intuitive way of viewing and selecting route locations of interest. 
         [0089]    With reference now to  FIG. 4E , there is illustrated an exemplary GUI window  350  presented by route wizard  22  in order to permit a user to select from among one or more pre-existing routes that were located within route database  52  or that were built by route generation and publication module  220  in response to the input gathered by route wizard  222  within GUI window  270 . As shown, in the depicted embodiment proposed routes that may be selected by the user are presented to the user in the form of route summaries  352   a - c . Although such route summaries  352  may take any of a number of formats, in one preferred embodiment, each route summary  352  includes at least a route thumbnail  354  and a route distance  356 . The route summary  352  may further include an elevation profile  358 , which in the depicted embodiment is illustrated in graphical form, a route rating  360 , and one or more audio or textual reviews or links thereto  362 . 
         [0090]    The user has a number of different navigation options from GUI window  350 . First, by clicking on any of route thumbnails  354 , the user is next presented with a graphical component through which the user may select or view detailed information regarding the selected route, as described further below with respect to  FIG. 4F . Alternatively, the user may utilize cursor  262  to select Next button  370  in order to view one or more additional route summaries  352  of additional routes satisfying the user&#39;s route parameters and/or route attributes. In addition, by selecting Back button  372  utilizing cursor  262 , the user is presented with one or more of the previously described GUI windows in order to permit the user to modify the route location or other route parameters or attributes. 
         [0091]    With reference now to  FIG. 4F , there is illustrated an GUI window  380  presented by route wizard  222  to provide a detailed view of a proposed route and an interface through which the user can upload route data to portable training device  12  and schedule traversal of the route. In the illustrative embodiment, window  380  includes a detailed route map  382  indicating the geographical path of the route. Route map  382  includes terminal points  384   a ,  384   b  and a route path  386 . Route map  382  may optionally further include one or more annotations  388  associated with a route, which maybe stored in route database  52  or accessed from map database  224 . For example, in  FIG. 4F , route diagram  382  contains an annotation  388  indicating a geographical location of a potable water source. 
         [0092]    By clicking on route path  386  utilizing cursor  262 , the user invokes display by route wizard  222  of a marker  390   a , which may then be selectively slid to any desired location along route path  386  utilizing cursor  262 . Route wizard  222  preferably displays marker location information  392  in association with marker  390   a  to indicate the geographic location of marker  390  (e.g., the distance between marker  390   a  and terminal  384   a  along route path  386 ). In addition, route wizard  322  preferably displays a corresponding second marker  390   b  in association with elevation profile  384 . In this manner, by manipulating either of markers  390   a  or  390   b  utilizing cursor  262 , the user can visualize the location of particular elevation features or annotations  388 . 
         [0093]    As further shown in  FIG. 4F , window  380  further includes a rating of the route, which in this case includes between one and four “stars” and an indication of a number of reviews. In addition, window  380  may optionally include a number of written reviews, for example, displayed within text box  402 . The user may navigate to a next review of the route by selecting link  404 . 
         [0094]    GUI window  380  of  FIG. 4F  finally includes an interface through which the user may invoke the upload of route information pertaining to the route currently being viewed to portable training device  12 . In the depicted embodiment, the user can invoke upload of the route information to portable training device  12  by scheduling the route utilizing calendar interface  406 . For example, in order to upload route information pertaining to the illustrated route to portable training device  12 , the user may select a desired date such as Jan. 16, 2004, by clicking on that date within calendar interface  406  utilizing cursor  262 . In response to this input, route generation and publication module  220  enters the route to the athlete&#39;s training journal in training journal database  54  as a prospective event and uploads route information to portable training device  12  via Internet  40  and the wireless WAN. Importantly, in order to conserve data storage capacity within portable training device  12 , the upload by route generation and publication module  220  is preferably deferred until a selectable time interval of the scheduled date. In this manner, route information is provided to portable training device  12  automatically and as needed. 
         [0095]    Referring now to  FIGS. 5A-C , there are illustrated a series of GUI windows presented by training journal interface  232  of visualization module  230  of server computer system  42  to permit a user to view, annotate and share training journal entries created utilizing data received over-the-air from portable fitness device  12 . In order to access training journal interface  232 , a user stationed at a remote client computer system  44  first logs into server computer system  42  via Internet  40  and HTTP server  214 . As is well known to those skilled in the art, the login process typically includes the entry by the remote user of a login ID and password or other authentication information to server computer system  42 , which then authenticates the identity of the user by reference to the user database or the like. 
         [0096]    Following the preliminary authentication process, training journal interface  232  of visualization module  230  presents GUI window  420  to the remote user via HTTP server  214  and Internet  40 . As illustrated, GUI window  420  includes a calendar interface  424  through which the user can select a past, current or future calendar month of interest utilizing cursor  262 . An associated list box  422  presents for selection dates within the selected calendar month having journal entries within training journal database  54  for the specified login ID. Thus, by navigating utilizing cursor  262 , the user can select for viewing journal entries detailing past or real-time routes previously traversed or currently being traversed by an athlete  14 , or prospective routes scheduled for the athlete  14 . 
         [0097]    Assuming that the user selects a past journal entry within training journal database  54  from list box  422 , training journal interface  232  presents GUI window  440  of  FIG. 5B , again utilizing HTTP serve  214 . As shown, the journal entry presented by training journal interface  232  within GUI window  440  provides detailed information regarding a route previously traversed by athlete  14 , the athlete&#39;s performance, environmental conditions, as well as the athlete&#39;s personal comments and annotations. 
         [0098]    In particular, the training journal entry presented within GUI window  440  includes a route map  442  having terminal points  444   a - b  and a route path  446  showing the geographical path traversed by the route. As discussed above, route map  442  may advantageously be presented as an overlay of a trail or street map retrieved from map database  224 . 
         [0099]    The overall performance of athlete  14 , in traversing the route depicted in route map  442 , is preferably summarized in a performance summary section  476 . As indicated, performance summary section  476  may indicate the route distance, total elapsed time, average pace, average heart rate of athlete  14 , as well as other route and performance information. Weather conditions at the time and geographical location at which athlete  14  traversed the route may optionally be presented in a weather condition section  478 . For example, weather condition section  478  may specify the temperature, wind speed and direction, humidity, and precipitation. The weather condition information presented within weather condition section  478  may advantageously be accessed by visualization module  230  from any of the multiple publicly accessible weather databases available via Internet  40 . 
         [0100]    The user may interact with route map  442  in a number of ways. For example, the user may annotate route map  442  by dragging any of icons  460   a - f  to a selected location along route path  446  utilizing cursor  262 . For example, in the illustrated embodiment, the user is dragging an annotation  454  representing a potable water source onto route map  442 . The user may alternatively drag callout box icon  462  onto route map  442  in order to enter a textual annotation. 
         [0101]    In addition, in response to clicking on route path  446  utilizing cursor  262 , training journal interface  232  displays one or more markers  450   a ,  452   a  along route path  446 , preferably in association with one or more items of route or performance information (e.g., a distance) for the geographical location identified by the marker  450   a ,  452   a . By adding markers  450   a ,  452   a  in this manner, the user can graphically and intuitively ascertain the geographical location of features of interest and performance and route information at selected locations along route path  446 . Training journal interface  232  may alternatively or additionally present route and performance information for a selected geographical location in response to the user causing cursor  262  to “fly over” the corresponding location on route path  446 . 
         [0102]    In association with route map  442 , training journal interface  232  preferably presents other performance information, route information, and/or environmental information in graphical format. For example, in the depicted embodiment, training journal interface  232  presents an elevation profile  472   a , a heart rate profile  472   b , and a pace profile  472   c  in association with route map  442 . When the user adds markers  450   a ,  452   a  to route path  446 , training journal interface  232  automatically presents corresponding markers  450   b - d  and  452   b - d  at corresponding locations along graphical profiles  472   a - c . As discussed above, all of markers  450  and all of markers  452  are synchronized so that movement of any of markers  450  moves all of markers  450  and movement of any of markers  452  moves all of markers  452 . In this manner, the user is able to graphically and intuitively define an interval over which performance, route and/or environmental information may be viewed. For example, in the depicted embodiment, interval information is depicted in interval section  474 , which informs the user of the interval distance, time taken by the athlete to traverse the route interval, average pace over the route interval and average heart rate over the route interval. 
         [0103]    Of course, the particular types of route, performance and environmental information shown in  FIG. 5B  are not exhaustive and other types of route, performance, and environmental information may be captured in association with the traversal of a route. If additional route, performance or environmental information is captured in association with the route, that information is preferably presented in a profile  472 , within interval section  474 , and/or within overall performance section  476  in like manner. For example, GUI window  440  may present information regarding what pair of shoes  24  the athlete was wearing during the fitness activity, together with a lifetime mileage total for that specific pair of shoes  24 . 
         [0104]    In a preferred embodiment of the present invention, the user may alternatively or additionally view route, performance and environmental information regarding a previously traversed route in an overlay view in which a graphical representation of the route, performance and/or environmental information is depicted along route path  446 . For example, in the illustrated embodiment, in response to user selection of overlay view button  480  utilizing cursor  262 , training journal interface  232  presents route map  500  of  FIG. 5C  in place of route map  442  of  FIG. 5B . 
         [0105]    Like route map  442 , route map  500  includes terminal points  502   a  and  502   b  defining the starting and ending points of a route path  504 . In contrast to route map  442 , however, route path  504  of route map  500  comprises a plurality of bands  504   a - c , each of which represents a respective route, performance or environmental parameter quantified at the waypoints recorded along the route. The value of the respective route, performance or environmental parameter is preferably charted along route path  504  utilizing gray scale or color shade variation to represent the instantaneous quantity of the route, performance or environmental parameter at each point along the route. Thus, in  FIG. 5C , the different hatching applied to each of bands  504   a - 504   c  represents a different color and a varying spacing between the hatches represents the display of the colors at varying levels of intensity along the route path, depending upon the value of the parameters at each point along the path. The value associated with each shade of color or each level of gray scale is generally graphically represented in an accompanying legend  506 . Training journal interface  232  preferably further presents instantaneous route and performance data at any point along the route path in response to a flyover of cursor  262  or in response to the user adding markers  508 ,  510  to the route path, as described above. For example, in association with the display of marker  508 , training journal interface  232  displays information regarding the traversed distance, relative elevation, heart rate and pace associated with a distance 1.4 miles from the beginning of the route. 
         [0106]    Returning to  FIG. 5B , in addition to supporting user annotation of route maps  442  and  500 , GUI window  440  preferably permits the user to enter additional information regarding environmental and route conditions and personal thoughts. For example, GUI window  440  includes a route condition section  482  that permits the user to record the surface and traffic conditions observed along the route, as well as a text box  484  in which the user may enter personal reflections about the training activity. 
         [0107]    Finally, GUI window  440  preferably includes a GUI component that permits the user to review and/or rate the route. For example, in the exemplary embodiment, GUI window  440  contains a second text box  492  in which the user can compose a review of the route and a ratings section  494  in which the user can award the route between one and four “stars”. After the route has been reviewed and/or rated, the user can select Publish button  496 , which causes training journal interface  232  to store the review and rating within route database  52  in association with the route. In this manner, the review and rating are available for access by other users through route wizard  222 , as described above. 
         [0108]    Training journal interface  232  preferably permits a user to view prospective routes that have been scheduled utilizing a similar interface to that illustrated in  FIG. 5B . In particular, in response to a user selecting a journal entry for a future date within list box  422  of  FIG. 5A , training journal interface  232  presents a journal entry containing a route map  442  of the prospective training activity as shown in  FIG. 5B . Of course, the journal entry will not contain any performance information (e.g., time, pace, heart rate, etc.) because the athlete  14  has not yet traversed the route. 
         [0109]    Training journal interface  232  also preferably permits a user to view routes currently being traversed in substantially real time through an interface similar to that depicted in  FIG. 5B . In this case, training journal interface  232  presents a journal entry containing a route map  442  and a marker  450   a  showing the athlete&#39;s current location with respect to route path  446 . In addition, training journal interface  232  may present a summary section  476  summarizing the athlete&#39;s performance to the current position, a weather condition section  478 , an interval section  474 , and one or more graphical profiles  472 . In this manner, a remote trainer or spectator stationed at a client computer system  44  may track an athlete&#39;s performance information, route information and environmental information in substantially real time. 
         [0110]    If a user stationed at a client computer system  44  desires to view a substantially real time view of the activities of multiple athletes traversing a common route, the user preferably logs into real-time interface  234  through HTTP server  214 . Assuming the user has the appropriate subscription and/or permissions, real-time interface  234  builds from the training journals of multiple athletes a web page containing a single route map on which multiple markers, each representing a respective athlete, are presented. The web page may further present separate performance and route information for each athlete. In this manner, a remote trainer or spectator stationed at a client computer system  44  may track performance information, route information and environmental information in substantially real time for multiple athletes traversing the same or substantially the same route. 
         [0111]    With reference now to  FIG. 6A , there is illustrated a high level logical flowchart of an exemplary method of authoring a training plan in accordance with the present invention. As illustrated, the process begins at block  600  and then proceeds to block  602 , which depicts a user stationed at a client computer  44  describing a fitness training plan for an activity, for example, through a browser interface served over Internet  40  by authoring tool  242  of training plan module  240  ( FIG. 3 ) via web server  214 . The training plan includes one or more workouts and preferably includes at least a relative scheduling of the workouts. The training plan may further include specific routes and specific performance metrics, such as a target distance, target duration, target repetitions, target pace, target heart rate, target intervals or other performance goals for one or more of the workouts. The user may further associate metadata such as keywords (e.g., author name, plan length, fitness event, etc.) with the training plan so that it may be more easily located utilizing a conventional search tool. As described further below, the user may further enter information indicating a preferred adaptive behavior of the training planning in response to actually observed athletic performance of an athlete using the training plan. 
         [0112]    After the training plan has been described, the user invokes storage of the training plan by authoring tool  242  within a training plan database  56  in data storage  50  of  FIG. 1 . In response, authoring tool  242  generates an XML-formatted document specifying the training plan, and as indicated at block  604 , stores the training plan within training plan database  56 . The metadata contained in the XML-formatted training plan enables users to browse the contents of training plan database  56  utilizing a conventional search tool, such as the keyword search tool of a web browser. As further shown at block  606 , the author of the training plan is preferably permitted by authoring tool  242  to subsequently access and modify training plans created by that author that reside within training plan database  56 . Following block  606 , the process ends at block  608 . 
         [0113]    Referring now to  FIG. 6B , there is depicted a high level logical flowchart of an exemplary method of installing a training plan into a user&#39;s training journal in accordance with the present invention. The process begins at block  620  and then proceeds to block  622 , which illustrates a user stationed at a client computer system  44  selecting a training plan from training plan database  56  of server computer system  42 , for example, through a browser GUI served over Internet  40  by calendaring tool  244  of training plan module  240  via HTTP server  214 . The selection may be aided by a conventional browser search tool, menus, pick lists, calendars or other conventional user interface components. As described above, the presentation of the interface components utilized to select the training plan may be invoked by selection of option  256  within GUI window  250  of  FIG. 4A . In response to user selection of the training plan, calendaring tool  244  installs the selected training plan within the user&#39;s personal training journal residing within training journal database  54 . As noted, at block  624 , installation of the training plan within the user&#39;s personal journal may optionally require payment of a fee (e.g., authorization to charge a credit card number) and/or user agreement to abide by the terms of a copyright license in the training plan (e.g., as signified by selection of an “I Agree” button within the GUI displayed at client computer system  44 ). 
         [0114]    When calendaring tool  244  of training plan module  240  installs the training plan within the user&#39;s training journal, calendaring tool  244  preferably presents a calendar view similar to GUI window  420  of  FIG. 5A  or other GUI component(s) to enable user input of preferred scheduling and other preferences for the training plan. The user preferences may include, for example, desired starting and/or ending dates for the plan, preferred workout and/or rest days, the date of a race or other event to which the training plan pertains, audible alerts the user desires to received during a workout, etc. In response to the user scheduling input(s) and any other preferences, calendaring tool  244  automatically populates the calendar in the user&#39;s training journal with the workouts within the selected training plan based upon the user&#39;s inputs and/or the relative scheduling of the workouts in the training plan. After the training plan has been installed within the user&#39;s training journal, the user is preferably permitted to further modify or customize the training plan, as depicted at block  628 . In addition, training plan module  240  may automatically customize a training plan in an athlete&#39;s personal training journal in response to the athlete&#39;s activities recorded in the personal training journal if the adaptive behavior is specified by the training plan. For example, training plan module  240  may automatically remove prospective workouts from the training plan in response to the athlete  14  exceeding a weekly mileage target in order to prevent pre-event injury or may automatically add additional workouts (e.g., to the end of the training plan) if the personal training journal of athlete  14  indicates a failure to meet mileage goals. Alternatively or additionally, training plan module  240  may automatically decrease a target pace for one or more prospective workouts if the athlete  14  has had a lower than target pace over one or more previous workouts. Those skilled in the art that any number of other modifications to distance, pace and scheduling may similarly be automatically implemented in response to actual measured athletic performance. Following block  628 , the process terminates at block  630 . 
         [0115]    With reference now to  FIG. 6C , there is illustrated a high level logical flowchart of an exemplary method of automatically downloading one or more workouts within a training plan to a portable fitness device  12  in accordance with the present invention. As shown, the process begins at block  640  and then proceeds to block  642 , which depicts a download manager  246  of training plan module  240  monitoring a user&#39;s personal training journal to determine if any workout of a training plan installed within the user&#39;s training journal falls within a next download time interval (e.g., within the upcoming week). If not, download manager  246  continues to monitor the user&#39;s training journal. 
         [0116]    However, if download manager  246  determines at block  642  that at least one workout of a training plan falls within the next download time interval, download manager  246  attempts to establish communication with the user&#39;s portable fitness device  12  via Internet  40  and the wireless WAN, as depicted at block  644 . If download manager  236  determines at block  644  that communication cannot be established, for example, because portable fitness device  12  is turned off or is out of range of the wireless WAN, download manager  246  waits a predetermined interval, as shown at block  645 . The process then returns to block  642 , which has been described. 
         [0117]    Returning to block  644 , if download manager  246  determines that the portable fitness device  12  is available to receive a download, the process proceeds to block  646 . Block  646  depicts download manager  246  automatically downloading the workouts within the next download time interval to the portable fitness device  12  using an XML schema. As noted in block  646 , the workout(s) preferably include at least one performance metric that may form the basis of a substantially real time alert during the associated workout. Following block  646 , the process ends at block  648 . Thus, workouts may be downloaded to portable fitness device  12  on an as-needed basis rather than all at once, which reduces utilization of storage in portable fitness device  12 . Of course, in other embodiments, the download interval can be longer than the training plan, and all workouts within the training plan can be downloaded at once. 
         [0118]    Referring now to  FIG. 6D , there is depicted a high level logical flowchart of an exemplary method by which a portable fitness device  12  presents comparative performance information in substantially real time in accordance with the present invention. The process begins at block  650  in response to an athlete  14  initiating a monitored activity, for example, by selecting a route or planned workout from the internal memory device  62  of portable training device  12  and entering a “Start” command utilizing one of input buttons  80  of portable fitness device  12 . The process then trifurcates and proceeds in parallel to each of block  652 ,  660  and  680 . 
         [0119]    Block  652  depicts data formatter  170  receiving and formatting input data regarding the athlete&#39;s activity from readers  160 - 166  as described above. After optional compression by data compressor  172 , the input data received and formatted by data formatter  170  are recorded by route and performance recorder  176  within internal memory device  62  (or audio storage  66  or a removal memory loaded in removable memory slot  64 ), as depicted at block  654 . The formatting and recording steps shown at blocks  652  and  654  are performed for the duration of the fitness activity. 
         [0120]    Referring now to blocks  660 - 674 , the operations of training input manager  186  described above may be extended to present notifications and alerts to the athlete  14  in substantially real time during the activity. As shown at block  660 , training input manager  186  determines from the activity-related data recorded by route and performance recorder  176  whether or an update interval (e.g., an interval time and/or interval distance) has elapsed. The time and/or distance update interval(s) are preferably determined by the settings established by settings manager  184 . If a time or distance update interval has not elapsed, the process iterates at block  660  until a time or distance update interval has elapsed. The process then proceeds to block  662 , which illustrates training input manager  186  determining whether notifications are currently enabled by reference to the settings established by settings manager  184 . These notifications provide feedback to athlete  14  of his performance (e.g., distance traveled, pace, split time, heart rate, etc.) in substantially real time without reference to performance goals. 
         [0121]    If notifications are not currently enabled, the process passes to block  666 , which is described below. If, however, notifications are currently enabled, training input manager  186  computes one or more notifications to be presented to athlete  14  (e.g., distance traveled, pace, split time, heart rate, etc.). Next, training input manager  186  determines at block  666  whether or not the current activity is a planned workout within a training plan downloaded to portable training device  12 . This determination can be made based upon user selection of a planned workout at block  650  or by dynamic matching of the route data recorded by route and performance recorder  176  and route information associated with a workout route downloaded to portable fitness device  12 . If the current activity is not a planned workout, the process passes to block  674 , which is described below. If the current activity is a planned workout, the process proceeds to block  668 . 
         [0122]    Block  668  depicts training input manager  186  comparing at least one metric of the athlete&#39;s current performance to a corresponding performance goal provided to portable fitness device  12  as part of the planned workout. Training input manager  186  next determines at block  670  whether or not any alerts should be presented to athlete  14  based upon the performance comparison performed at block  186 . These alerts may include, for example, the following: [0120] Speed/pace too slow or too fast [0121] Total distance reached [0122] Heart rate too slow or too fast [0123] Distance or elevation gain milestone reached [0124] Split time too fast or too slow. The alerts determined at block  670 , if any, are then recorded in association with the reader data in internal memory device  62  at block  672  so that the guidance provided to athlete  14  may be subsequently reviewed. Following a negative determination at block  670  or following block  672 , training input manager  186  presents a performance update to athlete  14  in audible format that includes at least one notification or alert. That is, training input manager  186  locates an audio track within audio storage  66  or internal memory device  62  corresponding to a notification (e.g., “Pace is 8:30”) or an alert (e.g., “Pace under target by 10 seconds”) and presents the audio track to audio presentation module  192  for subsequent audible presentation to athlete  14 . Of course, such updates may additionally be presented visually to athlete  14  by visual presentation module  190 . Thereafter, the process returns to block  660 , which has been described. 
         [0123]    Referring now to blocks  680 - 682 , the operation of upload manager  174  is illustrated. As described above, upload manager  174  and route and performance recorder  176  determine at block  680  whether or not to upload activity-related data based upon one or more criteria, for example, whether WAN transceiver  104  can acquire a connection to the wireless WAN, the available storage within internal memory device  62 , an indication of whether or not a remote user is tracking the training of athlete  14  in real-time, and/or other criteria. If, based upon these and/or other criteria, upload manager  174  decides not to upload activity-related data, the process returns to block  680 . If, however, upload manager  174  decides to upload the formatted and compressed activity-related data, upload manager  174  outputs the activity-related data, including any alerts, via WAN transceiver  104  and antenna  106  to client computer system  44  and/or server computer system  42  utilizing radio frequency signals  36 . Thereafter, the process returns to block  680 . 
         [0124]    With reference now to  FIG. 7A , there is illustrated a Cartesian graph illustrating the over-reporting of distance traveled by “raw” or unprocessed GPS waypoints when GPS receiver  100  is traveling at low velocity (e.g., less than 30 miles per hour and, more particularly, less than 15 miles per hour). As GPS receiver  100  is transported by athlete  14 , GPS receiver  100  receives GPS signals  22  from GPS satellites  20 , where each GPS signal  22  contains a timestamp. From these GPS signals  22 , GPS reader  160  computes time-stamped waypoints A through O, which are plotted on an arbitrary Cartesian graph. As indicated by the varying spacing between the time-stamped waypoints and the irregular path of route  700 , time-stamped waypoints are subject to at least two types of error, namely, timing error and positional error. 
         [0125]    As can be seen, positional readings are based on a timestamp that may or may nor reflect the actual elapsed time between GPS readings. This timing error may be induced by a low performance processor driving GPS receiver  100  that does not have sufficient cycles to dedicate to GPS processing. Alternatively or additionally, timing error may be inserted by the use of assisted GPS (A-GPS), which requires round trip communication over the wireless WAN to validate a GPS reading, or by local filtering performed by GPS receiver  100  and/or GPS reader  160 . 
         [0126]    Additional positional error may also be caused by the inherent positional error of commercial (as opposed to military) GPS signals, which is typically between 3-5 meters. Consequently, when the sampling rate of the GPS signal causes more than one sample to be taken during time interval required to traverse the positional error distance, a zigzag route will be reported even if a relatively straight path is followed. As indicated by “flattened” GPS reading  702 , the cumulative distance between adjacent pairs of time-stamped waypoints A through O is thus greater than the true distance traversed  704  by a delta distance  706 . This distance error will also negatively impact any average or instantaneous velocity computations that depend on a correct reporting of distance traversed. 
         [0127]    Referring now to  FIG. 7B , there is depicted a high level logical flowchart of fin exemplary method of GPS filtering in accordance with the present invention. The illustrated method can be performed in hardware (e.g., by GPS receiver  100 ) and/or in software (e.g., by GPS reader  160 ). 
         [0128]    The process begins at block  710  and then proceeds to blocks  712 - 714 , which illustrates receiving and queuing in a pipeline a new GPS reading including at least a time stamp and a latitude/longitude duple, and optionally, a positional accuracy/uncertainty. After some time interval, a subsequent GPS reading is received and queued, as shown at block  714 . Although the present invention is not limited to such embodiments, it will hereafter be assumed that the pipeline holds a maximum of 3 GPS readings, identified in order of receipt as A, B and C. Next, at block  720 , a determination is made whether or not the length of the route segment between the two GPS readings most recently entered into the queue (i.e., B and C) is less than a first threshold, which in one embodiment is based upon (e.g., equal to) the (possibly variable) positional accuracy associated with the readings. If so, the process passes to block  722 , which illustrates discarding the most recent GPS reading (C) from the pipeline. Thereafter, the process returns to block  714 , which has been described. 
         [0129]    Returning to block  720 , in response to a determination that the distance traversed between the two most recent GPS readings (B and C) is not less than the threshold, the process bifurcates and proceeds to each of blocks  714  and  724 . Block  724  illustrates calculating the velocity of GPS receiver  100  over the route segments AB, BC and AC based upon the length of the route segments and the time intervals between the GPS readings. Next, the process passes to block  726 , which depicts determining whether or not a GPS reading in the pipeline is errant and should therefore be discarded. 
         [0130]    In one embodiment, the middle GPS reading (B) is determined to be errant if: (velocity AB)/velocity AC)&gt;Threshold2, or (velocity BC)/(velocity AC)&gt;Threshold2, where “velocity XY” refers to a velocity over route segment between points X and Y and “Threshold2” is a second threshold. In one embodiment, a second threshold ranging between 2 and 5, and preferably, about 3 is employed. 
         [0131]    In response to a determination at block  726  that a GPS reading in the pipeline is errant, the errant GPS reading is discarded from the pipeline, as shown at block  722 . Thereafter, the process returns to block  714 . If, on the other hand, a determination is made at block  726  that a GPS reading in the pipeline is not errant, the process proceeds to block  730 . Block  730  depicts the application of a smoothing algorithm to the GPS readings in the pipeline. In one embodiment, a curve fitting formula, such as least-squares curve fitting, is employed. A less computationally intensive alternative that may be employed is an equally weighted averaging algorithm such as: (latB′, lonB′)=((latA+latB+latC)/3, (lonA+lonB+lonC)/3) where latX, lonX is the latitude, longitude duple for GPS reading X and (latB′, lonB′) is a replacement latitude, longitude duple for GPS reading B. 
         [0132]    If an uncertainty or error “u” is available for each of GPS readings A, B and C (e.g., the uncertainties are supplied by GPS receiver  100  or derived based upon a heuristic that may account for the number of GPS satellites  20  available), a weighted averaging algorithm with possibly different weights for each GPS reading can alternatively be applied to “smooth” GPS reading B as follows: U=(1/uA)+(1/uB)+(1/uC) w1=(1/uA)/U w2=(1/uB)/U w3=(1/uC)/U (latB′, lonB′)=(w1*latA+w2*latB+w2*latC, w1*lonA+w2*lonB+w3*lonC) 
         [0133]    Yet another alternative is a partially weighted smoothing algorithm that applies a percentage of emphasis given to the uncertainties “u”: P=percentage emphasis of uncertainties; U=(1/uA)+(1/uB)+(1/uC) w1=[(1/uA)/U]*P+(1−P)/3 w2=[(1/uB)/U]*P+(1−P)/3 w3=[(1/uC)/U]*P+(1−P)/3 (latB′, lonB′)=(w1*latA+w2*latB+w2*latC, w1*lonA+w2*lonB+w3*lonC) Experimentally, a value of P=0.5 has been found to be effective in smoothing GPS readings. 
         [0134]    Following block  730 , the oldest GPS reading (C) is output from the pipeline at block  732  and recorded as route data. A determination is then made at block  734  whether or not more “raw” GPS readings will be received for the current route (e.g., whether a “Stop” input has been received in response to manipulation of an input button  80 ). If not, the process returns to block  714 , which has been described. If, however, no more “raw” GPS readings will be received for the current route, the process passes to block  736 , which illustrates outputting and recording as route data any remaining GPS readings in the pipeline. Thereafter, the process ends at block  740 . 
         [0135]    The smoothed GPS data output from the pipeline is preferably what is recorded by route and performance recorder  176  within internal memory device  62 . The process depicted in  FIG. 7B  can alternatively be implemented by software on a remote data processing system (e.g., server computer system  42  or client computer system  44 ) to correct the GPS data by post-processing or in real time. If the GPS data is corrected in real-time by the remote data processing system (e.g., server computer system  42 ), the corrected GPS data can be transmitted back to the source portable fitness device  12  or other GPS-enabled device for presentation or analysis. 
         [0136]    With reference now to  FIG. 8 , there is depicted a high level logical flowchart of an exemplary method of automatically presenting comparative split information to an athlete in substantially real-time in accordance with the present invention. The process can be implemented, for example, as an extension to training input manager  186  of  FIG. 2B . 
         [0137]    The process begins at block  800  in response to an athlete  14  initiating a monitored activity, for example, by entering a “Start” command utilizing one of input buttons  80  of portable fitness device  12 . The process then proceeds to block  802 , which illustrates a determination of whether or not athlete  14  is traversing a route previously traversed by athlete  14 . In a preferred embodiment, the determination depicted at block  802  can be made in response to user input (e.g., the user selecting a route or planned workout from the internal memory device  62  of portable training device  12 ) or can be made dynamically by route matching. 
         [0138]    In response to a determination at block  802  that the route being traversed is known to be a route that was previously traversed (e.g., because of user input), the process proceeds to block  830 , which illustrates training input manager  186  requesting and receiving a download from server computer system  42  of split information for the current route stored within the athlete&#39;s personal training journal within training journal database  54 . The split information, which preferably provides a split for each equal sized route segment (e.g., quarter mile, half kilometer, etc.), may indicate a most recent, average and/or personal record split time for the athlete  14 . Based upon the split information, training input manager  186  generates and presents a performance update to athlete  14  in audible format, as described above with respect to block  674  of  FIG. 6D  (block  832 ). That is, training input manager  186  locates an audio track within audio storage  66  or internal memory device  62  corresponding to the alert (e.g., “Mile 1 under PR by 6 seconds”) and presents the audio track to audio presentation module  192  for subsequent audible presentation to athlete  14 . Of course, such alerts may additionally be presented to athlete  14  by visual presentation module  190 . 
         [0139]    The process next passes to block  834 , which depicts training input manager  186  determining whether or not the route has been completed, for example, by determining whether athlete  14  has indicated “Stop” utilizing one of input buttons  80  and/or by determining whether a known terminal waypoint of the route has been reached. If training input manager  186  determines at block  834  that athlete  14  has completed the route, training input manager  186  optionally uploads the split information for each segment of the route to the athlete&#39;s personal training journal within training journal database  54  on server computer system  42 . (Data recorder module  226  of server computer system  42  could recompute the split information to reduce data transmission over the wireless WAN.) Thereafter, the process ends at block  840 . 
         [0140]    Referring again to block  802 , in response to training input manager  186  determining that athlete  14  is traversing an unknown route, the process proceeds to block  804 . Block  804  illustrates training input manager  186  uploading the GPS reading at a first or next split distance (e.g., 0 miles, ¼ mile, etc.) to a route matching module  248  running on server computer system  42 . In response to receipt of the GPS reading, route matching module  248  compares the location specified by the GPS reading with previously traversed routes recorded within the athlete&#39;s personal training journal within training journal database  54  on server computer system  42  (block  806 ). If no location match with a previously traversed route is found within a given range (e.g., .+−.10 meters), the process passes to block  810 , which illustrates route matching module  248  determining whether or not a possible match still may exist (e.g., whether a previously traversed route is found within 2000 meters of the GPS reading received from portable fitness device  12 ). 
         [0141]    If route matching module  248  determines at block  810  that a match may still be possible, the process returns to block  804 , with route matching module  248  optionally signaling training input manager  186  that no match has been found but that a match is still possible. If, on the other hand, route matching module  248  determines that no match is possible (e.g., no previously traversed route was found within 2000 meters of the GPS reading received from portable fitness device  12 ), the process ends at block  840 , with route matching module  248  optionally signaling training input manager  186  that no match has been found or is still possible. 
         [0142]    Returning to block  808 , in response to route matching module  248  determining that a matching previously traversed route resides in the athlete&#39;s personal training journal, route matching module  248  downloads split information for the route to training input manager  186 , as illustrated at block  820 . Training input manager  186  then utilizes the downloaded split information to generate and presents a performance update to athlete  14  in audible and/or visual format in substantially real time, as described above with respect to block  832  of  FIG. 6D  (block  822 ). Training input manager  186  thereafter monitors the GPS data recorded by route and performance recorder  176  as shown at block  824  to determine whether athlete  14  remains on the matched route downloaded from server computer system  42 . If training input manager  186  determines that athlete  14  is remaining on the matched route downloaded from server computer system  42 , training input manager  186  continues to present comparative split information, as depicted at block  822 . 
         [0143]    If, however, training input manager  186  determines that athlete  14  has left the matched route, training input manager  186  further determines at block  826  whether athlete  14  has finished the route, for example, by determining whether athlete  14  has indicated “Stop” utilizing one of input buttons  80  and/or by determining whether a known terminal waypoint of the matched route has been reached. If training input manager  186  determines at block  826  that athlete  14  has not finished the matched route, training input manager  186  attempts to match a new route, as indicated by the process returning to block  804 . If, however, training input manager  186  determines at block  826  that athlete  14  has finished the matched route, the process passes to blocks  836  and  840 , which have been described. 
         [0144]    Referring now to  FIG. 9 , there is depicted a block diagram of an exemplary playlist management architecture in accordance with the present invention. For clarity,  FIG. 9  illustrates only those portions of server computer system  42  and portable fitness device  12  helpful in gaining an understanding of the invention. As depicted, the playlist architecture includes a server playlist management component  900 , a track library  902  containing songs and/or other audio tracks, and a track preferences database  904  residing at or accessible to server computer system  42 . The playlist architecture optionally includes an auxiliary track library  906  containing additional songs and/or other tracks that maybe accessed to augment the contents of track library  902 . Auxiliary track library  906  may reside on a client computer system  44  or at a commercial music distribution service licensed to distribute tracks. In order to comply with copyright laws, access to each track in track library  902  may be restricted by server playlist management component  900  to only those users having a license to the track (e.g., as evidenced the user uploading the track directly from auxiliary track library  906  through selection of a hyperlink provided in a web page served by server playlist management component  900  and HTTP server  214 ). 
         [0145]    Server playlist management component  900  is coupled for communication by a communication network  910  (e.g., Internet  40  and the wireless WAN) to a client playlist management component  920  residing on portable fitness device  12 . Client playlist management component  920  receives a set of substantially real-time inputs  922 , which may be provided, for example, by external sources (e.g., server computer system  42  or other web servers) coupled to communication network  910  and/or by readers  160 - 166 . Inputs  922  may include, for example, weather conditions, athletic performance (e.g., pace, heart rate, distance, etc.), surface type (e.g., paved or unpaved), adjacent scenery, and/or grade (e.g., uphill, flat or downhill). Client playlist management component  920  is further coupled to audio storage  66 . 
         [0146]    As described in greater detail below, the playlist architecture enables the creation of custom and/or dynamic playlists that will enhance a user&#39;s activity (e.g., workout). For example, tracks may be played during the activity to motivate, relax or reward an athlete or establish a desired pace for selected segments of a route. 
         [0147]    With reference now to  FIG. 10A , there is depicted an exemplary method of pre-processing an audio track to determine a corresponding activity pace in accordance with the present invention. As depicted, the process begins at block  1000  in response to designation of an audio track to be processed, for example, by a user invoking the uploading of a track to track library  902 . The process then proceeds to block  1002 , which depicts server playlist management component  900  applying an audio filter  901  to the track to determine a tempo for the track, for example, in beats per minute. Server playlist management component  900  then determines at block  1004  a corresponding pace for at least one athletic activity (e.g., running, hiking, cycling, etc.) based upon the track tempo and an estimated distance traversed per repeated motion (e.g., stride, pedal revolution, etc.) matching the tempo. Server playlist management component  900  next stores the audio track (or at least an identifier thereof) in track library  902  in association with one or more associated paces. Thereafter, the process ends at block  1008 . 
         [0148]    Referring now to  FIG. 10B , there is depicted a high level logical flowchart of an exemplary method of constructing a user playlist in accordance with the present invention. The process begins at block  1010 , for example, in response to a user logged into server computer system  42  and viewing a route in his training journal via a GUI presented by training journal interface  232  invoking a playlist wizard  903  within server playlist management component  900 . The process then proceeds to block  1012 , which depicts the playlist wizard  903  of server playlist management component  900  calling training journal interface  232  to present a GUI containing a selected view (e.g., an elevation view) of the route. The visual presentation of the route is preferably demarked into a plurality of route segments based upon, for example, substantial changes in route grade, predetermined distances, landmarks adjacent the route, user input, etc. The user may be permitted to change the location on the route of the demarcation between segments, for example, by manipulating the location of a line representing a segment interface utilizing a graphical pointer. 
         [0149]    Next, at block  1014 , playlist wizard  903  obtains a pace for each of the route segments comprising the route. For example, playlist wizard  903  may utilize a user-entered pace or a user&#39;s historical average pace (for the specific route or overall) as the base pace for the route and, from the base pace, calculate a pace for each route segment based upon the average grade of each route segment. Alternatively, playlist wizard  903  may use one or more paces associated with the route by a workout in a training plan. The pace for each route segment may desirably be graphically indicated on the elevation view of the route with a respective attribute (e.g., color or pattern) and/or numeric label (e.g., presented in a flyover popup label presented when a graphical pointer is positioned over a route segment). 
         [0150]    As depicted at blocks  1016 - 1018 , playlist wizard  903  permits the user to build a playlist for the route by associating one or more tracks from track library  902  and/or auxiliary track library  906 , for example, by dragging one or more tracks presented within a picklist to specific locations on the graphical presentation of the route. In addition, playlist wizard  903  may automatically (e.g., in response to user selection of an “Autofill” button with a graphical pointer) associate one or more tracks to portions of route segments not currently having associated tracks by matching (within a range) the pace of each track from track library  902  as determined at block  1004  with the pace of a route segment as obtained at block  1014 . This automatic playlist construction may further be informed by user preferences, which may be entered as described below with reference to  FIG. 10D . 
         [0151]    The process proceeds from block  1018  to block  1020 , which illustrates storing the playlist within the user&#39;s personal journal in training journal database  54  such that the beginning of each track is associated with a particular location on the route. As indicated at block  1030 , the playlist is optionally published to the community along with the route, for example, in response to a user selecting “Publish” button  496  of  FIG. 5B . 
         [0152]    As depicted at blocks  1032  and  1034 , when the route is subsequently downloaded to a portable fitness device  12 , for example, in response to a input invoking the download or in response to download manager  246  automatically pushing the route to the portable fitness device  12 , the playlist is downloaded in association with the route. In this manner, the tracks within the playlist may be played at appropriate points along the route, as described below with reference to  FIG. 10C . 
         [0153]    With reference now to  FIG. 10C , there is illustrated a high level logical flowchart of a location-based method of presenting audio tracks as a route is traversed in accordance with the present invention. The illustrated process may be performed, for example, by audio presentation module  192  of portable fitness device client  154 . 
         [0154]    As illustrated, the process begins at block  1040  and then proceeds to block  1042 , which depicts audio presentation module  192  receiving a new GPS reading from GPS reader  160  or route and performance recorder  176 . At blocks  1044  and  1046 , audio presentation module  192  then determines by reference to route information within internal memory device  62  whether the current GPS reading is within a predetermined range of a point on the route and, if so, whether a track within a playlist is associated with the point on the route. If either of the determinations depicted at blocks  1044  and  1046  is negative, the process returns to block  1042 , which has been described. If, on the other hand, both of the determinations at blocks  1044  and  1046  are affirmative, audio presentation module  192  further determines at block  1048  whether or not it is already playing the track associated with the matching point on the route. If so, the process returns to block  1042 , which has been described. If, on the other hand, the track is not already being played, audio presentation module  192  plays the track, as illustrated at block  1050 . 
         [0155]    As depicted at block  1052 , if the route is complete, as indicated, for example, by a user input received by the portable fitness device  12  via input buttons  80 , the process ends at block  1054 . If the route is not complete, the process returns to block  1042 , which has been described. 
         [0156]    Referring now to  FIG. 10D , there is depicted a block diagram of an exemplary graphical user interface (GUI)  1060  through which user audio preferences may be entered in accordance with the present invention. GUI  1060  may be presented within a browser interface on client computer  44  by user preferences package  905  of server playlist management component  900 , for example, in response to a user establishing an account with server computer system  42  or in response to a user logging into server computer system  42  and entering an indication of a desire to enter playlist preferences. 
         [0157]    As shown, GUI  1060  includes a track library window in which a list of tracks is presented. Entries in the track list may include information such as a track name, track length, genre and corresponding pace (e.g., determined as depicted in  FIG. 10A ). Of course, entries in the track list may include additional information, such as an artist and/or album name, track price, etc. In response to a user input associated with a track in the track list, for example, a user right-clicking on an entry with graphical pointer  1066  and then making a selection of a “Playlist Preferences” entry from a drop down list, user preferences package  905  causes a playlist preferences window  1064  to be presented within GUI  1060 . 
         [0158]    Playlist preferences window  1064  presents a number of GUI components that gather information regarding when the user would want to hear a particular track. In the depicted embodiment, playlist preferences window  1064  includes radio buttons  1068  that the user can select with graphical pointer  1066  to indicate what grade (e.g., uphill, flat, or downhill), activity phase (e.g., warm-up or cool down), tempo influence (e.g., slow down, maintain, or accelerate), or weather (e.g., hot, cold, wet, or windy) the user wants to associate with the selected track. In addition, playlist preference window  1064  includes a text box  1070  and associated “Browse” button  1072  that a user may employ to enter a name of a scenic location or type of scenery with which the user desires to associated the selected track. 
         [0159]    In addition to track specific preferences, user preferences package  905  preferably further collects the user&#39;s general track preferences, such as preferred genres of music, preferred activity phases for which presentation of tracks is enabled or disabled, etc., via one or more unillustrated graphical user interfaces. Using one or more of the track-specific and/or general preferences, the playlist architecture of the present invention can dynamically create and present a playlist to a user in association with an activity. 
         [0160]    With reference now to  FIG. 10E , there is illustrated a high level logical flowchart of an exemplary method of dynamic playlist management in accordance with the present invention. The depicted process can be performed remotely by client playlist management component  920  of portable fitness device  12 , by server playlist management component  900  on server computer system  42  utilizing communication with portable fitness device  12  over communication network  910 , or a combination of the two. The depicted method of dynamic playlist management can be performed in response to a user input or automatically as a default mode of operation in the absence of user designation of a particular playlist or user designation of a route with an associated user-constructed playlist. 
         [0161]    As illustrated, the process begins at block  1074  and then proceeds to block  1075 , which illustrates playlist management component  900  or  920  receiving a set of substantially real-time inputs  922  from external sources (e.g., server computer system  42  or other web servers) coupled to communication network  910  and/or by readers  160 - 166  within portable fitness device  12 . As described above, the set of inputs  922  can include, for example, weather conditions, athletic performance (e.g., pace, heart rate, distance, etc.), surface type (e.g., paved or unpaved), adjacent scenery, and/or route grade (e.g., uphill, flat or downhill). In response to receipt of inputs  922 , playlist management component  900  or  920  determines at blocks  1076 ,  1082 ,  1083 , and  1084  whether inputs  922  indicate a particular activity phase (e.g., warm-up or cool down), a particular grade (e.g., uphill or downhill), proximity to a particular scenic input, or an environmental (e.g., weather) condition. If not, the process proceeds through page connector A to block  1085 , which is described below. If, on the other hand, inputs  922  indicate a particular activity phase, a particular grade, or a particular environmental or scenic input, the process proceeds to blocks  1077 - 1078 . 
         [0162]    Blocks  1077 - 1078  depict playlist management component  900  or  920  determining whether the detected input has an associated track based upon the athlete&#39;s playlist preferences (e.g., playlist preferences entered utilizing GUI  1060  of  FIG. 10D ) and, if so, whether the general preferences have enabled or disabled playing the track for the particular input. If an associated track is identified and its playing is enabled, the process passes to block  1079 , which illustrates a determination of whether or not the associated track is already playing. If so, the process returns to block  1075 , which has been described. If not, the process proceeds to block  1080 , which illustrates a determination regarding whether or not the track has recently been played, for example, in a user-selectable or predetermined non-repeating interval (e.g., 5 minutes). If so, the process returns to block  1077 , representing a determination of whether or not an alternative track is associated with the triggering input. If a determination is made at block  1080  that the associated track determined at block  1077  has not recently been played, the process passes to block  1081 . 
         [0163]    Block  1081  illustrates playlist management component  900  or  920  accessing or causing the associated track to accessed, for example, from audio storage  66 , track library  902  or auxiliary track library  906 . Presentation of the associated track by audio presentation module  192  is then invoked, as depicted at block  1089 . Thereafter, the process returns to block  1075 , which has been described. 
         [0164]    Returning to block  1085 , a determination is made by reference to the pace and/or location or other inputs received at block  1075  whether the activity has been completed. If so, the process depicted in  FIG. 10E  ends at block  1087 . If, however, a determination is made at block  1085  that the activity has not been completed, the process proceeds to block  1088 , which depicts playlist management component  900  or  920  selecting a track from audio storage  66  or track library  902  corresponding to the current pace of athlete  14 . Playlist management component  900  or  920  then invokes presentation of the selected track, as shown at block  1089 . Thereafter, the process returns to block  1075 , which has been described. 
         [0165]    It will be appreciated by those skilled in the art that although the methods of  FIG. 10A-10E  have been described with particular reference to use by an athlete  14 , it will be appreciated that the playlist management methodologies disclosed herein may be applied more generally to provide audio presentation services based upon a user&#39;s environment and/or location. Thus, for example, the services may be advantageously utilized by tourists, persons commuting in cars, buses, trains, etc. 
         [0166]    Referring now to  FIG. 11A , there is depicted a high level logical flowchart of an exemplary method of publishing a challenge route to a user community in accordance with the present invention. As shown, the process begins at block  1100 , for example, with a user such as an athlete  14  logging into server computer system  42  from a client computer  44  and invoking the display by training journal interface  232  of a particular route in his personal training journal within training journal database  54  that has been traversed by the athlete  14 . One exemplary GUI for viewing a traversed route is described above in detail with reference to  FIGS. 5A-5B . 
         [0167]    The process then proceeds from block  1100  to block  1102 , which depicts the user designating the particular route as a “challenge” route, for example, through interaction with a GUI displayed as a result of the selection of “Publish” button  496  of  FIG. 5B  utilizing graphical pointer  262 . In response to designation of the particular route as a challenge route, route generation and publication module  220  computes a point value for the challenge route, for example, based upon the total distance and cumulative elevation gain of the uphill portions of the route (block  1104 ). Route generation and publication module  220  then publishes the route in route database  52  for selection and download to the portable fitness devices  12  of other members of the service community. Thereafter, the process ends at block  1108 . 
         [0168]    With reference now to  FIG. 11B , there is illustrated a high level logical flowchart of an exemplary method of staging the device-assisted traversal of a challenge route in accordance with the present invention. As depicted, the process begins at block  1110  and then proceeds to block  1112 , which illustrates training input manager  186  of portable fitness device  12  determining if a user, such as athlete  14 , has entered an input (e.g., using input buttons  80 ) signifying the selection of a challenge route previously downloaded to internal memory device  62  of portable fitness device  12 . (The meta-data associated with the route in internal memory device  62  preferably indicates whether a downloaded route is a challenge route.) If not, other processing is performed, as depicted at block  1113 . 
         [0169]    In response to a determination by training input manager  186  that a challenge route has been selected for traversal, training input manager  186  further determines at block  1114  whether directions to the starting point should be presented. For example, training input manager  186  may determine if athlete  14  has entered an addition input requesting such directions or has simply not canceled the presentation of such directions. If a determination is made at block  1114  that no directions are needed or desired, the process proceeds to block  1118 , which is described below. If, however, a determination is made at block  1114  that directions to the starting point of the route are needed or desired, training input manager  186  calls audio presentation module  192  and/or visual presentation manager  190  at block  1116  to present turn-by-turn audible direction and/or a map to guide athlete  14  to the starting point of the challenge route. This functionality is particularly helpful if the challenge route is off-road. 
         [0170]    The process proceeds from block  1116  to block  1118 , which illustrates training input manager  186  determining by reference to the GPS readings provided by GPS reader  160  whether or not athlete  14  has transported portable fitness device  12  to the starting point of the challenge route (e.g., within a positional error range (5 meters) of the starting location). If not, the process returns to block  1114 , which has been described. If, however, training input manager  186  determines at block  1118  that athlete  14  has transported portable fitness device  12  to the starting point of the challenge route, the process passes to block  1120 . 
         [0171]    Block  1120  depicts training input manager  186  calling audio presentation module  192  to present an audible start message to the user from audio storage  66 . For example, the start message may state, “Forward motion will start timing the challenge route.” Following presentation of the start message, training input manager  186  monitors GPS readings provided by GPS reader  160  at block  1122  for forward motion of portable fitness device  12  along the challenge route. When forward motion is detected, the process proceeds to block  1124 , which depicts training input manager  186  calling audio presentation module  192  and/or visual presentation manager  190  to present real-time turn-by-turn audible direction and/or a map to guide athlete  14  along challenge route in response to GPS readings provided by GPS reader  160 . Training input manager  186  may also present comparative performance or split information as the challenge route is traversed, for example, indicating comparative overall performance or splits with respect to a previous best time for traversing the challenge route (e.g., “You are 10 seconds off of best time”). Presentation of directional assistance continues until training input manager  186  determines an end point of the challenge route. Thereafter, the process ends at block  1128 . 
         [0172]    Referring now to  FIG. 11C , there is depicted a high level logical flowchart of an exemplary method of presenting the results of a traversal of a challenge route in accordance with the present invention. The process begins at block  1130  and the proceeds to block  1131 , which illustrates data recorder module  226  running on server computer system  42  receiving data recorded for a route traversed by a portable fitness device  12  from upload manager  174  running on the portable fitness device  12  and recording the data in an athlete&#39;s personal training journal within training journal database  54 . Upload manager  174  preferably transmits the data in conjunction with a parameter indicating whether or not the route for the data were collected is a challenge route, permitting data recorder module  226  to determine whether the data is for a challenge route, as shown at block  1132 . If the data is not for a challenge route, the process ends at block  1140 . If, however, data recorder module  226  determines at block  1132  that the data is for a challenge route, the process proceeds to blocks  1136 - 1138 . 
         [0173]    Block  1136  depicts data recorder module  226  computing feedback regarding the traversal of the challenge route. For example, based upon the route data and other results for the same route contained in training journal database  54 , data recorder module  226  may compute an absolute ranking of the total time for the route traversal (e.g., an overall and age-bracketed ranking) and a normalized ranking for the route traversal. The normalized ranking may compensate for factors such as wind speed and direction, athlete age, how long the athlete has been training, and/or temperature to correctly “handicap” diverse environment conditions and athletic abilities. As shown at block  1138 , data recorder module  226  then downloads to portable fitness device  12  feedback information regarding the traversal of the challenge route. For example, data recorder module  226  may transmit the absolute and normalized rankings, as well as points earned by the athlete  14  for the traversal of the challenge route and a cumulative point total for all challenge routes traversed by the athlete  14 . The feedback data transmitted by data recorder module  226  to portable fitness device  12  are received by training input manager  186  and then presented by visual presentation module  190  and/or audio presentation module  192 . The process depicted in  FIG. 11C  then terminates at block  1140 . 
         [0174]    With reference now to  FIG. 12A , there is illustrated a high level block diagram of a system architecture that provides nutritional guidance to a user in accordance with the present invention. For clarity,  FIG. 12A  illustrates only those portions of server computer system  42  and portable fitness device  12  helpful in gaining an understanding of the invention. 
         [0175]    As depicted, the nutritional guidance architecture includes a server computer system  42  and a portable fitness device  12 . Server computer system  42  includes a server nutritional assistant  1200  and a meal plan database  1202  containing personal meal plans for subscribers. The personal meal plans may specify, for example, a caloric intake goal and/or other nutritional information (e.g., grams of fats, carbohydrates and sugars, food categories, food “point” value, etc.) on a per-meal or daily basis. Residing at or accessible to server computer system  42  is a restaurant database  904 , which contains information regarding geographic locations of restaurants, hours of operation, and menu items available at the restaurants. With respect to menu items, restaurant database  904  preferably indicates an estimated calorie amount and optionally additional nutritional information (e.g., grams of fats, sugars, and total carbohydrates). The nutritional guidance architecture optionally further includes an auxiliary restaurant database  1206  (which may reside on a web server or represent a web portal such as Yahoo!) containing duplicate or additional information that maybe accessed to locate restaurants, obtain information (e.g., calories or nutritional information) regarding menu items, and/or populate restaurant database  1204 . 
         [0176]    Server nutritional assistant  1200  is coupled for communication by a communication network  1210  (e.g., Internet  40  and the wireless WAN) to a client nutritional assistant  1220  residing on portable fitness device  12 . Client nutritional assistant  1220  receives inputs from server nutritional assistant  1200  and presents the inputs via calls to visual presentation module  190  and/or audio presentation module  192 . 
         [0177]    As described in greater detail below, the nutritional guidance architecture enables a user (e.g., athlete  14 ) of portable fitness device  12  to determine menu items conforming to a meal plan that are in proximity to the user&#39;s geographic location. The menu items may be selected for presentation to the user based upon the caloric expenditure associated with activities recorded in the user&#39;s personal training journal within training journal database  54 . 
         [0178]    Referring now to  FIG. 12B , there is depicted a high level logical flowchart of an exemplary method by which a client device, such as portable fitness device  12 , queries a service for nutritional guidance in accordance with the present invention. The process begins at block  1230  and thereafter proceeds to block  1232 , which depicts client nutritional assistant  1220  monitoring the user inputs (e.g., manipulations of inputs buttons  80 ) of portable fitness device  12  for an input signifying a dining decision query. In response to detection of a user input signifying a dining decision query, the process next passes to block  1234 , which illustrates client nutritional assistant  1220  sending a dining decision query to server, such as nutritional assistant  1200  running on server computer system  42 , via communication network  1210 . The dining decision query contains the geographic location of portable fitness device  12  (e.g., as indicated by a recent GPS reading obtained from GPS reader  160 ) may optionally further contain or be interpreted as containing a parameter indicating one or more proximities (e.g., 1 mile, 3 miles, 5 miles) to the current geographic location. 
         [0179]    As shown at block  1236 , client nutritional assistant  1220  then iterates until a response to the dining decision query is received from server nutritional assistant  1200  via communication network  1210 , for example, in the form of an XML document. In response to receipt of the response, client nutritional assistant  1220  presents the response to the user at block  1238  by making appropriate calls to visual presentation module  190  and/or audio presentation module  192 . In one embodiment, the XML response document includes a picklist containing one or more entries that each identifies a restaurant name, a distance (e.g., in miles or kilometers) to the restaurant from the current geographic location of portable fitness device  12 , and a number of menu choices available at that restaurant that comply with the user&#39;s meal plan. User selection of an entry of the picklist may invoke further display of a map to the restaurant from the current geographic location of portable fitness device  12  and/or images of the available menu items. 
         [0180]    Client nutritional assistant  1220  then determines at block  1240  if a user input has been received (e.g., via input buttons  80 ) indicating that the user desires to receive additional results from more distant restaurants. If not, the process ends at block  1242 . If so, client nutritional assistant  1220  increases the proximity parameter at block  1244  and issues another dining decision query with the increased proximity parameter, as shown at block  1234 . Thereafter, the process continues as has been described. 
         [0181]    With reference now to  FIG. 12C , there is illustrated a high level logical flowchart of an exemplary method by which a server device responds to a query for nutritional guidance in accordance with the present invention. The depicted process begins at block  1250  and thereafter proceeds to block  1252 , which illustrates server nutritional assistant  1200  waiting until a dining decision query is received from a client device, such as portable fitness device  12  or client computer system  44 . In response to receipt of the dining decision query, server nutritional assistant  1200  accesses restaurant database  1204  and/or auxiliary restaurant database  1206  at block  1254  to identify one or more restaurants within at least one zone of proximity to the client device (e.g., portable fitness device  12 ). 
         [0182]    As shown at block  1256 , for at least one restaurant, and preferably for each restaurant identified at block  1254  that is within the proximity zone, server nutritional assistant  1200  then determines by reference to restaurant database  1204  and/or auxiliary restaurant database  1206  which menu items at the restaurant, if any, can be eaten by the user, given the time of day (i.e., an indication of whether the meal is a breakfast, lunch, dinner or snack) and the nutritional information (e.g., caloric intake goal, grams of fats, sugars and carbohydrates, food “point” values, etc.) specified in the user&#39;s meal plan stored within meal plan database  1202 . Server nutritional assistant  1200  may further take into consideration caloric expenditure estimated from recent activity (e.g., same or previous day) recorded for the user within training journal database  54 . In this manner, caloric expenditure can be compensated for or “rewarded” by the inclusion of higher calorie menu item selections. Server nutritional assistant  1200  then downloads its response to the dining decision query to the client device (e.g., portable fitness client  12 ) via communication network  1210 , as shown at block  1258 . Thereafter, the process terminates at block  1260 . 
         [0183]    While the invention has been particularly shown as described with reference to a preferred embodiment, it will be understood by those skilled in the art that various changes in form and detail may be made therein without departing from the spirit and scope of the invention. For example, while the present invention has been described with respect to an exemplary software configuration in which software performing certain functions of the present invention resides on a server computer system of a service provider (e.g., of a subscription service), those skilled in the art will appreciate that, in alternative embodiments, such software may alternatively reside on a client computer system, such as client computer system  44 , and/or on portable fitness device  12 . 
         [0184]    Furthermore, while the present invention has been described with reference to tracking and visualizing the performance and/or route of an athlete, those skilled in the art will appreciate that the present invention may also be applied to tracking and visualizing the location and movement of other persons, such as children or criminals under electronic supervision, or objects. 
         [0185]    Moreover, although aspects of the present invention have been described with respect to a data processing system executing program code that directs the functions of the present invention, it should be understood that present invention may alternatively be implemented as a program product for use with a data processing system. Program code defining the functions of the present invention can be delivered to a data processing system via a variety of signal-bearing media, which include, without limitation, non-rewritable storage media (e.g., CD-ROM), rewritable storage media (e.g., a floppy diskette or hard disk drive), and communication media, such as digital and analog networks. It should be understood, therefore, that such signal-bearing media, when carrying or encoding computer readable instructions that direct the functions of the present invention, represent alternative embodiments of the present invention.