Password spying protection system

In example embodiments, a first pattern of characters is displayed on a user interface of a user device. A user input is received and the first pattern of characters is replaced by a second pattern of characters. The user input is a selection of one of the characters from the pattern of characters. Each character is encrypted by a password selection rule (e.g., assign to a character selection the value of the character adjacent in a clockwise, counterclockwise, or diagonal direction from the selected character). After all user inputs are received determined from the password selection rule, an input password is generated. The generated input password is compared to a stored password designation to determine whether the input password matches the stored password designation. If the input password matches the stored password designation, the user is authorized to have access to the user device.

CLAIM OF PRIORITY

This Application is a U.S. National Stage Filing under 35 U.S.C. 371 from International Application No. PCT/CN2015/092228, filed on 19 Oct. 2015, and published as WO 2017/066914 on 27 Apr. 2017, which Application and Publication are incorporated by reference herein in their entirety.

TECHNICAL FIELD

Embodiments of the present disclosure relate generally security and, more particularly, but not by way of limitation, to password spying protection.

BACKGROUND

Conventionally, mobile devices are often equipped with a password to prevent unauthorized use of, or access to, the devices. However, known methods of entering simple passwords are easily spied on by surrounding people or devices in public areas. Password protection methods involving randomly ordered sets of patterns or colors may allow an authorized user to be authenticated by noting and selecting background patterns or colors associated with a password. Although hidden rules are used for added security, such methods may not be user-friendly and may be complex and time-consuming. Password protection methods involving alternative virtual keypad layouts may still allow spying people or devices to decipher a password by monitoring matching rules used.

DETAILED DESCRIPTION

Reference will now be made in detail to specific example embodiments for carrying out the inventive subject matter. Examples of these specific embodiments are illustrated in the accompanying drawings. It will be understood that these examples are not intended to limit the scope of the claims to the illustrated embodiments. On the contrary, they are intended to cover alternatives, modifications, and equivalents as may be included within the scope of the disclosure. In the following description, specific details are set forth in order to provide a thorough understanding of the subject matter. Embodiments may be practiced without some or all of these specific details.

In various example embodiments, a first pattern of characters (e.g., symbols or other selectable elements having values corresponding to data values) is presented on a user interface. A user input is received, wherein the user input is a selection of one of the characters from the pattern of characters. In response to receiving the user input, the first pattern of characters is replaced by a second pattern of characters. Each pattern of characters may be arranged in any shape (e.g., circle, square, line). Each character is encrypted by a password selection rule (e.g., assign to a character selection a value of a character adjacent in a clockwise, counterclockwise, or diagonal direction from the selected character). The characters of each pattern may be arranged at random. After all user inputs are received and the values of the user inputs are determined from previously stored password selection rules, an input password is generated, comprising the user inputs. The generated input password is compared to a previously stored password designation to determine whether the input password matches the stored password designation. The stored password designation may be a user-defined password. If the input password matches the stored password designation, the user is authorized to have access to the user device or any one of the functions of the user device.

FIG. 1is a network diagram illustrating a network system100suitable for facilitating a method of password spying protection having a client-server architecture configured for exchanging data over a network102, according to one embodiment. While the network system100is depicted as having a client-server architecture, the present inventive subject matter is, of course, not limited to such an architecture, and could equally well find application in an event-driven, distributed, or peer-to-peer architecture system, for example. Further, to avoid obscuring the inventive subject matter with unnecessary detail, various functional components that are not germane to conveying an understanding of the inventive subject matter have been omitted fromFIG. 1. Moreover, it shall be appreciated that although the various functional components of the network system100are discussed in the singular sense, multiple instances of any one of the various functional components may be employed.

The network system100includes a network-based system104in communication with a client device106and a third party server108. In one embodiment, the network-based system104may be a network-based marketplace (e.g., eBay.com). The network-based system104communicates and exchanges data within the network system100that pertain to various functions and aspects associated with the network system100and its users. The network-based system104may provide server-side functionality, via the network102(e.g., the Internet), to network devices such as the client device106.

