The advantage of native apps
There are lots of talk about netbooks and the cloud and web apps. If you believe all of it, you’d think all you need is a browser and an internet connection. You’d be mostly right. You would need a browser – a very modern one and soon an HTML5 based browser. You’d also need an internet connection and a fast one at that.
Web applications have the advantage of delivering both the user experience and the data from a server every time. If a bug fix needs to go out to everyone or an new feature, it happens the next time a user visits the application web address. No fuss. No foul. But, if the application has a rich user experience with drop downs, and graphics, and drag-n-drop, and worse, if the application was developed in a pristine modern lab, then that application makes assumptions about the quality of the network – it’s speed, it’s latency, and it’s resilience. While this describes the original lab environment and it may even describe what you will find in close proximity to the mega-cities, this does not describe most of real world.
Once again, in the third quarter of 2009, 19% of the Internet connections around the world were at speeds greater than 5 Mbps. This level was fairly consistent with the prior quarter, as well as compared to the same period a year ago. The United States, however, saw high broadband adoption rates decline slightly in the third quarter, losing 0.7%, while shedding a more concerning 8.8% year-over-year. The global level of high broadband penetration, shown in Figure 10, remained consistent quarter-over-quarter, remaining at 0.01 – that is, one high broadband IP per 100 people.
source: Akamai
When just looking at the United States, 91% of the people do *not* have the "high speed" internet.
What can be done ? There are two options:
- deploy high speed internet everywhere
- build applications that use the available internet connectivity better
The first will happen slowly and you as an application producer or consumer don’t have much control of it. What you do control is the applications. As a consumer – whether it be an individual or an organization can choose which web applications you use and standardize. You have two options "better applications".
Data centric applications can do a better job of getting the application "out of the way". A good example is this blog. It recently added a new format targeted at mobile devices which reduces load and display time by about 60%. This same interface could be used for any browser. The result is that all of the information of the blog is conveyed with some reduction in functionality but it may be those features were not needed in the first place. Personally, I think we can learn a lot by paying attention to the mobile device environment. It forces applications to leverage the network for what it provides – connectivity – but not assume it is ubiquitous, fast, or consistent.
User Interface (UI) intensive applications require a different solution. If the experience is important, then perhaps the UI should be persistent on the desktop / device and the internet is only used to transfer data as needed. These have an additional advantage in that different devices / user / conditions drive the application requirements. Many web applications have taken this direction. How you implement the desktop application is highly variable. It could be native code – rich experience with less training given it follows standards. It could be Java – common experience across multiple platforms; And soon, it could be persistent HTML5 with it’s localStorage. This last option has the advantage of being a web application so it can be updated quickly and has the advantage of local storage so it does not need to pass the entire user experience back and forth with the server each time.


