Some of you may know that I make a Windows Phone app called My Trips. It’s a popular companion application for the awesome TripIt.com service. If you don’t use TripIt to manage your travel plans you are missing out! You just forward your booking PDF or document from your travel agent, hotel, airline or whatever to email@example.com and they magically (nerd alert: read awesome search based entity extraction) parse out all the data and put it into a far for useful format that is accessible on the internet for you.
My Trips lets you sync those plans down to your phone or PC and take them with you when you travel. As awesome as the world is these days its highly likely you will be stuck without an internet connection at the most inopportune time 🙂
I wrote the first version of My Trips as an experiment when I wanted to take a look at building a phone app for Windows Phone… one thing led to another and nek minnit everyone wants it and I had to make it into a real app and publish it.
Long story short … it’s used by more people than I had ever hoped 🙂
So when Windows 8 came around people started asking when I would release My Trips for it. Of course it didn’t take much convincing and I really wanted to try my hand at Win8 development.
So it was a sweet moment last night when I finally finished version 1 of My Trips for Windows and submitted it for certification. Hopefully nothing major will come up in certification and it will be in the Windows Store soon!
Did you just port the phone version?
To answer the question, no it wasn’t a smooth port at all. In fact I would say 85% of the code is new. I want to write a few posts about the experience of the move to Windows 8, but for now it is fair to say that the way I built the phone application didn’t exactly lend itself to code sharing. The phone app wasn’t built with a nice separation of concerns using something like a pattern like MVVM. I decided that rather than continue building on the mess I would start almost from scratch and build up with Win8 version using the (excellent) Caliburn Micro framework to facilitate a clean MVVM pattern.
The resultant code is a wonder of cleanliness, maintainability and extensibility that should make it a lot easier to port to other places if needed and maintain more simply. If you are into clean code I highly recommend taking a look at Caliburn.
So given all I really managed to reuse code wise were a few TripIt API classes and some data model classes it really was quite a bit of work to get the rest written up. All new Views, View Models, some Models and lots of ancillary code for caching, settings etc…Hence why it took a while longer than I had hoped.
I didn’t end up getting 100% feature parity with the phone application just yet. That will take a bit more time. The basics are there however, syncing your trips to your device and viewing them. Additionally things like support for Snapped view in Win8 and “Fill” view (that is the opposite side of the screen to snap view).
Here are a few screenshots of v1:
|Snapped view with another app on the right…
For the devs reading I chose to write the app in C# and XAML over JS/HTML. I personally find the C# XAML experience a LOT more productive … especially when you add in tools and frameworks like Caliburn Micro.
Like I said above, I hope to follow up with a few posts about the experience in more detail and about Win 8 development in general.
Also … drop me a note in the comments or the contact section of the blog if you need any Windows 8 development done. I know some people 🙂