First Live Poll for 2009 at Mobile Monday Sydney part 2

5 02 2009

The second half of the live poll used a “multiple answer” format to ask the group what their predictions and plans for 2009 were.

The answers to the first question showed that this audience is obviously very bullish about the overall mobile market – hard not to be really! The most popular prediction was that “Clients will increase their spending on mobile campaigns” followed closely by “iPhone will grow rapidly to 2% global market share” then “‘Unlimited’ data plans will emerge in Australia”. I think these three points together show clearly what people in the mobile industry have thought for a long time. Mobile has come of age and the growth of rich devices like the iPhone and removal of the users “fear of data costs” will only drive the mobile revolution further.

The antithesis of this is that hardly anyone predicted that the “Telcos will embrace off-deck & supply services like billing”. The term “kicking and screaming” comes to mind.

Group predictions for 2009

The answers to the second question gave us some insights into this group’s predictions about their own personal mobile behaviour in 2009. The clear winner here was “I will do more googling from my phone”. I think this shows the power of search for the Mobile Web.

The second most popular prediction was “I will track facebook/linkedin from my mobile” showing how important social media and networks are for the Mobile Web.

The other 3 I found interesting were people’s predictions about their communication behaviour – “I will send more email than SMS from my phone” was highest followed by “I will twitter from my mobile”. This has interesting implications for SMS revenue for the Telcos. And “I will still call more than SMS/email” shows the immediacy and power of voice is still alive…just.

Interestingly mobile share trading/banking and ticker purchases rated higher than moblogging (if you exclude microblogging using twitter).

Personal mobile usage predictions for 2009

The third set of answers shows us what people’s business plans for 2009 are. By far the majority was “Create an iPhone app” which fits perfectly with the first set of answers covered in this post and the AppStore stats from Tim’s presentation.

Interestingly for us “Run a mobile poll” was quite a close second. We first launched this innovation at <a href=”http://smartmobtoolkit.wordpress.com/2007/09/29/hello-world-2/”Web Directions in 2007 and now a US company and an Australian company have even attempted to copy our innovations. We’re really excited about how we’ve seen people’s devices and usage patterns adapt to this over all the polls we’ve run and there’s a wide range of new features and innovations we have planned for 2009.

We also have been able to identify some really interesting patterns in the underlying data around which devices have worked for which Telcos and how that has clearly changed their customers usage behaviour. While this data is not statistically significant it does provide some clear clues that can inform your mobile strategy and product development plans. We’ll be putting out a presentation based on this detailed analysis soon and also running some further research to validate these insights.

It was also good to see that a reasonable number of people plan to “Sponsor mobile monday”. We really encourage you all to do this as it’s a great event that benefits the whole industry.

Business plans for 2009





First Live Poll for 2009 at Mobile Monday Sydney

2 02 2009

Tonight we ran another live poll for the great team at Mobile Monday Sydney. There was an excellent participation rate of almost 80% (63 out of an estimated crowd of 80).

As always we offered SMS, URL and QR Code entry points and by far the majority of people joined in using SMS (57%).

Telstra (38%), closely followed by Optus (36%) were the dominant network providers, with Three (15%) and Voda (11%) trailing behind.

Nokia is still the dominant manufacturer (51%) with the iPhone quickly catching up behind (34%). Interestingly, Blackberry was only a very small share (9%).

And on the browser front Safari completely dominates (66%) due to the popularity of both iPhones and Symbian devices.

Compare this against last years results to see that Apple and Nokia have squeezed out almost all the other device manufacturers and the flow on effects that has had.

Analysis of phones, browsers, networks and how people joined

When asked what they’d like to see more of, the audience clearly responded with “more experts” (Industry leader interviews: 15%, Panels: 21% and International speakers: 15% – total 51%).

This was closely followed by more “new products” (Product launches: 15% and Product demos: 24% – total 39%).

What do the Mobile Monday Sydney crowd want to see more of?

The topics the MoMo Sydney audience are most interested in are primarily Mobile Advertising (24%) and Mobile User Experience (24%) followed by LBS/GPS (14%) and Mobile Payments (11%). This makes good sense considering the current state of the market and how everyone seems to be striving to find ways to generate revenue and keep users happy.

Compare this with last year to see the biggest change in interest is the decline of “Mobile Social Software” from 20% to 5%. In contrast “Mobile Advertising” has gone the other direction moving from 8% to 24%.

What topics should MoMo cover this year?

The analysis of who this audience represents shows that it’s quite a broad distribution across all the key categories. The largest segment is Mobile Application Developers (17%) followed by Mobile Services Agencies (14%), Telco/Carriers (14%) and Mobile Content Producers (11%). However Other (11%) is still quite a large slice that could be refined further.

Comparing this with last year shows there has actually been a bit of an evolution of the overall audience.

Who are you?

