Patent Publication Number: US-2015085323-A1

Title: Application Form Processing

Description:
FIELD 
     Embodiments relate generally to an approach for processing application forms. 
     BACKGROUND 
     The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, the approaches described in this section may not be prior art to the claims in this application and are not admitted to be prior art by inclusion in this section. 
     Current approaches for processing application forms have significant limitations. For example, application forms for education programs are typically printed and distributed to candidate students. Candidate students complete the printed application forms and mail or scan and email the completed application forms to the host education institution. The host education institution reviews the completed applications and manually enters the data from the completed application forms into an electronic system, such as a word processing program or an electronic spreadsheet program. This approach is very labor intensive and susceptible to errors. 
     SUMMARY 
     An approach is provided for processing application forms. An application form processing service executing on a network device receives, over one or more communications networks from a scanning device, scanned document data that represents a plurality of education application forms scanned by the scanning device. The application form processing service causes the scanned document data to be processed to identify application form data contained in the plurality of education application forms scanned by the scanning device. The application form data includes one or more application form fields contained in the plurality of education application forms. The application form processing service causes the application form data to be stored in a database management system and the application form processing service causes at least a portion of the application form data to be provided to the client device. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       In the figures of the accompanying drawings like reference numerals refer to similar elements. 
         FIG. 1  is a block diagram that depicts an example arrangement for processing application forms. 
         FIG. 2  is a flow diagram that depicts an approach for application form processing. 
         FIG. 3  is a message ladder diagram that depicts the exchange of messages between various elements of an arrangement for processing application forms according to an embodiment. 
         FIG. 4  is a block diagram that depicts an example educational application form  400 . 
         FIG. 5A  depicts an example user interface provided by an application program that allows user to enter information for new educational events and for printing application forms. 
         FIG. 5B  is a table that stores educational event data. 
         FIG. 5C  is an example user interface that allows a user to search for student information by event name or ID, school name, student name or other information. 
         FIG. 5D  depicts an example results screen that depicts the student information for three students participating in a particular education program. 
         FIG. 6  depicts an example operation panel of a scanning device. 
         FIG. 7  is a block diagram of a computer system on which embodiments of the invention may be implemented. 
     
    
    
     DETAILED DESCRIPTION 
     In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, to one skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring the present invention. Various aspects of the invention are described hereinafter in the following sections:
         I. OVERVIEW   II. APPLICATION FORM PROCESSING ARCHITECTURE
           A. Scanning Devices   B. Client Devices   C. Database Management System   D. Network Services   
           III. MERGING SCANNED DOCUMENT DATA   IV. ACCESSING AND USING APPLICATION FORM DATA
           A. Browsing Student Information   B. Creating Newsletters   C. Statistical Analysis   
           V. IMPLEMENTATION MECHANISMS       

     I. Overview 
     An approach is provided for processing application forms. The approach is an end-to-end approach that allows a user to have a plurality of printed application forms scanned at scanning device, and have the scanned document data generated by the scanning device automatically processed by an application form processing service implemented on a network. The application form processing service causes application form data to be obtained from the scanned document data, for example by using one or more data capture services, and the application form data to be stored on network storage and/or a database management system. Users may access and manage the application form data stored on the network storage and/or a database management system via client devices. This may include using a search tool to locate particular application form data of interest and editing, deleting, or adding to the particular application form data. The approach provides a user-friendly experience for processing application forms from disparate sources. 
     II. Application Form Processing Architecture 
       FIG. 1  is a block diagram that depicts an example arrangement  100  for processing application forms. Arrangement  100  includes scanning devices  102 ,  104 , client devices  106 ,  108 , a database management system  110  and other network services  112  communicatively coupled via a network  114 . Network  114  may include any number of network connections, for example, one or more Local Area Networks (LANs), Wide Area Networks (WANs), Ethernet networks or the Internet, and/or one or more terrestrial, satellite or wireless links. The elements depicted in arrangement  100  may also have direct communications links that may vary depending upon a particular implementation. 
     A. Scanning Devices 
     Scanning devices  102 ,  104  are any type of device that includes the capability to scan one or more printed documents and generate scanned document data that represents the one or more printed documents. The scanned document data may be in a variety of formats, depending upon a particular implementation. One example format is the portable document format (PDF) by Adobe Systems, Inc. Scanning devices  102  may also include a capability to convert scanned document data from a non-text format, such as PDF, to a text-based format, using for example, optical character recognition (OCR). Scanning device  102  may also include the capability to transmit the scanned document data to another location or device, for example, to a computer connected to the scanning device  102  or over a network to a network device. Examples of scanning devices  102 ,  104  include, without limitation, a scanner and a multi-function peripheral that includes one or more functions in addition to scanning, such as printing, copying, faxing, etc. Although embodiments are described herein in the context of two scanning devices  102 ,  104 , embodiments are applicable to any number and types of scanning devices. 
     Scanning devices  102 ,  104  may include a user interface, such as an operation panel, screen, touchscreen, etc., for displaying information to users and receiving user input from users. The user interface may include controls that allow a user to scan application forms  116 ,  118 , respectively. The controls may include physical controls, such as buttons and actuators, as well as graphical user interface (GUI) objects displayed on the user interface. The user interface for scanning devices  102 ,  104  may also allow a user to specify a destination for scan data generated by scanning devices  102 ,  104 . Example destinations include, without limitation, a device name, network address, or email address. 
     B. Client Devices 
     Client devices  106 ,  108  may be any type of client device, depending upon the particular implementation. Example client devices include, without limitation, personal or laptop computers, workstations, tablet computers, personal digital assistants (PDAs) and telephony devices such as smart phones. Client devices  106 ,  108  may include applications including, for example, Web browsers and other client-side applications, such as data processing services  130  that are described in more detail hereinafter. 
     C. Database Management System 
     Database Management System (DBMS)  110  may be implemented by any type of database management system for storing and managing application form data  126 . DBMS  110  may include volatile storage, non-volatile storage, or any combination of volatile storage and non-volatile storage, depending upon a particular implementation. 
     D. Network Services 
     Application form processing service  120  is a service that is configured to manage the processing of scan data as described herein. This includes receiving, over network  114  from scanning devices  102 ,  104 , scanned document data that represents a plurality of educational application forms scanned by scanning devices  102 ,  104 . Application form processing service  120  causes application form data  126  to be obtained from the scanned document data and stored in storage  124  and/or in DBMS  110 . This may include application form processing service  120  invoking data capture service  122  or other network services  112  to perform data capture optical character recognition (OCR) on the scanned document data to obtain application form data  126 . Application form data  126  may include data that indicates one or more data fields and their contents included on the application forms  116 ,  118  scanned by scanning device  102 ,  104 . For example, in the context of education application forms, information about a student applying for an education program may be obtained. This may include, for example the name and contact information for an applicant and the applicant&#39;s parents or guardians and medical history information. 
     III. Application Form Processing 
       FIG. 2  is a flow diagram  200  that depicts an approach for application form processing, according to an embodiment. The steps depicted in  FIG. 2  provide an overview of an embodiment and are described in more detail hereinafter with respect to the message ladder diagram of  FIG. 3 . In step  202 , application forms are scanned and scanned document data is generated. In step  204 , the scanned document data is transmitted to an application form processing service. For example, scanning devices  102 ,  104  cause the scanned document data to be transmitted over network  114  to application form processing service  120 . 
     In step  206 , the application form processing service causes the scanned document data to be processed to obtain application form data. For example, application form processing service  120  may use data capture service  122  and other services to obtain, from the scanned document data, particular fields and their contents on the application forms  116 ,  118 . In step  208 , the application form processing service causes the application form data to be stored. For example, application form processing service  120  may cause the application form data to be stored on storage  124  and/or on DBMS  110 . In step  210 , a user accesses the stored application form data. For example, a user of client device  106  may access application form data  126  in storage  124  or in DBMS  110  via data processing services  128 . As another example, a user of client device  108  may use data processing services  130  to access application form data  126  in storage  124  or in DBMS  110 . 
       FIG. 3  is a message ladder diagram  300  that depicts the exchange of messages between various elements of arrangement  100  for processing application forms according to an embodiment. A user accesses scanning device  102  and in step  302 , requests that application forms  116  be scanned. One example type of application form is an application form for an education program, where the application forms request an applicant supply personal contact information and medical history information.  FIG. 4  is a block diagram that depicts an example educational application form  400 . Form  400  may be created manually, for example, using a word processing program. According to one embodiment, form  400  may be automatically created by an application program, such as application form processing service  120 , data processing services  128 , other network services  112  or by a DBMS application program. The application program may include a user interface that allows a user to select and arrange the fields that are included on form  400 . The user interface may also allow the user to enter information to be included in some of the fields, for example, a school name or education program name, an event name and event ID, and print a specified number of copies of form  400 .  FIG. 5A  depicts an example user interface  500  provided by an application program that allows user to enter information for new educational events and for printing application forms. Some of the information on form  400  may be automatically specified by the application program. For example, the application program may automatically generate and assign an event ID to the event. According to one embodiment, the application program may also create an event record on storage  124  and/or in DBMS  110 . 
     In the present example, form  400  identifies three education programs  402  that may be selected by the applicant, for example, by circling one or more of the names of the education programs  402 . Form  400  also includes an event information section  404  that allows a user to specify the name of an event and an event ID, such as a number, code, abbreviated name, etc. Form  400  also includes a student information section  406  in which general information about the student applicant is provided. Form  400  further includes a medical history &amp; information section  408  in which medical history and authorization information is provided for the student applicant. Form  400  is provided as an example and embodiments are not limited to the particular example form  400  depicted in  FIG. 4 . 
       FIG. 6  depicts an example operation panel  600  of scanning device  102 . Operation panel  600  includes a set of user interface controls  602  for activating functions of scanning device  102 . The user interface controls on operation panel  600  may be graphical, non-graphical, i.e., buttons, switches, etc., or a combination of graphical and non-graphical. The functions depicted in  FIG. 6  include copy, connect to a document server, fax, print, scan and other functions. Selecting the “Other” option may provide access to additional functions, such as functions that are less commonly selected by users. These functions are provided as examples of typical functions that may be implemented on a scanning device that is an MFP, but the functions implemented on any particular scanning device may vary depending upon the implementation and the approaches described herein are not limited to scanning device  102  supporting a particular set of functions. Operation panel  600  also includes a set of function buttons  604  that may be assigned to various functions, or combinations of functions, provided on scanning device  102 . For example, function button  604  “F1” may be personalized for a particular user and invoke a series of functions that are often used by the user, such as scan-to-email plus OCR and archival storage. Operation panel  600  also includes a numeric keypad  606  and a set of user controls  608  for toggling the power of scanner device  102 , starting a function and clearing a selected function. These are examples of the user controls that are typically included on a scanning device. More or fewer user controls may be provided, depending upon a particular implementation. 
     Operation panel  600  also includes a GUI  610  for displaying information and receiving user input. GUI  610  may be a touch screen that is capable of detecting user selection of icons and GUI objects displayed on GUI  610 . GUI  610  may be generated based upon computer hardware, computer software or any combination of computer hardware and computer software. For example, GUI  610  may be generated based upon firmware or software installed on scanning device  102 . As another example, GUI  610  may be implemented by instructions stored external to scanning device  102  that are retrieved and executed by scanning device  102 . For example, scanning device  102  may include a Web browser that processes Web pages retrieved from a network service via network  114 . The Web browser may transmit a HTTP request in response to selection of the scanning function on the set of UI controls  602  or upon startup of scanning device  102 . In this way, GUI  610  may be updated remotely at any time before GUI  610  is loaded onto scanning device  102 . Also, by relying on a network service for GUI  610 , scanning device  102  is removed from the responsibility for persistently storing, updating, or otherwise maintaining GUI  610 . 
     In the present example, GUI  610  includes a status bar GUI object  612  that displays status information, such as the status of scanning device  102  or the status of one or more scan jobs. GUI  610  also includes a job list GUI object  614  which, when selected, displays a list of jobs associated with the scanning device  102 , for example, scan jobs that have been processed and/or scan jobs that are currently being processed. GUI  610  may also include a “Push-to-Scan” button  616  that invokes a simple scan operation. GUI  610  includes a “Process Application Forms” button which, when selected, initiates the end-to-end process described herein for processing application forms. For example, a user provides application forms  116  to scanning device  102  and selects the “Process Application Forms” button  618  which, in step  304 , causes scanning device  102  to scan the application forms  116  and generate scanned document data that is then processed as described hereinafter. The scanned document data may be in a wide variety of forms that may vary depending upon a particular implementation. Example forms include, without limitation, PDF, JPG, GIF, TIFF, or DOC. Selecting the “Process Application Forms” button  618  may allow a user to specify commands to be processed by application form processing service  120 . For example, a user may be allowed to specify recipients of application form data  126 , such as client devices  106 ,  108 , other network services  112 , etc. Alternatively, application form processing service  120  may be configured, for example by an administrator, to transmit application form data  126  to particular recipients. 
     In step  306 , scanning device  102  causes the scanned document data to be transmitted to application form processing service  120 . The user of scanning device  102  may actively select application form processing service  120 . Alternatively, scanning device  102  may be configured to automatically send the scanned document data to application form processing service  120  in response to selection of the “Process Application Forms” button  618 . For example, an administrator may configure scanning device  102  to transmit the scanned document data to a network address and/or port number of application processing service  120 . Command data that specifies recipients of application form data  126  may also be transmitted to application form processing service  120 , either with or separate from the scanned document data. 
     In step  308 , application form processing service  120  transmits the scanned document data to data capture service  122 . In step  310 , data capture service  122  processes the scanned document data to obtain application form data represented in the scanned document data. The application form data may include data fields, for example for personal information and medical history, on the application forms  116  scanned by scanning device. Data capture service  122  may be configured with data capture OCR functionality to obtain the application form data represented in the scanned document data. One example is ABBYY FlexiCapture by ABBYY USA. Data capture service  122  may use one or more templates in conjunction with the data capture OCR functionality to obtain the application form data. The application form data may be in a wide variety of data formats that may vary depending upon a particular implementation and the approaches described herein are not limited to the application form data being in any particular format. According to one embodiment, the application form data  126  is in a format suitable for use by DBMS  110  and end applications, such as spreadsheet programs, custom user programs, etc. Example data formats include, without limitation, text, ASCII, or any type of database file format. 
     In step  312 , data capture service  122  transmits the acquired application form data to application form processing service  120 . In step  314 , application form processing service  120  causes the application form data to be stored on storage  124  and/or DBMS  110  to allow the application form data to be made available to client devices  106 ,  108 . The application form data  126  may be stored on storage  124  or in DBMS  110  in an arrangement and format that allows the application form data  126  to be readily retrieved by client devices  106 ,  108 . Application form processing service  120  may implement commands supported by an application program interface (API) of storage  124  or may issue commands to DBMS  110  to cause the application form data to be stored on storage  124  and/or DBMS  110 , respectively.  FIG. 5B  is a table  520  that stores educational event data. In this example, each row of table  520  corresponds to a student and includes information for the student from form  400 , including the event ID, the event name and date, the student&#39;s name, the school name, the student&#39;s home address, medical information, such as allergies, and the name of the student&#39;s physician. Additional information may be included in table  520  depending upon a particular implementation. Application form data  126  may be automatically sorted and indexed when stored on storage  124  and/or DBMS  110 . For example, application form data  126  may be sorted by school name, education program or event name, event ID, etc. 
     In step  316 , client device  106  requests the form data from storage  124  or DBMS  110 . In step  318 , the application form data is provided to client device  106 . The process of a client device obtaining application form data as depicted in steps  316 ,  318  is described in more detail hereinafter. 
     IV. Accessing and Using Application Form Data 
     Once application form data  126  has been stored in storage  124  and/or in DBMS  110 , the application form data  126  may be accessed by client devices  106 ,  108  using a wide variety of techniques that may vary depending upon a particular implementation. For example, client device  106  may access application form data  126  via data processing services  128 . Client device  106  may be configured with a client-side application that communicates with data processing services  128  to retrieve and update application form data  126 . The client-side application may be a proprietary software application or may be, for example, a Web browser that provides a Web-based user interface. Alternatively, as depicted in  FIG. 1 , client device  108  includes data processing services  130  for accessing application form data  126  in storage  124  and/or in DBMS  110 . 
     Embodiments are not limited to the context of a client device having to request application form data  126 . According to an embodiment, application form processing service  120  may cause the application form data  126  to be automatically provided to an application on a client device without requiring that the application explicitly request the application form data  126 . For example, after application form processing service  120  receives the application form data  126  from the data capture service  122  in step  312 , the application form processing service  120  may cause the application form data  126  to be provided to an application on client devices  106 ,  108 , such as data processing services  130 . Application form processing service  120  may also automatically provide application form data  126  to other network services  112 . For example, network services  112  may include an archival service and application for processing service  120  may automatically provide application form data  126  to the archival service. This may be in addition to automatically providing application form data  126  to client devices. Application form processing service  120  may be configured, for example by an administrator, to automatically cause application form data  126  to be supplied to a client device and/or other network services  112 . Alternatively, these actions may be specified by a user at scanning device  102 . For example, a user may select one or more controls or GUI objects on scanning device  102  to select particular recipients of application form data  126  at the time the user scans application forms  116 . In this example, command data that indicates the user&#39;s commands may be transmitted to application form processing service  120  either separate from or with the scanned document data. The application form processing service  120  processes the command data to know where to transmit application form data  126 . 
     A. Browsing and Updating Student Information 
     According to one embodiment, a user interface is provided to allow users, such as school administrators and teachers, to access, including viewing and updating, the application form data  126  stored on storage  124  and/or in DBMS  110 . The user interface may be provided by a client-side component, such as a database application Web browser. The user interface may allow a user to search for student information based upon various search criteria, such as event ID, school name, or student name.  FIG. 5C  is an example user interface  550  that allows a user to search for student information by event name or ID, school name, student name or other information. For example, a teacher or administrator may enter the name of a particular event, such as “Camp Lona March 2013” to search for all of the student participants. Thus, although application form data  126  may include data from many different schools and programs, user interface  550  allows users to easily retrieve information pertaining to particular schools and/or particular events or programs. 
       FIG. 5D  depicts an example results screen  570  that depicts the student information for three students participating in a particular education program. The column headings, i.e., “Student Name”, “Medical Information” and “Physician” may be selectable to sort the contents of results screen  570  by the selected column heading. For example, selecting the “Student Name” column heading causes the contents of results screen  570  to be sorted alphabetically (reverse or forward). Data within results screen  570  may include active links. For example, in the example depicted in  FIG. 5D , the medical information for student “Jay R.” indicates that he had food allergies. Accordingly, the data contained in this row contains links that may be selected. Selecting the student name “Jay R.” may cause additional information about the student, such as contact information, to be displayed, for example, in a dialog box. Selecting “Allergies (Food)” may cause additional information about the food allergies to be displayed, for example, additional information describing particular foods for which the student is allergic. Selecting “Dr. Z” may cause additional information, such as contact information for Dr. Z, to be displayed. This approach provides a user-friendly approach for teachers or school administrators to obtain information about students participating in an education program. For example, a teacher may use a hand-held device, such as a smart phone, to quickly and easily obtain information for the students participating in a particular education program. The approach also allows medical or other personnel to quickly and easily obtain medical information about students participating in an education program, including, for example, information about allergies, medications being taken by students, etc. Contact information for students&#39; physicians is also made readily available to teachers, administrators and medical personnel. 
     Users may also manage the application form data  126  displayed on the user&#39;s client device. For example, a set of controls  572 , allows a user to edit, add or delete data in results screen  570 . The edit control  572  allows a user to select a field in results screen  570 , select the edit control  572  and then update the value in the selected field. The add control  572  allows a user to add a new student in results screen  570  and the delete control  572  allows a user to select and delete an existing student from results screen  570 . Changes to data made via results screen  570  may automatically be saved to storage  124  and/or DBMS  110 . 
     B. Creating Newsletters &amp; Marketing Materials 
     Application form data  126  may also be used in other contexts, for example, for use with newsletters or marketing materials. The application form data  126  may be used to generate statistical information to be included in newsletters or marketing materials. For example, the statistical information may be used to indicate the student participation, for example, total student participation, student participation by school, student participation by event, as well as other information, such as the number of students with particular medical conditions, etc. Contact information, such as email addresses, from the application form data  126  may also be used to distribute newsletters or marketing materials. 
     C. Statistical Analysis 
     Application form data  126  may also be used for statistical analysis. For this purpose, application form data  126  may be exported into a wide variety of formats, such as excel, comma separated, etc., that may vary depending upon a particular implementation. The application form data  126  may be used to analyze student participation at past events and for forecasting student participation at future events. The results of the statistical analysis may be used to create reports, bar graphs, geographical maps, etc. For example, bar charts may be created to depict the number of occurrences of particular medical conditions, such as allergies. As another example, an application may use application form data  126  to generate a geographical map that depicts the locations of education programs and specifies the number of students in each education program. The geographical map may also depict where the participating students are from, e.g., their home towns. The results of the forecasting may also be used to print a number of applications based upon an expected number of participants. This can reduce waste and processing time. 
     Application form data  126  may be stored incrementally, i.e., in a manner where data is stored that indicates the changes in application form data  126  since the last time application form data  126  was stored. For example, DBMS  110  may store data that indicates the changes made to application form data  126  since the last time that the application form data  126  was updated in DBMS  110 . This allows incremental data to be provided to a client device for processing. For example, suppose that client device  108  initially obtains the application form data  126  from DBMS  110 . Additional applications  118  are then processed and the application form data  126  in DBMS  110  is updated to include application form data for the additional applications  118 . Client device  108  again requests the application form data  126  from DBMS  110 . DBMS  110  may be configured to allow client device  108  to request to receive all application form data  126  stored in DBMS  110 . Alternatively, client device  108  may receive only the updates to the application form data  126  since the time when client device  108  last obtained the application form data  126  from DBMS  110 . In the present example, this would include only the new application form data for additional applications  118 . This feature allows client devices to acquire and process smaller amounts of data, which reduces the amount of time and computational resources required to process application form data. 
     D. Updating Application Forms 
     Application form data  126  may also be used for updating application forms. For example, a review of application form data  126 , or of statistical data generated based upon application form data  126 , may indicate that it would be helpful to change on one more application forms. The changes may include, for example, editing, adding or removing fields. According to one embodiment, application form processing service  120  includes a capability to allow users, such as an administrator, to update application forms. This may include providing a user interface, such as a graphical user interface, that allows a user to view a particular application form and select application form fields in the particular application form. The user can then perform an action on the selected application form fields, including editing and deleting the selected application form fields. Editing a selected application form field may include moving, reformatting or editing the content of the selected application form field. Application form processing service  120  maintains application forms, for example on storage  124 . Application form processing service  120  provides a user interface for accessing and printing application forms, as well as managing application forms as previously described herein. 
     V. Implementation Mechanisms 
     Although the flow diagrams of the present application depict a particular set of steps in a particular order, other implementations may use fewer or more steps, in the same or different order, than those depicted in the figures. 
     According to one embodiment of the invention, the techniques described herein are implemented by one or more special-purpose computing devices. The special-purpose computing devices may be hard-wired to perform the techniques, or may include digital electronic devices such as one or more application-specific integrated circuits (ASICs) or field programmable gate arrays (FPGAs) that are persistently programmed to perform the techniques, or may include one or more general purpose hardware processors programmed to perform the techniques pursuant to program instructions in firmware, memory, other storage, or a combination. Such special-purpose computing devices may also combine custom hard-wired logic, ASICs, or FPGAs with custom programming to accomplish the techniques. The special-purpose computing devices may be desktop computer systems, portable computer systems, handheld devices, networking devices or any other device that incorporates hard-wired and/or program logic to implement the techniques. 
       FIG. 7  is a block diagram that depicts an example computer system  700  upon which embodiments of the invention may be implemented. Computer system  700  includes a bus  702  or other communication mechanism for communicating information, and a processor  704  coupled with bus  702  for processing information. Computer system  700  also includes a main memory  706 , such as a random access memory (RAM) or other dynamic storage device, coupled to bus  702  for storing information and instructions to be executed by processor  704 . Main memory  706  also may be used for storing temporary variables or other intermediate information during execution of instructions to be executed by processor  704 . Computer system  700  further includes a read only memory (ROM)  708  or other static storage device coupled to bus  702  for storing static information and instructions for processor  704 . A storage device  710 , such as a magnetic disk or optical disk, is provided and coupled to bus  702  for storing information and instructions. 
     Computer system  700  may be coupled via bus  702  to a display  712 , such as a cathode ray tube (CRT), for displaying information to a computer user. An input device  714 , including alphanumeric and other keys, is coupled to bus  702  for communicating information and command selections to processor  704 . Another type of user input device is cursor control  716 , such as a mouse, a trackball, or cursor direction keys for communicating direction information and command selections to processor  704  and for controlling cursor movement on display  712 . This input device typically has two degrees of freedom in two axes, a first axis (e.g., x) and a second axis (e.g., y), that allows the device to specify positions in a plane. 
     Computer system  700  may implement the techniques described herein using customized hard-wired logic, one or more ASICs or FPGAs, firmware and/or program logic or computer software which, in combination with the computer system, causes or programs computer system  700  to be a special-purpose machine. According to one embodiment of the invention, those techniques are performed by computer system  700  in response to processor  704  executing one or more sequences of one or more instructions contained in main memory  706 . Such instructions may be read into main memory  706  from another computer-readable medium, such as storage device  710 . Execution of the sequences of instructions contained in main memory  706  causes processor  704  to perform the process steps described herein. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the invention. Thus, embodiments of the invention are not limited to any specific combination of hardware circuitry and software. 
     The term “computer-readable medium” as used herein refers to any medium that participates in providing data that causes a computer to operation in a specific manner. In an embodiment implemented using computer system  700 , various computer-readable media are involved, for example, in providing instructions to processor  704  for execution. Such a medium may take many forms, including but not limited to, non-volatile media and volatile media. Non-volatile media includes, for example, optical or magnetic disks, such as storage device  710 . Volatile media includes dynamic memory, such as main memory  706 . Common forms of computer-readable media include, for example, a floppy disk, a flexible disk, hard disk, magnetic tape, or any other magnetic medium, a CD-ROM, any other optical medium, a RAM, a PROM, and EPROM, a FLASH-EPROM, any other memory chip or memory cartridge, or any other medium from which a computer can read. 
     Various forms of computer-readable media may be involved in carrying one or more sequences of one or more instructions to processor  704  for execution. For example, the instructions may initially be carried on a magnetic disk of a remote computer. The remote computer can load the instructions into its dynamic memory and send the instructions over a telephone line using a modem. A modem local to computer system  700  can receive the data on the telephone line and use an infra-red transmitter to convert the data to an infra-red signal. An infra-red detector can receive the data carried in the infra-red signal and appropriate circuitry can place the data on bus  702 . Bus  702  carries the data to main memory  706 , from which processor  704  retrieves and executes the instructions. The instructions received by main memory  706  may optionally be stored on storage device  710  either before or after execution by processor  704 . 
     Computer system  700  also includes a communication interface  718  coupled to bus  702 . Communication interface  718  provides a two-way data communication coupling to a network link  720  that is connected to a local network  722 . For example, communication interface  718  may be an integrated services digital network (ISDN) card or a modem to provide a data communication connection to a corresponding type of telephone line. As another example, communication interface  718  may be a local area network (LAN) card to provide a data communication connection to a compatible LAN. Wireless links may also be implemented. In any such implementation, communication interface  718  sends and receives electrical, electromagnetic or optical signals that carry digital data streams representing various types of information. 
     Network link  720  typically provides data communication through one or more networks to other data devices. For example, network link  720  may provide a connection through local network  722  to a host computer  724  or to data equipment operated by an Internet Service Provider (ISP)  726 . ISP  726  in turn provides data communication services through the world wide packet data communication network now commonly referred to as the “Internet”  728 . Local network  722  and Internet  728  both use electrical, electromagnetic or optical signals that carry digital data streams. 
     Computer system  700  can send messages and receive data, including program code, through the network(s), network link  720  and communication interface  718 . In the Internet example, a server  730  might transmit a requested code for an application program through Internet  728 , ISP  726 , local network  722  and communication interface  718 . The received code may be executed by processor  704  as it is received, and/or stored in storage device  710 , or other non-volatile storage for later execution. 
     In the foregoing specification, embodiments of the invention have been described with reference to numerous specific details that may vary from implementation to implementation. Thus, the sole and exclusive indicator of what is, and is intended by the applicants to be the invention is the set of claims that issue from this application, in the specific form in which such claims issue, including any subsequent correction. Hence, no limitation, element, property, feature, advantage or attribute that is not expressly recited in a claim should limit the scope of such claim in any way. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense.