Sunday, August 5, 2012

Our latest app view tube is out

Our new app view tube is out.  It basically allows the uer to search our three favourite video sites in one action and easily compare the results. 

The user just types in a search term and the app combines the results from youtube, vimeo and daily motion into a pivot control.


So far the results have been very promising.  On it's first day in the marketplace it got about 1500 ad impressions which is not a bad start.  Hopefully tomorrow is even better.
Check it out here.

Thursday, July 12, 2012

Timezone converter featured in Vodafone top apps

I just found out that our app Timezone Converter was featured as a windows phone top app on the vodafone australia blog. 

Check it out here.

Wednesday, June 27, 2012

Finally in top 50 in USA and Britain

I just checked and Snowball Ninja finally made it into the top 50 free shooter apps in the USA and Great Britain.  This is good news as being a pubcenter ad supported app, these two markets along with Germany and Italy seem to pay the best eCPM (rate per 1000 impressions).

Some of our latest marketplace rankings are:

Finland - 18th
Australia - 26th
USA - 45th
Italy - 47th
Great Britain - 48th
Germany - 48th

We were just accepted for bizspark

Today we got a couple of emails letting us know that Mayhem Sofware has been accepted into Microsoft Bizspark program which provides support to startups.

The introduction email says we get the following benefits.:

1. Get your free software
2. Profile your solutions
3. Market your stuff
4. Find funding
5. Find offers and connect with others
6. Build your team
7. Access Training and support

One thing we're going to find useful is 2 years / $60,000 worth of  Windows Azure hosting. 

Resource  Monthly Benefit 
Compute 1,500 hours of a Small Instance 
Storage  30 GB
Storage Transactions  2,000,000 
SQL Azure  5 GB 
Access Control Transactions*  500K 
Service Bus  3,000 hours 
Cache  128 MB cache 
Data transfers (WW)  35GB Out Free In  

 Having worked at two previous start-ups I know that companies need to carefully consider their product and hosting choices. Something we've been careful to avoid is what used to be called the slashdot effect.  This is a situation whereby a strartup's web product gets a sudden boost in exposure and their hosting package cannot match demand.  Therefore we've been avoiding making apps that rely heavily on third party hosting.  When choosing a leaderboard solution for our new game Snowball Ninja I did a fair bit of research and was luckily to find mogade which offers a free and seemingly scalable online leader board solution.

So with 2 years/$60,000 of Azure hosting expect to see some cloud based windows phone and windows 8 apps being developed by us in the near future.

Tuesday, June 26, 2012

Snowball Ninja continuing to climb marketplace rankings

Version 1.1 of our new game Snowball Ninja was released 2 days ago and we're happy to see it steadily climbing rankings for free shooter games in the windows phone marketplace.

Current rankings for some major markets are as follows:

Finland - 20th
Australia - 30th
Turkey - 35th
The Netherlands - 37th
Italy - 46th
Spain - 45th
Germany - 47th
Ireland - 48th
India - 48th
China - 49th
Great Britain - 52nd
Russia - 53rd
Canada - 55th
Mexico - 57th
USA - 58th
France - 69th
Japan - 72nd

Click here to check it out!

How to market windows phone games

Last week our new game snowball ninja hit the windows phone marketplace so since then most of our time has been spent on marketing activities promoting it.  At this stage it seems our strategy has been fairly effective as the game is ranked between 20-60 in most major windows phone marketplace regions, for free shooter games.

ranked 28th

Getting the game into the top 50 lists has been our immediate goal (more-so than making short term revenue) as the most important ingredient in the ascendancy of some of our other successful apps has been making it into the top 50 for a particular marketplace category.  Once an app reaches this level it has a very good chance of maintaining it's place as the level of visibility you get for a top 50 app is huge. 

Our marketing strategy
Here's a few marketing tips we came up with for developers of windows phone games.  It's based purely on our intuition and the experience we gained marketing snowball ninja over the last week.

Make your game interesting and addictive:
This goes without saying. If your game sux no amount of marketing is going to be worthwhile.  Making it as "sticky" as possible should always be in the back of the game designers mind.

A couple of weeks ago I was tossing up whether to include a leaderboard for Snowball Ninja or include it in an update at a later stage. I knew it was important but having spent quite along time developing the app the urge to get it out was hard to overcome.  In the end I decided to include it which delayed the apps release by 3-5 days.  I'm now convinced I did the right thing by including it as this has been a major ingredient in users coming back again and again.  I can see this when I check the overall leaderboard and notice that many of the same users are returning each day and fighting it out for top spots.

