Tips and Tricks from Students: Windows Silverlight Phone App “Wine Cellar”

On of my Windows Phone 7 app got featured yesterday in a blog post on Microsoft’s Go DevMENTAL blog for Canadian students.

You can read all about here but this post is cross-posted from that blog.

From Susan Ibach:

Simon Carpentier, a student from École de Technologie Supérieure, shares a few great resources and tools on storing data and barcode scanning he discovered while building his first Windows Phone App

Want more tips and tricks from students? Check here.

Could you briefly describe your application/game?
Wine Cellar is a Windows Phone 7 app designed for Québec’s wine enthusiasts. Scan the UPC code of your bottle or enter it manually and get information such as the price, origin and appellation. The app stores your wines so you get a nice database of your favourites. Right now it’s pretty basic but I plan to update it so you can add additional information to a wine (tasting notes, how many bottles you have in your cellar, etc…)

Did you use XNA, Silverlight or both?
It uses Silverlight only. It’s not a game so there was no need for XNA. Maybe one day I’ll add some animation to make thing prettier, but I think Silverlight is more suited for this kind of application.

What was your banging your head against a wall moment?
I have a web development background so I’m used to having full control over my database from the server side. I had trouble with data services when came the time to add tables between updates. The app crashed because the database schema wasn’t the same from one version of the app to another. I thought I would need to maintain separate schemas and migrate the data from one to another manually.

Did you ever solve that issue?
After a little search, I found there’s a built-in DatabaseSchemaUpdater class made exactly for this scenario in the WP7 SDK. It’s also very well documented on MSDN

If you had to build this same app again from scratch, what would you do differently?
I think my app is ugly. Starting from scratch, I would take my time to learn WPF and XAML correctly with Microsoft Expression or ask a designer friend to “prettify” (© Susan) my app. The best I could do was to buy a 10$ graphic and use it as an icon.

Any nice suprises?
Besides the SDK being really easy to install, I never really expected the Isolated Storage and Data Binding to work at first try. Well it did and I was shocked on how simple it was.

Did you leverage the mobile platform?
The app uses the camera and Windows Phone 7 Silverlight ZXing Barcode Scanning Library to scan barcodes of bottles right from the phone. That’s something a PC wouldn’t do and I don’t usually drink my wine around PCs.

Did you leverage the touch screen?
No, not really since it’s not a game. I respect the metro design principles though so my app reacts the way a user would expect.

Did you have a favourite feature?
The Model-View-ViewModel project template of the WP7 SDK helped me get right into developing. I easily learned my way through the development stack.

What is one thing you think you did really well in this application?
The navigation between the pages using query strings. I pass the ID of the wine right in the Query String when I call the wine details page. With the OnNavigatedTo event, I load the data so there’s no need for tombstoning or keeping application state.

Are you publishing your application/game?
Of course! It’s available right now here

Where can I learn more about your app/game?
The source code is available at Codeplex.

Who developed this application?
I did, it took about 2 days to build from scratch with no prior WP7 knowledge. I’m graduating in IT Engineering this semester from ÉTS. I also have a personal website where I showcase my other projects and ramble about technology on my blog.