Angus made an interesting post talking about the relative merits of connecting to the Live Operating Environment (LOE) locally, rather than to the cloud. Anyone who has heard me present on SQL Compact, Sync Services or building Mobile Applications will know that “I hate the web”. Actually this is a complete lie, what I hate is the obsessive nature with which developers choose to build web applications “because it’s easy” – easy to build, easy to deploy, easy to upgrade. But what they forget is the user experience. Let’s face it, despite numerous attempts to make the web usable, there are still a number of non-usable elements about it:
– Firstly, the request-response model for interacting with pages and data is fundamentally not a great way to build applications. Whilst Ajax has gone a bit of the way to ease this problem, most developers don’t understand the concept of pre-loading data and trying to make the application more responsive by trying to predict what the user wants to do. The net effect is that the user still has to wait when they click that button – sure, they don’t see a full page refresh but they still have to wait, and wait and wait again….
– There are a couple of technologies out there that could make a real difference to building web applications. The leaders are definitely Silverlight and Flash – their ability to support rich graphics whilst supporting basic programming constructs such as threading mean that they can really be used for building applications. Unfortunately as these technologies both require client side installs and are typically associated with a browser, there is still the underlying issues associated with browser differences.
This brings me back to the post Angus made. He’s spot on with the list of things that the local LOE enables. I can’t count the number of times that I’ve got up on stage and talked about the issues associated with sync’ing data, application settings and authentication. But these are essentially all problems that need to be solved because you want the ability to keep working when there is no connection available.