Virtually There

Virtual tourism has been booming since the advent of Google maps, Bing maps, Street View, Map Jack, and similar web services. Always wanted to visit the Niagara falls? Type 43.080°N, 79.071°W into your geo browser and off you go. Couldn't afford the ticket to Egypt, but still want to see the pyramids? Type "Giza" and zoom in. The Eiffel tower? Let Google fly you there for free: 48º 51' 32 N, 002º 17' 45 E Voilà! Virtual tourism is a resource-preserving, cheap, and extremely fast way to travel the world. You can zip from one landmark to the next, even if they are continents apart, without spending a single cent and without releasing a single carbon atom into the atmosphere.

On top of that you get a very unique view of the places you visit, namely a bird's eye view, which is not what you normally see as a tourist. For example, viewing London from several hundred feet up in the air gives you a singular perspective of traffic arteries, city planning, and zoning. But of course, it's not quite like being there. Even diving into the Google street view of Piccadilly circus, although an interesting experience, just doesn't compare to the immersion of actually being there. The noisiness of the place, the constant drizzle, the occasional businessman navigating through throngs of tourists, the diversions offered by cafés, pubs, and souvenir shops… all that is missing. And to be frank, the virtual pyramids on Google Earth aren't quite as awe inspiring as the originals.

But what am I complaining about? Virtual map technology is awesome enough. It's just a few years old and it has already changed the world. Of course, we had geographic information systems before Google Earth, but these were lame by comparison. Just frozen pixels for geeky administrators. Now everybody is geo-coding, geo-tracking, geo-tagging and the recent explosion of mobile devices with built-in GPS has certainly accelerated this trend. Instead of: "Can you tell me on what side of Westminster Abbey you are?", you ask: "Can you give me your long/lat?" and let your mobile phone guide you to the meeting point. Mobile GPS provide convenience, control and the promise that you will never have to ask for directions.

One recent afternoon, I had the luxury of getting bored with my programming work, so I decided to divert myself with geo-surfing on Google Earth. Instead of virtual travel to new exotic places, I decided to zoom into a location that I knew very well: my native town of Wuppertal in North Rhine-Westphalia, Germany. I should say that I haven't lived in Wuppertal for twenty years and I visit the place only occasionally. But I soon found that not much had changed since the day of my departure. The streets, buildings, and sights conveyed by Google maps looked all very familiar to me. Diving deeper into Street View, I found that even many of the old shops were still there, though they might have changed owners in the meantime. It's hard to believe, but minor details like post boxes, telephone booths, and advertising columns were still at the same place where I remembered them.

This caused a peculiar kind of deja-vu experience. I wanted to explore it further, so I began a virtual walk through Wuppertal following the street view camera points. After some random moves, I had an idea. What better walk to take than my old way to school? Then, after starting off from my previous home, I soon had the feeling that I am travelling not only through virtual space, but also through virtual time. Every part of this undistinguished, unremarkable path, every street corner, every turn seemed to trigger some memory. Here I found myself walking through the park with the old chestnut trees, where we collected chestnuts when we were kids. There was the old villa with that odd oriel window, the bus station where I waited for the school bus, the mini mart where mum sent us shopping groceries.

It turned out to be the most amazing virtual journey I had ever taken. Every turn of the street revealed a familiar sight and stories were connected to many of them. I came across the wire mesh fenced play area where I lost and won my first table tennis battles, the one were I once got beaten up by the older kids. I passed through the grounds of the closed down factory that my brother combed through in search of abandoned treasures. Old factories were the most wonderful sites to explore. This particular one was gone now. Nothing of it was left in Google street view. When approached my old school, I crossed the allotments where we once picked pears and apples from the trees. I went through the sweeping lawns of the school campus and remembered all the wonderful days I had spent there, summer and winter, from grade five to grade thirteen. Wow! Thank you Google, for this virtual walk. I had to end it there, because I still had work to do, but with all those neural pathways activated in my brain, it was almost like a real journey in space and time.