Chose a category for which new games are less frequently released?
If your game could fit into multiple categories choosing a category for which new games are less frequently released can be an effective strategy.  This is because when your game is released it will spend longer at the top of the "new" list in its category resulting in better visibility and more downloads. 

Choose a title that contains words that are frequently searched for
A while ago I saw a game with a strangely familiar title.  I think it was something like "angry ninjas vs fruity birds".  I assume the author was hoping their game would show up when users search for popular games such as fruit ninja or angry birds. To me this seemed a bit tacky but I understand the developers reasoning.

In our experience Title seems to be weighted much higher in regards to marketplace search than the keywords entered when submitting a game to the marketplace. It has also recently been revealed in msdn forums that only the first 5 keywords entered are actually used in the marketplace.

I actually wanted to call our game snowball bandit which I think sounds better and is probably more appropriate but ended up going with snowball ninja as ninja is such a popular search term.

Beta test your game
Beta testing has 2 great advantages.  Firstly you will get a much higher quality game by acting on the feedback you get from your beta testers.  In addition beta testers become great evangelists for your game.  They show the game to their friends and are likely to tweet about it.  I got some great feedback from my beta testers and all of them have been nice enough to tweet about my game which I'm sure has been an ingredient in its success.
If you're having trouble finding beta testers try

Pay for advertisements
We paid for the following advertisement on 1800 Pocket PC which is an excellent site operated by George Saijo and dedicated almost exclusively to windows phone news.  Apparently over the course of a month you can expect about 50K-100K impressions for the type of advert we purchased which came to $100.

Try to get reviews and write-ups
Getting bloggers to write about your apps is a great way to get attention that will result in more downloads.  So far we have had two reviews / write ups which have helped increase our exposure.

The first can be found here on and the second was on the dutch blog pocketinfo_nl.  It can found here in dutch and here in english.

-You can submit your game to bestwp7games for a review or press release by visiting this page.
-Another good option is wmpoweruser where developers can write an article about their game.  This can be done here.

Ad exchange networks
Ad duplex is a great way to increase awareness of your apps.  Essentially you agree to serve ads for other apps in your application and in return ads for you own app are shown in other participating applications.

After reading about how taptitude used ad duplex to help increase their exposure we decided to make this part of our strategy.  So as soon as Snowball Ninja was submitted I set about updating the rest of our apps to support ad duplex.  For some I implemented a web service which allows me to remotely control whether ad duplex is used exclusively or only when a pubcenter advert fails to load.

Over the past 3 days we have served over 130K adverts in the ad duplex network and received over 110K back. (See screenshot below)

Write about your game on social media sites
This is another no brainer.  Get out their and write about your game.  Tweet about it. Post links on facebook. Write blog posts about it. The more you write about it the more exposure you will get and therefore the more downloads you will get. 

I was able to connect with all my beta testers as well as the two bloggers who did write-ups on Snowball Ninja through twitter.  So this was definitely an essential part of our marketing strategy.

Has a strategy like this worked for you?  Do you have other ingredients in your marketing strategy.  Please tell us about it by leaving comments or hitting us on twitter.

Friday, June 22, 2012

Snowball Ninja 2nd Day in review

Our new game Snowball Ninja has now been in the marketplace for justover two days and the results are looking pretty good. 

Our online leaderboard service Mogade showed 626 Game loads and 152 Unique users yesterday.  These figures are up from 505 game loads and 133 unique users on day 1.

According to ad duplex we served 1290 exchange adverts yesteday which is a 25% increase from 1031 we served on day 1. 

Pub Center
According to pubcenter we served 964 paid adverts yesterday which was big increase from 170 we received on day 1.

Marketplace Rankings
So it seems everything is moving in the right direction and this is reflected by our current marketplace rankings for free games in the shooter category which are as follows:

Turkey - 27th
Finland - 46th
Australia - 50th
Germany - 54th
Ireland - 54th
Italy - 60th
Spain - 62nd
Great Britain - 67th
Canada - 67th
India - 67th
China - 73rd
Mexico - 80th
USA - 81st
France 84th
Japan - 93rd
(countries in bold are those for which we make noteworthy advertising revenue through pubcenter)

Check out Snowball Ninja by clicking here and let us know what you think by leaving us a review in the marketplace.

Thursday, June 21, 2012

Snowball Ninja first day stats