The client device106may comprise, but is not limited to, a mobile phone, desktop computer, laptop, portable digital assistant (PDA), smart phone, tablet, ultra book, netbook, multi-processor system, microprocessor-based or programmable consumer electronic, game console, set-top boxes, or any other communication device that a user may utilize to access the network-based system104. In some embodiments, the client device106may comprise a display module (not shown) to display information (e.g., in the form of user interfaces). In further embodiments, the client device106may comprise one or more of touch screens for receiving user inputs, accelerometers, gyroscopes, cameras, microphones, global positioning system (GPS) devices, and so forth. The client device106may be a device of a user that is used to perform a transaction involving digital items within the network-based system104.

The client device106may be operated by users who use the network system100to exchange data over the network102. These data exchanges include transmitting, receiving (communicating), and processing data to, from, and regarding content and users of the network system100. The data may include, but are not limited to, images; video or audio content; user preferences; product and service feedback, advice, and reviews; product, service, manufacturer, and vendor recommendations and identifiers; product and service listings associated with buyers and sellers; product and service advertisements; auction bids; transaction data; user profile data; and social data, among other things.

The client device106interfaces with the network-based system104via a connection with the network102. Depending on the form of the client device106, any of a variety of types of connections and networks102may be used. For example, the connection may be Code Division Multiple Access (CDMA) connection, a Global System for Mobile communications (GSM) connection, or another type of cellular connection. Such a connection may implement any of a variety of types of data transfer technology, such as Single Carrier Radio Transmission Technology (1×RTT), Evolution-Data Optimized (EVDO) technology, General Packet Radio Service (GPRS) technology, Enhanced Data rates for GSM Evolution (EDGE) technology, or other data transfer technology (e.g., fourth generation wireless, 4G networks). When such technology is employed, the network102may include a cellular network that has a plurality of cell sites of overlapping geographic coverage, interconnected by cellular telephone exchanges. These cellular telephone exchanges may be coupled to a network backbone (e.g., the public switched telephone network (PSTN), a packet-switched data network, or other types of networks).

In another example, the connection to the network102may be a Wireless Fidelity (Wi-Fi, IEEE 802.11x type) connection, a Worldwide Interoperability for Microwave Access (WiMAX) connection, or another type of wireless data connection. In such an embodiment, the network102may include one or more wireless access points coupled to a local area network (LAN), a wide area network (WAN), the Internet, or another packet-switched data network. In yet another example, the connection to the network102may be a wired connection (e.g., an Ethernet link), and the network102may be a LAN, a WAN, the Internet, or another packet-switched data network. Accordingly, a variety of different configurations are expressly contemplated.

In various embodiments, the data exchanged within the network system100may be dependent upon user-selected functions available through one or more client or user interfaces (UIs). The UIs may be associated with a client device, such as the client device106executing a web client110(e.g., an Internet browser), which may be in communication with the network-based system104. The UIs may also be associated with one or more applications112executing on the client device106, such as a mobile application designed for interacting with the network-based system104or with a social network platform hosted by the third party server108. In one embodiment, a password spying protection system124operates within the client device106and may be in communication with the network-based system104through the network102.

Turning specifically to the network-based system104, an application programming interface (API) server114and a web server116are coupled to, and provide programmatic and web interfaces respectively to, an application server118. As illustrated inFIG. 1, the application server118may be coupled via the API server114and the web server116to the network102, for example, via wired or wireless interfaces. The application server118is, in turn, shown to be coupled to a database server120that facilitates access to a database122. In some examples, the application server118can access the database122directly without the need for the database server120. The database122may include multiple databases that may be internal or external to the network-based system104.

The application server118may, for example, host one or more applications that provide a number of content publishing and viewing functions and services to users who access the network-based system104. For example, the network-based system104may host a marketplace application that provides a number of marketplace functions and services to users, such as publishing, listing, and price-setting mechanisms whereby a seller may list (or publish information concerning) goods or services (also collectively referred to as “products”) for sale, a buyer can express interest in or indicate a desire to purchase such goods or services, and a price can be set for a transaction pertaining to the goods or services. The marketplace application may also provide a payment system(s) that includes a number of functions to perform or facilitate payments and transactions.

