Choosing the Platform

I’d been looking into developing an app for Windows Phone since I picked up the Samsung Focus 18 months ago – to learn the technology and showcase what the platform can do. As a Microsoft employee, I feel tied to the platform, but also felt like it could be approachable since I am familiar with the language and some of the tools already. I also liked what I had heard about the Windows Phone 7.5 update and wanted to try out some of the features. I recently finished a work project using WPF in which I picked up some XAML experience, so I felt energized about wrapping my head around the Silverlight-based development stack, and becoming a published app author.

Behind the Idea

So I set out to brainstorm ideas. I figured that good mobile app either has an interesting data set or an interesting algorithm, and is something that is useful away from your computer. I thought about places where you might go and need an app, and somehow remembered about a trip that my dad and I took to the Vietnam Veterans Memorial Wall in Washington, DC. While at the Wall, my dad tried to remember some of the folks he knew about who died in the war. We thumbed through some arcane books where the names were listed alphabetically and by hometown, and found one of the fallen GIs. But we had trouble finding others. Given that most of the soldiers, sailors, airmen, marines and coast guardsmen perished or were declared M.I.A. over 40 years ago, it seems like recall could be a problem worth trying to solve.

The Tiny Wall

So grew the idea of having a portable version of the Vietnam Wall database. I contacted multiple organizations that maintain the database of names behind the wall (there are a few parallel copies maintained by different organizations). There was a lot of interest. Even though the number of potential users is relatively small compared to iPhone or Android, the consensus was that the additional interest and exposure for the wall, and the memory of those listed on it, would justify the efforts. I chose to partner with the good folks at the Virtual Wall®, who tirelessly maintain a virtual memorial for each war casualty and M.I.A., and provide updates to their copy of the data. With their agreement to provide a regularly-updated dump of the wall names (surprisingly, even after 40 years, the data is updated monthly with dozens of changes), I agreed to develop the app free of charge and not include ads or solicit donations. The focus would be on providing a new way to search the database, and providing additional information about the wall to visitors including a link to The Virtual Wall®’s memorials.

We decided on an initial set of features:

  • Support searching the wall by First and Last Name
  • Support searching by Home of Record (City/State/Country)
  • Enable “sounds like” searching for names
  • When searching by Home of Record, include nearby locations
  • Indicate where on the wall the name is located


I chose some technical requirements in order to make the platform shine:

  • Use the Windows Phone embedded database included with Windows Phone 7.5
  • Adhere to Metro design language principles as best as possible, and take design cues from others (related, make it look good)
  • Learn and use the standard tools: Visual Studio, Windows Phone Tools, Expression Blend, various CodePlex projects
  • Avoid common mistakes: slow scrolling list boxes, inconsistent fonts, ignoring user color choices

The Published App

After about 200 hours of work, Vietnam Wall was published just after Memorial Day 2012. I was shooting for a release for that holiday, but it didn’t quite get approved in time.

MainPage_BlackFindByProfilePageSearchResults

http://www.windowsphone.com/en-US/apps/0b758fa2-6414-4381-923e-557172cb3edc?wa=wsignin1.0

Tools and Resources

Here is a collection of tools and resources I used in the process of creating the Vietnam Wall app. In retrospect, I’d say the tools are robust and capable, if you know where to look. In order to create a clean and compelling app, it’s necessary to be conscious about all your pixels. Vietnam Wall isn’t a perfect design by any means, but I think it looks clean and works well, thanks mostly to Scott Hanselman and Jeff Wilcox, as well as the other links I’ve shared below.

Essential Reading

These resources are key to getting started and knowing about the tools and processes to develop Windows Phone apps. Scott Hanselman’s volume is quite helpful, although after the 10th or so 6-hour session working on Vietnam Wall, I begin to curse his blog post’s title. Ha!

Database

I used a Mango Local database. Turns out it’s not quite SQL CE 3.5, and you have to create and populate it in a very specific way, by creating a Windows Phone app and using the emulator to pump the data in using LINQ-to-SQL, then copying it from local storage to your “real” app. It seems like a rather convoluted process, but it works OK. In the end, it’s nice to have full LINQ access to a data store and not have to distribute any libraries (since the SQLCE drivers are included in the Windows Phone 7.5 OS).

Interface Controls

I used with Telerik RadControls. As a Microsoft employee, I was able to snag a free (normally $99) license. I was happy with their support and the tile, progress bar and animation helper controls (as part of their custom Root Application Frame) were slick. In particular, I like how transition animations work when paging away from the tile controls (see it in action in Vietnam Wall). I also used their Diagnostics and Picker controls, which I think saved some effort over the CodePlex versions.

Design

I figure I spent 60% of my time getting this app to look decent. Jeff Wilcox’s design guides for developers were infinitely helpful here, and I set out to apply his guidance as best I could. I also thought the MSDN resources were decent.

Conclusion

I had a pretty good experience developing my first app for Windows Phone. I bit off a fairly complex project (using a Local DB and providing some advanced search functionality), and ended up spending considerable time learning and applying the Metro design language and various Windows Phone design guidelines. I’d say the tools are fairly easy and good to work with (especially the Visual Studio/Blend pass-off), and the documentation is abundant and easy to find. Now that Vietnam Wall is out the door, developing additional apps will have a lot smaller learning curve.