Our new game Snowball Ninja was released yesterday and so far the response has been fairly positive.
Mogade stats:
According to our online scoreboard solution Mogade the game had over 500 plays yesterday. The real number was probably a fair bit higher as this does not take into account certain situations where the game is played offline or when the user chooses not to submit their score to the leaderboard.

AdDuplex stats: 
AdDuplex showed 1046 adduplex ad impressions were served for Snowball Ninja yesterday. Once again the actual number was probably higher as this does not take into account offline plays.

As the game was only available via deep link and was not showing up in the marketplace via searches or via the "new games" heading I am reasonably satisfied with these numbers. All of these plays would have occurred via links I posted on twitter, adverts on 1800 pocket pc and ad duplex ads. Today the game is now showing up under "new games" in the marketplace so hopefully that will help things a bit.

Check out the game here and leave us a review. More tomorrow.

Advertising revenue heading in the right direction

Since my last, fairly despondent post about advertising revenue things have improved somewhat. Our impressions having been steadily growing and even our eCPM is at a more acceptable level.  Currently we're getting about 120,000 ad impressions per day which works out to aprox 3.72 million per month. Not a bad figure.

After more than a month of terrible eCPMs which were as low as 0.20 on some days, things have started to improve. Over the last week our average ecpm has fluctuated between 0.40 and 0.71.  This has resulted in a good week where daily revenue has been above $50 almost every day.  It peaked at $77 last Saturday which was promising.  So June has already been our most profitable month with revenue currently just below $900 and 10 days still remaining. (See screenshot below)

Advertising earnings for the last 4 weeks

Fb viewer is still bringing in the large proportion of this revenue however we've seen upward movement in the earnings brought in by many of our apps particularly Camera Flashlight, Timezone ConverterBeat My Drum and Xkcd Viewer

Our new game Snowball Ninja was released yesterday and so we're hoping that will start to build on this improvement in our advertising income.

Wednesday, June 6, 2012

Snowball Ninja Coming Soon

Our new shoot em up game Snowball Ninja is currently undergoing beta testing and will be coming to Windows Phone very soon.

Here's a sneak peak video of the game being played.  Enjoy!

Saturday, June 2, 2012

Impressions up and eCPM down - Comparing Advertising Revenue for April and May

April and May are really the first months we've made any money at Mayhem Software.  It's not much but finally we are getting some monthly revenue which equates to more than a couple of cheap meals out.

In April we made $762.10 and in May we made $691.56 (See screen shots below).  Certainly not enough to live off but it's a start. 

What's interesting (and kind of annoying) is that the number of impressions we received doubled, and yet we still made less money.  In fact our average eCPM more than halved in May.  

Anyway I guess the main thing to take away from this is that advertising earnings are very unpredictable.  All we can do is keep pumping out the apps and hope this downward spiral in eCPM doesn't continue. 

Snowball Ninja

Our new game Snowball Ninja is almost complete.  It's basically a 2D "shoot em up" where you get to throw snowballs at kids.

Here's a screen capture of it being played through the emulator

And to give you a better idea of how the gameplay is on a touch screen, here's a really rough clip of me playing on a phone.  (Apologies for the blur - I filmed this on my HTC android phone :-) )

If you would like to be part of the beta testing group then send us an email or a Direct Message on twitter with your live id and we'll add you.

Monday, April 30, 2012

Social Mix v1.0 is now available on the windowsphone marketplace

Version 1.0 of our new application Social Mix is out.  It basically allows you to update your status on multiple social networks in a single action.  Currently supports facebook, twitter, linkedIn, and WindowsLive.

One of the advantages of Social Mix is it's simple integration with the social networks that are already natively setup on your phone.  So there is no need to give your login credentials to our application and there is no need to logon to your facebook or twitter account and give special permission to allow our application access.

Check it out here and let us know what you think by leaving a comment or sending us a tweet.

Wednesday, April 25, 2012

Pubcenter limit for allowed sites/applications

This week I've been doing some work on our new application Social Mix.  It's ad supported so as usual I went into pubcenter and tried to register the application and create a new ad unit.  Unfortunately I was greeted by the following message

"You have reached your limit for allowed sites/applications. If you need more please remove unused entries."

After doing a quick search online it seems that micrsoft has imposed a limit on the number of applications and ad units that can initially be registered against one pubcenter account.  Currently this limit is 10 applications and 50 ad units per account.

