ailon's DevBlog: Development related stuff in my life

Microsoft Should Promote an iOS Game

2/7/2013 5:09:26 PM

Angry Birds came to Windows Phone a year late (or something), Instagram is still not there, etc.. It doesn’t matter that there are other alternatives, it’s a status, validation thing. iPhone and now Android users always looked down on us, Windows Phone users, and bragged that they have the Hip App X, but we don’t and that they had the Fun Game Y 3 months before we got it.

But guess what? Things are changing. Even if slowly. A few weeks ago I had an experience at a semi-drunk party where people came up with an idea of having their faces “ugglified” by some real time phone app and the app in question was CamWow. Surprisingly (or probably not) it worked better on my Lumia 920 than iPhone 4s and 5. I’m not sure what was better, but my iFriends wanted to look ugly on my phone rather than theirs. And another friend with Galaxy S3 was sitting silently in the corner. There’s no CamWow for Android. Now I’m pretty sure there are other similar apps on Android, quite possibly they are even better. But you know what? There are other photo editing apps on WP, some even better than Instagram, but Instagram is a status thing and I get it.

There are also quite a few physics games on Windows Phone. At least one of them is better than Angry Birds, in my humble opinion. The game is called Krashlander and it has been available on Windows Phone since day 1. Now – 2 years 3 months and some days later – it makes it’s debut on iOS and our iPhone friends can finally enjoy what we have finished 2 years ago. Good for them! Go get it.

I think Microsoft should make a bold move and promote Krashlander for iOS. I’m sure this will never happen, but a TV ad saying something like “The Windows Phone hit game comes to your iPad, finally.” would be very cool and show that times are changing.

In any case go get Krashlander on iOS or Windows Phone (if you managed to miss it somehow) and you are welcome.

Tags: ,

Introducing PhoneNameResolver–a lib to decipher Windows Phone models

1/21/2013 8:31:54 PM


On Windows Phone you can get information about device’s manufacturer and model using Microsoft.Phone.Info.DeviceStatus class. Unfortunately the results you get do not always represent model names people are used to (see the screenshot above). To make matters worse same models made for different network operators quite often return different values. Additionally returned value quite often changes between batches of the same model. With Windows Phone 8 Nokia went one step further and introduced so many variations of the model name that it became extremely painful to account for all of them manually. That’s why I decided to dedicate a few hours on a weekend to make a small lib that helps with this problem.

PhoneNameResolver (released under MIT license) is a very simple static class that has only one public method called Resolve(). You pass the manufacturer and model name from the DeviceStatus and it returns an object of type CanonicalPhoneName which contains resolved “canonical” (official and/or widely used) model name.

Here’s a sample:

var phone = PhoneNameResolver.Resolve(
    DeviceStatus.DeviceManufacturer, DeviceStatus.DeviceName);
SomeTextBox.Text = phone.FullCanonicalName;

CanonicalManufacturer and CanonicalModel include manufacturer and model separately and are always set. In the case the lib wasn’t able to resolve the model they will be set to the same values passed to the method and IsResolved property will be set to false.

At the moment the lib resolves Nokia, HTC, Samsung and LG model names. The reported/canonical value pairs where collected from public unofficial sources so there’s absolutely no guarantee in the accuracy of the results.

The lib is basically a single C# file and all the model name definitions are included in the same file. I did this to make it extremely easy to just drop the file into your project and to make it work as fast and as config free as possible. That said this is probably not the best architecture to update model definitions without recompiling an app. I’m still open to ideas and this may change in the future. Please let me know your thoughts in the comments below.

Tags: ,

What’s wrong with Music and Podcasts in Windows Phone 8

1/2/2013 7:06:55 PM


I love Windows Phone 8, all the new features it brings and this Nokia Lumia 920 phone. That said there’s one area that degraded so much from Windows Phone 7.x that it makes me really sad. To make things worse it’s not some obscure area that no one ever uses. It’s the part of the system that I use every single day. It’s music and podcasts.

It may not be as painful to those who used these features on WP7 differently from how I used them. For some it maybe even worse though, because Podcasts for some wildly inexplicable reason are only available to users in US (I use my phone in US “mode”).

