The making of MetroTwit : The Big Bang (Part 1)

It was a sunny Saturday Morning on the 27 March 2010 when I got up to check my daily RSS Feeds. I found a post from Long’s IStartedSomething site with a screenshot of his idea for a Metro-inspired Twitter Client with the hope of making it an awesome Silverlight Out of Browser app. (See the original post here MetroTwit: a Metro-inspired Windows twitter client)

My first thoughts were cool, I reckon I could smack together that UI in Blend (I’ve done plenty of mashing xaml in Blend as I’ve always learnt better with the raw Xaml than the UI tools). My background is not in .NET Apps, I’ve been to many MS conferences and played with a lot of .NET ‘Stuff’ but never created a production application.

I figured I’d leave it to other .NET Developers but I’d see what I could throw together. By that afternoon I had the basic layouts and design of a Silverlight Application starting to happen with the main window when Long woke up and came online.

After sending Long a quick copy of where I was up to, we decided this project might actually be a goer. When we got to the more detailed design, (such as a Drop Shadow on Window border when running Out of Browser) we hit our first wall. Silverlight doesn’t support a transparent window chrome in Out of Browser Applications. Unfortunately the entire idea of MetroTwit is to be an amazing to look at and an amazing to use Twitter Application.

We decided (with a sigh) to switch to WPF and cut out the ability to have our app run on Mac and PC. Thankfully switching to WPF .NET4 opened up quite a few other awesome features for us that has really made MetroTwit look awesome (new Text Rendering Stack for example).

For about a week we worked almost completely on the UI, mashing together how we wanted everything to look, Long being a full on designer that cracked open Blend and recreated templates for every control we used. Not a single control within MetroTwit is a standard WPF Control which is testament to the UI Frameworks flexibility and something that makes me scream when I have to go back to normal controls on .NET Forms (or in my day job, Delphi VCL Controls).

During this week we didn’t really have a Version Control System, however we had decided to use Microsoft’s Live Mesh. I can’t say I’d recommend Live Mesh as Source Control, however it did give us a really quick way iterate our initial designs and code and have a Cloud Backup. It was somewhat amazing to see UI changes that Long was making being built into my new build when I was testing new background logic. It did turn out however as we worked more and more on files close to each other Live Mesh started having a lot of conflicts so we had to abandon Live Mesh.

We are now using a SVN server hosted on my own server that happily does our Source Control for us. Both Long and I quickly realised MetroTwit was more than a 2 man part-time job and Long brought Winston onto the team. Armed with 2 part-time (night work) developers and a Long as our designer we started implementing new features into MetroTwit pretty quickly; trying to get somewhere near parity of the Twitter website.

By the end of our first month we had implemented enough features (and fixed some fun WPF-related perf issues) to begin our Closed Beta program with a number of friends/people we knew used Twitter a lot and who would be able to give us some great feedback on both the good and bad parts of our UI design and features to let us know if were on the right track.

Stay tuned for Part 2 : Return of the Perf which I’ll have ready as soon as we get to our next Beta phase (coming sooner than you think).