Systems and Methods for Dynamic Data Propagation Across Platforms

One method includes providing a plurality of events defined for a mobile application; providing a plurality of configuration options for the events, wherein the plurality of configuration options may include parameters; receiving an update to a first configuration option of the plurality of configuration options for a first event of the plurality of events in the list and a first parameter associated with the update; storing the updated first configuration option; transmitting to a first client device of a plurality of client devices running the mobile application, the updated first configuration option, wherein the updated first configuration option may cause the mobile application to monitor data of the mobile application for the occurrence of the first parameter; receiving from the first client device responsive to the first client device detecting the occurrence of the configuration option.

CROSS-REFERENCE TO RELATED APPLICATION

This application claims priority to Vietnamese Patent Application No. 1-2020-05021, filed on Aug. 31, 2020, the contents of which are incorporated herein by reference.

BACKGROUND

Implementations of the present disclosure relate generally to the propagation of configurations to applications across various platforms. In particular, they relate to systems and methods for dynamic configuration and without alterations to the code representative of the applications.

Traditionally, applications utilizing analytics frameworks are hindered by a cumbersome process when a need arises to modify their analytics configurations. An application must be recoded and re-released to the market in order to effect change. Additionally, widespread adoption of the update may be difficult to attain, as many users update their applications on an infrequent basis.

SUMMARY

One aspect of the present disclosure relates to a method. The method may include providing, by the one or more processing circuits of the event analysis computer system to a developer device, a plurality of events defined for an application. The method may include providing, by the one or more processing circuits, to the developer device, a plurality of configuration options for the events. The plurality of configuration options may include parameters. The method may include receiving, by the one or more processing circuits from the developer device, an update to a first configuration option of the plurality of configuration options for a first event of the plurality of events in the list and a first parameter associated with the update. The method may include storing, by the one or more processing circuits, the updated first configuration option. The method may include transmitting, by the one or more processing circuits to a first client device of a plurality of client devices running the application, the updated first configuration option. The updated first configuration option may cause the application to monitor data of the application for the occurrence of the first parameter. The method may include receiving, by the one or more processing circuits from the first client device responsive to the first client device detecting the occurrence of the first parameter, a new event or a modified event based on the updated first configuration option.

In some implementations of the method, the parameters may include a plurality of Boolean operators and a plurality of conditions and provide for selection on the developer device of multipart conditional parameters.

In some implementations of the method, at least one action may be performed for each parameter associated with each event in the list of events.

In some implementations of the method, the plurality of configuration options further includes event names and parameter actions.

In some implementations of the method, it may further include receiving, by the one or more processing circuits from the developer device, a version selection indicating a first version of the application from among a plurality of versions. In some implementations of the method, transmitting the updated first configuration option to the first client device may include transmitting the updated first configuration option responsive to determining a version of the application installed on the first client device is the first version.

In some implementations of the method, it may further include receiving, by the one or more processing circuits from the developer device, a data stream selection indicating a first data stream category of the application from among a plurality of data stream categories. In some implementations of the method, transmitting the updated first configuration option to the first client device may include transmitting the updated first configuration option responsive to determining a data stream category associated with the first client device is the first data stream category.

In some implementations of the method, the update to the configuration options may cause the first parameter to parameter an additional new event. In some implementations of the method, the additional new event may be selected based on the data stream and version selector status.

In some implementations of the method, the plurality of configuration options further comprises an option to delete an existing account.

Another aspect of the present disclosure relates to a system. The system may include one or more computer-readable storage media having instructions stored thereon. The system may also include one or more processors configured to execute the instructions. The processor(s) may be configured to provide, to a developer device, a plurality of events defined for an application. The processor(s) may be configured to provide, to the developer device, a plurality of configuration options for the events. The plurality of configuration options may include parameters. The processor(s) may be configured to receive, from the developer device, an update to a first configuration option of the plurality of configuration options for a first event of the plurality of events in the list and a first parameter associated with the update. The processor(s) may be configured to store, the updated first configuration option. The processor(s) may be configured to transmit, to a first client device of a plurality of client devices running the application, the updated first configuration option. The updated first configuration option may cause the application to monitor data of the application for the occurrence of the first parameter. The processor(s) may be configured to receive, from the first client device responsive to the first client device detecting the occurrence of the first parameter, a new event or a modified event based on the updated first configuration option.

