TECHNICAL FIELDThe present disclosure relates generally to loyalty systems, and more particularly to using an identifier on a user payment instrument to identify a user loyalty account.
BACKGROUNDIn conventional merchant-consumer relationships, users must maintain loyalty account identification cards to access a loyalty account. The user presents a loyalty card or other loyalty identifier to the merchant at a point of sale terminal. The merchant can access the loyalty account of the user and apply the transaction details to the loyalty account. For example, the merchant system can record the value of the transaction and apply the appropriate number of reward points to the loyalty account. In another example, the merchant system can identify a particular product and note that the product has been purchased, as in a “buy 4, get 1 free” promotion. In another example, the loyalty account can register a visit of the user, such as at a fitness club or a religious organization. Any other loyalty account can utilize a loyalty card or other identifier.
The different merchants frequented by a user may each require a different loyalty account identification card. Thus, a user may be required to maintain 10 or 20 different cards to obtain loyalty reward points at each of the many associated merchants. A loyalty account user in conventional loyalty programs is unable to use a payment instrument card or user device to allow the merchant to access one or more of the multiple loyalty accounts of the user.
SUMMARYOne aspect of the example embodiments described herein provides a computer-implemented method to use identifiers on user payment instruments to identify user loyalty accounts. A payment system employs a server configured to store, using one or more computing devices, a loyalty account list associated with a user, the loyalty account list comprising one or more user loyalty accounts; associate an identifier with the loyalty account list; receive information identifying a user loyalty account associated with a merchant, the information comprising an account number for the user loyalty account and an identity of the merchant; associate the user loyalty account with the loyalty account list; receive a request for information identifying a user loyalty account associated with a merchant, the request comprising the identifier received by the merchant from a user payment instrument and an identity of the merchant; determine the user loyalty account associated with the merchant based at least in part on the identifier received by the merchant from the user payment instrument and the identity of the merchant; and provide the information identifying a user loyalty account associated with a merchant.
Another aspect of the example embodiments described herein provides a payment instrument, comprising a rigid structure and a machine-readable portion affixed to the rigid structure, the machine-readable portion comprising payment information for a payment account and a loyalty account list identifier having associated therewith in a computing system a plurality of loyalty accounts that are each associated with a respective one of a plurality of merchants.
These and other aspects, objects, features and advantages of the example embodiments will become apparent to those having ordinary skill in the art upon consideration of the following detailed description of illustrated example embodiments, which include the best mode of carrying out the invention as presently presented.
BRIEF DESCRIPTION OF THE DRAWINGSFIG. 1 is a block diagram depicting a system for using an identifier on a user payment instrument to identify a user loyalty account, in accordance with certain example embodiments.
FIG. 2 is a block flow diagram depicting a method to configure a loyalty account list on a loyalty system, in accordance with certain example embodiments.
FIG. 3 is a block flow diagram depicting a method for using an identifier on a user payment instrument to identify a user loyalty account, in accordance with certain example embodiments.
FIG. 4 is a block flow diagram depicting a computing machine and a module, in accordance with certain example embodiments.
DETAILED DESCRIPTION OF THE EXAMPLE EMBODIMENTSOverviewIn an example embodiment, a payment instrument contains an identifier of a user loyalty account list on a loyalty system. The payment instrument can be a credit card, debit card, proxy card, stored value card, peer-to-peer payment card, or any suitable physical card or payment instrument. Additionally or alternatively, the payment instrument can be a digital wallet or other payment instrument on a user computing device such as a mobile phone. Additionally or alternatively, the payment instrument can be any other type of wireless payment instrument, such as an RFID device. Additionally or alternatively, the payment instrument can be a digital wallet or other payment instrument on a user computing device such as a desktop computer for conducting online transactions.
The identifier can be an identification number generated by the loyalty system or the user, or any other alpha-numeric code. The identifier can alternatively be embodied as a digital wallet identification. That is, the identifier can be a code that is associated with a user digital wallet account. Alternatively, the identifier can be any other number or word associated with the user, such as a driver's license number, or a randomly generated number or word. The user may have the option of selecting a desired identifier and may control information in the identifier that may be provided to a merchant.
The identifier can be embodied as a bar code that is printed or otherwise affixed to a payment instrument. For example, a payment instrument, such as a credit card, can have a bar code, QR code, or other identifier disposed thereon and capable of being scanned or otherwise read by a point of sale (“POS”) terminal or other scanner. In certain embodiments, this identifier can be printed directly on the payment instrument or attached to the payment instrument using an adhesive.
Additionally or alternatively, the identifier can be encoded on the magnetic stripe on a payment card. For example, a data field on the magnetic stripe can contain the identifier and be read by the POS terminal when the payment card is swiped to provide the payment information from the payment card and the identifier to the POS terminal.
Additionally or alternatively, the identifier can be encoded on the secure element of a user computing device, such as a smartphone. The identifier can be transmitted as part of the information transmitted when the user “taps” or otherwise initiates a purchase transaction with the user computing device. The identifier can be transmitted as part of the payment information transmitted by the user computing device or as a separate transmission at or near the time of the transaction.
Additionally or alternatively, the identifier can be encoded into an RFID payment device or other payment instrument that can be swiped, tapped, or otherwise read at a POS terminal. Any other suitable manner of transmitting the identifier to the merchant can be employed. In certain embodiments, the RFID payment device can comprise payment information and the identifier that are communicated to the POS terminal when paying for a transaction. In certain other embodiments, an RFID label comprising the identifier can be affixed to an RFID payment device or other payment instrument via an adhesive, such as a payment card. In this case, the payment information and the identifier can be communicated to the POS terminal separately, although either substantially simultaneously or sequentially.
After receiving the identifier from the user, the merchant system recognizes the loyalty account list identifier and the loyalty system that contains the loyalty account list of the user. The merchant system queries the loyalty system for the user loyalty account that is associated with the merchant. The merchant system and the loyalty system can communicate via the Internet over the network, via email, via text, or any suitable communication technology. Additionally or alternatively, the identifier or other associated data can include instructions for locating the loyalty system and using the loyalty account list to identify a user loyalty account.
The loyalty system receives the request from the merchant system and accesses the loyalty account list associated with the user identifier. The loyalty system identifies from the user's loyalty account list the loyalty account of the user that is associated with the merchant system. The loyalty system provides the identified loyalty account number and any suitable details of the user loyalty account to the merchant system. Alternatively, the merchant system can access the loyalty list and select the appropriate loyalty account from the loyalty list.
The merchant system can use the loyalty account details of the user to access the loyalty account of the user on the merchant system. The merchant system can maintain the user loyalty account on a server at the merchant system location, on a remote server, on the POS terminal, or in any other suitable location. The merchant system can update the user loyalty account with the details of the current transaction.
Example System ArchitecturesTurning now to the drawings, in which like numerals represent like (but not necessarily identical) elements throughout the figures, example embodiments are described in detail.
FIG. 1 is a block diagram depicting a system for using an identifier on a user payment instrument to identify a user loyalty account, in accordance with certain example embodiments. As depicted inFIG. 1, thesystem100 includesnetwork devices110,120,130, and140 that are configured to communicate with one another via one ormore networks105.
Eachnetwork105 includes a wired or wireless telecommunication means by which network devices (includingdevices110,120,130, and140) can exchange data. For example, eachnetwork105 can include a local area network (“LAN”), a wide area network (“WAN”), an intranet, an Internet, a mobile telephone network, or any combination thereof. Throughout the discussion of example embodiments, it should be understood that the terms “data” and “information” are used interchangeably herein to refer to text, images, audio, video, or any other form of information that can exist in a computer-based environment.
Eachnetwork device110,120,130, and140 includes a device having a communication module capable of transmitting and receiving data over thenetwork105. For example, eachnetwork device110,120,130, and140 can include a server, desktop computer, laptop computer, tablet computer, a television with one or more processors embedded therein and/or coupled thereto, smart phone, handheld computer, personal digital assistant (“PDA”), or any other wired or wireless, processor-driven device. In the example embodiment depicted inFIG. 1, thenetwork devices110,120,130, and140 are operated by end-users or consumers, payment processing system operators, merchant operators, and loyalty system operators, respectively.
Theuser101 can use thecommunication application112, such as a web browser application or a stand-alone application, to view, download, upload, or otherwise access documents or web pages via a distributednetwork105. Thenetwork105 includes a wired or wireless telecommunication system or device by which network devices (includingdevices110,120,130, and140) can exchange data. For example, thenetwork105 can include a local area network (“LAN”), a wide area network (“WAN”), an intranet, an Internet, storage area network (SAN), personal area network (PAN), a metropolitan area network (MAN), a wireless local area network (WLAN), a virtual private network (VPN), a cellular or other mobile communication network, Bluetooth, NFC, or any combination thereof or any other appropriate architecture or system that facilitates the communication of signals, data, and/or messages.
Thecommunication application112 can interact with web servers or other computing devices connected to thenetwork105, including the point ofsale terminal134 of themerchant system130, themerchant server135 of themerchant system130, and theweb server141 of theloyalty system140.
The user network device110 may include a digitalwallet application module111. The digitalwallet application module111 may encompass any application, hardware, software, or process the user device110 may employ to assist theuser101 in completing a purchase. The digitalwallet application module111 can interact with thecommunication application112 or can be embodied as a companion application of thecommunication application112. As a companion application, the digitalwallet application module111 executes within thecommunication application112. That is, the digitalwallet application module111 may be an application program embedded in thecommunication application112.
The user device110 also includes adata storage unit113 accessible by the digitalwallet application module111 and thecommunication application112. The exampledata storage unit113 can include one or more tangible computer-readable storage devices. Thedata storage unit113 can be stored on the user device110 or can be logically coupled to the user device110. For example, thedata storage unit113 can include on-board flash memory and/or one or more removable memory cards or removable flash memory.
Theloyalty system140 includes adata storage unit147 accessible by theweb server141. The exampledata storage unit147 can include one or more tangible computer-readable storage devices.
Theuser101 can use aweb server141 on theloyalty system140 to view, register, download, upload, or otherwise access theloyalty system140 via a website (not illustrated) and acommunication network105. Theuser101 associates one or more registered loyalty accounts with aloyalty account list142 of theuser101. Theloyalty system140 can maintain theaccount list142 and provide loyalty account information from theaccount list142 tomerchant systems130 and authorized requesters. Eachloyalty account132 can be an account associated with a reward program, a frequent shopper program, a sales promotion program, or any suitable loyalty program that provides an incentive to auser101 to patronize amerchant system130. The user's101 registration information andaccount list142 is saved in the loyalty system's140data storage unit147 and is accessible the byweb server141.
Theuser101 can utilize apayment instrument card102 to conduct a financial transaction. Thepayment instrument card102 can be traditional credit card or other payment card. The traditionalpayment instrument card102 can be embodied as a plastic card with a magnetic stripe containing the account information. Thepayment instrument card102 can be embodied as any other type of card that can be used to initiate and conduct a transaction. For example, thepayment instrument card102 can be a card or other device with an RFID chip for conducting transactions, a card with a barcode or other machine-readable code, or any suitable type of physicalpayment instrument card102.
Themerchant system130 may use aweb server135 to view, download, upload, create offers, sell products online, provide rewards, monitor loyalty accounts, or otherwise access theloyalty system140 via awebsite136 and acommunication network105. Themerchant system130 represents an entity that offers products for theuser101 to purchase or use. Themerchant system130 includes a point of sale (“POS”)terminal134. ThePOS terminal134 may be operated by a salesperson that enters the purchase data into thePOS terminal134 to complete the purchase transaction. Themerchant system130 may be a physical location or an online merchant.
Themerchant system130 can maintain theuser loyalty account132 on themerchant server135, on thePOS terminal134, a remote server, or a third party server. Alternatively, theloyalty account132 may be maintained by a merchant system operator, such as a written system or a “punch” system.
Theuser101 may request a purchase from themerchant system130. In an example embodiment, the purchase is initiated by a wireless “tap” of the mobile device110 with thePOS terminal134. In an alternative example embodiment, the purchase is initiated when theuser101 enters an account identification number at thePOS terminal134 or in the mobile device110. In another alternative example embodiment, the purchase is initiated online with themerchant server135. The purchase may be initiated via themerchant website136. In yet another alternative example embodiment, the purchase is initiated by amagnetic stripe card102 or other physical card. In yet another alternative example embodiment, the purchase is initiated by use of a permanent/temporary virtual/physical token, QR code, bar code, or other suitable machine-readable medium captured by a terminal reader orPOS terminal134. The merchant'sPOS terminal134 interacts with an acquirer (for example Chase PaymentTech, or other third party payment processing companies), the card network (for example VISA, MasterCard, American Express, Discover or other card processing networks), thepayment processing system120, and the issuer (for example Citibank, CapitalOne, Bank of America, and other financial institutions to authorize payment).
Thepayment processing system120 is used by thepayment instrument105 of theuser101 to conduct a financial transaction. Theuser101 can use aweb server121 on thepayment processing system120 to view, register, download, upload, or otherwise access thepayment processing system120 via a website (not illustrated) and a communication network105). Theuser101 can configure one or more registered financial card accounts, including bank account debit cards, credit cards, gift cards, loyalty cards, coupons, offers, prepaid offers, store rewards cards, or other type of financial account that can be used to make a purchase or redeem value-added services with a payment account of theuser101. Thepayment processing system120 also may function as the issuer for the associated financial account. The user's101 registration information is saved in the payment processing system's120 data storage unit and is accessible the byweb server121.
Example ProcessesThe components of theexample operating environment100 are described hereinafter with reference to the example methods illustrated inFIG. 2.
FIG. 2 is a block flow diagram depicting amethod200 to configure aloyalty account list142 on aloyalty system140, in accordance with certain example embodiments.
With reference toFIGS. 1 and 2, inblock205, amerchant system130 registers with aloyalty system140. Themerchant system130 can allowusers101 to maintain loyalty account identification on theloyalty system140 instead of, or in addition to, a physical loyalty card or other loyalty program identification device. Theloyalty system140 may be a function of a payment processing system. Alternatively, theloyalty system140 may be a function of the payment processing system, themerchant system130, or any other suitable system. Alternatively, theloyalty system140 may be an independent system that is not affiliated with a payment processing system, a payment instrument system, or any other system in the transaction processing stream.
In an alternative embodiment, themerchant system130 is not registered with theloyalty system140. Themerchant system130 can be given instructions by the loyalty system identifier to access theloyalty account list142 on theloyalty system140. For example, the digitalwallet application module111 on a user device110 can transmit instructions to amerchant system120 for accessing theloyalty account list142.
Inblock210, theuser101 establishes aloyalty account list142 on aloyalty system140. Theuser101 can access theloyalty system140 on a website on the loyaltysystem web server141 and configure anaccount list142. Theuser101 also may create or update auser loyalty account132 on a loyalty application (not shown) on the user device110 or on a digitalwallet application module111 on the user device110.
Inblock215, theuser101 and/or theloyalty system140 can associate an identifier with theloyalty account list142. The identifier can be an identification number generated by theloyalty system140 or theuser101, or any other alpha-numeric code. The identifier can alternatively be embodied as an identification number stored on the digitalwallet application module111 and other digital wallet account applications. That is, the identifier can be a code, username, phone number, or other suitable identifier that is associated with a user digital wallet account. The ID can be the identifier that thepayment processing system120 uses to identify the digital wallet account. Alternatively, the identifier can be any other number associated with theuser101, such as a driver's license number, or a randomly generated number or word.
Inblock220, theuser101 establishes auser loyalty account132 on themerchant system130. Theuser101 can register for auser loyalty account132 for themerchant system130 by completing an application at the location of themerchant system130, at an online location of themerchant system130, on a loyalty application on a user device110, at any other suitable location, or via any suitable method. Theuser101 can be registered automatically by themerchant system130 by purchasing a product, requesting information from themerchant system130, or by performing any qualifying action. Theuser101 can be registered automatically by themerchant system130 without performing any action. Any other suitable method for registering for auser loyalty account132 can be employed.
Themerchant system130 can issue a physical loyalty card, assign a loyalty account number, provide a loyalty application, or provide any suitableuser loyalty account132 representation.
Inblock225, theuser loyalty account132 is associated with theloyalty account list142 of theuser101 on theloyalty system140. In the example embodiment, theuser101 can add theuser loyalty account132 to theloyalty account list142 and discard any loyalty card or other identifier provided by themerchant system130.
Theuser loyalty account132 can be added to theloyalty account list142 via a website on the loyaltysystem web server141, via a loyalty application (not shown) on the user device110 or on a digitalwallet application module111 on the user device110, or via any other suitable user interface system. Theuser101 can add accounts, delete accounts, or in any suitable manner modify accounts. When adding auser loyalty account132, theuser101 can provide amerchant system130 name, location, contact information, or any othersuitable merchant system130 data. Theuser101 can provide the loyalty account name, number, or other identifying information. The user110 can provide any suitable rules or other data required for accumulating, redeeming, maintaining, or otherwise utilizing loyalty points are rewards. Any other suitable information can by added to theloyalty account list142.
Theuser101 can add more loyalty accounts to theloyalty account list142 at the time of configuring theaccount list142 or at any time in the future. Theuser101 may maintain the list with any number of loyalty accounts132 associated with any number ofmerchant systems130 that theloyalty system140 will allow. The number of accounts may be limited by the storage capacity of theserver141 or any other practical limits determined by theloyalty system140.
Fromblock225, themethod200 ends.
FIG. 3 is a block flow diagram depicting amethod300 for using an identifier on a user payment instrument to identify auser loyalty account132, in accordance with certain example embodiments.
Inblock305, the loyalty account list identifier is provided to theuser101 and is associated with a payment instrument. For example, the identifier can be a bar code, QR code, or other identifier capable of being scanned by a point of sale (“POS”) terminal or other scanner. The identifier can be affixed to apayment instrument card102 such as a credit card or a debit card. The identifier can be a sticker affixed to the payment instrument, a decal printed on the payment instrument, or any other physical representation of the identifier affixed to the payment instrument.
The identifier can additionally or alternatively be encoded on the magnetic stripe on apayment instrument card102. For example, a data field on the magnetic stripe can contain the identifier and be read by thePOS terminal134 when thepayment instrument card102 is swiped. Additionally or alternatively, the identifier can be encoded on the secure element of a user device110 such as a smartphone. The identifier can be encoded into an RFID device or other payment instrument that can be swiped or tapped at aPOS terminal134. Any other suitable manner of transmitting the identifier to themerchant system130 can be employed.
Inblock310, auser101 initiates a purchase at a location of amerchant system130. Themerchant system130 can be at a physical merchant location or an online merchant location. Theuser101 can select one or more products for purchase and initiate a transaction with thepayment instrument card102. As previously described, the initiation can be via a physical payment instrument, contactless transaction with a user device110, or an online transaction.
Inblock315, the identifier is provided to themerchant system130. The identifier can be transmitted as part of the information transmitted when the user “taps” or otherwise initiates a purchase transaction with the user device110. The identifier can be transmitted as part of the payment information transmitted by the user device110 or as a separate transmission at or near the time of the transaction.
An identifier affixed to a payment instrument can be recognized by a barcode reader, QR code scanner, or any other suitable hardware or software of themerchant system130. For example, a barcode can be read by the barcode scanner associated with aPOS terminal134 and transmitted to themerchant system server135 or thePOS terminal134.
An identifier encoded on a payment instrument, such as a magnetic stripepayment instrument card102 or RFID device, can be detected by thePOS terminal134. For example, if a data field on a magnetic stripepayment instrument card102 contains the identifier and any needed instructions for accessing theloyalty system140, thePOS terminal134 can recognize the identifier and instructions. Any other suitable manner of transmitting the identifier to the merchant can be employed.
Themerchant system130 can use the payment information transmitted by thepayment instrument card102, the user device110, or other device to conduct the payment transaction. For example, themerchant system130 can transmit a payment request to thepayment processing system120. Themerchant system130 and thepayment processing system120 can conduct the transaction via the card network, as a peer-to-peer transaction, or via any suitable manner. The transaction is a separate transaction from the transmitting of the identifier for theloyalty account list142. The transmission of the identifier can be conducted at substantially the same time as the payment transaction or at any later time or earlier time. Theloyalty system140 and thepayment processing system120 can be functions of the same system or separate systems. In cases where theloyalty system140 and thepayment processing system120 are part of the same system, the payment information and the loyalty account list identifier can be transmitted together.
Inblock320, themerchant system130 provides the identifier to theloyalty system140. If themerchant system130 has established rules for employing theloyalty system140, then themerchant system130 can provide the identifier to theloyalty system140 and request theuser loyalty account132 data. Themerchant system130 may have previously received instructions from theloyalty system140 for obtaininguser loyalty account132 information for auser101. For example, themerchant system130 may have previously employed theloyalty system140, may use theloyalty system140 for other transaction functions, or may for any reason have exchanged information with theloyalty system140.
Themerchant system130 and theloyalty system140 can communicate via any communication technology available such as an Internet connection over thenetwork105, via email, via text, or via any other suitable technology.
If themerchant system130 does not recognize the identifier and theloyalty system140 that is associated with the identifier, then the identifier can provide instructions for contacting theloyalty system140 and receiving instructions for accessing theloyalty account list142. For example, the identifier on a user device110 that transmits the identifier wirelessly to aPOS terminal134 can further provide instructions for themerchant system130 to communicate with theloyalty system140. The instructions can provide a website location, a set of directions, or other information that can communicate the instructions for accessing theloyalty system140.
In another example, instructions can be printed with a barcode, transmitted from an RFID device, encoded in a magnetic stripepayment instrument card102, or in any suitable manner provided to themerchant system130.
Themerchant system130 additionally can provide an identification of themerchant system130. The identification can be any data or information that allows theloyalty system140 to identify the merchant for the purposes of determining theappropriate loyalty account132 from theloyalty account list142. For example, themerchant system130 can provide a name, code, username, password, phone number, or any other identification information that will allow theloyalty system140 to select theappropriate loyalty account132.
Inblock325, theloyalty system140 accesses theloyalty account list142 associated with the identifier and identifies theuser loyalty account132 associated with themerchant system130. In an example embodiment, theloyalty system140 can identify amerchant system130 requesting the user loyalty account information and determine the appropriateuser loyalty account132 from theaccount list142. Theloyalty system140 then can provide theloyalty account132 to themerchant system130. In another example embodiment, themerchant system130 can be provided with theaccount list142 and provided an opportunity to select the appropriateuser loyalty account132 from theaccount list142. Any other manner of determining the appropriateuser loyalty account132 can be employed by theloyalty system140 and/or themerchant system130.
Inblock330, theloyalty system140 transmits theuser loyalty account132 information to themerchant system130. After identifying the appropriateuser loyalty account132, theloyalty system140 can provide the account number of theuser loyalty account132 and any other suitable information to themerchant system130. The information can be transmitted to themerchant system130 or themerchant system130 can be allowed to extract the user loyalty account information.
Inblock335, themerchant system130 uses the user loyalty account information to access the user loyalty account on themerchant system130. Themerchant system130 can record new transaction information in the user loyalty account.
Theuser loyalty account132 can be maintained by themerchant system130 on themerchant server135. Themerchant server135 can a remote system or theserver135 can be located at the location of themerchant system130. Additionally or alternatively, theuser loyalty account132 can be maintained by thePOS terminal134. Additionally or alternatively, thePOS terminal134 can be a function of, or otherwise associated, with themerchant server135. Theuser loyalty account132 additionally or alternatively, can be maintained by a third party or other suitable party. Additionally or alternatively, theuser loyalty account132 can be maintained in a manner other than on a server. For example, theuser loyalty account132 can be maintained by a written system at amerchant system130. The written system can be managed by an operator of themerchant system130.
The merchant system can update theuser loyalty account132 automatically or manually after accessing theuser loyalty account132. For example, if a qualifying purchase is made by theuser101, themerchant system132 can update theuser loyalty account132 by providing the appropriate number of reward points or other loyalty updates to theuser loyalty account132 on themerchant system130. In another example, an operator of themerchant system130 can input updated information into theuser loyalty account132 on themerchant system130.
From block345, themethod300 ends.
Other Example EmbodimentsFIG. 4 depicts acomputing machine2000 and amodule2050 in accordance with certain example embodiments. Thecomputing machine2000 may correspond to any of the various computers, servers, mobile devices, embedded systems, or computing systems presented herein. Themodule2050 may comprise one or more hardware or software elements configured to facilitate thecomputing machine2000 in performing the various methods and processing functions presented herein. Thecomputing machine2000 may include various internal or attached components such as aprocessor2010, system bus2020,system memory2030,storage media2040, input/output interface2060, and anetwork interface2070 for communicating with anetwork2080.
Thecomputing machine2000 may be implemented as a conventional computer system, an embedded controller, a laptop, a server, a mobile device, a smartphone, a set-top box, a kiosk, a vehicular information system, one more processors associated with a television, a customized machine, any other hardware platform, or any combination or multiplicity thereof. Thecomputing machine2000 may be a distributed system configured to function using multiple computing machines interconnected via a data network or bus system.
Theprocessor2010 may be configured to execute code or instructions to perform the operations and functionality described herein, manage request flow and address mappings, and to perform calculations and generate commands. Theprocessor2010 may be configured to monitor and control the operation of the components in thecomputing machine2000. Theprocessor2010 may be a general purpose processor, a processor core, a multiprocessor, a reconfigurable processor, a microcontroller, a digital signal processor (“DSP”), an application specific integrated circuit (“ASIC”), a graphics processing unit (“GPU”), a field programmable gate array (“FPGA”), a programmable logic device (“PLD”), a controller, a state machine, gated logic, discrete hardware components, any other processing unit, or any combination or multiplicity thereof. Theprocessor2010 may be a single processing unit, multiple processing units, a single processing core, multiple processing cores, special purpose processing cores, co-processors, or any combination thereof. According to certain embodiments, theprocessor2010 along with other components of thecomputing machine2000 may be a virtualized computing machine executing within one or more other computing machines.
Thesystem memory2030 may include non-volatile memories such as read-only memory (“ROM”), programmable read-only memory (“PROM”), erasable programmable read-only memory (“EPROM”), flash memory, or any other device capable of storing program instructions or data with or without applied power. Thesystem memory2030 may also include volatile memories such as random access memory (“RAM”), static random access memory (“SRAM”), dynamic random access memory (“DRAM”), synchronous dynamic random access memory (“SDRAM”). Other types of RAM also may be used to implement thesystem memory2030. Thesystem memory2030 may be implemented using a single memory module or multiple memory modules. While thesystem memory2030 is depicted as being part of thecomputing machine2000, one skilled in the art will recognize that thesystem memory2030 may be separate from thecomputing machine2000 without departing from the scope of the subject technology. It should also be appreciated that thesystem memory2030 may include, or operate in conjunction with, a non-volatile storage device such as thestorage media2040.
Thestorage media2040 may include a hard disk, a floppy disk, a compact disc read only memory (“CD-ROM”), a digital versatile disc (“DVD”), a Blu-ray disc, a magnetic tape, a flash memory, other non-volatile memory device, a solid sate drive (“SSD”), any magnetic storage device, any optical storage device, any electrical storage device, any semiconductor storage device, any physical-based storage device, any other data storage device, or any combination or multiplicity thereof. Thestorage media2040 may store one or more operating systems, application programs and program modules such asmodule2050, data, or any other information. Thestorage media2040 may be part of, or connected to, thecomputing machine2000. Thestorage media2040 may also be part of one or more other computing machines that are in communication with thecomputing machine2000 such as servers, database servers, cloud storage, network attached storage, and so forth.
Themodule2050 may comprise one or more hardware or software elements configured to facilitate thecomputing machine2000 with performing the various methods and processing functions presented herein. Themodule2050 may include one or more sequences of instructions stored as software or firmware in association with thesystem memory2030, thestorage media2040, or both. Thestorage media2040 may therefore represent examples of machine or computer readable media on which instructions or code may be stored for execution by theprocessor2010. Machine or computer readable media may generally refer to any medium or media used to provide instructions to theprocessor2010. Such machine or computer readable media associated with themodule2050 may comprise a computer software product. It should be appreciated that a computer software product comprising themodule2050 may also be associated with one or more processes or methods for delivering themodule2050 to thecomputing machine2000 via thenetwork2080, any signal-bearing medium, or any other communication or delivery technology. Themodule2050 may also comprise hardware circuits or information for configuring hardware circuits such as microcode or configuration information for an FPGA or other PLD.
The input/output (“I/O”)interface2060 may be configured to couple to one or more external devices, to receive data from the one or more external devices, and to send data to the one or more external devices. Such external devices along with the various internal devices may also be known as peripheral devices. The I/O interface2060 may include both electrical and physical connections for operably coupling the various peripheral devices to thecomputing machine2000 or theprocessor2010. The I/O interface2060 may be configured to communicate data, addresses, and control signals between the peripheral devices, thecomputing machine2000, or theprocessor2010. The I/O interface2060 may be configured to implement any standard interface, such as small computer system interface (“SCSI”), serial-attached SCSI (“SAS”), fiber channel, peripheral component interconnect (“PCI”), PCI express (PCIe), serial bus, parallel bus, advanced technology attached (“ATA”), serial ATA (“SATA”), universal serial bus (“USB”), Thunderbolt, FireWire, various video buses, and the like. The I/O interface2060 may be configured to implement only one interface or bus technology. Alternatively, the I/O interface2060 may be configured to implement multiple interfaces or bus technologies. The I/O interface2060 may be configured as part of, all of, or to operate in conjunction with, the system bus2020. The I/O interface2060 may include one or more buffers for buffering transmissions between one or more external devices, internal devices, thecomputing machine2000, or theprocessor2010.
The I/O interface2060 may couple thecomputing machine2000 to various input devices including mice, touch-screens, scanners, biometric readers, electronic digitizers, sensors, receivers, touchpads, trackballs, cameras, microphones, keyboards, any other pointing devices, or any combinations thereof. The I/O interface2060 may couple thecomputing machine2000 to various output devices including video displays, speakers, printers, projectors, tactile feedback devices, automation control, robotic components, actuators, motors, fans, solenoids, valves, pumps, transmitters, signal emitters, lights, and so forth.
Thecomputing machine2000 may operate in a networked environment using logical connections through thenetwork interface2070 to one or more other systems or computing machines across thenetwork2080. Thenetwork2080 may include wide area networks (WAN), local area networks (LAN), intranets, the Internet, wireless access networks, wired networks, mobile networks, telephone networks, optical networks, or combinations thereof. Thenetwork2080 may be packet switched, circuit switched, of any topology, and may use any communication protocol. Communication links within thenetwork2080 may involve various digital or an analog communication media such as fiber optic cables, free-space optics, waveguides, electrical conductors, wireless links, antennas, radio-frequency communications, and so forth.
Theprocessor2010 may be connected to the other elements of thecomputing machine2000 or the various peripherals discussed herein through the system bus2020. It should be appreciated that the system bus2020 may be within theprocessor2010, outside theprocessor2010, or both. According to some embodiments, any of theprocessor2010, the other elements of thecomputing machine2000, or the various peripherals discussed herein may be integrated into a single device such as a system on chip (“SOC”), system on package (“SOP”), or ASIC device.
In situations in which the systems discussed here collect personal information about users, or may make use of personal information, the users may be provided with a opportunity to control whether programs or features collect user information (e.g., information about a user's social network, social actions or activities, profession, a user's preferences, or a user's current location), or to control whether and/or how to receive content from the content server that may be more relevant to the user. In addition, certain data may be treated in one or more ways before it is stored or used, so that personally identifiable information is removed. For example, a user's identity may be treated so that no personally identifiable information can be determined for the user, or a user's geographic location may be generalized where location information is obtained (such as to a city, ZIP code, or state level), so that a particular location of a user cannot be determined. Thus, the user may have control over how information is collected about the user and used by a content server.
Embodiments may comprise a computer program that embodies the functions described and illustrated herein, wherein the computer program is implemented in a computer system that comprises instructions stored in a machine-readable medium and a processor that executes the instructions. However, it should be apparent that there could be many different ways of implementing embodiments in computer programming, and the embodiments should not be construed as limited to any one set of computer program instructions. Further, a skilled programmer would be able to write such a computer program to implement an embodiment of the disclosed embodiments based on the appended flow charts and associated description in the application text. Therefore, disclosure of a particular set of program code instructions is not considered necessary for an adequate understanding of how to make and use embodiments. Further, those skilled in the art will appreciate that one or more aspects of embodiments described herein may be performed by hardware, software, or a combination thereof, as may be embodied in one or more computing systems. Moreover, any reference to an act being performed by a computer should not be construed as being performed by a single computer as more than one computer may perform the act.
The example embodiments described herein can be used with computer hardware and software that perform the methods and processing functions described previously. The systems, methods, and procedures described herein can be embodied in a programmable computer, computer-executable software, or digital circuitry. The software can be stored on computer-readable media. For example, computer-readable media can include a floppy disk, RAM, ROM, hard disk, removable media, flash memory, memory stick, optical media, magneto-optical media, CD-ROM, etc. Digital circuitry can include integrated circuits, gate arrays, building block logic, field programmable gate arrays (FPGA), etc.
The example systems, methods, and acts described in the embodiments presented previously are illustrative, and, in alternative embodiments, certain acts can be performed in a different order, in parallel with one another, omitted entirely, and/or combined between different example embodiments, and/or certain additional acts can be performed, without departing from the scope and spirit of various embodiments. Accordingly, such alternative embodiments are included in the inventions described herein.
Although specific embodiments have been described above in detail, the description is merely for purposes of illustration. It should be appreciated, therefore, that many aspects described above are not intended as required or essential elements unless explicitly stated otherwise. Modifications of, and equivalent components or acts corresponding to, the disclosed aspects of the example embodiments, in addition to those described above, can be made by a person of ordinary skill in the art, having the benefit of the present disclosure, without departing from the spirit and scope of embodiments defined in the following claims, the scope of which is to be accorded the broadest interpretation so as to encompass such modifications and equivalent structures.