The database122stores data pertaining to various functions and aspects associated with the network system100and its users. For example, the database122stores and maintains user profiles for users of the network-based system104. Each user profile comprises user profile data that describes aspects of a particular user. The user profile data may, for example, include demographic data, user preferences, social data, and financial information. The demographic data may, for example, include information describing one or more characteristics of a user, such as gender, age, location information (e.g., hometown or current location), employment history, education history, contact information, familial relations, or user interests. The financial information may, for example, include private financial information of the user, such as account number, credential, password, device identifier, user name, phone number, credit card information, bank information, transaction history, or other financial information which may be used to facilitate online transactions by the user.

The database122may also store data values comprising password designations and password selection rules, which may be included in the user profile data. Such values may be specified as data within the password spying protection system124as part of user profile data stored on the client device106. A password designation may be a combination of characters that when received by a user of a device will unlock a device. Additionally, such values may be specified as part of the user profile data stored in a user profile of a user of the network-based system104. The password spying protection system124may access the stored password designations and password selection rules from the database122during operation. While the password spying protection system124is shown to be embodied on the client device106, alternative embodiments may include the password spying protection system124at the network-based system104. Further details of the operation of the password spying protection system124are described herein with respect toFIG. 3throughFIG. 6.

FIG. 1also illustrates a third party application126executing on the third party server108that may offer information or services to the application server118or to users of the client device106. The third party application126has programmatic access to the network-based system104via a programmatic interface provided by the API server114. The third party application126is associated with any organization that may conduct transactions with or provide services to the application server118or to users of the client device106. For example, the third party application126may be associated with a network-based social network platform (e.g., Facebook®, Twitter®, Google+®, Pinterest®, LinkedIn®, or the like) that may provide a platform for members to build and maintain social networks and relations among members.

FIG. 2is a block diagram illustrating functional components of the password spying protection system124, according to some example embodiments. Various functional modules are shown for the password spying protection system124, consistent with some embodiments. The password spying protection system124is shown as including an initialization module204, a user input module206, an analysis module212, a database214, an authorization module216, and a display module218. Additionally, the initialization module204includes a password module208and a rules module210. The initialization module204, the user input module206, the analysis module212, the database214, the authorization module216, and the display module218may all be configured to communicate with each other (e.g., via a bus, shared memory, a switch, or APIs). The various modules of the password spying protection system124may, furthermore, access the database122via the database servers120through the network102, and each of the various modules of the password spying protection system124may be in communication with one or more of the third party applications126(e.g., a social network platform). While the database214is shown to be a part of the password spying protection system124, in an alternative embodiment, the database214may be coupled to the password spying protection system124. Further, while the modules ofFIG. 2are discussed in the singular sense, it will be appreciated that in other embodiments multiple modules may be employed.

The initialization module204is configured to initialize the password spying protection system124by generating a user interface for presentation on a user device (e.g., client device106). The user interface includes perceptible user interface elements allowing display of a pattern of a plurality of characters. Further details and embodiments of the user interface are described herein with respect toFIG. 7throughFIG. 10.

The password module208is configured to receive a password designation (e.g., including characters comprising a password that are chosen by a user) and store the password designation in the database (e.g., database122, database214). The characters included in a password designation may be symbols (e.g., alphanumeric symbols, punctuation, shapes, and objects) or other selectable elements having values corresponding to data values (e.g., a selectable element on the client device106corresponding to a data value designating a location on the client device screen).

The rules module210is configured to receive password selection rules from a user and store the password selection rules in the database (e.g., database122, database214). Password selection rules may, for example, include a counterclockwise rule (e.g., the input value of a received user input is determined to be the value of the character that is counterclockwise in orientation from the character actually selected by the user). Password selection rules may also include, for example, determining an input value based on a neighboring character in a clockwise orientation or a diagonal orientation. An input value may also be determined based on a combination of password selection rules.

The user input module206is configured to receive user input through the user interface of the client device (e.g., client device106). The user input that the user input module206receives may include a password designation, password selection rules, or a user inputs during a login process. The user input module206is also configured to determine the input value of the user input based on a password selection rule.

The analysis module212is configured to generate an input password from a series of user inputs (e.g., a first and a second user input) based on the determination of the input values of the series of user inputs by the user input module206. The analysis module212is also configured to compare the generated input password to a stored password designation in the database (e.g., database122, database214). By comparing the input password to the stored password designation, the analysis module212determines whether there is a match between the data values representing the input password and the data values representing the stored password designation.