In some implementations of the system, the parameters may include a plurality of Boolean operators and a plurality of conditions and provide for selection on the developer device of multipart conditional parameters.

In some implementations of the system, the plurality of configuration options further includes event names and parameter actions.

In some implementations of the system, the processor(s) may be configured to receive, from the developer device, a version selection indicating a first version of the application from among a plurality of versions. In some implementations of the system, transmitting the updated first configuration option to the first client device may include transmitting the updated first configuration option responsive to determining a version of the application installed on the first client device is the first version.

In some implementations of the system, the processor(s) may be configured to receive, from the developer device, a data stream selection indicating a first data stream category of the mobile application from among a plurality of data stream categories. In some implementations of the system, transmitting the updated first configuration option to the first client device may include transmitting the updated first configuration option responsive to determining a data stream category associated with the first client device is the first data stream category.

In some implementations of the system, the update to the configuration options may cause the first parameter to activate an additional new event. In some implementations of the system, the additional new event may be selected based on the data stream and version selector status.

Yet another aspect of the present disclosure relates to a computer-readable storage media having instructions stored thereon, the instructions being executable by one or more processors to perform operations. The computer-readable storage media may be non-transitory. The operations may include providing, to a developer device, a plurality of events defined for an application. The operations may include providing, to the developer device, a plurality of configuration options for the events. The plurality of configuration options may include parameters. The operations may include receiving, from the developer device, an update to a first configuration option of the plurality of configuration options for a first event of the plurality of events in the list and a first parameter associated with the update. The operations may include storing, the updated first configuration option. The operations may include transmitting, to a first client device of a plurality of client devices running the application, the updated first configuration option. The updated first configuration option may cause the application to monitor data of the application for the occurrence of the first parameter. The operations may include receiving, from the first client device responsive to the first client device detecting the occurrence of the first parameter, a new event or a modified event based on the updated first configuration option.

In some implementations of the one or more computer-readable storage media, the parameters may include a plurality of Boolean operators and a plurality of conditions and provide for selection on the developer device of multipart conditional parameters.

In some implementations of the one or more computer-readable storage media, at least one action may be performed for each parameter associated with each event in the list of events.

In some implementations of the one or more computer-readable storage media, the plurality of configuration options further includes event names and parameter actions.

In some implementations of the one or more computer-readable storage media, the operations may include further including receiving, from the developer device, a version selection indicating a first version of the application from among a plurality of versions. In some implementations of the one or more computer-readable storage media, transmitting the updated first configuration option to the first client device may include transmitting the updated first configuration option responsive to determining a version of the application installed on the first client device is the first version.

In some implementations of the one or more computer-readable storage media, the operations may include further including receiving, from the developer device, a data stream selection indicating a first data stream category of the application from among a plurality of data stream categories. In some implementations of the one or more computer-readable storage media, transmitting the updated first configuration option to the first client device may include transmitting the updated first configuration option responsive to determining a data stream category associated with the first client device is the first data stream category.

DETAILED DESCRIPTION

Referring generally to the figures, systems and methods for dynamically modifying and propagating application configurations are shown and described. The application configurations may be propagated in such a manner that they may be utilized without recoding or updating an application. Furthermore, the features implemented by the present disclosure represent both technological and convenience improvements to the current analytics environment.

It should be appreciated that while the present disclosure discusses many features in relation to mobile applications, various implementations utilize said features with non-mobile applications as well.

Various improvements to the technology associated with application analytics are described herein. Many applications contain analytic frameworks that generate events in response to the behavior exhibited inside an application. The generated events may include statistics, error alerts, resource usage reports, or any variety of data generation responsive to the behavior exhibited inside an application. The behavior exhibited inside an application may encompass any variety of quantifiable data, such as processor(s) load, network utilization, memory utilization, error frequency, etc. At times, the application developer may wish to change one or more of the event configurations. Traditionally, applications utilizing an event analytics framework require version updates in order to achieve event configuration modifications. As should be appreciated, especially with regards to privacy goals, recoding a new version of an application to implement modifications to the event configurations is highly disadvantageous.

