Where are all the Windows Phone 8 Apps?

I have a confession.  After years of being an iPhone user, I recently switched to the Lumia 920.  I love it.  It happens to fit my phone usage pretty perfectly, so for me it was a no-brainer. 

The only downside has been the (well documented) lack of apps in the store.  This hasn’t been too much of an issue for me personally but there are a couple of things I wish I had an app for.

Of course, being a developer with lots of C# experience, I figured I would open up a developer account and scratch my own itch.

Installing the SDK

The first thing I needed to do was download and install the WP8 SDK.  Now, my main development machine is a beefy desktop running Windows 7 x64 with an up-to-date copy Visual Studio 2012.

Oops.

Turns out, the SDK requires Windows 8.  Incredibly annoying, especially when you consider I just want to develop a couple of phone applications – not full Windows 8 apps.

Since I work on several different websites and applications using my development machine, I wasn’t comfortable running through the process to upgrade it to Windows 8.  I felt like it was too much of a risk just to “play around” with the SDK.

Now don’t get me wrong.  I actually like the Windows 8 OS – I run it on my laptop.  I just wasn’t comfortable upgrading the machine that I use in my day-to-day work until I had a block of time to ensure everything is working correctly.

As it turns out, that would prove to be a good decision.

Installing the SDK, Take Two

As I mentioned, my laptop (which doubles as my development machine when traveling) was already running Windows 8 x64 (yep – the SDK only supports 64bit windows).  So I pulled it out and downloaded the SDK and started the install. 

I was feeling pretty good.  Sure Microsoft decided to go with some annoying requirements, but hey – it wasn’t any worse than developing for the iPhone.

That would be when the wheels started to come off.  The SDK installed fine, but it popped up a warning message that the emulator could not be installed on my system. 

Turns out the emulator requires Windows 8 Pro.

Installing Windows 8 Professional

Fortunately, as a member of Microsoft’s Bizspark program, I get access to a bunch of software, including the Professional version of Windows 8.  So I decided to go ahead and upgrade my laptop, cleaning out the accumulated junk in the process.

The upgrade went smoothly, I installed Visual Studio, and re-installed the SDK.

Still no luck.

Hyper-V Support

It turns out I should have paid closer attention to the first warning before going through the process of re-installing everything.  In order to run the emulator, you need something called Hyper-V, which is basically what Microsoft calls its hardware assisted virtualization software. 

This requirement is why the emulator needs Windows 8 Pro – Hyper-V is only available in the professional version of Windows 8.  As a matter of fact there is a whole list of very specific requirements you need in order to even run Hyper-V.

Basically, if you want to develop a windows app using an emulator, you are going to have to purchase a new operating system.

I mean seriously, when was the last time you saw a machine sold with the Pro version of windows?

What are my options?

At this point I was aggravated.  I just wanted to play around with the SDK and build a couple of simple apps to see what was possible.  I had two options:

  1. Build the app and then install it on my phone and test it there (registering my phone for app development in the process).
  2. Somehow enable Hyper-V on my system.

Option #1 wasn’t really an option for me.  My Lumia is my main phone, and I’d rather not do my development on it.

So I set out to determine how to enable Hyper-V.

Enabling Hyper-V

Enabling Hyper-V involves a couple of steps.  First, you need to enable several advanced settings in the BIOS.  Then you have to install the Hyper-V feature using the “Add/Remove Windows Features” option in the control panel.    You also need to ensure you are a member of the Hyper-V administrators group.  Happily, Microsoft walks you through the specific settings needed in BIOS and how to setup Windows correctly.

Unhappily, those required BIOS settings weren’t available on my machine.

Double oops.

Second Level Address Translation (SLAT)

It all goes back to those obscure BIOS settings that Microsoft requires.  After searching around my BIOS for anything resembling the options listed, I ran the coreinfo tool Microsoft recommends to determine if your machine is compatible.

My laptop doesn’t support SLAT.

At first I wasn’t daunted.  I tend to collect machines as part of my work so I can test software and websites on different configurations.  I figured that I had 4 different computers (all from different manufacturers) available, surely one of them would have this mysterious SLAT option available.

Triple oops.

Not a single machine supported SLAT.

Then I found this little post, which suggests that coreinfo can’t always be trusted, which gave me hope again.  So I went back and verified that none of the machines were running Hyper-V already (they weren’t), and then manually compared my CPUs against the list of processors that support hardware-assisted virtualization from both AMD and Intel.

Still no luck.

And these aren’t ancient machines.  They all run my development environment (including VS2012) quite capably.  They all support different virtual machines for testing.  I’ve never had any performance issues with them.  But apparently, Microsoft disagrees.

Why?

According to Microsoft, they require SLAT for their emulator to ensure the best possible performance.

But here’s the thing:

I don’t care.

I don’t need my emulator to work lightning fast.  I just need it to work.  I don’t care if it is slow.  The iPhone emulator runs like molasses on my MacBook, but it runs.  I am used to things being slow.

As a matter of fact, it is often helpful to me as a developer to see how the software behaves when things are slow.  That way I’m not blindsided by a customer with a crappy machine or phone calling me up to complain about something I can never reproduce (this has happened to me before).

Plus, I just wanted to try it out!

So… About Those Apps?

My guess is that the hobbyists and small developers that make up the bulk of iOS and Android app development encountered the same difficulty I did and gave up.  It is honestly a pain, and for such a small market share, it is hard to justify jumping through all these hoops.

The onboarding experience for a windows phone developer is horrible.  You have a great idea for an app, and instead of being able to build it, you lose hours jumping through the arbitrary hoops Microsoft has created until you finally give up.

At least, that’s what I did.

Maybe, having finally decided to retire my old HP, when my newly ordered top-of-the-line travel laptop arrives I’ll try again (I checked – the machine is fully compatible, it just needs Windows 8 professional).  Until then, I guess my Windows Phone App will just languish.  Or maybe I’ll try out Android – I hear they make it super easy.