The authorization module216is configured to provide authorization to a user of the user device based on the input password matching the stored password designation. Such authorization permits the user to use the client device or any one of the functions of the client device (e.g., applications). In some embodiments, providing authorization to a user may include transmission of an authorization token to the network-based system104.

The display module218is configured to provide the user interface for display on the client device, including perceptible user interface elements. The perceptible user interface elements are patterns of characters displayed on the user interface. The patterns of characters may be aligned on the user interface in any arrangement or shape (e.g., circle, square, grid, star). Characters, for example, may include symbols (e.g., alphanumeric symbols, punctuation, shapes, and objects) or other selectable elements having values corresponding to data values (e.g., a selectable element on the user device corresponding to a data value designating a location on the user device screen). Patterns of characters for display on the user interface may not be limited to such symbols or other selectable elements and may include any form of perceptible user interface elements, such that the user is able to recognize that one perceptible user interface element is different from another.

FIG. 3is a flowchart illustrating operations of a client device in performing a method300for password spying protection, according to some example embodiments. The method300includes initialization of the password spying protection system124(operation302), generation of an input password (operation304), and verification of user authorization (operation306). At operation302, the password spying protection system124is initialized.

Turning toFIG. 4, initialization of the password spying protection system124at operation302includes generating a user interface (operation402), receiving a password designation from a user (operation404), receiving a password selection rule from a user (operation406), and storing these values in the database (e.g., database122, database214) (operation408). At operation402, the password spying protection system124(e.g., the display module218) generates a user interface for presentation on the client device, including perceptible user interface elements that displays a pattern of characters on the client device. The pattern of characters displayed on the user interface is utilized at least for receiving user inputs. In some embodiments, the patterns of characters displayed on the user interface are also utilized for receiving password designations and password selection rules.

At operation404, the password spying protection system124(e.g., the password module208) receives from a user a password designation. The password designation may be a combination of characters that when received by a user of a device will unlock a device The password designation received may include a series of user inputs (e.g., character selections) including symbols (e.g., alphanumeric symbols, punctuation, shapes, and objects) or other selectable elements having values corresponding to data values.

At operation406, the password spying protection system124(e.g., the rules module210) receives from a user a password selection rule, including a specification of a rule to apply in assigning a value to a received user input. For example, a user may create a password selection rule that assigns as a value to a user input the value of a character adjacent in a clockwise position from the chosen character by the user. A password selection rule may also assign as a value to a user input the value of a character adjacent in a counterclockwise position or in a diagonal position from the chosen character by the user. Characters in adjacent positions to the chosen character by the user may not necessarily be directly adjacent and may also be a number of positions removed from the chosen character, for example a character three positions to the right or to the left of a chosen character.

The user may define more than one password selection rule for application to user inputs. In some embodiments, a separate password selection rule may be defined by the user and applied. These values may be accessed by the password spying protection system124in determining the value of the first user input. For example, a password selection rule specifies that the password spying protection system124assign to the user input the value of the character adjacent in a clockwise position from the character selected by the user. In other embodiments, the password selection rule specifies that the value of the character adjacent in a counterclockwise position or a diagonal position to the character selected by the user be assigned as the user input value. In some embodiments, the value of the character selected by the user is the actual value assigned as the user input value.

At operation408, the password spying protection system124stores the password designation and the password selection rule in the database (e.g., database122, database214).

Returning toFIG. 3, the password spying protection system124generates an input password at operation304.FIG. 5provides a more detailed discussion of operation304. Operation304includes generating a user interface comprising a first pattern (operation502), receiving a first user input (operation504), replacing the first pattern with a second pattern (operation506), receiving a second user input (operation508), and generating an input password (operation510).

At operation502, the password spying protection system124(e.g., the display module218) generates a user interface for presentation on the client device, including perceptible user interface elements allowing for display of a pattern of characters on the client device. The user interface is initially comprised of a first pattern of a plurality of characters. The first pattern of characters may be in any shape (e.g., circle, square, line) and may include symbols or other selectable elements, and the characters may be displayed in a random order.

