Changes to Windows Azure Mobile Service and what they mean

Just over a month and half back, Windows Azure team released the Mobile Services. In addition to announcing paid services, they severely restricted the Free tier to the extent that it was not usable. The initial statement I got from them was that Free tier was meant for Testing. So what happened next ? I got it all up in my head and started a user voice. I talked to as many Windows Phone and Windows 8 developers as I could to tell them about it and to ask for their votes.

While I was vote gathering, I was also talking to Azure team and we discussed some stats on what is acceptable for free tier. We discussed the fact that 100 devices a month wasn’t really well thought-out idea and that it needed change. They agreed to increase the number and took on my suggestion of a daily device count as opposed to monthly device count.

The reasoning behind this is simple. If a user downloads your app, plays with it for 5 minutes but never ever uses your app, the user would have impacted the limited device count for whole month. With a daily limit, the new installs only impact for 24 hours not 30 days.

Last night Dinesh Kulkarni a Program Manager at WAMS acknowledged the user voice, closed it and updated the WAMS pricing document to reflect the changes that were in plan for good part of last month.

So what do we get now ?
Instead of 100 unique devices a month, we get 500 unique devices per day.

It is also worth noting Free tier isn’t covered by SLA and that its not monitored. Azure team will fix any issues on the Free tier (when identified) however Free tier services aren’t actively monitored – unlike the Standard and Premium tier that feature active monitoring to meet the SLA.

Additionally the 500 devices a day for Free tier are applicable across all your mobile services – not one. If you have 1 WAMS, you get 500 devices a day, if you have 10, you still only get 500 a day between all 10 services.

And finally what happens when your service registers 500 devices and additional devices keep coming ?
Well the service will stop servicing requests (not sure whether its for additional devices or across all) and will become available after 24hour device count reset.
The service would otherwise be untouched.

I think this is a satisfactory conditions imposed on Free tier. WAMS team would like to be cost neutral and for popular high device count / high volume app, they would like you to use paid SLA driven tiers.

I’d like to thank the Windows Azure Mobile Services team Josh Twist, Kirill Gavrylyuk and Dinesh Kulkarni for being open to the suggestion and of course all the Windows Phone and Windows 8 developers who took time to vote on the user voice. Without the developers, my whinging would have gone unheard. Thank you

Thank you WP Rewards Programme

I found out about Microsoft UK’s Developer incentive program about 3 weeks back. It closed this sunday and in that duration i only managed to push out Cool Camera. So i got 1 reward point – its shame.. if i had been keeping up-to-date, i could have done something over the last 3 months… oh well..

So i spent the sole point on a RC Helicopter 🙂 I was tempted by the Tea for Two but then i could have to go far and find childcare for my daughter… not worth it. Can’t wait for it 🙂

Yesterday WordMaster and WordMaster Free became available on marketplace. I have been spending some time on the free version and its not too bad.. its not really a game and i already found a bug 🙂 but i might develop it into a game – as if there aren’t enough word games out there.

I also pushed out Updated to Cool Camera. Now stands are 1.2 ? I modified it a bit based on user request – reduce the volume between 20:00 and 8:00, consume SoundEffect instead of MediaPlayer class to reduce lag (especially the shutter sound) and finally added Lighten / Darken filters.

Lighten / Darken filters use a combination of techniques – like the first pass of face dectection code here
http://channel9.msdn.com/coding4fun/articles/FaceLight–Silverlight-4-Real-Time-Face-Detection
and finally using HSL to lighten darken the matched pixels.
http://www.silverlightshow.net/items/HSL-Colors-in-Silverlight.aspx
While i was at it, i also realised that the effects preview was rendering all the images and was for that reason slow, i have correct that behaviour and now the effects rendering is a breeze 🙂

WP7 App Piracy and how to deal with it.

Lets assume that you had a wicked idea and that you spent some time writing an app for your beloved Windows Phone. It got publish and you were very excited about it – however a quick search on the net showed that it was available for download from various hosting sites.

This has happened to me more than once. It happened with Sliding Keyboard 1.1 in June 2011 and with Cool Camera 1.0 last week. So what do you do ? You write to the sites saying that this is your stuff and that its being hosted illegally – some times you might get a response at other times you are just ignored.

Well lets deal with it. Most apps provide a trial mechanism. It is a must unless you can think of a really good reason for not allowing trial. Most of my apps have a trial mode download – which is a fully functional download except it shows adverts and is limited to certain usage.

I tend to define a static boolean property called IsTrial. I use this property as there’s no sense in constant lookups (plus license does not change while app is active)

var license = new Microsoft.Phone.Marketplace.LicenseInformation();
IsTrial = license.IsTrial();