Overall, this poll has highlighted some really interesting patterns and when compared to last years results some key trends are starting to emerge. We’ll post the bar graphs from the “predictions” section of the poll soon, along with a more detailed assessment of some of the key usability trends hinted at in the underlying data.

I’d like to thank Tim, Oli, Gia and Shane for organising such a great event. The presentation that Tim and Oli did just before the poll was excellent and highlighted some really useful and interesting points.

BTW: If you’d like to organise a Live Mobile Poll for your event, company or group then give us a call.





Low brow iPhone users and Divergence

28 01 2009

On the topic of detecting capabilities of specific devices – here’s a new site we’ve released that targets the growing segment of “low brow” iPhone users (which includes me).

http://iDidntDoThat.com

It’s a simple prank tool along the lines of iFart – however it let’s you turn your iPhone into a remote control for your friend’s and family’s computers. You just load a webpage on their PC when they’re not looking and then you can use your iPhone to make it sound like they’re burping, farting or even watching porn. And you don’t have to leave your precious and expensive iPhone lying around on someone else’s desk to play this prank!

We’ll be upgrading the site to support other mobile devices soon…however we decided to quickly release the first version just for iPhone users as it’s so much easier to deliver a better user experience. We’ve also developed it as an iPhone application that will be released as soon as the AppStore team approve it.

But underlying this “low brow” toy is the deeper “high brow” concept of Divergence. I think a lot of people find this concept a little academic, however http://iDidntDoThat.com is a fun way of showing exactly what it means and feels like.

We use this same framework to connect all sorts of devices and applications across the network. We can make your phone or PC chirp whenever someone visits your site or just play a “cha ching” when it processes a sale. The same framework can even let call centre staff shift their focus from “filling in forms” and “reading out disclaimers” to a much friendlier and more brand-building “co-browsing” with your customers, helping guide them through your site to find the best matched product or solution for them.

Once you detach user interfaces from specific devices or applications and really start to absorb what Divergence means I think you’ll agree it opens up a whole new range of business models and opportunities.





Not-Device Detection javascript, perl and php code

26 01 2009

While server based detection using mod_rewrite or similar will provide a much better level of performance, sometimes you just want to handle it from within a script. Below are examples in javascript, perl and php so you can choose your language/environment. I would strongly recommend using a server side script (e.g. perl or php) but I’ve included a javascript version for reference. Of course if you’re cutting edge then you could run the javascript on the server-side too.

I hope you find this code useful. If you find any bugs or logical errors please let me know.

NOTE: This code is designed to support 3 key classes of device – PC, iPhone and POM (Plain Old Mobile). See the comments by the winmo detection that shows where you may like to extend this for other high-end devices (e.g. Windows Mobile or Symbian).

Javascript Example:

/**
 *  Copyright © 2009
 *  Rob Manson, Sean McCarthy and http://MOBusiness.com.au
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see .
 *
 *  Javascript Not-Device Detection Function
 *  Find out what type of device this is
 *  returns string - either pc, pom or iphone
 */
function _not_device_detection() {
    var ua = navigator.userAgent;
    var qs = window.location.search.substring(1);
    var agent = "error";
    var re = {
        "pcswitch" : new RegExp("pc", "i"),
        "pomswitch" : new RegExp("pom", "i"),
        "iphoneswitch" : new RegExp("iphone", "i"),
        "iphone" : new RegExp("iP(hone|od)(;|\s)", "i"),
        "winmo" : new RegExp("Windows\s+CE", "i"),
        "linux" : new RegExp("Linux", "i"),
        "windows" : new RegExp("Windows", "i"),
        "mac" : new RegExp("OS\s+(X|9)", "i"),
        "solaris" : new RegExp("Solaris", "i"),
        "bsd" : new RegExp("BSD", "i")
    };
    if (qs.match(re.pcswitch)) {
        /* This assumes you have a single query string value of "pc" */
        agent = "pc";
    } else if (qs.match(re.pomswitch)) {
        /* This assumes you have a single query string value of "pom" */
        agent = "pom";
    } else if (qs.match(re.iphoneswitch)) {
        /* This assumes you have a single query string value of "iphone" */
        agent = "iphone";
    } else if (ua.match(re.iphone)) {
        /* This user agent should be an iPhone/iPod */
        agent = "iphone";
    } else if (ua.match(re.winmo)) {
        /* This user agent should be a Windows Mobile device - you may want a special class for this and possibly high-end Symbian too */
        agent = "pom";
    } else if (
        (!ua.match(re.linux)) &&
        (!ua.match(re.windows)) &&
        (!ua.match(re.mac)) &&
        (!ua.match(re.solaris)) &&
        (!ua.match(re.bsd))
    ) {
        /* This user agent is not Linux, Windows, a Mac, Solaris or BSD */
        agent = "pom";
    } else {
        /* Otherwise assume it's a PC */
        agent = "pc";
    }
    return agent;
}