So here’s a list of things that bother me. You may have your own list or I may have missed something that would make my life easier. In this case, please, let me know in the comments.


  1. Sync. I don’t feel the need to have my whole music collection on the phone. I mostly listen to music on the phone when driving. I listen and “discover” music on my PC. So I had a “current” playlist and gradually added (or removed) songs to it in Zune (PC) and it was set to sync with my WP7. That’s it. Worked like a charm.

    Zune knows nothing about WP8, Xbox Music on Windows 8 knows nothing about WP8, Windows Phone app doesn’t know much about Xbox Music, Windows Media Player knows nothing about Xbox Music DRM, Windows Phone desktop sync application can (manually) sync playlist from PC to phone but some (all?) DRMed songs refused to play on the phone. I may need to play more with that sync app, but it’s definitely not going to be as seamless as it was with Zune until something more fundamental changes.
  2. wp_ss_20130102_0001Cloud music. The [theoretically] cool feature of Xbox Music on Windows 8 and Windows Phone 8 is that the music you get on your PC shows up in your library on the phone. The actual files are not downloaded to the phone. They just appear as “links” to the cloud. So when you play the music it’s streamed over whatever data connection you happen to be using. As I mentioned, I mostly listen to music on the phone while driving so it uses my mobile data connection. Now I don’t know about global mobile data situation, but my understanding is that unlimited data plans are not widely available and are actually on the decline (at least in US). And honestly, I don’t want to pay more for data to get an unlimited data plan. Especially to listen to music that I’ve already downloaded to my PC.

    So I thought I’ll just copy the album I wanted to listen to the phone and it’ll play locally. Little did I know that it’ll play the same songs twice – once from the local storage and once from the cloud. So as far as I understand at this point you either have to go download the same music twice – once on the PC and once on the phone, or you just disable the “cloud music” on the phone and copy the files.


Here’s a part of Windows Phone 8 FAQ admitting there’s something terribly wrong with podcasts on WP8 if Microsoft is “forced” to recommend using iTunes!

▼How can I get my podcasts on my phone?

There are a couple of ways to get podcasts, but not with the Windows Phone app. The first way is to get them from the Store on your phone. If you'd prefer to get them from your PC, you can download them in iTunes, then use the Windows Phone app for desktop (beta) to sync them to your phone. To learn more, see Sync with my Windows 7 or Windows 8 PC.

So here’s my list for podcasts:

  1. Sync. I know many people don’t see this as an issue since they didn’t use podcasts this way on WP7 either, but I used to subscribe to podcasts on the PC (in Zune) and then autosync them to phone whenever it’s plugged into the PC (which is for 8-12 hours every day).

    What are the benefits of this? 1) you can easily mark multiple episodes as played (more on this later); 2) you can finish listening an episode on your PC (it autosynced position); 3) you can force a check for new episodes (more on this later); 4) you can subscribe to podcasts via RSS.

    I know that most of these issues were identical on the phone side in WP7, but they were mitigated by my use of Zune to manage podcasts.
  2. wp_ss_20130102_0002Sort order. It’s not about sort order itself. It’s about sorting by oldest being unusable for any podcast with a sizeable history and sorting by newest being quite an odd experience when you are not 100% done with all of the episodes when a new one comes out.

    When you sort by oldest you get the whole history of the podcast as unplayed until you mark all of the old episodes as played. And you have to do it one episode at a time (unless I missed something).

    Sorting by newest doesn’t make any sense to me at all. Maybe only if you choose to store one latest episode only and delete the older episode independently of it’s played status. If you choose to keep more than one episode you’ll end up listening to the newest episode when you hit the play button next to the podcast even if you were only half way through the previous one. So to have any sort of reasonable listening order you have to monitor the progress yourself and manually pick an episode you want to listen to.
  3. Manual refresh. The podcast service/app on the phone chooses when to check for new episodes based on some black box algorithm. It’s very annoying when you know for a fact that the new episode of your popular show is out but it’s not yet on your phone for some reason. The only workaround I know is unsubscribing and resubscribing to the podcast which is annoying, looses listening history, etc.
  4. Podcasts from store only. There’s no way to add podcasts other than looking them up in the store. I guess that’s the reason why podcasts are a US-only feature. In any case not every podcast in the world is listed in the Zune store. And it’s going to get worse since there’s no equivalent for the podcast part of Zune on Windows 8.

