Localization session at Windows Phone Meetup in Silicon Valley

Date : May 16, 2012

Nokia-popupI had a great time last night at the Windows Phone Meetup in Silicon Valley.  Many thanks to all that attended and thanks to the Nokia folks for hosting the event.  There were a ton of great questions and comments.  I hope you all go out and start localizing your apps for the 63 consumer markets now waiting for them.

As promised, I’ve posted my slides and demos to my SkyDrive.  Let me know if you have any questions about any of the topics.

You can reach me via the contact form here on my blog or via twitter.

You can also follow me on twitter at https://twitter.com/benriga.  Do it for the puppy! Dog face

And finally, be sure to subscribe to Top Ranked, my new podcast series on Windows Phone publisher best practices.  You can subscribe using either Zune or iTunes.


I think I’m turning European

passportI spent the last 2 weeks traveling through various countries through Europe talking to developers of all kinds.  The whirlwind tour through 7 countries in 14 days gave me an opportunity to hear many ideas and concerns and to learn about what developers are out there building. 

If you attended one of the events where I was speaking, thank you so much for your participation.  I enjoyed every single one of those.  There was a ton of great comments and questions.  Clearly, there is some passion out there for development on Windows Phone.

Over the last week of the tour I focused mostly on Windows Phone 7.5 Refresh at events in Denmark, Finland, Austria and Italy. At those events I gave an update of Windows Phone 7.5 Refresh.  I also provided some developer guidance for devs who are building apps and provided some info on how to optimize apps to adapt to the new requirements of lower end devices.  To encourage developers to take advantage of the many new countries and languages we now support, I also provided an overview of how to localize apps .  Finally I gave you some tips on publishing and more importantly some guidance on how to make a bigger impact with the apps you’re publishing.

I promised to post my slides for those events so I’ve now made those available for you to download.  I’d love to hear feedback about the events, any topics I presented or any other issues you may have hit.

Feel free to let me know your thoughts via the comments below or via private message using the blog contact form.

And finally for those wondering, I can say that the puppy is safe and soundOpen-mouthed smile

 

 


Top Ranked – Crash King


View or download the video on Channel 9 (includes higher quality video)

Bad stuff happens!  There is no way around that.  It’s a fact; your apps, out there in the wild on consumers devices, will crash.  This in itself is ok but only if you can get the information about those crashes and use that information to fix the bugs that cause them.  The Windows Phone platform actually captures stack traces and provides those to you, the publisher of the app.  You can get a view of the number of crashes that are happening as well as download an Excel file with all the appropriate information and stack traces.  This is a good thing and you should take advantage of that information as it may give you some good clues as to what to fix to make your app a higher quality product.

CrashKing-CrashCount

There are a few things that App Hub does not give you though.  The first thing is that it may not give you enough information about the bugs that you are hitting.  One example of that is that the version number of the app is not provided so if you have published a few different versions of your app it is possible that a user is hitting a bug that you may have already fixed in a later version. 

The other issue is that stats on App Hub are delayed.  As a result you don’t see the issues that your end-users are hitting for a few days.  If something is happening out there that is causing a lot of crashes then you may not see it until after users start posting lots of low ratings and negative reviews. 

Another thing to keep in mind is that App Hub does not provide any sort of notification of issues.  It’s up to you to visit App Hub regularly and pull down those stack traces to see what’s going on. 

Finally (and I realize this is more a perception thing than an issue) end-users have no idea that the platform is gathering up those stack traces and making them available to you.  And, of course, they have no idea if you are looking at those traces and working on bug fixes.  As a result, when they see a bug most will assume the worst and give bad ratings and reviews.  As I’ve mentioned on a previous post you really want to make sure that, whenever you can, you provide the ability for the end-user to provide you feedback as that helps build a relationship which ultimately will result in higher ratings and ranking.

Fortunately there is a way to get around all of these issues.  Andy Pennell, a colleague on the Windows Phone dev team has posted some sample code which he dubbed Little Watson that I think every developer should include in all their apps.  Just like “Big” Watson does on Windows, that code does exactly what you would expect in that it captures all that stack trace info (including additional info you may need) and allows the end user to email it you so you can get to work fixing whatever bug caused the error.