At operation504, the password spying protection system124(e.g., user input module206) receives a first user input that includes a selection of one of the characters of the plurality of characters in the first pattern. The password spying protection system124utilizes the selected character and applies the password selection rule defined by the user in order to determine a value corresponding to the first user input to be included in the generation of the input password. The password selection rule is defined by the user at operation406during initialization of the password spying protection system124, and the data values comprising the password selection rule may be stored in the database122or the database214.

At operation506, in response to receiving the first user input, the password spying protection system124(e.g., the display module218) replaces the first pattern displayed on the user interface with a second pattern of a plurality of characters. In one embodiment, the position of the second pattern of the plurality of characters displayed on the user interface is dependent on a position of the character previously selected from the first pattern of the plurality of characters by the user. For example, the second pattern of the plurality of characters may be centered at the position on the user interface where the previously selected character was positioned. The second pattern of the plurality of characters may also, as described above with respect to the first pattern, be in any shape and include symbols or other selectable elements, and the characters of the second pattern may be displayed in a random order.

At operation508, a second user input is received that includes a selection of a character from the second pattern of the plurality of characters. As with the first pattern, the password spying protection system124utilizes the selected character and applies the password selection rule defined by the user in order to determine a value corresponding to the second user input to be included in the generation of the input password. The password spying protection system124may utilize the same password selection rule defined by the user for the second user input as was used for the first user input, or may use a different password selection rule defined by the user in determining the value of the second user input. For example, the password spying protection system124may use a password selection rule that determines the value corresponding to the received first user input that is a character adjacent in a clockwise position from the selected character of the first pattern, and a password selection rule that determines the value corresponding to the received second user input that is a character adjacent in a counterclockwise position from the selected character of the second pattern.

At operation510, the password spying protection system124(e.g., the password module208) generates an input password. The input password is comprised of at least the value corresponding to the first user input and value corresponding to the second user input. The values corresponding to the first user input and the second user input included in the input password are the values determined in operations504and508, respectively. It is noted that more user inputs may be received depending on a length of the password designation. For example, if the password designation is five characters long, then the password spying protection system124will receive five user inputs.

Returning toFIG. 3, at operation306, the password spying protection system124verifies that the user is authorized to have access to the user device (e.g., the client device106). Operation306is discussed in more detail in connection withFIG. 6. Turning toFIG. 6, verifying that the user is authorized to have access to the user device includes comparing the generated input password to a stored password designation (operation602) and authorizing access for the user (operation604). At operation602, the password spying protection system124(e.g., the analysis module212) uses the input password generated at operation510and compares the generated password to the stored password designation (e.g., the password designation created by the user at operation404). In one embodiment, the stored password designation and the generated input password are saved in the database (e.g., database122, database214), and the password spying protection system124accesses the database to compare the input password to the stored password designation.

At operation604, the user is authorized to access the client device (e.g., the client device106) when the password spying protection system124(e.g., the analysis module212) verifies that the generated input password matches the stored password designation. In being authorized, the user is permitted to use the client device and may be authorized to use any one of the functions of the client device (e.g., applications). In some embodiments, providing authorization to the user may include transmission of an authorization token to the network-based system104, allowing authorization of the user to use any one of the application(s) associated with the network-based system104.

FIG. 7is an interface diagram illustrating operations of an example embodiment of the password spying protection system124, consistent with some embodiments. As shown inFIG. 7, a user interface700is displayed on a client device that comprises a first pattern of a plurality of characters702. In the example embodiment, the first pattern of the plurality of characters702is displayed in a circular pattern, and the characters are ordered at random. In this example, the stored password designation is “5542”, and the password selection rule is to assign to the user input the value of the character adjacent in a clockwise position from the character selected by a user. InFIG. 7, the user selects the character “6” as the first user input, and the password spying protection system124assigns to the first user input the value “5,” according to the password selection rule, because the character “5” is the character adjacent in a clockwise position from the character selected by the user (character “6”).

FIG. 8is an interface diagram illustrating operations of an example embodiment of the password spying protection system124after the selection of the first user input (e.g., the user interface displaying a second pattern of a plurality of characters). As shown inFIG. 8, the first pattern of the plurality of characters on the user interface700is replaced by a second pattern of a plurality of characters802. The second pattern of the plurality of characters802comprises a different set of characters from the first pattern702, and the position of the second pattern802is dependent upon the first user input (e.g., the location of the character selected from the first pattern702, the character “6,” became the location upon which the second pattern802is centered). Similar to the first pattern702, the second pattern802is also comprised of a plurality of characters ordered at random. InFIG. 8, the user selects the character “0” as the second user input and the password spying protection system124assigns to the second user input the value “5,” according to the password selection rule, because the character “5” is the character adjacent in a clockwise position from the character selected by the user (character “0”).