If you hit this limit it seems you have a few options:

  1. If you meet the following requirement you can email pub center and ask them to increase your limit. "At least (70%) of all currently approved properties must be actively showing ads and generating a minimum of $50 per property within the past 30 days." 
  2. Create a new pub center account under a different live id.  The downside is you will have to wait until this new account generates $50 of revenue before you can get paid.
  3. Use existing ad units / applications.  The disadvantage of this approach is that your pub center reports will not be accurate and you will not neccessarily know which applications are generating revenue for you. 

    However if you have only hit an application limit and not the ad unit limit
    then the situation may not be so bad as you can just create new ad units to use in conjuntion with one of your existing pubcenter application ids.  As most of the reporting is done by ad unit then this is probably the best workaround if you don't meet the requirement for option 1. 
(According to this forum post options 2 and 3 are permitted by Microsoft).

As I met the requirement for option 1. I decided to go with this option.  I drafted an initial email expecting that this would be one of many I would have to send before my limit was increased.  My previous experiences with Microsoft and GeoNames have led me to believe that these kind of things end up being unneccesarily painful and beurocratic. Fortunately I was wrong about this.

The initial email I sent just included my advertising revenue for the past 30 days and a few sentences asking that they increase my limit.  The email I got back stated that in fact all my ad units must be actively serving ads and to provide evidence of this.  I had to provide them with a complete breakdown of all my pub center apps, ad unit ids, and their equivalent marketplace application names.  After doing this I got an email back saying my limit had been increase to 50 applications and 200 ad units.  In total this took about 3 days.

As my experience was relatively painless I see this as no more than a small inconvenience, however if I didn't fall into option 1. I can imagine that'd I'd be pretty frustrated.  Like me most wp7 developers are working hard for little profit, and restrictions like this can be very disheartening.  I can understand that Microsoft want to discourage developers from flooding the marketplace with loads of ad supported apps of questionable quality.  However I think this initial limit is too low and will risk alienating independent developers and push them towards other mobile platforms. 

If you have an opinion on this or have had to go through the process of dealing with this restriction please leave a comment or hit us on twitter.


Wednesday, April 11, 2012

breakdown of advertising revenue leading to a change in direction

Since my previous post about why I'm getting such a low eCPM things have steadily improved.  Our total advertising revenue is now about $140 / week.  This has mostly been a result of an increasing number of impressions.  We'e now hitting about 25,000 / day for fb viewer.  The eCPM has been fluctuating a little but this week is closer 0.60 (for fb viewer) which is helping as well.  (See graphs below)

fb viewer revenue over past 4 weeks

fb viewer impressions over last 4 weeks

fb viewer eCPM over last 4 weeks

Unfortunately a large majority of our revenue is still coming from this one app.  We have 8 other free apps, 3 of which are making a pitiful couple of dollars / week. The others are performing even worse making no more 0.50 / week.

So the numbers really indicate that social media apps are our best chance of making some decent advertising revenue and therefore this is where we will start focusing our resources.  Stay tuned for news about our new app Social Mix which we hope to release over the next 2 months.

Tuesday, April 10, 2012

Timezone converter v1.1 is out

Timezone converter v1.1 is out. New features include:
  • search/filter functionality.
  • gmt offsets displayed next to city names.
  • contact developer button added to about page.
  • progress bar added
Thanks for all the feedback including emails, tweets and reviews which helped shape the direction for this update.


Thursday, March 15, 2012

Why am I getting such a low eCPM?

At the moment we are making most of our (very modest) advertising revenue from one app;  FB Viewer.  Currently about $75 / week from that app and another $5-10 / week from our other 8 free apps. 

The impressions for this app has been steadily growing over the last 7 days but the low eCPM is killing us.  (See graphs below) The last few days we've had over 16,000 impressions each day for FB Viewer but with an eCPM which has today hit an all time low of 0.44 USD this isn't equating to much.

FB Viewer Impressions

FB Viewer eCPM
 Most of our other app such as Beat My Drum, Timezone Converter and Camera Flashlight are getting eCPMs that are well above $1. In fact Beat my drum has been consistently between $4 - $7 over the past 3 months. Today it's $5.83.  If only FB Viewer was getting an eCPM of this amount we'd be making around $700 / week from this single app.  (Based on 16602 impressions * 5.83 / 1000 eCPM * 7 days = $677.53 ).  

So why am I getting such a bad eCPM???