Little Watson is pretty easy to use.  There are a few steps that you need to do:

  1. The first is to include the LittleWatson.cs in your project
  2. Then you need to let Little Watson know every time an exception happens.  When you do that Little Watson captures the trace info to isolated storage.  This is done by calling LittleWatson.ReportException.  You’ll need to do that in both RootFrame_NavigationFailed and Application_UnhandledException.  Both of those are in App.xaml.cs
  3. Finally to allow the end user to send you the stack trace you’ll need to add a call to LittleWatson.CheckForPreviousException() in the constructor for your main page (i.e. whatever page it is that your app launches into, usually that is MainPage.xaml.cs).  When you make that call Little Watson checks for an exception report file in isolated storage and if one exists prompts the end user to send it to you via email. 

Since Andy blogged about Little Watson, other devs have grabbed that great idea and taken it further.  One example of that is the Northern Lights open source project.  Northern Lights has many different capabilities that are useful to Windows Phone developers.  One of those is an implementation of Little Watson based on the work I mentioned above from Andy Pennell.  One thing that Northern Lights does beyond Andy’s code is that they provide you the capability to automatically send the trace info to a web service behind the scenes so that the end user does not have to see it.  You should probably be careful in doing something like that.  As I mentioned above, it might actually be a good thing for end-users to know that you care about bugs.  You may also want to be careful about sending stuff to a web service behind the users back.  Some users will get freaked out about that if they notice.  This would be especially bad if you were including any sort of Personally Identifiable Information (PII) along with those traces.  In general, you’ll probably want to let users know somehow that you are doing that and definitely stay away from capturing any PII.

Below I’ve included the source code for the project I used in the video.  It’s a ridiculously dumb app but I often get asked for source so I’m including it here for completeness. 

 

Let me know what you think about this episode of Top Ranked.

If you have questions about any of the videos, about problems or issues you’re hitting or if you have topics that you think would be of interest to other devs on the Windows Phone platform then drop me a note. I’d be particularly interested in hearing about some of the best practices you’ve adopted that you think have raised your quality or your ratings/ranking in the Marketplace. I’ll be sure to give full credit and link love whenever I can.

The Top Ranked series is hosted on Channel 9. You can view all the past videos there. You can also subscribe to the entire series via Zune or iTunes. All of that is available here:
https://channel9.msdn.com/Series/Top-Ranked

Let me know what you think by dropping me a note with the contact form on my blog here:
http://blogs.msdn.com/b/benriga/contact.aspx

Or better yet follow me on twitter and drop me a note there:
https://twitter.com/benriga

 

CrashKing.zip


Top Ranked – Element Alignment

Misaligned elements is probably one of the most common issues I see with apps in the marketplace.  In this episode of Top Ranked, I delve into why this is an issue and how easy it is to check for that and fix it.  Alignment is a part of the overall Metro design language.  I’ve even seen some designers in our UK COE group actually put post-it notes on their screens or on a device to verify that elements align properly.  This acts as a sort of forcing mechanism for them to check alignment.  The reason they do that is that you may not explicitly notice that stuff is out of alignment but when it is, you intuitively feel like something is off.  In general your app will feel a little sloppy when the element alignment is out of kilter.

The Metro design language does take alignment into account and as a result there are some things that you can keep in mind when designing and building pages.  The magic number 12 seems to resonate throughout the experience. Most elements in the native apps align up in a grid of one form or another.


View or download the video on Channel 9 (includes higher quality video)

The ingenious Jeff Wilcox built a development utility that makes getting the alignment right super simple.  This utility is called MetroGridHelper is also simple to find since you can grab it with NuGet.  Once included in your project you turn it on in App.xaml.cs in the same place where you turn on and off the frame rate counters and redraw regions etc.  You simply add MetroGridHelper.IsVisible = true; in the if block where the profiling info is included.  By doing it there you are assured that you will only ever see that grid when the debugger is actually attached (i.e. only in development).  When you run your project with the MetroGridHelper turned on, you’ll see a series of red squares layered over every screen in the app.  Those squares are strategically placed to make it really easy for you to see when elements are out of alignment.

