blackberry

Reaction to PPK’s “The iPhone obsession”

Posted by Mike Brittain on February 08, 2010
Mobile / Comments Off on Reaction to PPK’s “The iPhone obsession”

PPK wrote a thought provoking post drawing a parallel between iPhone-specific mobile development and IE6-specific development we saw begin a decade ago and is still, somewhat surprisingly, biting us in the ass.  It’s an important warning to heed, but I think he misses some critical points about mobile web usage trends and dwells too much on a snapshot of current statistics about mobile handset market share.

Why are developers obsessed with the iPhone?

Let’s not mince words.  Mobile web browsing has traditionally been a horrible experience.  I’ve had a couple of what seemed like great smartphones (a BlackBerry 8700 and a Palm Treo 550).  They made me feel like I could use the web, and were better than nothing, but they were still a terrible experience when compared with today’s mobile web.  To deal with the fact that these handsets couldn’t consume all of the image formats, plugins, or even standard HTML produced for the web, the browsers either munged their rendering or made use of proxies that would reformat a web site’s HTML content to be more WAP-ready.  Transfer speeds were also doggedly slow.  It made much of the web accessible, but was a rough ride.

It’s not even worth talking about the people who were making mobile-friendly sites three years ago.  It’s not to say they didn’t exist, but the number of sites customized for mobile browsers at that point is negligible.

The iPhone coming to market changed the game.  Why?  Because Mobile Safari allowed users to see real web sites and not dumbed down version of web pages (well, except for Flash).  Additionally, AT&T contracts for iPhones require data plans.  Most smartphones on the market can be purchased with a contract that doesn’t include web data usage.   I just priced out BlackBerry Tour and Droid Eris (HTC) phones on Verizon and their base package includes no data usage.  You pay an additional $1.99/MB for data transfer.  BlackBerry handsets are huge in the U.S., but they’re simply not for web usage, they’re purchase primarily for email and texting.  (I believe this will change, but RIM needs to massively overhaul their browser architecture to catch up to the current state of mobile browsers being released on other phones.)

The graph below demonstrates the effect of the iPhone on mobile web usage (global).  Click for full size.

Source: Quantcast 2009 Mobile Web Trends Report

I am not advocating that we only design for the iPhone.  Newer mobile operating systems are incorporating WebKit into their default offerings.  Even though the versions of WebKit released on iPhone, Android, Symbian, Palm, etc. differ, they are all starting miles ahead of the mobile browsers from two or three years ago.  If PPK is concerned about developers favoring a technology (as they did IE6), should we be concerned about a dominance of WebKit and an ignorance of everything else?

Trends for mobile web usage

Another problem I have with the article is the statistics that were chosen.  There is too much focus on mobile handset/OS market share and not on mobile web usage.  All of the statistics that PPK chose to show are a snapshot of the current market.  If a web developer took this sort of approach to their web development strategy, they may have concluded in April 2009 that “Internet Explorer 8 only has 3.6% market share, let’s not worry too much about it.” (Source: Net Applications)

Mobile handset/OS market share has no correlation to mobile web usage.  Looking at the stats presented in PPK’s post, Symbian commands 45% of the smartphone market share (I’m fairly sure this is global market share, he made a point of not allowing developers to focus on the U.S. alone).  Contrast that with Quantcast’s 2009 Mobile Web Usage Report which shows that Symbian makes up just over 3% of global mobile web usage (all handsets included).

This graph, again from Quantcast’s 2009 report, demonstrates the mobile web market share (global) of the top handset operating systems. Click to enlarge.

Source: Quantcast 2009 Mobile Web Trends Report

Bottom line: The mobile web is tiny

There’s one more point I want to make, also supported by Quantcast’s report.  Statistics on mobile phone usage and mobile web penetration by market can get pretty heady.  It’s exciting to see all of this growth in mobile.  But the fact is that despite all of the people in the world walking around with their mobile phones, they’re not yet consuming very much of the web.  According to Quantcast, by the end of 2009 mobile web usage accounts for just 0.95% of total web usage worldwide.

Much respect

To be clear, my intention is not to bash PPK. His research, code samples, and compatibility tables are invaluable to the web development community.  I know I’ve used them countless times.  Many thanks!

I also agree with his overall rant, which is that building iPhone-specific sites is a dumb approach.  I hope to write more on that soon.

Additional resources and data

I’ve put a lot of emphasis on numbers I found in a Quantcast report.  Their findings are based on a pixel-based measurement of web usage and report only from sites where their instrumentation is deployed. Concerns I have are whether their measurements are effective on all mobile browsers (including those using transcoding proxies), and whether their measurements would be skewed by higher deployment of their pixels on sites in one global region over others.  It seems, however, that most of the best known operating systems are represented.

I didn’t call out any of the numbers from the AdMob report (listed below) because I don’t believe an ad serving network would have solid coverage of the mobile web, especially not on a global scale.

Below are some additional resources worth reviewing which I read while researching these trends.

Mobile Metrics Report, Dec 2009 – AdMob

State of the Mobile Web, Sept 2009 – Opera

The Mobile Internet Report, Dec 2009 – Morgan Stanley

Tags: , , , , , , , , , ,

Browser Testing for Mobile Web Applications

Posted by Mike Brittain on January 31, 2010
Misc / Comments Off on Browser Testing for Mobile Web Applications

Developers working on mobile web apps need to be able to test their apps or sites in all of the major mobile platforms.  Unfortunately, there are not a lot of good resources online for how to go about this.  You could pay for a service from a mobile testing company, like DeviceAnywhere, who provides access to a wide selection of real devices (using a virtual client).  Or you could go the free route by installing a variety of SDKs and mobile phone simulators.