The truth is I don't really know. No one outside of Microsoft does. I've searched the pub center forums and read various blogs on this and there is a lot of theories but no solid information. From what I can tell the main factors affecting eCPM are as follows:

  • Click-thru rate - The more users that click on ads the higher the eCPM.
  • Country the ads are being served to - To make any money you really need to have lots of impressions in certain countries.  I make all my revenue from adverts served in USA, Canada, Great Britain, Germany, France and Italy.  I make almost nothing out of any other countries.  For example I have thousands of ads served in countries such as Australia and Taiwan but I get an eCPM of $0.00. I read somewhere that this is because pub center is just doing beta testing in those countries.
  • Stickyness of users - I have heard conflicting reports about this.  But there is theory that advertisers will pay less if their ad is being served to same users over and over again.  So although having an application which keeps users coming back again again is great for increasing impressions it seems this may result in a lower eCPM. This seems true in my experience as my two most "sticky" applications are XKCD Reader and FB Viewer.  Both currently have an eCPM of under $0.50.
  • Who the advertiser is -  It seems the amounts paid by various advertisers vary greatly.  Unfortunately it's impossible to know which advertisers and which categories will pay the highest amounts as this information is kept secret.  However when I decided to block ads from and the eCPM's on all my apps went down noticeably. (For reasons why we didn't want to serve ads for McDonalds see Morgan Spurlock's awesome 2004 documentary supersize me )
The more research I've done the more I've realised there is very little I can do to try and improve the eCPM I get.  However the following (very loose) guidelines may help you if you're developing wp7 apps and using pub center to serve ads:
  • Try to make your app relevant to people in the USA as this is where most advertisers are and where the highest eCPM can be achieved.
  • Try to choose ad unit categories relevant to the kind people who will be using your app in order to maximise your click-thru rate.
  • Try to choose atleast one broad ad-unit category to reduce the chance that the same advert will be shown to users over and over again. (I realise this will not always go hand in hand with the point above.  So to find a middle ground I would suggest choosing 2 very specific and relevant ad unit categories and 1 broader one. )
  • If you are going to make your app available in languages other than English then German, French and Italian might be a good place to start as in my experience all of these markets are paying a decent eCPM.
 If you have more information on this topic leave a comment or hit us up on twitter.

Monday, March 12, 2012

Timezone converter for windows phone

Our tenth app has just been approved on the windows phone 7 marketplace.  Sweet!

It allows you to choose a point in time in one timezone and see what the equivalent time will be in another timezone.  Great for organising overseas phonecalls and online meetings etc.

Check it out.

Friday, March 2, 2012

Beware of the longlistselector.

I just finished and submitted our new app 'Timezone Converter' and feel I should warn people about a few issues I encountered with the longlistselector control.

The November 2011 update of the wp7 toolkit includes a longlist selector which is great for grouping together a long list of items. We used it for timezone regions. See screenshots below.

Overall the list worked great and in a fairly short amount of time I was able to populate the list with world timezone regions which were nicely grouped together under click-able headingss that allow the user to easily jump to different sections of the list.  (For information on working with timezones in wp7 see my earlier post on using the zoneinfo api in wp7).

Unfortunately I encountered two bugs in the control which I ended up wasting way too much time on.  The first problem is that binding the selecteditem did not work.  If you are using mvvm you will find this especially annoying.  The issue as well a workaround is described in detail here.  

The second issue (for which I found no information on the internet) can be repeated as follows:
  • Create an app and with a long list selector.  
  • Set it's visibility to collapsed
  • Include a button which when clicked sets the longlistselector's visibility property to 'visible'.
  • Run the app.  Click the button so that the long list selector is displayed then hold down the back button on your phone and switch to another application.
  • Hold down the back button and switch back to your application.
  • It will now hang on the resuming screen and eventually terminate without throwing an exception.

This bug was an absolute pain to get to get to the bottom of.  I tried to workaround it by just changing the margin of the grid containing the longlistselector so that it was either in view or out of view but this did not help. I also tried removing it from a grid and placing it in a stackpanel as well as just updating the longlistselector's visibilty directly but had no joy with that either.   In the end the workaround I used was simple.  I left the longlistselector as always being visible and just placed the grid containing my default form in front of it.  Instead of toggling the visibility on the longlistselector grid Ijust toggled the visibility of this default form and everything worked fine.  

Another obvious workaround would have been to just embed the longlistselector in a different xaml page and navigate back and forth between my main page and the longlistselector page.  However as my app was already working other than this bug I chose the first option.

I hope this helps someone as it took me quite a while to get to the bottom of both of these issues. 

Wednesday, January 25, 2012

Using ZoneInfo api in wp7

Over recent months I have found planning convenient times for skype meetings between myself and my business partner (who is on the other side of the world) to be a pain. I have been travelling quite a bit so my timezone is constantly changing. I thought "there really should be an app that helps with this"!  I already have world clock for wp7 but this just tells me what the time is now.  I wanted to be able to work out something along the lines of "at 9am tomorrow here in Estonia what will the time be in Brisbane Australia?". 

