Patent Publication Number: US-9430449-B2

Title: Systems, methods, and media for managing editable previews of webpages

Description:
FIELD OF THE TECHNOLOGY 
     Embodiments of the disclosure relate to generating and managing editable previews of webpages. More specifically, but not by way of limitation, the present technology generates editable and non-editable previews of webpages that comprise content (e.g., assets), manages the editing of such previews (e.g., the editing of assets), and the updating of webpages based upon the edits made to the assets of the previews for editing by a content editor in such a way that when the content editor edits at least one of the obtained assets, the at least one obtained asset is placed in a locked format to prevent editing by additional content editors. More specifically, it will be understood that the editing of content for a webpage may occur at a granular level, such as at the level of individual assets within the webpage (for example textual content, multimedia files, image files, and so forth). Additionally, the editing of an asset of one particular preview may result in the updating of individual assets of single or multiple webpages with similar content (e.g., webpages that each comprises the same asset, such as a particular image file). The present technology may also manage editing privileges of content editors and facilitate editing sessions. 
     BACKGROUND OF THE DISCLOSURE 
     In general, for a content editor to view a webpage as it would be rendered on an end user computing system, the content editor must first publish the webpage to a publishing server. The content editor must then utilize a browser application to view the webpage. When the content editor modifies the content of the webpage, the content editor must again publish the webpage and view the webpage in a browser application. This process is highly inefficient and time consuming. Moreover, when multiple content editors attempt to modify the same webpage, the content editors may unknowingly edit the same asset at the same time. Such duplicative editing may lead to confusion and inefficiency. 
     SUMMARY OF THE DISCLOSURE 
     According to some embodiments, the present technology may be directed to methods for managing an editable preview of a webpage. The methods may comprise: (a) receiving a request to generate an editable preview of a webpage, via a preview server, the webpage comprising assets arranged according to a layout; (b) responsive to the request, obtaining, via the preview server, assets of the webpage from at least one content repository; (c) generating, via the preview server, an editable preview of the webpage using the obtained assets and the layout; and (d) providing, via the preview server, the editable preview of the webpage to an authoring environment for editing by a content editor in such a way that when the content editor edits at least one of the obtained assets, the at least one obtained asset is placed in a locked format to prevent editing by additional content editors. 
     According to other embodiments, the present technology is directed to an authoring environment for generating a preview of a webpage, the authoring environment comprising: (a) a memory for storing executable instructions; (b) a processor for executing the instructions to: (i) receive a request to generate a preview of a webpage, the webpage comprising assets arranged according to a layout; (ii) obtaining the assets of the webpage from at least one content repository; (iii) generate a preview of the webpage using the obtained assets and the layout; and (iv) provide the preview of the webpage for editing by a content editor in such a way that when the content editor edits at least one of the obtained assets, the at least one obtained asset is placed in a locked format to prevent editing by additional content editors, the authoring environment being separate from a preview server that publishes the webpage. 
     According to some embodiments, the present technology may include methods for generating an editable preview of a webpage by: (a) determining delta content for a webpage, the delta content comprising changes in content between a published version of the webpage and at least one non-published version of the webpage; (b) obtaining both the content of the published version of the webpage and the delta content; (c) generating a preview of the webpage using both the content of the published version of the webpage and the delta content; and (d) providing, via the preview server, the preview of the webpage to an authoring environment for editing by a content editor in such a way that when the content editor edits at least one of the obtained assets, the at least one obtained asset is placed in a locked format to prevent editing by additional content editors. 
     According to some embodiments, the present technology may include methods for generating an editable preview of a webpage by: (a) determining delta content for a webpage, the delta content comprising changes in at least a portion of content between a published version of the webpage and at least a portion of a non-published version of the webpage; (b) obtaining at least a portion of the content of the published version of the webpage and the delta content; (c) generating a preview of the webpage using the obtained content of the published version of the webpage and the delta content; and (d) providing the preview of the webpage to an authoring environment generated by a preview server. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       The accompanying drawings, where like reference numerals refer to identical or functionally similar elements throughout the separate views, together with the detailed description below, are incorporated in and form part of the specification, and serve to further illustrate embodiments of concepts that include the claimed disclosure, and explain various principles and advantages of those embodiments. 
       The methods and systems disclosed herein have been represented where appropriate by conventional symbols in the drawings, showing only those specific details that are pertinent to understanding the embodiments of the present disclosure so as not to obscure the disclosure with details that will be readily apparent to those of ordinary skill in the art having the benefit of the description herein. 
         FIG. 1  illustrates an exemplary architecture for practicing aspects of the present technology. 
         FIG. 2  illustrates an exemplary editable preview of a webpage. 
         FIG. 3  illustrates an exemplary updated editable preview of a webpage. 
         FIG. 4  illustrates modification of an exemplary editable preview of a webpage. 
         FIG. 5  illustrates an exemplary editable preview that includes a locked notification. 
         FIG. 6  illustrates the exemplary editable preview of  FIG. 5  in an unlocked configuration. 
         FIG. 7  illustrates an exemplary graphical user interface that comprises a plurality of emulation attributes. 
         FIG. 8  illustrates an exemplary editable preview of a webpage that was generated using an emulation template. 
         FIG. 9  illustrates a flowchart of an exemplary method for managing an editable preview of a webpage. 
         FIG. 10  illustrates a flowchart of an exemplary method for generating an editable preview of a webpage. 
         FIG. 11  illustrates an exemplary computing system that may be used to implement embodiments according to the present technology. 
     
    
    
     DETAILED DESCRIPTION 
     In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the disclosure. It will be apparent, however, to one skilled in the art, that the disclosure may be practiced without these specific details. In other instances, structures and devices are shown at block diagram form only in order to avoid obscuring the disclosure. 
     Generally speaking, the present technology may generate editable and non-editable previews of webpages. Additionally, the present technology may allow content editors to stage and preview modifications to webpages that are currently published on a web server. In other instances, the present technology may allow content editors to generate and edit new webpages that have yet to be published to a web server. The content of these yet-to-be published webpages may also be modified, staged and previewed utilizing the present technology. 
     The present technology may impose editing privileges on content editors, by locking and unlocking previews of webpages such that only one content editor may edit the preview of the webpage and/or assets on the webpage at a time. 
     It is noteworthy that while the following description may refer to the editing of previews of webpages generally, it will be understood that the editing of a preview of a webpage may comprise the modifying, editing, adjusting, deleting, adding, repositioning, replacing, and so forth, of individual assets (e.g., content) of the preview. Moreover, an asset may be composed of individual objects, such as an image gallery that comprises individual image files. As such, content editors may modify and/or edit the individual objects of the asset. 
     If a content editor attempts to edit at least a portion of a preview of a webpage when another content editor is already editing the preview, the present technology may notify other content editors that the portion of the preview is locked. The present technology may also provide unlocked notifications when the content editor is finished editing the preview. That is, when the content editor that is currently editing the preview has released a preview, the present technology may inform a subsequent content editor that the content of the preview/webpage has been unlocked. More specifically, notification may likewise occur on a more granular or asset specific level such that two or more content editors may edit the same preview. If a first content editor has selected an asset for editing, the present technology may place that asset in a locked format. As such, a second content editor may be prevented from editing the asset while the first content editor is editing the asset. The present technology may highlight and/or mark the asset that is currently being edited to indicate that it is unavailable for editing, as will be described in greater detail herein. 
     According to some embodiments, the present technology may also employ emulation templates that allow content editors to generate previews of webpages that emulate how an end-user computing system, and specifically a browser application of an end-user computing system, would render the webpage. The present technology may allow content editors to select emulation attributes such as operating system, browser application type and version, first visitor attributes, and so forth. In some instances, the application of an emulation template may cause the output of a web application or a content web service (e.g., web server) to change depending upon actual content attributes and/or emulation attributes, as will be described in greater detail below. 
     The present technology may also store content (e.g., such as assets) and changes to content for a webpage into various content repositories. In some embodiments, a staging server may be utilized to combine currently published content, also known as disclosed content, for a webpage with modified content “delta content,” to create a staged version of an updated preview. The staged version of the updated preview may be provided to an authoring environment by a preview server. The modified content may include edits or modifications to the editable preview received from content editors. 
     In some instances, the preview that is provided to a content editor may be based upon access privileges for the content editor. For example, if a content editor only has access privileges that allow them to modify textual content, the editable preview may only allow that content editor to modify textual content. As such, other webpage assets such as images or video may be inaccessible to the content editor. Additionally, content editor actions may be restricted by access privileges, as well as workflow constraints. 
     After editing, modified content may be incorporated into the webpage and thereafter published. 
     Additional advantages of the present technology will be described in greater detail with reference to the collective  FIGS. 1-11 . 
       FIG. 1  illustrates an exemplary architecture  100  for practicing aspects of the present technology. The architecture  100  may be implemented in a cloud-based computing environment, or as a web server that is particularly purposed to generate and manage previews of webpages. 
     In general, a cloud-based computing environment is a resource that typically combines the computational power of a large grouping of processors and/or that combines the storage capacity of a large grouping of computer memories or storage devices. For example, systems that provide a cloud resource may be utilized exclusively by their owners; or such systems may be accessible to outside users who deploy applications within the computing infrastructure to obtain the benefit of large computational or storage resources. 
     The cloud may be formed, for example, by a network of web servers, with each web server (or at least a plurality thereof) providing processor and/or storage resources. These servers may manage workloads provided by multiple users (e.g., cloud resource customers or other users). Typically, each user places workload demands upon the cloud that vary in real-time, sometimes dramatically. The nature and extent of these variations typically depend on the type of business associated with the user. 
     In other embodiments, the architecture  100  may include a distributed group of computing devices such as web servers that do not share computing resources or workload. Additionally, the architecture  100  may include a single computing device, such as a web server, that has been provisioned with one or more programs that are utilized to manage data incidents. 
     Content editors may access and interact with the architecture  100  via content editor client devices  110  through a web-based interface, as will be discussed in greater detail infra. Alternatively, end users may access and interact with the architecture  100  via a downloadable program that executes on the content editor client device  110 . 
     The various components of architecture  100  may be selectively and communicatively coupled with one another via network connections. The network connections utilized by the architecture  100  may include any one (or combination) of a number of private and public communications mediums such as the Internet. In some instances, the architecture  100  may utilize secure hyper text transfer protocols (HTTPS) to communicate both webpage content and delta content. 
     The architecture  100  may be generally described as a mechanism for generating and managing editable and non-editable previews of webpages and for incorporating modifications into webpages based upon edits or modifications to assets of the previews. 
     According to some embodiments, the architecture  100  may generally comprise a preview server  120 , an authoring environment  155 , a content manager  125 , a web service module  130 , a deployer module  135 , a database  140 , and a staging environment  145 , which may comprise a web application  155 A an emulation module  150 , one or more API(s)  161 , and one or more filter(s)  160 . The preview server  120  may be associated with the staging environment  145 . 
     As used herein, component terms such as “module,” “generator,” “engine,” and “environment” may also refer to any of an application-specific integrated circuit (“ASIC”), an electronic circuit, a processor (shared, dedicated, or group) that executes one or more software or firmware programs, a combinational logic circuit, and/or other suitable components that provide the described functionality. In other embodiments, individual components described above may include separately configured web servers. Also, the components of the architecture  100  may be provisioned with a cloud, as mentioned in greater detail above. 
     Prior to discussing the operations of the architecture  100 , a brief description of the webpage content utilized by the present technology will be described. A webpage and/or an editable/non-editable preview of a webpage may include various types of content. This content may comprise assets such as textual information, images, video, audio, and/or any other typical assets for webpages that would be included in a webpage that would be known to one of ordinary skill in the art with the present disclosure before them. It will be understood that the assets may be arranged according to a particular format or layout. That is, the assets may be positioned on the webpage to create a particular visual arrangement. 
     Additionally, each asset may be associated with its respective webpage by way of an identifier. Therefore, assets that are stored in a content repository such as database  140  may be retrieved by the staging environment  145  utilizing identifiers associated with the webpage. Assets may be identified within the webpage using hypertext markup language comments. 
     Generally speaking, the preview server  120  is a particular purpose computing device that comprises at least one processor and a memory for storing executable instructions. In some instances the executable instructions may be referred to as “web application  155 A.” The processor of the preview server  120  may execute the web application  155 A to cooperate with the authoring environment  155 , staging environment  145  and the content manager  125  to generate previews (both editable and non-editable) of webpages, as well as execute other functionalities which will be described in greater detail below. 
     To generate a preview of a webpage, the preview server  120  may request that the staging environment  145  obtain assets from the database  140  or other components of the architecture  100 . The staging environment  145  may obtain assets using the asset identifiers associated with the webpage. Further details regarding how the staging environment  145  obtains content for generating an editable preview of a webpage are described in greater detail below. 
     An editable preview of a webpage may be understood to include content for the webpage, which may or may not be currently published. In some instances, the editable preview may include content from a currently published webpage, along with delta content that represents changes in content for the webpage since it was published. 
     Rather than requiring the content editor to modify the content of the webpage using a webpage creation application, which often only includes the computer executable code that is rendered by a browser application, the preview is a rendering of the webpage that allows the content editor to view their edits to the webpage in a visual format that substantially conforms to how the website will actually be rendered by browsing application. In sum, the editable preview allows content editors to edit their content in context. Content editors can see their modifications in near-real-time. 
     It will be understood that in some instances, the preview that is generated by the preview server  120  may not be editable, but a visual representation of the combination of both currently published content and delta content for a webpage. Stated otherwise, the preview may be a view onto the various versions of a webpage managed by the content manager  125 . 
     Additional details regarding the content manager  125  may be found in co-pending applications U.S. Ser. No. 13/035,852, U.S. Ser. No. 13/016,989, and U.S. Ser. No. 13/016,988, which are hereby incorporated by reference herein in their entirety. 
     In other embodiments, the preview server  120  may generate editable previews of webpages that are displayed within the authoring environment  155 . 
     In operation, when a preview (editable and/or non-editable) of a webpage is requested, a session token may be generated by the web service module  130  which passes the session token to the content manager  125  that determines eligible versions of the webpage for which an editable preview is to be generated. For example, eligible versions may comprise previous edits to a webpage created by one or more content editors. The content manager  125  may then provide the session token to the authoring environment  155  for generation of the editable preview through the preview server  120 . The session token may also be utilized for subsequent calls to the content manager  125 , which in turn, may provide the session token to the web service module  130 . The provision and exchange of session tokens throughout the architecture  100  during the generation of previews and the editing of such previews may allow edits to be tracked and recorded. 
     The content manager  125  may determine changes between a published version of the webpage and the one or more edited versions of the published webpage. This changed content may also be referred to as delta content. In some instances a currently published version of the webpage may be stored within a content repository of the deployer module  135 . If any delta content is determined by the content manager  125 , the delta content may be transmitted, along with the session token, to the web service module  130 . 
     The authoring environment  155  may also pass the session token to the preview server  120  where one or more filters  160  cooperate with one or more application programming interfaces (API(s))  160  to gather content from both the deployer module  135  and the web service module  130 . More specifically, the staging environment  145 , using the session token, may obtain published content from the deployer module  135  and delta content from the web service module  130 . The data gathered from the deployer module  135  and the web service module  130  may be obtained from one or more filesystem-based repositories, database-based repositories or combination thereof, such as database  140 . 
     The published content and the delta content may be assembled by the staging environment  145  prior to generation of a preview of the webpage by the preview server  120 . 
     It is noteworthy to mention that in some instances the preview server  120  and/or a filter  160  of the staging environment  145  may selectively modify the content or appearance of the preview of the webpage based upon access rights of the content editor. That is, the access rights of the content editor may affect how the preview server  120  generates the preview of the webpage. For example, a content editor may have access rights that only allow the content editor to view certain types of assets, such as video assets or image assets. Therefore, the preview of the webpage that is generated by the preview server  120  may only comprise those assets to which the content editor has permission to access or view. 
     Content editors may view and interact with these editable previews, using a web-based interface generated by the authoring environment  155 . Content editors may access this web-based interface using their content editor client device  110 . 
     Per each session, multiple content editors may make modifications to the content of the preview of the webpage. During the session, the content of the webpage currently being edited by a first content editor may be locked for additional content editors to ensure that only the first content editor may edit the asset. The additional content editors may edit assets of the same webpage that are not currently locked. 
     As the content of the webpage is modified, the preview of the webpage may be updated periodically (or potentially in near-real-time) to reflect the modifications. 
     During an editing session the authoring environment  155  may provide notification to a subsequent content editor who attempts to edit configuration locked asset of the editable preview. While a preview of the webpage may be generated, the preview of the webpage may comprise a notification such as a red border that outlines at least a portion of the locked asset and/or an image of a lock. The color of the borders/highlighting may be end-user configurable. For example, each content editor may be assigned a particular color for purposes of differentiating edits made by various content editors from one another. 
     After the content editor has finished with their editing session, the authoring environment  155  may unlock the webpage in anticipation of another editing session. In some instances, the authoring environment  155  may provide notification to the subsequent content editor described above that the locked asset of the editable preview has been unlocked and is available for editing (assuming that the content editor has access rights to modify the asset). 
     According to some embodiments, the preview that is generated for the content editor may include highlighting for assets that have been modified. The highlighting may include outlining at least a portion of a changed asset with a green color. A preview of the same webpage that is generated for a subsequent content editor may highlight the assets in a different color, such as gray. Highlighting aids the subsequent content editor in determining recent changes to the webpage generated during the previous editing session. Again, the previously modified assets may be locked to prevent subsequent editing. If the assets have been locked, the asset highlighting may include a locked notification such as a lock icon. Clicking on the lock icon may provide additional details regarding the locked state of the asset, such as the content editor that last modified the asset, along with a timestamp and other pertinent data regarding the asset. 
     It will be understood that in some embodiments each editing session may generate a different version of the webpage. Each unique version may be identified by its respective session token. Therefore, in some instances, to generate a preview of a webpage, the preview server  120  may identify delta content for a webpage using several session tokens. 
     According to some embodiments, the emulation module  150  may be utilized to generate various previews of the same webpage. The emulation module  150  may apply an emulation template to the webpage to generate a view of the webpage as it would be rendered by a particular computing system that utilizes a particular browser application. It will be understood that a webpage may be rendered differently depending upon the operating system and browser application that is utilized to render the webpage. For example, a rendering of a webpage by a computing system that utilizes a version of the Windows® operating system and Internet Explorer browser may have a visual appearance that differs from a rendering of the same webpage by a computing system that utilizes a version of the Mac OSX operating system and the Safari browser. 
     Additionally, emulation may also comprise selecting targeted assets for a particular webpage based on the relevancy of the assets for a particular webpage. As mentioned above, additional information regarding the selection of relevant and/or targeted content may be found in co-pending applications U.S. Ser. No. 13/035,852, U.S. Ser. No. 13/016,989, and U.S. Ser. No. 13/016,988. 
     When an emulation template is applied to the webpage to generate the preview, the resulting preview may indicate how a webpage will be rendered on a corresponding system. For example, the application of an emulation template may generate an editable preview that illustrates that certain images are smaller than anticipated, or that the layout of the webpage is different than anticipated. The preview may also help content editors determine aesthetic and/or functional aspects of the webpage, such as a balance between content and media. 
     Thus, rather than maintaining a plurality of test boxes (computing systems with different permutations of operating systems and browsing applications, relative to one another) and utilizing the test boxes to render previews of the webpage, different emulation templates may be invoked. 
     According to some embodiments, each emulation template may include various permutations of emulation attributes. Generally speaking, the emulation attributes may comprise visitor preferences, ambient data, computing device characteristics, or any combinations thereof, although one or ordinary skill in the art will appreciate that other types of emulation attributes that may affect how the webpage is displayed on the authoring environment  155 . More specifically, exemplary emulation attributes may comprise operating system selections and browser application selections (including different selections for browser types and versions). Operating system selections may also be versioned. For example, different emulation templates may be selectable for different versions of Windows XP which vary based up service pack installation. 
     In addition, the emulation template may specify that the preview should be rendered as if the browser application was rendering the webpage for the first time (e.g., first time visitor overwrite), along with other overwrite settings that would be known to one of ordinary skill in the art. 
       FIG. 2  illustrates an exemplary editable preview  200  of a webpage. The editable preview  200  is shown as comprising a plurality of assets such as image asset  205 . The editable preview  200  has been rendered within a graphical user interface  210  that includes a ribbon  215 . The ribbon  215  may comprise a plurality of functionalities that allow content editors to modify the content of the editable preview  200 . 
       FIG. 3  illustrates an exemplary updated editable preview  300  of a webpage. The editable preview  300  is shown as comprising a plurality of assets such as image asset  305 . It is noteworthy that the updated editable preview  300  is otherwise identical to editable preview  200  of  FIG. 2  with the exception that image asset  205  of  FIG. 2  has been replaced with image asset  305 , in  FIG. 3 . The image asset  305  may be linked to the webpage using an identifier that is stored in the HTML comments of the webpage. 
       FIG. 4  illustrates the modification of an exemplary editable preview  400  of a webpage. The editable preview  400  is shown being edited by a content editor using a text field property menu  405 . The text field property menu  405  may allow the content editor to modify properties of text field  410 , such as font, size, and so forth. 
       FIG. 5  illustrates an exemplary editable preview  500  in a locked configuration and displaying a locked notification  505 . In some instances, the locked notification  505  comprises an icon that resembles a red, locked padlock. The locked notification  505  may inform a subsequent content editor that a particular asset currently unavailable for editing. The asset may be unavailable for edit for any one of a number of reasons. For example, the locked notification may inform the content editor that another editor is already editing the asset, or that a system administrator did not grant the permissions to perform an edit for that asset or class of assets. In other instances the locked notification may be provided when the content is being used on other websites and editing requires localization action to be completed. 
     In this instance, the preview includes a locked notification that comprises a message  510  that notifies the content editor that the webpage that is represented by the editable preview  500  appears on other websites. Therefore, modifications to this editable preview  500  may be migrated to and affect other web sites that host different versions of the webpage. 
       FIG. 6  illustrates the exemplary editable preview  500  of  FIG. 5  in an unlocked configuration. The editable preview  600  includes a notification  605  that the selected item has been localized (e.g., that the webpage was selected for editing by a content editor). 
       FIG. 7  illustrates an exemplary emulation attribute GUI  700  that comprises a plurality of emulation attributes that define an emulation template that may be utilized to render a preview  705  of the webpage. The GUI  700  may include browser type selections  710 , content language selections  715 , recurring visitor selection  720 , operating system selections  725 , and search term selection  730 —just to name a few. 
       FIG. 8  illustrates an exemplary editable preview  800  of a webpage that was generated using an emulation template. The GUI associated with the editable preview  800  may include a dropdown menu  805  that allows the content editor to view the emulation template that was utilized to generate the editable preview  800  and open an emulation attribute GUI, such as GUI  700  of  FIG. 7 . 
       FIG. 9  illustrates a flowchart of an exemplary method for managing an editable preview of a webpage. According to some embodiments, the method may include a step  905  of receiving a request to generate an editable preview of a webpage. In some instances, the webpage may comprise assets arranged according to a layout. Additionally, the preview may be generated via a preview server  120  and pre-published to an authoring environment  155  that is separate from the preview server  120  that publishes the webpage. 
     Next, the method may comprise the step  910  of obtaining assets of the webpage from one or more content repositories or databases. As mentioned previously, the assets may be associated with the webpage via identifiers. Moreover, assets may be selected from both the content associated with a published version of the webpage, along with delta content that includes changed content relative to the published version of the webpage. For example, the preview may include previous modifications from other content editors. 
     The method may also comprise a step  915  of generating an editable preview of the webpage using the obtained assets, along with a step  920  of providing the editable preview of the webpage to an authoring environment, for editing by a content editor in such a way that when the content editor edits at least one of the obtained assets, the at least one obtained asset is placed in a locked format to prevent editing by additional content editors. 
       FIG. 10  illustrates a flowchart of an exemplary method for generating an editable preview of a webpage. The method may comprise a step  1005  of determining delta content for a webpage. Again, delta content may comprise changes in content between a published version of the webpage and at least one non-published version of the webpage. Once the delta content has been determined, the method may comprise a step  1010  of obtaining both the content of the published version of the webpage and the delta content. 
     The method may comprise a step  1015  of generating a preview of the webpage using both the content of the published version of the webpage and the delta content, along with a step  1020  of providing the preview of the webpage to an authoring environment generated by a preview server. 
     It is noteworthy that the methods described herein may comprise fewer or more steps relative to those cited herein. 
       FIG. 11  illustrates an exemplary computing device (also referred to as system)  1100  that may be used to implement an embodiment of the present technology. The system  1100  of  FIG. 11  (or portions thereof) may be implemented in the context of architecture  100  ( FIG. 1 ). The computing device  1100  of  FIG. 11  includes one or more processors  1110  and main memory  1120 . Main memory  1120  stores, in part, instructions and data for execution by processor  1110 . Main memory  1120  may store the executable code when in operation. The system  1100  of  FIG. 11  further includes a mass storage device  1130 , portable storage medium drive(s)  1140 , output devices  1150 , user input devices  1160 , a display system  1170 , and peripheral devices  1180 . 
     The components shown in  FIG. 11  are depicted as being connected via a single bus  1190 . The components may be connected through one or more data transport means. Processor unit  1110  and main memory  1120  may be connected via a local microprocessor bus, and the mass storage device  1130 , peripheral device(s)  1180 , portable storage device  1140 , and display system  1170  may be connected via one or more input/output (I/O) buses. 
     Mass storage device  1130 , which may be implemented with a magnetic disk drive or an optical disk drive, is a non-volatile storage device for storing data and instructions for use by processor unit  1110 . Mass storage device  1130  may store the system software for implementing embodiments of the present invention for purposes of loading that software into main memory  1120 . 
     Portable storage device  1140  operates in conjunction with a portable non-volatile storage medium, such as a floppy disk, compact disk, digital video disc, or USB storage device, to input and output data and code to and from the computing device  1100  of  FIG. 11 . The system software for implementing embodiments of the present invention may be stored on such a portable medium and input to the computing device  1100  via the portable storage device  1140 . 
     Input devices  1160  provide a portion of a user interface. Input devices  1160  may include an alphanumeric keypad, such as a keyboard, for inputting alpha-numeric and other information, or a pointing device, such as a mouse, a trackball, stylus, or cursor direction keys. Additionally, the system  1100  as shown in  FIG. 11  includes output devices  1150 . Suitable output devices include speakers, printers, network interfaces, and monitors. 
     Display system  1170  may include a liquid crystal display (LCD) or other suitable display device. Display system  1170  receives textual and graphical information, and processes the information for output to the display device. 
     Peripherals  1180  may include any type of computer support device to add additional functionality to the computer system. Peripheral device(s)  1180  may include a modem or a router. 
     The components provided in the computing device  1100  of  FIG. 11  are those typically found in computer systems that may be suitable for use with embodiments of the present invention and are intended to represent a broad category of such computer components that are well known in the art. Thus, the computing device  1100  of  FIG. 11  may be a personal computer, hand held computing device, telephone, mobile computing device, workstation, server, minicomputer, mainframe computer, or any other computing device. The computer may also include different bus configurations, networked platforms, multi-processor platforms, etc. Various operating systems may be used including Unix, Linux, Windows, Macintosh OS, Palm OS, Android, iPhone OS and other suitable operating systems. 
     It is noteworthy that any hardware platform suitable for performing the processing described herein is suitable for use with the technology. Computer-readable storage media refer to any medium or media that participate in providing instructions to a central processing unit (CPU), a processor, a microcontroller, or the like. Such media may take forms including, but not limited to, non-volatile and volatile media such as optical or magnetic disks and dynamic memory, respectively. Common forms of computer-readable storage media include a floppy disk, a flexible disk, a hard disk, magnetic tape, any other magnetic storage medium, a CD-ROM disk, digital video disk (DVD), any other optical storage medium, RAM, PROM, EPROM, a FLASHEPROM, and/or any other memory chip or cartridge. 
     While various embodiments have been described above, it should be understood that they have been presented by way of example only, and not limitation. The descriptions are not intended to limit the scope of the technology to the particular forms set forth herein. Thus, the breadth and scope of a preferred embodiment should not be limited by any of the above-described exemplary embodiments. It should be understood that the above description is illustrative and not restrictive. To the contrary, the present descriptions are intended to cover such alternatives, modifications, and equivalents as may be included within the spirit and scope of the technology as defined by the appended claims and otherwise appreciated by one of ordinary skill in the art. The scope of the technology should, therefore, be determined not with reference to the above description, but instead should be determined with reference to the appended claims along with their full scope of equivalents.