Even though it was a pretty long post, I’m sure there are things I’ve forgotten to mention. I really hope that situation changes as soon as possible. I assume the podcast situation can be somewhat resolved by using a 3rd party app. Which one is your favorite? As far as music goes, I wouldn’t want to drop the Xbox Music Pass, so I hope to find ways to make it work the way I want.

Tags: ,

AdDuplex Gift Coupons for Your Developer Friends

12/19/2012 2:49:38 PM


Do you have Windows Phone or Windows 8 developer friends? One of the best holiday gifts you can give them is some extra exposure for their apps. That’s what AdDuplex gift coupons are fore.

There are 3 types of coupons:

  • $15/5,000 impressions
  • $50/20,000 impressions (list value $60)
  • $100/20,000 impressions (list value $200)

That’s an easy and valuable present for your geek friends.

Buy AdDuplex gift codes here.

Tags: , , ,

Shifts Calendar apps for Windows Phone

12/18/2012 7:34:54 PM

My wife works in shifts. Randomly distributed over a month. Every month she gets a sheet of paper with a list of shifts in a table with other people. What I usually did was take a picture of that list and then look through it trying to figure out her schedule for today/tomorrow. This isn’t difficult but pretty inconvenient. So for a month or so I was musing about doing a personal hackathon to make an up to do that more conveniently.

Does your idea pass a “Google test”?

Well, this app was never meant to be a business, because I always thought it’s too niche. That’s why I never thought it could exist and never bothered to search for an app like this. But as they say “there’s an app for that”. Even for something you think only you and 2 other people need. So I finally stopped procrastinating and did a search for “shifts calendar”


The funny thing is that I either didn’t find SaTurnos when I did the search on the phone or missed it because the name and tile didn’t catch my eye. So I’ll only cover the remaining 3 in this post.

My requirements

I had 2 must-have requirements:

  1. easy to enter shifts – I don’t want to spend half an hour to enter the shifts.
  2. live tile – I want it to be easier to check the shift with this app than to look it up in the photo, way easier.

There are a few things that would be nice-to-have but I can live without them, namely

  • export to [real] calendar
  • share the data file with other copies of the app (wife’s, daughter’s, etc.)

Choosing an app

shiftscalendarHere’s a brief look at my thought process when choosing one of the 3 apps.

First of all only one of the 3 apps had trial – ShiftCalendar

Since it was only one of the 3 that had a trial it was an obvious choice to try first without even going through description or reviews. Glance at the screenshots and instant download. At this point, if it satisfied my requirements it would be over for the other 2. Can’t understand why would anyone decide not to do a trial or a free version with upsell/IAP/ads.

Anyway. Unfortunately 2 other apps got a chance because ShiftCalendar failed both of my requirements. Entering shifts is relatively painful – for every day it opens a windows to select a shift. You can select multiple dates for the same shift and then set it. Still a little suboptimal, imho. Moreover it only lets you pick a color for the shifts so you end up with a colorful calendar where you have to remember which shift each color represents. Probably easy after a few days of use, but still an odd decision. And no live tile.

So, as I said, only the fact that it didn’t satisfy my requirements gave the other 2 a chance. Since they didn’t have trial I had to read their descriptions and reviews relatively carefully.

shiftworkcalendarFirst was Shift Work Calendar. The screenshots looked nice and feature list impressive. The app has way more than I need, even though it doesn’t have any of my nice-to-have features. That said it has an export to image feature which on one hand is better looking and easier to digest and share than the original sheet of paper, but on the other hand screenshot feature on Windows Phone 8 basically renders this a non-feature.

So the calendar looks nice, entering shifts is easy (even though I envisioned a better input UI for my imaginary app) and live tile is listed and showcased on one of the screenshots.

With everything looking pretty good one “feature” threw me off completely and made me buy the other app first and I only bought Shift Work Calendar after I decided to do this review.

That “feature” is:

30 page user guide downloadable from the help page.


Seriously! This is the reason I chose the other app. That and the fact that some people in the reviews mentioned this “feature” as something you would need to figure out how to use this app. And I actually had to reread the description (managed to do without the user guide) to get a hint on how to get the life tile to work since it didn’t work on the main tile (you need to go to calendars, select a calendar you want to pin and press the edit button (pencil) and there you’ll find a button to pin it).

