NDC2010 - Patterns and techniques for building Windows Phone 7 applications

Last month I was lucky enough to both attend and speak at the Norwegian Developer Conference. It was a fantastic conference, and the conversations following the conference are still buzzing on twitter and in the blogosphere. For me NDC must have been one of the best conferences I’ve ever attended, offering a diverse range of topics from some of the best speakers in the industry. I’m humbled to be invited to speak at such a great event.

~

My session was on building Silverlight applications for the Windows Phone 7 platform. Instead of doing a feature tour of all the new APIs I decided to focus on some of the patterns and principles I find important when doing Silverlight development, and showing how to apply these in a Windows Phone 7 context. Some of the topics I covered in my talk included:

  • How to do TDD in Silverlight on WP7
  • The MVVM design pattern and MVVM Light Framework.
  • How to use dependency injection in a WP7 context and how it can help you inject stub implementations of APIs that isn’t available in the emulator.
  • Asynchronous web services using Rx (Reactive Extensions).
  • How to use the location APIs and how to make stub implementations for the emulator.
  • How to use the push notification API.
  • Making your views Blend-friendly by supplying design time data.
  • The Metro design language (look and feel of WP7 applications)

 

To best illustrate these concepts I’ve built a full Windows Phone 7 application that lets you monitor arrivals and departures from any Norwegian airport. The application consumes a set of REST services exposed by Avinor that lets you look up arrivals and departures for a given airport. I’ve made the entire application available on GitHub as open source, and I do plan to polish it enough to actually publish it on the app marked place as soon as the WP7 is released.

Screenshot

Most sessions from NDC2010 where recorded, and can be downloaded from the Tandberg streaming server or as a complete torrent with all the sessions. I’ve also uploaded my session to Vimeo (for my personal video archive), and to make it easier to embed it on my blog.

Silverlight Applications for Windows Phone 7 from Jonas Follesø on Vimeo.

The slides are available on Slide Share, and the source code is up on GitHub. I do plan to update the code as new versions of the WP7 platform is released, and hope the application can serve as a good example of how to architect a WP7 application.

Thanks to everyone who showed up for my session, and for the great feedback on Twitter, in person and through the conference evaluation system. Thanks to everyone I meet during the conference that I got a chance to talk to – it’s amazing how many talented people you meet at a conference like NDC. Also big thanks to the people behind NDC – they did an amazing job and I’m truly looking forward to next year’s conference!

Jonas Follesø

Programmer, Triathlete, Traveler, Under Water Enthusiast and GoPro Videographer from Trondheim, Norway. Works as Chief Scientist and Manager at Bekk Consulting AS.

Trondheim, Norway http://jonas.follesoe.no