After a cursory search of the marketplace I couldn't find an app that did this so decided to build the capability into a unit converter app that  I was working on. 

Having worked with timezones in .net before I thought "this will be dead easy". I dived in and built the ui.  Next step was to populate the UI with all of the world time zones so the user can choose which time zone they want to convert from and which time zone they want to convert to.

Unfortunately I soon realised that this would not be as easy as I thought.  In wp7 the TimeZoneInfo class does not have the getsystemtimezones() method. As mentioned in this post.  I'm not sure why? maybe it is because they are trying to keep the wp7 api as lightweight as possible.
Fortunately after some more searching I found  A brilliant little .net api for using the tz database of world timezones.

Unfortunately it can't be used with wp7 out of the box, but after a few small modifications it worked great.

I Just did the following:
  1. Downloaded the source code from
  2. The library is not accessible via silverlight so I needed to create a new silverlight library and copy the classes from the zoneinfo library into it.
  3. I also had to copy the tz database files into the silverlight library and set their build action to resource.
  4. The loadfile / loadfiles methods in Database.cs had to to be altered so that I could pass the uri's of the tz database files.
  5. Lastly I needed to alter the loadfile method to read the file uri and create a StreamReader object.
That's was it.  Now I can convert timezones in wp7.
    //convert local time to the time in Brisbane / Australia
   Zone theZone = Database.GetZone("Australia/Brisbane");
   DateTime d = theZone.ConvertToLocal(DateTime.Now.ToUniversalTime());

Tuesday, January 24, 2012

WP7 Marketplace Certification Hell

A little Background
In late November / Early December I updated our application Camera Flashlight . The original version was turning on the camera flash (to be used as a flashlight) by causing the camera to continually auto-focus. The problem with this method is that it caused the flash to blink on an off momentarily once the camera had focused.  Not ideal for a flashlight but it's an approach that almost all wp7 flashlight apps seem to use.

Since then I worked out how to keep the flash on via accessing the video recorder which is much more desirable because it results in a constant stream of light without blinking.  It also puts less stress on the phone's camera.

Certification Hell
In early December I submitted this application and 5 days later got a message saying that it had been rejected because the application terminated silently on startup.  I had recently started obfuscating my applications with Eazefuscator and thought that maybe that was the cause.  So I switched to another obfuscation program and resubmitted.  6 days later I got the same message. 

By this time I was at a bit of a loss as to the cause. I always try to build good exception handling into my apps so silent termination should not really possible.  The user should always get redirected to a custom error page.  I had also sent the xap to my business partner Jeremy and he was able to side load and run it on his phone without issue. I'd checked the forums but didn't find anything of much help.  So I decided to send a support ticket asking for more information and also asking if the obfuscation could be the cause. 
The response I got was almost comical.

Hello Jeremy,

Thank you for contacting the Windows Phone App hub Developer Support Team. My name is Gary and I will be assisting you. For questions of a more technical nature, the best resource for information would be the App Hub Community Forums. There you will be able to get responses from not only other developers that have may have similar experiences, but also from internal Microsoft Windows Phone team members, as they respond to developer issues there on a regular basis. I have provided the link, below, for your convenience.

Windows Phone App Hub Developer Support 

So for a yearly registration fee of $99 all I get is a generic email saying if you have a technical query check the forums. Thanks alot Gary! After that I tried another 3 times to submit my application with small capability changes to wpmanifest.xml file as well as trying g to submit with no obfuscation.  Everytime I was rejected for the same reason.  By then almost 2 months had passed and I didn't seem any closer to having my update on the marketplace. 

The solution
In fairness to Gary at Microsoft Support I did eventually get a few ideas from the forums which pushed me in the right direction.  The first was that you can do beta testing.  This was one of those marketplace features that I was aware of but had never used and kind of forgot about. I submitted my application to beta test.  24 hours later I was able to download it onto my handset via the marketplace.  Sure enough the application terminated silently on startup.  Finally I was able to repeat the issue.

Next I found a forum post indicating that the capabilities in the manifest file could be the cause of my problem.  Well I had already looked at capabilities and run the capability detection tool.  No issues were obvious there.  However the post got me thinking that I might have misunderstood a few things.  I did a bit of research and it turns out that I had totally got it wrong.  I thought that the capabilities you defined in your wpappmanifest file defined what the apps capabilities would be in the marketplace.  I assumed the detection tool was for detecting what capabilities were requried and making sure you had them in your wpappmanifest file and that you hadn't included any unneccesary ones.  However it turns out that when you upload your app to the marketplace it compeltely overwrites your wpappmanifest.xml file with one based on the capabilities that the marketplace detects. 