Base Setup

I’m developing on a Mac.  Many of these emulators are Windows-specific.  Additionally, this could end up being a lot of work to setup, so putting all of these tools onto a Windows virtual machine will let me move the VM to another machine in the future and save me from reinstalling from scratch.  On my Mac I’m running Parallels Desktop with a copy of Windows XP.

The only exception is the iPhone SDK which includes a simulator for the iPhone.  The iPhone SDK is only available for installation on the Mac OS and I’ll be leaving it out of the instructions below.  I also haven’t installed or tested the 3.2 (beta) yet which includes an iPad simulator.

Java

Big surprise that Java is used for some of these SDKs and simulators, so we might as well get started by installing the JDK and runtime if you don’t already have it installed.  You should be able to download a copy of the JDK from here:

http://java.sun.com/javase/

I grabbed “JDK 6 Update 18”.

Android

Download the Android SDK from Google’s Android Developer site and run the enclosed SDK Setup program.

Unzip the .zip package you download and put in a location you want to keep the files (perhaps within Program Files) and then run the SDK Setup program.

In the “Installed Packages” section of the setup program, click “Update All…” to download the platforms and APIs that will be run by the SDK.

To create an emulator for a specific version of the Android OS, select the “Virtual Devices” option, then click the “New…” button.  In the dialog box that opens, enter a name for your emulator and select a target OS (e.g. “Android 2.0.1”).  Then click the “Create AVD” button.  Select your new emulator from the list and click the “Start” button.  When the emulator starts you’ll find an icon for “browser” on the main screen.

Symbian

In the past, I have setup Symbian emulators and SDKs to do local testing.  When I returned to their site to download new software I was pleased to find that they now provide a service for accessing virtual devices over the Internet using a Java application.  Visit http://apu.ndhub.net/ to register and access a wide selection of devices.

Easy!

BlackBerry

BlackBerry simulators for various models and OS versions can be downloaded from their developer site.  Each simulator is downloaded as its own installer package.  So download all of the  emulators you want to test (Storm, Bold, Pearl, etc.) and run their installers.

http://na.blackberry.com/eng/developers/resources/simulators.jsp

This seems simple enough, but if you start up one of these simulators and open the web browser you’ll quickly find that you’re missing a critical piece: network access.  To access the web from these emulators you need to also download the MDS Services Simulator package.  Find a link for this download from the resources page:

http://na.blackberry.com/eng/developers/resources/

Also note that BlackBerry makes available some documentation specific to web application development for the BlackBerry platform.  You can find these resources at the address below (registration required):

http://na.blackberry.com/eng/developers/browserdev/

Palm webOS SDK

The Palm SDK includes a web browser within its phone simulator which is useful for testing the browser that runs on the Palm Pre and Palm Pixi.

Go to Palm’s developer site and look for a button or link to download the SDK.

The emulator runs within Sun’s VirtualBox software.  There is a link from the Palm download site for downloading VirtualBox.  Follow the instructions and install VirtualBox first.

Next, download and install the webOS SDK.

Once you’ve completed the installation, you can start up Palm emulator from your Start Menu: Programs > Palm > SDK > Palm Emulator.

When you run VirtualBox, it may prompt you to download an updated version.  The Palm Emulator (as of January 30, 2010) will not run on the latest version of Virtual Box.  Stick to the version that you download from the Palm Developer web site (3.0.10).

Wrap up

This should get your started with a testing environment for a few of the top mobile browsers on the market today.

If you’ve got other tips to share about testing mobile browsers, share them in the comments below.

Tags: , , , , , , , , , , , ,

How to Improve JavaScript Latency in Mobile Browsers

Posted by Mike Brittain on January 20, 2009
Mobile / 2 Comments

Mobile browsers are really coming along.  Mobile Safari is built on top of WebKit and has just as much capability as the desktop version.  Same with Android’s browser.  Blackberry’s browser, I understand, has improved tremendously over previous versions.  The new offering from Palm centers application development around web technologies HTML, CSS, and JavaScript.

As more applications and data grow to live in the cloud, then access to them via a browser must be easy and fast, which is often not the case with data on mobile devices.  A web site can take many seconds to several minutes to load all of the content required.  And at the heart of many sites these days lie some common elements — JavaScript libraries.

Personally, I have avoided heavy-weight libraries for mobile application development, because I know that they are a burden to the end-user.  This is less often the case for desktop users, who typically have broadband connections at home or at work.  So what do we do to improve this situation?

I propose that the mobile browser makers (or OS makers, in most cases) embed standard versions of common JavaScript libraries within their browsers.  Google already makes a number of these available as a hosted solution for web application developers: jQuery, YUI, Prototype, script.aculo.us, etc.  Other players, particularly in the CDN space, could also become involved in hosting these frameworks.  Nearly half of the libraries that Google hosts are larger than the 25 KB cache limit in mobile Safari (for example).  By embedding a handful of these libraries, mobile browsers could speed up some of the overhead of mobile applications that rely on Ajax or heavy DOM manipulation.

How would you do this?  Likely by inspecting HTTP requests by URL.  Google’s hosted libraries include version numbers, which allows developers to peg their work to a specific version, not having to worry about quirks in future versions that could upset their apps.  When an application makes use of one of these embedded libraries, the browser can simply execute the JavaScript library without having to make an external request.  If the application uses a newer version that is not embedded in the browser, the HTTP request would proceed as normal.  End users would get a slower experience than with an embedded framework, but that experience would be no worse than we have now.

I’m interested in hearing others’ thoughts about this idea.

Tags: , , , , , , , , , , , ,