Another thing to keep in mind while we’re talking about element alignment is the amount of space you leave to allow users to tap on an element (like an item in a list for instance).  Again here the magic number 12 is the number that you need.  Make sure that you have at least 12 pixels between tappable items so that the user can easily tap the item they want as opposed to mistakenly tapping nearby items.

You can read up on Jeff Wilcox’s MetroGridHelper on the original blog post but really all you need to do to use it is to grab it using NuGet.

Let me know what you think about this episode of Top Ranked.

If you have questions about any of the videos, about problems or issues you’re hitting or if you have topics that you think would be of interest to other devs on the Windows Phone platform then drop me a note. I’d be particularly interested in hearing about some of the best practices you’ve adopted that you think have raised your quality or your ratings/ranking in the Marketplace. I’ll be sure to give full credit and link love whenever I can.

The Top Ranked series is hosted on Channel 9. You can view all the past videos there. You can also subscribe to the entire series via Zune or iTunes. All that is available here:
https://channel9.msdn.com/Series/Top-Ranked

Let me know what you think by dropping me a note the contact form on my blog here:
http://blogs.msdn.com/b/benriga/contact.aspx

Or better yet follow me on twitter and drop me a note there:
https://twitter.com/benriga


Top Ranked – All About You

Date : March 13, 2012

The About page is usually one of the last things you think about when building an app.  It’s just not core to the whatever it is you’re trying to build.  And yet, you’ll soon find that it’s pretty much a necessity for most apps.  Not only is it something you can use to help build a better relationship with your users; it’s also something that can help you to fulfill some of the marketplace certification requirements. 

Having a place in your app that encourages the user to reach out to you and connect is a very good thing.  It could be used by them to report a bug or a wish list item (before they use the app rating to express their frustrations) or it could be another place where you encourage end users to rate and review or actually buy your app.  By communicating with users you will become more connected to them and your app’s ratings and reviews will tend to be more positive. 

The other area where the About page can be useful is in fulfilling some of the Marketplace Application Certification Requirements.  One requirement in particular (5.6) states that your app must include “application name, version information, and technical support contact information that are easily discoverable.”


View or download the video on Channel 9 (includes higher quality video)

In the video, I show a very simple app that surfaces an about page as a manually created page providing information about the app and myself.  Once you start thinking about what else you might include in the About page, manually maintaining that in code is probably not ideal.  You can add all sorts of things e.g. rate and review the app, a buy link for users using a Trial app, legal terms of use, credit to others who may have helped you (like open source projects) or a development change log.  As you can imagine this can start to get quite complicated and become a project in and of itself.  Fortunately someone has already done some of the heavy lifting for you.  Peter Kuhn aka Mister Goodcat has open sourced a project called Your Last About Dialog (YLAD) that goes a long way to making the About page a dead simple thing to add to your projects.

“Your Last About Dialog” is a robust and generic, highly configurable implementation you can easily pull into your own app and set up for your needs. It is able to pull most data from your application automatically, supports fetching both text and Xaml content from remote sources (with fallback local content), and allows easy localization of the complete dialog content to all of the languages supported by your app.

In the video I show off a few of the YLAD features but there are many more.  I encourage you to have a look by pulling it in to your app using NuGet.  You have installed NuGet, right? If you haven’t go do it now, I’ll wait here.

Let me know what you think about this episode of Top Ranked.

SOURCE CODE: I’ve provided the source code for the very simple app I showed in the video as an attachment (ItsAllAboutMe.zip) to the blog post below .

As an aside, I say the word “aboot” enough times that I’m sure many will spot my Canadian accent.  Don’t hate me.  Embarrassed smile 

If you have questions aboot any of the videos, aboot problems or issues you’re hitting or if you have topics that you think would be of interest to other devs on the Windows Phone platform then drop me a note. I’d be particularly interested in hearing aboot some of the best practices you’ve adopted that you think have raised your quality or your ratings/ranking in the Marketplace. I’ll be sure to give full credit and link love whenever I can.

