Wednesday, February 16, 2011

Survey sez!

We are deep into two WP7 dev surveys, but I just love this stuff and so I'm going to leak some preliminary data out now – if you want me to send you a link to the final results, send me an email at sebastian at preemptive dot com.

The first survey we are doing goes back to the earliest group of WP7 developers, “first 300,” and asks how they have made out over the past two months.

The second survey targets roughly another 1,500 active wp7 devs who are using analytics and/or obfuscation but who began their work after the initial survey.

Here are a few tidbits that we see so far…

Analytics improves mobile development practices and app value

Going back to the original 300 and asking those who had deployed apps with analytics, we have found that:

  • 82% of the devs say that using Runtime Intelligence (RI) has “helped them to establish for themselves the value of analytics for app development overall”

With regards to their specific WP7 app in the marketplace, the devs directly credited their use of RI as:

  • Increasing the value of their app (45%)
  • Improving their app’s user experience (36%)
  • Improving their app's quality (27%)

Mobile app devs migrating to WP7 4X’s faster than .NET devs

In the first 300, only 4% of the registered developers targeted two or more additional mobile platforms. This indicated to me at least that the very first developers to develop for WP7 were already MSFT devotees versus serious mobile app developers exploring WP7 as an alternative/incremental mobile platform.

However, in the latest wave of developers, that stat has more than quadrupled. There is no question that developers who identify themselves as mobile app developers first rather than iOS, .NET, or Android developers are building for WP7.

Platform share for those developers targeting multiple mobile platforms are (in addition to WP7):

  • iOS 69%
  • Android 67%
  • RIM 23%
  • Symbian 5%

There’s a lot more to come – so stay tuned (or shoot me an email). Cheers!

Tuesday, February 15, 2011

Do good while doing well: Build a Windows Phone 7 app and secure a $100 donation for your local user group.

The only thing better than doing something good is when it also helps you do well – and so when we had the opportunity to join with Telerik, a fantastic ISV (that is also) focused on improving developer and application value, and with Microsoft on a campaign to help developers and their local user group chapters – there was no doubt that we were going to want in.

What’s the deal? Simply put, any developer who develops their own Windows Phone app using both Telerik controls and Runtime Intelligence will:

  1. Have $100 donated to their local user group (that’s doing good), and
  2. Have an app on the marketplace that combines a great user experience with the usage and adoption analytics to prove (and improve) it (that’s doing well).

Of course, nothing can be this simple right? – Wrong! To learn more, visit http://www.telerik.com/windowsphoneFTW

You still here? Not convinced yet? Here are some more details…..

All you need to do is:

  • Develop and deploy any WP7 application using Telerik RadControls for Windows Phone AND PreEmptive Runtime Intelligence for Windows Phone, AND
  • Get this done and certified before May 31st 2011

By the way, there is no limit to how many apps you and your user group can submit, but we will only recognize the first 500 qualifying applications – so build early and build often!

Also, needless to say, you are going to have free access to all of the required software. So go on – click through and do some good at http://www.telerik.com/windowsphoneFTW

Want to spread the news? Present at your next user group meeting? Here’s a PPT

Wednesday, February 9, 2011

Dotfuscator 4.9.6 to Ship February 11

New features include:
  • 10X performance improvement for Runtime Intelligence messaging on Silverlight and XNA apps (on and off of the phone)
  • Expanded XAML obfuscation further improves IP protection
For Windows Phone 7 users, perhaps the most significant new feature will be, in fact, an invisible one; V4.9.6 includes a new analytics messaging implementation that offers a 10X performance improvement on the phone with a proportionate improvement in battery life preservation thrown in. This implementation employs a multi-threaded, “batch and send” approach.

If you think your app is at all sensitive to our (or anyone else’s) analytics traffic, I would encourage you to download the new version and retest. If you haven’t downloaded Dotfuscator and Runtime Intelligence for Windows Phone yet, you can get it right now at http://www.preemptive.com/windowsphone7.html