It seems that a limitation in the detection process was meaning the camera and audio capabilities were not being detected and so the following required lines were being removed from wpappmanifest.xml file.

<Capability Name="ID_CAP_MICROPHONE" />
 <Capability Name="ID_CAP_ISV_CAMERA" />

*Note. you need the microphone capability when accessing the video camera

So these missing capabilities were the problem.  My next issue was how to trick the market place into detecting them.  By adding the following dummy lines of code to my project I was able to achieve this as was confirmedby the capability detection tool

private VideoBrush videoRecorderBrush;
private CaptureSource captureSource;
private VideoCaptureDevice videoCaptureDevice;

Microsoft.Xna.Framework.Audio.Microphone mic = null;

I submitted the application for a beta test. Downloaded it from the marketplace 24 hours later and it was now running correctly.  Problem solved.

I felt kind of stupid that I had spent so long on such a small and seemingly obvious problem.  But then I got thinking my misunderstanding of how capabilities worked was fairly reasonable.  I really don't see the point of capabilities being based on those in the wpappmanifest.xml file during development if they are just going to get overwritten on marketplace upload.  To me it would make alot more sense if capabilities detected by the capability detection tool be automatically used by visual studio when developing an application. Of course it might be nice to override this behaviour.  But by default it makes a lot more sense. 

Anyway v1.1 of Camera Flashlight has now been approved by the wp7 marketplace and should be available sometime in the next 24 hours.   I hope this post helps someone as I was pulling my hair out for a while there.

Tuesday, January 17, 2012

Beat My Drum

Here's a very rough clip of me playing a beat on our application beat my drum. As you can see I'm no expert and my timing isn't brilliant but it is possible to keep a beat.   

We created beat my drum in October/November 2011.  After playing around with some of the other drum machines on WP7 I was a little disappointed. Some were absolutely useless and didn't let you play 2 drums at the same time.  Many others were not very responsive.  Some were quite responsive and nice to look at it but these seemed to fall down in the way the drums were layed out. Many of the app developers seemed to think it was a good idea for the GUI to be just like a real drum kit.  However I think this is not a good approach for 2 reasons:

1. Wasted screen real estate. 

The phone screen is small enough withough having to limit your taps to the image of a snare, tom or cymbal.

2. The hi hat is in an awkward position.

Most drummers (except for some jazz drummers) will hold the stick in their right hand and play accross their bodies.  This is fine in real life when you've got a large drum kit in front of you and your holding two 40cm sticks.  However on a phone it's awkward.  You have to either turn the phone around and play everything upside down or you've got to attempt to cross your right hand accross you left hand which is difficult when you're playing on such a small screen.  To me it makes a lot more sense to position the hi hat on the top right hand corner of the phone as it is the timekeeper pad that you'll most likely be hitting frequently with your right hand/finger.

So not being satisified with any of the other apps out there I decided to make my own drum machine.  The main roadblock was getting familiar with the touchpanel in the xna library.  Silverlight does not allow two buttons to be pressed at the same time so the user must use the touchpanel and detect multiple screen hits at the same time.

The main lesson I learnt was it is not possible tocreate a responsive touch application like this by just raising gesture events. It seems to work at first but if you start hitting the screen in multiple places frequently you will notice that atleast 60% of the time your second touch will be ignored.  The solution I used was to set up a timer which executed multiple times a second and poll the raw touchpanel data for screen taps. 

For more info you can read a couple of posts I made in the developer forums about this

Creating this simple application turned out to be a good move for us.   Over the last month Beat My Drum has surpassed Camera Flashlight to become our most profitable app. YAY.

Monday, January 16, 2012

2011 Summary - Why we went with WP7

Well 2011 was an interesting year for Mayhem Software.  We published our first application Rescue Ring on the Windows Phone 7 Marketplace on 7/06/2011 and by the close of the year we had a total of seven applications published and 7436 downloads.  So unfortunately we didn’t make the hundreds of thousands of dollars we were hoping for.  But we learned a lot and it wasn’t a terrible start for two guys who are new at this and have only been spending about 15% of their time on it.