HTML5 Shaping Up

HTML 5It's been a while since I last wrote about the upcoming HTML5 standard -two years to be precise- and a lot has happened since then. Not only has the W3C (World Wide Web Consortium ) draft moved closer to the finishing line, but quite a bit of the HTML5 package is already implemented and ready for deployment in modern browsers. Regarding the completeness of HTML5 support, Google Chrome is currently leading the pack, followed closely by Firefox, Opera and Safari. Even Microsoft seems to have discovered the advantage of standards compliance, as its upcoming IE9 includes support for several new HTML5 features. If you are a web developer and haven't delved into the details of HTML5 yet, now is the time.

As many web developers spend more time coding server side languages than coding HTML, they might think about HTML programming as a secondary skill. However, this contains the misconception that the new HTML5 standard is just about angle bracket tags. – It is not . – HTML is the heart wood of web programming and the upcoming HTML5 standard is the most comprehensive update that web developers have seen since the days of Mosaic. In this article, I am going to summarise some important points about HTML5 that every web developer should understand before moving on to the technical details.

HTML5 is not just about markup. Although the new HTML5 standard contains new tag definitions and deprecates old ones, the package goes far beyond markup definition. It does not just define new tags with new functionality, but it also defines the accompanying APIs in unprecedented detail. It contains diverse features for audio and video playback, 3D imaging, drag-and-drop, new form elements, a canvas element for 2D drawing, offline database storage, document editing, geolocation, microdata for semantic markup embedding, and CSS3, the next level of the cascading style sheets standard.

HTML5 is not going to be released with a drum-roll. The HTML5 specifications have been developed by the Web Hypertext Application Technology Working Group (WHATWG) of the W3C since 2004. The first public working draft was published in 2008. The specifications are considered an ongoing work and are expected to reach candidate recommendation stage within the next two years. In the meantime, the parts of the specification which are considered stable are being implemented by browser developers. Thus HTML5 is expected to reach the market in gradual steps over a number of years.

HTML5 is not all-or-nothing. Indeed, there was never an all-or-nothing scenario, even with prior versions of the HTML standard. Browser detection software typically doesn't test for HTML version support, but for individual features, such as support for a certain DOM level, API constructs, or specific feature implementations. Because HTML5 is a bundle of (largely independent) features and APIs, it will be no different with HTML5. For example, geolocation does not rely in any way on 3D imaging, the canvas does nor rely on drag-and-drop, and so on. Application developers can make use of these features without having to worry about HTML5 support on a whole.

HTML5 is designed with backwards compatibility. Upgrading your web pages to HTML5 might be as easy as replacing the HTML4 doctype tag with the HTML5 doctype. Chances are that all tags in a typical page -if they weren't already deprecated in HTML4- will still work in HTML5. Furthermore, the new standard enhances rather than replaces existing functionality. For example, the <input> tags in an HTML5 form may use the new input types for email, date, and numeric data entry. On older browsers without support for HTML5 tags, these are rendered as regular text input fields. The HTML5 form validation functionality, designed to simplify routine Javascript data validation, is also designed to be degradable in older browsers.

HTML5 is already here. Since the market introduction of HTML5 occurs incrementally,  many features are already available in up-to-date web browsers. For instance, semantic markup, canvas, and basic audio and video playback are already supported by the latest browser versions. One can safely assume that the upcoming Firefox 4 and IE 9 releases will put even more HTML5 features at the developer's disposal. Go to http://html5test.com to check your browser and find out which new features it already supports. See http://www.html5rocks.com for an interactive presentation, as well as in-depth tutorials and code examples of the new HTML5 features. Finally, a list of websites that already makes use of HTML5 (and ideas what it may be used for) can be found at http://html5gallery.com.

Durable Devices

