Users are increasingly relying upon various electronic and computing devices to store, track, and update various types of information and handle various types of tasks. For example, many users rely upon computing devices to store contact information, user schedules, task lists, and other such information. Further, users also store various types of files and addresses such as media files, email messages, Web site links, and other types of information. One problem with accessing such information is that the information is typically stored separately, in what are referred to as “data silos,” where information used for one application is stored separately from information for another application. Information in these silos is not directly linked, may not be externally accessible, and may be tough to correlate. For example, GPS data might track where a user is at any given time, and browse history might track which Web sites a user visits at any given time, but there is no direct way (without aggregating and processing the data) to determine which Web sites were viewed at which locations.
Further, the approaches for searching within a data silo are also limited. For example, a browser history might store a list of Web sites that the user visited, which can be sorted by conventional dimensions such as name and time. If a user wants to determine the address of a site that the user viewed when the user was in a particular restaurant some time last month using conventional approaches, the user typically would have to open the browse history and scroll through many days of data in order to attempt to find the relevant site. Thus, data is not organized or presented in a way that is intuitive for many users, or follows patterns matching the ways in which users typically think.
Various embodiments in accordance with the present disclosure will be described with reference to the drawings, in which:
Systems and methods in accordance with various embodiments of the present disclosure overcome one or more of the above-referenced and other deficiencies in conventional approaches to obtaining and managing data and other types of information. In particular, various embodiments provide the ability to capture and associate data across multiple dimensions, where a dimension generally is a data type, category, or element characterizing a region or portion of a data set according to a meaningful separation (e.g., data, group, region, etc.). Dimensions are typically useful for functions such as grouping, sorting, and filtering of a data set. Such approaches can provide for an extended associative memory that enables a user (or application) to locate information using associations that are natural and/or intuitive to that user. Various embodiments also enable an application, user, module, service, or other such entity or component to access, view, search, and otherwise interact with the data across any of the captured and associated dimensions. For example, a user can utilize various different views and combinations of dimensions to locate information that is of interest to the user, in a way that is more intuitive for the user and more closely matches the way the user thinks than conventional list-based approaches. Further, the paths and views used to find data, files, or other information of interest to different users can be dynamically adjusted for each user without any configuration or training process. Further, applications are not limited by data in application-specific silos, but can provide enhanced functionality by having the ability to leverage other types of data that are not readily accessible in conventional systems.
In various embodiments, one or more computing or electronic devices can be configured to capture various dimensions of data for a user (or other group or entity, etc.). The dimensions for which data is collected can vary based upon a number of factors, such as user preference, available applications, the type of device, available uses of the device, settings, configurations, permissions, authorizations, and other such factors. A device can associate data across a number of different dimensions using any appropriate mapping or correlation approach, such as through the use of tags or meta data. The data can be correlated before storing, such as by associating data for (1) a particular caller at (2) a certain time to (3) a certain device before storing that data, or after storing, such as by tagging each piece of data and correlating the dimensions such that for subsequent analysis those pieces of data can be aggregated and/or associated. Various other approaches can be utilized as well within the scope of the various embodiments.
Various embodiments also provide interfaces that take advantage of the multi-dimensional associations. For example, a user can select to view a “context” or other state, collection, or grouping of data. The selected context can determine information such as the dimensions of data that are displayed, how those dimensions are displayed, and how the data for the dimensions is sorted. When displayed, the user can have the ability to scroll, zoom, or otherwise navigate about the interface to find a dimension of interest, and potentially a value or range of values of that data. The user can also combine, join, or select additional dimensions in order to assist in locating data. For example, the user can select to view all data for a first dimension that is associated with a second dimension, and so on. Such an approach enables a user to utilize different dimensions as nodes, branches, or portions of a path to get to the information of interest, where that path can be different for each user as may be based at least in part upon how that user thinks about, processes, and/or manages data. Similar approaches can enable applications or other entities to locate and/or utilize data through various dimension associations.
Various other functions and advantages are described and suggested below as may be provided in accordance with the various embodiments.
The example computing device 100 also includes a microphone 106 or other audio capture device capable of capturing audio data, such as words or commands spoken by a user of the device. In this example, a microphone 106 is placed on the same side of the device as the display screen 102, such that the microphone will typically be better able to capture words spoken by a user of the device. In at least some embodiments, the microphone can be a directional microphone that captures sound information from substantially directly in front of the device, and picks up only a limited amount of sound from other directions, which can help to better capture words spoken by a primary user of the device. It should be understood, however, that a microphone might be located on any appropriate surface of any region, face, or edge of the device in different embodiments, and that multiple microphones can be used for audio recording and filtering purposes, etc.
The example computing device 100 also includes at least one position and/or orientation determining element 108. Such an element can include, for example, an accelerometer or gyroscope operable to detect an orientation and/or change in orientation of the computing device, as well as small movements of the device. An orientation determining element also can include an electronic or digital compass, which can indicate a direction (e.g., north or south) in which the device is determined to be pointing (e.g., with respect to a primary axis or other such aspect). A location determining element also can include or comprise a global positioning system (GPS) or similar positioning element operable to determine relative coordinates for a position of the computing device, as well as information about relatively large movements of the device. Various embodiments can include one or more such elements in any appropriate combination. As should be understood, the algorithms or mechanisms used for determining relative position, orientation, and/or movement can depend at least in part upon the selection of elements available to the device.
In some embodiments, the computing device 200 of
The device 200 also can include at least one orientation, movement, and/or location determination mechanism 212. As discussed, such a mechanism can include an accelerometer or gyroscope operable to detect an orientation and/or change in orientation, or an electronic or digital compass, which can indicate a direction in which the device is determined to be facing. The mechanism(s) also (or alternatively) can include or comprise a global positioning system (GPS) or similar positioning element operable to determine relative coordinates for a position of the computing device, as well as information about relatively large movements of the device. The device can include other elements as well, such as may enable location determinations through triangulation or another such approach. These mechanisms can communicate with the processor 202, whereby the device can perform any of a number of actions described or suggested herein.
As an example, a computing device such as that described with respect to
For example,
Similarly, the user might receive a call on a mobile device while the user is moving. Another icon 312 can be displayed that illustrates approximately where the user was when the user received the call. In the example, the user can utilize the captured and associated information in a number of different ways. For example, the user might not remember when the user received the call but might remember where, so the user can find information based on the call based on where the call was received. Similarly, the user might only remember receiving the call on the way to work 310, so the user might be able to find the call based on time and/or the route the user took. In another example, the user might not remember the location of a business such as a restaurant, but might remember that the user passed the restaurant when the user was on that call. By locating the position where the user received the call, the user can also determine the approximate location of the restaurant.
Various other information is illustrated on the interface 300 that was captured by the device on the Nov. 10, 2010. For example, different songs that the user listened to are represented by a plurality of icons 316, 318, 320 positioned at the approximate locations where the user listened to those songs. The route 308 the user took is also captured and can be displayed. An icon 306 representing a store that the user visited during that time is illustrated, along with an icon 322 illustrating a person whom the user met at the store. The identity of the person the user met can be determined by the device using any appropriate method, such as voice or image recognition. In other embodiments, the user device can communicate with a device of that person and log the interaction. Another icon 324 can represent one or more Web sites that the user visited while at work. Various other types of information can be captured and associated with time and/or location as well, as may be advantageously displayed on such an interface.
Such an interface allows for relatively complex determinations that would be difficult to determine using conventional approaches. For example, the user might remember taking an important call right before meeting someone at the store. If the user does not remember the date or time, the user might search the location data for occurrences when the user met the person or went to the store, then look at call data taken near that location or around that time. Using conventional approaches, a user would likely have to narrow down a set of times when the user might have received the call, and then search through call logs to attempt to find the call of record. In some embodiments, the user can filter the data on the interface to include times around when the user went to that store and/or met that user, and can use that information to quickly find the call of interest.
As discussed, information can be captured for many different dimensions. Various data logging schemes can be used that enable dimensions to be handled separately as needed, while providing for the necessary associations. In conventional approaches this information might be segregated into several separate data silos. Approaches in accordance with various embodiments enable the data to be stored in such a way that the data can be accessed, cross-referenced, aggregated, processed, or otherwise utilized together for any of a number of different reasons.
The information for each dimension (represented by an axis, block, plane, etc.) can be sorted by any appropriate dimension or other such aspect. In this example, the dimensions are sorted by time, such that the display can be referred to as a “timeline interface.” An advantage of such a timeline interface is that a user can compare information across various dimensions for a single point in time, or range of times. For example, a user can zoom the interface to show a particular range of time, or as discussed elsewhere herein can select a certain time from the time axis to obtain a “cross-section” across the various dimensions at the selected time. Such an approach enables the user to quickly be able to view and/or associatively access information for a point in time across multiple dimensions in a single interface. For example, the user might be able to select a specific time, such as 9:30 a.m. on last Thursday. The user might be able to obtain a view across dimensions that indicates that the user was in a room at a certain location with a particular person, on the phone with another user, had a certain application open on the user's desktop, and was browsing a particular Web site. In one state the interface can show each of these different types or avenues of data along a different axis or plane, but through a rotation or other manipulation of the interface the interface can display information across all these dimensions on a single dimension axis or other such representation for a selected time.
Another advantage of an interface such as that illustrated with respect to
A user also can manipulate various aspects of such an interface. For example, instead of sorting each dimension along a dimension such as time, a user can have the option to sort according to a particular axis or dimension as discussed elsewhere herein. Further, the user can change the selection of dimensions that are displayed. In some embodiments, the user might select specific dimensions to display, such as by adding or removing dimensions. In other embodiments, a user might select a particular “context” which will determine the dimensions that are displayed. For example, a user might select a “location” context that might include information about places that were visited and people with whom the user met. Another context might be a “calls” context that includes information such as contacts, address book information, and calendar information. Another view might correspond to a view for a particular application, that might include data created by, or used with, that application. Instead of opening an application to obtain specific sets of data, a user can open a common interface and select the “context” of the data to obtain the desired information. An advantage to such an approach is that other dimensions of data are still associated with the data for a current context, such that if the user wants to view information from other dimensions, the user simply changes the context or otherwise adjusts the display. In conventional approaches, the user would have to open another application and import the data into a common application in order to compare specific information or perform other tasks involving data for different applications. Using an interface in accordance with various embodiments enables a user to define, select, configure, change, update, or otherwise modify any selections of data for any number of dimensions, as well as the ways in which that data is displayed, viewed, or otherwise utilized.
When a user navigates to a dimension of interest, the user can select to view more information about that dimension. This can be accomplished by, for example, selecting a specific dimension or centering a given dimension and then performing a “zoom” or similar action on the device. As a result of such an action, information for a particular dimension can be displayed in greater detail. For example,
In
For a user who has visited many Web sites, or a user who might not remember the name of the site or the specific URL, however, such an approach might not be particularly helpful. Consider an example where the user does not remember the URL, and thus cannot quickly lookup the URL alphabetically, but remembers accessing that URL while at work the previous day.
In some embodiments, the user might want to view information for a combination of those dimensions. For example, in
As can be seen, the instances where the user has Web data corresponding to the Grocery Store can be filtered using another filter option 610 to separate specific instances, here illustrating which URLs 608 were accessed by the user on the device at the grocery store on each of a set of different dates, each corresponding to a specific date tab 606 or icon. As in the previous examples, however, the user can also use the sort option 610 to sort the data by another dimension. As illustrated in the example interface display 620 of
At the zoom level of the display in
Another advantage to such an approach is that a user can take multiple paths to get to the data of interest. For example, in
It should be understood that data for any appropriate dimensions can be captured, associated, stored, displayed, processed, or otherwise handled within the scope of the various embodiments. The data collected can be determined based on any of a number of factors as discussed elsewhere herein. For example, a portable media player might not have position-determining capabilities, or a desktop computer might not have any significant benefit to capturing position information over time. In other cases, a user might not want that user's position tracked over time, etc. In these or other cases, there can be different sets of information captured that can still monitor the behavior and/or actions of a user, group or users, entity, etc.
For example,
In addition to map and axis or plane-based interfaces, various other interfaces can be displayed that enable users to location and/or view information in ways that are intuitive to the user. For example,
Along with the information for each connection 802 can be icons 804 or other selectable elements that indicate types of information along other dimensions that are available for that connection. For example, it can be seen that Jonny B. and Jenny have had telephone calls with the user, but Moe has not. Further, Moe has not shared a Web site with the user. Such information can be beneficial if a user is attempting to locate a site that one of the user's friends or co-workers shared, but the user cannot remember the exact person who shared the site. Further, the icons enable a user to quickly add a dimension to the display. For example, if the user wants to view contacts that the user shares with Jonny B, the user can select the appropriate Contacts icon associated with Jonny B and have the set of shared contacts displayed. Various other approaches and elements can be includes as well as would be apparent to one of ordinary skill in the art in light of the teachings and suggestions contained herein.
Other interface approaches can be utilized with social data as well. For example,
Further, the contacts can be sorted using at least one appropriate dimension. In this example, the contacts are displayed left to right by the date in which an action occurred, such as contact with a common user, data of most recent phone call, attendance in a common meeting, etc. The interface can attempt to maintain clustering, while positioning the icons for each contact along the axis such that the user can still search for information according to another dimension. For example, from this graph the user might be able to determine that contact 918 was the last contact at Vandelay with which the user spoke, and contact 912 was the last contact at ACME with which the user spoke. Similarly, the user can determine how long it has been since the user spoke with each contact, for example, in case the user should contact one or more of them, etc. Various other uses and sort dimensions can be used as well as should be apparent in light of the teachings and suggestions contained herein.
As can be seen, information from various dimensions can be combined and accessed in ways that are intuitive to the user, and that enable the user to locate information following paths that were not previously available via conventional interfaces. Devices can provide different approaches to enable different users to find the same information along different paths. For example, certain users might associate information with places, while other users might associate information with people, activities, semantics, time, dominant color, decibel level or pitch, or other such information. The ability to change the type of interface, and locate information by combining information for various dimensions, enables users to obtain a customized information location system without any customization or configuration process, using approaches that are intuitive to the user.
Once authorized, a device can capture information for all authorized dimensions over time 1004. In some embodiments, a device can monitor the state of various dimensions and record data as appropriate. For example, if a user leaves the device on a table for an extended period of time, the device might store the position when the device is first set down, but might not store or capture position data again until the device is moved, as may be detected by an accelerometer, GPS device, etc. As another example, a device might only record data for messages as they arrive or are transmitted, etc. In other embodiments, a device might store data points periodically, such as updating the position or location of the device every second, ten seconds, thirty seconds, etc.
The captured data can be analyzed or processed 1006 and data across various dimensions can be associated 1008, such as by tagging each data point, storing appropriate meta data, or otherwise providing a mapping or correlation between data points. In some embodiments, a dimension such as time can be used to correlate data across different dimensions. In other embodiments, a random, generated, or encoded alphanumeric identifier can be used to tag associated data points across multiple dimensions. In still other embodiments, mappings can be maintained or table entries associated in order to maintain data associations across the appropriate dimensions. For example, data might be associated by dimensions such as time, location, person, temperature, spend of movement, song that was playing, food that was eaten, heart rate, fragrance, emotion gleaned from user's face or tone of voice, an application the user was using, the battery level of device, an amount of ambient sound or light, purchase history, language spoken, etc. In some embodiments, a system can generate a broadcast API call, with or without “dimensional filters,” when an application generates an “interesting” data point (e.g., the times when phone call started and ended, web site was visited, etc.). Other services within (or external to) the device can listen for this broadcast and add their own context data to the event (i.e., a GPS service can add location, a time service can add time, etc.). The data can still be stored in separate tables with associative keys, or in one tagged block, for example, but such an approach allows future services to add their own dimension to data generation events. Events of interest are thus tagged with data that can be used later to associate across those dimensions with tagging services.
The associated data can be stored to an appropriate data store 1010, such as may be maintained on the device itself or stored remotely or across a network. In some embodiments, data from multiple devices can be aggregated and/or associated using an association approach similar to those discussed above. Once the data is stored, that data can be exposed for use by any number of users, applications, modules, or other such entities or components 1012. In some cases, the device might also store rules dictating which entities or components can utilize certain types or dimensions of data and/or how that data can be utilized.
In order to further enhance the intuitive nature of such an interface, an application associated with the interface can accept motion commands from a user as input to the interface. For example, if a user wants to rotate an axis in a three-dimensional representation then the user can perform an action such as to rotate or tilt the device. If the device has a camera with image recognition, the user can perform a motion such as to swipe a hand in the intended direction, make an appropriate head motion, perform a specified action, etc. Various other types of input can be used as well, such as voice or image input.
As discussed above, a portable device can include at least one orientation and/or location determining element, such as an accelerometer, electronic compass, or gyroscope.
The ability to view information across multiple dimensions and prevent the data from being constrained to data silos can be beneficial for other purposes as well. For example, various applications can take advantage of other types or dimensions of data that are associated with application data, but that were not previously available in an associated and easily accessible way. For example, a navigation application might not previously have had access to calendar and contact data. If a navigation application with visibility across multiple dimensions of data detects a traffic accident that will delay a user, the application can check calendar information to see if the user is likely to be late for a meeting, and if so can take action such as to check the contact information for the persons scheduled to be at the meeting and notify those persons that the user will likely be late. In some conventional approaches, it is not possible for the GPS data, traffic data, and mapping data to all be used together effectively because that data was associated with different applications. Such an approach can work across many traditional data boundaries, where allowed by the user, which can enable expanded functionality for many different applications. In addition to making the data available, the data can be tagged, mapped, or otherwise associated such that applications know how to utilize and/or correlate the data from different dimensions.
Further, a user might no longer open “applications” in a traditional sense, but instead might open up a “context.” For example, instead of opening a Web browser the user might select a Web “view” in order to navigate to a site of interest, which might be displayed in a different view of the interface. A user might view a calendar in a similar fashion, without ever having to open or utilize a dedicated calendar application. Applications can be selected that conform to a certain tagging standard, for example, that enables data captured by that application to be associated with other dimensions of data. In other embodiments, the operating system of a device might be configured to capture and associate data across all defined dimensions, for example, and applications are configured to utilize that data. In such embodiments, applications would not store their own data, but would work with the operating system to cause certain actions to be performed.
In some embodiments, the device capturing information might not determine and/or maintain all the appropriate associations, and/or may enable third party applications or other such sources to generate relevant associations. For example, a device can provide a broadcast application programming interface (API) or other such interface that third parties can use to obtain user data. For example, a variety of applications can subscribe to receive information about certain events, such as occurrences of certain types of data for certain dimensions. When an event occurs, the device can broadcast the event and subscribing services can tag the information using their own context in order to establish associations that are relevant for that application. For example, a navigation application may not care about social networking information, and a calendaring application might not care about messages received, etc. The applications can obtain information for certain types of events and determine whether to associate and store that data for a particular user, device, entity, etc.
Such an approach can be used to provide a variety of services for the user. For example, the device can suggest the best route to take to work or return home based on time of day and day of week. The device can ask to reschedule meetings where the attendees are determined to be unable to make the meeting on time due to their current location. If users are determined to be near each other, the device can provide a notification and ask if the user would like to meet up with the other user. If there are places that a user needs to go that are determined to be along the inferred route, the device can prompt the user to stop at that location if the user will have enough time based on current conditions. Various other services can be provided as well.
In addition to applications, other entities or modules such as Web sites or electronic marketplaces can be configured or programmed to utilize such information as well. In some embodiments, an electronic marketplace might not display information through a conventional Web page in a browser, but might provide information to a device that can be displayed along one or more dimensions of a multi-dimensional interface and can be sorted and modified just as any data stored on the device. For example, a shopping view might show dimensions such as past purchases, browse history, reviews, wish list items, etc. A user can select such a view and navigate to content of interest using approaches discussed and suggested herein. Further, since the data can be associated with other data dimensions, the user can obtain information that would not previously have been readily determinable. For example, if a product on the marketplace was reviewed by a reviewer that the user recognizes, but cannot remember where the user met that reviewer, the user can change the view to combine contacts, location, or other such dimensions with the shopping dimension to locate the information.
As discussed, different approaches can be implemented in various environments in accordance with the described embodiments. For example,
The illustrative environment includes at least one application server 1208 and a data store 1210. It should be understood that there can be several application servers, layers or other elements, processes or components, which may be chained or otherwise configured, which can interact to perform tasks such as obtaining data from an appropriate data store. As used herein the term “data store” refers to any device or combination of devices capable of storing, accessing and retrieving data, which may include any combination and number of data servers, databases, data storage devices and data storage media, in any standard, distributed or clustered environment. The application server can include any appropriate hardware and software for integrating with the data store as needed to execute aspects of one or more applications for the client device and handling a majority of the data access and business logic for an application. The application server provides access control services in cooperation with the data store and is able to generate content such as text, graphics, audio and/or video to be transferred to the user, which may be served to the user by the Web server in the form of HTML, XML or another appropriate structured language in this example. The handling of all requests and responses, as well as the delivery of content between the client device 1202 and the application server 1208, can be handled by the Web server 1206. It should be understood that the Web and application servers are not required and are merely example components, as structured code discussed herein can be executed on any appropriate device or host machine as discussed elsewhere herein.
The data store 1210 can include several separate data tables, databases or other data storage mechanisms and media for storing data relating to a particular aspect. For example, the data store illustrated includes mechanisms for storing production data 1212 and user information 1216, which can be used to serve content for the production side. The data store also is shown to include a mechanism for storing log or session data 1214. It should be understood that there can be many other aspects that may need to be stored in the data store, such as page image information and access rights information, which can be stored in any of the above listed mechanisms as appropriate or in additional mechanisms in the data store 1210. The data store 1210 is operable, through logic associated therewith, to receive instructions from the application server 1208 and obtain, update or otherwise process data in response thereto. In one example, a user might submit a search request for a certain type of item. In this case, the data store might access the user information to verify the identity of the user and can access the catalog detail information to obtain information about items of that type. The information can then be returned to the user, such as in a results listing on a Web page that the user is able to view via a browser on the user device 1202. Information for a particular item of interest can be viewed in a dedicated page or window of the browser.
Each server typically will include an operating system that provides executable program instructions for the general administration and operation of that server and typically will include computer-readable medium storing instructions that, when executed by a processor of the server, allow the server to perform its intended functions. Suitable implementations for the operating system and general functionality of the servers are known or commercially available and are readily implemented by persons having ordinary skill in the art, particularly in light of the disclosure herein.
The environment in one embodiment is a distributed computing environment utilizing several computer systems and components that are interconnected via communication links, using one or more computer networks or direct connections. However, it will be appreciated by those of ordinary skill in the art that such a system could operate equally well in a system having fewer or a greater number of components than are illustrated in
As discussed above, the various embodiments can be implemented in a wide variety of operating environments, which in some cases can include one or more user computers, computing devices, or processing devices which can be used to operate any of a number of applications. User or client devices can include any of a number of general purpose personal computers, such as desktop or laptop computers running a standard operating system, as well as cellular, wireless, and handheld devices running mobile software and capable of supporting a number of networking and messaging protocols. Such a system also can include a number of workstations running any of a variety of commercially-available operating systems and other known applications for purposes such as development and database management. These devices also can include other electronic devices, such as dummy terminals, thin-clients, gaming systems, and other devices capable of communicating via a network.
Various aspects also can be implemented as part of at least one service or Web service, such as may be part of a service-oriented architecture. Services such as Web services can communicate using any appropriate type of messaging, such as by using messages in extensible markup language (XML) format and exchanged using an appropriate protocol such as SOAP (derived from the “Simple Object Access Protocol”). Processes provided or executed by such services can be written in any appropriate language, such as the Web Services Description Language (WSDL). Using a language such as WSDL allows for functionality such as the automated generation of client-side code in various SOAP frameworks.
Most embodiments utilize at least one network that would be familiar to those skilled in the art for supporting communications using any of a variety of commercially-available protocols, such as TCP/IP, OSI, FTP, UPnP, NFS, CIFS, and AppleTalk. The network can be, for example, a local area network, a wide-area network, a virtual private network, the Internet, an intranet, an extranet, a public switched telephone network, an infrared network, a wireless network, and any combination thereof.
In embodiments utilizing a Web server, the Web server can run any of a variety of server or mid-tier applications, including HTTP servers, FTP servers, CGI servers, data servers, Java servers, and business application servers. The server(s) also may be capable of executing programs or scripts in response requests from user devices, such as by executing one or more Web applications that may be implemented as one or more scripts or programs written in any programming language, such as Java®, C, C# or C++, or any scripting language, such as Perl, Python, or TCL, as well as combinations thereof. The server(s) may also include database servers, including without limitation those commercially available from Oracle®, Microsoft®, Sybase®, and IBM®.
The environment can include a variety of data stores and other memory and storage media as discussed above. These can reside in a variety of locations, such as on a storage medium local to (and/or resident in) one or more of the computers or remote from any or all of the computers across the network. In a particular set of embodiments, the information may reside in a storage-area network (“SAN”) familiar to those skilled in the art. Similarly, any necessary files for performing the functions attributed to the computers, servers, or other network devices may be stored locally and/or remotely, as appropriate. Where a system includes computerized devices, each such device can include hardware elements that may be electrically coupled via a bus, the elements including, for example, at least one central processing unit (CPU), at least one input device (e.g., a mouse, keyboard, controller, touch screen, or keypad), and at least one output device (e.g., a display device, printer, or speaker). Such a system may also include one or more storage devices, such as disk drives, optical storage devices, and solid-state storage devices such as random access memory (“RAM”) or read-only memory (“ROM”), as well as removable media devices, memory cards, flash cards, etc.
Such devices also can include a computer-readable storage media reader, a communications device (e.g., a modem, a network card (wireless or wired), an infrared communication device, etc.), and working memory as described above. The computer-readable storage media reader can be connected with, or configured to receive, a computer-readable storage medium, representing remote, local, fixed, and/or removable storage devices as well as storage media for temporarily and/or more permanently containing, storing, transmitting, and retrieving computer-readable information. The system and various devices also typically will include a number of software applications, modules, services, or other elements located within at least one working memory device, including an operating system and application programs, such as a client application or Web browser. It should be appreciated that alternate embodiments may have numerous variations from that described above. For example, customized hardware might also be used and/or particular elements might be implemented in hardware, software (including portable software, such as applets), or both. Further, connection to other computing devices such as network input/output devices may be employed.
Storage media and computer readable media for containing code, or portions of code, can include any appropriate media known or used in the art, including storage media and communication media, such as but not limited to volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage and/or transmission of information such as computer readable instructions, data structures, program modules, or other data, including RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disk (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by the a system device. Based on the disclosure and teachings provided herein, a person of ordinary skill in the art will appreciate other ways and/or methods to implement the various embodiments.
The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense. It will, however, be evident that various modifications and changes may be made thereunto without departing from the broader spirit and scope of the invention as set forth in the claims.
This application is a continuation of U.S. application Ser. No. 12/950,896, filed on Nov. 19, 2010, the content of which is incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
Parent | 12950896 | Nov 2010 | US |
Child | 15271217 | US |