Perl Example:

######################################################################################################
##  Copyright © 2009
##  Rob Manson, Sean McCarthy and http://MOBusiness.com.au
##
##  This program is free software: you can redistribute it and/or modify
##  it under the terms of the GNU General Public License as published by
##  the Free Software Foundation, either version 3 of the License, or
##  (at your option) any later version.
##
##  This program is distributed in the hope that it will be useful,
##  but WITHOUT ANY WARRANTY; without even the implied warranty of
##  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
##  GNU General Public License for more details.
##
##  You should have received a copy of the GNU General Public License
##  along with this program.  If not, see .

##
## Perl Not-Device Detection method 
## Find out what type of device this is
## returns string - either pc, pom or iphone
######################################################################################################
sub _not_device_detection() {
    # either pass in \%ENV or pack the UA and QUERY into a hashref and pass that in
    my $env = shift;
    my $ua = $env->{HTTP_USER_AGENT};
    my $qs = $env->{QUERY_STRING};
    my $agent = "error";
    if ($qs =~ /^pc$/i) {
        # This assumes you have a single query string value of "pc"
        $agent = "pc";
    } elsif ($qs =~ /^pom$/i) {
        # This assumes you have a single query string value of "pom"
        $agent = "pom";
    } elsif ($qs =~ /^iphone$/i) {
        # This assumes you have a single query string value of "iphone"
        $agent = "iphone";
    } elsif ($ua =~ /iP(hone|od)(;|\s)/i) {
        # This user agent should be an iPhone/iPod 
        $agent = "iphone";
    } elsif ($ua =~ /Windows\s+CE/i) {
        # This user agent should be a Windows Mobile device - you may want a special class for this and possibly high-end Symbian too
        $agent = "pom";
    } elsif (
        (!$ua =~ /Linux/i) &&
        (!$ua =~ /Win/i) &&
        (!$ua =~ /OS\s+(X|9)/i) &&
        (!$ua =~ /Solaris/i) &&
        (!$ua =~ /BSD/i)
    ) {
        # This user agent is not Linux, Windows, a Mac, Solaris or BSD 
        $agent = "pom";
    } else {
        # Otherwise assume it's a PC
        $agent = "pc";
    }
    return $agent;
}

PHP Example:

/**
 *  Copyright © 2009
 *  Rob Manson, Sean McCarthy and http://MOBusiness.com.au
 *
 *  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see .
 * 
 * PHP Not-Device Detection Function
 * Find out what type of device this is
 * returns string - either pc, pom or iphone
 */
function _not_device_detection() {
    $ua = $_SERVER['HTTP_USER_AGENT'];
    $qs = $_SERVER['QUERY_STRING'];
    $agent = "error";
    if (preg_match('/^pc$/i', $qs)) {
        /* This assumes you have a single query string value of "pc" */
        $agent = "pc";
    } else if (preg_match('/^pom$/i', $qs)) {
        /* This assumes you have a single query string value of "pom" */
        $agent = "pom";
    } else if (preg_match('/^iphone$/i', $qs)) {
        /* This assumes you have a single query string value of "iphone" */
        $agent = "iphone";
    } else if (preg_match('/.*iP(hone|od)(;|\s).*$/i', $ua)) {
        /* This user agent should be an iPhone/iPod */
        $agent = "iphone";
    } else if (preg_match('/Windows\s+CE/i', $ua)) {
        /* This user agent should be a Windows Mobile device - you may want a special class for this and possibly high-end Symbian too */
        $agent = "pom";
    } else if (
        (!preg_match('/Linux/i', $ua)) and
        (!preg_match('/Win/i', $ua)) and
        (!preg_match('/OS\s+(X|9)/i', $ua)) and
        (!preg_match('/Solaris/i', $ua)) and
        (!preg_match('/BSD/i', $ua))
    ) {
        /* This user agent is not Linux, Windows, a Mac, Solaris or BSD */
        $agent = "pom";
    } else {
        /* Otherwise assume it's a PC */
        $agent = "pc";
    }
    return $agent;
}





Not-Device Detection Example Code

25 01 2009

Well I guess it wasn’t “just” after xmas – been a bit busy enjoying the Australian summer!

We’ve had a lot of interest in the “Not-Device Detection” solution and lots of requests for example code so here it is.

Below is an example snippet from an httpd.conf (e.g. configuration for Apache) using mod_rewrite.  This assumes you have 3 main version of your homepage.

  1. An iPhone/iPod Touch version using /iphone/index.html
  2. A Plain Old Mobile (POM) version using /pom/index.html
  3. A standard PC version using /index.html

Of course you can apply this model to more sophisticated solutions that also single out other specific devices or more complex collections of sub-pages. Other examples of this could also be implemented using perl or php scripts, but the performance is much better at the web server configuration level.

