Friday, April 29, 2011

A Moment for the Tech

Let's take a sidestep. It's been mostly design, fun and games here, but of course there's another aspect which should be discussed from time to time. I mean, the title I'm working towards is in fact doctor of technology. In this post I'll present my current opinion of what technology will afford my goals. I have certain strong opinions about tech. I gravitate towards free, open-source technology for ideological reasons. I'm not 100% allergic to proprietary but I avoid it where I can.

When it comes to ubiquitous computing systems, connectivity is key. And in the center, I see web services. Extended to multiple platforms in various scale of course, but ultimately it's the internet that connects services. Ubi infrastructure is beyond the scope of my research but its application is not. At the moment most of the stuff is happening on the mobile device level. Tangible interfaces are still mostly in the lab. Computing has not yet escaped into the open world, sticking to our walls and desks. However, taking advantage of the ubiquity of smart phones and other devices capable of reading RFID or NFC tags, that future could be here any moment.

These technologies will be an important first step as they are inexpensive. The installation cost is minimal: just slap some tags into the environment. All done, and no walls were torn down. These tags can activate services over the web or simply contain information. The interesting part? Tags are tied to location and a specific task. Put another way, it's much easier to understand the context when these variables are fixed. This is a significant aid if we compare it to unaided mobile applications. There is no need to worry about locationing because the tag knows its own location. There is no need for the user to browse the mobile phone's crammed menus to find the application they're looking for, because the correct application is launched when they touch the tag.

While the use of tag-based technologies is ultimately limited, with creativity a lot can be achieved with them. The biggest limitation in fact are the mobile phones themselves - not all models have those necessary readers. This brings us to the next technology, which is way more available: the world wide web itself. Browsers are available in mobile phones, all kinds of terminals and of course desktop computers. These days, almost anything can run in the browser, at least with the correct plugins. The problem with plugins is that they are a bit "pick your poison" variety. Even Flash, the most ubiquitous plugin, is not available for iPhone users. I have chosen to go with HTML5. While it still has availability problems, at its core it is the most available solution, running basically anywhere where JavaScript is enabled.

While at the moment HTML5 with JavaScript cannot do as much as certain plugins, it is slowly getting there with Canvas, SVG, WebGL and HTML audio. A variety of good JavaScript engines, frameworks and libraries exist. I am mostly interested in game development engines. They provide interaction features beyond standardized web user interface widgets. Indeed, I believe that game engines are in many ways the future for interface programming. Sure, they require somewhat more work than widget-based toolkits. However, they are not that hard to work with. Besides, gameful applications won't look very gameful if made with widget toolkits - the association with conventional software is too strong. I am currently favoring Crafty JS. With my current project I will see how far it carries.

Finally, when talking about web services, there's the choice of a backend. Because of my background and general preferences, I'm determined to stick with Python. One of the primary reasonable reasons is the availability of high quality web development frameworks. I have chosen Pyramid. Well, actually I chose Pylons initially, but as it went into legacy state, I decided to pick up Pyramid instead. Fortunately I had not done too much programming with Pylons. While I don't have any particularly good reason for choosing Pyramid over, say, Django, its way of doing things feels better to me. I will also be using Python to program the core server facilities which will communicate with mobile phones reading RFID or NFC tags.

So I think this is the future for me. Web applications running on Python, with HTML5 and JavaScript frontend. The systems will be extended by RFID or NFC tags to provide location-specific services. My choices are, most importantly, feasible for a researcher. There is no need to create different versions of applications and no need for special hardware. And no need to tear down walls, which will be a huge benefit for getting permissions to do live experiments... There is one particular system with which I will be working with for majority of my time, and it will provide me most of the research data I need to write that thesis.

No comments:

Post a Comment