Why WP7
When my business partner and I were discussing which mobile platform to target first Windows Phone 7 was not neccessarily our first choice.  In fact initially we were leaning towards Android. I already had a nexus one and android’s lack of restrictions and fast growing market share seemed like the most attractive choice. However on the other hand the potential for huge profits and the many success stories of developer’s who’d targetted iOS were making it look attractive too.  One which we’d been hearing alot about was Halfbrick (the developer’s of fruit ninja) who are from our hometown Brisbane.  At the time Fruit Ninja had already netted Halfbrick over $20,000,000.

However in the end the thing that turned us off both those platforms was the fact that their marketplaces were already extremely crowded.  At the time iTunes had over 300,000 apps on their markplace and Android was not far behind.  Both marketplaces have now exceeded 500,000 apps. 
Windows Phone 7 was a fresh new platform and the opportunity to get in "relatively" early appealed to us.  So needing a new phone my busisness partner bought himself a shiny new HTC Mozart and we dived in.

Things I like about WP7

  • Ease of development.

    The Windows Phone developer tools are easy to install and if you hav a decent net connection you can be running a hello world app in aprox 15 minutes.  Also having extensive .net development experience meant there was a much smaller learning curve for myself as opposed to developers who are unfamiliar with xaml and c#.
  • Slick and original platform.

    WP7 is a slick and responsive OS with a great overall user experience. It's also totally original unlike iOS and Android which are very similar to each other in terms of GUI and user interactions.  So much so that Steve Jobs "reportedly" felt that Android was a rip off of iOS.  I certainly don't agree with that but the similarities cannot be denied.
  • Uncrowded marketplace.

    Ever have a brilliant and original idea for a new app and then feel like breaking your phone when you search the Android or iTunes marketplace and realise loads of similar apps already exist. This happens less often with WP7.
Things I didn't like about WP7
  • Stupidly slow and inefficient verification process.

     To verifiy you really are a legitimate developer Microsoft use  Our experience with them was not good.  We had registered as a partnership and because of this they decided we had to jump through some rediculous hoops to be verified.  The whole process took approximately 3 months.  They would ask for one thing at a time instead of providing us with a complete list of what they needed.  They didn’t accept the statutory declaration we provided them with was signed by a legitimate solicitor and decided they needed extra time to verify his identity and credentials. Unfortunately this seemed to take forever and everytime we asked them how they were progressing the response was always "we need more time". Eventually we gave up waiting and did a new statutory declaration with a justice for the peace. Worst of all they were at best painfully slow to respond to emails. Often they wouldn't respond at all.  This experience almost made us give up and target another platform. After paying $99 and taking a risk on a new and untested mobile operating system this was not the welcome we were hoping for.
  • $99/year developer license.

    When compared to Android’s $30 one off fee this did seem a bit pricey for a platform which almost no one was making any money off.   Infact the price was initially $129 but eventually they reduced it to $99 and issued us a refund.
  • Lack of marketshare. 

    With only 2-3% smartphone marketshare Windows Phone 7 has less users which means less potential customers for us and therefore lower revenues.
  • API restrictions. 

    Windows Phone 7 is more locked down than any of the other 2 platforms we considered.  We are unable to access parts of the API we needed such as the video camera which was often frustrating and meant some of our application features were just not possible to implement.
  • Application certification process is slow and inflexibile. 

    Everytime you submit an update it has to go through certification with Microsoft. Initially this was about 2 days of waiting but over the last 3 months of 2011 this is usually taking about 5-7 days.  In addition once you've made a submission you cannot stop it.  Last month I detected a major bug in the application Secret Santa only half an hour after I'd submitted it for certification.   I was not able to update the submitted application or even delete it.  When I emailed support they advised "wait until the application completes certification.  If it passes just hide it in the marketplace and then submit an update".  It did pass and I did as they advised.  However I had to wait an unneccesary 6 days for them to certifiy it and then another 5 days for them to certify the update that included my bugfix. This was annoying as being an application which is really only useful around Christmas these 11 days meant I missed out on lots of precious downloads.  In addition as I hid the application in the marketplace as soon as it was new it missed out on showing up in the "new application" list on the marketplace which also meant I lost a lot of downloads.
Despite some of the above points I still think Windows Phone 7 is a great platform.  I love it's slickness and responsiveness. (My wife's LG Optimus 7 really makes my Nexus One seem clunky in comparison).  I love developing in .net and silverlight and it’s great to be able to develop apps which don’t get lost in amongst the hundreds of similar apps that already exist. I’m hoping Nokia will continue to build on the success of the Lumia phones and this will result in more money in the pockets of windows phone 7 developers.