Wifi Printing becomes En Vougue

Wifiprint1
Recently, I had to get a new printer as the old one is slowly wearing out and an integrated scanner/copier would be a nice thing, too. Quite some things have changed since I last went to the computer store to buy a printer. Half of the printer/scanner/copier solutions starting from €120.- had built in Wifi so it can be used by all computers in the household. Looks like the Wifi chip has finally become cheap enough to make it into these sorts of devices. I wonder when/if digital cameras will be equipped with Wifi as well.

Wifiprint2
After some back and forth I decided to go for an HP C7280 for around 270 euros. A really impressive device with lots of functions. Setup was straight forward, input of the Wifi WPA key and it was part of the network. A bit of configuration in the Wifi access point to ensure it always gets the same IP address and the network was ready, too. The PictBridge USB port also supports USB sticks for direct printing and Bluetooth dongles to print directly from a mobile phone. I tried it with the Bluetooth dongle I usually use with my PC and the printer detected and used the Bluetooth stick without any manual configuration. Once the phone has sent the picture via Bluetooth the print starts automatically. Very nice. Printing from a PC via the Wifi network works just as quickly as over Ethernet or USB cable except for a somewhat long startup time of 20 seconds or so before the first page is printed. Subsequent pages, however, are printed without delay.

While I am very impressed with the printer I am VERY disappointed with the PC software of HP. I installed it on two computers and both, after rebooting, had a nasty task running in the background which consumed 100% of the processing power. Looks like I am not the only person with that problem so fortunately the Internet provided quick help. HP, how can such a glitch happen? Also, the software is not really light on CPU resources. While the printer is online some tasks in the background keep loading my CPU. Not that I would bother too much but the fan on my notebook runs almost permanently. Again, HP, what were you thinking? I’ve fixed the problem with a little hack, i.e. by killing the tasks running in the background and only activating them when I want to print something.

Despite the flaky HP software the printer integrates nicely in my home network due to the built in Wifi chip. No longer do I have to use memory sticks or to carry a notebook around when I want to print out something from a computer which is not close to the printer.

Velib’s Mobile Site

For a couple of months now, the city of Paris has an extensive network of automated bike rental stations throughout the city. The service is called "Velib" and is very well accepted. Velib’s are everywhere these days when you are out and about.

Screenshot0014_2
Velib also has a mobile site where people can search for the nearest Velib station and can see how many bikes are available there. The picture on the left shows how this looks like in the browser. It’s a bit pathetic that in this day and age, the service is still based on WAP 1.0, but o.k., it’s better than nothing. The service in it’s current state is a bit difficult to use but it shows the potential for tomorrow: With mobile phones with built in GPS receivers becoming more common and powerful mobile web browsers with AJAX support can be easily enhanced in the future to locate the user, center the map around his position and show him the next bike rental station with the information he needs.

Velib should publish a JavaScript API to retrieve bike rental station positions and availability information. I am sure somebody in Paris will quickly come up with a mobile mashup that combines Velib and Google Maps.

Offline Web Applications on Mobile Devices – Part 2

This blog enty is part 2 of my thoughts on offline web applications on mobile devices. In case you haven’t seen part 1 and are interested in this topic, you might want to read part 1 first before continuing here.

When allowing web applications to store data offline and to access locally available information a number of issues arise that require special attention:

Data Synchronization

When storing data both in a local database in the network, the databases have to be synchronized once the mobile device regains network connection. Even for single user applications local and remote database synchronization is not straight forward since the user could have first used the application on the mobile device while it was offline to change some data and later on via the desktop that modified that data in the network. This means that when the mobile devices goes online it can not assume the data base in the network was not modified. Thus, the application needs an algorithm to compare the changes made in the database on the mobile device with the changes made in the database on the network and then modify the local and the network database accordingly. The same applies to multi user applications such as shared calendars.

Access to Local Information Outside the Browser Cache

A big advantage of mobile devices is the ability to support the user’s creativity at the point of inspiration. When pictures, videos, podcasts, blog entries etc. are created on the mobile device they can automatically be enriched with other information such as GPS location before being instantly sent to a picture and video sharing site, blogs, etc. Current web applications, however, do not have access to files and other local data beyond what they can write into the local web database themselves while the device is not connected to the web. In the future it is thus necessary to create an interface for web applications to enable them to access user created content and additional information such as location information. Access to local information needs to be dealt with carefully as it presents a security and privacy issue as will be further discussed below. From the technical point of view the big question is how web applications could gain local access in a generic way to make them interoperable over a wide variety of devices. Some devices might have more sources of information than others. As using proprietary APIs to access such information would make web applications device specific, a standard set of functions must be designed which are then translated on each device into proprietary operating system commands.

Security and Privacy Considerations

Allowing a web application to store data locally or to even access local information beyond the browser cache has a number of security and privacy implications which have to be considered when implementing such functionality.