It is noted that in alternative embodiments, the location upon which the second pattern802is centered may be at a different location than that of the previous user input. Additionally, the plurality of characters of the second pattern802may comprise a same set of characters as the first pattern702.

FIG. 9is an interface diagram illustrating operations of an example embodiment of the password spying protection system124after the selection of the second user input (e.g., the user interface displaying a third pattern of a plurality of characters). As shown inFIG. 9, the second pattern of the plurality of characters802on the user interface700is replaced by a third pattern of a plurality of characters902. The third pattern of the plurality of characters902comprises a different set of characters from the second pattern802, and the position of the third pattern902is dependent upon the second user input (e.g., the location of the character selected from the second pattern802, the character “0,” became the location upon which the third pattern902is centered). Similar to the second pattern802, the third pattern902is also comprised of a plurality of characters ordered at random. InFIG. 9, the user selects the character “8” as the third user input and the password spying protection system124assigns to the third user input the value “4,” according to the password selection rule, because the character “4” is the character adjacent in a clockwise position from the character selected by the user (character “8”).

It is noted that in alternative embodiments, the location upon which the third pattern902is centered may be at a different location than that of the previous user input. Additionally, the plurality of characters of the third pattern902may comprise a same set of characters as the second pattern802.

FIG. 10is an interface diagram illustrating operations of an example embodiment of the password spying protection system124after the selection of the third user input (e.g., the user interface displaying a fourth pattern of a plurality of characters). As shown inFIG. 10, the third pattern of the plurality of characters702on the user interface700is replaced by a fourth pattern of a plurality of characters1002. The fourth pattern of the plurality of characters1002comprises a different set of characters from the third pattern902, and the position of the fourth pattern1002is dependent upon the third user input (e.g., the location of the character selected from the third pattern902, the character “8,” became the location upon which the fourth pattern1002is centered). Similar to the third pattern902, the fourth pattern1002is also comprised of a plurality of characters ordered at random. InFIG. 10, the user selects the character “9” as the fourth user input and the password spying protection system124assigns to the fourth user input the value “2,” according to the password selection rule, because the character “2” is the character adjacent in a clockwise position from the character selected by the user (character “9”).

It is noted that in alternative embodiments, the location upon which the fourth pattern1002is centered may be at a different location than that of the previous user input. Additionally, the plurality of characters of the fourth pattern1002may comprise a same set of characters as the third pattern902.

After receiving all user inputs (e.g., selections of characters) and determining the values of the user inputs, the password spying protection system124(e.g., analysis module212) generates the input password comprising the values of the first user input through the fourth user input (e.g., the input password is “5542”). The password spying protection system124may store the input password in the database (e.g., database122, database214). The password spying protection system124compares the generated input password to the stored password designation in the database to determine whether the input password matches the stored password designation. In the example embodiment, because the generated input password (e.g., input password “5542”) is equal to the stored password designation (e.g., stored password designation “5542”), the user is granted authorization/access. Authorization allows the user to utilize the client device (e.g., client device106), any function of the client device (e.g., applications), or any application associated with the network-based system104.

FIG. 11is a block diagram illustrating components of a machine1100, according to some example embodiments, able to read instructions1124from a machine-readable medium1122(e.g., a non-transitory machine-readable medium, a machine-readable storage medium, a computer-readable storage medium, or any suitable combination thereof) and perform any one or more of the methodologies discussed herein, in whole or in part. Specifically,FIG. 11shows the machine1100in the example form of a computer system (e.g., a computer) within which the instructions1124(e.g., software, a program, an application, an applet, an app, or other executable code) for causing the machine1100to perform any one or more of the methodologies discussed herein may be executed, in whole or in part.

