Context-awareness
As the name implies, context-awareness is about being aware of the context you are in. For most people being context-aware means knowing things like where they are, and which people are around them. But it can be a lot more than that, and it can be used in a lot of different situations.
For an engineer building houses being context-aware could mean not building a 12-story apartment building in the countryside, where people would prefer to live in 1 or 2-story houses. It’s also about adapting to the surrounding environment, like making buildings in Japan resistant to earthquakes, since they occur quite often.
So all in all context-awareness is a lot about where you are located, and what is going on all around you. But it can be a lot more than that. Being context-aware can also mean being aware of what you are doing right now. If you got both your arms full going to the counter in the supermarket and your cell phones starts ringing, being context-aware keeps you from answering your cell phone, thus keeping you from dropping all your goods to smash on the floor (though surprisingly few people actually acts this way).
Most people are context-aware most of the time, which helps them handle everyday life, and all of this is pretty self-explanatory in most situations, now I’ve just put a name on it. So what is a talk about context-awareness doing on a blog about software and software development?
Consider what it would mean if software was context-aware. Most people today own a cell phone, and carries it everywhere, all the time, but it mostly just sits in a pocket or similar and just does it’s job. When somebody calls you up on your cell phone or send a text message, the cell phone vibrates or make a noise, nice and easy, the user makes an interaction with the cell phone, and the cell phone responds. But interesting things could happen, if the phone was made aware of the context it’s operating in.
What is context-aware software
Making a software context-aware could make way for several enhancements, by for example making cell phones react differently under different circumstances. One example of context-aware cell phones is the cell phones which has a built-in light sensor, and adjusts the brightness of the display based on the amount of light in the room, thus preventing the user from being blinded by an extremely bright display while standing in a dark room. That’s being aware of your physical context.
Another kind of context-aware software could be facebook which suggest friends and activities to each user based on what their friends “like”. That’s being aware of your social context.
What is becoming obvious here is that there are several kinds of context, each providing it’s own information. For each additional “level” of context you can add to your application it will apparently be possible for the application to provide more focused information to the user. For a salesman who normally spends most of his working hours, Monday through Friday from 8-16 in his office, the cell phone following him around, in his pocket, could have a pretty good idea of the context he is normally in. If then, one Wednesday at 13, his cell phone’s status is still set to work, but the cell phone knows from it’s GPS-coordinates that he is not in his office. That would tell the cell phone that the user (the salesman) is not in his office, but is most likely out to attend a meeting, so if someone calls it probably wouldn’t be appreciated if the cell phone just started playing music at the maximum volume available, thus the cell phone would turn down it’s volume, and only use the vibrator functionality to alert the user of an incoming call. This functionality could possibly be achieved using the context of the person’s work, by keeping a log of his daily routines, and comparing it with the phone’s location, using the GPS-sensor and the phone’s status, which is set by the user.
Context-aware mobile applications
So, why is all this interesting? I believe that making software more context-aware can help greatly increase the usability of the software. Even small things like making often-used functionality easier to reach, and hiding functions that the user never uses, can make for a slicker more user-friendly interface.
My own main interest in this subject right now, is that I’ve just started working on my bachelor thesis. The main part of this project will be focused on a context-aware application for cell phones. If this subject has your interest you should check back here once in a while, or follow my rss-feed, since I will write a lot more posts on the subject as my project develops.
Pitfalls
Of course context-awareness isn’t all good. To be context-aware, the software has to keep track of the user, this will usually include some means that some people will consider surveillance, and get the usual “big brother shivers”. This is very valid concerns. For several years we have seen online advertisers using tracking cookies to follow people around, as they surf the internet. This information would then be used to provide each surfer with personalized advertising, thus raising the click-through-rate for the advertisements.
I’m personally very much against surveillance. This can to some extend collide with my interest in serving personalized information based on user preferences. That’s why anonymity is a big concern in my own project. Since the project is still in it’s early stages I’m still not quite sure how to handle the issue, but right now I’m thinking something like only accessing information in a need-to-know basis, as in, only letting the application fetch the information it actually needs, and besides that, only storing the information that’s absolutely crucial to store. In that regard I’m also considering placing as much as possible of the available information on the cell phone, and not on the central server, thus keeping the user’s personal information on the user’s device with the user where it belongs.
I hope that this introduction to context-awareness has caught your interest, and that you will check back later to follow my posts as the projects develops and more posts will be published to the blog. If you have any feedback, questions or comments, please leave a comment, and I will take a look at it. Inspiration and suggestions for other subjects or further study in this one, will be greatly appreciated as well.
Related posts:

October 22nd, 2009 at 11:50 am
[...] This post was mentioned on Twitter by . said: [...]