Typically, recoding a new version of an application inherently contains significant overhead and time delay. Additionally, recoding the application may require scheduling with professional software developers to incorporate the desired changes. Furthermore, completion of the new application version provides no assurances that the desired changes are propagated to the client devices, as the users often must download the update in order to receive the change. For example, an application may have an analytics framework that generates an event erroneously, due to a mistake in the configuration. Every time that the application generates the erroneous event, it is consuming device resources (e.g., power, memory space, processing potential, etc.) and network bandwidth, both on the client device and the event analysis computer system. This waste of technological resources may not be remedied in full by a version update, as each user running an older version of the application will continue to consume resources reporting the erroneous event. Further, the network and infrastructure usage required in order for each user to install an application update (and avoid resource consumption by the erroneous event) can be significant where many thousands or even millions of users are involved. As such, the features of the present disclosure described herein, provide a more efficient solution in that desired changes can be incorporated without the need for a full updated install on every client device.

Referring toFIG.1, a schematic design of an event analysis system100, is shown according to an illustrative implementation. The event analysis system100includes a developer device104, a client device112, and an event analysis computer system124. The developer device104, the client device112, and the event analysis computer system124are each communicably coupled and configured to exchange information over a network122, which may include one or more of the Internet, cellular network, Wi-Fi, Wi-Max, or any other type of wired or wireless network.

The developer device104may be any of a variety of devices associated with a user102. For example, the developer device104may comprise a mobile phone, a personal computer (e.g., a desktop computer or a laptop computer), a tablet, a smart watch or other wearable device, a virtual/augmented reality (VR/AR system), and/or any other suitable user computing devices capable of accessing and communicating using local and/or global networks (e.g., the network122).

The developer device104comprises a network interface106, an application108, and an event framework110. The network interface106is used to establish connections with other computing systems and devices (e.g., the event analysis computer system124) by way of the network122. Accordingly, the network interface106enables the developer device104to transmit and/or receive information to and/or from the event analysis computer system124or any other network enabled device. The network interface106includes program logic that facilitates connection of the developer device104to the network122. For example, the network interface106may include any combination of a wireless network transceiver (e.g., a cellular modem, a Bluetooth transceiver, a WiFi transceiver, etc.) and/or a wired network transceiver (e.g., an Ethernet transceiver). In some arrangements, the network interface106includes the hardware and machine-readable media sufficient to support communication over multiple channels of data communication. Further, in some arrangements, the network interface106includes cryptography capabilities to establish a secure or relatively secure communication session in which data communicated over the session is encrypted.

In some implementations, the application108is a separate software application implemented on the developer device104. In some implementations, the application may be implemented as a mobile application for use with mobile user devices. In other implementations, the application may be a non-mobile application, such as an application on a desktop computing system. For example, the application108may be downloaded by the developer device104prior to its usage (e.g., Apple App Store, Google Play Store, etc.). Furthermore, the application108may be of any form or function and be associated with any author of applications. The application108is configured to include an event framework110that facilitates the conditional generation and relay of events to an event analysis computer system124. The event framework110may comprise an application programming interface (API) and/or software development kit (SDK) that is structured to transmit events and receive configuration options from the event analysis computer system124. For example, the event framework110may be structured to monitor for specific and conditional interactions with the application108(e.g., clicks, screen time, data input, in-app purchases, etc.) and subsequent to identifying a conditional interaction, the event framework110generates an event correlated to the conditional interaction, and transmits it to the event analysis computer system124.

Still referring toFIG.1, the client device106comprises a network interface116, an application118, and an event framework120. The client device106may be any of a variety of devices associated with a user112. For example, the client device106may comprise a mobile phone, a personal computer (e.g., a desktop computer or a laptop computer), a tablet, a smart watch or other wearable device, a virtual/augmented reality (VR/AR system), and/or any other suitable user computing devices capable of accessing and communicating using local and/or global networks (e.g., the network122).

The network interface116is similarly structured and used to establish connections with other computing systems (e.g., the event analysis computer system124) by way of the network122. The network interface116may further include any or all of the components discussed above, with reference to the network interface106of the developer device104.

