Archive for the 'Non-personal(?)' Category

Context-aware system architecture

The main objective of a context-aware system is to translate sensor input into application action and adapted UI. In between, raw sensor information is used to build user context. It is very important to note that not all sensors have high contribution in defining user context. Contexts like “running” will probably only need the data from accelerometers.

One nice overview of a complete context-aware system is available here. The document is rather old, but clearly represents a very interesting high-level architecture. I think that this is the way to follow. In this architecture, DBUS can be used as the bridge between a context information daemon and applications.

Context-aware system high-level architecture

Another challenge is context representation. What data structure should be used to model a user’s ever-changing context? My first guess is an extended finite state machine where contexts are represented by states and sensors inputs are the trigger conditions for state transition.

Context state machine example

Context-aware applications

N810 context-aware

Recently I’ve been looking into some of the technologies (not necessarily new) that should be interesting for mobile/embedded related projects: augmented reality, context-awareness and location-based services (LBS). From the three, context-awareness was chosen as the focus for competence development. Context-awareness seems to be one of the next big things for mobile applications. As noted here, Google and Apple recently submitted patents related to context.

A context-aware application is a piece of software that examines and reacts to the user’s changing situation. It adapts based on inputs such as (a) the location where the user is; (b) the proximity of friends and other people; (c) accessible servers and other nearby devices; and (d) environmental factors like lighting and noise level. Based on the contextual inputs an application can adapt itself by adding, removing or changing its components’ behavior and UI.

Some of the challenges in context-aware computing are related to context representation and storage, update frequency, necessary input (sensor and infrastructure) identification, etc.

From a N810 and Maemo perspective, there is a bunch of inputs that can be used to detect the context: GPS, Bluetooth, wireless network, ambient light sensor, internal temperature sensor, camera and an external microphone.

Starting reference material can be found in the following links:

Context-Aware Computing Applications
Intro to Context-Aware Computing
Is Context-Aware Computing Taking Control Away from the User? Three Levels of Interactivity Examined

Microformats and a Web page tagger

While preparing an experiment for my master’s degree, I needed to manually tag terms from Web pages and store these term/tag pairs for later processing. This set of term/tag pairs was the basis for performance evaluation of two extraction methods I worked on. The experiment can be summarize as: a page is transformed into a set of terms, which are manually tagged and then processed to extract semi-structured data in the form of postal addresses. Performance is evaluated by comparing the manually tagged set with the resulting extraction.

The whole “problem” is with the manual tagging step and how it handles term/tag pairs. These pairs are based on term position relative to all the terms in the page, starting with position 0. This is very dependent on the parser used to transform the Web page into plain text, making it difficult for others to use my test set. My current parser is implemented with BeautifulSoup and some Python code. Also, tagging a set of terms without the actual look of a Web page isn’t something that I like. I prefer to have a system where terms are tagged directly from a rendered page. See the screenshot below for an idea on how the current system looks. Each term can be tagged with one of eight different tags, each associated to a different color.

Since most of the work required for my master’s is done, besides the dissertation defense and a paper, I’ve begun to investigate a proper solution for the problem of manually tagging and storing tag information from a rendered Web page.

So far, I’ve come across microformats. A microformat is “a way to make your Web pages readable by more than just people. The idea is that you put special forms of HTML in your page, around the stuff you already have in your page. This special code lets other computers that happen to be looking at your page make some form of sense out of it.” The microformat information is expected to be encoded by the Web page author, but I don’t see why this could not be also used by my tagging system.

More specifically, for the case of postal addresses, is the adr microformat. I must say that I didn’t like it too much. The elements of a postal address are not represented in much detail, such as a separate property for street name and another for building number. I currently require this level of detail. I might end up devising a microformat of my own.

My current idea is to develop a Firefox plug-in or some JavaScript to be automatically embedded into pages. The final target to aid the task of manually tagging terms from a rendered Web page by storing tags using a microformat in the page itself.

New MacBook user

Now I’m a MacBook Pro user. Why? Is it the hype surrounding Apple? I’m not quite sure, possibility in part, but the MacBook is very nice piece of hardware. I don’t know how this whole experience will end, but so far I have enjoyed the ride.

The whole OS (UI, Applications folder, etc) is somewhat different from the Ubuntu/GNOME pair I’ve used (and will continue to use somewhere) in the last 3 years. I will also miss some keys from the keyboard: Home, End, PgUp and PgDn.

And of course I had to reinstall the whole OS again, I wouldn’t be completely satisfied without doing it. So far, only the basic got installed: updates, Adium, Firefox, Growl, iTerm, Xcode and Python 2.6.1 with lxml.

Twitter Updates

September 2019
« Jan