The Top Ranked series is hosted on Channel 9. You can view all the past videos there. You can also subscribe to the entire series via Zune or iTunes. All that is available here:
https://channel9.msdn.com/Series/Top-Ranked

Let me know what you think by dropping me a note the contact form on my blog here:
http://blogs.msdn.com/b/benriga/contact.aspx

Or better yet follow me on twitter and drop me a note there:
https://twitter.com/benriga

ItsAllAboutMe.zip


Top Ranked – Control Feedback on Tap

Date : March 7, 2012

In this episode, I focus on another small tweak that developers can add to their apps that will help make those apps look a lot more like native apps.  I’m referring to the addition of the Tilt Effect to controls.  By default, when you add controls to the canvas in Visual Studio or Expression Blend they do not get the tilt effect.  This may seem like a small thing but as I’ve mentioned before the experience is something that users will notice and their ratings and as a result your rankings will be affected by that. 


View or download the video on Channel 9 (includes higher quality video)

The thing is, that there is, in fact, a really easy way to add the tilt effect to your apps using the Silverlight for Windows Phone Toolkit .  You can grab the source code for that from Codeplex or, even easier, you can just pull it in to your project and reference it using Nuget.

Adding the Tilt Effect is as simple as adding the namespace for the toolkit and then adding the effect to either the individual controls or to the entire page.  In most cases it shouldn’t take you more than a few seconds on each of the pages in your project so there’s really no reason for you not to take advantage of this.

Let me know what you think about this episode of Top Ranked.

If you have questions about any of the videos, about problems or issues you’re hitting or if you have topics that you think would be of interest to other devs on the Windows Phone platform then drop me a note. I’d be particularly interested in hearing about some of the best practices you’ve adopted that you think have raised your quality or your ratings/ranking in the Marketplace. I’ll be sure to give full credit and link love whenever I can.

The Top Ranked series is hosted on Channel 9. You can view all the past videos there. You can also subscribe to the entire series via Zune or iTunes. All that is available here:
https://channel9.msdn.com/Series/Top-Ranked

Let me know what you think by dropping me a note the contact form on my blog here:
http://blogs.msdn.com/b/benriga/contact.aspx

Or better yet follow me on twitter and drop me a note there:
https://twitter.com/benriga


Top Ranked – Market Testing

In this episode we talk about pricing and more generically about market testing.  I know, I know, marketing is probably not every coders favorite subject.  I bring it up as I’ve noticed many apps in the marketplace that are underpriced.  Apps that are cool, differentiated or do something of great value to the consumer can clearly support higher price points.  No user is ever going to ask you to charge them more for your app so the task of picking the right price point falls on you.  The easiest way to do that is to do market testing aka A/B testing (or split testing, bucket testing etc.).  In this episode I refer specifically to price testing for paid apps but this technique could easily be used to test for other things that might increase revenue in paid apps or downloads in free apps.  All sorts of things like categories,  descriptions, keywords, or artwork can be affect the performance of your app and so could be optimized.


View or download the video on Channel 9 (includes higher quality video)

As I mentioned above, from what I’ve seen in the marketplace many developers will underprice their apps.  They seem to be optimizing for number of downloads.  That is indeed what you want for free or ad-supported apps but for paid apps you probably want to optimize for revenue and that formula is a simple one everyone knows: revenue = paid downloads x price.  If you optimize for downloads then likely you are in a race to the bottom; i.e. how fast you can get to the $0.99 price point.

Since you have 2 variables to optimize and only one which you have any control over, the easiest way to optimize for revenue is to test different price points and watch the number of paid downloads at each point.  Obviously if you want to maximize revenue then you want to get the highest price possible for your app.  To do that start at a high price.  Over time you may need to drop the price (e.g. for competitive reasons or for sales or promotional events).