The machine1100includes a processor1102(e.g., a central processing unit (CPU), a graphics processing unit (GPU), a digital signal processor (DSP), an application specific integrated circuit (ASIC), a radio-frequency integrated circuit (RFIC), or any suitable combination thereof), a main memory1104, and a static memory1106, which are configured to communicate with each other via a bus1108. The processor1102contains solid-state digital microcircuits (e.g., electronic, optical, or both) that are configurable, temporarily or permanently, by some or all of the instructions1124such that the processor1102is configurable to perform any one or more of the methodologies described herein, in whole or in part. For example, a set of one or more microcircuits of the processor1102may be configurable to execute one or more modules (e.g., software modules) described herein. In some example embodiments, the processor1102is a multicore CPU (e.g., a dual-core CPU, a quad-core CPU, or a 128-core CPU) within which each of multiple cores behaves as a separate processor that is able to perform any one or more of the methodologies discussed herein, in whole or in part. Although the beneficial effects described herein may be provided by the machine1100with at least the processor1102, these same beneficial effects may be provided by a different kind of machine that contains no processors (e.g., a purely mechanical system, a purely hydraulic system, or a hybrid mechanical-hydraulic system), if such a processor-less machine is configured to perform one or more of the methodologies described herein.

The machine1100may further include a graphics display1110(e.g., a plasma display panel (PDP), a light emitting diode (LED) display, a liquid crystal display (LCD), a projector, a cathode ray tube (CRT), or any other display capable of displaying graphics or video). The machine1100may also include an alphanumeric input device1112(e.g., a keyboard or keypad), a cursor input device1114(e.g., a mouse, a touchpad, a trackball, a joystick, a motion sensor, an eye tracking device, or another pointing instrument), a data storage1116, an audio generation device1118(e.g., a sound card, an amplifier, a speaker, a headphone jack, or any suitable combination thereof), and a network interface device1120.

The data storage1116(e.g., a data storage device) includes the machine-readable medium1122(e.g., a tangible and non-transitory machine-readable storage medium) on which are stored the instructions1124embodying any one or more of the methodologies or functions described herein. The instructions1124may also reside, completely or at least partially, within the main memory1104, within the processor1102(e.g., within the processor's cache memory), or both, before or during execution thereof by the machine1100. Accordingly, the main memory1104and the processor1102may be considered machine-readable media (e.g., tangible and non-transitory machine-readable media). The instructions1124may be transmitted or received over the network102via the network interface device1120. For example, the network interface device1120may communicate the instructions1124using any one or more transfer protocols (e.g., hypertext transfer protocol (HTTP)).

In some example embodiments, the machine1100may be a portable computing device (e.g., a smart phone, tablet computer, or a wearable device), and have one or more additional input components1130(e.g., sensors or gauges). Examples of such input components1130include an image input component (e.g., one or more cameras), an audio input component (e.g., one or more microphones), a direction input component (e.g., a compass), a location input component (e.g., a global positioning system (GPS) receiver), an orientation component (e.g., a gyroscope), a motion detection component (e.g., one or more accelerometers), an altitude detection component (e.g., an altimeter), a biometric input component (e.g., a heartrate detector or a blood pressure detector), and a gas detection component (e.g., a gas sensor). Input data gathered by any one or more of these input components1130may be accessible and available for use by any of the modules described herein.

As used herein, the term “memory” refers to a machine-readable medium able to store data temporarily or permanently and may be taken to include, but not be limited to, random-access memory (RAM), read-only memory (ROM), buffer memory, flash memory, and cache memory. While the machine-readable medium1122is shown in an example embodiment to be a single medium, the term “machine-readable medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, or associated caches and servers) able to store the instructions1124. The term “machine-readable medium” shall also be taken to include any medium, or combination of multiple media, that is capable of storing the instructions1124for execution by the machine1100, such that the instructions1124, when executed by one or more processors of the machine1100(e.g., processor1102), cause the machine1100to perform any one or more of the methodologies described herein, in whole or in part. Accordingly, a “machine-readable medium” refers to a single storage apparatus or device, as well as cloud-based storage systems or storage networks that include multiple storage apparatus or devices. The term “machine-readable medium” shall accordingly be taken to include, but not be limited to, one or more tangible and non-transitory data repositories (e.g., data volumes) in the example form of a solid-state memory chip, an optical disc, a magnetic disc, or any suitable combination thereof. A “non-transitory” machine-readable medium, as used herein, specifically does not include propagating signals per se. In some example embodiments, the instructions1124for execution by the machine1100may be communicated by a carrier medium. Examples of such a carrier medium include a storage medium (e.g., a non-transitory machine-readable storage medium, such as a solid-state memory, being physically moved from one place to another place) and a transient medium (e.g., a propagating signal that communicates the instructions1124).