The application118and event framework120are similarly structured and used as on the developer device106, in order to generate and relay events to the event analysis computer system124. It should be appreciated that the application118is not associated with any particular author of applications, however, the application108of the developer device106and the application118of the client device106are generally the same application (device/platform differences and version differences are permitted).

Still referring toFIG.1, the event analysis computer system124may be implemented using any type of computing system, such as a discrete server, a group of two or more computing devices/servers, a distributed computing network, a cloud computing network, and/or any other type of computing system capable of accessing and communicating using local and/or global networks (e.g., the network122). The event analysis computer system124comprises a network interface126, a processing circuit128, an analysis circuit134, and an events database142.

The network interface126is similarly structured and used to establish connections with other computing systems (e.g., the developer device104, the client device114) by way of the network122. The network interface126may further include any or all of the components discussed above, with reference to the network interface106of the developer device104and the network interface116of the client device114.

The processing circuit128includes a processor130and a memory132. The processor130may be implemented as one or more application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), a group of processing components, or other suitable electronic processing components. The memory132may be one or more devices (e.g., RAM, ROM, Flash memory, hard disk storage) for storing data and/or computer code for completing and/or facilitating the various processes described herein. Memory132may be or include non-transient volatile memory, non-volatile memory, and non-transitory computer storage media. Memory132may include database components, object code components, script components, or any other type of information structure for supporting the various activities and information structures described herein. The memory132may be communicably coupled to the processor130and include computer code or instructions for executing one or more processes described herein.

The analysis circuit134is configured to receive, react, record, and facilitate modification of events. Accordingly, the analysis circuit134comprises a collection endpoint136, an event response function138, and an event update function140. Further, the analysis circuit134is coupled to an events database142.

The collection endpoint136may be implemented, for example, as an application programming interface (API) and/or software development kit (SDK), and is structured to receive events via the network interface126(e.g., an incoming event from the client device114over the network122). Subsequent to receiving an event, the collection endpoint136may store information and details regarding the event (e.g., event condition, event name, event response(s), and device information) in the events database142. Further, the collection endpoint136may then pass the event to the event response function138for handling.

The event response function138handles events received by the collection endpoint136and performs resulting actions associated with the event. For example, an event may be received by the collection endpoint136from a client device114application118, which was conditionally activated by the user112configuring the application in a certain way, for example making a privacy option selection within the application118. The related information may then be processed by the collection endpoint136and passed to the event response function138. The event response function138may then respond as indicated by the event action(s), which are included in the event information. Illustratively, in the example case of a user112making a privacy option selection within the application118, the action(s) may include: generate a private user group, add the user112to the private user group, and remove identifying information of the user112from the events database142. As should be appreciated, the event response function138may process event action(s) of varying complexity and comprising a variable amount of steps. In another illustrative example, a client device112may be excessively and unnecessarily transmitting data across the network122to the event analysis computer system124, due to an erroneous application118configuration. Accordingly, a user102associated with a developer device104may dynamically propagate an update to application118in order to reduce network transmissions of client device112. The dynamic propagation occurring without an application118recode and without user112downloading and installing an update to application118. As should be appreciated, the aforementioned example illustrates significant technological improvements to applications with integrated event frameworks via a reduction in erroneous or excessive hardware utilization.

Still referring toFIG.1, the event update function140receives an application configuration update over the network122via the network interface126from a developer device104. The application configuration update may include a variety of data, such as, for example, a modification of an event, an addition of an event, or a deletion of an event. The event update function may then process the configuration update and transmit the configuration update, via the network interface126, to the event framework120of a client device114. The event update function may also store the configuration update information in the events database142for data congruency and logging. Responsive to receiving the updated configuration, the application118of the client device112may utilize the updated configuration without any further action taken by the user112and without any requisite update of the application118, hence avoiding the necessary use of greater system resources and infrastructure as well as local client device114resources than as required by the transmission of the application configuration update to the event framework120of a client device114. For further understanding, elaboration on the application configuration update will be provided in following sections.