This performance enhancement applies to any Silverlight app - not just WP7 apps. Please note: multi-threaded messaging and caching was already supported on all other .NET applications.

Also included in this release (for apps both on and off of the phone) are incremental enhancements in XAML renaming obfuscation. If you are obfuscating your XAML, Dotfuscator will now provide automatic support (meaning no manual configuration or exclusions) for the renaming of attached properties, dependency properties, routed events, and attached events. This feature applies to Silverlight (WP7 and .NET) and WPF applications.

How do you get the new version? Registered Dotfuscator users with active maintenance (all WP7 developers are automatically included) can simply open their installed version of Dotfuscator and select “Check for Updates Now” under the Help menu. The link provided will step you through a simple upgrade path.

How do you take advantage of the performance improvements? Simply run your app through Dotfuscator again; there are no configuration changes required.

How do you take advantage of the extended XAML renaming capabilities? If you have already excluded instances of these specific properties/events in an existing configuration file, then you will need to “uncheck” those exclusions. New applications will be able to take advantage of the improved XAML protection capabilities from the start. Please note: as is always the case, if there are dependencies on these events/properties that cannot be detected through static analysis, then they will always need to be excluded.

When obfuscating XAML, always check the “warnings” panel for potentially “ambiguous” XAML during the initial configuration phase (and always test your apps post-obfuscation).

Tuesday, February 1, 2011

Riddle me this! Where can French, Italians, and Germans all agree?

Well, apparently, its in their tendency to pair wine with spicy Chinese food.

How did I come up with such a farfetched notion? The answer to “how” is “easily” when I started with a WP7 app like VinoMatch’s Mobile Sommelier that was instrumented with Runtime Intelligence for Windows Phone. But let me back-up a little.

On Nov 4, 2010 MSFT and LG announced that LG Owners Get Free Access to Popular Windows Phone 7 Applications. You can read more about the 10 premium apps and another 10 LG-specific apps on LG’s Facebook page here. They call the program “hAPPiness!”

Anyhow, it turns out that all 10 of the premium apps were instrumented with Runtime Intelligence and have been sending analytics since the January launch of the program.

Last week, Microsoft invited lead developers from all ten development teams on campus for three days to gather feedback as well as to hold some specialized training on a variety of technical topics – and I was fortunate enough to be invited to lead a discussion on best practices for incorporating mobile analytics into the development process. In support of this presentation, I was given permission to look into the runtime data that these 10 apps had been collecting to see what I could see.

The 10 premium apps that are free from LG through March 10th are:

1. Cocktail Flow by Gergely Orosz
2. Color Sprouts by Jarek Kowalski
3. Colorize by Kitron Software
4. Doodle God by JoyBits Ltd. (a Top 100 Paid App)
5. Envision by Dotnetfactory
6. Krashlander by Farseer Games (a Top 100 Paid App)
7. Mobile Sommelier by VinoMatch
8. Mr. Hat and the Magic Cube by BRAVO game studios
9. Talking Ragdoll by Spritehand LLC (a Top 100 Paid App)
10. Weave by Seles Games (a Top 100 Paid App)

While I can’t share the entire presentation here, VinoMatch and Gergely Orosz were kind enough to give me permission to include some of their mobile analytics in this discussion. I want to highlight two powerful analytical techniques using their real-world data.

Conversion feature analysis

Embedded within most apps are a few keystone features that drive conversion (from eval to paid, prospect to customer, fan to fanatic) and Cocktail Flow has one under development, Shopping Assistant. It does not yet connect directly to a store and, as a nascent feature, is not yet a centerpiece in their UX design. Here is what I was able to deduce from the Runtime Intelligence data:
  • Only 5.5% of all user sessions used the shopping assistant feature.
  • Of those, 49% used shopping assistant only once inside their session, and 51% used shopping assistant multiple times. Of those 51%, they used it for an average of 2.9 times per session. What were they doing?