So, for this example let’s step through the code.

First make sure you have the RewriteEngine switched “on”.
RewriteEngine   on
Then detect the iPhone/iPod Touch first since they’re so easy to identify.
# iPhone/iPod redirected to iPhone index
RewriteCond %{HTTP_USER_AGENT}  ^.*iP(hone|od)(;|\s).*$
RewriteRule     ^/$         /iphone/index.html [PT]

The line below allows a user to choose to view the PC version by adding ?pc to the URL (e.g. from a specific switcher icon)
RewriteCond %{QUERY_STRING}     !^pc$ [NC]
You may want to exclude a number of standard bots here using generic strings.
You may also want to add exclusions for specific monitoring tools etc.  here too
RewriteCond %{HTTP_USER_AGENT} !(spider|crawl|slurp|bot) [NC]
Then here’s the meat of the “Not-Device Detection” solution.  You’ll notice that it mostly consists of !^ statements that say if this browser is NOT Linux, NOT Windows (excluding Win CE), NOT OS X or OS 9, NOT Solaris and NOT BSD then we’ll assume it’s a Mobile Phone and redirect it to /pom/index.html.
# Plain Old Mobile (POM) redirection (by exclusion)
RewriteCond %{HTTP_USER_AGENT}  !^.*Linux.*$ [NC]
RewriteCond %{HTTP_USER_AGENT}  !^.*Win.*$ [NC,OR]
RewriteCond %{HTTP_USER_AGENT}  ^.*Windows\s+CE.*$ [NC]
RewriteCond %{HTTP_USER_AGENT}  !^.*OS\s+(X|9).*$ [NC]
RewriteCond %{HTTP_USER_AGENT}  !^.*Solaris.*$ [NC]
RewriteCond %{HTTP_USER_AGENT}  !^.*BSD.*$
RewriteRule     ^/$         /pom/index.html [PT]

Otherwise it should just receive /index.html as normal.

While this may look a little complex if you’re not comfortable reading regular expressions…I think you’ll agree it’s extremely simple when you compare it to this spaghetti diagram over on the .mobi forum.

I’d like to thank James for creating this work of art…now whenever I want to explain to a client why having a .mobi domain is a wrong headed and silly idea that makes your web strategy more complicated I just point them to this single diagram.

Anyway, I hope you find the example configuration described above useful. If you have any questions or would like any help implementing this please post a comment here.





Not-Device Detection

16 10 2008

Over the last 2 years we’ve been refining a simpler and more powerful approach to device detection than everyone else seems to be focusing on.

While WURFL, Device Atlas, etc. are all great resources for very specific capability profiling…we’ve found that turning the problem upside down made much more sense and delivered faster, better results.

The key thing that most developers seem to be trying to do is to identify if a user IS using a specific Mobile Device.

The problem with this is that the User Agent strings on Mobile Devices are inconsistent at best…and completely useless or even non-existent at worst.

Once you accept this the inverse answer becomes clear.

PC browsers are much more reliable and consistent in identifying the Operating System they belong to. Also, there is only a small handful off Operating Systems you need to detect. So this is how our solution works.

We call this !device-detection (“Not Device” Detection).

If your User Agent isn’t one of the following Operating Systems:

- Windows
- Macintosh/Mac OSX
- Linux
- FreeBSD
- Solaris
- (Add niche OSes here)

And your User Agent doesn’t contain one of the following strings:

- bot
- slurp
- spider
- crawl

Then you are almost guaranteed to be on a Mobile Device.

Within this group you can then also clearly identify the important groups that are consistent:

- iPhone/iPod Touch
- Windows Mobile

We have implemented this method for two major Telco’s a major Insurance company, our leading edge Mobile Payment service and our own web projects. This is a strategy that has proven to be very effective and only requires a simple set of regular expressions in the form of Apache mod_rewrite directives that can work in either Apache or IIS.

We also couple this with a simple design pattern that provides a link from the Mobile site back to the PC site just in case we accidentally mis-classify a user. After all they should be able to ask for the full PC version if they really want it.

We’ve also recently put together a case-study that looks at some well known large corporations in Australia to see how they are or are NOT handling automatic device detection. The results are very surprising.

A full copy of the presentation is online on slideshare

Now we thought it’s time we shared this strategy in order to broaden the on-going device detection discussion.





Web analysis

1 10 2007

Mobile Web analysis

Here it is clear that awareness levels are not an issue with no “Didn’t know you could” answers at all.

Only a small 10% said “Never” and by far the majority of over 75% said they use the Mobile Web on a regular basis. Half use it “Weekly” or more with 25% using it on a “Daily” basis.

This is clearly an established product with considerable potential and actual regular use.








Follow

Get every new post delivered to your Inbox.