Advertising is used to monetize various web-based services and content, wherein exemplary web-based services include social networking websites, news websites, video games, e-mail applications, messaging applications, etc., and exemplary content includes blog entries written by blog writers, news articles, video games, etc. Conventionally, an advertisement exchange is notified when a client computing device (e.g., of a particular user) requests a page belonging to a particular website. The advertisement exchange, responsive to being notified that the client computing device has requested the page, executes an auction for an advertisement position on the page. Generally, advertisers submit respective bids to have their advertisements displayed on the page, and the advertiser that submits the bid with the highest value is deemed the winner of the auction for the advertisement position. The advertisement of the advertiser is then displayed in the advertisement position in the page on a display of the client computing device, such that the user of the device is exposed to the advertisement. While being inundated with advertisements (particularly those not relevant to interests of the user) may be harmful to user experience, display advertising is oftentimes necessary to create a revenue stream for the provider of the service and/or content.
With respect to web browsers, ad blockers (installed as browser add-ins) have been developed to block advertisements. For example, the ad blocker can search for a particular domain in redirects transmitted to the web browser, and can prevent the web browser from loading content of redirects that include the particular domain. With more particularity, when a web browser is directed to load a page that comprises an advertisement position that can be populated by an advertisement, an advertisement exchange is notified and conducts an auction for the advertisement position. Responsive to the advertisement exchange determining the winner of the auction, the advertisement exchange provides the web browser with a redirect that includes a uniform resource identifier (URI) that identifies the location of the advertisement of the auction winner, wherein the URI includes a particular domain (e.g., a domain associated with the advertisement exchange). The ad blocker intercepts the redirect and searches the URI for the particular domain, and when the ad blocker identifies that the URI in the redirect includes the particular domain, prevents the web browser from retrieving the advertisement. The web page, when rendered by the browser on a display, thus does not include the advertisement, but may instead include aesthetically displeasing graphics (e.g., empty boxes that indicate that particular content was unable to be loaded by the web browser). Accordingly, while the ad blocker may prevent certain advertisements from being presented to the user, the rendered webpage may nevertheless be aesthetically unappealing.
Still further, ad blockers effectively prevent publishers and service providers from receiving the revenue typically generated through web-based display advertising. That is, when the ad blocker prevents the web browser from retrieving an advertisement, a content provider or publisher receives no revenue. Moreover, ad blockers are typically imperfect, and it can be unpredictable as to which advertisements will be and will not be blocked by the ad blocker.
The following is a brief summary of subject matter that is described in greater detail herein. This summary is not intended to be limiting as to the scope of the claims.
Described herein are various technologies pertaining to user-participation in auctions for advertisement positions on pages (e.g. web pages, pages generated by an application executing on a client computing device, such as a social networking application, etc.). In an exemplary embodiment, technologies related to a computer-executable bidding agent that submits bids on behalf of a user are set forth herein, wherein the bids are for respective advertisement positions on pages that are to be displayed on a display of a client computing device employed by the user. Also described herein are various technologies pertaining to executing an auction for an advertisement position on a page to be displayed on a display of a client computing device, wherein the aforementioned computer-executable agent submits a bid on behalf of the user, and the auction is executed based upon such bid. Additionally described herein are various technologies pertaining to the display of user-selected content in an advertisement position when the user wins an auction for the advertisement position.
In an exemplary embodiment, a user can set forth an indication that she desires to participate in auctions for advertisement positions on pages rendered at client computing devices of the user, wherein when the user wins the auction an advertisement is effectively prevented from being presented to the user (thus enhancing user experience on pages displayed to the user). For example, the user can have an account that includes units of value (e.g., monetary value), and may set forth an indication of bid values and/or a budget that is to be used to bid on advertisement positions. For example, the budget may be an amount of money over a predefined period of time (e.g., $20 for one year). The bid values can specify bid amounts for advertisement positions shown on respective pages.
A graphical user interface (GUI) can be provided to the user that is configured to receive the budget and/or bid values, thus facilitating prevention of display of advertisements on pages rendered on client computing devices of the user. For example, the user can identify particular categories of pages (e.g., news, social networking, e-mail, blog, etc.) upon which advertisements are desirably prevented from being displayed. In yet another example, the GUI can facilitate receipt of identifications of particular domains, wherein the user desires that advertisements are prevented from being displayed on pages of the identified domains. Additionally, historic user behavior can be received (e.g., historic browsing behavior of the user), which can be employed to program the computer-executable bidding agent, as well as to provide information to the user when the user is setting forth budget and/or bid data via the GUI. For example, the user may indicate that she wishes to spend $20 on ad prevention over the next year, and based upon her browsing history, the GUI can set forth an estimate that some percentage (e.g., 80%) of advertisements will be blocked over the next year based upon the budget set forth by the user. As the user provides more granular information about how she wishes to block advertisements (e.g., identifications of domains, web pages, etc.), more granular information about ad prevention estimates can be provided by way of the GUI.
In an exemplary embodiment, based upon the data received from the GUI, a computer-executable bidding agent for the user can be constructed, wherein the bidding agent is programmed to set forth bids in auctions for advertisement positions on behalf of the user. The bidding agent may be “intelligent,” in that the bidding agent considers several factors when determining a bid value in an auction for the advertisement position, wherein the factors can include amount of user budget remaining, user browsing patterns, historic winning bids for a domain, etc. In another example, the bidding agent can be configured to bid a predefined amount (e.g., for advertisement auctions for a particular domain), where the predefined amount is user-specified.
The computer-executable agent can be associated with a demand side platform (DSP) account of the user, such that the user need not have accounts with multiple advertisement exchanges to participate in auctions conducted by different advertisement exchanges. Specifically, numerous different advertisement exchanges exist, and conventionally, an advertiser wishing to set forth bids in auctions for advertisement positions must have a respective account with each advertisement exchange. The DSP allows the user to have a single account, but participate in auctions run by numerous different advertisement exchanges.
Subsequent to the user bidding agent being constructed, the user bidding agent can set forth bids on behalf of the user in auctions for advertisement positions on pages that are to be displayed on client computing devices of the user. In an example, the user may employ an application (e.g., a web browser) on a computing device, and can direct the application to request a particular page (e.g., a web page of a news domain) hosted on a web server. The web server, responsive to receiving the request, transmits a redirect to the application on the client computing device, wherein the redirect identifies an advertisement server (e.g., operated by an advertisement exchange) that is to conduct an auction for an advertisement position on the web page. The application, responsive to receiving the redirect, transmits data to the advertisement server that indicates that an auction for an advertisement position is to be performed.
The advertisement server receives the data from the application executing on the client computing device, and responsive to receipt of the data, conducts an auction for the advertisement position. With more detail, the advertisement server solicits bids from a respective plurality of bidders based upon, for example, content of the web page, data about the user, or the like. The advertisement server then receives a plurality of bids for the advertisement position, wherein the plurality of bids have a respective plurality of values. One of such bids can be generated by the user bidding agent, which sets forth the bid on behalf of the user. The advertisement server can then identify a winner of the auction based upon the plurality of bid values, wherein the bid having the highest bid value is the winning bid. When an advertiser is the winner of the auction, an advertisement of the advertiser is displayed in the advertisement position on the page at the client computing device (e.g., the advertisement server directs the application on the client computing device to retrieve an advertisement specified by the advertiser). When the user is the winner of the auction for the advertisement position (e.g., the bid value of the bid submitted on behalf of the user by the user bidding agent is the highest bid value), the advertisement server transmits a redirect to the application executing on the client computing device, wherein the redirect directs the application to content that has been approved by the user. For example, such content may be a one by one pixel window. In another example, the content may be a blank space with a color matching the background color of the page displayed on the client computing device. In yet another example, the content can be an image approved by the user (e.g., an image of a family member of the user, an image of current weather conditions, etc.).
The advertisement server can further be configured to assess a charge to the winner of the auction for the advertisement position. When the user is the winner of the auction, the advertisement server can assess a charge to the account of the user, wherein the charge is based upon at least one bid value of a bid submitted by another participant in the auction. For example, a second price auction mechanism can be used when assessing the charge to the account of the user. When an advertiser is the winner of the auction (e.g., the bid set forth by the advertiser has the highest value from amongst the bid values), the advertiser may be assessed a charge that is based upon the bid value of the bid set forth by the user bidding agent.
The above summary presents a simplified summary in order to provide a basic understanding of some aspects of the systems and/or methods discussed herein. This summary is not an extensive overview of the systems and/or methods discussed herein. It is not intended to identify key/critical elements or to delineate the scope of such systems and/or methods. Its sole purpose is to present some concepts in a simplified form as a prelude to the more detailed description that is presented later.
Various technologies pertaining to user-participation in auctions for advertisement positions are now described with reference to the drawings, wherein like reference numerals are used to refer to like elements throughout. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of one or more aspects. It may be evident, however, that such aspect(s) may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to facilitate describing one or more aspects. Further, it is to be understood that functionality that is described as being carried out by a single system component may be performed by multiple components. Similarly, for instance, a component may be configured to perform functionality that is described as being carried out by multiple components.
Moreover, the term “or” is intended to mean an inclusive “or” rather than an exclusive “or.” That is, unless specified otherwise, or clear from the context, the phrase “X employs A or B” is intended to mean any of the natural inclusive permutations. That is, the phrase “X employs A or B” is satisfied by any of the following instances: X employs A; X employs B; or X employs both A and B. In addition, the articles “a” and “an” as used in this application and the appended claims should generally be construed to mean “one or more” unless specified otherwise or clear from the context to be directed to a singular form.
Further, as used herein, the terms “component” and “system” are intended to encompass computer-readable data storage that is configured with computer-executable instructions that cause certain functionality to be performed when executed by a processor. The computer-executable instructions may include a routine, a function, or the like. It is also to be understood that a component or system may be localized on a single device or distributed across several devices. Further, as used herein, the term “exemplary” is intended to mean serving as an illustration or example of something, and is not intended to indicate a preference.
With reference now to
The system 100 additionally includes a web server 110 that is in communication with the client computing device 102 by way of the network 108. The web server 110 hosts content 111 that can be displayed on the display 106 of the client computing device 102. In an exemplary embodiment, when the application executing on the client computing device 102 is a web browser, the content 111 can be a web page that is hosted by the web server 110. When the application executing on the client computing device 102 is an application other than a web browser (such as a social networking application, a videogame application, or the like), the content 111 can be pages (images, arrangements of graphical data, etc.) that can be displayed on the display 106 of the client computing device 102 by the application executing thereon.
Pursuant to an example, the application executing on the client computing device 102 may be directed to retrieve the content 111 for display on the display 106 of the client computing device 102, resulting in presentment of a page on the display 106. The page can include an advertisement position (or multiple advertisement positions), wherein when the page is displayed on the display 106 of the client computing device 102, the advertisement position on the page can be populated by an advertisement. Exemplary advertisements that can be included in the advertisement position include banner advertisements, rectangular units, or the like.
The system 100 additionally includes an ad server 112 that is in communication with the client computing device 102 and/or the web server 110 by way of the network 108. Generally, the owner of the content 111 hosted at the web server 110 enters into a contractual agreement with an advertisement exchange that maintains the ad server 112, where the advertisement exchange is configured to match advertisement positions on pages of the owner of the content 111 with advertisers that wish to present advertisements in the advertisement positions. The advertisement exchange thus acts as a broker between the owner of the content 111 and advertisers. The function of the ad server 112, then, is to sell the advertisement position on the page displayed on the display 106 of the client computing device 102 to an advertiser, thereby providing a source of revenue for the owner of the content 111 hosted on the web server 110. To that end, responsive to the application executing on the client computing device 102 requesting the content 111 from the web server 110, the ad server 112 receives an indication that 1) the page is to be displayed on the display 106 of the client computing device 102; and 2) that the page includes an advertisement position. In an exemplary embodiment, the web server 112 receives a request for the content 111 from the application on the client computing device 102, and transmits a redirect to the client computing device 102 responsive to receiving the request. The redirect points to the ad server 112, such that the application on the client computing device is caused to transmit the indication to the ad server 112, wherein the indication can include data that is indicative of the content 111 to be included on the page, data that identifies a domain of the page, data that identifies browsing patterns of the user of the client computing device (e.g., a cookie), etc.
A receiver component 114 of the ad server 112 receives such indication. While the indication has been described as being received from the client computing device 102, it is to be understood that the indication can be received from another computing device, such as the web server 110. The ad server 112 further includes an auction executor component 116 that, responsive to the receiver component 114 receiving the indication mentioned above, conducts an auction for the advertisement position on the page. In conducting the auction, the auction executor component 116 solicits bids from a plurality of prospective bidders. In an exemplary embodiment, advertisers can define bidding criteria and expose such a bidding criteria to the ad server 112. When data in the indication noted above meets such criteria for a particular advertiser, the advertiser can set forth a bid for the advertisement position(s) on the page. Exemplary criteria set forth by advertiser can include, but is not limited to, content of the page (e.g., the advertiser may sell goods or services related to the content of the page), demographic information about the user (e.g., the advertiser may wish to advertise two people having a particular gender and age combination), browsing history of the user 104 (e.g., the advertiser may wish to advertise when the user 104 recently viewed content related to a good or service being sold by the advertiser), or the like.
Therefore, responsive to the receiver component 114 receiving the indication that the page is to be displayed on the display 106 of the client computing device 102, and optionally other information about the user 104 and/or browsing history of the user 104, the auction executor component 116 can solicit bids from advertisers based upon the indication. As shown in
In contrast to conventional approaches, the auction executor component 116 can also receive a bid for the advertisement position from a user bidding agent (user agent) 122 that is configured to set forth bids on behalf of the user 104. Accordingly, when the receiver compound 114 receives the indication that the page is to be displayed on the display 106 of the client computing device 102, the auction executor component 116 can receive a plurality of bids having a respective plurality of bid values for the advertisement position on the page, wherein one of such bids is set forth by the user agent 122 on behalf of the user 104 (who will be viewing the page on the display 106).
Responsive to receiving the plurality of bids from the ad agents 118-120 and the user agent 122, the auction executor component 116 identifies a winner of the auction for the advertisement position based upon the respective values of the received bids (e.g., the winner is the bidder who submitted the bid with the highest bid value). When the user 104 wins the auction for the advertisement position (e.g., the bid value set forth by the user agent 122 was the highest bid value), content approved by the user 104 is displayed in the advertisement position on the page. For example, when the user 104 wins the auction for the advertisement position on the page, the ad server 112 can transmit a redirect to the client computing device 102, wherein the redirect directs the application that renders the page to retrieve content approved by the user 104 for inclusion in the advertisement position on the page. In an example, for pages having a dynamic layout, the user 104 may indicate that a one by one pixel window is to be included in the advertisement position, thereby allowing for more content to be displayed on the page to the user 104. In another example, the user 104 may specify (e.g., by way of the user agent 122) that a photograph of a family of the user 104 is to be displayed in advertisement positions when the user 104 wins auctions for respective advertisement positions. In still yet another example, the user 104 can specify an application or content that is to populate the advertisement position. For instance, the user 104 may indicate that current weather conditions or stock market prices retrieved from those types of applications be shown in the advertisement position.
While not shown, it is to be understood that the user 104 has an account that includes units of value (e.g., money). When the user 104 wins the auction for the advertisement position (e.g., the bid submitted by the user agent 112 has the highest bid value from amongst bid values of bids submitted by all bidders), the ad server 112 can be configured to assess a charge to the account of the user 104. The charge assessed to the account of the user can be based upon at least one other bid submitted by one of the ad agents 118-120. For instance, the ad server 112 may employ a second-price auction mechanism to determine a charge to assess to the account of the user 104 (e.g., the account of the user 104 is charged based upon the second-highest bid value).
When an advertiser represented by one of the advertisement agents 118-120 wins the auction, the ad server 112 causes an advertisement of the advertiser to be presented in the page on the display 106 of the client computing device 102. That is, the redirect transmitted by the ad server 112 to the client computing device 102 directs the application executing on the client computing device 102 to retrieve the advertisement and render the advertisement on the page. When the advertiser wins the auction, in an exemplary embodiment, the auction executor component 116 can assess a charge to the advertiser based upon the bid value of the bid set forth by the user agent 122 on behalf of the user 104.
There are various advantages associated with the “bid to block” approach described above, where the user agent 122 sets forth bids for advertisement positions on behalf of the user. For example, auctions for advertisement positions to be presented on respective pages are typically won by bids with relatively small bid values (often less than 1/10 of one cent). Accordingly, from the perspective of the user 104, the user 104 can set aside a relatively small amount of money to effectively prevent a relatively large number of advertisements from being presented to the user 104, thereby improving satisfaction of the user 104 with respect to content presented to the user 104. Moreover, when the user 104 is out-bid, advertisements displayed to the user 104 are likely to be better targeted to interests of the user 104 and from “higher” quality advertisers, which can further improve user experience. With respect to the owner of the content 111 hosted at the web server 110, such owner retains, and most likely increases, the revenue generated based upon the content 111. Increased revenue is acquired due to the auction including another participant. This is in contrast to conventional ad blockers, which act to prevent the owner of the content 111 hosted at the web server 110 from generating ad-based revenue. The ad exchange is likewise benefited, as ad exchanges are typically compensated based upon some percentage of the charge assessed to the winner of the auction. Introducing another bidder to auctions for advertisement positions thus increases revenue of the ad exchange.
With reference now to
With reference to
Now referring to
Now referring to
Now referring to
Now turning to
Now referring to
The user agent constructor component 802 can cause a GUI to be presented on the display 106 of the client computing device 102 to the user 104, wherein the GUI is configured to receive information from the user 104 pertaining to prevention of display of advertisements. For example, the user agent constructor component 802 can include a budget receiver component 808 that receives a budget specified by the user 104 with respect to bids to be submitted on behalf of the user 104. For instance, the budget receiver component 808 can receive an indication of a monetary value and some period of time over which the monetary value can be used to prevent advertisements from being presented to the user 104 (e.g., $20 for one year, $3 per month, etc.). Accordingly, when created, the user agent 122 is linked with an account of the user 104.
The user agent constructor component 802 can further include a preference receiver component 810 that can receive an indication of preferences of the user 104 with respect to advertisements desirably prevented from being displayed on the display 106 of the client computing device 102. For example, the user 104 can specify one or more categories, where the user 104 wishes for the user agent 122 to set forth bids for advertisement positions when the user 104 is viewing a page of one of the specified categories. Exemplary categories include social networking websites, news websites, e-mail, blog websites, weather websites or the like. More granularly, the preference receiver compound 810 can receive identifications of particular domains, categories, or specific web pages, wherein the user 104 wishes that the user agent 122 set forth bids on behalf of the user 104 for advertisement positions when specific web pages, web pages belonging to the particular domains, and/or web pages belonging to particular categories are to be displayed on the display 106 of the client computing device 102.
The user agent constructor component 802 can also include an agent programmer component 812 that programs the user agent 122 based upon, for example, the domain coverage of the DSP 806, the budget information of the user 104 received by the budget receiver component 808, any user preferences received by the preference receiver component 810, and known bidding trends of other advertisers. In an example, the resultant user agent 122 can bid “intelligently” by considering varying factors when determining which auctions to participate in, when determining values of bids, etc., wherein exemplary factors include remaining money in the budget, remaining time left in the budget period, browsing history of the user 104, preferences specified by the user 104, etc. In other examples, the user 104 may fix the behavior of the user agent 122 in certain circumstances, by causing the user agent 122 to submit particular bid amounts for all pages, for pages identified by the user 104, etc. The user agent 122 can be associated with the account of the user 104 in the DSP 806, such that when bids are solicited by an advertisement exchange, the DSP 806 can respond with a bid set forth by the user agent 122.
With reference now to
At 912, 914, and 916, the ad server 112 transmits respective solicitations for bids to the user DSP 806, and the ad DSPs 902-904. For example, at 912-916, the ad server 112 can transmit the cookie (received from the client computing device 102 at 910) to the DSPs 806 and 902-904 (or data included in such cookie). The user DSP 806, responsive to receiving the solicitation for the bid at 912, provides the bid solicitation and data corresponding thereto to the user agent 122, which formulates a bid for the advertisement position on the page to be displayed on the display 106 of the client computing device 102. At 918, the user DSP 806 transmits the bid (with the bid value specified by the user agent 122) to the ad server 112. The DSPs 902-904 act in a similar manner, transmitting bids with respective bid values on behalf of advertisers to the ad server at 922 and 924, respectively. The ad server 812, responsive to receiving the bids at 918-922, identifies a winner of the auction based upon bid values of the bid, wherein the bidder who submitted the bid with the highest bid value is deemed by the ad server 112 as being the winner of the advertisement position. At 924, the ad server 112 transmits a redirect specified by the DSP of the auction winner to the client computing device 102. When, for example, the user 104 is the winner of the auction, the redirect specified by the user DSP 806 can direct the client computing device 102 to a one pixel image. The client computing device 102, responsive to receiving the redirect at 924, renders the page based upon the content received at 908 and the content corresponding to the redirect received at 924.
With reference now to
The GUI 1100 may also display information associated with the bid values and domain categories. For example, as shown, the information can include estimates of a percentage of advertisements that will effectively be “blocked” using the bid values for the respective domain categories. For example, given the bid value entered in the first data entry field 1110, the information can indicate that 80% of advertisements will be blocked. These estimates can be computed based upon historic bidder activity with respect to pages belonging to the domain categories. In an example, web pages belonging to the first domain category 1102 may command higher prices for advertisement positions than web pages belonging to the second domain category 1104. Other information may also be presented in the GUI 1100, such as an expected amount of total money to be spent when blocking ads over the course of some predefined time period using the bid values set forth in the respective data entry fields 1110-1118, a percentage of the budget that is expected to be spent on each category, etc. For example, when the user sets a bid value in the first data entry field 1110, the associated information can inform the user 104 of a percentage of advertisements that will be blocked when such bid value is used when bidding on advertisement positions for web pages belonging to the first domain category 1102, and can further indicate (based on user browsing history) a total amount of money that will be spent for some predefined period of time (e.g., one year). Therefore, the user 104 can set bidding policies relatively quickly and can make informed decisions when setting such bidding policies.
Now referring to
Moreover, the acts described herein may be computer-executable instructions that can be implemented by one or more processors and/or stored on a computer-readable medium or media. The computer-executable instructions can include a routine, a sub-routine, programs, a thread of execution, and/or the like. Still further, results of acts of the methodologies can be stored in a computer-readable medium, displayed on a display device, and/or the like.
Now referring to
At 1308, a real-time auction is executed for the advertisement position based upon the plurality of bids and their respective bid values. A bidder that submits the bid with the highest bid value is the winner of the real-time auction, and content identified by the winner is displayed on the page at the client computing device. The methodology for 1300 completes at 1310.
Now turning to
Now referring to
At 1506, data pertaining to the advertisements desirably blocked is received by way of the GUI. For example, the user can enter data into data entry fields, move slide bars, select checkboxes, etc. to provide such information. At 1508, feedback is presented to the user by way of the GUI to indicate estimates with respect to blocking advertisements. For example, the feedback can indicate that based upon the data received a 1506, some percentage of all advertisements that otherwise would be presented to the user will be blocked. The user can optionally modify the data received at 1506 based upon the feedback presented at 1508. At 1510, a bidding agent is constructed for the user based upon, for example, the data received at 1506, browsing history of the user, known (observed) bidding practices of advertisers, etc. The methodology 1500 completes at 1512.
Referring now to
The computing device 1600 additionally includes a data store 1608 that is accessible by the processor 1602 by way of the system bus 1606. The data store 1608 may include executable instructions, advertisements, bid values, browsing history, etc. The computing device 1600 also includes an input interface 1610 that allows external devices to communicate with the computing device 1600. For instance, the input interface 1610 may be used to receive instructions from an external computer device, from a user, etc. The computing device 1600 also includes an output interface 1612 that interfaces the computing device 1600 with one or more external devices. For example, the computing device 1600 may display text, images, etc. by way of the output interface 1612.
It is contemplated that the external devices that communicate with the computing device 1600 via the input interface 1610 and the output interface 1612 can be included in an environment that provides substantially any type of user interface with which a user can interact. Examples of user interface types include graphical user interfaces, natural user interfaces, and so forth. For instance, a graphical user interface may accept input from a user employing input device(s) such as a keyboard, mouse, remote control, or the like and provide output on an output device such as a display. Further, a natural user interface may enable a user to interact with the computing device 1600 in a manner free from constraints imposed by input device such as keyboards, mice, remote controls, and the like. Rather, a natural user interface can rely on speech recognition, touch and stylus recognition, gesture recognition both on screen and adjacent to the screen, air gestures, head and eye tracking, voice and speech, vision, touch, gestures, machine intelligence, and so forth.
Additionally, while illustrated as a single system, it is to be understood that the computing device 1600 may be a distributed system. Thus, for instance, several devices may be in communication by way of a network connection and may collectively perform tasks described as being performed by the computing device 1600.
Various functions described herein can be implemented in hardware, software, or any combination thereof. If implemented in software, the functions can be stored on or transmitted over as one or more instructions or code on a computer-readable medium. Computer-readable media includes computer-readable storage media. A computer-readable storage media can be any available storage media that can be accessed by a computer. By way of example, and not limitation, such computer-readable storage media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium that can be used to carry or store desired program code in the form of instructions or data structures and that can be accessed by a computer. Disk and disc, as used herein, include compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk, and Blu-ray disc (BD), where disks usually reproduce data magnetically and discs usually reproduce data optically with lasers. Further, a propagated signal is not included within the scope of computer-readable storage media. Computer-readable media also includes communication media including any medium that facilitates transfer of a computer program from one place to another. A connection, for instance, can be a communication medium. For example, if the software is transmitted from a website, server, or other remote source using a coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio and microwave are included in the definition of communication medium. Combinations of the above should also be included within the scope of computer-readable media.
Alternatively, or in addition, the functionally described herein can be performed, at least in part, by one or more hardware logic components. For example, and without limitation, illustrative types of hardware logic components that can be used include Field-programmable Gate Arrays (FPGAs), Program-specific Integrated Circuits (ASICs), Program-specific Standard Products (ASSPs), System-on-a-chip systems (SOCs), Complex Programmable Logic Devices (CPLDs), etc.
What has been described above includes examples of one or more embodiments. It is, of course, not possible to describe every conceivable modification and alteration of the above devices or methodologies for purposes of describing the aforementioned aspects, but one of ordinary skill in the art can recognize that many further modifications and permutations of various aspects are possible. Accordingly, the described aspects are intended to embrace all such alterations, modifications, and variations that fall within the spirit and scope of the appended claims. Furthermore, to the extent that the term “includes” is used in either the details description or the claims, such term is intended to be inclusive in a manner similar to the term “comprising” as “comprising” is interpreted when employed as a transitional word in a claim.