I have a low attention span for side projects. I've come to find out that if I cannot complete the project in two days, the chances of me finishing that side project rapidly diminish. I am starting to accept this and find ways to increase my two day window. Metro Stack was created out of a challenge from John Nelson to create a well written Metro template. John did a great job on some mockups for a blog he and I are working on that followed the Metro theme. I thought I could one-up him and create a template for a WPF application that could work for any list driven content. Knowing fully that I had approximately two days to finish the project, I began.
The thought was to create a simple template with minimal to zero code behind. You would be able to populate a view model that contained all the data that is relevant to your application. Then you could override the styling in Blend for whatever different theming or additional behavior you needed. Going into the application I knew of some of the challenges in a Metro design:
- No window border or title bar while also supporting a mouse drag
- A custom control box
- Strong use of Segoe UI
- Docking/Undocking a window with no border
- Drop shadow around the application window
- Animations! Metro is all about subtle slide in animations everywhere.
- Making a pivot control for WPF
As I was writing the themed WPF page I started thinking, "How am I going to show that I am clearly the better programmer over John without some data to show in it?" I needed some interesting sample data to show to a developer. Twitter or Netflix are the usual victims of a sample data feed but why not be different. I wanted to create a Metro themed Stack Overflow.
It was at this moment that Metro Stack was born.
Since then, I have migrated my project to be exclusively Metro Stack and put the Metro templating project on the shelf for another day (never). Before I made the decision to switch projects I dumped an entire day into the Metro Stack UI and MVVM binding support to start tackling the known challenges. I came up with some pretty impressive results for one day, but more importantly I got to reset my side project timer! Since I switched ideas I am back to zero days of development and have a fresh two days to finish my project. That's good because there are all new types of challenges when writing a Stack Overflow reader. To ensure that I don't abandon the project immediately after posting this I registered Metro Stack on StackApps
For now, I'll leave you with a prototype screenshot with real data from Stack Overflow. The application gets inspiration from MetroTwit and the Microsoft Zune player. Look for more posts explaining how I tackled these challenges.
Note: OK, I don't really stick to a strict two day per side project schedule, but I do tend to get distracted from projects and never go back. I just wanted to make sure that I stick with this one for as long as it is still interesting and useful.