The main issue with having a local application and data cache in the web browser is that JavaScript applications can use the local cache for user tracking. Advertisement platforms could use the local interface to write a JavaScript program that is included in all web pages of their advertising partners and that records from which page it has been invoked in the local cache. When the same JavaScript application is executed again from a different page it reports the last page back to the advertisement server which can then generate a user profile. As most users are unlikely to agree with such methods the user has to be informed that an application wants to store information locally and what kind of privacy issues this could bring with it. The user should then have the choice to allow or deny the use of local storage either temporarily or, in case the JavaScript application is trusted, permanently.
Access to local device information outside the browser cache is even more sensitive as malicious JavaScript applications could read private data of the user and send it to a server in the network. Therefore, the user has to be informed about the JavaScript application trying to access local data and give the user the possibility to allow or deny the request. It is then for the user to decide whether he trusts the application and thus allows access to local resources. Again, the user should have the choice to allow access temporarily or permanently as trusted applications should be able to access local data without further queries to the user once agreement has been given. Otherwise, usability of the application would suffer.

As always, comments are welcome!

Being a Mobile Network Operator For a Day

Plugs
When you go to a lot of meetings at other people’s locations you learn over time to take two indispensable things with you to stay connected: First, a multiple socket outlet with a long extension cable as there are usually only two power sockets for 20 people. This has the nice side effect that other people are usually more than grateful for your seemingly bright idea (see picture on the left). Second, I bring my own Internet access as either there is no Wifi or Ethernet cable available or a firewall blocks my IPsec connection back to the home network.

Ap
Last week, I hosted an internal meeting at one of our locations for a number of employees coming to town from all over the world. Usually, our Wifi network works quite well except, of course, when you need it. So the local Wifi went on strike as soon as our two day meeting started. But we are an R&D lab, so we have Wifi Access Points around that can take over in times of crisis. So I became a mobile network operator for a day.

Traffic1
The Linksys WRT-54 Access Point with OpenWRT has a nice graphical network traffic analysis tool which I used throughout the meetings to see how much the network was used. Most of the time there were around 15 people connected to the access point, mostly for keeping up to date with their eMail and browsing the web a bit (the split attention syndrome). Even in the breaks when usage increased I was quite surprised that the usage of the network rarely went beyond an average of 10-20%. In other words, most of the time 80-90% of the capacity was not used.

Traffic2
I would have guessed before the experiment that utilization would be much higher as people often report from conferences that Wifi access at some point comes to a standstill. Looks like my conference was too small and my visitors less demanding despite some YouTube videos being streamed during the breaks 🙂

On the left are some graphics which show how the network was used during high times. The time recorded on the graph is around 4 minutes.

Offline Web Applications on Mobile Devices

I am currently doing some research in which directions applications on mobile devices will develop in the future. The following post on offline web applications on mobile devices has been inspired by a blog entry on Ajit Jaokars OpenGardens blog.

On the desktop, many web browser based JavaScript applications exist today with well designed user interfaces and connectivity to services and databases on the web. Web based applications such as GMail (email reader), Bloglines (blog reader), Writley (text processor), etc. are now even taking over some of the functionality of locally installed programs.  On mobile devices, this trend is not yet wide spread. In my opinion, there are a number of reasons for this:

  • Web browsers on mobile devices need to become AJAX capable. This is well underway and in the mid-term its likely that most mobile devices will include such a browser. As JavaScript and the functions for asynchronous communication with the web server are standardized, developers can design applications which will work over a wide variety of mobile devices. This is an important key to success as services which only work on a limited number of mobile devices are unlikely to be successful as they will be unable to attract a sufficiently large user base.
  • Web applications need to work even if the network is not available. This is crucial for applications such as calendars, address books, etc., which have to be accessible at any time and any place.
  • Some applications should also be able to get access to the resources of the device which is important for applications used for uploading information such as pictures to the web or use the device’s built in GPS device to get the current position to be able to deliver information relevant to the user’s current location.

With the traditional server/browser approach these things are not possible. If the connection to the network is lost, web applications can not be loaded onto the device from the web server and user input can not be sent back to the web. A number of different initiatives have thus started to address these shortcomings.

Google Gears

Google’s approach is based on a web browser plugin which offers JavaScript applications on web pages an API to store pages locally. Furthermore, the plugin allows applications to store data locally. When the page is accessed when the device is not connected to the network, the local copy of the web page including the JavaScript program is used instead. The Gears plugin extends a web browser with the following functionality:

  • A local server which feeds the web browser with web pages which have been stored in the local cache in case the device is used in offline mode.
  • A relational database in which JavaScript applications on web pages can store information. To stay with the example above, a calendar application could hold a copy of the user’s calendar entries which are synchronized with the calendar entries in the web when the device is online and the application is used.
  • As synchronizing the local and remote data depository after going online could take considerable time it is important that such activities do not block the execution of the JavaScript application on the web page. Thus, the Gears API contains a ‘WorkerPool’ which allows executing JavaScript code in the background.