So the obvious question is: how do I do market testing on the Windows Phone marketplace?  Since you cannot vary pricing by market in the marketplace the way I recommend is to submit the same app with the same metadata twice.  You would do that to two different markets that have very similar buying behavior.  Examples of markets that have similar buying behavior are US/Canada, France/Belgium, Germany/Austria, or Australia/New Zealand.  By doing this you can do your A/B testing; i.e. by maintaining all things equal except for pricing then you can figure out what price the market will bear for your app.

Let me know what you think about this episode of Top Ranked.

If you have questions about any of the videos, about problems or issues you’re hitting or if you have topics that you think would be of interest to other devs on the Windows Phone platform then drop me a note. I’d be particularly interested in hearing about some of the best practices you’ve adopted that you think have raised your quality or your ratings/ranking in the Marketplace. I’ll be sure to give full credit and link love whenever I can.

The Top Ranked series is hosted on Channel 9. You can view all the past videos there. You can also subscribe to the entire series via Zune or iTunes. All that is available here:
https://channel9.msdn.com/Series/Top-Ranked

Let me know what you think by dropping me a note via the contact form on my blog here:
http://blogs.msdn.com/b/benriga/contact.aspx

Or better yet follow me on twitter and drop me a note there:
https://twitter.com/benriga


Top Ranked – Benefiting from Trial Mode

Date : January 16, 2012

TrialKeysIn this episode of Top Ranked I explore Trial mode.  Trial mode is one of the most important features available to you as a developer if you’re building a paid app.  By implementing Trial mode in your app you give consumers the opportunity to take your app for a spin while ensuring that you’ll get paid for your hard work if a consumer sees value in it.

We know from what we see on the back end that apps which include trial mode get 70x more downloads on average.  Of those 70x more downloads about 10% will get converted into purchases so doing the math you can expect on average about 7x more sales just by doing the small amount of work required to include a trial capability into your app.

We make it very easy for your app to know whether it is running in trial mode or if the consumer has purchased a license.  What we cannot do is decide what trial mode means for your app.  In fact, I would say probably the most important part of including trial mode is deciding how trial mode should work in your app.  There are various scenarios that you could use.  You might make the trial time-based (e.g. full functionality for 10 days), launch based (e.g. full functionality the first 10 times the app is launched on a device) or partial functionality (e.g. only the first 2 levels of a 30 level game are available in trial mode).  You should be careful when allowing full functionality in a trial as a consumer could easily uninstall and re-install the app to completely reset the trial.  When you provide full functionality you may want to consider storing the info about a user or a device in the cloud so that it persists across reinstalls.

There is a performance cost related to checking for trial mode so you should be careful about how often you actually do the check.  It’s a synchronous (blocking) operation that can take 60ms or more to complete.  Note that you will not see this when in development as that 60ms penalty is not there then but you will see it when the app is published.  An easy way to avoid this issue is to perform the license check when the app is started or resumed from a dormant/tombstoned state.

Another best practice is to be absolutely sure that you close the deal.  That is, that you make it very easy for the consumer to buy your app.  You should absolutely include links to the marketplace buy page right in the app itself.  If you don’t do that then you’re relying on the end-user to make the effort of launching the marketplace app, searching for your app and buying it.  Most just won’t do that.

Although it’s strictly not related to trial mode, another important best practice is to encourage consumers to rate your app.  The best way to raise your standing in the rankings is by getting lots and lots of high ratings.  That will help you get more visibility and encourage more downloads.  If you don’t explicitly encourage consumers to rate from within the app then you are relying on them to search for the app again or find it in the app list and tap-and-hold to find the rate and review page.  Again, most consumers just won’t do that. 

And the final thing you should be sure to do within your app is to include the capability to test both the full version and the trial version of your app while you are in development.

In the video I’ll walk you through all of these topics.  I’ve also included the source code for the project I used (attached to the blog post below).  The code is not that complicated but I’m sure having it will make it that much easier for you to get started. 


View or download the video on Channel 9 (includes higher quality video).

Let me know what you think about this episode of Top Ranked.