The tile looks a little washed out (probably due to the fact it was made for WVGA displays) but otherwise displays all the essential information – today’s shift on the front and tomorrow’s shift on the back.

shiftwerkSo this brings us to the third app and the first one I’ve bought – Shiftwerk. The app looks pretty good, even though I prefer the look of Shift Work Calendar. The data entry is pretty much identical to Shift Work Calendar and is fine with me. Like ShiftCalendar it only shows shifts via colors in the calendar, though. That said if you tap on the date you see the details under it. Another thing is that it always uses Sunday as the first day of the week and doesn’t pick it up from your regional settings and doesn’t have a setting to set the first day manually.

Live tile worked “right out of the box”, looked crisp and it didn’t require reading a 30 page manual ;) Unfortunately, though, there’s one major flaw with the live tile for me. It show the next shift. Meaning that if you work say from 2pm to 8pm today it will start showing tomorrows shift after 2pm. This is probably fine if you are the one working in shifts – you would probably know that you are at work at 3pm. But since I need it to know someone else’s shifts it doesn’t work for me. If 3pm was the first time I decided to check it I will have no idea if today was a day off, first shift or second shift. Not a super-major issue but still a minus in my book.

So it looks like I will be using Shift Work Calendar after all, but I’m keeping all of them pinned at least until the end of the month to see if I’ve missed something. Here’s how they look pinned:


Tags: ,

Deciphering Nokia’s Model Names

12/4/2012 6:33:33 PM

Windows Phone SDK v.7.1 introduced a class called DeviceStatus with a property called DeviceName which returns a model name of the device your app is running on. There were some variations and discrepancies with what different devices returned, but overall it was quite fine in the Windows Phone 7 world.

For reasons unknown to me Nokia decided that this was too good and their new Windows Phone 8 devices return model numbers like RM-820_nam_att_100, RM-821_eu_turkey_343, RM-845_nam_vzw_100, RM-821_eu_russia_216, RM-821_eu_finland_207, etc. As you can see all these “model names” include letters RM followed by some internal model number and then country/region and a mobile operator. Update: I’ve got a tip that the actual structure is <RM-Code>_<Region>_<Variant ID>

I was unable to find a single list that would decipher these model names so I’ve decided to compile my own by looking up each model number I’ve seen individually. So here goes:

  • RM-820 and RM-821 are Lumia 920
  • RM-824, RM-825 and RM-826 are Lumia 820
  • RM-845 is Lumia 822 (exclusive to Verizon in US)
  • RM-878 is Lumia 810 (exclusive to T-Mobile in US)

I’ve also seen RM-867 but couldn’t find what this stand for.

Things are a little better with HTC. They report “Windows Phone 8X by HTC” most of the time. Except for Verizon version where they decided to report “HTC6990LVW” instead.


Ad Rotator (Gergely Orosz and Simon Jackson) on AppBizDev

10/15/2012 4:00:53 PM

If you monetize your Windows Phone (and Windows 8) apps with ads you probably know not to rely on a single ad network. Some do better in one region and have nothing to show in all others, some pay more in some countries but less in the others, etc. And the fill rate is never 100%. So to make sure you utilize your ad space to the max you use multiple ad providers.

It’s not too difficult to implement a system that will switch from one ad provider to some other when there’s no ad to show. But if you want to do it really well you’d probably need to have different defaults for different locales. And to make things more complicated performance of different ad networks changes regularly. So you don’t want to hard code any of these settings into your app and issue an update whenever market situation changes. You can still implement an intelligent system like that yourself, but why reinvent the wheel?

There’s an open source project called Ad Rotator which can do all of the above and more for you. We’ve interviewed lead contributors to the project – Gergely Orosz and Simon Jackson on the latest episode of AppBizDev podcast. Check it out and make sure you subscribe in Zune, iTunes or any other tool to get new episodes automatically.

And, btw, if you have some music skills in addition to your awesome dev skills, you can get a MILLION free ad impressions on AdDuplex network by contributing a theme music to the podcast. Check out more details here.

Tags: , , ,

Copyright © 2003 - 2018 Alan Mendelevich
Powered by BlogEngine.NET