This simple piece of code will check license set (if you downloaded the app from Marketplace). However, sideloaded xap’s return true as there is no license attached. Don’t loose your faith just yet.. There’s still something you can do.
While the app is submitted to microsoft for testing, microsoft packages a file called WMAppPRHeader.xml. The beauty of this file is that if the xap contains this file, it can only be installed with marketplace installer. So what your all the xap hosting sites do ? they remove this file and repackage the xap. Do you see where i am going ? Yes, you check for this file. If you can’t find this file, it means that your xap was sideloaded. so we modify the above code to:

try
{
   XDocument doc = XDocument.Load("WMAppPRHeader.xml");

   var license = new Microsoft.Phone.Marketplace.LicenseInformation();
   IsTrial = license.IsTrial();
}
catch
{
   IsTrial = true;
}

we try to load the file, if we can load it, it was installed through marketplace mechanism and we can use IsTrial to determine whether the app is in Trial or not. If it was sideloaded, we set it to Trial by catching the FileNotFoundException.

So you silently convert your app to Trial mode and manage the sideloaded app as if you would for Trial, display ads and restrict the user like you would otherwise. You can even display a Buy now message in your app’s about page 🙂

BTW – don’t go about trying to add junk to file name and then trying to clean up later so make it harder. Compilers are smart and they will see the redundant chars and strip it out. What you should however do is always Obfuscate your code. As long as you do a bit of extra work, the ones who pirate your app will have a hard time as obfuscation can rename functions / encrypt strings in addition to doing a lot more.

Windows Phone Dev in 2011

I think i got my HTC Mozart 7 some time in March 2011. After using it for a week or two, i registered myself as a Developer and started writing my first app Scribble in April. I think I spend 2 weeks writing it.

This was the first time i was coding Silverlight and its been fun.

Scribble: Initial effort – 2 weeks. It was my first try at Silverlight app and it was a simple drawing app – having used the word simple, it did a lot of things – use photochooser task, save to Photo Library etc. It even supported multi-touch – It was a great learning experience.

Alarm Clock: I spent a good 2 / 3 weeks writing this and yes i love this app – I use it as my Alarm clock – especially since Mango update as i can now have alarm without app running 🙂 –

LearnToWrite: 1 week – this was the simplest app i have written. Just features simple alphabets and numbers.

Sliding Keyboard: I wrote the above 3 apps trying not to write Sliding Keyboard. I just couldn’t get it out of my head and no matter how hard i thought, i wouldn’t figure out how i would achieve it. However I got it running in 2 weeks. And it went live in June 2011. Publishing v1.0 was a big mistake – it got slated on so many levels. Over the next couple of months, i cursed myself enough number of times. I have spend weeks and weeks since initial release – now it stands at version 3.2. It has taught me the most – it taught me humility – i am good at what i do and i realised that customer doesn’t care about how hard you are trying – they just want the product to work. I also learned that no one reads the description 🙂

The total downloads stand at 22,822 – Paid downloads are just over 1216. Here’s the download chart

I think it has been a very trying year – as a WP7 user I love the phone.

As a developer – I have mixed feelings – I love and hate the fact that API is restrictive. Microsoft have been fantastic in testing the apps – Everything has been as smooth – they test the apps better than i ever do. Thank you.

As of 2012, I am writing a couple of apps. Let’s see what this year holds.

What happened to Slydr 2.6 ?

I submitted Slydr 2.6 Friday the 6th Jan as i though i’d better update NoDo users with latest changes. I branched current Mango code base and made changes to revert the code to NoDo compatible code. I didn’t realise it but i left Mango version of Silverlight Toolkit and 2.6 didn’t pass certification as the app crashes when you navigate to Settings page. This is what consumes the Silverlight toolkit based controls.

So what did i do ? Well to start with I pushed 3.2 (which is update to 3.1 Mango version and contains some bug fixes) and its currently in testing. I have also downloaded NoDo sdk to get my hands on NoDo Emulator so i can thoroughly test 2.6 when i push it for certificaiton in coming week.

Apart from that Cool Cam is close to completion. I have the photo viewer working correctly and all i need to do is get effects application code working correctly. I plan to finish it tonight and then hopefully i will polish it a bit (for example displaying a count down when using timer mode). Then comes the annoying part of localisation. I am keeping the text very simple and so i hope localisation is easy / more accurate.

Last week i also published entire word lists i have generated. I have uploaded 50k zip, entire zip and log file which details file count / word count etc etc.

Cool cam – new app while i wait for maps to finish downloading

Since the map download has been going on and on forever, i decided to keep myself busy…  welcome to cool cam. what does it do.. well its a camera… i know each device comes with its own app and so does Windows Phone and the app is not bad… just though why not… its got live screen and touch controls.

i am about to add effects so that the images are rendered (effect is applied) on the fly.

Need to add a couple of things like real camera… zoom (digital zoom – one that i always disable on real cameras) and maybe timer etc.