At the beginning of 2008, Google Gears is only available for desktop based browsers as it depends on a web browser plugin interface which is not yet available in any mobile browser. As the software is available as open source under a BSD license the way is free for mobile browser developers to include it in future versions of their products. While Google Gears enables web applications to run offline, there is not yet an extension which also allows web applications to use local resources (e.g. access to the file system, getting network information, GPS information, etc.).

Nokia S60 Web Widgets

Nokia’s vision for local web applications on mobile devices are widgets. Unlike Google Gear’s approach a widget is not executed inside the web browser. Instead, it just uses the web browser’s core as a runtime environment and otherwise looks like a native application. Widgets can even have their own icon that appears along local applications in application menus of the device. Not running in the user interface of the web browser but instead having the full screen available has a number of advantages. From the user’s point of view the program can be started and controlled just like local applications. When the widget is started by clicking on the icon in the program list, the web browser core is loaded and the JavaScript and HTML page which the JavaScript application can modify is shown on the screen just as a local application.

The first version of the web widgets packet does not offer local storage to applications which limits its use to times when the device is connected to the network in case data needs to be stored between invocations of the widget. Also, there are no interfaces at the moment to get other data from the device such as calendar entries, address book access, etc. Widgets do have access, however, to system information such as the current battery power level, network properties such as signal strength and network name, display light control, vibration control, speaker control, memory properties, etc.

HTML-5

For version 5 of the Hypertext Markup Language (HTML) the World Wide Web Consortium (W3C) is specifying tools to make web pages and embedded JavaScript applications available offline. The approach taken by the W3C is very similar to Google Gears and also features offline caching of web pages and a data repository for JavaScript applications to store data locally. There are two ways of storing data locally. For simple data structures, data can be stored in name/value pairs. For more complex data, JavaScript applications can use a SQL database with standardized functions to query, insert, change and delete data. The advantage over Google Gears is that once the standardization of HTML-5 is finalized, browsers can natively support offline web applications and a plugin like for Google Gears is no longer required.

That’s it for a first overview. In a future post I’ll take a look at data synchronization between the network database and the local cache, why and how some applications should be able to access local data beyond the cache and the security and privacy implications of local web applications.

As always, comments are welcome.

IMS Terminal Specifications

While 3GPP specs pretty much go on the bit layer to describe how the IMS should look like in the network, I was wondering lately how the IMS could be implemented from the handset point of view. Here are links to two interesting documents which give a rather interesting insight into how the industry thinks IMS should work on terminals:

Bit Pipe or Profiting from the Long Tail?

Mobile network operators are always pointing to the fact that they don’t want to be mere bitpipes but would rather prefer to remain a network + service provider as they are with voice telephony today. Most have recognized some time ago that this is a rather unrealistic goal and are opening their walled gardens. But maybe this bitpipe disgust could be remedied with a different perspective on things!?

Apart from the few killer apps born out of web 2.0 (Google search, maps, Flickr, Amazon, eBay, Facebook, …) most people today use quite a number of services in the Long Tail of the web. In case you are not familiar with Long Tail economics, take a look the original article by Chris Anderson published on Wired magazine which focused on goods on the long tail but is in my opinion applicable to services as well. It is these startup or niche segment services that might give the final incentive for users to consider going online from their mobile. The "problem" for network operators is that they can’t be the provider of the killer apps, since they are already out there and they also can’t be the provider of those niche apps, since there is not a lot of money to be made in the long tail as this article by Alex Isold on ReadWriteWeb aptly points out.

What Alex also points out, however, that while you can not make a lot of money in the Long Tail but you can actually make a lot of money WITH the Long Tail as aptly demonstrated by Amazon or eBay. So now look at mobile operators: Selling bandwidth is nothing but making money with the Long Tail of the web. Sounds a lot better than ‘bitpipe’, no?

Comments as always welcome!

Broadband Internet via 2-way Astra Satellite

Every now and then I get an eMail from someone asking me for advice on how to best hook up to the Internet from that little cottage they have bought in a remote place in Italy. Not quite sure why it’s always Italy, seems to be a nice place for a cottage. If 3G is not available their best chance so far was to buy a prepaid SIM card from TIM and use their nationwide EDGE network. But it seems there is no an affordable alternative available.

SES Astra has started their broadband Internet satellite service that does not require a phone line for the return path. The receiver/transmitter requires a satellite dish or, in case a satellite dish is already installed for reception of TV programs from the Astra satellite, the receiver/transmitter can be installed alongside the TV receiver module.

It seems the service is not sold directly by Astra but via national resellers. In Germany, Filiago is the reseller. A flatrate with 1 MBit/s downlink and 128 kbit/s uplink is available for around 40 euros a month.

According to Astra the service is available throughout Europe. Very nice!