A towel, it says, is about the most massively useful thing an interstellar hitchhiker can have.
It has been a while since my last post eh? I have been working non-stop but unfortunately was too lazy to blog about stuff I’m working on. But well, now that I have a little more free time, guess it’s time to talk a little about WPF and my latest e-sports fan application attempt; Towel.
I believe it was 2010 summer, I first started my little humble Starcraft 2 fan application ScCalendar. At first, it was supposed to be just a little desktop calendar with notification system ( based on TeamLiquid events calendar. ), to help people to keep up with all Starcraft 2 events going on. Later on I added lots of other stuff, like stream player, irc client, rss reader etc and it grow pretty fast.
ScCalendar have been downloaded more than 6500 times from our Codeplex page and even though it’s discontinued for almost a year ( for various reasons, I won’t go into that for now ), still has around 50-100 daily users.
Streams Window of ScCalendar
Main Menu and Notifications
It looks kind of pretty but unfortunately code behind was a total mess. As I said the initial plan was just to have a calendar and notification system so there wasn’t a proper backbone or infrastructure to support a bigger application. And I did a terrible job with refactoring ( I simply didn’t do it ) and just kept adding new stuff. In the end, it turned into a huge bloated application that I couldn’t manage and support it properly anymore.
ScCalendar 2 & ScCalendar 3
After ScCalendar turned into a total mess, I decided to write a new one from scratch. A new version better, faster, prettier, manageable and with a proper infrastructure to support all possible features I might want to add in the future.
To be honest, I don’t even remember ScCalendar2. I probably created the project, tried some stuff, experimented a bit ( MEF ? ) and then gave up.
Second attempt, ScCalendar 3 was much better though. I worked on it for a decent while, created a MEF based infrastructure and a decent module system. Even did most of the calendar and stream modules but then I noticed the structure was much more complicated than it should be. There were extra layers and useless abstractions that I’ll probably never ever need etc. I learned my lesson though, making it HUGE makes it less manageable, not more.
Initial UI & Style of ScCalendar 3. I decided to try out Metro UI but no one ( except me ) liked this white theme so I had to redo the style and layout;
All these screenshots are from early development stages, so don’t mind the bad UI/UX.
and the Towel
After the first 2 failures, I started Towel. I simply didn’t wanted to name it ScC4 and “Towel” was one of the first things came to my mind. I’ve always been terrible at naming stuff so I learned not to waste time on naming ( as it’ll be terrible no matter how much I try ) and stick with the first thing comes to my mind.
Fortunately ScCalendar3 code was actually pretty good, it was just too complicated. So all I had to do is to start a new project, copy the ScC3 code and deleted some abstractions and layers.
UI is servable yet still far from finished at this stage
I won’t go into too much detail here, but there are lots of stuff in Towel I want to blog about. Like modularity, completely skin able UI and animations. I’m also pretty new to most of those stuff myself, so it’ll be more like sharing what I learned than teaching. I hope someone out there ( it’s so lonely in the WPF world ) will find it useful.
Towel, at the moment, has calendar and stream widgets. They are both almost done, just doing little tweaks ( mostly UI ) and bug fixing now. Also started to work on Stream Player yesterday, it’ll be an external, stand alone player application so people will be able to use it separately as well. And only after that I’ll release the Towel 0.1b. Hopefully I won’t get bored and trash everything once again until then!
So now that I’m back to WPF and have lots of stuff to talk about, I’ll try to post more frequently. See you soon!