There’s been an explosion of the web and cloud related development tools and services such as Web 2.0, RIA’s, Silverlight, multiple cloud services, AZURE etc… Big companies (including Microsoft) have been pushing to move away from fat clients to a thinner clients consisting mostly of the browser. This is all great and understandable however looking at all these developments from the point of utilizing all this power on the Mobile Devices, there are all lacking acknowledgement of a few important issues. The first one is the device connectivity. The reality is that DEVICES ARE NOT ALWAYS CONNECTED… period. So if you are running this fabulous AJAX and JSON (or Silverlight) enabled application in the browser, as soon as the device goes in the area with no wireless reception (travelling, blind spots, subway, basement, elevator, hiking, etc…) your application becomes un-useful unless… there’s an ABILITY TO CACHE THE DATA ON THE DEVICE. This is in most cases restricted by the browser sandbox.
Oh wait there more… What if you would want to detect the connectivity or make use of all these magnificent peripheral devices (Bluetooth, GSP, orientation sensor, etc…) that are becoming a part of most of the smart mobile gadgets these days? Nope. You can’t do it either. The point of this rant is that in the middle of the noise and the hype of the advancing technology; let’s not forget about may be more complex but important solutions that have been proven to work for many years in the past – Rich Client applications that allow full access to the local resources with a combination of data syncing and caching technologies. The user experience matter. If the application becomes unresponsive just because I am in the elevator, it’s a bad user experience. If the application displays “Page not found” error while in the middle of retrieving customer data, it’s a bad user experience. So let’s be realistic.