My Top 5 Mango Features For Developers

Update: see my article on my favorite mango features for consumers.

My first Windows Phone 7 app was an internal project not meant for general distribution. I was excited to use my existing skills on a new platform. But soon after starting that project, I ran into a number of hurdles. Some were surprises, some were expected. After seeing Mango demos at MIX 11, I knew that, going forward, developing was going to be much more pleasant. Here’s a look at the best 5 features for developers on Mango.

SQL CE and Code First EF Prior to Mango, there was no built-in database. This was my first and biggest surprise. I just assumed it would be there since even Windows Mobile 6.5 had SQL. Mango changed that and provided us with a “code first” gateway into creating app databases with SQL CE. I love LINQ and I love decorating a class with attributes in order to create a database. It’s easy and with LINQ lets me feel right at home. I wish the database was faster on reads and one thing I am not looking forward to schema changes in a production app. I know there’s an upgrade mechanism, but I’m cautious. Hands down, this is the most important new feature for me.

Beta and Private Distribution Devs are allowed 3 devices to “unlock” for development. Lucky for me, the app I was developing was only for 3 people, so I unlocked their phones for them to test it. Eventually I published it on the marketplace (so I wouldn’t have to plug in their phones every time there was an update) and to this day people still download it. But sometimes you want way more than 3 people to test your app.

Beta and private distribution isn’t a mango feature per se, but it came out around the same time. I used the beta distribution my latest app which enabled me to let others test my app without needing to unlock their phone. Unfortunately, you can’t update an existing beta. I know the reasons for this, but I wish there was an option to let the dev say, “It’s okay. This app can be updated”.

Performance Analyzer Honestly, I don’t really know what I’m doing with this tool yet. I know the general idea, but haven’t used it enough to really get the hang of it. In my latest app, I could sense a sort of “stutter” when switching panels on the Panorama control. Running the performance analyzer confirmed this: during a panel change the frame rate had this odd stutter. Unfortunately, I couldn’t figure out how to eliminate the stutter. So I changed to a pivot control instead. It wasn’t quite what I wanted (although now I’m glad I did), but at least I had the analyzer there to help me make that decision. I’m looking forward to this tool becoming more useful over time.

Multitasking The missing feature people loved to hate on. Sure, prior to Mango, there was no real multitasking. Now that I have it, I’m super glad I do. But devs still need to be careful with their app. You can’t assume that your app is still running, and so there is some work to do. Luckily, fast application switching comes for free (as long as you do your own housecleaning if necessary).

Background agents are a cool way to deal with certain ongoing tasks. I used a background agent to do work that I might have had a push notification do before. Doing a background agent allowed me to offload that work to the client, rather than having a server take care of the work and send a message along to the client. Background Audio is pretty sweet too.

Live Tiles One of my favorite new features in Mango is live tiles. I love that we can change within the app (or background agent) the primary tile, add or remove content to the back of the tile, and add secondary tiles (with deep linking) all without needing to rely on the network for push notifications. The user experience is a little more consistent and reliable and I love watching the tiles flip and do their thing. Pushing this a little further, I wish we could put our own icons on the lock screen.

So there you go. My top 5 features of Mango for developers. There’s a lot more and I’ve yet to use many of them (new camera api, gyro, etc.) but Mango gets me a long way to what I need to write the apps I want to write.