If you have questions about any of the videos, or about problems or issues you’re hitting or if you have topics that you think would be of interest to other devs on the Windows Phone platform then drop me a note. I’d be particularly interested in hearing about some of the best practices you’ve adopted that you think have raised your quality or your ratings/ranking in the Marketplace. I’ll be sure to give full credit and link love whenever I can.

The Top Ranked series is hosted on Channel 9. You can view all the past videos there.  You can also subscribe to the entire series via Zune or iTunes. All that is available here:
https://channel9.msdn.com/Series/Top-Ranked

Let me know what you think by dropping me a note via the contact form on my blog here:
http://blogs.msdn.com/b/benriga/contact.aspx

Or better yet follow me on twitter and drop me a note there:
https://twitter.com/benriga

PhoneAppWithTrial.zip


Top Ranked: Supporting all Markets

Date : January 9, 2012

Note: This video is the first in the series so I spend some time at the beginning introducing myself and the goals for the series.  To get directly to the content in this episode skip to about the 4:00 mark. 

When we launched the Windows Phone platform we released initially for the EFIGS (English, French, Italian, German and Spanish) markets.  In all that was about 16 markets.  With Mango we added a bunch more and just a few days ago we added another few.  We’re now up to 41 markets worldwide where as a developer you can choose to make an app available. 

Since we cannot know what the rights are, related to your app, we cannot just publish your app to new markets as those markets come on-stream.  In order for an app to made available in these new countries you will have to go into your App Hub account and cross-submit every time new markets come online.  I am surprised at how many apps don’t do this.  I suspect many developers don’t even know that they have to do this.  It’s such an easy thing to do that I thought I would do this as part of the first episode.

It may be easy but if you stay on top of it you may find that you get a nice boost in downloads as new markets come online since you’ll be there first.  Rather than try to describe what needs to be done go ahead and watch the video (topic starts at about the 4:00 mark).

More viewing options including HQ video are available here.  The complete Top Ranked Series is available here.

Let me know what you think about this episode of Top Ranked.

If you have questions about the videos, or about problems or issues you’re hitting or if you have topics that you think would be of interest to other devs on the Windows Phone platform then drop me a note. I’d be particularly interested in hearing about some of the best practices you’ve adopted that you think have raised your quality or your ratings/ranking in the Marketplace. I’ll be sure to give full credit and link love whenever I can.

You can drop me a note via the contact form on my blog here:
http://blogs.msdn.com/b/benriga/contact.aspx

Or better yet follow me on twitter and drop me a note there:
https://twitter.com/benriga


Introducing: Top Ranked

Date : January 9, 2012

TopRankedWith this post I’m introducing a new series of videos I’m producing which called Top Ranked.  In this series I’ll present various topics that will be of interest to developers building on the Windows Phone platform.  My aim is to provide short videos on topics that will help you raise the quality of your apps and hopefully at the same time raise the ranking of your apps in the Windows Phone Marketplace.

Over the past couple of years I’ve worked with many different partners and agencies building apps for Windows Phone.  I’ll try and share some of the things I’ve learned.  I’ll also pull from the many people and resources we have within Microsoft.  I may even pull in

I’ll explore across a range technical, design and marketing topics.  Again, my goal is to give you a little something in each episode that will raise the quality of your app or help you raise the visibility of your app.

I’ll do my best to keep these videos very short.  By that I mean that each one will be 15 minutes or shorter.   If an episode looks like it will go longer than that I’ll try And break it up into smaller more digestible topics.

If you have questions about the videos, or about problems or issues you’re hitting or if you have topics that you think would be of interest to other devs on the Windows Phone platform then drop me a note. I’d be particularly interested in hearing about some of the best practices you’ve adopted that you think have raised your quality or your ratings/ranking in the Marketplace. I’ll be sure to give full credit and link love whenever I can.

The Top Ranked series is hosted on Channel 9.  You can subscribe to the episodes via Zune or iTunes.  All that is available here:
https://channel9.msdn.com/Series/Top-Ranked

You can drop me a note via the contact form on my blog here:
http://blogs.msdn.com/b/benriga/contact.aspx

Or better yet follow me on twitter and drop me a note there:
https://twitter.com/benriga


@