Patent Publication Number: US-2022237486-A1

Title: Suggesting activities

Description:
CROSS REFERENCE TO RELATED APPLICATIONS 
     This U.S. patent application is a continuation of, and claims priority under 35 U.S.C. § 120 from, U.S. patent application Ser. No. 15/280,960, filed Sep. 29, 2016, which is a continuation of, and claims priority under 35 U.S.C. § 120 from, U.S. patent application Ser. No. 14/883,991, filed on Oct. 15, 2015, now U.S. Pat. No. 9,460,394, which claims priority under 35 U.S.C. § 119(e) to U.S. Provisional Application 62/064,053, filed Oct. 15, 2014. The disclosures of these prior applications are considered part of the disclosure of this application and are hereby incorporated by reference in their entireties 
    
    
     TECHNICAL FIELD 
     This disclosure relates to suggesting execution of a suggested instruction for a system. 
     BACKGROUND 
     The use of mobile devices, such as smartphones, tablet PCs, cellular telephones, or portable digital assistants, has become widespread. At their inception, mobile devices were mainly used for voice communication, but recently they have become a reliable source for performing a range of business and personal tasks. Mobile devices are useful to obtain information by using a data connection to access the World Wide Web. The user may input a search query on a search engine website, using the mobile device, to obtain requested information. The information may relate to a location of a restaurant, hotel, shopping center, or other information. Users may use mobile devices for social media, which allows the users to create, share, or exchange information and ideas in virtual communities or networks. Social media depends on mobile and web-based technologies to allow people to share, co-create, collaborate on, discuss, and modify user-generated content. 
     SUMMARY 
     One aspect of the disclosure provides a computer-implemented method that when executed by data processing hardware causes the data processing hardware to perform operations that include receiving state inputs pertinent to a system and determining prospective instructions for the system based on at least one of the state inputs. For each prospective instruction, the method includes executing a predictive model over a time horizon in the future simulating execution of the prospective instruction to predict at least one corresponding predicted outcome for execution of the prospective instruction. The method also includes executing a plurality of evaluators. Each evaluator has a corresponding objective and is configured to, for each prospective instruction: evaluate the prospective instruction based on whether the at least one corresponding predicted outcome for execution of the prospective instruction satisfies (e.g., is related to or achieves) the corresponding objective of the evaluator; and output an evaluation of the prospective instruction. The method also includes selecting a suggested instruction from the prospective instructions based on the evaluations of the prospective instructions of one or more evaluators, and suggesting execution of the suggested instruction for the system. 
     In another aspect, a computing system includes data processing hardware and memory hardware in communication with the data processing hardware. The memory hardware stores instructions that when executed on the data processing hardware cause the data processing hardware to perform operations of the computer-implemented method. 
     Implementations of the disclosure may include one or more of the following optional features. In some implementations, the method further includes receiving feedback on execution of the suggested instruction for the system. The predictive model learns a preference of the system based on the received feedback. Moreover, each evaluator may include a cognitive computing model trained to evaluate a given prospective instruction based on whether at least one corresponding predicted outcome for execution of the given prospective instruction satisfies (e.g., is related to or achieves) the corresponding objective of the evaluator. 
     In some examples, the system includes a user and at least one state input is indicative of a user state of the user. The state inputs may include one or more of: sensor inputs from one or more sensors in communication with the data processing hardware; application inputs received from one or more software applications executing on the data processing hardware or a remote device in communication with the data processing hardware; or user inputs received from a graphical user interface of a user of the system. 
     In some implementations, at least one evaluator elects to participate or not participate in evaluating the prospective instructions based on at least one state input. Each evaluator may be configured to: determine whether any state input is of an input type associated with the evaluator; and for each state input that is of an input type associated with the evaluator, incrementing an influence value associated with the evaluator. When the influence value of the evaluator satisfies an influence value criteria, the evaluator participates in evaluating the prospective instructions. When the influence value of the evaluator does not satisfy the influence value criteria, the evaluator does not participate in evaluating the prospective instructions. In some examples, the evaluation of at least one evaluator is weighted based on the corresponding influence value of the at least one evaluator. In additional examples, at least one evaluator evaluates the prospective instructions based on a history of previously selected suggested instructions. In yet further examples, a first evaluator evaluates the prospective instructions based on an evaluation by a second evaluator of the prospective instructions. 
     One aspect of the disclosure provides a method that includes receiving, at data processing hardware, inputs indicative of a user state of a user. The received inputs include sensor inputs from one or more sensors in communication with the data processing hardware and/or user inputs received from a graphical user interface. The method includes determining, by the data processing hardware, possible activities for the user to perform based on the received inputs, determining, by the data processing hardware, one or more predicted outcomes for each possible activity based on the received inputs, and executing, by the data processing hardware, behaviors having corresponding objectives. Each behavior is configured to evaluate a possible activity based on whether the possible activity and the corresponding one or more predicted outcomes of the possible activity achieves the corresponding objective. The method further includes selecting, by the data processing hardware, one or more possible activities based on evaluations of one or more behaviors, and outputting results including the selected one or more possible activities. 
     Another aspect includes a method that includes receiving, at data processing hardware, inputs indicative of a user state of a user. The received inputs include one or more of sensor inputs from one or more sensors in communication with the data processing hardware, application inputs received from one or more software applications executing on the data processing hardware or a remote device in communication with the data processing hardware, and/or user inputs received from a graphical user interface. The method includes determining, by the data processing hardware, possible information for the user based on the received inputs and executing, by the data processing hardware, behaviors having corresponding objectives. Each behavior is configured to evaluate the possible information based on whether the possible information is related to the corresponding objective. The method includes selecting, by the data processing hardware, suggested information from the possible information based on evaluations of one or more behaviors for presentation to the user. 
     Implementations of the disclosure may include one or more of the following optional features. The received inputs may include biometric data of the user, environmental data regarding a surrounding of the user, and/or application inputs received from one or more software applications executing on the data processing hardware or a remote device in communication with the data processing hardware. In some implementations, one or more behaviors elect to participate or not participate in evaluating the possible activities based on the received inputs. The method may include, for each behavior, determining whether any input of the received inputs is of an input type associated with the behavior, and when an input of the received inputs is of an input type associated with the behavior, incrementing an influence value associated with the behavior. When the influence value of the behavior satisfies an influence value criterion, the behavior participates in evaluating the possible activities, and when the influence value of the behavior does not satisfy the influence value criterion, the behavior does not participate in evaluating the possible activities. 
     The method may include, for each behavior, determining whether a decrement criterion is satisfied for the behavior and decrementing the influence value of the behavior when the decrement criterion is satisfied. In some examples, the decrement criterion is satisfied when a threshold period of time has passed since lasting incrementing the influence value. The evaluation of at least one behavior may be weighted based on the corresponding influence value of the at least one behavior. 
     In some implementations, the method includes determining, using the data processing hardware, the possible activities based on one or more preferences of the user. At least one behavior may evaluate a possible activity based on at least one of a history of selected activities for the user or one or more preferences of the user. In some examples, a first behavior evaluates a possible activity based on an evaluation by a second behavior of the possible activity. 
     Another aspect of the disclosure provides a system that includes data processing hardware and memory hardware in communication with the data processing hardware. The memory hardware stores instructions that, when executed by the data processing hardware, cause the data processing hardware to perform operations including receiving inputs indicative of a user state of a user. The received inputs include sensor inputs from one or more sensors in communication with the data processing hardware and/or user inputs received from a graphical user interface. The operations include determining possible activities for the user to perform based on the received inputs, determining one or more predicted outcomes for each possible activity based on the received inputs, and executing behaviors having corresponding objectives. Each behavior is configured to evaluate a possible activity based on whether the possible activity and the corresponding one or more predicted outcomes of the possible activity achieves the corresponding objective. The operations further include selecting one or more possible activities based on evaluations of one or more behaviors, and outputting results including the selected one or more possible activities. 
     Yet another aspect provides a system that includes data processing hardware and memory hardware in communication with the data processing hardware. The memory hardware stores instructions that, when executed by the data processing hardware, cause the data processing hardware to perform operations including receiving inputs indicative of a user state of a user. The inputs include sensor inputs from one or more sensors in communication with the data processing hardware, application inputs received from one or more software applications executing on the data processing hardware or a remote device in communication with the data processing hardware, and/or user inputs received from a graphical user interface. The operations include determining possible information for the user based on the received inputs and executing behaviors having corresponding objectives. Each behavior is configured to evaluate the possible information based on whether the possible information is related to the corresponding objective. The operations further include selecting suggested information from the possible information based on evaluations of one or more behaviors for presentation to the user. 
     Implementations of these aspects may include one or more of the following optional features. The received inputs may include biometric data of the user and/or environmental data regarding a surrounding of the user. In some implementations, one or more behaviors elect to participate or not participate in evaluating the possible activities based on the received inputs. The operations may include, for each behavior, determining whether any input of the received inputs is of an input type associated with the behavior, and when an input of the received inputs is of an input type associated with the behavior, incrementing an influence value associated with the behavior. When the influence value of the behavior satisfies an influence value criterion, the behavior participates in evaluating the possible activities, and when the influence value of the behavior does not satisfy the influence value criterion, the behavior does not participate in evaluating the possible activities. 
     The operations may include, for each behavior, determining whether a decrement criterion is satisfied for the behavior and decrementing the influence value of the behavior when the decrement criterion is satisfied. In some examples, the decrement criterion is satisfied when a threshold period of time has passed since lasting incrementing the influence value. The evaluation of at least one behavior may be weighted based on the corresponding influence value of the at least one behavior. 
     In some implementations, the operations include determining, using the data processing hardware, the possible activities based on one or more preferences of the user. At least one behavior may evaluate a possible activity based on at least one of a history of selected activities for the user or one or more preferences of the user. In some examples, a first behavior evaluates a possible activity based on an evaluation by a second behavior of the possible activity. 
     Another aspect of the disclosure provides a method that includes receiving, at data processing hardware, inputs indicative of a user state of a user. The inputs include sensor inputs from one or more sensors in communication with the data processing hardware and/or user inputs received from a graphical user interface displayed on a screen in communication with the data processing hardware. The method includes determining, using the data processing hardware, a collective user state based on the received inputs and determining one or more possible activities for the user and one or more predicted outcomes for each activity based on the collective user state. The method includes executing, at the data processing hardware, one or more behaviors that evaluate the one or more possible activities and/or the corresponding one or more predicted outcomes. Each behavior models a human behavior and/or a goal oriented task. The method further includes selecting, using the data processing hardware, one or more activities based on the evaluations of the one or more possible activities and/or the corresponding one or more predicted outcomes and sending results including the selected one or more activities from the data processing hardware to the screen for display on the screen. 
     Implementations of the disclosure may include one or more of the following optional features. In some implementations, the inputs include biometric data of the user and/or environmental data regarding a surrounding of the user. The one or more sensors may include at least one of a global positioning system, a temperature sensor, a camera, a three dimensional volumetric point cloud imaging sensor, a fingerprint reader, a blood glucose monitor, a skin PH meter, an inertial measurement unit, a microphone, a blood oxygen meter, a humidistat, or a barometer. Other sensors are possible as well. 
     In some implementations, the method includes querying one or more remote data sources in communication with the data processing hardware to identify possible activities and/or predicted outcomes. The method may include determining, using the data processing hardware, the one or more possible activities and the one or more predicted outcomes for each activity based on one or more preferences of the user. Each behavior may evaluate an activity or a corresponding outcome positively when the activity or the corresponding outcome at least partially achieves an objective of the behavior. Moreover, each behavior may evaluate an activity or a corresponding outcome positively when the activity or the corresponding outcome at least partially achieves a user preference stored in non-transitory memory in communication with the data processing hardware. In some examples, a first behavior evaluates an activity or a corresponding outcome based on an evaluation by a second behavior of the activity or the corresponding outcome. Each behavior may elect to participate or not participate in evaluating the one or more activities and/or the one or more predicted outcomes for each activity based on the collective user state. 
     When an input is related to a behavior, the method may include incrementing an influence value associated with the behavior. The input is related to the behavior when the input is of an input type associated with the behavior. In some implementations, the evaluations of each behavior can be weighted based on the influence value of the corresponding behavior. The method may include decrementing the influence value of each behavior after a threshold period of time. When an influence value equals zero, the method may include deactivating the corresponding behavior. Any behaviors having an influence value greater than zero may participate in evaluating the activities or the corresponding outcomes; and any behaviors having an influence value equal to zero may not participate in evaluating the activities or the corresponding outcomes. 
     In some implementations, the method includes selecting for the results a threshold number of activities having the highest evaluations or a threshold number of activities having corresponding predicted outcomes that have the highest evaluations. The method may include combining selected activities and sending a combined activity in the results. 
     The data processing hardware may include a user computer processor of a user device including the screen and/or one or more remote computer processors in communication with the user computer processor. For example, the computer device can be the computer processor of a mobile device, a computer processor of an elastically scalable cloud resource, or a combination thereof. 
     Another aspect of the disclosure provides a system that includes data processing hardware and non-transitory memory in communication with the data processing hardware. The non-transitory memory stores instructions that, when executed by the data processing hardware, cause the data processing hardware to perform operations that include receiving inputs indicative of a user state of a user. The inputs include sensor inputs from one or more sensors in communication with the data processing hardware and/or user inputs received from a graphical user interface displayed on a screen in communication with the data processing hardware. The operations include determining a collective user state based on the received inputs, determining one or more possible activities for the user and one or more predicted outcomes for each activity based on the collective user state, and executing one or more behaviors that evaluate the one or more possible activities and/or the corresponding one or more predicted outcomes. Each behavior models a human behavior and/or a goal oriented task. The operations further include selecting one or more activities based on the evaluations of the one or more possible activities and/or the corresponding one or more predicted outcomes and sending results including the selected one or more activities to the screen for display on the screen. 
     In some implementations, the inputs include biometric data of the user and/or environmental data regarding a surrounding of the user. The one or more sensors may include at least one of a global positioning system, a temperature sensor, a camera, a three dimensional volumetric point cloud imaging sensor, a fingerprint reader, a blood glucose monitor, a skin PH meter, an inertial measurement unit, a microphone, a blood oxygen meter, a humidistat, or a barometer. Other sensors are possible as well. 
     In some implementations, the operations include querying one or more remote data sources in communication with the data processing hardware to identify possible activities and/or predicted outcomes. The operations may include determining, using the data processing hardware, the one or more possible activities and the one or more predicted outcomes for each activity based on one or more preferences of the user. Each behavior may evaluate an activity or a corresponding outcome positively when the activity or the corresponding outcome at least partially achieves an objective of the behavior. Moreover, each behavior may evaluate an activity or a corresponding outcome positively when the activity or the corresponding outcome at least partially achieves a user preference stored in non-transitory memory in communication with the data processing hardware. In some examples, a first behavior evaluates an activity or a corresponding outcome based on an evaluation by a second behavior of the activity or the corresponding outcome. Each behavior may elect to participate or not participate in evaluating the one or more activities and/or the one or more predicted outcomes for each activity based on the collective user state. 
     When an input is related to a behavior, the operations may include incrementing an influence value associated with the behavior. The input is related to the behavior when the input is of an input type associated with the behavior. In some implementations, the evaluations of each behavior can be weighted based on the influence value of the corresponding behavior. The operations may include decrementing the influence value of each behavior after a threshold period of time. When an influence value equals zero, the operations may include deactivating the corresponding behavior. Any behaviors having an influence value greater than zero may participate in evaluating the activities or the corresponding outcomes; and any behaviors having an influence value equal to zero may not participate in evaluating the activities or the corresponding outcomes. 
     In some implementations, the operations include selecting for the results a threshold number of activities having the highest evaluations or a threshold number of activities having corresponding predicted outcomes that have the highest evaluations. The operations may include combining selected activities and sending a combined activity in the results. 
     The data processing hardware may include a user computer processor of a user device including the screen and/or one or more remote computer processors in communication with the user computer processor. For example, the computer device can be the computer processor of a mobile device, a computer processor of an elastically scalable cloud resource, or a combination thereof. 
     Another aspect of the disclosure provides a method that includes receiving, at data processing hardware, inputs indicative of a user state of each user of a group of users. The inputs include sensor inputs from one or more sensors in communication with the data processing hardware and/or user inputs received from a graphical user interface displayed on one or more screens in communication with the data processing hardware. The method includes determining, using the data processing hardware, a collective user state for each user based on the received inputs (e.g., inputs of that user and/or inputs associated with other users in the group) and determining one or more possible activities for group of users and one or more predicted outcomes for each activity based on the collective user states. The method includes executing, at the data processing hardware, one or more behaviors that evaluate the one or more possible activities and/or the corresponding one or more predicted outcomes. Each behavior models a human behavior and/or a goal oriented task. The method further includes selecting, using the data processing hardware, one or more activities based on the evaluations of the one or more possible activities and/or the corresponding one or more predicted outcomes and sending results including the selected one or more activities from the data processing hardware to the one or more screens for display on the one or more screens. 
     Implementations of the disclosure may include one or more of the following optional features. In some implementations, the inputs include biometric data of at least one user and environmental data regarding a surrounding of the at least one user. The one or more sensors may include at least one of a global positioning system, a temperature sensor, a camera, a three dimensional volumetric point cloud imaging sensor, a fingerprint reader, a blood glucose monitor, a skin PH meter, an inertial measurement unit, a microphone, a blood oxygen meter, a humidistat, or a barometer. Other sensors are possible as well. 
     In some implementations, the method includes querying one or more remote data sources in communication with the data processing hardware to identify possible activities and/or predicted outcomes. The method may include determining, using the data processing hardware, the one or more possible activities and the one or more predicted outcomes for each activity based on one or more preferences of the user. Each behavior may evaluate an activity or a corresponding outcome positively when the activity or the corresponding outcome at least partially achieves an objective of the behavior. Moreover, each behavior may evaluate an activity or a corresponding outcome positively when the activity or the corresponding outcome at least partially achieves a user preference stored in non-transitory memory in communication with the data processing hardware. In some examples, a first behavior evaluates an activity or a corresponding outcome based on an evaluation by a second behavior of the activity or the corresponding outcome. Each behavior may elect to participate or not participate in evaluating the one or more activities and/or the one or more predicted outcomes for each activity based on the collective user state. 
     When an input is related to a behavior, the method may include incrementing an influence value associated with the behavior. The input is related to the behavior when the input is of an input type associated with the behavior. In some implementations, the evaluations of each behavior can be weighted based on the influence value of the corresponding behavior. The method may include decrementing the influence value of each behavior after a threshold period of time. When an influence value equals zero, the method may include deactivating the corresponding behavior. Any behaviors having an influence value greater than zero may participate in evaluating the activities or the corresponding outcomes; and any behaviors having an influence value equal to zero may not participate in evaluating the activities or the corresponding outcomes. 
     In some implementations, the method includes selecting for the results a threshold number of activities having the highest evaluations or a threshold number of activities having corresponding predicted outcomes that have the highest evaluations. The method may include combining selected activities and sending a combined activity in the results. 
     The data processing hardware may include a user computer processor of a user device including the screen and/or one or more remote computer processors in communication with the user computer processor. For example, the computer device can be the computer processor of a mobile device, a computer processor of an elastically scalable cloud resource, or a combination thereof. 
     Another aspect of the disclosure provides a system that includes data processing hardware and non-transitory memory in communication with the data processing hardware. The non-transitory memory stores instructions that, when executed by the data processing hardware, cause the data processing hardware to perform operations that include receiving inputs indicative of a user state of each user of a group of users. The inputs include sensor inputs from one or more sensors in communication with the data processing hardware and/or user inputs received from a graphical user interface displayed on one or more screens in communication with the data processing hardware. The operations include determining a collective user state for each user based on the received inputs (e.g., inputs of that user and/or inputs associated with other users in the group), determining one or more possible activities for the group of users and one or more predicted outcomes for each activity based on the collective user states, and executing one or more behaviors that evaluate the one or more possible activities and/or the corresponding one or more predicted outcomes. Each behavior models a human behavior and/or a goal oriented task. The operations further include selecting one or more activities based on the evaluations of the one or more possible activities and/or the corresponding one or more predicted outcomes and sending results including the selected one or more activities to the one or more screens for display on the one or more screens. 
     In some implementations, the inputs include biometric data of at least one user and environmental data regarding a surrounding of at least one user. The one or more sensors may include at least one of a global positioning system, a temperature sensor, a camera, a three dimensional volumetric point cloud imaging sensor, a fingerprint reader, a blood glucose monitor, a skin PH meter, an inertial measurement unit, a microphone, a blood oxygen meter, a humidistat, or a barometer. Other sensors are possible as well. 
     In some implementations, the operations include querying one or more remote data sources in communication with the data processing hardware to identify possible activities and/or predicted outcomes. The operations may include determining, using the data processing hardware, the one or more possible activities and the one or more predicted outcomes for each activity based on one or more preferences of the user. Each behavior may evaluate an activity or a corresponding outcome positively when the activity or the corresponding outcome at least partially achieves an objective of the behavior. Moreover, each behavior may evaluate an activity or a corresponding outcome positively when the activity or the corresponding outcome at least partially achieves a user preference stored in non-transitory memory in communication with the data processing hardware. In some examples, a first behavior evaluates an activity or a corresponding outcome based on an evaluation by a second behavior of the activity or the corresponding outcome. Each behavior may elect to participate or not participate in evaluating the one or more activities and/or the one or more predicted outcomes for each activity based on the collective user state. 
     When an input is related to a behavior, the operations may include incrementing an influence value associated with the behavior. The input is related to the behavior when the input is of an input type associated with the behavior. In some implementations, the evaluations of each behavior can be weighted based on the influence value of the corresponding behavior. The operations may include decrementing the influence value of each behavior after a threshold period of time. When an influence value equals zero, the operations may include deactivating the corresponding behavior. Any behaviors having an influence value greater than zero may participate in evaluating the activities or the corresponding outcomes; and any behaviors having an influence value equal to zero may not participate in evaluating the activities or the corresponding outcomes. 
     In some implementations, the operations include selecting for the results a threshold number of activities having the highest evaluations or a threshold number of activities having corresponding predicted outcomes that have the highest evaluations. The operations may include combining selected activities and sending a combined activity in the results. 
     The data processing hardware may include a user computer processor of a user device including the screen and/or one or more remote computer processors in communication with the user computer processor. For example, the computer device can be the computer processor of a mobile device, a computer processor of an elastically scalable cloud resource, or a combination thereof. 
     Yet another aspect of the disclosure provides a method that includes receiving, at data processing hardware, inputs indicative of a user state of a user. The inputs include sensor inputs from one or more sensors in communication with the data processing hardware and/or user inputs received from a graphical user interface displayed on a screen in communication with the data processing hardware. In response to receiving a trigger sensor input, the method includes determining, using the data processing hardware, a collective user state based on the received inputs and determining one or more possible activities for the user and one or more predicted outcomes for each activity based on the collective user state. The method includes executing, at the data processing hardware, one or more behaviors that evaluate the one or more possible activities and/or the corresponding one or more predicted outcomes. Each behavior models a human behavior and/or a goal oriented task. The method further includes selecting, using the data processing hardware, one or more activities based on the evaluations of the one or more possible activities and/or the corresponding one or more predicted outcomes and sending results including the selected one or more activities from the data processing hardware to the screen for display on the screen. 
     Implementations of the disclosure may include one or more of the following optional features. In some implementations, the inputs include biometric data of the user and environmental data regarding a surrounding of the user. The one or more sensors may include at least one of a global positioning system, a temperature sensor, a camera, a three dimensional volumetric point cloud imaging sensor, a fingerprint reader, a blood glucose monitor, a skin PH meter, an inertial measurement unit, a microphone, a blood oxygen meter, a humidistat, or a barometer. Other sensors are possible as well. The trigger sensor input may be from the inertial measurement unit, indicating a threshold amount of shaking of the inertial measurement unit (e.g., indicating that a user is shaking a mobile device). 
     In some implementations, the method includes querying one or more remote data sources in communication with the data processing hardware to identify possible activities and/or predicted outcomes. The method may include determining, using the data processing hardware, the one or more possible activities and the one or more predicted outcomes for each activity based on one or more preferences of the user. Each behavior may evaluate an activity or a corresponding outcome positively when the activity or the corresponding outcome at least partially achieves an objective of the behavior. Moreover, each behavior may evaluate an activity or a corresponding outcome positively when the activity or the corresponding outcome at least partially achieves a user preference stored in non-transitory memory in communication with the data processing hardware. In some examples, a first behavior evaluates an activity or a corresponding outcome based on an evaluation by a second behavior of the activity or the corresponding outcome. Each behavior may elect to participate or not participate in evaluating the one or more activities and/or the one or more predicted outcomes for each activity based on the collective user state. 
     When an input is related to a behavior, the method may include incrementing an influence value associated with the behavior. The input is related to the behavior when the input is of an input type associated with the behavior. In some implementations, the evaluations of each behavior can be weighted based on the influence value of the corresponding behavior. The method may include decrementing the influence value of each behavior after a threshold period of time. When an influence value equals zero, the method may include deactivating the corresponding behavior. Any behaviors having an influence value greater than zero may participate in evaluating the activities or the corresponding outcomes; and any behaviors having an influence value equal to zero may not participate in evaluating the activities or the corresponding outcomes. 
     In some implementations, the method includes selecting for the results a threshold number of activities having the highest evaluations or a threshold number of activities having corresponding predicted outcomes that have the highest evaluations. The method may include combining selected activities and sending a combined activity in the results. The results may include one or more activity records, where each activity record includes an activity description and an activity location. The method may include displaying on the screen a map, and for each activity record, displaying the activity location on the map and the activity description. 
     The data processing hardware may include a user computer processor of a user device including the screen and/or one or more remote computer processors in communication with the user computer processor. For example, the computer device can be the computer processor of a mobile device, a computer processor of an elastically scalable cloud resource, or a combination thereof. 
     Another aspect of the disclosure provides a system that includes data processing hardware and non-transitory memory in communication with the data processing hardware. The non-transitory memory stores instructions that, when executed by the data processing hardware, cause the data processing hardware to perform operations that include receiving inputs indicative of a user state of a user. The inputs include sensor inputs from one or more sensors in communication with the data processing hardware and/or user inputs received from a graphical user interface displayed on a screen in communication with the data processing hardware. In response to receiving a trigger sensor input, the operations include determining a collective user state based on the received inputs, determining one or more possible activities for the user and one or more predicted outcomes for each activity based on the collective user state, and executing one or more behaviors that evaluate the one or more possible activities and/or the corresponding one or more predicted outcomes. Each behavior models a human behavior and/or a goal oriented task. The operations further include selecting one or more activities based on the evaluations of the one or more possible activities and/or the corresponding one or more predicted outcomes and sending results including the selected one or more activities to the screen for display on the screen. 
     In some implementations, the inputs include biometric data of the user and environmental data regarding a surrounding of the user. The one or more sensors may include at least one of a global positioning system, a temperature sensor, a camera, a three dimensional volumetric point cloud imaging sensor, a fingerprint reader, a blood glucose monitor, a skin PH meter, an inertial measurement unit, a microphone, a blood oxygen meter, a humidistat, or a barometer. Other sensors are possible as well. The trigger sensor input may be from the inertial measurement unit, indicating a threshold amount of shaking of the inertial measurement unit (e.g., indicating that a user is shaking a mobile device). 
     In some implementations, the operations include querying one or more remote data sources in communication with the data processing hardware to identify possible activities and/or predicted outcomes. The operations may include determining, using the data processing hardware, the one or more possible activities and the one or more predicted outcomes for each activity based on one or more preferences of the user. Each behavior may evaluate an activity or a corresponding outcome positively when the activity or the corresponding outcome at least partially achieves an objective of the behavior. Moreover, each behavior may evaluate an activity or a corresponding outcome positively when the activity or the corresponding outcome at least partially achieves a user preference stored in non-transitory memory in communication with the data processing hardware. In some examples, a first behavior evaluates an activity or a corresponding outcome based on an evaluation by a second behavior of the activity or the corresponding outcome. Each behavior may elect to participate or not participate in evaluating the one or more activities and/or the one or more predicted outcomes for each activity based on the collective user state. 
     When an input is related to a behavior, the operations may include incrementing an influence value associated with the behavior. The input is related to the behavior when the input is of an input type associated with the behavior. In some implementations, the evaluations of each behavior can be weighted based on the influence value of the corresponding behavior. The operations may include decrementing the influence value of each behavior after a threshold period of time. When an influence value equals zero, the operations may include deactivating the corresponding behavior. Any behaviors having an influence value greater than zero may participate in evaluating the activities or the corresponding outcomes; and any behaviors having an influence value equal to zero may not participate in evaluating the activities or the corresponding outcomes. 
     In some implementations, the operations include selecting for the results a threshold number of activities having the highest evaluations or a threshold number of activities having corresponding predicted outcomes that have the highest evaluations. The operations may include combining selected activities and sending a combined activity in the results. The results may include one or more activity records, where each activity record includes an activity description and an activity location. The method may include displaying on the screen a map, and for each activity record, displaying the activity location on the map and the activity description. 
     The data processing hardware may include a user computer processor of a user device including the screen and/or one or more remote computer processors in communication with the user computer processor. For example, the computer device can be the computer processor of a mobile device, a computer processor of an elastically scalable cloud resource, or a combination thereof. 
     Another aspect provides a method that includes receiving, at data processing hardware, inputs indicative of a user state of a user. The received inputs include one or more of: 1) sensor inputs from one or more sensors in communication with the data processing hardware; 2) application inputs received from one or more software applications executing on the data processing hardware or a remote device in communication with the data processing hardware; and/or 3) user inputs received from a graphical user interface. The method includes determining, by the data processing hardware, a collective user state of the user based on the received inputs and obtaining, at the data processing hardware, user data of other users. The user data of each other user includes a collective user state of the corresponding other user. The method includes displaying, on a screen in communication with the data processing hardware other user glyphs representing the other users. Each other user glyph: 1) at least partially indicates the collective user state of the corresponding other user; and/or 2) is associated with a link to a displayable view indicating the collective user state of the corresponding other user and/or the inputs used to determine the collective user state of the corresponding other user. 
     In some implementations, the method includes obtaining the user data of the other users that have corresponding collective user states satisfying a threshold similarity with the collective user state of the user. The method may include arranging each other user glyph on the screen based on a level of similarity between the collective user state of the user and the collective user state of the corresponding other user. In some examples, a size, a shape, a color, a border, and/or a position on the screen of each other user glyph is based on a level of similarity between the collective user state of the corresponding other user and the collective user state of the user. 
     The method may include displaying a user glyph representing the user in a center portion of the screen and the other user glyphs around the user glyph. The other user glyphs may be displayed in concentric groupings about the user glyph based on a level of similarity between the collective user states of the corresponding other users and the collective user state of the user. 
     In some implementations, the method includes receiving, at the data processing hardware, an indication of a selection of one or more other user glyphs and executing, by the data processing hardware, messaging (e.g., via a messaging view) between the user and the one or more other users corresponding to the selected one or more other user glyphs. The method may include receiving a gesture across the screen, where the gesture indicates selection of the one or more other user glyphs. In some examples, the method includes receiving, at the data processing hardware, an indication of a selection of a messenger glyph displayed on the screen. The messenger glyph has a reference to an application executable on the data processing hardware and indicates one or more operations that cause the application to enter an operating state that allows messaging between the user and the one or more other users corresponding to the selected one or more other user glyphs. 
     In some implementations, the method includes displaying a map on the screen and arranging the other user glyphs on the screen based on geolocations of the corresponding other users. The user data of each other user may include the geolocation of the corresponding other user. Moreover, the method may include displaying a user glyph representing the user on the map based on a geolocation of the user. 
     The method may include receiving, at the data processing hardware, an indication of a selection of one or more other user glyphs and determining, by the data processing hardware, possible activities for the user and the one or more other users corresponding to the selected one or more other user glyphs to perform based on the collective user states of the user and the one or more other users. The method may also include executing, by the data processing hardware, behaviors having corresponding objectives. Each behavior is configured to evaluate a possible activity based on whether the possible activity achieves the corresponding objective. The method includes selecting, by the data processing hardware, one or more possible activities based on evaluations of one or more behaviors and displaying, by the data processing hardware, results on the screen. The results include the selected one or more possible activities. In some examples, the method includes determining, by the data processing hardware, one or more predicted outcomes for each possible activity based on the collective user states of the user and the one or more other users. In such examples, each behavior is configured to evaluate a possible activity based on whether the possible activity and the corresponding one or more predicted outcomes of the possible activity achieves the corresponding objective. In additional examples, the method may include receiving an indication of a gesture across the screen indicating selection of the one or more other user glyphs. 
     In some implementations, at least one behavior is configured to elect to participate or not participate in evaluating the possible activities based on the received inputs. The method may include, for each behavior determining whether any input of the received inputs is of an input type associated with the behavior, and when an input of the received inputs is of an input type associated with the behavior, incrementing an influence value I associated with the behavior. When the influence value I of the behavior satisfies an influence value criterion, the behavior participates in evaluating the possible activities; and when the influence value I of the behavior does not satisfy the influence value criterion, the behavior does not participate in evaluating the possible activities. In some examples, the method includes, for each behavior, determining whether a decrement criterion is satisfied for the behavior and decrementing the influence value of the behavior when the decrement criterion is satisfied. The decrement criterion may be satisfied when a threshold period of time has passed since last incrementing the influence value. In some examples, the evaluation of at least one behavior is weighted based on the corresponding influence value of the at least one behavior. Moreover, the method may include determining the possible activities based on one or more preferences of the user. At least one behavior may evaluate a possible activity based on at least one of a history of selected activities for the user or one or more preferences of the user. Furthermore, a first behavior may evaluate a possible activity based on an evaluation by a second behavior of the possible activity. 
     In some implementations, the method includes receiving, at the data processing hardware a selection of a suggestion glyph displayed on the screen and, in response to the selection of the suggestion glyph, displaying, by the data processing hardware, an activity type selector on the screen. The method may further include receiving, at the data processing hardware, a selection of an activity type and filtering, by the data processing hardware, the results based on the selected activity type. 
     Another aspect provides a method that includes receiving, at data processing hardware, a request of a requesting user to identify other users as likely participants for a possible activity. Each user has an associated collective user state based on corresponding inputs that include one or more of: 1) sensor inputs from one or more sensors; 2) application inputs received from one or more software applications executing on the data processing hardware or a remote device in communication with the data processing hardware; and/or 3) user inputs received from a graphical user interface. The method may include, for each other user: 1) executing, by the data processing hardware, behaviors having corresponding objectives, where each behavior is configured to evaluate the possible activity based on whether the possible activity achieves the corresponding objective; and 2) determining, by the data processing hardware, whether the other user is a likely participant for the possible activity based on evaluations of one or more of the behaviors. The method includes outputting results identifying the other users determined as being likely participants for the possible activity. 
     In some implementations, each other user is associated with the user based on a geographical proximity to the user, a linked relationship (e.g., family member, friend, co-worker, acquaintance, etc.). Other relationships are possible as well to narrow a pool of other users. 
     In some implementations, at least one behavior is configured to elect to participate or not participate in evaluating the possible activity based on the corresponding inputs of the other user. The method may include, for each behavior determining whether any input of the other user is of an input type associated with the behavior and, when an input of the other user is of an input type associated with the behavior, incrementing an influence value associated with the behavior. When the influence value of the behavior satisfies an influence value criterion, the behavior participates in evaluating the possible activity; and when the influence value of the behavior does not satisfy the influence value criterion, the behavior does not participate in evaluating the possible activity. The method may include, for each behavior, determining whether a decrement criterion is satisfied for the behavior and decrementing the influence value of the behavior when the decrement criterion is satisfied. The decrement criterion may be satisfied when a threshold period of time has passed since last incrementing the influence value. 
     In some examples, the evaluation of at least one behavior is weighted based on the corresponding influence value of the at least one behavior. At least one behavior may evaluate the possible activity based on at least one of a history of positively evaluated activities for the other user or one or more preferences of the other user. Moreover, a first behavior may evaluate the possible activity based on an evaluation by a second behavior of the possible activity. 
     The method may include displaying, on a screen in communication with the data processing hardware, other user glyphs representing the selected other users. Each other user glyph: 1) at least partially indicates the collective user state of the corresponding other user; and/or 2) is associated with a link to a displayable view indicating the collective user state of the corresponding other user and/or inputs used to determine the collective user state of the corresponding other user. 
     Another aspect provides a method that includes receiving, at data processing hardware, inputs indicative of a user state of a user. The received inputs include one or more of: 1) sensor inputs from one or more sensors in communication with the data processing hardware; 2) application inputs received from one or more software applications executing on the data processing hardware or a remote device in communication with the data processing hardware; and/or 3) user inputs received from a graphical user interface. The method includes determining, by the data processing hardware, a collective user state of the user based on the received inputs and receiving, at the data processing hardware, a request of a requesting user to identify other users as likely participants for a possible activity. The method further includes obtaining, at the data processing hardware, user data of other users having corresponding collective user states satisfying a threshold similarity with the collective user state of the user and outputting results identifying the other users based on the corresponding user data. 
     The details of one or more implementations of the disclosure are set forth in the accompanying drawings and the description below. Other aspects, features, and advantages will be apparent from the description and drawings, and from the claims. 
    
    
     
       DESCRIPTION OF DRAWINGS 
         FIG. 1A  is a schematic view of an example environment including a user device in communication with a search system. 
         FIG. 1B  is a schematic view of an example environment including a user device in communication with a search system and data sources. 
         FIG. 2A  is a schematic view of an example user device having one or more sensors. 
         FIG. 2B  is a schematic view of an example user device in communication with a search system. 
         FIG. 3  is a schematic view of an example search system. 
         FIG. 4A  is a schematic view of an example state analyzer receiving inputs from various sources. 
         FIG. 4B  is a schematic view of an example user device displaying an example state acquisition view having multiple images grouped by categories for selection by the user. 
         FIG. 4C  is a schematic view of an example user device displaying an example state acquisition view having two images and allowing the user to select one of the images. 
         FIG. 4D  is a schematic view of an example user device displaying an example state acquisition view having menus and allowing the user to select one or more user state indicators. 
         FIG. 4E  is a schematic view of an example user device displaying an example user preferences view. 
         FIGS. 5A and 5B  are schematic views of an example activity system that generates possible activities and optionally predicted outcomes of those activities. 
         FIG. 6A  is a schematic view of an example behavior system that evaluates activities and optionally predicted outcomes of those activities. 
         FIG. 6B  is a schematic view of an example behavior system having several behaviors. 
         FIG. 6C  is a schematic view of an example behavior system interacting with the activity system and an activity selector. 
         FIG. 7  is a schematic view of an example activity selector. 
         FIG. 8A  is a schematic view of an example user device being shaken to initiate retrieval of a suggest activity for the user. 
         FIG. 8B  is a schematic view of an example user device displaying an example result view having a map. 
         FIG. 8C  is a schematic view of an example user device displaying an example result view having a tree-grid view. 
         FIG. 8D  is a schematic view of an example user device displaying an example result view having a select-a-door view. 
         FIG. 8E  is a schematic view of an example user device displaying an example result view having a spin-the-wheel view. 
         FIGS. 9A-9C  are schematic views of example user devices displaying example graphical user interfaces that includes a representation of a user and one or more representations of other users. 
         FIGS. 9D and 9E  are schematic views of a user executing a swiping gesture on the screen of an example user device to select multiple representations of other users to initiate a messaging session. 
         FIG. 9F  is a schematic view of a user executing a swiping gesture on the screen of an example user device to select multiple representations of other users to request a suggested activity for the user and the selected other users. 
         FIG. 9G  is a schematic view of an example suggestion view displayed on an example user device. 
         FIG. 9H  is a schematic view of an example view displayed on an example user device for requesting identification of other users that may be interested in a possible activity. 
         FIG. 9I  is a schematic view of an example user device displaying example graphical user interfaces that includes a representation of a user and one or more representations of other users. 
         FIGS. 9J and 9K  are schematic views of example user state views displayed on an example user device. 
         FIG. 10  is a schematic view of an exemplary arrangement of operations for suggesting an activity to one or more users. 
         FIG. 11A  is a schematic view of an exemplary arrangement of operations for identifying and displaying representations of other users. 
         FIG. 11B  is a schematic view of an example environment including a user device in communication with a search system. 
         FIGS. 12 and 13  are schematic views of exemplary arrangements of operations for identifying other users that may be interested in a possible activity. 
         FIG. 14  is schematic view of an example computing device that may be used to implement the systems and methods described in this document. 
     
    
    
     Like reference symbols in the various drawings indicate like elements. 
     DETAILED DESCRIPTION 
     The present disclosure describes a computer-implemented method that evaluates a collection of prospective instructions and selects a suggested instruction for execution for a system. In some implementations, the system is a distributed system of sub-systems or an eco-system of sub-systems having respective states. The system may include a user. In such implementations, the computer-implemented method may allow the user to learn about a current state of physical and emotional well-being of herself/himself and other users to foster meaningful communications and interactions amongst the user and the other users. The system may gather inputs (e.g., state inputs) from a variety of sources that include, but are not limited to, sensors, software applications, and/or the user to determine a collective user state of the user. The system may display representations (e.g., icons or images) of the user and other users in an arrangement that allows the user to identify and connect (e.g., message) with other users most similar/dissimilar to the user at that moment. Moreover, the user may view the collective user states of the user and other users to learn more about each of them. The system may suggest activities or information to the user or a group of users based on the collective user state of each user. 
     The system may gather data of the user and his/her surrounding environment to know the context of the user&#39;s current state of being, and may model the human thought process to suggest activities and/or information to the user. Unlike reactive systems that provide information in response to a user-entered query, the system may proactively suggest activities and information based on the user&#39;s current state of being. Moreover, the activities can be tailored for the user to enhance a life objective or certain relationships with other users. 
       FIG. 1A  illustrates an example system  100  that includes a user device  200  associated with a user  10  in communication with a remote system  110  via a network  120 . The remote system  110  may be a distributed system (e.g., cloud environment) having scalable/elastic computing resources  112  and/or storage resources  114 . The user device  200  and/or the remote system  110  may execute a search system  300  and optionally receive data from one or more data sources  130 . In some implementations, the search system  300  communicates with one or more user devices  200  and the data source(s)  130  via the network  120 . The network  120  may include various types of networks, such as a local area network (LAN), wide area network (WAN), and/or the Internet. 
     Referring to  FIG. 1B , in some implementations, user devices  200  communicate with the search system  300  via the network  120  or a partner computing system  122 . The partner computing system  122  may be a computing system of a third party that may leverage the search functionality of the search system  300 . The partner computing system  122  may belong to a company or organization other than that which operates the search system  300 . Example third parties which may leverage the functionality of the search system  300  may include, but are not limited to, internet search providers and wireless communications service providers. The user devices  200  may send search requests  220  to the search system  300  and receive search results  230  via the partner computing system  122 . The partner computing system  122  may provide a user interface to the user devices  200  in some examples and/or modify the search experience provided on the user devices  200 . 
     The search system  300  may use (e.g., query) the data sources  130  when generating search results  230 . Data retrieved from the data sources  130  can include any type of data related to assessing a current state of the user  10 . Moreover, the data retrieved from the data sources  130  may be used to create and/or update one or more databases, indices, tables (e.g., an access table), files, or other data structures of the search system  300 . 
     The data sources  130  may include a variety of different data providers. The data sources  130  may include application developers  130   a , such as application developers&#39; websites and data feeds provided by developers and operators of digital distribution platforms  130   b  configured to distribute content to user devices  200 . Example digital distribution platforms  130   b  include, but are not limited to, the GOOGLE PLAY® digital distribution platform by Google, Inc., the APP STORE® digital distribution platform by Apple, Inc., and WINDOWS PHONE® Store developed by Microsoft Corporation. 
     The data sources  130  may also include websites, such as websites that include web logs  130   c  (i.e., blogs), review websites  130   d , or other websites including data related to assessing a state of the user  10 . Additionally, the data sources  130  may include social networking sites  130   e , such as “FACEBOOK®” by Facebook, Inc. (e.g., Facebook posts) and “TWITTER®” by Twitter Inc. (e.g., text from tweets). Data sources  130  may also include online databases  130   f  that include, but are not limited to, data related to movies, television programs, music, and restaurants. Data sources  130  may also include additional types of data sources in addition to the data sources described above. Different data sources  130  may have their own content and update rate. 
       FIG. 2A  illustrates an example user device  200  including a computing device  202  (e.g., a computer processor or data processing hardware) and memory hardware  204  (e.g., non-transitory memory) in communication with the computing device  202 . The memory hardware  204  may store instructions for one or more software applications  206  that can be executed on the computing device  202 . A software application  206  may refer to computer software that, when executed by the computing device  202 , causes the computing device  202  to perform a task or operation. In some examples, a software application  206  may be referred to as an “application”, an “app”, or a “program”. When the computing device  202  executes a software application  206 , the software application  206  may cause the computing device  202  to control the user device  200  to effectuate functionality of the software application  206 . Therefore, the software application  206  transforms the user device  200  into a special purpose device that carries out functionality instructed by the software application  206 , functionality not otherwise available to a user  10  without the software application  206 . Example software applications  206  include, but are not limited to, an operating system  206   a , a search application  206   b , word processing applications, spreadsheet applications, messaging applications, media streaming applications, social networking applications, and games. Applications  206  can be executed on a variety of different user devices  200 . In some examples, applications  206  are installed on a user device  200  prior to a user  10  purchasing the user device  200 . In other examples, the user  10  downloads and installs applications  206  on the user device  200 . 
     User devices  200  can be any computing devices capable of communicating with the search system  300 . User devices  200  include, but are not limited to, mobile computing devices, such as laptops, tablets, smart phones, and wearable computing devices (e.g., headsets and/or watches). User devices  200  may also include other computing devices having other form factors, such as desktop computers, vehicles, gaming devices, televisions, or other appliances (e.g., networked home automation devices and home appliances). 
     The user device  200  may use any of a variety of different operating systems  206   a . In examples where a user device  200  is a mobile device, the user device  200  may run an operating system including, but not limited to, ANDROID® developed by Google Inc., IOS® developed by Apple Inc., or WINDOWS PHONE® developed by Microsoft Corporation. Accordingly, the operating system  206   a  running on the user device  200  may include, but is not limited to, one of ANDROID®, IOS®, or WINDOWS PHONE®. In an example where a user device is a laptop or desktop computing device, the user device may run an operating system including, but not limited to, MICROSOFT WINDOWS® by Microsoft Corporation, MAC OS® by Apple, Inc., or Linux. User devices  200  may also access the search system  300  while running operating systems  206   a  other than those operating systems  206   a  described above, whether presently available or developed in the future. 
     In some implementations, the user device  200  includes one or more sensors  208  in communication with the computing device  202  and capable of measuring a quality, such as a biometric quality, of the user  10 . The sensor(s)  208  may be part of the user device  200  (e.g., integrally attached) and/or external from (e.g., separate and remote from, but in communication with) the user device  200 . Sensors  208  separate and remote from the user device may communicate with the user device  200  through the network  120 , wireless communication, such as Bluetooth or Wi-Fi, wired communication, or some other form of communication. The computing device  202  receives biometric data  212  (e.g., sensor signals or bioinformatics) and/or environmental data  214  (e.g., sensor signals, data structures, data objects, etc.) from one or more sensors  208 . Examples of biometric data  212  may include, but are not limited to, a temperature of the user  10 , an image (e.g., 2D image, 3D image, infrared image, etc.) of the user  10 , a fingerprint of the user  10 , a sound of the user  10 , a blood oxygen concentration of the user  10 , a blood glucose level of the user  10 , a skin PH of the user  10 , a blood alcohol level of the user  10 , an activity level of the user  10  (e.g., walking step count or other movement indicator), a wake-up time of the user  10 , a sleep time of the user  10 , eating times, eating duration, eating type (e.g., meal vs. snack), etc. Examples of environmental data  214  may include, but are not limited to, a geolocation of the user device  200 , a temperature, humidity, and/or barometric pressure about the user device  200 , a weather forecast for a location of the user device  200 , an image (e.g., 2D image, 3D image, infrared image, etc.) of a surrounding of the user device  200 , a sound about the user  10 , etc. 
     Example sensors  208  that may be included with the user device  200  include, but are not limited to, a camera  208   a  (e.g., digital camera, video recorder, infrared imaging sensor, 3D volumetric point cloud imaging sensor, stereo imaging sensor, etc.), a microphone  208   b , a geolocation device  208   c , an inertial measurement unit (IMU)  208   d  (e.g., 3-axis accelerometer), a fingerprint reader  208   e , a blood oxygen meter  208   f , a PH meter  208   g , etc. The camera  208   a  may capture image data indicative of an appearance of the user  10  and/or an environment or scene about the user  10 . The microphone  208   b  may sense audio of the user  10  and/or an environment or scene about the user  10 . Example sensors  208  that may be separate from the user device  200  include a camera  208   a , a temperature sensor  208   h , a humidistat  208   i , a barometer  208   j , or any sensing device  208   n  capable of delivering a signal to the user device  200  that is indicative of the user  10 , a surrounding of the user  10 , or something that can affect the user  10 . 
     If the user device  200  does not include a geolocation device  208   c , the user device  200  may provide location data as an input  210  in the form of an internet protocol (IP) address, which the search system  300  may use to determine a location of the user device  200 . Any of the sensors  208  described as being included in the user device  200  may be separate from the user device  200 , and any of the sensors  208  described as being separate from the user device  200  may be included with the user device  200 . 
       FIG. 2B  illustrates an example user device  200  in communication with the search system  300 . In general, the user device  200  may communicate with the search system  300  using any software application  206  that can transmit a search request  220  to the search system  300  and receive search results  230  therefrom for display on a display  240  (e.g., screen or touch screen) in communication with the computing device  202  of the user device  200 . In some implementations, the display  240  is a pressure-sensitive display configured to receive pressure inputs from the user  10 . In other words, the pressure-sensitive display  240  may be configured to receive pressure inputs from the user  10  using any of one or more fingers of the user  10 , other body parts of the user  10 , and/or other objects that are not part of the user  10  (e.g., styli), irrespective of whether the body part or object used is electrically conductive. Additionally, or alternatively, the pressure-sensitive display  240  may be configured to receive the pressure inputs from the users via an IMU  208   d  included in the user device  200  that detects contact (e.g., “taps,” or shaking) from fingers of the user&#39;s hands, other parts of the user&#39;s body, and/or other objects not part of the user&#39;s body, also irrespective of the body part or object used being electrically conductive. In further examples, the pressure-sensitive display  240  may also be configured to receive finger contact inputs (e.g., the display  240  may include a capacitive touchscreen configured to detect user finger contact, such as finger taps and swipes). 
     In some examples, the user device  200  runs a native application  206  dedicated to interfacing with the search system  300 ; while in other examples, the user device  200  communicates with the search system  300  using a more general application  206 , such as a web-browser application  206  accessed using a web browser. In some implementations, the search application  206   b  receives one or more inputs  210 , such as biometric data  212  or environmental data  214  from the sensor(s)  208 , associated software, and/or the user  10  via a graphical user interface (GUI)  250  and transmits a search request  220  based on the received inputs  210  to the search system  300 . The search application  206   b  may also receive platform data  218  form the user device  200  (e.g., version of the operating system  206   a , device type, and web-browser version), an identity of the user  10  of the user device  200  (e.g., a username), partner specific data, and/or other data and include that information in the search request  220  as well. The search application  206   b  receives a search result set  230  from the search system  300 , in response to submitting the search request  220 , and optionally displays one or more result records  232  of the search results set  230  on the display  240  of the user device  200 . In some implementations, the search request  220  includes a search query  222  containing a user specified selection (e.g., a category, genre, or string). The search application  206   b  may display a graphical user interface (GUI)  250  on the display  240  that may provide a structured environment to receive inputs  210  and display the search results  230 ,  232 . In some implementations, the search application  206   b  is a client-side application and the search system  300  executes on the remote system  110  as a server-side system. 
       FIG. 3  illustrates a function block diagram of the search system  300 . The search system  300  includes a state analyzer  400  in communication with an activity system  500 , which is in communication with a behavior system  600 . The behavior system  600  is also referred to as an evaluator system  600 . The behavior system  600  is in communication with an activity selector  700 . Each sub-system  400 ,  500 ,  600 ,  700  of the search system  300  can be in communication with each other. The state analyzer  400  receives one or more inputs  210  (also referred to as state inputs or user state indicators) that are indicative of a state of the user  10  and determines a collective state  420  of the user  10  (referred to as the collective user state  420 ). The activity system  500  receives the inputs/user state indicators  210  and/or the collective user state  420  from the state analyzer  400  and determines a collection  520  of possible activities A, A 1 -A n  and corresponding outcomes O, O 1 -O n  for the user  10  (referred to as an activity-outcome set  520 ). In some examples, the activity system  500  receives the inputs  210  directly from the user device  200 . Moreover, the activity system  500  may receive the inputs  210  from the user device  200  instead of the collective user state  420  from the state analyzer  400  or just the collective user state  420  from the state analyzer  400  and not the inputs  210  from the user device  200 . The behavior system  600  receives the activity-outcome set  520  from the state analyzer  400 , evaluates each activity A based on its corresponding predicted outcome O, and provides a collection  620  of evaluated activities A, A 1 -A n  and optionally corresponding outcomes O, O 1 -O n  (referred to as an evaluated activity-outcome set  620 ). Alternatively, the behavior system  600  may receive just the possible activities A, A 1 -A n  and evaluates the possible activities A, A 1 -A n  (e.g., based on objectives of behaviors  610  of the behavior system  600 ). The activity selector  700  receives the evaluated activity-outcome set  620  from the behavior system  600  and determines a collection  720  of one or more selected activities A, A 1 -A j  (referred to as a selected activity set  720 ). 
     Referring to  FIG. 4A , in some implementations, the state analyzer  400  receives one or more inputs/indicators  210  of the state of the user  10  (e.g., physical and/or emotional state) and determines the collective user state  420  of the user  10 . The state analyzer  400  may combine the received user state indicators  210  to generate the collective user state  420 . In additional implementations, the state analyzer  400  executes an algorithm on the received user state indicators  210  to generate the collective user state  420 . The algorithm may logically group user state indicators  210  and select one or more groups of user state indicators  210  to generate the collective user state  420 . Moreover, the state analyzer  400  may exclude user state indicators  210  logically opposed to other, more dominant user state indicators  210 . For example, the state analyzer  400  may form a group of user state indicators  210  indicative of an emotional state of happiness and another on a state of hunger. For example, if the state analyzer  400  receives several user state indicators  210  (e.g., a majority) indicative of happiness and only a few or one (e.g., a minority) user state indicator  210  indicative of sadness, the state analyzer  400  may form a group of user state indicators  210  indicative of an emotional state of happiness, while excluding the minority user state indicators  210  indicative of an emotional state of sadness (since they&#39;re diametrically opposed). Accordingly, the state analyzer  400  may group user state indicators  210  into groups or clusters of user states and use those groups or clusters of user states to determine the collective user state  420 . 
     In some implementations, the state analyzer  400  models the user  10  using the received user state indicator(s)  210  to generate the collective user state  420 . Each received user state indicator  210  provides an aspect of the modeled user  10  as the collective user state  420 . The state analyzer  400  may store the collective user state  420  in memory, such as the storage resources  114  of the remote system  110 . In some examples, the state analyzer  400  generates and/or stores the collective user state  420  as an object, such as a Java script object notation (JSON) object, a metadata data object, structured data, or unstructured data. Other methods of storing the collective user state  420  are possible as well. 
     The input/user state indicator  210  may include any information indicative of the user&#39;s state of being, in terms of a physical state of being and/or an emotional state of being. Optional examples of a physical state may include, but are not limited to, date and/or time stamp  210   a  (e.g., from the computing device  202  of the user device  200 ), a location  210   b  of the user  10 , a user-identified state indicator  210   c  of a physical well-being of the user  10 , and a sensed indicator  210   d  of a physical well-being of the user  10  (e.g., biometrics). The location  210   b  of the user  10  may be a geolocation (e.g., latitude and longitude coordinates) of the user device  200 , a description of the physical location of the user  10  in terms of landmarks and/or environmental descriptions, a description of a dwelling or building, a floor of the dwelling or building, a room of the dwelling or building, an altitude, etc. Examples of emotional states include, but are not limited to, user-identified state indicators  210   c  of an emotional state of the user  10  and sensed indicators  210   d  of a physical well-being of the user  10  (e.g., biometrics). 
     In some examples, the state analyzer  400  receives image inputs  210  of the user  10  from the camera  208   a  and determines an emotional state of the user  10  based on the images  210  (and optionally other inputs  210 ). The state analyzer  400  can gauge whether the user  10  is angry, happy, sad, surprised, eating, moving, etc. based on the image inputs  210 . The image inputs  210  may be considered as user-identified state indicators  210   c  and/or sensed indicators  210   d.    
     The user device  200  may receive the user-identified state indicator  210   c  from the user  10  through the GUI  250 . The user-identified state indicator  210   c  may include one or more selections of images and/or description indicative of different states of physical or emotional well-being or states of the user  10 . In some examples, the user  10  can select one or more user-identified state indicators  210   c  on the GUI  250  that correspond to a combination of different user state indicators  210 . The search application  206   b  may execute logic that disallows inconsistent selections. For example, the search application  206   b  may not allow the user  10  to select user-identified state indicators  210   c  of happy and sad at the same time. 
     The user state indicator  210  may optionally include user state indicators  210  of friends (referred to as friend state indicator  210   e ) from the remote system  110  or a data source. The friend state indicator  210   e  may be from any person having an identified association with the user  10 . The user  10  may designate the associations of other people with their account and/or the state analyzer  400  may identify and designate other people as having an association with the user  10  based on the user state indicator  210  of other users  10  and/or authorized searching of email account(s), social networking account(s), or other online resources of the user  10 . 
     The user state indicator  210  may optionally include a partner metric  210   f  (e.g., available funds from a banking institution) received from the user device  200  (e.g., as a user input) and/or from a remote data source  130  (e.g., a linked back account). The partner entities may be data sources  130  that provide information relative the user&#39;s state. For example, a mobile payment plan can provide mobile payment information, such as a purchase time, purchase location, store entity, goods purchased, purchase amount, and/or other information, which the search system  300  can use to determine the user collective state  420 . Moreover, the activity system  500  may use partner metrics  210   f  to suggest activities A and predict outcomes O, the behavior system  600  may use partner metrics  210   f  to evaluate the activities A and predicted outcomes O, and the activity selector  700  may use partner metrics  210   f  to select one or more activities A. Other examples of partner metrics  210   f  include, but are not limited to, fitness and/or nutrition information of the user  10  from a fitness application, e.g., a data source  130 , dating information from a dating application, work history or work activities from a work related application, such as LinkedIn®, or any other application. The application(s) may be installed on the user device  200  or offered as web-based applications. The search system  300  may access the partner metrics  210   f  via an application programming interface (API) associated with each application or other data retrieval methods. 
     Similarly, the user state indicator  210  may optionally include a user schedule  210   g  received from the user device  200  (e.g., as a user input) and/or from a remote data source  130  (e.g., a linked scheduler or partner system  122 ). The schedule may be related to eating, exercise, work, to-do list, etc. 
     Referring to  FIGS. 4B and 4C , in some implementations, the search application  206   b  displays a state acquisition view  260  having a collection  270  of images  272 ,  272   a - n  (e.g., a tiling of pictures) in the GUI  250  and prompts the user  10  to select the image  272  most indicative of a current state of the user  10  (e.g., a user state indicator  210 ). The images  272  may depict a variety of possible user states, such as happy or sad, hungry of full, energetic or lethargic, etc. The selected image  272  may be a user state indicator  210 . Additionally or alternatively, the GUI  250  may display one or more images  272 ,  272   a - n  and prompts the user  10  to tag the images  272 ,  272   a - n  with a corresponding user state. As the user  10  tags the images  272 ,  272   a - n , the search system  300  learns the user&#39;s preferences and/or state. 
     In the example shown in  FIG. 4B , the search application  206   b  may group the images  272  (e.g., by a category) into one or more groups  274 ,  274   a - n  and display the one or more groups  274 ,  274   a - n  in the GUI  250 . The user  10  may scroll through the images  272  in each group  274  and select an image  272  most indicative of a current state of the user  10 . For example, the search application  206   b  may display each group  274  of images  272  as a linear or curved progression (e.g., a dial), such that the user  10  can swipe across the screen  240  to move the linear progression or rotate the curve progression of images  272  onto and off the screen  240 . The user  10  may scroll through each group  274 ,  274   a - n  of images  272 ,  272   a - n  and position a selected image  272  in a selection area  266  (e.g., selection box). The search application  206   b  may alter the selected image  272  or otherwise designate the selected image  272  as being selected. For example, the search application  206   b  may change the image  272  into another related image  272  or animate the image  272  (e.g., video). The search application  206   b  may highlight the selected image  272  or provide a visual or audio cue of the selection. In some examples, the search application  206   b  displays a gauge  268  indicating a level of discernment of the user&#39;s current state based on the number and/or type of images  272 ,  272   a - n  currently selected in the collection  270  of images  272 ,  272   a - n . The search application  206   b  may indicate a threshold number of images  272 ,  272   a - n  that the user  10  should select before proceeding to obtain a suggested activity A. 
     In the example shown in  FIG. 4C , the search application  206   b  may display a state acquisition view  260  having first and second images  272   a ,  272   b  in the GUI  250  and prompt the user  10  to select the image  272  most indicative of a current state of the user  10  (e.g., a user state indicator  210 ). When the user  10  selects one of the images  272   a ,  272   b , the search application  206   b  may display two more images  272  in the GUI  250  and prompt the user  10  to select the image  272  most indicative of his/her current state, and continue recursively for a threshold period of time or until the user  10  selects a threshold number of images  272 . The search application  206   b  may display a gauge  268  indicating a level of discernment of the user&#39;s current state based on the number and/or type of images  272 ,  272   a - n  selected. Moreover, the search application  206   b  may, in some instances, not allow the user  10  to proceed to receive a suggested activity A until the search application  206   b  and/or the search system  300  has ascertained a threshold level of discernment of the user&#39;s current state based on the number and/or type of images  272 ,  272   a - n  selected. For example, the search application  206   b  may display a first image  272   a  showing a person eating to illustrate a hungry state and a second image  272   b  showing a person full with a finished dinner plate to illustrate a full or not hungry state. In other examples, the search application  206   b  may display a first image  272   a  showing a person running to illustrate an inkling to go running and a second image  272   b  showing a person sitting or resting to illustrate an inkling to sit and rest. The user  10  may continue to select one of two images  272  until the gauge  268  indicates a threshold level of discernment of the user&#39;s current state or until the user  10  selects a query element  252  displayed in the GUI  250 , at which point the search application  206   b  sends the query request  220  to the search system  300  to receive search result(s)  230  for display in the GUI  250 . 
     Referring to  FIG. 4D , in some implementations, the search application  206   b  displays a state acquisition view  260  having one or more menus  280  (e.g., categories of user state indicators  210 ). Each menu  280  may have one or more sub-menus  282  that further group or categories user state indicators  210 . The user  10  may swipe across the screen  240  of the user device  200  in a non-linear path  286  (e.g., step like fashion) to navigation the menus  282 ,  284  to select a user state indicator  210  most indicative of the user&#39;s current state. The user  10  may continue to navigate the menus  282 ,  284  to select user state indicators  210  until the gauge  268  indicates a threshold level of discernment of the user&#39;s current state or until the user  10  selects the query element  252  displayed in the GUI  250 , at which point the search application  206   b  sends the query request  220  to the search system  300  to receive search result(s)  230  for display in the GUI  250 . 
     Referring to  FIG. 4E , in some implementations, the search application  206   b  displays a preferences view  290  that allows the user  10  to set and modify user preferences P, P 1 -P n . The search system  300  may use the user preferences P 1 -P n  for generating search results  230 . For example, the activity system  500  may use the user preferences P 1 -P n  for identifying possible activities A. Moreover, the behavior system  600  may use the user preferences P 1 -P n  for evaluating the possible activities A (and optionally any corresponding predicted outcomes O). When the user  10  selects a preference P 1 -P n , the search application  206   b  may display an edit preference view  292  that allows the user  10  to modify the selected preference P 1 -P n . In the example shown, when the user  10  selects a second preference P 2 , corresponding to a sports preference, the search application  206   b  may display an edit preference view  292  customized to allow the user  10  to modify the selected preference P 1 -P n . Example preferences may include, but are not limited to, preferred eating times, eating duration, dining preferences (e.g., food types, restaurants, restaurant types, eating locations), leisure activities, cinema preferences, theaters, theater show types, to-do lists, sports activities, shopping preferences (e.g., stores, clothing types, price ranges), allowable purchase ranges for different types of goods or services, disposable income, personality type, etc. In some implementations, the user  10  may select an auto-populate preferences icon  294  to cause the search application  206   b  and/or the search system  300  to populate the preferences P 1 -P n  based on previous inputs  210  and/or selected activities A of the user  10  (e.g., stored in non-transitory memory  114 ). After auto-populating the preferences P 1 -P n , the user  10  may further customize the preferences P 1 -P n  using the preferences view  290 . 
     Referring to  FIG. 5A , in some implementations, the activity system  500  receives the collective user state  420  from the state analyzer  400 , applies the collective user state  420  to an activity model  510  and determines the collection  520  of possible activities A, A 1 -A n  and corresponding outcomes O, O 1 -On for the user  10  (i.e., the activity-outcome set  520 ). The activity system  500  may use a user profile  14  of the user  10  to determine the activity-outcome set  520 . A data source  130  (e.g., data store, non-transitory memory, a database, etc.) in communication with the activity system  500  may store the user profile  14 , possible activities A, and/or possible outcomes O. For example, the activity system  500  may identify one or more preferences P 1 -P n  of the user  10  from the user profile  14  for use with the activity model  510  to determine the activity-outcome set  520 . The activity system  500  may optionally query one or more data sources  130  or the storage resources  114  of the remote system  110  for data on possible activities A and/or corresponding outcomes O. In some examples, the activity system  500  simulates each activity A, using the activity model  510 , over a time horizon in the future to predict a corresponding outcome O, optionally using results  534  queried from the data source(s)  130 . The time horizon may be a short term horizon (e.g., less than one hour or a few hours) or a long term horizon (e.g., greater than one hour or a few hours). The activity system  500  may select the time horizon based on the collective user state  420 , the user preferences P, and/or other factors. 
     Referring also to  FIG. 5B , in some implementations, the activity system  500  includes an activity generator  530  that generates possible activities A (also referred to as prospective instructions, e.g., for a system or the user) based on the received inputs  210  (and/or collective user state  420 ) and an outcome generator  540  that generators the set  520  of possible outcomes O for each activity A (e.g., a predicted outcome for execution of the prospective instruction). The activity generator  530  may generate an activity search query  532  based on the inputs  210  and a type  216  of each input  210  and query the data source(s)  130  to obtain results  534 , which the activity generator  530  can use to determine one or more possible activities A. For example, an input  210  may be a global positioning system (GPS) coordinate having an input type  216  of location. The input type  216  may be strongly typed to accept coordinate values as the corresponding input  210 . An activity search query  532  may include criteria to seek possible activities A within a threshold distance of the location. Moreover, the threshold distance may be based on the location. 
     In some implementations, the activity generator  530  seeks activities A relevant to active behaviors  610 . Behaviors  610  (also referred to as evaluators) evaluate prospective/possible activities A. Activities A collectively refers to any prospective instructions, information, and/or possible activities for a system or the user. The activity generator  530  may identify all or a sub-set of the active behaviors  610  and then seek activities A that each behavior  610  can evaluate positively. For example, if a sports behavior  610   e  is active, then the activity generator  530  may seek possible activities A related to sports. 
     After the activity generator  530  generates a collection of possible activities A, the outcome generator  540  generates a collection of one or more predicted outcomes O for each activity A. In some implementations, the outcome generator  540  retrieves possible outcomes O from a data store storing outcomes O for various activities A. For example, the outcome generator  540  may query the data source(s)  130  for possible outcomes O matching criteria indicative of the activity A. The data source(s)  130  may include databases, partner systems  122 , and other sources of information. 
     In some implementations, the outcome generator  540  executes a predictive model over a time horizon in the future simulating execution of a given prospective instruction or activity A to predict at least one corresponding predicted outcome O for execution of the prospective instruction or activity A. The outcome generator  540  may separately predict outcomes O for each prospective instruction or activity A, resulting in a collection of outcomes O, O 1 -O n  for a respective collection of prospective instructions or activities A, A 1 -A n . In some examples, the outcome generator  540  receives feedback on execution of the suggested instruction for the system, and the predictive model learns a preference of the system based on the received feedback. 
     Referring to  FIGS. 6A-6C , in some implementations, the behavior system  600  receives the activity-outcome set  520  from the activity system  500 , evaluates each activity A based on its corresponding predicted outcome O and/or objectives of the behavior system  600 , and provides the collection  620  of evaluated activities A and outcomes O (i.e., the evaluated activity-outcome set  620 ). The behavior system  600  includes behaviors  610  (also referred to as evaluators  610 ) that provide predictive modeling of the user  10  and allows the behaviors  610  to collaboratively decide on the activities A by evaluating the activities A and/or the corresponding possible outcomes O of activities A. A behavior  610  may use the inputs  210 , the collective user state  420 , the preferences P, P 1 -P n  in the user profile  14  of the user  10 , any additional sensory feedback of the user  10 , and/or any relevant information from data sources  130  to evaluate each activity A and/or its predicted outcome(s)  0 , and therefore provide evaluation feedback on the allowable activities A of the user  10 . The behaviors  610  may be pluggable into the behavior system  600  (e.g., residing inside or outside of a software application), such that they can be added and removed without having to modify the behavior system  600 . Each behavior  610  is a standalone policy. To make behaviors  610  more powerful, it is possible to attach the output of one or more behaviors  610  together into the input of another behavior  610 . 
     A behavior  610  may model a human behavior and/or a goal oriented task. Each behavior  610  may have a specific objective. Example behaviors  610  include, but are not limited to, an eating behavior  610   a , a happiness behavior  610   b  (e.g., a pursuit of happiness), a retail shopping behavior  610   c , a grocery shopping behavior  610   d , a sports behavior  610   e , a love behavior  610   f , a work behavior  610   g , a leisure behavior  610   h , etc. 
     In some implementations, at least one or each behavior  610  (evaluator  610 ) includes a cognitive computing model trained to evaluate the prospective instruction or activity A based on whether the at least one corresponding predicted outcome O for execution of the prospective instruction or activity A is related to or achieves the corresponding objective of the behavior  610  (evaluator  610 ). 
     Behaviors  610  may model psychological decision making of humans. Moreover, the behaviors  610  may be configurable. In some examples, the user  10  may set a preference P to configure or bias one or more behaviors  610  to evaluate activities A and/or outcomes O toward that bias. In some examples, the user  10  can set a preference P to have the search system  300  aid the user  10  in making better choices (e.g., choices toward a healthier lifestyle). For example, the user  10  may set a preference P to bias one or more behaviors  610  to evaluate activities A and/or outcomes O that help the user  10  live a healthier lifestyle (e.g., in terms of diet, exercise, relationships, work, etc.). 
     A behavior  610  may have one or more objectives that it uses when evaluating activities A and/or outcomes O. The behavior  610  may evaluate activities A, outcomes O, or activities A and outcomes O. The behavior  610  may execute a scoring algorithm or model that evaluates outcomes O against the one or more objectives. The behavior  610  may score activities A and/or outcomes O fulfilling the objective(s) higher than other activities A and/or outcomes O that do not fulfill the objective(s). Moreover, the evaluations of the activities A and/or outcomes O may be weighted. For example, an eating behavior  610   a  may evaluate an activity A based on whether the predicted outcome O will make the user  10  less hungry. Moreover, the outcome evaluation may be weighted based on a user state of hunger and on the likelihood of fulfilling the objective of making the user  10  less hurry. For example, the eating behavior  610   a  may evaluate a first activity A 1  of going to a restaurant to eat pizza more favorably than a second activity A 2  of going to the cinema, because a predicted first outcome O 1  of going to a restaurant to pizza will more likely have an outcome O of satisfying a user state of hunger than going to the cinema, even though a predicted second outcome O 2  for the second activity A 2  of going to the cinema may include eating popcorn. 
     A behavior  610  may optionally base its evaluations E on preferences P, in the user profile  14  of the user  10 . For example, the eating behavior  610   a  may evaluate a third activity A 3  of going to LOU MALNATIS® (a registered trademark of Lou Malnatis, Inc.) to eat pizza more favorably than the first activity A 1  of going to PIZZA HUT® (a registered trademark of Pizza Hut, Inc.) to eat pizza, when a first preference P 1  in the user profile  14  indicates that LOU MALNATIS pizza is the user&#39;s favorite brand of pizza. Therefore, a behavior  610  may use the one or more objectives of that behavior  610  in combination with one or more preferences P, P 1 -P n  of the user profile  14  of the user  10  to evaluate activities A and/or outcomes O of those activities A. 
     The activity-outcome evaluation E of one behavior  610  may be used by another behavior  610  when evaluating the corresponding activity A and/or outcome O. For example, a happiness behavior  610   b  may evaluate the third activity A 3  of going to eat LOU MALNATIS pizza more favorably based the favorable evaluation of the eating behavior  610   a  and on the corresponding predicted outcome O 3  that eating pizza will make the user  10  more happy (e.g., versus sad). Moreover, the collective user state  420  may indicate that the user  10  is cold, based on sensor data  212  of a sensor  208 , and the happiness behavior  610   b  may evaluate the third activity A 3  of going to eat LOU MALNATIS pizza even more favorably based on the predicted outcome O 3  that eating pizza will make the user  10  warmer and therefore happier. Therefore, the behavior system  600  may execute many combinations of evaluations by behaviors  610  (some in parallel or some in series) based on prior evaluations, preferences P, etc. 
     Based on internal policy or external input (e.g., the collective user state  420  or other information), each behavior  610  may optionally decide whether or not it wants to participate in evaluating any activities A in the activity-outcome set  520 . In some examples, if the collective user state  420  indicates that the user  10  is full (i.e., not hungry), the eating behavior  610   a  may opt out of evaluating the activities A and outcomes O. In other examples, if the collective user state  420  indicates that the user  10  is full (i.e., not hungry), the eating behavior  610   a  may evaluate activities A having predicted outcomes O of making the user  10  more full as undesirable (e.g., a poor evaluation or a low score). Each behavior  610  may decide to participate or not participate in evaluating activities A and/or outcomes O based on the inputs  210  (e.g., based on the collective user state  420 , a history of received inputs  210 , a rate of received inputs  210 , input types  216 , and/or other factors related to inputs  210 ). 
     Different inputs/user state indicators  210  can trigger different behaviors  610 ,  610   a - n . A behavior  610  may persist for a duration of time. In some examples, a behavior  610  has a state  612  and exists in an active state or an inactive state. Certain types of inputs  210  may pertain to certain types of behaviors  610 . One or more input types/user state indicator types  216  may be associated with each behavior  610 . In other words, each behavior  610  may have an associated collection of input types  216  that the behavior  610  finds pertinent to its operation. For example, an input type  216  of hunger level for a user-defined input  210  of hunger having a scale (e.g. 1-10) indicating a level of hunger can be related to an eating behavior  610   a . Another input type  216  that may be associated with the eating behavior  610   a  is proximity (which may be strongly typed as a distance in miles) for an input  210  of distance to a nearest restaurant. When the search system  300  (e.g., in particular, the behavior system  600 ) receives an input  210  of a type  216  associated with a behavior  610 , the receipt of that input  210  may trigger activation of the behavior  610 . The receipt of the input  210  may cause a behavior  610  to change state  612  from an inactive state to an active state. 
     In addition to becoming active, upon the receipt of one or more inputs  210  having a type  216  associated with the behavior  610 , the number of those inputs  210 , in some implementations, has a direct correlation to an influence I of the behavior  610 . In other words, the greater the number of received inputs  210  having a type  216  associated with the behavior  610 , the greater the influence I of that behavior  610 . Evaluations of predicted outcomes O of a behavior  610  may be weighted based on the influence I of the behavior  610 . For example, the evaluation E can be a number, which is multiplied by the influence I (e.g., a number). As a result, behaviors  610  with greater influence I have a relatively greater influence on the selection of an activity A. 
     In some implementations, the influence I is a count. Each time the behavior system  600  receives an input  210 , the behavior system  600  increments a value of the influence I of each behavior  610  that has associated therewith the input type  216  of the received input  210 . The behavior system  600  may include an input type filter  602  that receives the inputs  210  identifies which behaviors  610 , if any, are associated with the input type  216  of the input  210  and increment the influence I of the affected behavior(s)  610 . 
     In some implementations, each behavior  610  has an associated duration D. Receipt of an input  210  having a type  216  associated with the behavior  610  commences an input timer  614  set for a duration of time associated with the input  210  or the input type  216 . When the input timer  614  expires, the behavior system  600  decrements the influence I of the behavior  610  (which was previously incremented for that input  210 ). Alternatively or additionally, the behavior system  600  may decrement the influence I of each behavior  610  every threshold period of time or since a last received input  210 . When the influence I of a behavior  610  is zero, the behavior  610  changes state  612  from the active state to the inactive state. If the behavior system  600  receives an input  210  having an input type  216  associated with an inactive behavior  610 , the behavior system  600  increments the influence I of that behavior  610 , causing the behavior  610  to have an influence I greater than zero, which causes the behavior  610  to change state  612  from the inactive state to the active state. Once in the active state, the behavior  610  can participate in evaluating predicted outcomes O of activities A and/or the activities A themselves. 
     Behaviors  610  may evaluate activities A and/or predicted outcomes O of activities A. By evaluating both an activity A and the predicted outcomes O of the activity A, the behavior  610  offers a multi-pronged evaluation E. For example, while the behavior  610  may positively evaluate an activity A, it may negatively evaluate one or more of the predicted outcomes O of that activity A. As an illustrative example, if the behavior system  600  receives inputs  210  indicating that the user  10  is outdoors and on a street, then a sports behavior  610   e  may positively evaluate an activity A to ride a bicycle. If additional inputs  210  indicate that the user  10  is on a very busy street, then the sports behavior  610   e  may negatively evaluate a predicted outcome O of getting hit by a car. 
     In some implementations, a behavior  610  evaluates activities A and/or predicted outcomes O of activities A positively when the activity A has a type associated with the behavior  610 , and negatively when the activity A has a type not associated with the behavior  610 . The behavior system  600  may reference behavior-activity associations stored in non-transitory memory  130 . The behavior-activity associations may have several nested layers (e.g., associations in a nested arrangement). 
     In some examples, an assistive behavior  610  is linked to an external resource and can manipulate, control, or at least bias the external resource based on the objective of the assistive behavior  610 , a preference P set by the user  10 , or one or more inputs  210 . In some examples, the assistive behavior  610  becomes active after receipt of one or more inputs  210  having an input type  216  associated with the assistive behavior  610 . While active, the assistive behavior  610  may cause, instruct, or influence an action of an external resource (e.g., other software or hardware directly or indirectly in communication with user device  200 ). For example, an assistive behavior  610  having an objective of accommodating the environmental comfort of the user  10  may become active after receiving a temperature input  210  from a temperature sensor  208   h , a humidity input  210  from a humidity sensor  208   i , or some other input related to the environmental comfort of the user  10 . While active, the assistive behavior  610  may cause a thermostat near the user  10  to change temperature (e.g., to a preferred temperature, as set by the user  10  in a corresponding preferences P). Moreover, the assistive behavior  610  can be influenced by other behaviors  610  and/or a previously selected activity A. If a previously selected activity A entailed running, the assistive behavior  610  may adjust the thermostat to a post-running temperature cooler than a standard temperature, and then re-adjust the thermostat to the standard temperature after receiving a body temperature input indicating that the user  10  has cooled down to a normal body temperature. Assistive behaviors  610  may communicate with home automation systems, security systems, vehicle systems, networked devices, and other systems to adjust those systems to accommodate one or more preferences P of the user  10  and/or to facilitate participation in a suggested activity A. For example, if the search system  300  suggests a romantic evening with the spouse of the user  10 , one or more assistive behaviors  610  (which may have scored the selected activity A favorably) may communicate with a home automation system of the user  10  to cause that system to dim the home lights, play romantic music (e.g., music have a category of romance), and set the indoor temperature to a temperature preferred by the spouse of the user  10 . 
     Referring to  FIG. 7 , in some implementations, the activity selector  700  receives the evaluated activity-outcome set  620  from the behavior system  600  and determines the collection  720  of one or more selected activities A, A 1 -A j  (i.e., the selected activity set  720 ). The activity selector  700  selects a selected activity A (e.g., a suggested instruction from the prospective instructions) based on the evaluations E of the prospective instructions/activities A of one or more evaluators/behaviors  610 . In some examples, the activity selector  700  executes an activity selection routine that searches for the best activity(s) A, A 1 -A j  given the evaluations E, E 1 -E n  of their corresponding outcomes O, O 1 -On by all of the participating active behaviors  610 ,  610   a - n . In some implementations, the activity selector  700  calculates one or more preferred outcomes O, O 1 -O n , based on the outcome evaluations E, E 1 -E n  of the behaviors  610  and selects one or more corresponding activities A, A 1 -A j  for the selected activity set  720 . The activity selector  700  may optionally send the selected activity set  720  to the activities system  500  (e.g., to the activity model  510 ) as feedback. 
     In some implementations, the activity selector  700  assesses the evaluations E, E 1 -E n  of the possible outcomes O, O 1 -On of the activities A, A 1 -A j  and determines a combination of activities A, A 1 -A j  that provides a combined outcome O. The combined outcome O may achieve higher user stratification than any single individual outcome O. The activity selector  700  may select the combination of activities A, A 1 -A j  having the determined combined outcome O as the selected activity set  720 . For example, if the inputs  210  indicate that the user  10  is hungry and likely seeking entertainment, a combined outcome O of both eating and watching a show may be very favorable. Therefore, a combined action may be going to a dinner-theater event that includes eating and watching a show. 
     Referring again also to  FIG. 2B , the search system  300  sends search results  230  to the user device  200 , in response to the search query  220 . In some implementations, the search results  230  include one or more result records  232 , which include information about or pertaining to the selected activity set  720 . For example, the search results  230  may be a recordset that includes a result record  232  for each selected activity A. Moreover, the result record  232  may include a description  234  of the corresponding selected activity A (referred to as an activity description) that identifies the activity A and how to experience the activity A. In some examples, the activity description  234  includes an activity name  234   a , an activity description  234   b , a link  234   c  (e.g., a uniform resource locator (URL) or other type or resource locator for accessing a webpage, an application, etc.), display data  234   d , and/or other data related to the activity A, such as an evaluation score  234   e  (e.g., by the activity selector  700 ), a popularity score  234   f  (e.g., retrieved from a data source  130 ). The activity description  234   b  may include a textual description of the activity A and/or location information (e.g., geolocation coordinates, a textual street location, etc.) for the activity A. In some examples, the activity description  234  may include information explaining why the search system  300  chose a particular activity A. For example, the activity description  234  may explain that the search system  300  chose an activity A related to eating, because a majority of the inputs  210  indicated that the user  10  was very hungry and close in proximity to a favorite restaurant (e.g., as indicated by a user preference P). 
     In some implementations, the search application  206   b , executing on the user device  200 , generates a result view  800  based on the received search results  230  and displays the result view  800  in the GUI  250 . The result view  800  includes one or more activity messages  810  corresponding to each result record  232  in the search results  230 . 
     In additional examples, the search application  206   b  groups the search results  230  by activity type. When the GUI  250  allows the user  10  to select an activity type, the GUI  250  limits/filters the search results  230  to activities A having the selected activity type. For example, when the user  10  wishes to receive a suggestion for eating dinner, the user  10  may select an activity type of eating and the search application  206   b  (via the search system  300 ) suggests an activity A of eating at a nearby restaurant. 
     The search system  300  may autonomously generate and provide search results  230  to the user  10  based on one or more inputs  210 . In such examples, the search system  300  may suggest information (activity A) relevant to the current state and context of the user  10 . The suggested information may help the user  10  improve his/her current state. For example, if the search system  300  identifies that the user  10  is far from a scheduled appointment and traffic is heavy (e.g., based on inputs  210 ), the search system  300  may suggest that the user leave for the appointment early. Moreover, the search system  300  may suggest on-device features (software and/or hardware features) of the user device  200  or for application  206  executable on the user device  200  (or a web-based application accessible by the user device  200 ) that may be helpful to the user  10  at that moment. For example, the search system  300  may recommend an application  206  executable on the user device  200  relevant to the user  10  at that moment, based on one or more inputs  210  or the collective user state  420 . Moreover, the recommended feature may be one of the inputs  210  or related to functionality of one of the inputs  210 . For example, when the search system  300  recommends an outdoor activity A, the search system  300  may also provide information about a weather application  206  or an outdoor related application  206  installed on or executable by the user device  200 . 
     In some implementations, the search system  300  provides a suggestion on demand. When the user  10  is seeking a particular type of suggestion, the user  10  may select a suggestion type to guide the selection of the suggestion by the search system  300 . The suggestion type provides the search system  300  with a user intent. 
     Referring to  FIG. 8A , in some implementations, the search application  206   b  displays a message  254  in the GUI  250  prompting the user  10  to shake the user device  200  to receive a suggested activity A. When the user  10  shakes the user device  200 , the search application  206   b  receives an input  210  from the IMU  208   d  of the user device  200  indicating that the user  10  is shaking the user device  200  back and forth. In response to the received input  210 , the search application  206   b  may send the query request  220  to the search system  300  to receive search result(s)  230  for display in the GUI  250 . The search application  206   b  may display a result view  800  in the GUI  250  that shows one or more activity messages  810 . 
     In some implementations, the result view  800 ,  800   a  includes an activity message  810  that includes the activity name  234   a , the activity description  234   b , the link  234   c , the evaluation score  234   e , and/or the popularity score  234   f  from the corresponding result record  232 . The result view  800  may also include a result view selector  820  having icons  822   a - n  corresponding to alternative result views  800 ,  800   a - n . When the user selects one of the icons  822   a - n , the search application  206   b  displays the corresponding result view  800   a - n.    
     In response to selection of a link  234   c , the user device  200  may launch a corresponding software application  206  (e.g., a native application or a web-browser application) referenced by the link  234   c  and perform one or more operations indicated in the link  234   c  and/or the display data  234   d . For example, the link  234   c  may include a URL having query string containing data to be passed to the software application  206  or software running on a remote server  112  (e.g., the query string may contain name/value pairs separated by delimiters, such as ampersands). If the link  234   c  is configured to access a native application  206 , the link  234   c  may include a string (e.g., a query string) that includes a reference to the native application  206  and indicates one or more operations for the user device  200  to perform. When the user  10  selects the link  234   c  for the native application  206 , the user device  200  launches the native application  206  referenced in the link  234   c  and performs the one or more operations indicated in the link  234   c . If the references application  206  is not installed on the user device  200 , the link  234   c  may direct the user  10  to a location (e.g., a digital distribution platform  130   b ) where a native application  206  can be downloaded. If the link  234   c  is configured to access a web-based application  206 , the link  234   c  may include a string (e.g., a query string) that includes a reference to a web resource (e.g., a page of a web application/website). For example, the link  234   c  may include a URL (i.e., a web address) used with hypertext transfer protocol (HTTP). When the user  10  selects the link  234   c , the user device  200  launches a web browser application  206  and retrieves the web resource indicated in the resource identifier. 
     The search application  206   b  may display the search results  230  to the user  10  in a variety of different ways, depending on what information is transmitted to the user device  200 . Moreover, the search application  206   b  may display the search results  230  in the GUI  250  based on the display data  234   d . The display data  234   d  may include text, images, layout information, a display template, a style guide (e.g., style sheet), etc. 
     In the example shown in  FIG. 8B , a result view  800 ,  800   b  may include a map  830  having a user icon  832  indicating a current location of the user device  200  on the map  830  and the one or more activity results  810  in their corresponding locations  834  on the map  830 . The user  10  can view information from the corresponding result record  232  displayed in the activity result  810  (e.g., the activity name  234   a , the activity description  234   b , the link  234   c , the evaluation score  234   e , and/or the popularity score  234   f ). The link  234   c  may include a link display name as well as the underlying resource locator. 
     Referring to  FIG. 8C , in examples where the search results  230  include a recordset of results records  232 , the search application  206   b  may display the search results  230  to the user  10  in a results view  800 ,  800   c  that includes a list view  840  of the result records  232  (e.g., in a tabular form). Moreover, the search application  206   b  may arrange the result records  232  in order based on their evaluation score  234   e  and/or the popularity score  234   f . In some examples, the search application  206   b  displays the result records  232  in a table grid, and in other examples, the search application  206   b  displays the result records  232  in a tree-grid (as shown), grouping result records  232  under separate parent nodes by a category or other grouping. 
       FIG. 8D  is a schematic view of the user device  200  displaying a result view  800 ,  800   d  that includes a select-a-door view  850 . The select-a-door view  850  displays doors  852 , where each door  852  corresponds to a hidden result record  232 . In the example shown, the select-a-door view  850  includes first, second, and third doors  852   a - c , but any number of doors  852  may be shown. The search application  206   b  allows the user  10  to select one door  852 . In response to selection of a door  852 , the search application  206   b  displays an activity message  810  including information of the result record  232  (e.g., the activity name  234   a , the activity description  234   b , the link  234   c , the evaluation score  234   e , and/or the popularity score  234   f ) corresponding to the selected door  852 . 
       FIG. 8E  is a schematic view of the user device  200  displaying an example result view  800 ,  800   d  that includes a spin-the-wheel view  860 . The spin-the-wheel view  860  displays a wheel  862  having an enumeration of results records  232  from the search results  230 . In the example shown, the wheel  862  includes eight numbers corresponding to eight results records  232 , but any number of results records  232  can be enumerated using number, letters, pictures, or other identifiers. In response to the user spinning the wheel  862 , the search application  206   b  randomly selects one of the enumerated result records  232  and displays an activity message  810  including information of the selected result record  232  (e.g., the activity name  234   a , the activity description  234   b , the link  234   c , the evaluation score  234   e , and/or the popularity score  234   f ). 
     In some implementations, the user  10  can enter feedback in the GUI  250  of the search application  206   b , so that the search system  300  can learn whether the suggested activities A were well-received by the user  10 . The search system  300  can use the user feedback for future activity selections. 
       FIGS. 9A-9E  illustrate example GUIs  250  of the search application  206   b .  FIG. 9A  provides an example home view  900   a  of the GUI  250  on a watch user device  200   d . The home view  900   a  may be displayed on any other type of user device  200  as well. The home view  900   a  includes a representation  910 ,  910   a  of the user  10 ,  10   a  (referred to as the user representation, user icon, or user glyph) and one or more representations  910 ,  910   b - m  of other users  10 ,  10   b - m  (referred to as other user representations, other user icons, or other user glyphs). In the example shown, the user icon  910 ,  910   a  resides in a center portion or a central location of the screen  240  and the other user icons  910 ,  910   b - m  are arranged about the user icon  910   a . The arrangement of the other user icons  910 ,  910   b - m  can be based on a similarity of the collective user states  420  of the corresponding other users  10   b - m  with respect to the collective user state  420  of the user  10   a  and/or geographical distances between the other users  10   b - m  and the user  10   a . For example, when other users  10   b - m  have corresponding collective user states  420  relatively more similar to the collective user state  420  of the user  10   a  and/or located geographically closer to the user  10   a  than additional other users  10 , the other users  10   b - m  may have corresponding other user icons  910 ,  910   b - m  arranged closer to the user icon  910   a , larger than, or with a different shape than the other user icons  910  of the additional other users  10 . Moreover, in some examples, a size, a shape, a color, an arrangement, or other human perceivable distinction of the other user icons  910 ,  910   b - m  may be based on the similarity of the collective user states  420  of the corresponding other users  10   b - m  with respect to the collective user state  420  of the user  10   a  and/or the geographical distances between the other users  10   b - m  and the user  10   a.    
     In the example shown, the user  10   a  has the largest icon  910 ,  910   a  in the center portion of the screen  240 , surrounded by other user icons  910 ,  910   b - m . Each other user icon  910 ,  910   b - m  has a size similar to or smaller than the user icon and corresponds to another user  10   b - m  having a collective user state  420  having a degree of similarity to the collective user state  420  of the user  10   a  and/or located within some geographical distance of the user  10   a . The other user icon  910 ,  910   b - m  may be arranged in groups  920  about the user icon  910   a . Other users  10   b - m  having collective user states  420  satisfying a first threshold similarity to the collective user state  420  of the user  10   a  and/or located within a first threshold geographical distance of the user  10   a  have other user icons  910 ,  910   b - i  arranged in a first icon group  920   a  around the user icon  910   a . While the first icon group  920   a  is shown as a circular arrangement around the user icon  910   a , other arrangements are possible as well. Other users  10   b - m  having collective user states  420  satisfying a second threshold similarity less than the first threshold similarity to the collective user state  420  of the user  10   a  and/or located within a second threshold geographical distance of the user  10   a  further away than the first threshold geographical distance have corresponding other user icons  910 ,  910   j - m  arranged in a second icon group  920   b  around the user icon  910   a  and the first icon group  920   a . In the example shown, the second icon group  920   b  has corresponding other user icons  910 ,  910   j - m  smaller than the other user icons  910 ,  910   b - i  of the first icon group  920   a . The user  10   a  may scroll or otherwise navigate (e.g., in any direction on the screen) to view other user icons  910 ,  910   b - m  and their visual representation/arrangement indicating the relative similarity of the collective user state  420  of the other users  10   b - m  and/or the geographical proximity of the other users  10   b - m.    
     In the example shown in  FIG. 9B , the user  10 ,  10   a  may toggle between first and second home views  900   a ,  900   b . The first home view  900   a  may provide an arrangement of other user icons  910   b - m  around the user icon  910   a  where the other user icons  910   b - m  represent other users  10   b - m  having the collective user state  420  similar to that of the user  10   a  and/or are geographically located relatively close to the user  10   a . The second home view  900   b  may provide an arrangement of other user icons  910   n - x  around the user icon  910   a  where the other user icons  910   n - x  represent other users  10   n - x  having a collective user state  420  very dissimilar or opposite to that of the user  10   a  and/or are geographically located relatively far from the user  10   a . By toggling between the first and second home views  900   a ,  900   b , the user  10   a  can quickly ascertain which other users  910   b - x  have similar or dissimilar corresponding collective user states  420  and/or are geographically within a close or far proximity of the user  10   a.    
     The home view  900   a  may visually distinguish between other users  10   b - m  having collective user states  420  that satisfy a threshold similarity to the collective user state  420  of the user  10   a  and other users  10   b - m  located within a threshold geographical distance of the user  10   a . For example, other user icons  910   b - m  of other users  10   b - m  having collective user states  420  satisfying the threshold similarity to the collective user state  420  of the user  10   a  may have a first outline color (e.g., border color), whereas other user icons  910   b - m  of other users  10   b - m  located within a threshold geographical distance of the user  10   a  may have a second outline color different from the first outline color. Moreover, other users  10   b - m  satisfying the threshold similarity to the collective user state  420  of the user  10   a  and being located within the threshold geographical distance of the user  10   a  may have a third outline color different from the first and second outline colors. 
     Referring to  FIG. 9C , in some implementations, a home view  900   c  includes other user icons  910   b - m  sized, shaped, and/or arranged with respect to the user icon  910   a  based on a level of similarity of collective user state  420  and/or geographical proximity. For example, the size and position of each other user icon  910   b - m  on the screen  240  may represent a degree of similarity of the collective user state  420  of the other user  10   b - m  and geographical closeness of the other user  10   b - m  to the user  10   a . The size of each other user icon  910   b - m  relative to the user icon  10   a  may be based on a percentage of similarity between the collective user states  420  of the other user  10   b - m  and the user  10   a . For example, another user  10   h  having the exact same collective user state  420  (e.g., 100% similarity) may have a corresponding other user icon  910   h  having the same size as the user icon  910   a  (or a maximum size); and yet another user  10   m  having a least similarity of collective user state  420  with respect to that of the user  10   a  may have a corresponding other user icon  910   m  having a minimum size. In some examples, other users  10   b - m  located very close to the user may have corresponding other user icons  910   b - m  arranged on one side of the screen  240 , for example, on the right side of the screen  240 , and additional other users  10   b - m  located far away from the user  10   a  may have corresponding other user icons  910   b - m  arranged on an opposite side of the screen  240 , for example, on the left side of the screen  240 . Other icon arrangements are possible as well to visually represent similarity of collective user state  420  and/or geographical proximity of other users  10   b - m  to the user  10   a , such as, but not limited to, a differing shape, brightness, position, or appearance of the other user icons  910   b - m.    
     In some implementations, the user  10   a  may select another user icon  910   b - m  for enlargement to see additional information. For pressure sensitive screens  240 , the user  10   a  may execute a long press, for example, causing the GUI  250  to display an enlarged other user icon  910   b - m  and/or other information about the corresponding other user  10   b - m . In additional examples, selection of the other user icon  910   b - m  may open a separate window/view providing additional information about the corresponding other user  10   b - m.    
     Referring to  FIG. 9D , in some implementations, while on the home view  900   a , the user  10 ,  10   a  may gesture (e.g., swipe with one or more fingers on the screen  240 ) over one or more other user icons  910   b - m  to select the corresponding other users  10   b - m  and either end the gesture on or separately select a messenger icon  920  to initiate a group message (e.g., text messaging) to each of the selected other users  10   b - m  in a messenger view  900   d . The messenger view  900   d  may include messages  922  amongst the user  10   a  and the selected other users  10   b - m . Each message  922  may include text, audio, images, and/or video. The user  10 ,  10   a  may communicate with the other users  10   b - m  based on knowing the collective user states  420  of the other users  10   b - m  and/or a level of similarity of collective user states  420  amongst the user  10   a  and the other users  10   b - m.    
     Referring to  FIG. 9E , in some implementations, the user  10 ,  10   a  may view a map view  900   e  having the user icon  910   a  indicating a current geographical location of the user  10 ,  10   a  on a map  930 . The other user icons  910   b - m  may indicate on the map  930  current geographical locations of the corresponding other users  10   b - m . In the example shown, the map  930  shows that two other users  10   d ,  10   i , represented by corresponding other user icons  910   d ,  910   i , are within a threshold distance of the user  10   a . The user  10   a  may gesture (e.g., swipe with one or more fingers on the screen  240 ) over the other user icons  910   di ,  910   i , as shown, to select the corresponding other users  10   d ,  10   i  and either end the gesture on or separately select the messenger icon  920  to initiate a group message (e.g., text messaging) to each of the selected other users  10   d ,  10   i  in the messenger view  900   d.    
     Referring to  FIG. 9F , in some implementations, while on the home view  900   a , the user  10 ,  10   a  may gesture (e.g., swipe with one or more fingers on the screen  240 ) over one or more other user icons  910   b - m  to select the corresponding other users  10   b - m  and either end the gesture on or separately select a suggestion icon  940  to receive a suggested activity A for the user  10 ,  10   a  and the selected other users  10   b - m  in a suggestion view  900   f . The user  10 ,  10   a  may select an activity type to narrow the suggestion to a desired type of activity A. In some examples, when the user  10 ,  10   a  executes a long press, double select, or other interaction on the suggestion icon, the GUI  250  displays an activity type selector  942  (e.g., a pop-up, a menu, or a separate view), where the user  10 ,  10   a  can select an activity type from a list of activity types. The search system  300  may use the selected activity type to narrow the results  230  to one or more activities A having the selected activity type. For example, the activity selector  700  may select one or more possible activities A based on the evaluations E of the behaviors  610  and the selected activity type. 
     The suggestion view  900   f  may include textual and/or graphical representation of the suggested activity A, an “accept” graphical input  944  allowing the user  10 ,  10   a  to accept the suggested activity A, a decline graphical input  946  allowing the user  10 ,  10   a  to decline the suggested activity A, a re-try graphical input  948  allowing the user  10 ,  10   a  to request another suggested activity A for the group of users  10 , an information graphical input  950  allowing the user  10 ,  10   a  to view an activity information view  900   g , as shown in  FIG. 9G , having additional information about the suggested activity A, and/or a map graphical input  952  allowing the user  10 ,  10   a  to view the map view  900   e  (e.g.,  FIG. 9E ) showing a location of the suggested activity A and/or the proximity of the user  10 ,  10   a  (and/or the other users  10   b - m ) to the suggested activity A. 
     Referring to  FIGS. 9H and 9I , in some implementations, the GUI  250  includes a find participant view  900   h , which allows the user  10 ,  10   a  to enter a suggested activity A and receive an indication of other users  10   b -I who might be interested in participating in the suggested activity A. The user  10 ,  10   a  may enter the suggested activity A using one or more activity inputs  960 , such as, but not limited to, typing the suggested activity into a text box or dictating (e.g., using voice recognition) the suggested activity A to the user device  200 . The search system  300  can identify other users  10   b - i  that the suggested activity A would apply to at that moment and return results  230  or user data  15  (see  FIG. 11B ) identifying those other users  10   b - i . In the example shown in  FIG. 9I , the search application  206   b  displays a participant view  900   i  in the GUI  250 . The participant view  900   i  may be similar to the home view  900   a , by having other user icons  910   b - i  corresponding to the identified other users  10   b - i  displayed around the user icon  910   a . The participant view  900   i  may include the messenger icon  920 , so that the user  10 ,  10   a  may gesture (e.g., swipe with one or more fingers) over one or more other user icons  910   b - m  to select the corresponding other users  10   b - m  and either end the gesture on or separately select a messenger icon  920  to initiate a group message (e.g., text) to each of the selected other users  10   b - m  in a messenger view  900   d . In some examples, the participant view  900   i  includes the map icon  952 , so that the user  10 ,  10   a  may access the map view  900   e , which has the user icon  910   a  indicating a current geographical location of the user  10 ,  10   a  on the map  930  along with the other user icons  910   b - i  identifying the current geographical locations of the corresponding other users  10   b - i . The participant view  900   i  may include the suggestion icon  940 , so that user  10 ,  10   a  may gesture (e.g., swipe with one or more fingers) over one or more other user icons  910   b - i  to select the corresponding other users  10   b - i  and either end the gesture on or separately select a suggestion icon  940  to receive a suggested activity A for the user  10 ,  10   a  and the selected other users  10   b - i  in the suggestion view  900   f.    
     Referring to  FIGS. 9J and 9K , in some implementations, the user  10   a  may select the user icon  910   a  or one or more other user icons  910   b - m  to open a user state view  900   j  of the user  10   a  or the one or more other users  10   b - m . The user state view  900   j  may provide a textual or graphical representation  970  of the collective user state  420  of the corresponding user  10  and/or a textual or graphical representation  980  of the inputs  210  received and used to derive the collective user state  420  of the corresponding user  10 . In the example shown in  FIG. 9J , the user state view  900   j  includes a textual representation  970  of the collective user state  420  of the user  10  and/or a textual representation  980  (e.g., listing) of one or more inputs  210 . The user  10  may select the collective user state  420 ,  970  to view more information (e.g., a detailed description) of the collective user state  420 . Similarly, the user  10  may select any input  210 ,  980  to view more information (e.g., a detailed description) of the selected input  210 . In some examples, the user  10  can post his/her current collective user state  420  to a third party (e.g., Facebook® or other social media) by selecting a post icon  990 . As shown in  FIG. 1B , in response to selection of the post icon  990 , the search system  300  may send a user state card  422  including at least a portion of the collective user state  420  of the user  10  to a third party system (e.g., a partner system  122 ) or another user  10   b - m . By posting/sending user state cards  422  to other users  10   b - m  or other systems  122 , the user  10 ,  10   a  can share and indication of his/her current state of being with other users  10  or systems  122  to foster meaningful communications and interactions with others. 
     In the example shown in  FIG. 9K , a user state view  900   k  includes a graphical representation  980  of the collective user state  420  (referred to as the collective user state icon) surrounded by graphical representations  980 ,  980   a - n  of at least some of the inputs  210  (referred to as input icons) received and used to derive the collective user state  420  of the corresponding user  10 . The collective user state icon  970  may provide a glyph, text, video, or other representation of the corresponding collective user state  420 . For example, the collective user state icon  970  may provide a color gradient (e.g., a radial color gradient across a color spectrum) representing a range of collective user states  420  and an indicator marking the corresponding collective user state  420  within that range of collective user states  420 . The input icons  980 ,  980   a - n  may offer a visual representation of the corresponding received input  210  (e.g., the color or meter indicating a temperature or other measurement). Moreover, the user  10  may select an input icon  980  to view more detailed information about the received input  210 . For example, selection of a geolocation input icon  980   c  corresponding to a received geolocation input  210   b  of the geolocation device  208   c  may open the map view  900   e  providing a map  930  and identifying the current location of the corresponding user  10 . In the example shown in  FIG. 9E , the map view  900   e  also indicates the current location of nearby other users  10 . 
     In some implementations, the user  10  may view a real-time image/video (e.g., as a user icon  910 ) of another user  10  on the screen  240  of the user device  200  using the camera  208   a . The search application  206   b  may augment the real-time image by overlaying graphics depicting the collective user state  420  and/or inputs  210  of the other user  10 . In some examples, the overlain graphics include the collective user state icon  970  and/or the input icons  980 ,  980   a - n . As such, the user  10 ,  10   a  may view another user  10   b  (e.g., image or video) augmented with overlain graphics (e.g., the collective user state icon  970  and/or the input icons  980 ,  980   a - n ) depicting the collective user state  420  of the other user  10   b , allowing the user  10 ,  10   a  to know and understand the current state of being of the other user  10   b  without having to actually ask the other user  10   b . By knowing more about the other user  10   b , the user  10   a  can initiate a meaningful conversation with the other user  10   b.    
       FIG. 10  provides example arrangements of operations for a method  1000  of performing a search. The method  1000  is described with respect to the user device  200  and the search system  300  as illustrated in  FIG. 2B . At block  1002 , the method  1000  includes receiving, at a computing device  112 ,  202 , inputs  210  indicative of a user state of the user  10 . The inputs  210  include sensor inputs from one or more sensors  208  in communication with the computing device  112 ,  202  and/or user inputs received from a graphical user interface  250  displayed on a screen  240  in communication with the computing device  112 ,  202 . Moreover, the inputs  210  may include biometric data  212  of the user  10  and environmental data  214  regarding a surrounding of the user  10 . At block  1004 , the method  1000  includes determining, using the computing device  112 , a collective user state  420  based on the received inputs  210 . At block  1006 , the method  1000  includes determining, using the computing device  112 ,  202 , one or more possible activities A, A 1 -A j  of a user  10  and optionally one or more predicted outcomes O, O 1 -On for each activity A, A 1 -A j  based on the collective user state  420 . The method  1000  further includes, at block  1008 , executing, at the computing device  112 ,  202 , one or more behaviors  610  that evaluate the one or more possible activities A, A 1 -A j  and/or optionally the corresponding one or more predicted outcomes O, O 1 -O n . Each behavior  610  models a human behavior and/or a goal oriented task. At block  1010 , the method  1000  includes selecting, using the computing device  112 ,  202 , one or more activities A, A 1 -A j  based on the evaluations E, E 1 -E n  of the one or more possible activities A, A 1 -A j  and/or the corresponding one or more predicted outcomes O, O 1 -O n ; and, at block  1012 , the method  1000  includes sending results  230  including the selected one or more activities A, A 1 -A j  from the computing device  112 ,  202  to the screen  240  for display on the screen  240 . 
     In some implementations, the method  1000  includes querying one or more remote data sources  130  in communication with the computing device  112 ,  202  to identify possible activities A, A 1 -A j  and/or predicted outcomes O, O 1 -O n . The method  1000  may include determining, using the computing device  112 ,  202 , the one or more possible activities A, A 1 -A j  and the one or more predicted outcomes O, O 1 -On for each activity A based on one or more preferences P 1 -P n  of the user  10 . Each behavior  610  may evaluate an activity A or a corresponding outcome O positively when the activity A or the corresponding outcome O at least partially achieves an objective of the behavior  610 . For example, the eating behavior  610   a  may positively evaluate an eating activity; whereas the sports behavior  610   e  may negatively evaluate the eating activity. Moreover, each behavior  610  may evaluate an activity A or a corresponding outcome O positively when the activity A or the corresponding outcome O at least partially achieves a user preference P 1 -P n . In some examples, a first behavior  610  evaluates an activity A or a corresponding outcome O based on an evaluation E by a second behavior  610  of the activity A or the corresponding outcome O. This allows evaluations E of one behavior  610  to be based on evaluations E of another behavior  610 . Each behavior  610  may elect to participate or not participate in evaluating the one or more activities A, A 1 -A j  and/or the one or more predicted outcomes O, O 1 -O n  for each activity A based on the collective user state  420 . 
     When an input  210  is related to a behavior  610 , the method  1000  may include incrementing an influence value I associated with the behavior  610 . The input  210  may be related to the behavior  610  when the input  210  is of an input type associated with the behavior  610 . In some implementations, the evaluations E of each behavior  610  can be weighted based on the influence value I of the corresponding behavior  610 . The method  1000  may include decrementing the influence value I of each behavior  610  after a threshold period of time. When an influence value I equals zero, the method  1000  may include deactivating the corresponding behavior  610 . Any behaviors  610  having an influence value I greater than zero may participate in evaluating the activities A or the corresponding outcomes O; and any behaviors  610  having an influence value I equal to zero may not participate in evaluating the activities A or the corresponding outcomes O. 
     In some implementations, the method  1000  includes selecting for the results  230  a threshold number of activities A having the highest evaluations E or a threshold number of activities A having corresponding predicted outcomes O that have the highest evaluations E. The method  1000  may include combining selected activities A and sending a combined activity A in the results  230 . 
     The computing device  112 ,  202 , may include a user computer processor  202  of a user device  200  including the screen  240  and/or one or more remote computer processors  112  in communication with the user computer processor  202 . For example, the computer device can be the computer processor of a mobile device, a computer processor of an elastically scalable cloud resource, or a combination thereof. 
     Referring to  FIGS. 11A and 11B , in some implementations, a method  1100  includes, at block  1102 , receiving, at data processing hardware  112 ,  202 , inputs  210  indicative of a user state of a user  10 ,  10   a . The received inputs  210  include one or more of: 1) sensor inputs  210  from one or more sensors  208  in communication with the data processing hardware  112 ,  202 ; 2) application inputs  210  received from one or more software applications  206  executing on the data processing hardware  112 ,  202  or a remote device  110 ,  200  in communication with the data processing hardware  112 ,  202 ; and/or 3) user inputs  210  received from a graphical user interface  250 . At block  1104 , the method  1100  includes determining, by the data processing hardware  112 ,  202 , a collective user state  420  of the user  10 ,  10   a  based on the received inputs  210  and, at block  1106 , obtaining, at the data processing hardware  112 ,  202 , user data  15  of other users  10 ,  10   b - m . The user data  15  of each other user  10 ,  10   b - m  includes a collective user state  420  of the corresponding other user  10 ,  10   b - m . In some examples, the user data  15  includes an identifier, an image, video, address, mobile device identifier, platform data, or other information related to the user  10 . The user data  15  may be metadata, in a Java script objection notation (JSON) object, or some data structure. At block  1108 , the method  1100  includes displaying, on a screen  240  in communication with the data processing hardware  112 ,  202 , other user glyphs  910 ,  910   b - m  representing the other users  10 ,  10   b - m . Each other user glyph  910 ,  910   b - m:  1) at least partially indicates the collective user state  420  of the corresponding other user  10 ,  10   b - m ; and/or 2) is associated with a link to a displayable view  900   j ,  900   k  indicating the collective user state  420 ,  970  of the corresponding other user  10 ,  10   b - m  and/or the inputs  210 ,  980  used to determine the collective user state  420  of the corresponding other user  10 ,  10   b - m.    
     In some implementations, the method  1100  includes obtaining the user data  15  of the other users  10 ,  10   b - m  that have corresponding collective user states  420  satisfying a threshold similarity with the collective user state  420  of the user  10 ,  10   a . The method  1100  may include arranging each other user glyph  910 ,  910   b - m  on the screen  240  based on a level of similarity between the collective user state  420  of the user  10 ,  10   a  and the collective user state  420  of the corresponding other user  10 ,  10   b - m . In some examples, a size, a shape, a color, a border, and/or a position on the screen  240  of each other user glyph  910 ,  910   b - m  is based on a level of similarity between the collective user state  420  of the corresponding other user  10 ,  10   b - m  and the collective user state  420  of the user  10 ,  10   a.    
     The method  1100  may include displaying a user glyph  910 ,  910   a  representing the user  10 ,  10   a  in a center portion of the screen  240  and the other user glyphs  910 ,  910   b - m  around the user glyph  910 ,  910   a . The other user glyphs  910 ,  910   b - m  may be displayed in concentric groupings  920 ,  920   a ,  920   b  about the user glyph  910 ,  910   a  based on a level of similarity between the collective user states  420  of the corresponding other users  10 ,  10   b - m  and the collective user state  420  of the user  10 ,  10   a.    
     In some implementations, the method  1100  includes receiving, at the data processing hardware  112 ,  202 , an indication of a selection of one or more other user glyphs  910 ,  910   b - m  and executing, by the data processing hardware  112 ,  202 , messaging (e.g., via the messaging view  900   d ) between the user  10 ,  10   a  and the one or more other users  10 ,  10   b - m  corresponding to the selected one or more other user glyphs  910 ,  910   b - m . The method  1100  may include receiving a gesture across the screen  240 , where the gesture indicates selection of the one or more other user glyphs  910 ,  910   b - m . In some examples, the method  1100  includes receiving, at the data processing hardware  112 ,  202 , an indication of a selection of a messenger glyph  920  displayed on the screen  240 . The messenger glyph  920  has a reference to an application  206  executable on the data processing hardware  112 ,  202  and indicates one or more operations that cause the application  206  to enter an operating state that allows messaging between the user  10 ,  10   a  and the one or more other users  10 ,  10   b - m  corresponding to the selected one or more other user glyphs  910 ,  910   b - m.    
     In some implementations, the method  1100  includes displaying a map  930  on the screen  240  and arranging the other user glyphs  910 ,  910   b - m  on the screen  240  based on geolocations of the corresponding other users  10 ,  10   b - m . The user data  15  of each other user  10 ,  10   b - m  may include the geolocation of the corresponding other user  10 ,  10   b - m . Moreover, the method  1100  may include displaying a user glyph  910 ,  910   a  representing the user  10 ,  10   a  on the map  930  based on a geolocation of the user  10 ,  10   a.    
     The method  1100  may include receiving, at the data processing hardware  112 ,  202 , an indication of a selection of one or more other user glyphs  910 ,  910   b - m  and determining, by the data processing hardware  112 ,  202 , possible activities A for the user  10 ,  10   a  and the one or more other users  10 ,  10   b - m  corresponding to the selected one or more other user glyphs  910 ,  910   b - m  to perform based on the collective user states  420  of the user  10 ,  10   a  and the one or more other users  10 ,  10   b - m . The method  1100  may also include executing, by the data processing hardware  112 ,  202 , behaviors  610  having corresponding objectives. Each behavior  610  is configured to evaluate a possible activity A based on whether the possible activity A achieves the corresponding objective. The method  1100  includes selecting, by the data processing hardware  112 ,  202 , one or more possible activities A based on evaluations E of one or more behaviors  610  and displaying, by the data processing hardware  112 ,  202 , results  230  on the screen  240 . The results  230  include the selected one or more possible activities A. In some examples, the method  1100  includes determining, by the data processing hardware  112 ,  202 , one or more predicted outcomes O for each possible activity A based on the collective user states  420  of the user  10 ,  10   a  and the one or more other users  10 ,  10   b - m . In such examples, each behavior  610  is configured to evaluate a possible activity A based on whether the possible activity A and the corresponding one or more predicted outcomes O of the possible activity A achieves the corresponding objective. In additional examples, the method  1100  may include receiving an indication of a gesture across the screen  240  indicating selection of the one or more other user glyphs  910 ,  910   b - m.    
     In some implementations, at least one behavior  610  is configured to elect to participate or not participate in evaluating the possible activities A based on the received inputs  210 . The method  1100  may include, for each behavior  610  determining whether any input  210  of the received inputs  210  is of an input type  216  associated with the behavior  610 , and when an input  210  of the received inputs  210  is of an input type  216  associated with the behavior  610 , incrementing an influence value I associated with the behavior  610 . When the influence value I of the behavior  610  satisfies an influence value criterion, the behavior  610  participates in evaluating the possible activities A; and when the influence value I of the behavior  610  does not satisfy the influence value criterion, the behavior  610  does not participate in evaluating the possible activities A. In some examples, the method  1100  includes, for each behavior  610 , determining whether a decrement criterion is satisfied for the behavior  610  and decrementing the influence value I of the behavior  610  when the decrement criterion is satisfied. The decrement criterion may be satisfied when a threshold period of time has passed since last incrementing the influence value I. In some examples, the evaluation E of at least one behavior  610  is weighted based on the corresponding influence value I of the at least one behavior  610 . Moreover, the method  1100  may include determining the possible activities A based on one or more preferences P of the user  10 . At least one behavior  610  may evaluate a possible activity A based on at least one of a history of selected activities A,  720  for the user  10  or one or more preferences P of the user  10 . Furthermore, a first behavior  610 ,  610   a  may evaluate a possible activity A based on an evaluation E by a second behavior  610 ,  610   b  of the possible activity A. 
     In some implementations, the method  1100  includes receiving, at the data processing hardware  112 ,  202 , a selection of a suggestion glyph  940  displayed on the screen  240  and, in response to the selection of the suggestion glyph  940 , displaying, by the data processing hardware  112 ,  202 , an activity type selector  942  on the screen  240 . The method  1100  may further include receiving, at the data processing hardware  112 ,  202 , a selection of an activity type and filtering, by the data processing hardware  112 ,  202 , the results  230  based on the selected activity type. 
     Referring to  FIGS. 11B and 12 , in some implementations, a method  1200  includes, at block  1202 , receiving, at data processing hardware  112 ,  202 , a request of a requesting user  10 ,  10   a  to identify other users  10 ,  10   b - m  as likely participants for a possible activity A. The request may be a search request  220  with a search query  222  for other users  10 ,  10   b - m  as likely participants for the possible activity A. The request may be a search request  220  with a search query  222  for other users  10 ,  10   b - m  as likely participants for the possible activity A. Each user  10 ,  10   a - m  has an associated collective user state  420  based on corresponding inputs  210  that include one or more of: 1) sensor inputs  210  from one or more sensors  208 ; 2) application inputs  210  received from one or more software applications  206  executing on the data processing hardware  112 ,  202  or a remote device  110 ,  200  in communication with the data processing hardware  112 ,  202 ; and/or 3) user inputs  210  received from a graphical user interface  250 . At block  1204 , the method  1200  may include, for each other user  10 ,  10   b - m:  1) executing, by the data processing hardware  112 ,  202 , behaviors  610  having corresponding objectives, where each behavior  610  is configured to evaluate the possible activity A based on whether the possible activity A achieves the corresponding objective; and 2) determining, by the data processing hardware  112 ,  202 , whether the other user  10 ,  10   b - m  is a likely participant for the possible activity A based on evaluations E of one or more of the behaviors  610 . At block  1026 , the method  1200  includes outputting results (e.g., user data  15 ) identifying the other users  10 ,  10   b - m  determined as being likely participants for the possible activity A. 
     In some implementations, each other user  10 ,  10   b - m  is associated with the user  10 ,  10   a  based on a geographical proximity to the user  10 ,  10   a , a linked relationship (e.g., family member, friend, co-worker, acquaintance, etc.). Other relationships are possible as well to narrow a pool of other users  10 ,  10   b - m.    
     In some implementations, at least one behavior  610  is configured to elect to participate or not participate in evaluating the possible activity A based on the corresponding inputs  210  of the other user  10 ,  10   b - m . The method  1200  may include, for each behavior  610  determining whether any input  210  of the other user  10 ,  10   b - m  is of an input type  216  associated with the behavior  610  and, when an input  210  of the other user is of an input type  216  associated with the behavior  610 , incrementing an influence value I associated with the behavior  610 . When the influence value I of the behavior  610  satisfies an influence value criterion, the behavior  610  participates in evaluating the possible activity A; and when the influence value I of the behavior  610  does not satisfy the influence value criterion, the behavior  610  does not participate in evaluating the possible activity A. The method  1200  may include, for each behavior  610 , determining whether a decrement criterion is satisfied for the behavior  610  and decrementing the influence value I of the behavior  610  when the decrement criterion is satisfied. The decrement criterion may be satisfied when a threshold period of time has passed since last incrementing the influence value I. 
     In some examples, the evaluation E of at least one behavior  610  is weighted based on the corresponding influence value I of the at least one behavior  610 . At least one behavior  610  may evaluate the possible activity A based on at least one of a history of positively evaluated activities A,  720  for the other user  10  or one or more preferences P of the other user  10 . Moreover, a first behavior  610 ,  610   a  may evaluate the possible activity A based on an evaluation E by a second behavior  610 ,  610   b  of the possible activity A. 
     The method  1200  may include displaying, on a screen  240  in communication with the data processing hardware  112 ,  202 , other user glyphs  910 ,  910   b - m  representing the selected other users  10 ,  10   b - m . Each other user glyph  910 ,  910   b - m:  1) at least partially indicates the collective user state  420  of the corresponding other user  10 ,  10   b - m ; and/or 2) is associated with a link to a displayable view  900   j ,  900   k  indicating the collective user state  420  of the corresponding other user  10 ,  10   b - m  and/or inputs  210  used to determine the collective user state  420  of the corresponding other user  10 ,  10   b - m.    
     Referring to  FIG. 13 , in some implementations, a method  1300  may include, at block  1302 , receiving, at data processing hardware  112 ,  202 , inputs  210  indicative of a user state of a user  10 ,  10   a . The received inputs  210  include one or more of: 1) sensor inputs  210  from one or more sensors  208  in communication with the data processing hardware  112 ,  202 ; 2) application inputs  210  received from one or more software applications  206  executing on the data processing hardware  112 ,  202  or a remote device  110 ,  200  in communication with the data processing hardware  112 ,  202 ; and/or 3) user inputs  210  received from a graphical user interface  250 . At block  1304 , the method  1300  includes determining, by the data processing hardware  112 ,  202 , a collective user state  420  of the user  10 ,  10   a  based on the received inputs  210  and, at block  1306 , receiving, at the data processing hardware  112 ,  202 , a request of a requesting user  10 ,  10   a  to identify other users  10 ,  10   b - m  as likely participants for a possible activity A. The request may be a search request  220  with a search query  222  for other users  10 ,  10   b - m  as likely participants for the possible activity A. At Block  1308 , the method  1300  further includes obtaining, at the data processing hardware  112 ,  202 , user data  15  of other users  10 ,  10   b - m  having corresponding collective user states  420  satisfying a threshold similarity with the collective user state  420  of the user  10 ,  10   a  and, at block  1310 , outputting results identifying the other users  10 ,  10   b - m  based on the corresponding user data  15 . 
       FIG. 14  is schematic view of an example computing device  1400  that may be used to implement the systems and methods described in this document. The computing device  1400  is intended to represent various forms of digital computers, such as laptops, desktops, workstations, personal digital assistants, servers, blade servers, mainframes, and other appropriate computers. The components shown here, their connections and relationships, and their functions, are meant to be exemplary only, and are not meant to limit implementations of the inventions described and/or claimed in this document. 
     The computing device  1400  includes a processor  1410 , memory  1420 , a storage device  1430 , a high-speed interface/controller  1440  connecting to the memory  1420  and high-speed expansion ports  1450 , and a low speed interface/controller  1460  connecting to low speed bus  1470  and storage device  1430 . Each of the components  1410 ,  1420 ,  1430 ,  1440 ,  1450 , and  1460 , are interconnected using various busses, and may be mounted on a common motherboard or in other manners as appropriate. The processor  1410  can process instructions for execution within the computing device  1400 , including instructions stored in the memory  1420  or on the storage device  1430  to display graphical information for a graphical user interface (GUI) on an external input/output device, such as display  1480  coupled to high speed interface  1440 . In other implementations, multiple processors and/or multiple buses may be used, as appropriate, along with multiple memories and types of memory. Also, multiple computing devices  1400  may be connected, with each device providing portions of the necessary operations (e.g., as a server bank, a group of blade servers, or a multi-processor system). 
     The memory  1420  stores information non-transitorily within the computing device  1400 . The memory  1420  may be a computer-readable medium, a volatile memory unit(s), or non-volatile memory unit(s). The non-transitory memory  1420  may be physical devices used to store programs (e.g., sequences of instructions) or data (e.g., program state information) on a temporary or permanent basis for use by the computing device  1400 . Examples of non-volatile memory include, but are not limited to, flash memory and read-only memory (ROM)/programmable read-only memory (PROM)/erasable programmable read-only memory (EPROM)/electronically erasable programmable read-only memory (EEPROM) (e.g., typically used for firmware, such as boot programs). Examples of volatile memory include, but are not limited to, random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), phase change memory (PCM) as well as disks or tapes. 
     The storage device  1430  is capable of providing mass storage for the computing device  1400 . In some implementations, the storage device  1430  is a computer-readable medium. In various different implementations, the storage device  1430  may be a floppy disk device, a hard disk device, an optical disk device, or a tape device, a flash memory or other similar solid state memory device, or an array of devices, including devices in a storage area network or other configurations. In additional implementations, a computer program product is tangibly embodied in an information carrier. The computer program product contains instructions that, when executed, perform one or more methods, such as those described above. The information carrier is a computer- or machine-readable medium, such as the memory  1420 , the storage device  1430 , or memory on processor  1410 . 
     The high speed controller  1440  manages bandwidth-intensive operations for the computing device  1400 , while the low speed controller  1460  manages lower bandwidth-intensive operations. Such allocation of duties is exemplary only. In some implementations, the high-speed controller  1440  is coupled to the memory  1420 , the display  1480  (e.g., through a graphics processor or accelerator), and to the high-speed expansion ports  1450 , which may accept various expansion cards (not shown). In some implementations, the low-speed controller  1460  is coupled to the storage device  1430  and low-speed expansion port  1470 . The low-speed expansion port  1470 , which may include various communication ports (e.g., USB, Bluetooth, Ethernet, wireless Ethernet), may be coupled to one or more input/output devices, such as a keyboard, a pointing device, a scanner, or a networking device such as a switch or router, e.g., through a network adapter. 
     The computing device  1400  may be implemented in a number of different forms, as shown in the figure. For example, it may be implemented as a standard server  1400   a  or multiple times in a group of such servers  1400   a , as a laptop computer  1400   b , or as part of a rack server system  1400   c.    
     Various implementations of the systems and techniques described here can be realized in digital electronic and/or optical circuitry, integrated circuitry, specially designed ASICs (application specific integrated circuits), computer hardware, firmware, software, and/or combinations thereof. These various implementations can include implementation in one or more computer programs that are executable and/or interpretable on a programmable system including at least one programmable processor, which may be special or general purpose, coupled to receive data and instructions from, and to transmit data and instructions to, a storage system, at least one input device, and at least one output device. 
     These computer programs (also known as programs, software, software applications or code) include machine instructions for a programmable processor, and can be implemented in a high-level procedural and/or object-oriented programming language, and/or in assembly/machine language. As used herein, the terms “machine-readable medium” and “computer-readable medium” refer to any computer program product, non-transitory computer readable medium, apparatus and/or device (e.g., magnetic discs, optical disks, memory, Programmable Logic Devices (PLDs)) used to provide machine instructions and/or data to a programmable processor, including a machine-readable medium that receives machine instructions as a machine-readable signal. The term “machine-readable signal” refers to any signal used to provide machine instructions and/or data to a programmable processor. 
     Implementations of the subject matter and the functional operations described in this specification can be implemented in digital electronic circuitry, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. Moreover, subject matter described in this specification can be implemented as one or more computer program products, i.e., one or more modules of computer program instructions encoded on a computer readable medium for execution by, or to control the operation of, data processing apparatus. The computer readable medium can be a machine-readable storage device, a machine-readable storage substrate, a memory device, a composition of matter effecting a machine-readable propagated signal, or a combination of one or more of them. The terms “data processing apparatus”, “computing device” and “computing processor” encompass all apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, or multiple processors or computers. The apparatus can include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them. A propagated signal is an artificially generated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal, that is generated to encode information for transmission to suitable receiver apparatus. 
     A computer program (also known as an application, program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program does not necessarily correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network. 
     The processes and logic flows described in this specification can be performed by one or more programmable processors executing one or more computer programs to perform functions by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit). 
     Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read only memory or a random access memory or both. The essential elements of a computer are a processor for performing instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks. However, a computer need not have such devices. Moreover, a computer can be embedded in another device, e.g., a mobile telephone, a personal digital assistant (PDA), a mobile audio player, a Global Positioning System (GPS) receiver, to name just a few. Computer readable media suitable for storing computer program instructions and data include all forms of non-volatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto optical disks; and CD ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry. 
     To provide for interactivity with a user, one or more aspects of the disclosure can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube), LCD (liquid crystal display) monitor, or touch screen for displaying information to the user and optionally a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer. Other kinds of devices can be used to provide interactivity with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input. In addition, a computer can interact with a user by sending documents to and receiving documents from a device that is used by the user; for example, by sending web pages to a web browser on a user&#39;s client device in response to requests received from the web browser. 
     One or more aspects of the disclosure can be implemented in a computing system that includes a backend component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a frontend component, e.g., a client computer having a graphical user interface or a Web browser through which a user can interact with an implementation of the subject matter described in this specification, or any combination of one or more such backend, middleware, or frontend components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (“LAN”) and a wide area network (“WAN”), an inter-network (e.g., the Internet), and peer-to-peer networks (e.g., ad hoc peer-to-peer networks). 
     The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other. In some implementations, a server transmits data (e.g., an HTML page) to a client device (e.g., for purposes of displaying data to and receiving user input from a user interacting with the client device). Data generated at the client device (e.g., a result of the user interactivity) can be received from the client device at the server. 
     While this specification contains many specifics, these should not be construed as limitations on the scope of the disclosure or of what may be claimed, but rather as descriptions of features specific to particular implementations of the disclosure. Certain features that are described in this specification in the context of separate implementations can also be implemented in combination in a single implementation. Conversely, various features that are described in the context of a single implementation can also be implemented in multiple implementations separately or in any suitable sub-combination. Moreover, although features may be described above as acting in certain combinations and even initially claimed as such, one or more features from a claimed combination can in some cases be excised from the combination, and the claimed combination may be directed to a sub-combination or variation of a sub-combination. 
     Similarly, while operations are depicted in the drawings in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. In certain circumstances, multi-tasking and parallel processing may be advantageous. Moreover, the separation of various system components in the embodiments described above should not be understood as requiring such separation in all embodiments, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products. 
     A number of implementations have been described. Nevertheless, it will be understood that various modifications may be made without departing from the spirit and scope of the disclosure. Accordingly, other implementations are within the scope of the following claims. For example, the activities recited in the claims can be performed in a different order and still achieve desirable results.