ThinkpadWhile recently perusing a brochure from a local IT mall, I was simultaneously amused and impressed to see that Lenovo Thinkpad computers are now being advertised as "military grade" laptops. Apparently this goes back to a recent press release by Lenovo announcing that its laptops have met military specs for semi-rugged computing. Having owned a Thinkpad for five years, I think I understand, because we have sort of "semi-rugged" computing conditions in our family, kindly provided by our two children, two dogs, and my wife. The Thinkpad runs almost 24/7, playing cartoons for the kids, functioning as a mobile office for my wife, and serving me on occasional field trips, demos, and network tests, while it is downloading files at night time. It has been shoved and pushed, stepped on, licked by the doggies (they do love Thinkpads) and various liquids were spilled on it in the course of its life. After five years, I have just replaced the batteries and the hard disk and I expect it to go another few years. You could say, I am quite happy with Thinkpad performance.

Another class of devices that qualifies for rugged deployment are Nokia phones. The picture on the left probably speaks for itself. My wife just replaced this phone after three years of tough service during which the phone spent most time skidding around the dashboard of her car. In addition, it has survived several falls from considerable hight, including a spectacular one at the Mae Sa waterfall in Chiang Mai, and the usual wet conditions during the rainy season in Thailand. Finally, Pioneer has my admiration for its exceptionally long-lived optical drives. I recently replaced my Pioneer DVD/CD Player after ten years of service without failure or repair. Of course, I bought a new Pioneer player.

Gimme Gadgets

There are quite a few reasons to like gadgets. They are usually free and open source by design. They use standard web technologies, such as HTML, CSS, and Javascript. They are -at least in principle- platform-independent and portable. Perhaps most importantly, they are easy to program and deploy, which makes them ideal for small personal applications. I am thinking about keeping oneself informed about the scores of one's favourite sports team, displaying local bus schedules, or aggregating social network feeds into a custom-designed widget that sits on the desktop. I am sure that every computer user can come up with an idea for a mini-application that they always wanted but never found. Gadgets are the obvious solution, as they have web connectivity and web technology built in.

The first question for the budding gadget developer is then which gadget
technology to choose. In an ideal world, there would only be a single standardised package format and only a single standardised API. This would allow gadgets to be used on any platform and the question of choosing a format would not even arise. Alas, we don't live in an ideal world and therefore different platforms and markets have produced different gadget formats. For example, there are Windows desktop gadgets, Linux desktop gadgets, Google gadgets, and gadgets designed to be integrated into web portals. We will look at the different types of gadgets and their use in brief.

Windows Gadgets

Formerly known as Windows sidebar, Windows gadgets are based on the widget engine for Microsoft gadgets, which runs on the Windows platform only. A minimal gadget contains an XML configuration file (gadget.xml) and an HTML file (main.html). Other web files can be added. These are zipped for distribution and the resulting file is renamed to *.gadget. Windows gadgets have access to a special API divided into three parts. 1. Gadget objects provide gadget state and event handling. 2. System objects provide access to files, network and OS functions. 3. Presentation objects provide visual functionality, namely background, image, and text handling. Many Windows desktop gadgets can also be run (with slight modifications) inside a Windows Live homepage. The latter don't have access to the system API and cannot modify the page's DOM object tree.

Apple Dashboard

Dashboard is an application that hosts widgets on a Mac Computer. The widgets are contained in an invisible layer that is activated by clicking on a dock icon, or by pressing a key. Like Windows gadgets, Dashboard widgets are based on standard web technologies. A typical dashboard gadget contains six files: a property list and a JavaScript containing the interactive functionality, and HTML and CSS files, a background image and an icon for the visual design. Dashboard implements a client server architecture with widgets running as clients. There are three classes of Dashboard widgets: Accessory widgets that are self-contained mini-applications like clocks, calculators, etc., application widgets that interact with an existing Mac application, and information widgets that retrieve information from the Internet.

Google Gadgets