Certain example embodiments are described herein as including modules. Modules may constitute software modules (e.g., code stored or otherwise embodied in a machine-readable medium or in a transmission medium), hardware modules, or any suitable combination thereof. A “hardware module” is a tangible (e.g., non-transitory) physical component (e.g., a set of one or more processors) capable of performing certain operations and may be configured or arranged in a certain physical manner. In various example embodiments, one or more computer systems or one or more hardware modules thereof may be configured by software (e.g., an application or portion thereof) as a hardware module that operates to perform operations described herein for that module.

In some example embodiments, a hardware module may be implemented mechanically, electronically, hydraulically, or any suitable combination thereof. For example, a hardware module may include dedicated circuitry or logic that is permanently configured to perform certain operations. A hardware module may be or include a special-purpose processor, such as a field programmable gate array (FPGA) or an ASIC. A hardware module may also include programmable logic or circuitry that is temporarily configured by software to perform certain operations. As an example, a hardware module may include software encompassed within a CPU or other programmable processor. It will be appreciated that the decision to implement a hardware module mechanically, hydraulically, in dedicated and permanently configured circuitry, or in temporarily configured circuitry (e.g., configured by software) may be driven by cost and time considerations.

Accordingly, the phrase “hardware module” should be understood to encompass a tangible entity that may be physically constructed, permanently configured (e.g., hardwired), or temporarily configured (e.g., programmed) to operate in a certain manner or to perform certain operations described herein. Furthermore, as used herein, the phrase “hardware-implemented module” refers to a hardware module. Considering example embodiments in which hardware modules are temporarily configured (e.g., programmed), each of the hardware modules need not be configured or instantiated at any one instance in time. For example, where a hardware module includes a CPU configured by software to become a special-purpose processor, the CPU may be configured as respectively different special-purpose processors (e.g., each included in a different hardware module) at different times. Software (e.g., a software module) may accordingly configure one or more processors, for example, to become or otherwise constitute a particular hardware module at one instance of time and to become or otherwise constitute a different hardware module at a different instance of time.

The various operations of example methods described herein may be performed, at least partially, by one or more processors that are temporarily configured (e.g., by software) or permanently configured to perform the relevant operations. Whether temporarily or permanently configured, such processors may constitute processor-implemented modules that operate to perform one or more operations or functions described herein. As used herein, “processor-implemented module” refers to a hardware module in which the hardware includes one or more processors. Accordingly, the operations described herein may be at least partially processor-implemented, hardware-implemented, or both, since a processor is an example of hardware, and at least some operations within any one or more of the methods discussed herein may be performed by one or more processor-implemented modules, hardware-implemented modules, or any suitable combination thereof.

Moreover, such one or more processors may perform operations in a “cloud computing” environment or as a service (e.g., within a “software as a service” (SaaS) implementation). For example, at least some operations within any one or more of the methods discussed herein may be performed by a group of computers (e.g., as examples of machines that include processors), with these operations being accessible via a network (e.g., the Internet) and via one or more appropriate interfaces (e.g., an application program interface (API)). The performance of certain operations may be distributed among the one or more processors, whether residing only within a single machine or deployed across a number of machines. In some example embodiments, the one or more processors or hardware modules (e.g., processor-implemented modules) may be located in a single geographic location (e.g., within a home environment, an office environment, or a server farm). In other example embodiments, the one or more processors or hardware modules may be distributed across a number of geographic locations.

Throughout this specification, plural instances may implement components, operations, or structures described as a single instance. Although individual operations of one or more methods are illustrated and described as separate operations, one or more of the individual operations may be performed concurrently, and nothing requires that the operations be performed in the order illustrated. Structures and their functionality presented as separate components and functions in example configurations may be implemented as a combined structure or component with combined functions. Similarly, structures and functionality presented as a single component may be implemented as separate components and functions. These and other variations, modifications, additions, and improvements fall within the scope of the subject matter herein.