Saturday 17 August 2013

Introduction to Context Aware Systems

Hello there,

Welcome to a new blog about Context Aware Systems. We intend this to be a destination site for people to discuss and find out information about Context Aware Systems.

Lets begin with some basics ....

What are Context Aware Systems? 
Well this friendly entry from Wikipedia, sets it into perspective 

Context Aware Systems

"Context-aware computing refers to a general class of mobile systems that can sense their physical environment, and adapt their behavior accordingly."

Here are a couple of more definitions

"software that examines and reacts to
an individual’s changing context.”
- Schilit, Adams, & Want 1994

“…aware of its user’s state and
surroundings, and help it adapt its behavior”
- Satyanarayanan 2002

Lets break the phrase down into words to better understand what it means

What is Context?

“any information that can be used to
characterize the situation of an entity.” (Dey et al., 2000)

- Identity (Who)
- Activity (What)
- Time (When)
- Location (Where) 

What is Aware?
A system that can "sense" what is the current context is an aware system. Most systems built till recently have been unaware of what is the context - for e.g. screensaver going on during a presentation etc. Contrast this to a smartphone today that turns off the screen as soon as you bring it close to your ear using a proximity sensor. This smartphone is "partially" aware of the context. 

Why is this important now? 
Well, up until recently we didnt have systems that were aware of the context - one of the most important context items was "Location" that could not be ascertained due to a few reasons: 

(1) The internet that forms the backbone of the computing systems today has addressing that is designed to be location agnostic. This is a good principle when it comes to distributed computing but alas fails miserably when you want to know the current location (one of the most useful features of the context) You dont know whether the user is from India or Indiana on the internet. Later on two things happened that alleviated this problem
Companies like MaxMind built GeoIP databases that mapped a user's proxy IP address to their location. So one could tell with relative certainty what was the location of a user. However, this was not absolute - try logging in from Asia via a proxy in US and most systems including Google thinks that you are "located" in US.
The second and important thing that happened is that GPS (earlier a military grade technology) started appearing in commodity smartphone systems. Suddenly, one could pinpoint the location of the user to within a few feet. This really jumpstarted the Context Aware Systems and a whole host of applications under the LBS (Location Based Services) banner came into being.

(2) The other reason was that till recently many sensors did not exist in computing systems. Sensors help in "sensing" context and hence makes them "aware". Again, the advent of smartphones with multiple sensors changed that. See the following picture (courtesy OpenSignal) that shows the number and type of sensors in recent Android based Samsung phones 

    Relative humidity
    Env. temperature
    Bluetooth radio
    WiFi radio
    FM radio
    Cell radio
    Front camera
    Rear camera
    Magnetic field
    Light flux
    Battery temp.
    S II
    S III

    S IV

(3) However, the presence of sensors alone was not sufficient, sensors can generate a lot of data very quickly. How do we make sense out of so much data that is generated so quickly? Multiply that by almost 1 billion people who are carrying smartphones and you can get a sense (no pun intended) of the scale of this problem.

Solution: Enter big data.

Using commodity machines and smart machine learning/data software systems were built that could analyze massive amounts of data quickly and hence complete the last part of the puzzle, i.e. the system could "adapt" to the "context" and change their behaviour accordingly.

More later.

Keep reading.