The events database142is structured to hold, store, categorize, and/or otherwise serve as a repository for information associated with events from a client device114. For example, the event database142may be structured to retrievably store information originating from previously generated events (e.g., generated user groups, application118usage statistics, event statistics, user112opt-ins, and application118configuration instances).

Referring toFIG.2, a flow diagram for a method200for dynamically propagating a configuration update is shown according to an illustrative implementation. The method200begins at step202where a plurality of events defined for an application118are provided to a developer device104. For example, the plurality of events may include all events currently monitored on the application118. The plurality of events may be provided to a developer device104, for example, via a graphical user interface (GUI) or through a web-based application. The method200continues at step204by providing a plurality of configuration options for the plurality of events to the developer device104. For example, the plurality of configuration options may include items such as event names, event conditional parameters, event actions, and further options to create new events and delete existing events. In some instances, the user102of the developer device104may then select a first event to update a configuration for, from the plurality of events.

Once the user102has selected a first event to update, at step206, the method continues by receiving an update to a first configuration option for the first event. In some instances, the update to the first configuration option may change the name of the first event, the conditional parameters which invoke the first event, or it may cause the first event to spawn one or more additional events subsequent to activation of the first event. In other instances, the update to the first configuration option may disable or delete the first event.

Next, at step208, the received update to the first configuration option may be retrievably stored in the events database142. In some implementations, a historical log of all configuration option updates may be stored in the events database. The historical log may provide an accurate chronological detailing of all developer device changes made to the configuration options. The chronological detailing may include items such as the developer device information (e.g., geographic location, hardware details, operating system details, etc.), the user associated with the developer device, the time and date of the update, and enterprise details (e.g., the update was made on behalf of a marketing team request). Further, in some instances, the historical log may also be used to revert configuration option updates or re-implement a previous update (e.g., the developers may wish for certain configuration options seasonally and are facilitated to select, for example, last summer's options without having to recreate them).

Continuing at step210, the configuration option update received at step206is transmitted to the client device114. The client device114may implement the configuration update without any action taken by the user112. Further, the client device114may implement the configuration update without updating or altering the code associated with the application118. Instead, the update may be processed by the event framework120and effect the application118indirectly.

Lastly, at step212, the new or modified event associated with the configuration option update received at step206is generated by the event framework120of the client device114, and received by the collection endpoint136. For example, an event may be conditionally activated in response to a user112spending a predetermined amount of time (e.g., two minutes) on a specific screen of the application118. The developer associated with the developer device may have noticed that the time threshold was erroneously set to twenty minutes and thus corrected the error with a configuration option update. Step212may then start receiving events from the user112utilizing the correct two minute time period as the conditional parameter.

Referring toFIG.3, a schematic design of an illustrative use of the event analysis computer system is shown. An example application118author is depicted at300. The application118author may be any individual, enterprise, or otherwise proprietor of an application118ran on a client device114.

In some instances, the proprietor300may access an analytics dashboard302in order to view events and modify configuration options. The analytics dashboard302may be accessed, for example, as a GUI or a web-based application. The proprietor300may then update a first configuration option for a first event using the analytics dashboard302, the update similar to the process described at206. In some implementations, the analytics dashboard302may include an option to provide parameters which designate a desired audience or group of recipients to receive the configuration update, such as a data or version stream selector. The data stream selector may enable a developer device to target recipients based on predetermined audiences (e.g., iOS users, Android users, etc.). The version selector may enable a developer device to identify the intended recipients based on the version of the application118running on the client device114.

The configuration update selected via the analytics dashboard302may then be transmitted to the event analysis computer system304. The event analysis computer system304may be structured and operate similarly to the event analysis computer system124. The event update function140may process the configuration option update and transmit to the recipient client devices.

In one example, the event analysis computer system304may receive a configuration option update to rename an event on any client device114that is running version1of the application118. The event analysis computer system304may then transmit the configuration update to the client device306as it is currently running version1308of the application118. The event framework310of application118version1308may then process the configuration update and cause an event1to be renamed to event1.1. The event may still function the same, containing the same conditional parameters and associated actions. Client devices312and318may not receive any configuration updates as they are running different versions of the application118.

In another example, the event analysis computer system304may receive a configuration option update which causes an event on any client device114that is running version2of the application118to generate an additional synthetic event in response to the original event's activation. The event analysis computer system304may then transmit the configuration update to the client device312as it is currently running version2314of the application118. The event framework316of application118version2314may then process the configuration update and cause any conditional parameters which activate event1to also generate an event2. Client devices306and318may not receive any configuration updates as they are running different versions of the application118.

In another example, the event analysis computer system304may receive a configuration option update which causes an event on any client device114that is running version3of the application118to transform an original event into another event. The event analysis computer system304may then transmit the configuration update to the client device318as it is currently running version3320of the application118. The event framework322of application118version3322may then process the configuration update and cause event1to be transformed into event5. The transformed event5may contain modified conditional parameters and actions. Client devices306and312may not receive any configuration updates as they are running different versions of the application118.

Referring toFIG.4A, a sample illustrative implementation of a web-based analytics dashboard400is shown. In some instances, a reporting dashboard is incorporated at402. This may enable a developer associated with a developer device104to generate reports regarding events which have transpired and the information associated therein. The reports may utilize various predetermined categories in order to filter information or be generated according to custom parameters.

A general event dashboard is indicated by404, including event and reporting snippets. In some instances, this may include a real-time display of existing events and their statistical significance (e.g., quantity of activations, quantity of unique users who have activated the event, a percent change relative to a predetermined time period). In some implementations, the predetermined time period for which the reporting dashboard considers data may be modified at406.

The analytics dashboard400may also contain a recommend events section408. These recommend events may include popular events utilized by application118authors. For example, events are indicated at408which represent a user signing up, logging in, or sharing an item to social media.

The button represented by item410may enable a developer associated with a developer device104to access an event editing menu.

Now referring toFIG.4B, according to some implementations, an example event editing menu412is shown. A list of existing events may be displayed and selected in order to edit the name, conditional parameters, and action(s) associated with the event.

The button represented by item414may enable a developer associated with a developer device104to create new events. In some instances, creating a new event may cause the new event to be displayed on the general event dashboard404.

An example event containing a typo is indicated at416, named “LEOVEL_UP”. The developer associated with a developer device104may select this event and cause an event specific editing menu to be shown.

Now referring toFIG.4C, according to some implementations, an event specific editing menu is shown. For example, an original event name drop-down menu is indicated by418. The drop-down menu may enable a developer associated with a developer device104to view all names previously associated with the event. These names may be retrieved from the historical log stored in the events database142.

An example new name field is indicated by420. A developer associated with a developer device104may rename the event in this section and may cause both the current and newly named event to be snapshotted for inclusion in the historical log, stored in the events database142.

In some instances, a data stream selector is made available at422. The data stream selector422may, for example, enable a developer associated with a developer device104to select a target recipient audience for the configuration update.

In other instances, a selection item is made available for editing event parameters at424. The selection item424includes a drop-down menu enabling a developer associated with a developer device104to select an action and the conditional parameters associated with the event.

In another instance, a delete all event configurations option is made available at426. This item may enable a developer associated with a developer device104to remove all configurations associated with the event.

Referring now toFIG.5, a computer system500is shown that can be used, for example, to implement an illustrative developer device104, an illustrative client device112, an illustrative event analysis computer system124, and/or various other illustrative systems described in the present disclosure. The computing system500includes a bus505or other communication component for communicating information and a processor510coupled to the bus505for processing information. The computing system500also includes main memory515, such as a random access memory (RAM) or other dynamic storage device, coupled to the bus505for storing information, and instructions to be executed by the processor510. Main memory515can also be used for storing position information, temporary variables, or other intermediate information during execution of instructions by the processor510. The computing system500may further include a read only memory (ROM)520or other static storage device coupled to the bus505for storing static information and instructions for the processor510. A storage device525, such as a solid state device, magnetic disk or optical disk, is coupled to the bus505for persistently storing information and instructions.

The computing system500may be coupled via the bus505to a display535, such as a liquid crystal display, or active matrix display, for displaying information to a user. An input device530, such as a keyboard including alphanumeric and other keys, may be coupled to the bus505for communicating information, and command selections to the processor510. In another implementation, the input device530has a touch screen display535. The input device530can include a cursor control, such as a mouse, a trackball, or cursor direction keys, for communicating direction information and command selections to the processor510and for controlling cursor movement on the display535.

In some implementations, the computing system500may include a communications adapter540, such as a networking adapter. Communications adapter540may be coupled to bus505and may be configured to enable communications with a computing or communications network545and/or other computing systems. In various illustrative implementations, any type of networking configuration may be achieved using communications adapter540, such as wired (e.g., via Ethernet), wireless (e.g., via Wi-Fi, Bluetooth, etc.), pre-configured, ad-hoc, LAN, WAN, etc.

According to various implementations, the processes that effectuate illustrative implementations that are described herein can be achieved by the computing system500in response to the processor510executing an arrangement of instructions contained in main memory515. Such instructions can be read into main memory515from another computer-readable medium, such as the storage device525. Execution of the arrangement of instructions contained in main memory515causes the computing system500to perform the illustrative processes described herein. One or more processors in a multi-processing arrangement may also be employed to execute the instructions contained in main memory515. In alternative implementations, hard-wired circuitry may be used in place of or in combination with software instructions to implement illustrative implementations. Thus, implementations are not limited to any specific combination of hardware circuitry and software.

In some illustrative implementations, the features disclosed herein may be implemented on a smart television module (or connected television module, hybrid television module, etc.), which may include a processing circuit configured to integrate internet connectivity with more traditional television programming sources (e.g., received via cable, satellite, over-the-air, or other signals). The smart television module may be physically incorporated into a television set or may include a separate device such as a set-top box, Blu-ray or other digital media player, game console, hotel television system, and other companion device. A smart television module may be configured to allow viewers to search and find videos, movies, photos and other content on the web, on a local cable TELEVISION channel, on a satellite TELEVISION channel, or stored on a local hard drive. A set-top box (STB) or set-top unit (STU) may include an information appliance device that may contain a tuner and connect to a television set and an external source of signal, turning the signal into content which is then displayed on the television screen or other display device. A smart television module may be configured to provide a home screen or top level screen including icons for a plurality of different applications, such as a web browser and a plurality of streaming media services (e.g., Netflix, Vudu, Hulu, etc.), a connected cable or satellite media source, other web “channels”, etc. The smart television module may further be configured to provide an electronic programming guide to the user. A companion application to the smart television module may be operable on a mobile computing device to provide additional information about available programs to a user, to allow the user to control the smart television module, etc. In alternate implementations, the features may be implemented on a laptop computer or other personal computer, a smartphone, other mobile phone, handheld computer, a tablet PC, or other computing device.

While this specification contains many specific implementation details, these should not be construed as limitations on the scope of any inventions or of what may be claimed, but rather as descriptions of features specific to particular implementations of particular inventions. Certain features that are described in this specification in the context of separate implementations can also be carried out in combination or in a single implementation. Conversely, various features that are described in the context of a single implementation can also be carried out in multiple implementations, separately, or in any suitable subcombination. 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 subcombination or variation of a subcombination. Additionally, features described with respect to particular headings may be utilized with respect to and/or in combination with illustrative implementations described under other headings; headings, where provided, are included solely for the purpose of readability and should not be construed as limiting any features provided with respect to such headings.

Thus, particular implementations of the subject matter have been described. Other implementations are within the scope of the following claims. In some cases, the actions recited in the claims can be performed in a different order and still achieve desirable results. In addition, the processes depicted in the accompanying figures do not necessarily require the particular order shown, or sequential order, to achieve desirable results. In certain implementations, multitasking and parallel processing may be advantageous. While this specification contains many specific implementation details and/or arrangement details, these should not be construed as limitations on the scope of any inventions or of what may be claimed, but rather as descriptions of features specific to particular implementations and/or arrangements of the systems and methods described herein. Certain features that are described in this specification in the context of separate implementations and/or arrangements can also be implemented and/or arranged in combination in a single implementation and/or arrangement. Conversely, various features that are described in the context of a single implementation and/or arrangement can also be implemented and arranged in multiple implementations and/or arrangements separately or in any suitable subcombination. 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 subcombination or variation of a subcombination.