text:
|Publication number
|Publication type
|Application number
|PCT number
|Publication date
|Apr 10, 2012
|Filing date
|Dec 12, 2003
|Priority date
|Dec 19, 2002
|Fee status
|Also published as
|Publication number
|Thomas Ralph Edwards Greenwell, Stephen Timothy Spence, Mark Colin Stalker
|Original Assignee
|Critical Path Data Centre Limited
|Export Citation
|BiBTeX, EndNote, RefMan
|Patent Citations (21), Referenced by (2), Classifications (21), Legal Events (6)
|External Links: USPTO, USPTO Assignment, Espacenet
This application claims the priority of PCT Application No. PCT/GB2003/005598 filed on Dec. 19, 2003 and GB Patent Application No. 0229572.3 filed on Dec. 19, 2002 the entire contents of which are hereby incorporated in total by reference.
1. Field of the Invention
This invention relates to a method of automatically replicating data objects between a mobile device and a server; data replication is needed, for example, to back up data from the mobile device to the server and to ensure that the mobile device has the most up to date data held on the server. The mobile device and the server are connected over a wireless network, which may comprise a wide area network such as a cellular telephony network. The wireless network may also comprise a short range network, such as an 802.11 network, or a combination of short range, wide area and wire based connections.
2. Description of the Prior Art
Data replication between mobile devices (such as mobile telephones, smart phones, communicators and other kinds of wireless information device) and servers has attracted considerable attention. Reference may be made to PCT/GB2002/005308 and PCT/GB2002/005311 (to the present applicant), the contents of which are incorporated by reference.
One characteristic feature of wireless networks is the need to use bandwidth efficiently; this applies especially to wide area networks such as cellular networks, but also applies to other kinds of wireless networks, such as those based on 802.11 systems. The present invention is directed to increasing the efficiency of use of all such networks.
Cellular telephony network operators currently push data to mobile devices to update those devices with data, such as menus of the names of games that can be download to the mobile telephone. A simple example of efficient bandwidth useage is the practice of downloading these menus of games over night to make use of the available bandwidth.
To date, designers of data replication systems (as opposed to simple one-way push updating systems) have not been preoccupied with making efficient use of network bandwidth. This bias arises because the assumption behind most data replication systems is the need for immediate replication, irrespective of the impact on bandwidth.
In a first aspect, there is a method of automatically replicating data objects between a mobile device and a server, connected together via a wireless network, in which the timing of data replication across the network is determined by a network operator applying parameters that make efficient usage of network bandwidth.
Hence, the present invention is based on the insight that the assumption that data replication must be immediate to be of value is flawed. Instead, it is useful to be able to provide network operators (such as those providing cellular services, or 802.11 services) with the ability to control how data replication services use available bandwidth in order to make the most efficient usage of that bandwidth.
The parameters applied to a given object may be both time dependent and also relate to how urgently that object needs to be replicated. For example, a change log may list all objects at the device and/or server to be replicated and the parameters then comprise a weight associated with each object that defines how urgently that object needs to be replicated. The parameters may further comprise a threshold that is a function of time, with the weight of each object being locally compared to the threshold at a given time and the outcome of the comparison determining whether the object is sent for replication or not at that time. This combination of weight and threshold gives a flexible way to control the timing of data replication and hence make the best use of bandwidth.
Further aspects and details are defined in the appended Claims.
The present invention will be described with reference to the accompanying drawings, which show graphs of how the parameters used to control data replication can vary over time.
The present invention is implemented by Cognima Ltd (London, United Kingdom) to allow mobile network operators to control the timing of data replication in the Cognima Replicate™ system. The present document assumes a working familiarity of the Cognima Replicate™ system, which is described in more detail in Appendix 1
It should be noted that the term Quality of Service, or QoS, is used throughout the present document, but unless stated in context this is not related to the technical meaning of QoS in the context of RFC2475. This IETF document defines QoS very precisely in terms of a number of metrics in the IP layer, whereas the first implementation of Cognima QoS will be applied at the application layer and will not rely upon service-specific configuration of network server parameters.
1. Scheduled Replication of Data
This invention defines a way in which data transmission across a packet-switched wireless network can be intelligently scheduled, to improve efficiency of network bandwidth usage without seriously impairing the user experience.
1.1 Cognima Replicate
The Cognima Replicate system is designed to replicate user data between a mobile client and a network-based server, with zero user intervention. Both the client and the server recognise when there have been changes to the data which require replication to take place, ensuring the integrity of the distributed object database that is shared by the client and the server. This approach creates an experience for end users of the system, of always having instant access to all their data, without the any need for manual synchronisation. An implication of making replication invisible to the user is that there need be no indication, and no user control, of when the replication is taking place. The client and server devices are in control of when replication should take place, with timing decisions based on dynamic parameters that can be set by the mobile network operator.
1.2 Scheduled Replication and Network Operators
Network operators wish to smooth the peaks and troughs of the daily network usage cycle in order to make most efficient use of the bandwidth. This means moving data traffic away from peak times, and where possible moving it into troughs in the cycle. Operators will value the ability to tweak settings that affect when replication occurs, and thereby refine network efficiency.
Operators will also wish to offer services of different QoS and cost levels (usually expressed as a choice of service level bundles with their existing data tariff) to address the varying demands of customers. This is enabled by providing the network operators with the opportunity to set dynamically, the parameters which define replication QoS from the users' perspective.
Most importantly the services that Operators offer should provide a compelling user experience to their customers.
1.3 Scheduled Replication and User Expectations
The Cognima technology presents new mental models for users. Replication scheduling models, and their corresponding Service plans, must be simple and consistent to aid user acceptance. Users should be shielded from the details of replication as much as possible. Data should replicate according to users' expectation.
Users want to be able to choose one QoS level from a range of options; otherwise they feel that they are either paying too much or not getting good service. The QoS options to the user should be simple. Users will find difficulty in weighing up the relative benefits of a plan that offers Contacts in 2 minutes, Photos in 3 hours, and Banking overnight against one offering Contacts immediately, Photos overnight, and Banking in 30 minutes etc, however much these options might fit the Network Operators' demographic research.
Users will feel more comfortable choosing a general standard of service—e.g. Basic—and upgrading perhaps one particular service. Users will appreciate the opportunity to temporarily upgrade the replication lag, by service or individual object for a cost. For example, users may want a premium "Send this photo now" option, which would override the default priority with which all other photographs are replicated to the Cognima server.
1.4 Scheduled Replication and the Cognima Architecture
From an engineering point of view, solutions should be based on simple models rather than complex rule-sets. Rules that depend on time-outs (e.g. each object should have its own time limit that starts counting down when it enters the Change-Log) will severely affect performance. Likewise a solution requiring the CRE to poll the Change-Log every x seconds will also reduce performance.
2. QoS Implementation
2.1 The QoS Profile
We introduce the concept of a QoS Profile which determines when objects of a given type will be replicated for a given user.
The Network Operator can influence the timing at which all objects are replicated according to the peak and off-peak tariff or periods of high network traffic demand. It is possible for a Network Operator to define a timing profile for each application, against which each device reconciles the replication priorities and time limits of objects in the change-log to determine replication behaviour. The shape of this graph will be determined by a number of factors including the experience of the network operator in monitoring data traffic volumes.
The Network Operator can also influence whether other (lower-priority) objects in a change-log at the time of an open data connection should be replicated, once the connection-initiating object has been sent. It is possible to define an opportunism threshold to control this.
A different opportunism threshold should be used if the device is operating in a roamed network, as the cost to the user of initiating connections may outweigh the impact to the NetOp of sending more data at peak periods. The opportunism threshold, along with the other QoS control parameters on the client device, are communicated to the client using the replication framework and are therefore kept automatically in step between the client and the server.
In a more advanced implementation of QoS control, the network-based server will be able to determine the cell loading for a given mobile device. When the cell loading drops below a defined cell loading threshold, the server should be able to signal the client that it may start opportunistic replication. This delivers most benefit in all-IP networks where the client device has a permanently assigned IP address and can therefore be contacted instantly by the server. Otherwise the process of sending a Communications Initiation Request to the client device influences the cell loading, and adds a latency to the system that creates an opportunity for the cell loading to change before replication can start.
The Network operator can update the data traffic graph, opportunism threshold and cell loading threshold after deployment. This allows optimisation of the QoS control in the light of experience.
All objects joining the device change log are currently subject to the Pause Before Connect delay. However as a Network operator defined mechanism for defining to what extent changes are batched together, the Pause Before Connect delay will be largely superseded by QoS control.
2.2 The Service Provider Control
The Service Provider has the opportunity to determine a QoS Profile for each Cognima service. This profile contains sets of replication time limits within which Cognima objects created by that service are intended to be replicated. The actual time at which replication is attempted within the time limits is determined by a number of elements in the system including the state of the Cognima client software and the client device, and network factors such as data tariff peak/off peak times, cell loading and so on. The Service Provider can set a zero time limit—i.e. request immediate replication for objects of a given type. If replication is attempted and fails, the object remains scheduled for replication but is subject to the existing backing-off behaviour.
The QoS Profile defines the following factors as parameters determining replication timing:
And optionally . . .
The time limit for replication is assigned to an object by a QoS Profile based on its time of creation. However it is also possible to change a limit already assigned according to subsequent events such as the memory available on device changing, or if the handset roams to another network. This creates a need for occasional recalculation of the weights of the items in the changelog.
The Service Provider is able to define a shelf life for objects in the QoS Profile. If an object reaches its shelf life while it is still in the change log, the object should be deleted.
The Service Provider can define an object as over-writeable. If a new object enters the change log that replaces an earlier version still in the change-log, the earlier version is deleted. In this situation, the Service Provider can determine whether the new object should adopt the timing of the object that has been overwritten, or should enter the system with a new replication time limit. The default setting is that new objects adopt the timing characteristics of the objects they replace.
Service Providers can provide different classes of service within the Profile set. One way of dong this is by defining individual QoS Profiles for each class of service.
A QoS tariff applies to an individual Cognima service, although it may be presented to the subscriber as a bundle of services at a particular price point.
A QoS Profile can be changed by the Service Provider once it is deployed; changes to the Profile are replicated to the relevant client devices so that the understanding of each QoS profile is common between all entities in the system.
2.3 Notes on Deriving a QoS Profile.
The parameters in a network operator (or 'netop') defined profile should aim to balance:
It should be expected that users will generally need changes made on a portal to be swifter than those made on the phone—we should expect users at a PC to have their phone with them, but not vice versa. Initial replication on activation should be immediate for the best initial user experience.
The cost to the user of opening several data connections when roaming is likely to outweigh the impact to the NetOp of sending more data at peak periods.
3. Algorithmic Implementation of QoS
3.1 Introduction
In the Cognima system, QoS is implemented as an increment to the functionality of both the client and the server. In particular it requires a modification to the behaviour of the change log, and introduces a requirement to recalculate certain attributes of queued change log entries. Replication can then occur as a result of the outcome of this recalculation.
3.2 Algorithm Description
The algorithm is made up of several components. We introduce a changelog item weight. This weight indicates how urgently a changelog item needs to be sent; the heavier the weight, the more urgent the item. We introduce a changelog threshold. Any items that have a weight equal to or greater than the threshold need to be sent immediately. When a connection is made all items with weight greater than the threshold minus a delta are sent. The delta represents opportunism.
For the sake of concreteness we say that weight and threshold can vary between 0-100. The weight of an item that absolutely has to be sent right now is 100; a changelog threshold of zero indicates that any entries in the changelog can be replicated right away.
Both weight and threshold can vary over the course of a day. There will be predictable variation and also dynamic variation. Some examples will clarify this.
An item that should only go at a certain time will look like the
The example effectively shows a daily cycle split into three tariff bands, perhaps named off-peak, standard and peak, with the replication threshold set appropriately for each band. Note that there is a fourth band just after midnight, where the threshold drops to zero—this is introduced to ensure that all changelogs are emptied once per day during the quietest period. This zero threshold period could be defined once per week or at some other interval defined by the network operator, but is recommended to ensure that the defined QoS profile does not prevent some objects from being replicated at all. As for the other bands in the profile, the off-peak period extends through the late evening and night, and represents the times at which the data network can expected to experience low traffic; replicating large objects during this time will allow the mobile network operator to make best use of the limited bandwidth available during peak times.
The zero-threshold period can be adjusted by the network operator in the light of experience; finer adjustments can be made for different user groups, per-application or even per-user thereby staggering the off-peak network usage and ensuring that the full user base for a given server does not attempt to connect to the Cognima Server at the same time.
There will be dynamic changes to the threshold, for example from cell loading or to support a marketing drive promoting a new service (during which time it may be preferable to allow basic tariff data onto the network during peak hours to encourage uptake). If it is possible for the device to detect that its cell is not busy it could drop its threshold a bit which might trigger some replication.
The core of the algorithm is to calculate the threshold graph and the weight graph of every item in the change log. If the current weight of any item is greater than the current threshold then a connection is established. Otherwise the next time that any item will exceed the threshold is deduced (ie when the graphs intersect) and a timer is set for this interval. Because both the weights and the threshold can be dynamic there are several events that can trigger a recalculation:
There are two separate calculations: the weight graph of an item and the threshold graph.
Parameters that can affect the weight of an item at any given point in time are:
The extent to which these parameters influence the weight is controlled by the service provider (i.e. network operator) in the control as described in section "Service Provider Control" above.
Parameters that can affect the current threshold value of a change log are:
After each refresh of the changelog, the client software also calculates the time interval to the next intersection between a weight graph and the threshold graph; this is so that scheduled replication can take place as required even if there are no further changes before that scheduled time. Generally, the 'next event' for the change log will either be as predicted by this intersection calculation, or will be created by some external event that places a new entry in the change log (which may of course force a refresh of the values of all weights and the threshold). Note that the 'next connection' event may have a value of 'never' if the changelog is empty, unless the active QoS Profile has a zero-threshold period as in the example above.
3.3 Banding
We control both the client weight graph and the threshold graph by a structure we call banding. We assume that all graphs can be described as sets of horizontal lines which jump (concatenations of step functions). Therefore the QoS Profile for a given class can be described by an array of bands. A band is parameterised as follows:
Band type
Delta; absolute
Whether the band is
measured from creation
time or against system
Server->client; client->
Direction of travel of item.
Start time
If delta type a duration, if
absolute then a clock time.
End time
If delta type a duration, if
absolute then a clock time.
Item urgency.
Bands can be defined as deltas from a start time or against the system clock (absolute). A weight graph for a class which should be scheduled to go within 2 hours of object creation could be described by a pair of bands: The following table could describe the QoS weight profile for the Contacts class.
Start Time
End Time
A threshold graph which describes the graph in the example above would be represented as follows:
Band Type
Start Time
End Time
Note that there is a different weight for objects created or modified on the server and that this weight is constant throughout the daily cycle. This approach can be used to mirror the fact that server-side changes may have a different priority to those originating on the client.
The client and server carry QoS objects which encapsulate the above tables and influence the scheduling of replication. A user's device will hold a QoS object for each data class installed on the device, plus a single threshold object representing the whole system. Each QoS object holds an array of bands to describe a single weight graph. The intersection points of these graphs determine when objects of a given type will be replicated—these intersection points must be calculated by determining the weight of each object and the threshold value for the system at a given time.
3.4 Changelog Item Weight Calculation
The weight of an item in the change log has to be calculated. The QoS object for the item's class is retrieved from the data store. The banding structure is examined and a weight is looked up from the weight graph (either by calculating current time—created time in the case of delta band type, or by comparing system time in the case of absolute band type). To include object size as a parameter in weight calculation, we have added two more fields to the banding structure.
Size limit
Size in bytes
Object size limit over which
the oversize weight applies.
Oversize weight
Weight of oversize objects.
If the object size is greater than the size limit then the oversize weight is used—note that this could be higher or lower than the default weight for the class. In some applications, the object weight can be overridden by a user request (effectively a 'send now' button) which sets the weight to 100.
3.5 Changelog Threshold Calculation
The current changelog threshold weight can be extracted from the threshold QoS object using the current system time. This value can then be modified by dynamic variables—for example if the device can detect roaming status then this can influence the threshold. Generally the threshold will be higher when roaming, to reflect the fact that replication will be more expensive; it is also possible to specify a lower limit for the threshold in a given band, effectively preventing very low priority objects from replicating at all before the device returns to its home network. In deployments where the mobile terminal can be aware of local cell loading conditions, then the cell loading can be used as a factor in adjusting the current threshold value: if the traffic loading of the local cell is below some value (e.g. 70%) then the threshold can be reduced. If the cell loading is above some value (e.g. 95%) then the threshold can be increased.
The QoS object creates timer events which represent the times of day at which the threshold is known to change, reflecting the shape of the QoS Profile as defined by the network operator. As each of these timer events fires off, the QoS threshold will be assigned a new value and the ensuing weighting recalculation will allow objects with the correct weight to be replicated.
3.6 Next Connection Time Calculation
The weight graph of an item needs to be compared to the change log threshold graph to find the next time that the item weight>=threshold weight. This calculation will ignore dynamic change to the threshold weight which is by definition unpredictable. It is a fairly simple calculation to match up the bands and compare weights at consistent times.
There are three types of event that might result in a replication session:
For the first two events, the time at which the session starts is predictable and must be calculated at the end of each replication session. This represents the next scheduled connection time.
Appendix 1 Data Replication System Description
The present invention will be described with reference to an implementation from Cognima Limited of London, United Kingdom. Cognima has developed a data replication technology that directly addresses the need for Mobile Service Providers (MSPs) and Network Operators to increase consumer adoption of data services, encourage greater loyalty from their valuable customers, and differentiate their services from the competition.
Cognima's data replication solution addresses these issues by:
Cognima's data replication framework enables a Mobile Service Provider to build compelling services for consumer markets. The MSP hosts a Cognima Server at its data centre. The server comprises an Oracle database plus Cognima's multi-threaded Java communications server, hosted on a standards-based J2EE application server and carrier-grade Unix hardware. Section 4 and later sections describe the technical implementation in detail.
The Cognima framework replicates data entered in a mobile phone automatically (without any user intervention) to other phones via the Cognima Server. Similarly, data from external systems connected to the Cognima Server is automatically kept up-to-date on mobile phones.
Mobile subscribers using Cognima-enabled applications experience an always-available, instant connection to their personal information and friends.
Customer Need Cognima Application Sarah Sarah's phone has been Whenever Sarah enters data in stolen, including some her phone, Cognima important contact automatically backs it up on a numbers and messages central server at the MSP's for which she has made data centre. Sarah can buy a no manual back-up new mobile phone, and copy. retrieve all her contacts and messages instantly from the central server, as long as she remains with the same MSP. She can also delete her data from the stolen phone via the MSP's portal. Jill Jill is out shopping. Cognima keeps Jill's Before making an personalised content expensive purchase, she (including her bank account needs to know if her details) up-to-date salary has been paid into automatically on her mobile her bank account. phone by periodically (or at a However, she is in the predefined time or even basement of a immediately a change occurs) department store, and sending any changed data to has no network Jill's mobile. The latest data is coverage. there on Jill's phone even before she knows she needs it. She can access it instantly, even if there is no network coverage. Matthew Matthew likes to keep Cognima shares Matthew's his friends informed presence profile with his about his current friends. When he changes his availability and 'mood'. profile (e.g. selects an icon to He also likes to see what indicate he's feeling sociable) his friends are up to. the icon updates automatically He's mainly interested in in Matthew's address book keeping track of what's entry on his friends' phones. happening in his social Matthew can see presence group, and he wants to information for all his friends do this at a glance, at a glance on his own phone. without having to go He can even ask his phone to 'on-line' or send lots of alert him when a friend is expensive messages. feeling sociable or bored, so that he can immediately call. Laura Laura has two mobile Cognima automatically keeps phones - one she uses at all the data in Laura's phones work, and a fashion- in step. Whenever she edits phone she takes out in data on one handset, it is the evenings. She wants immediately (or periodically or to keep the same at a predefined time) replicated address book on both onto the Cognima server devices, but she hates which then updates her other entering data twice, and phone as well. She never has she's never figured out to remember to press a 'sync how to use the sync button' - it just happens. Jill software that came with even shares some of the her phone. Swapping contacts in her phone with her the SIM card over is husband, Geoff. When Geoff cumbersome, and leaves enters his mother's new behind data in the mobile number, it is phone memory. automatically updated in Jill's phones as well. Juha Juha also has two mobile With Cognima, SMS, e-mail devices - a phone and a and other types of messages wireless-enabled PDA. can be read and sent from any He needs to read and device, and also using a reply to e-mail and SMS 'Virtual Phone' web interface. messages on both Messages are received on all devices, but he gets devices used by the subscriber, confused and frustrated, and sent messages appear in and loses productivity, the Outbox on all devices. when his Inbox gets out Any message read on one of sync. device is instantly marked as read on all other devices. Messages deleted from a mobile phone can be stored and retrieved via the Cognima Server.
2. Benefits to the Mobile Subscriber
Cognima provides an ideal framework for implementing mass-market consumer data services based on the following key benefits:
Cognima presents a MSP with a means to generate new data revenues, reduce churn, and to differentiate its services from those of its competitors.
3.1 Increased Usage of Existing Mobile Services
Cognima increases usage of existing mobile services:
Cognima enables rapid introduction of compelling and affordable new mobile data services.
Cognima services act as a significant barrier to churn. For example, a subscriber who stores their personal information securely at their MSP's Cognima Server can buy a new phone and immediately retrieve all personal information to their new device. All this personal information may be lost if they decide to take out a subscription with a different service provider.
3.4 Differentiation
Today, subscribers have the same basic experience of using mobile data services on all networks. For example, the experience of using WAP services is defined by the WAP protocols, the browser in the phone, and the content accessed. Many MSPs have realised that they must differentiate themselves by giving their subscribers a unique user experience, but are hindered from doing so by severe constraints to customising the services in mobile handsets.
Cognima gives MSPs the ability to implement services on the handset, and thereby to regain control of their subscribers' user experience. Most importantly, Cognima allows this without sacrificing interoperability; support for industry standards is achieved through straightforward integration with the Cognima Server. The net result is that the MSP's position in the value chain is strengthened versus the powerful brands of handset manufacturers and content providers.
4. Cognima Data Replication Framework Functional Design
4.1 Introduction
This and subsequent sections of the Detailed Description are intended to describe how the Cognima data replication system actually works. It covers the behaviour of client devices, the Cognima Server and the web client, without going into details of specific hardware, programming language, software class design or environment. It does describe the basic data structures and algorithms used.
Terms Client device A phone, PDA or other machine running the Cognima client software. Cognima A server accessible by client devices which runs the server Cognima server software to replicate data. Replication The process of copying data from a client device up to the Cognima Server and then down to other client devices belonging to the same user. User A human being who owns and uses at least one Cognima client device User data The set of information (contacts, messages, ringtones, pictures etc) that a user might want to store and manipulate on a client device.
4.2 Purpose
The objectives of the Cognima software are:
Client devices hold a copy of the user's data in a database on the client device. The user can access this data whether or not he has a network connection and therefore always has instant access. When a user changes the data on his device, the changes are copied to a Change-Log. The client device connects periodically to a Cognima Server on the wireless network, to send up the changes from the Change-Log and receive new data. This separates the act of changing data from the need to connect to the network (i.e. push is not continuous in a preferred implementation). The Cognima Server updates its own database with data changes received from the client device, and populates Change-Logs for any other devices the user owns. When these devices next connect, they will receive the changes and thus the devices are kept in sync, each with a copy of the same data.
The Cognima Server contains a web server which allows the user to examine directly using a web browser the copy of the data held in the Cognima Server database, and make changes to it as he would on a client device. The Cognima Server also acts as a gateway for the user to communicate with other servers on the network/internet. For example, the client device can effectively ask the Cognima Server to send a message as an SMS or an email or a fax by setting a few flags in a message object and the Cognima Server contains the functionality to communicate with email servers, SMS servers and fax machines. This can be extended to servers holding ringtones, banking details, games etc. It is easier and cheaper to build the software on the Cognima Server to talk to these other servers, than it would be to build the software on the client device.
5. Lower Level Concepts
5.1 Data Structures
5.1.1 Ids
Cognima user data is described using the terminology of object databases: classes and objects. Unfortunately, there is room for confusion with similarly named OO programming concepts and care therefore needs to be taken.
All users in a Cognima network are assigned a user id. This id is unique to the network—i.e. provided by a given network operator. All users have a Cognima address which is a combination of their user id and Cognima Server URL. This is unique in the world. Each device which belongs to a user is assigned a device id. The device id is unique to the user. This is only 8 bits so a user can have a maximum of 253 devices (id 254 is reserved for the web, id 255 is spare, id 0 is invalid). All user data is classified into classes (contacts class, messages class, bank transactions class etc) and the classes are assigned a class id which is unique in the world. Class id '12' refers to a contact, for example.
An instance of a class is an object, which is assigned an object id unique to the user, e.g. a contacts class object might be the contact for "John Smith". The object id is generated by concatenating the device id of the device which created the object with a monotonic increasing count which increases over the life of the device. So each device can create a maximum of 16777215 objects (if we encountered this limit we could reset the device id). Classes are defined by the properties which constitute them. A class is essentially an array of properties. Each property in the class has a property id which is unique to the class (and is actually just the array position of the property in the property array, starting from zero).
5.1.2 Creating Objects
An object is created on a device. It is assigned an object id and saved to the device database. A copy is also saved into a Change-Log. When the device next connects to the Cognima Server the entry in the Change-Log is sent up. The Cognima Server saves the object to its database (recording the system time), does any class specific processing that may be required (such as generating and sending an email) and adds entries to Change-Logs for any other devices that the user may own which have declared interest in the class. (The entries should be for the correct version of the class on the device).
An object may also be created on the web portal. The object id is generated (using device id of 254 as described above) and processed identically to the device. There is no Change-Log for the web portal, it gets selections directly from the Cognima Server database.
An object may also be created by a server application (e.g. a messaging module might receive an email from which it creates a message object). The object id is generated (using device id of 254 as described above) and processed identically to the device.
5.1.3 Updating Objects
One or more properties of an existing object are modified on a device. The changes are saved to the device database. Each changed property is used to generate an entry in the device Change-Log. These are sent up to the Cognima Server.
If the time of the update is later than the 'last changed' time for the property in the Cognima Server database then the Cognima Server saves the changes to its database (recording the new 'last changed' time for the property), does any required class specific processing and adds entries to Change-Logs for other devices which belong to the user, have declared the class and have a version of the class which contains the property. The update is also placed on the Change-Log for the device that originated the change. This may seem strange but is required to cope with the following scenario:
A user has 2 devices A and B. He updates property 7 on A offline at 5 pm and updates it on B offline at 6 pm. He connects to the network with A first. The value of 7 on A gets put in the Change-Log to be sent to B. Later B connects. Its value of 7 is more recent so the value of 7 on B is sent to A, but B gets A's value. Replicating the value of 7 back to B fixes this.
If an update is received by the Cognima Server for an object which is marked as deleted and the update is later than the deletion, then this is interpreted as an un-deletion. The object is undeleted, updated and then a refresh of the object in placed on the Change-Logs for all appropriate devices. Updates from the web portal or server applications work in the same way.
5.1.4 Deleting Objects
An object is deleted on the device. It is removed from the device database and an entry is put on the Change-Log listing the class id and object id. The entry is sent up to the Cognima Server.
If the time of the deletion is later than the last updated time of the object, then the Cognima Server marks the object as deleted in its database, does any class specific processing and adds the entry to other devices that belong to the user and have declared the class.
If the time of deletion is earlier than the last updated time then this indicates that the deletion is invalid and a refresh of the object is put on the Change-Log for the device which originated the deletion.
The deleted object is viewable in the web portal a manner that makes its deleted status clear. The user can select the object for un-deletion. The deletion mark is removed from the object in the Cognima Server database and entries to refresh the object are placed on the Change-Logs for all devices that belong to the user and have declared the class.
5.1.5 Property Types
Each property has a type. There are currently 9 permitted property types:
Type name
Type description
4 byte object id of another
signed 4 byte integer value
unsigned 4 byte integer value
signed 4 byte floating value
a CogString (a 4 byte unsigned
integer holding the number of
characters in the string, followed
by the character bytes)
unsigned 4 byte integer value
indicating the number of
seconds since midnight 1st Jan
unsigned 4 byte integer value
followed by a CogString
a stream of bytes preceded by a
4 byte unsigned integer which
holds the number of bytes
a blob structure which can hold
an array of any kind of data
A CogString is a character count followed by the characters. If the string is ASCII then the space taken up by the string will be (4+char count) bytes. If the string is Unicode then the space taken up will be (4+(char count*2)) bytes.
A CogTypedString is a CogString preceded by a type (4 byte unsigned integer). The only use of a typed string so far is a Contact Point. The type identifies the type of contact point (e.g. email address, home phone) and the string holds the address (e.g. firstname.lastname@example.com, 01233556677).
A CogBlob is a length in bytes followed by that number of bytes. It can be used to store any binary data.
A CogArray is passed around as a 4 byte unsigned integer 'type' followed by two blobs. The 'type' indicates the type of elements held in the array. The first blob is an index blob: it holds a sequence of offsets (4 byte unsigned integers) into the second blob. The second blob is the data blob which holds the elements of the array as a sequence of binary lumps. Elements can be extracted from the data blob by counting along the index blob to get the offset of the start of the element in the data blob. This is the stream structure of the CogArray as it is passed around. Inside a particular system it may appear as a conventional vector (i.e. already parsed).
The only implemented example of a CogArray is the MessageAddress. Each element of the MessageAddress is an AddressPair. An AddressPair is a contact id (object id of a contact object) followed by a Contact Point.
5.1.6 Smart Property Parameters
Some of the properties can be made "smart". This means they can be parameterised for a specific device to sculpt the data in the property for the characteristics of the device. In practice the parameters are two 4 byte unsigned integers, one is a smart type and the other is a max size. For example, the property which holds the body text of a message might be parameterised to smart type kCogPlainText and max size 100 on a cheap phone with limited memory, but parameterised to be smart type kCogRichText and max size 1000 on a PDA with more memory.
The parameters are stored by the Cognima Server when the application is added to the device. When new objects or updates for that class are placed in the Cognima Server Change-Log for that device they are processed according to the smart parameters. This might involve, for example, truncating text, converting Unicode text to narrow text or converting image formats.
It is important for data integrity that the object held in the Cognima Server database be a copy of the object as it was generated. Even if you see a cut down version on a device you can effectively manipulate the complete version on the Cognima Server.
5.1.7 Class Versions
We have the concept of a class version which is defined by a 4 byte unsigned integer. A new class version may add properties to the end of the old class, but it may not change or remove existing properties, or insert new properties between existing properties. This should allow interoperability between versions. Class definitions with different smart property parameters are not different versions.
5.2 Passing User Data Around
Cognima utilises the idea of class metadata to minimise the data that needs to be copied around between databases. Class metadata is essentially an array of property metadata. Property metadata is a property id, a property type, a smart type and a max size.
User data is transferred as a stream with no formatting information other than a class id. This stream is parsed by looking up the class metadata. So if a stream is received for class 6 and the class metadata for class 6 says that property 0 is a KcogTypeUInt and property 1 is a KcogTypeStr, then you know that the first 4 bytes of the stream should be interpreted as an unsigned integer, the next 4 bytes should be interpreted as an unsigned integer holding the number of characters n in the succeeding string, the next n (times 2 if Unicode) bytes hold the characters in the string etc.
Client devices declare to the Cognima Server the classes that they support. This enables the device to subsequently send up only raw user data (with a header containing class id, object id and a few other things) and hence minimises bandwidth requirements. This can be contrasted with, for example, XML reliant systems that are far more bandwidth hungry.
The client device class declarations also contain the smart property parameters so that the Cognima Server can sculpt the data for the device. It is worth emphasising that the meaning of a property is hard coded into an application. The class metadata states that property 2 in class 7 is a string with max length 30 characters. It is the code in the application that interprets property 2 in class 7 as the name of a football team.
5.2.1 Data Replication Issues in More Depth
Data is held in objects that are created on client devices and the server these devices connect to (known as the Cognima Server). These objects and any changes made to them are replicated between the client devices and the Cognima Server.
The design of the replication process allows:
In order for the system to work it needs a clear idea of what properties are defined for a given class of objects. This is done by providing the programmer with a few C++ compiler macros that allow definition of the class metadata.
The definition of the properties to be used in a class result in a Class Metadata definition. This definition tells the CRE (Cognima recognition engine) what type a given property is and allows it to pack and unpack an object or a property for transmission over a data link. In order for the CRE system to work all clients and the server must have the same class metadata definition. Thus the following occurs:
The purpose of the ChangeLog is to record any changes that have occurred since the client device last connected to the Cognima Server (or the Cognima Server to the client device). Using Cognima APIs, applications connect to the CRE and can cause objects to be created or deleted, or a property in an object to be changed. These changes are added to a Change-Log on the local device as they are made together with the time the change was made. Objects are given unique identifiers when they are created so that a given object can always be identified.
In the same way, creation and deletion of objects and changes to object properties by applications running on the Cognima Server result in the changes being added to all the Change-Logs of all the client devices registered to that user on the Cognima Server. The time of changes are recorded for each object or property.
ChangeLogs can be built in two ways:
When a client device has items in its ChangeLog to send it will connect to the Cognima Server (and likewise for the Cognima Server connecting to the client device). By default, the items in the ChangeLog are sent in the order in which they were added to the ChangeLog, however they may be re-prioritised immediately before sending to provide for premium services, urgent data and so on. Items transferred are:
In all the above cases the appropriate IDs are sent to identify the object, class and properties involved. All ChangeLog items are marked with the time the item was added to the ChangeLog. These times are always local machine times and are resolved into GMT by the Time Management approach described in Section 6.2.
When a client device receives ChangeLog items from a Cognima Server:
A Cognima Server receives ChangeLog items from a client device:
When a device first connects to a Cognima Server it will be sent all class metadata definitions and then all the objects in the database for that user. The Deletion messages generally just mark an object for deletion. Actual removal of the object from the database may occur later on once all objects referring to that object have also been deleted.
5.2.5 Optimisations
An optimised version of the above replication protocol allows for aggregation of the entries in the ChangeLog. If a ChangeLog (in the Cognima Server or on a client device) has not yet been replicated, and a subsequent entry is added, then existing entries can be scanned to potentially reduce the number of entries that need to be replicated during the next connection:
Operating systems are fundamentally little endian or big endian which is a choice of the byte order in which numbers and strings are stored. If two computers which have different endian-ness have to communicate then one of the computers will have to switch the endian-ness of its data packets. In the Cognima environment the Cognima client software uses the same endian-ness as the host client device. The Cognima Server has to determine the endian-ness of the client device (it uses a reference value in the first packet of data from the client) and then convert the subsequent incoming data if necessary to maintain consistent endian-ness in the Cognima Server. The Cognima Server also has to convert any outgoing data it sends back to the client device.
6.2 Synchronising System Times
Different devices will inevitably have slightly different system times. Changes that are sent from client devices to the Cognima Server are stamped with the device system time at the time of the change. It is up to the Cognima Server to resolve the times on different devices so that it can judge the order in which changes took place and record the correct update.
The logon of a device contains the current device time. The Cognima Server should be able to compensate for the latency of the network and compare the login time with its own system time. This will give it a delta between the device time and the Cognima Server time. This delta can be applied to further times sent up by the device in that session.
The Cognima Server can compare deltas in successive sessions from a device to determine clock 'creep' on the device or changes of time zone: it cannot be assumed that all the client devices in the system have clocks that are well synchronised to each other:
To get round this problem, the server will be responsible for adjusting times used by the client device to GMT when comparisons are made on the Server, and from GMT to the equivalent time for the client device when messages are sent from the Cognima Server to the client device.
The client device will tag all the items in the ChangeLog with times obtained from the local clock—as far as the client device is concerned it only ever deals in time based on the client device's own clock.
Each time the client device connects to the Cognima Server it sends its view of the current time as given by the clock on the client device. From this the Server can work out:
For example the table below shows a pattern of events with a client device connecting to a Cognima Server. The Client device's time is 5 minutes slower that the Cognima Server and is loosing a minute every hour (an extreme case to show the point). Also to show the point we will assume that from 09:00 to 12:00 the user is on a plane and out of contact with the Cognima Server so it does not connect during this time:
Cognima Server
Device Time
time (GMT)
Client device connects to
Cognima Server
A change is made to property A
A change is made to property B
Client device connects to
Cognima Server
In order to work out if the property changes were made before or after the time stored on the Cognima Server the times X and Y need to be worked out. From the information above the Cognima Server knows that when the client last connected it was around 3 hours ago and at that point the time difference was 5 minutes whereas now it is 8 minutes. Thus, assuming the clock drift happens linearly, the Cognima Server can work out that the device is 5 minutes behind GMT and that the clock is drifting back a minute every hour.
From this is it possible to work out that the time the client device knows as 10:00 for the property A change needs to have 5 minutes added to it for the initial drift, plus one minute for the extra drift that occurred in the hour till that property was changed.
Likewise Property B needs to be adjusted to 11:07—the 5 minutes initial drift plus 2 minutes since two hours elapsed from 09:00 to 11:00 when the property was changed.
In practice the delta to the time between the client device time and GMT may be minutes, but the drift will be in the order of fractions of seconds per hour.
6.2.1 Time Adjustments
As well as the delta to GMT and any drift in the client device clock, users can also change the time on the client device. They may do this to reset the time to the correct local time (we can give the user the option to have this happen automatically but some users may want to keep their own control of their client device time—e.g. they like to have the clock set 5 minutes fast). They may also make adjustments to reflect a change of local time (i.e. daylight savings or changing timezone). The goal is that the user can change the clock on the device to any time that suits the user and the device simply takes account of this.
When the user makes a change to the client device time most operating systems will report this change (for systems that don't do this the time can be polled say every minute to check for such a change). On detecting a change in time the client device will work out the delta between the new time and the time as it was before the change. For example this may be a change of plus one hour as a user moves timezone. The client device stores this time difference as the Adjust Time which it saves for the next connection to the Cognima Server. The client device also goes through every entry in the ChangeLog and updates all times in the log by Adjust Time. This ensures that the entries in the ChangeLog are always relative to the local time on the client device.
Several such adjustments could be made between connections to the Cognima Server—each time the amount of the time change is summed with the Adjust Time and the ChangeLog updated so that the times in the log are all relative to the local time on the client device.
When the client device next connects to the Cognima Server the client device sends at logon the stored Adjust Time—i.e. the amount by which the client device clock has been adjusted backwards or forwards since the last connection. The Cognima Server can then remove this amount from the time from the delta to GMT and drift calculation.
6.2.2 GMT to Client Device
The same set of calculations can be made in reverse to convert the GMT times of changes made on the Cognima Server to the correct local time for a given client device.
6.3 Adding an Application
An application will use one or more classes to hold user data. The definition of the class is hard coded into the application. The version of the class is co-ordinated by releases of the application.
Say that a statistics application uses a Footballer class to hold data about footballers. When the application starts on a client device for the first time, it inquires from the device what version of the Footballer class the device already holds. If the version on the device is the same as the version that the application has been hard coded to use then nothing more need be done.
If the device holds a newer version of the Footballer class, then the application needs to be robust enough to cope with more properties than it expected. (This situation would arise if you had a class being used by multiple apps and for some reason you installed an older version of one of the apps. This should be rare: ideally interdependent apps should be upgraded together.)
If the device holds an older version of the Footballer class (or no version at all) then the application's version of the Footballer class should replace it. The new version is sent up to the Cognima Server. The Cognima Server therefore maintains a list of versions of classes used on all devices.
The web portal pages will be the equivalent of the hard-coded device application. The web can extract objects from the database according to the latest version of the class, and if there are more properties than it was hard coded to expect it can ignore them. Therefore the web does not need to declare class versions.
6.4 Change-Log Optimisation
The Cognima Server maintains Change-Logs for all devices listing changes that will be sent to the devices when the devices next connect. There will be optimisations that can be made to the Change-Logs, for example:
The space available on a client device to hold user data will typically be orders of magnitude less than the space available on the server. The device needs to hold a subset of data and the user should have to do as little work as possible to maintain this subset. Ghosting and withdrawal are tools to aid this.
A class definition may include flagging certain properties as 'ghostable'. This means that if the object is ghosted those properties will be nulled, freeing room on the client device. Ghosting is done automatically on the device. The decision about which objects to ghost is made by following a 'ghosting rule' and applying the rule whenever an object is created or updated. The rule defines the maximum number of a selection of objects. When the maximum is exceeded the objects in the selection at the bottom of a sort order are ghosted.
For example, the class might be messages, the selection might be messages in the inbox, the sort order might be by date/time and the maximum number might be 50. If there are 50 messages in the inbox and a new message arrives, the oldest message in the inbox is ghosted. Ghosting may remove the message body but leave enough header information for the message to be recognised.
Withdrawal (also known in the past as auto-deletion and removal) is similar to ghosting but works by removing the entire object, not just part of it.
Neither ghosting nor withdrawal are notified to the Cognima Server. They are purely local to the client device. Therefore different devices may have different numbers of objects. The data on the devices is still fundamentally in sync, but the devices hold different data subsets.
If the user wants to resurrect a ghost then a request is passed from the client to the Cognima Server for the object to be resurrected. A refresh of the object is sent down to the device and the object is put back to normal.
Individual objects can be pinned. A pinned object is never ghosted or removed. Pinning can be chosen by the user, or it can happen automatically. For example, an object that is resurrected is automatically pinned.
8. User Replication—Sharing Objects
There are many applications for which we envisage it will be useful for users to be able to share objects. The general way that this will work is: A user needs to know the Cognima address of users that he may want to share objects with. It is more appropriate to discuss the retrieval of these addresses in detail in the Cognima Server architecture. Here we assume that such a list is available.
A set of one or more Cognima addresses is attached to the object which is to be shared. The object can be set to read-only (so the people you share it with cannot modify it). When the Cognima Server receives the new object (or receives an update to it) from the web or a client device it replicates it as normal.
It also looks up the list of 'sharees' Cognima addresses. It marks the object with an originator id (i.e. the Cognima address of the object owner+the object id) and sends it to the sharees. The sharee users may exist on the same Cognima Server or be on different Cognima Servers. The Cognima Server of the sharee receives the object. If it is a new object it assigns a new object id (keeping note of the originator id). If it is an update it finds the object using the originator id. If the sharee is allowed to update the object, the update can be replicated back to the object owner using the originator id.
9. Displaying Data
Conventional small devices like PDA tend to have simple filing systems that allow applications to read and write data to some kind of storage that will keep the data when the application is not running. Generally these programs will tend to read in the available set of data and then provide a user interface to display the data on the screen. This has some disadvantages:
The Cognima approach is different:
This approach is similar to the screen re-paint approach used to redraw graphics screens on Windowing systems. When an area of the screen needs repainting the application that is responsible for that bit of screen is called to repaint the screen.
9.1 Example
A client device may have a contacts application running on it—this device replicates data with a Cognima Server connected to other client devices also running contacts applications. A class of object is defined for a Contact that contains names and phone numbers and these are replicated to all the devices of a given user.
An application on one device may have a display that shows all contacts by beginning letter—for example the interface allows the user to press a D button to show all the names beginning with D. This application will set up a selection that contains objects:
When the selection is defined the application also defines code to be called by the CRE when objects are added, deleted or updated.
When the selection is first set up this code will be called back with the first set of objects that fulfil the above criteria.
If the application was asked to create a new contact with a name beginning with D the application would create the object but do nothing else. The CRE would detect the new object and call back the selection code to notify it of the new object.
Likewise is a new Contact object was created on another device and was replicated to the client device—if the name of that Contact began with D the application would be notified.
9.2 Sorting
Data in selections generally needs to be sorted—often so that when displayed users can see data in a logical format. When a selection is defined the sorting order can be specified: the properties to sort on, in what order and what sorting algorithms to use.
9.3 Views
There may be many items of data in a selection. Commonly when the data is being displayed it may not all fit on the screen and so the user will need to scroll up and down the data. A view provides this functionality by specifying the number of items of data the selection wants to deal with and the number of the first item of data out of the complete list of data the application wants to appear in the selection.
Views are important because they allow an application to limit the amount of data it stores locally to be limited to just the amount needed to display on the screen this reducing unnecessary duplication of data.
9.4 Efficiency
Cognima has made some efficiency optimisations in how the data is transferred between the Cognima server and client application—when multiple data changes are made the data is sent in blocks and then the application informed that the changes are complete so that the application only needs to update its user interface once.
9.5 Example
As an example we will define a selection called ContactSelection. This is the code that the framework will call back whenever a change is made to any of the selected objects. In the Cognima framework this is implemented as an object which you derive from the COdbSelect templated class—specifying the type of object you want to have in the selection as the template argument.
class CContactSelect : public COdbSelect<CContact>
CContactSelect(COdb *aOdb);
void ObjectAdded(CContact *aObject);
void ObjectUpdated(CContact *aObject);
void ObjectRemoved(const TOdbObjectId aObjectId);
bool ListContacts( );
The methods ObjectAdded( ), ObjectUpdated( ) and ObjectRemoved( ) are called by the framework whenever respectively an object is added, updated or removed. When you implement the Selection class you don't need to implement all these methods if you do not want to take instance action on any of these events—in some cases you may set up a selection to keep a list of a certain set of objects but only check that list on some other event and so the above methods would not be required.
We have defined one extra private method called ListContacts( )—this will list all the current contacts held by the selection.
Here is the implementation of this class:
CContactSelect::CContactSelect(COdb *aOdb)
: COdbSelect<CContact>(aOdb)
void CContactSelect::ObjectAdded(CTestContact *aContact)
OdbLog(OdbLogApp,L"New contact added: " << aContact->
GetName( ));
ListContacts( );
void CContactSelect::ObjectUpdated(CTestContact *aContact)
OdbLog(OdbLogApp,L"Contact updated: " << aContact->GetName( ));
ListContacts( );
void CContactSelect::ObjectRemoved(const TOdbObjectId aObjectId)
OdbLog(OdbLogApp,L"Contact deleted - Id: " << aObjectId);
ListContacts( );
void CContactSelect::ListContacts( )
OdbLog(OdbLogApp,L"Contacts list:");
for (unsigned long Index=0; Index<iResult.size( ); Index++)
CTestContact *Contact=iResult[Index];
OdbLog(OdbLogApp,Contact->GetName( ) << ","
<< Contact->GetPhone( ) << ","
<< Contact->GetEmail( ));
The constructor simply calls the default COdbSelect constructor. The ObjectAdded( ), Updated( ) and Removed( ) methods print out what change was made and then call ListContacts( ) to show what the current contents of the list is.
The ListContacts( ) shows how the current list of object held by the selection can be accessed. The current list of pointers to objects is held in a container class called iResult—this can then be accessed by normal container class integrators. In this case we simply go through the list and print all the objects in the list.
|Cited Patent
|Filing date
|Publication date
|Aug 13, 1993
|Sep 2, 1997
|International Business Machines Corporation
|Method and system for reprioritizing calendar items on a data processing system
|Nov 13, 1996
|Oct 2, 2001
|Emc Corporation
|Network file server having a message collector queue for connection and connectionless oriented protocols
|Jul 1, 1996
|Jun 25, 2002
|Microsoft Corporation
|Urgent replication facility
|Jun 4, 1999
|Aug 27, 2002
|Microsoft Corporation
|Object identification and data communication during an object synchronization process
|Oct 22, 1999
|May 27, 2003
|International Business Machines Corporation
|Computer data sharing system and method for maintaining replica consistency
|Aug 25, 2000
|Apr 6, 2004
|Telefonaktiebolaget Lm Ericsson (Publ)
|Non-time dependent synchronization of databases
|Apr 10, 2000
|Aug 17, 2004
|Research In Motion Limited
|System and method for pushing information from a host system to a mobile data communication device
|Feb 25, 2000
|Mar 8, 2005
|Cisco Technology, Inc.
|Method and system for queuing traffic in a wireless communications network
|Jun 26, 2002
|Apr 4, 2006
|Nokia Corporation
|Programmable scheduling for IP routers
|Aug 13, 2001
|Apr 18, 2006
|Union Gold Holdings, Ltd.
|Hybrid replication scheme with data and actions for wireless devices
|Aug 7, 2000
|Feb 27, 2007
|At&T Corp.
|Methods and systems for optimizing network traffic
|Jun 23, 2000
|Dec 11, 2007
|Nokia Corporation
|Differentiated service network and method of operating a differentiated service network
|Feb 6, 2004
|Jan 8, 2008
|Microsoft Corporation
|Enhanced tabular data stream protocol
|Jun 1, 2002
|Dec 11, 2003
|Hugh Harlan M.
|Method and apparatus for creating and accessing associative data structures under a shared model of categories, rules, triggers and data relationship permissions
|Jan 26, 2007
|May 24, 2007
|Cognima Ltd.
|Method of Replicating Data Between Computing Devices
|Aug 13, 2007
|Feb 7, 2008
|American Calcar Inc.
|Technique for effective organization and communication of information
|Mar 5, 1997
|Sep 10, 1997
|International Business Machines Corporation
|Data management system and method for replicated data
|Title not available
|Apr 10, 2001
|Oct 18, 2001
|Research In Motion Limited
|System and method for bundling information
|Nov 26, 2002
|Jun 5, 2003
|Cognima Ltd
|Method of replicating data between computing devices which each use local clocks
|Nov 26, 2002
|Jun 5, 2003
|Cognima Ltd
|Method of replicating data between computing devices
|Citing Patent
|Filing date
|Publication date
|Nov 5, 2008
|Aug 11, 2011
|Hewlett-Packard Development Company. L.P.
|Displaying Personalized Information in a Handheld Device
|Oct 15, 2010
|Apr 19, 2012
|Shane Bryzak
|Web application framework remoting model api
|U.S. Classification
|707/610, 709/213
|International Classification
|Cooperative Classification
|European Classification
|Jun 17, 2005
Owner name: COGNIMA LTD., ENGLAND
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:GREENWELL, THOMAS RALPH EDWARDS;SPENCE, STEPHEN TIMOTHY;STALKER, MARK COLIN;REEL/FRAME:017444/0348;SIGNING DATES FROM 20050608 TO 20050613
Owner name: SONY DEUTSCHLAND GMBH, GERMANY
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:WILDHAGEN, JENS;REEL/FRAME:017452/0012
Effective date: 20050515
Owner name: COGNIMA LTD., ENGLAND
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:GREENWELL, THOMAS RALPH EDWARDS;SPENCE, STEPHEN TIMOTHY;STALKER, MARK COLIN;SIGNING DATES FROM 20050608 TO 20050613;REEL/FRAME:017444/0348
|Nov 17, 2008
Owner name: SHOZU LIMITED, UNITED KINGDOM
Free format text: CHANGE OF NAME;ASSIGNOR:COGNIMA LIMITED;REEL/FRAME:021842/0665
Effective date: 20071018
|May 18, 2010
Owner name: CRITICAL PATH DATA CENTRE LIMITED,UNITED KINGDOM
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SHOZU LIMITED (FKA COGNIMA LIMITED);REEL/FRAME:024404/0130
Effective date: 20100104
Owner name: CRITICAL PATH DATA CENTRE LIMITED, UNITED KINGDOM
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SHOZU LIMITED (FKA COGNIMA LIMITED);REEL/FRAME:024404/0130
Effective date: 20100104
|Jul 10, 2012
|Certificate of correction
|Sep 23, 2015
|Fee payment
Year of fee payment: 4
|Mar 1, 2016
Owner name: OPENWAVE MESSAGING DATA CENTRE LIMITED, UNITED KIN
Free format text: CHANGE OF NAME;ASSIGNOR:CRITICAL PATH DATA CENTRE LIMITED;REEL/FRAME:037864/0784
Effective date: 20150526


text:
1 Hi Friends..anyone taking CRNE exam in October 2012..please let me know if You are interested in making a group to study together....I live in Brampton..any advice /suggestions for the preparation of the exam are welcome ...0Jul 19, '12 by Silverdragon102, RN AdminMoved to the Canada CRNE / CPNRE Nursing Exams forum0Jul 22, '12 by innocent queenhi Enovel,
we are meeting at the Chinguacousy branch of Brampton library @10 am on Tuesday..u r welcome to join0Jul 26, '12 by sarahrsIs anyone meeting in Peterborough or in Bowmanville ? I'm just north of P eterborough but can meet in durham dur ing the day for group study at the Whitby Library maybeLast edit by sarahrs on Jul 26, '12 : Reason: spelling0Jul 31, '12 by worldpeace2012Anyone meeting in Ottawa region? Let me know I live near St. Pauls University and would like to start a study group here if possible.

subset: commoncrawl


text:
Are you...?
If yes, click here to login.
BBB Accredited Business since
ASAP Wildlife Control & Removal, LLC
Phone: (804) 516-1000 5607 Matoaka Rd, Richmond, VA 23226 http://www.asapwildlifecontrol.com
BBB Business Reviews may not be reproduced for sales or promotional purposes.
Request a Quote
View Business Review Inquiries
ASAP Wildlife Control & Removal, LLC has had their Business Review viewed 14 time(s) over the last 40 days. Click to view where these inquiries originated.
BBB Accreditation
A BBB Accredited Business since
BBB has determined that ASAP Wildlife Control & Removal, LLC meets BBB accreditation standards, which include a commitment to make a good faith effort to resolve any consumer complaints. BBB Accredited Businesses pay a fee for accreditation review/monitoring and for support of BBB services to the public.
BBB accreditation does not mean that the business' products or services have been evaluated or endorsed by BBB, or that BBB has made a determination as to the business' product quality or competency in performing services.
Reason for Rating
BBB rating is based on 13 factors. Get the details about the factors considered.
Factors that raised the rating for ASAP Wildlife Control & Removal, LLC include:
- Length of time business has been operating
- No complaints filed with BBB
Industry Ratings Comparison | Chart
Customer Complaints Summary
|Complaint Type
|Total Closed Complaints
|Advertising/Sales Issues
|Billing/Collection Issues
|Delivery Issues
|Guarantee/Warranty Issues
|Problems with Product/Service
|Total Closed Complaints
Definitions | BBB Complaint Process | File a Complaint against ASAP Wildlife Control & Removal, LLC
Customer Reviews Summary Read customer reviews
|Customer Experience
|Total Customer Reviews
|Positive Experience
|Neutral Experience
|Negative Experience
|Total Customer Reviews
Read Customer Reviews | Submit a Customer Review | See Trends in Customer Reviews on ASAP Wildlife Control & Removal, LLC
Additional Information
Type of Entity
Limited Liability Company (LLC)
Business ManagementMr. Daniel A Hill, Owner
Contact Information
Business Category
Animal & Wildlife Removal Pest Control Services Animal Shelters Animal Rescue Relocation


text:
After upgrade to WordPress 3.4.1 this plugin give an RSS feed error in the header when accessing the back end. The error seems to happen for a few days at a time and then disappear for a few days.
It was not really a problem for a while and I just kept using the plugin figuring, as long as my readers aren't seeing the error, its no big deal to me.
Today, the error began showing up again and made accessing my site from both the back end and front end painstakingly slow so I've been forced to disable.


text:
Dear Mr. Decker:I appreciate hearing from you as a shareholder. We are completing ouranalysis of the data, will then prepare a detailed report for the FDA andEMEA and then would hope to meet with them, typically 30 days after theyreceive the report. Thus, although we are moving as fast as we can, thesemeetings may not occur for a few months.We are, of course, working to control costs going forward to conserve cash.Best regards,Andrew Wiseman
proof please that you didn't write it yourself, hope it is true long
provide your email address and I will forward a copy of the e-mail to you from Dr. Wiseman
WOW$6 soon


text:
I just got a great deal on a set of Saulsa titanium skewers (used) for $13.65 on Ebay, only problem with them is that they were green. My bike is red and white and didn't care to have green skewers. A great way to remove anadizing from any type of metal is to spray it with oven cleaner , let sit for a while then repeat and scrub with steel wool and presto now I have bare titanium skewers!
My brother turned me on to this tip quite a few years ago and it works quite well. Just thought I would pass it on to everyone.
Good rides all from the liquid sunshine state!
Good tip. Sometimes I want to do the same thing to the frame paint job.
Triathlon Training - A Free Triathlon Training Community.
ACTIVE is the leader in online event registrations from 5k running races and marathons to softball leagues and local events. ACTIVE also makes it easy to learn and prepare for all the things you love to do with expert resources, training plans and fitness calculators.


text:
The 2015-2016 Dance Team roster is in, we had a LOT of great dancers audition for the coveted 16 spots. Congratulations to all of our Dance Team members. See you at practice!
|Darius Bourne – Captain
|Aniyah Hicks – Captain
|James Wyche
|Zion Jones
|Jonathan Torres
|Brianna Concepcion
|Joaquin Harley
|Kaitlyn Cook
|Rudy De La Cruz
|Tarryn White
|Isaiah Smith
|Savannah Babb
|Angel Velez
|Cyera Carter
|Ibrahim Diallo
|Jolie Nshimye
Step Up Choreography
Move Your Body – Beyonce Video
Move Your Body Choreography – Part 1
Move Your Body Choreography – Part 2
Move Your Body – Full Routine


text:
|Women, Girls, Infant/Baby
Both my grandmothers taught me how to crochet when I was a child. In the fall of 2010, I got involved with crocheting again and it has quickly become a passion. I love creating patterns!View all patterns by designer (211) »
This is a PDF crochet pattern for a nicely textured STRETCHY elastic crochet headband! Using an elastic hair band instead of the traditional method of sewing on a button makes this fast and easy. The pattern works up fast, no edging or sewing required. Can be used as a fashionable hair accessory or make it in a wider width for a functional ear warmer. Instructions for three separate widths are included in the pattern.
Skill Level: Easy.
All of my patterns are written in U.S. Standard Crochet Terminology.
You are welcome to sell all finished items from this pattern. When selling items online, a link to this pattern is appreciated but not required.
Help is available by email, link is included in pattern.


text:
Home Page
Your Trip
About Missoula
At the Bowl
Hours, Shuttle Bus and Location
Rental-Ski Shop
Working at Snowbowl
Contact & Location Info
Online Store
The Mountain
Web Cam
Season Pass Summer Sale
Shops, Downtown Office Schedule
Lift Tickets & Coupons
Trail Map
Masterplan Map
Safety and Policies
Weddings & Summer
Weddings and Special Events
Summer Activities
Zipping at the Bowl
Zip Tour Information
Zip Line Tour Reservations
Events Summer
Snow Sports School
Daily Lessons
First Timers
Kids Programs
FWO-For Women Only
Ski PE
University Programs
Summer Season starts Saturday, June 25
100 Mile View from the top!
Try some of our delicious wood fired pizza
Mountain Bike trails for all ablities
What a beautiful spot for a wedding!
Snow Report
Here are the latest conditions!
Click here
Trail Map
Snowbowl trails are on three mountains!
Click here
Zip Line Tour
Fly the Bowl's Four Zips
Learn More
Upcoming Events
Summer Season starts June 25th !
Learn More


text:
- Report: #881038
Report - Rebuttal - Arbitrate
Complaint Review: Nuvell Credit Corporation
Nuvell Credit Corporation200 Renaissance Ctr Detroit, Michigan United States of America
Nuvell Credit Corporation Account open in my name ID Theft Detroit, Michigan
Ripoff Report
About you?
Ripoff Report
A business' first
line of defense
on the Internet.
If your business is
willing to make a
commitment to
customer satisfaction
Click here now..
Does your business have a bad reputation?
Fix it the right way.
Corporate Advocacy Program™
I can not seem to get a phone number for someone to talk or mailed me any documents about this account.
This report was posted on Ripoff Report on 05/10/2012 05:35 PM and is a permanent record located here: http://www.ripoffreport.com/r/Nuvell-Credit-Corporation/Detroit-Michigan-48243/Nuvell-Credit-Corporation-Account-open-in-my-name-ID-Theft-Detroit-Michigan-881038. The posting time indicated is Arizona local time. Arizona does not observe daylight savings so the post time may be Mountain or Pacific depending on the time of year.
Ripoff Report has an exclusive license to this report. It may not be copied without the written permission of Ripoff Report.
Click Here to read other Ripoff Reports on Nuvell Credit Corporation
If you would like to see more Rip-off Reports on this company/individual, search here:Search Tips
In order to assure the best results in your search:
- Keep the name short & simple, and try different variations of the name.
- Do not include ".com", "S", "Inc.", "Corp", or "LLC" at the end of the Company name.
- Use only the first/main part of a name to get best results.
- Only search one name at a time if Company has many AKA's.
Advertisers above have met our
strict standards for business conduct.


text: The market is about psychology. That is why earning is theonly thing that counts, if you have a chance to talk with anysenior fund manager.When market tumbles, YHOO will drop big time. You know why, suppose you are long in yhoo, and suddenly people began to sell, are you going to hold it? Of course not, because at that time you will undoubtedly doubt yourself. What is P/E of this stock?If you think P/E does not matter, look at ORCL,AMAT, they are superb companies, but too high P/E will ultimately judge. On the other hand, New York Times is only worth $3 billion or so. Is Yhoo worth as much as New York Times? Big Joke has been made. Someone has to pay the price. When market is bullish, people simply forgot these sell programs which made Dow drop more than 100 points in one hour just a few days ago. Please reply.


text:
Reload the page and try again.
Tuition & Financial Aid:
Well my thoughts are I will figure it out later I need this education to do what i want to do in my life. So regardless I am going to have to pay one way or another.
Tuition & Financial Aid:
The financial adviser is very friendly and regularly informs me when my yearly financial aid application is due.
Tuition & Financial Aid:
The education I am receiving is definitely worth the tuition. There were some unexplained fees that were not mentioned in the beginning stages of the application process.
Tuition & Financial Aid:
They are very knowledgeable and have helped me understand the process. As many times as they contact me I keep getting the feeling they think I am going to take the financial aid and walk...
Tuition & Financial Aid:
Make sure you know where you stand in regards to your aggregate limit. Financial aid will not tell you until you are over.
{{review.SectionLabel}} at {{review.EntityName}}:
Sorry, there are no reviews.
No summaries have been written about this school yet. If you are a student at this school, you should take the college student survey.
Non-registered users are limited to 5 school profile page views per month.
Register for free to gain full access!


text:
Vehicle Selected: 1987 SUBARU XT GL/DL 2 DOOR Start a New SearchSize
Size Selected: 275/65-18 Select a New Tire Size
LT275 /65 R18 123Q E1 BSW (Reading the Tire Size)
High mileage, durability and traction for heavy duty trucks.
$191.62 eachAdd To Cart
Customer Rating
|Mileage Warranty
|45,000 Miles
|Speed Rating
|Out of Stock
|Sidewall 1
|Sidewall 2
|View Larger Image
The site was great, easy to find my tire and I was very happy with the product purchased. George N.


text:
- Report: #333513
Report - Rebuttal - Arbitrate
Complaint Review: ASSETCARE,INC
ASSETCARE,INCPO BOX 15380 WILMINGTON, Delaware U.S.A.
ASSETCARE,INC RIPPOFF BILL FROM AT&T 6 YEARS AGO WILMINGTON Delaware
Ripoff Report
About you?
Ripoff Report
A business' first
line of defense
on the Internet.
If your business is
willing to make a
commitment to
customer satisfaction
Click here now..
Does your business have a bad reputation?
Fix it the right way.
Corporate Advocacy Program™
I pretty much knew that this had to be some kind of scam because at the top of the letter it said that it could be settled for 40% of the bill right off the bat. No collection agency will offer to settle with you right off the bat like that.
I will not pay for this bill and recommend all of you others do not as well.
Waddell, Arizona
This report was posted on Ripoff Report on 05/19/2008 02:40 PM and is a permanent record located here: http://www.ripoffreport.com/r/ASSETCAREINC/WILMINGTON-Delaware-19850-5380/ASSETCAREINC-RIPPOFF-BILL-FROM-ATT-6-YEARS-AGO-WILMINGTON-Delaware-333513. The posting time indicated is Arizona local time. Arizona does not observe daylight savings so the post time may be Mountain or Pacific depending on the time of year.
Ripoff Report has an exclusive license to this report. It may not be copied without the written permission of Ripoff Report.
Click Here to read other Ripoff Reports on ASSETCARE,INC
If you would like to see more Rip-off Reports on this company/individual, search here:Search Tips
In order to assure the best results in your search:
- Keep the name short & simple, and try different variations of the name.
- Do not include ".com", "S", "Inc.", "Corp", or "LLC" at the end of the Company name.
- Use only the first/main part of a name to get best results.
- Only search one name at a time if Company has many AKA's.
Advertisers above have met our
strict standards for business conduct.


text:
- Report: #424828
Report - Rebuttal - Arbitrate
Complaint Review: Grant Danger, Your USA Grant
Grant Danger, Your USA Grant5348 Vegas Drive - Suite 866 Las Vegas, Nevada U.S.A.
Grant Danger, Your USA Grant This company is taking advantage of people during these difficult times while using the image of new hope for this country, our new president! Las Vegas Nevada
Ripoff Report
About you?
Ripoff Report
A business' first
line of defense
on the Internet.
If your business is
willing to make a
commitment to
customer satisfaction
Click here now..
Does your business have a bad reputation?
Fix it the right way.
Corporate Advocacy Program™
While people are wondering how to deal with saving their homes, protecting their families, wondering how they can put their children through college or just simply looking for some form of relief or bailout. "Grant Danger" (ironically named), out of Las Vegas definately is a company I urgently tell you to stay away from.
I'm a single dad of two children. Like many people who have gone through a divorce, I am constantly wondering how to deal with my bills, cover my overhead and ultimately take care of my children. I'm normally very disciplined and disregard any BS type email when it comes to solicitatons. However, I sadly looked into an advertisement concerning government grants. This one was perfect. They had a big huge image of President Obama, talking about government assistance through these difficult times, etc. In short, I requested a CD to learn more about the program. It was only $ 2.95, what harm could ot be right? Well, that was only the beginning. I provided my email address, name and paid for the CD request with my debt card. Let me say that there was never any disclaimer stating I was joining anything. I was eventually charged the $ 2.95 and received some blurb emails from the company talking about Grants for Diamonds, Grants for Cars, etc. I knew this was apparently crap but wasn't concerned based on my minimal investment. That all changed however when my checking account was charged $ 58.64 from "YourUSAGrant".
Assuming this was a simple error, I called the company in an effort to identify the error, cancel any membership I had mistakenly been enrolled in and credit my account back. When I called in this evening, I explained that I had never gotten any CD from the company and now have been charged an additional fee. The representative "Molly White" immediately took a defensive tone with me spite my calm respectful communication with her. She informed me that the CD had been sent out and that I had 7 days to cancel my "subscription". Ms. White had no concern whether she could validate that I had never logged into their site and told me the $ 58.64 was non-refundable!!! Needless to say, I expressed my discontent and told her I neede to speak to a supervisor. She stated that she was ironically a floor supervisor and there was no one else I could speak to. I was informed that she would cancel my membership and email me the confirmation of the cancelation together with the page I supposedly agreed to.
To date, I never received any CD, original emails concerning my supposed subscription and login info or the cancelation she had promised.
Anyone interested in going after these people, please contact me. And if anyone from Grant Danger reads this, I'd ask for you to return my money or at least give me my monies worth by meeting me and telling me to my face why you "can't give me my money back"!!!
p.s. - To the owners of Grant Danger / YourUSA Grant; "I was just in Vegas last week for a work conference. Talk about bad timing. You better hope I'm not scheduled back there anytime soon! I can promise you this; "it isn't over yet." Therefore, it might be in everyones best interest to simply forward back my money.
Warwick, Rhode Island
This report was posted on Ripoff Report on 02/16/2009 06:27 PM and is a permanent record located here: http://www.ripoffreport.com/r/Grant-Danger-Your-USA-Grant/Las-Vegas-Nevada-89108/Grant-Danger-Your-USA-Grant-This-company-is-taking-advantage-of-people-during-these-diffi-424828. The posting time indicated is Arizona local time. Arizona does not observe daylight savings so the post time may be Mountain or Pacific depending on the time of year.
Ripoff Report has an exclusive license to this report. It may not be copied without the written permission of Ripoff Report.
Click Here to read other Ripoff Reports on Grant Danger, Your USA Grant
If you would like to see more Rip-off Reports on this company/individual, search here:Search Tips
In order to assure the best results in your search:
- Keep the name short & simple, and try different variations of the name.
- Do not include ".com", "S", "Inc.", "Corp", or "LLC" at the end of the Company name.
- Use only the first/main part of a name to get best results.
- Only search one name at a time if Company has many AKA's.
Advertisers above have met our
strict standards for business conduct.


text:
Definition of rocaille in English:
1An 18th-century artistic or architectural style of decoration characterized by elaborate ornamentation with pebbles and shells, typical of grottos and fountains.
Example sentences
- The word was apparently coined in the 1790s by David's students, wittily combining rocaille and barocco, to refer disparagingly to the taste fashionable under Louis XV.
- The most distinctive decorative style evident during the second period at the factory is rocaille, which was used in three-dimensional forms and in painted surrounds for individual scenes.
2 (rocailles) Tiny beads.
Example sentences
- The bright sunlight poured down on the myriad of rocailles, garlands, leaves, amphorae, birds and cupids.
- It was of colossal figures that would have been of white marble, surfaced in part in rocailles, which would have made them appear to be of a single piece.
French, from roc 'rock'.
Words that rhyme with rocailleally, Altai, apply, assai, awry, ay, aye, Baha'i, belie, bi, Bligh, buy, by, bye, bye-bye, chi, Chiangmai, Ciskei, comply, cry, Cy, Dai, defy, deny, Di, die, do-or-die, dry, Dubai, dye, espy, eye, fie, fly, forbye, fry, Frye, goodbye (US goodby), guy, hereby, hi, hie, high, I, imply, I-spy, July, kai, lie, lye, Mackay, misapply, my, nearby, nigh, Nye, outfly, passer-by, phi, pi, pie, ply, pry, psi, Qinghai, rai, rely, rye, scry, serai, shanghai, shy, sigh, sky, Skye, sky-high, sly, spin-dry, spry, spy, sty, Sukhotai, supply, Tai, Thai, thereby, thigh, thy, tie, Transkei, try, tumble-dry, underlie, Versailles, Vi, vie, whereby, why, wry, Wye, xi, Xingtai, Yantai
For editors and proofreaders
Syllabification: ro·caille
Definition of rocaille in:
What do you find interesting about this word or phrase?
Comments that don't adhere to our Community Guidelines may be moderated or removed.
= trending


text:
By continuing to use this site, you are agreeing to the new Privacy Policy and Terms of Service.
Mylan pharmaceuticals says they will provide savings cards worth $300 to patients that have to pay the full price for the allergy drug out of pocket. CNN Money's Cristina Alesci reports.
NBA legend Kareem Abdul-Jabbar tells CNN's Poppy Harlow in order to gain the support of African-American voters, Donald Trump need to come speak to them directly. He says, "Trump's posturing has been very insincere" and says in this election "people are reacting to their fears."
NBA legend Kareem Abdul-Jabbar tells CNN's Poppy Harlow "you can't find a more American family than the Khan family -- and they are from Pakistan." He says the conversation surrounding the controversy between Donald Trump and the Khan family was "helpful for America."
Started in Austin, Texas in 1980, Whole Foods has grown to become one of America's most popular, and most expensive, grocery stores.
Drone footage shows the destruction in Italy's rural towns following the 6.2-magnitude earthquake. In just one night, family homes, ancient buildings and whole streets turned to rubble.
Democratic Senator Amy Klobuchar blasted Mylan Pharmaceutical, the maker of an injection device known as EpiPens, which can save the life of someone experiencing an allergic reaction, accusing them of price gouging.
The sovereign wealth fund of Qatar made a $622 million investment on Tuesday in the Empire State Realty Trust. That's nearly a 10% stake in the building, plus other New York City real estate assets.
When Carrier announced it was moving more than 1000 jobs to Mexico earlier this year, presidential candidate Donald Trump attacked the company and defended workers at the plant. But Trump's message failed on two counts: it didn't gain the labor union's support and it ignores the complexities of globalization. Cristina Alesci reports.
Chief executives in the U.K. got a 10% raise last year, and in the U.S. they make 276 times as much as typical workers.


text:
Definition of glacé icing in English:
glacé icing
noun[mass noun]
Icing made with icing sugar and water.
Example sentences
- A more complicated variation is glacé icing, which requires the icing sugar to be added to a boiled sugar syrup and beaten.
- Glace Icing can be poured over the cake to give a smooth glossy finish.
- So you would like to know how to make Glace icing! It is not hard, follow the steps below and enjoy your own creation.
For editors and proofreaders
Line breaks: glacé icing
Definition of glacé icing in:
What do you find interesting about this word or phrase?
Comments that don't adhere to our Community Guidelines may be moderated or removed.
= trending


text:
- Report: #969879
Report - Rebuttal - Arbitrate
Complaint Review: Financial Acquisition Agency
Financial Acquisition Agencypo box 527800 miami, Florida. 33152-7800 Internet United States of America
Financial Acquisition Agency FAA , Payment Pending Memorandum, this compamy said I will receive $2,342000.00 if I send them $20.00 cash in the mail, money order or check. By 11/20/2012. Today date is 10/15/2012 , Internet
Ripoff Report
About you?
Ripoff Report
A business' first
line of defense
on the Internet.
If your business is
willing to make a
commitment to
customer satisfaction
Click here now..
Does your business have a bad reputation?
Fix it the right way.
Corporate Advocacy Program™
This report was posted on Ripoff Report on 11/15/2012 04:43 PM and is a permanent record located here: http://www.ripoffreport.com/r/Financial-Acquisition-Agency/internet/Financial-Acquisition-Agency-FAA-Payment-Pending-Memorandum-this-compamy-said-I-will-re-969879. The posting time indicated is Arizona local time. Arizona does not observe daylight savings so the post time may be Mountain or Pacific depending on the time of year.
Ripoff Report has an exclusive license to this report. It may not be copied without the written permission of Ripoff Report.
Click Here to read other Ripoff Reports on Financial Acquisition Agency
If you would like to see more Rip-off Reports on this company/individual, search here:Search Tips
In order to assure the best results in your search:
- Keep the name short & simple, and try different variations of the name.
- Do not include ".com", "S", "Inc.", "Corp", or "LLC" at the end of the Company name.
- Use only the first/main part of a name to get best results.
- Only search one name at a time if Company has many AKA's.
Advertisers above have met our
strict standards for business conduct.


text:
a1 University of London
a2 Kyoto University
a3 University of Tokyo
a4 Ibaraki University
a5 Musashino Higashi Gakuen
a6 Central European University, Budapest
Recently, a series of studies demonstrated false belief understanding in young children through completely nonverbal measures. These studies have revealed that children younger than 3 years of age, who consistently fail the standard verbal false belief test, can anticipate others' actions based on their attributed false beliefs. The current study examined whether children with autism spectrum disorder (ASD), who are known to have difficulties in the verbal false belief test, may also show such action anticipation in a nonverbal false belief test. We presented video stimuli of an actor watching an object being hidden in a box. The object was then displaced while the actor was looking away. We recorded children's eye movements and coded whether they spontaneously anticipated the actor's subsequent behavior, which could only have been predicted if they had attributed a false belief to her. Although typically developing children correctly anticipated the action, children with ASD failed to show such action anticipation. The results suggest that children with ASD have an impairment in false belief attribution, which is independent of their verbal ability.
c1 Address correspondence and reprint requests to: Atsushi Senju, Centre for Brain and Cognitive Development, School of Psychology, Birkbeck, University of London, Malet Street, London WC1E 7HX, UK; E-mail: firstname.lastname@example.com.
We thank all the participants and parents who supported our study. We acknowledge Coralie Chevallier and John Swettenham for their input. This study was supported by Japan Society for the Promotion of Science, 21st Century COE Program J05 Center for Evolutionary Cognitive Sciences at the University of Tokyo and by ESRC Research Fellowship RES-063-27-0207 (to A.S.).


text:
Modoo marbles monopoly games online
Play Modoo marbles monopoly games online now! There are only high quality and easy to play flash games. Listed games are designed for gamers of all ages and gaming skills.
Games Modoo marbles monopoly will entertain you for long time. Play directly in your web browser.
Cool and very adictive game. Using your mouse hop over as many marbles as possible. The object of the game is to have only one ...
Freaky puzzle
It's like monopoly,but puzzles. The board is divided into 2types of squares. Puzzle squares has randomly selected puzzles from ...
Spring Marbles
This is logical game for those people who like to use their brain. You have little coloured marbles in front of you and your t...
Marblelicious is a simple puzzle game in which your task is to move the balls so that the balls in a row have the same color. ...
Latest played games onlineace gangster2 | modoo marbles monopoly | ballade van de kubus | miaw tass! | punch je baas | chino niña | jeu génial 2 | flechas | jogos populares | el juego de vector | uusi pukeutua 3 | nuovo volto | strid i labyrinten | pou games onlina | boob games see the boobs and lick |