With Runtime Intelligence, I am able to map out the full usage trail, feature-by-feature, session-by-session, and so I am also able to visualize:

  • Where in the sequence of features of each user session shopping assistance was being called.
  • And when it was used, was it a part of a “one use” session or one of those sessions where the user called the shopping assistant multiple times in a single session.

I can also see that the overwhelming number of Cocktail Flow users using this feature rarely used more than 10 features in their session and that virtually all lengthy sessions (taking more than 14 actions) were always churning (going back to the shopping assistant feature multiple times).

When this feature is functionally complete to the developer’s satisfaction, they will now have benchmarks to measure feature adoption (increase it over 5.5%) and session behaviors (when, how often, and under what circumstances the feature is used) all relating to what may ultimately be their most lucrative app feature.


Mutli-variable AB testing and cross-domain user profiling


In the Cocktail Flow example, we focused on a single feature. With Mobile Sommelier, we are going to add a few more dimensions.

The following graphic shows, as a relative percentage, how often ten selected features inside the Mobile Sommelier application were used over a 6 day period.

What we can see immediately is that there is very little variability over time. The population of users generally uses the application in the same way over time.

What can we do with this perspective?

If we were to release a new version of this App, we could immediately see any meta shift in behavior across the two versions (Runtime Intelligence will automatically roll-up multiple versions and then break them out when asked).

What CAN’T we do?

While we can see how often the “ShowTasteCard” feature has been used, we CAN’T readily determine which wine/food pairing users are most (or least) interested in. We can’t analyze custom, application specific data.

Luckily, Runtime Intelligence CAN grab this data – with no programming – all post-compile. For example, this (very busy) chart shows the how often (by percentage) users want to pair wine with specific foods (like BBQ or spicy Chinese) AND it is further broken out by country.

Of course, this is too busy to read in its current form, but the trend lines do immediately show that while all users may use the “ShowTasteCard” with generally the same frequency (as indicated in the last graphic), it is clear that they use the feature DIFFERENTLY, e.g. they care about different topics. Culture counts!

Let’s drill down.

Focusing in on just three countries (France, Germany, and Italy) and focusing on just a few of the food options (from AntiPasto through Chocolate Cake), we can see genuine differences in user behavior and preferences.

Perhaps it is not surprising that French are more interested in Caviar, Germans in apple pie, and the Italians in antipasto.

On the other hand, maybe we were not expecting Italians to show such a strong interest/preference for BBQ. Could this data point to a way to sell Zinfandel (a US export based on a grape that originated in Italy) into the Italian market? – as the US wine for US food (BBQ).

Some general best practices

At the end of the session, the developers generally agreed on the following developer patterns:
  • Instrument key usage and application milestones (Not just clicks and page views)
  • Capture user selections and preferences (Not just selection and preference setting events)

Other conventions and best practices

  • Implement exception reporting
  • Integrate runtime intelligence into your CRM, ALM, and Marketplace repositories

Application Analytics are not your older brother’s web clone for the phone!

These have been just a few small examples of the rich set of analytics that are now available (both on and off of the phone). So, if you think Runtime Intelligence is just another web analytic clone for the phone, think again – Runtime Intelligence provides application analytics – not web analytics (see my earlier blog Application analytics: a new game brings new rules).

In a nutshell, this means that these analytics include:

  • Custom data (including complex objects)
  • Session, feature, event, and method-level precision (not just event)
  • Exception reporting (unhandled, handled, and thrown)
  • Support for both Silverlight and XNA
  • Opt-in policy enforcement, SSL transmission, and caching
  • And were implemented using post-compile injection eliminating the requirement to change (or even recompile) source code.

Anyhow, I am ALWAYS eager to hear from developers who have employed analytics in cool and innovative ways – PLEASE reach out and share the wealth! Thanks