Imagine being able to explore your story with EVERYONE: every chance encounter, every event, every moment. Imagine a system that can go over a lifetime’s worth of your data with any user and instantly identify every minute and every photo from your times together. This may sound like something from the latest science-fiction novel, but in fact, you can try this technology today. It is also functionality that Internet companies such as Apple, Facebook, Google, each with more than a billion users, can deploy on a global scale at will.
Implicitly capturing your story with every person, business, or Internet-enabled Thing provides a new way of capturing your reality and makes possible an entirely new class of applications. For example, by examining your stories with the people most important to you, it is possible to reconstruct your complete timeline together, including every event and every photo from your times together. Think of a “smart” version of Facebook or Instagram, with your social life magically captured, organized, and reflected in the app in real time.
Tapping into your stories with others can also provide mobile applications with much-needed context. For example, by examining your stories with users nearby, it is possible to tell whether you are alone or with friends, and who your friends are. In fact, your entire social graph can be reconstructed: not a simple variety based on a set of manually defined links found in social networks, but an advanced version based on a dramatically larger set of connections implicitly inferred from your shared histories with others.
While the task of capturing your story with a billion or more users is formidable, it is not nearly as impossible as it may seem. In an ideal world, simply storing every user’s location history as a stream of location snapshots and matching similarly timed snapshots to deduce proximity would be sufficient to reconstruct your story with any user. One would not need to store that much location data either. Assuming a low rate of one location snapshot per user per minute, one would need only about 500,000 location snapshots or at most 4 MB of location data per user per year!
Wonder why you still cannot swap photos with everyone present at a wedding or look up any events or friends that you have in common with a cute girl or guy at a bar? Storing every user’s location history is likely to raise privacy concerns, but they can generally be addressed by saving only the most recent location history and/or scrambling any location-sensitive information in a way that makes reconstructing original location coordinates practically impossible. The true reason why your location history cannot be captured with high precision is that tracking your position continuously is bound to drain the battery in your phone. There is, however, another way.
SKIA is a cross-platform, proximity-based solution that can capture and reconstruct your story with EVERY user in the world with high-precision, sub-minute accuracy, and in real time, all while maintaining your privacy by not storing where you go or storing explicitly whom you meet. SKIA can scale to billions of users and can capture your story with every person, business, or Internet-enabled Thing on the planet!
Unlike location-based solutions, SKIA does not need to know your location and can estimate your proximity to other users based merely on location-sensitive features in your environment. For example, by comparing Wi-Fi and Bluetooth beacons that two phones can sense at a given moment, SKIA can tell if the phones are located nearby and the distance between them. By making regular snapshots of your environment and comparing them with similarly timed snapshots from others, SKIA can reconstruct your entire history together. Better yet, by comparing multiple chunks of snapshot data in parallel, SKIA can go over your entire life story with anyone in an instant.
In server-based mobile applications, each client relies on the server for updates from other devices. The more often each client updates its status, the more up-to-date the system is as a whole. Sending frequent updates, however, can shorten the battery life on the client side and test the system’s ability to handle a flood of updates from what may be billions of devices. In SKIA, the problem of frequent updates is addressed on both the client and the server sides. On the client side, each device monitors its environment on a regular basis but does not contact the server until the change in the environment is sufficient to merit an update. On the server side, the snapshot data from the most recent client’s update is “extended” to last until the next update is received.
Because the snapshot data being extended is guaranteed to diverge from the real thing by no more than some delta threshold, with the delta being reasonably small, SKIA is capable of providing near real-time functionality while minimizing the number of necessary updates and any negative impact that they may have on the client side. The solution also helps to address device-specific limitations that may prevent a client from contacting the server, such as the Doze power-saving feature in Android.
The incoming rate of the snapshot data on the server side directly affects the throughput of the system and depends on a variety of factors. SKIA applies several layers of general-purpose and domain-specific compression to keep the data rate below 5 KB per user per day (i.e., less than 2 MB per user per year). The older data is less likely to change and can therefore be cheaply stored in permanent storage. The most recent snapshot data is guaranteed to change and is therefore stored in memory, replicated across multiple clusters for redundancy alongside any pre-computed results.
SKIA relies on monitoring changes in the device environment to minimize the number of updates. However, if the environment is changing quickly, as when a user walks along a crowded street or drives on a highway, the frequency of updates can be affected. When the client detects that the rate of changes in the environment has increased, it switches from more precise but less persistent sources of location-sensitive data to sources that are less precise but more stable, thus keeping the overall rate of updates and power consumption at a manageable level. When the rate of change in the environment goes back to normal, the client reverts to relying on more precise sources of data.
The lack of precision in certain situations is the single most significant challenge in SKIA. It is, however, an issue that can be addressed directly in newer devices that support Bluetooth Low Energy (Bluetooth LE or BLE) in both the central and the peripheral modes. Because of the limited range of Bluetooth LE, two devices that can sense some of the same BLE beacons are guaranteed to be close to one another. Because it is proximity to other devices and not the absolute location of the device that matters, using BLE beacons alone can be used to guarantee precision. It is the order of magnitude of the proximity threshold, not the exact threshold value, that matters most.
Magically, while SKIA can reconstruct your story with any user, it does not store where you go. Nor does it store explicitly whom you meet. Instead of relying on the original location-sensitive data in each snapshot, SKIA stores only a specially crafted location-sensitive hash derivative. Once hashed, the snapshot data can be used to compute your proximity to other users, but it cannot in itself be used to recover the original location-sensitive information. By not storing sensitive information directly, SKIA dramatically reduces the chance of it ever being stolen or misused.
The details of the locality-sensitive hashing algorithm in SKIA are complex, but the general idea of how it works is simple. In a grid-like street plan of a city, one’s path can be represented as a timestamped sequence of street-block numbers. Respectively, a meeting between a group of two or more people can be expressed as the block number that everyone in the group shares around the same time. Importantly, it is the fact of sharing the same block number and not the number itself that matters. If each block is regularly assigned a random number, the task of reconstructing one’s actual path from a list of block numbers would become impossible. Any encounter between two or more people, however, can still be recognized simply by matching similarly timed block numbers.
You can test SKIA functionality today by installing the SKIA app, a new way to auto-capture events with others. Unlike apps that organize your photos around “events” or “albums” using heuristics, the SKIA app is the first application that can reconstruct and interpret events precisely. You do not need to take photos or appear in a photo to be recognized as being present: simply install the app, invite friends, and watch every minute and every picture from your times together magically reflected in your timeline in real time!
The SKIA app populates your timeline with media and events that you have in common with the people most important to you: your connections. Your timeline is computed dynamically. When you add a person to your list of connections, he or she immediately appears in all the events and media that you have in common. When you disconnect from a user, he or she disappears from your timeline and you disappear from his or hers. The app automatically connects you with your friends on Facebook, but you can connect with anyone willing to share his or her side of your common story.
The SKIA app is aware of every moment that you spend around your connections and every picture that you or they take when you are together. It does not matter what camera application you use (e.g., Camera or Instagram). For each event, the app tells you about photos that you may want to share and any photos from others that you may want to request. The SKIA app normally waits until the event is over before notifying you and your friends about any photos that you may want to swap. However, you can examine the up-to-date status of any media at any time, including simple stats on the number of photos from each event participant.
You can use SKIA to safely share, request, or swap media with the click of a button. The dynamic nature of the app means that you can share with anyone, even a stranger: simply connect and swap pictures from the event in progress or any past events from your times together. No photos leave your device unless you explicitly share them, and you always have an option to make any media that you do not want to share invisible to others. Other than the cost of storing your photos in the cloud, there is no reason why you should not be able to use a future version of the SKIA app to swap all your memories with another user simply by touching phones.
Similar to multiple accounts of the same story, each user connection adds another dimension to events in your timeline. The more connections there are, the better the app can reconstruct each event as seen from your perspective. That said, what constitutes an individual event is subject to interpretation. For example, you are likely to perceive a social gathering as a single event, even though the number and identities of people present may change over the course of the event. In the SKIA app, a humanlike perception of events is achieved using an algorithm that is guaranteed to interpret events optimally, subject to the snapshot information available and an event metric - a mathematical definition of what you are likely to perceive as a standalone event.
The event metric used in SKIA takes into account a large number of factors and can interpret even very complex events. The exact interpretation depends on the user. For example, a person who shows up at a housewarming party and stays for the entire duration is likely to perceive it as a single event. Someone else who shows up, leaves, and comes back an hour later may perceive it as two different events, possibly with more events in between. For ongoing events, your timeline always reflects the best interpretation of events up to that point.
Because each user’s timeline in the SKIA app is private to that user, no one else besides you and your connections is privy to your association with any particular event or photo. As far as other users are concerned, without your snapshot data, you do not exist. Unless you are connected to a user, your data cannot be compared, and therefore you do not show up in each other’s timelines. Similarly, by deleting a range of your snapshot data, you prevent it from ever matching snapshots from other users and therefore disassociate yourself from any events or media within the range, even those that you do not know about. The right to be forgotten is a key feature of SKIA design.
Developed by ex-Google and ex-Microsoft engineers, SKIA is the first technology with the potential to capture your story with every person, business, or Internet-enabled Thing in the world. Importantly, it can do it in a way that keeps you firmly in control of your part of the bigger SKIA universe.