As is the case with Windows gadgets, Google gadgets come in different flavours. They are based on the Google Gadget API and run inside an iGoogle page or can be embedded into any web page, usually by loading content from a remote server. Google gadgets can also be run on the desktop if the Google Desktop product is installed, which is a bit of a downer, because Google Desktop also contains desktop search functionality that constantly indexes your PC's filesystem and allows text searches on all of your files. The good news is that the latter functionality can be disabled. Furthermore, there are Google gadgets with enhanced capabilities for the (recently decommissioned) Google Wave application. Like Windows gadgets, Google gadgets consist of XML, HTML, JavaScript (lots of it) and other web files. The advantage over their Windows cousins is that Google gadgets are more platform-independent, since Google Desktop is available for Windows, Linux and Mac. Reusing web gadgets for the desktop (or vice versa) is also easier. The Java-like Google Gadgets API provides methods in the gadgets.* namespace for IO, string and JSON processing, skinning, and other functions. Developers can use the iGoogle gadget editor and gadget testing environment for creating gadgets.

Yahoo Widgets

Google's competitor Yahoo also offers a gadget technology called Yahoo widgets based on the Konfabulator product. Yahoo widgets are primarily intended to run on the desktop rather than inside a web page and to that end, users must install the Yahoo widget engine. Unfortunately, this product is closed source and only available for Windows and Mac. Like their cousins, Yahoo widgets are comprised of XML, HTML, JavaScript, CSS (and optionally Flash) and are zipped into a single *.widget file for distribution. The comprehensive Yahoo Widgets API includes functions for event-driven GUI programming, DOM processing, downloading web pages, and access to Yahoo services. It is even possible to create and use an SQLite database with Yahoo widgets or access OS-specific functions by running shell scripts on Windows or AppleScript on the Mac.

Linux/Unix Gadgets

There is a variety of widget engines available for Linux and the market seems to be highly fragmented. For the already mentioned Google gadgets, Linux users can download the open source Google-Gadgets-For-Linux software that allows Google gadgets to be run without Google Desktop. In addition, there are the following widget engines, among others, for which a limited choice of existing widgets is available:

Gdesklet – is a Gnome program for running gadgets on a Linux desktop. Despite its name, it can be also be used with other Desktop managers other than Gnome, like KDE or Xfce. Desklets are applets programmed in the Python language.

SuperKaramba – is a widget engine for the KDE desktop. The visual aspects of a SuperKaramba widget are specified in a text file, while its functionality can be programmed in either Python, Ruby, or JavaScript.

Screenlets – is a X11/Compiz-based widget engine that is independent of the desktop environment. It supports Python applets with skins drawn in SVG and -more recently- web widgets written in HTML, CSS and JavaScript.

iPhony

One doesn't need to be a top-class industry analyst to notice that the sales of smart phones is currently exploding. These devices are simply everywhere. Shops are plastered with iPhones and Android phones. The word is that suppliers and manufacturers have difficulties coping with demand. Good times for smartphone makers, I suppose…

Although I guess that Android will grab the larger market share in the long run, the Apple iPhone has presently the edge. Apple is clearly the leader, not only in sales, but more importantly in design and technology, as well as in being the most expensive. And what do the other competitors do? Follow the leader, of course.

As a consequence, one can find a growing number of "i-phony" applications that make your device look like an iPhone. The must have ingredients are: 1) jewel case look – shiny multi-coloured icons on a matt black background, 2) finger-tip sized GUI elements (retire your stylus), and 3) sliding dynamics that allow users to pan and scroll virtual sceens across the display without scroll bars.

The old adage says: "If you can't make it, fake it." If you happen to own a device with an aging operating system, such as Symbian or Windows Mobile, there are ways to jazz up your phone without shelling out half a month's salary for a new smart phone. SPB's Mobile Shell 3.5, for example, will give your Pocket PC or phone a new coat of paint. It can't magically transform your device into an iPhone, but it's as "i-phony" as it gets without actually copying the Apple look.