Clarence Eldefors blog Mostly about the web and technology


Android versions in the wild

Google recently released figures on the version numbers of Android phones accessing the android market. It's just validating what mostly all developers already know. All 1.5+ versions are important to support and different screens are as important.

Users are very fast to let developers know this, though. Already 3 months before the OTA update of Android 2.2 for my Nexus One I got a message about not being able to find an application in the 2.2 market from a user. The error is common, a default manifest file that has limits on API versions. I couldn't have tested the application on a higher API level at the development time so the abscence in the untested OS was not really an error. However it shows how easy it is to get feedback from users to correct such errors.

I have also gotten feedback on enabling the 2.2 install device (SD card or phone memory) as well as automatically generated crash reports that are also new in android 2.2. Adding to that it is for an application exclusively for Sweden where no 2.2 device has even been sold as of yet (but of course imported in different shady ways).

The chart below shows how important it is to keep backwards-compatibility in your applications, just like for web development and old browsers. Luckily the android emulators are very good and theres a fully functioning image for each and every API level. There's also other developer emulator images circling around where you can test the functions missing in the default images, such as a paid-app enabled market.

Historic development of Android versions


Huge server architectures

I enjoy to read about the architecture about some of the bigger internet related systems around. Be it about database sharding, Hadoop usage, choice of languages or development methods. I will continuously try to post some numbers from these adventures. Here is a start together with links that can be followed for more details.


From Data Center Knowledge quoting a talk at Structure 2010 by Facebook’s Jonathan Heiliger.
- 400 million users.
- 16 billion minutes spend on Facebook each day.
- 3 billion new photos per month
- More than a million photos viewed per second.

- Probably over 60,000 servers at date (Data Center Knowledge)
- Thousands of memcache servers. Most likely the biggest memcache cluster (Pingdom).


- 65,000 servers spanning 70 countries and 1000 networks.
- Hundreds of billions "Internet interactions" per day
- Traffic peaks at 2 Terabits per second
Source: Akamai


- Server number estimated at 450,000 at 2006 (High Scalability)
- Server number estimated at 1 million by Gartner (Pandia)


Why Swedish web TV isn’t as big as it could and should be

Swedish TV channels has well over a million weekly users watching full episodes on their web TV players. A big majority of it is the ad free SVT (state television) that is funded by tax payers. The rest is scattered amongst the 3 big commercial actors (TV4, Prosieben with kanal 5/9 and MTG with TV3/6).

With a somewhat unstable connection it is very easy to see some very easily fixed ways that they drive away their viewers.

Doubling the ads
All of the ad supported channels effectively throws ads at you. Firstly when you start the clip and later when you pass the ad spots in the video clip. However, they do not handle it any differently should you want to fast forward into minute 20 where you stopped watching the TV, or where you´re stream disconnected last try. This means you first have to wait for the introductory ad for a good bit, take a second to fast forward and then have to wait for a minute more for the in video ads that you fast forwarded past.

This nuisance is sure to scare away a lot people with disconnecting connections or those seeing short parts of the videos. It is incredibly easily fixed by putting the second ad spot after 10 minutes of watching the video instead of 10 minutes into the clip. It takes a technology change at a level where the channel itself has no direct control, though.

Unreliable fast forwarding
If you decide to do real streaming instead of pseudo-streaming, then at least make sure that the one feature the user will notice actually works.

Supporting slow connections
Be it an unreliable 3G connection or a foreign connection - a lot of people are not using stable 2+mbps connections and still want to watch the videos. There are two easy ways to support them - either you make it a pseudo-stream where you can preload the entire movie (see Youtube) or you also have available a lower bitrate video that is actually getting loaded instead of leading users into buffering land. None of the Swedish web TV stations does this anywhere close to good.

Ad bitrate
If your users can view the video - they should also be able to view the ads without buffering. Ad bitrate has to be the same, or lower, than the normal video playback to stop this.

Ubiquitous error reports
A lot of web TV players wants to make the users known when there is an error so they will know it is not the best you can get. However many of the players have so much false positives that it is soon enough getting normal to now and then get a semi-transparent layer on your movie saying there is an error with the video playback. However the only problem with the video is the error message covering it!

All of these problems together can create many very annoying experiences especially to new web TV users or new Internet users that are easily scared away. The problem is however that the competence in the areas is most often nowhere to be found in the broadcasting companies. Instead they have outsourced every part of the video processing and delivery - sometimes to several different parties. The route to only fix one of the problems may be very long this way and may even mean having to chose a different provider.