Pfff… I did it. And it’s always scary. After months of coding, refactoring and learning about new .NET 2.0 things I decided today to release the first beta of Doppler 3.0.
It’s always exciting. Both in a positive (they love it!) and in a negative (or do they totally trash it?) kind of a way.
It’s been quite a journey from Doppler 2.0 to 3.0. First I started off with Doppler 3.0 based on the .NET 1.1 framework. Added all kinds of nifty features, which never saw the daylight, checkbox here, checkbox there, etc. End result: a totally cluttered piece of code.
It felt sluggish. Reason among this is that the fact that the first builds of Doppler 3.0 where based on the 2.0 code. When I now look back to the 2.0 code (which was created early 2005) it already looks like from a previous era.
I’ve learned a great deal about C# and .NET coding in those months, and as a result my code changed a lot. Much more efficient, much cleaner, and also better. Take for instance the ‘issue’ with threads needed to update GUI control which have been created on a another thread. Officially you can’t do this, however, VS.NET 2003 never really did complain about it, and it worked, somehow (okay, I did implement some stuff to work ‘around it’). But VS.NET 2005 is unforgiving. Do you access a control from another thread it bangs out of me. Simple as that. And it should. So 3.0 is done the ‘right way’. Delegates, all the stuff.
In the mean time I’ve been checking out implementing bittorrent support. Checked out a few libraries out there to hook into Doppler 3.0 and did some testing. The majority of that code is still in the current 3.0 beta, but it’s not enabled. Yet. We’ll see how needed it is. The moment iTunes started to support podcasting, but did not implement bittorent support all the podcasting sites only doing stuff with bittorrent based downloads had to change and implement non-bittorrent downloads too in order to serve those subscribing with iTunes. Still, if I get a -lot- of requests I will probably enable the bittorrent support again (it still needs coding though, it’s not like pulling a switch and it’s there
).
I also changed the download ‘model’ a bit. Instead of handling everything in the main window I now introduce a multi-pane (pain? only the users can tell) interface, splitting up the downloads from the feeds and the posts and files also end up in a separate pane. The .NET 2.0 splitcontainer made that a VERY simple thing to implement. So -SO- much better than the splittercontrol in .NET 1.1.
I dropped an external component (the Glacial ListView control) which I used in Doppler 2.0 and replaced it with my own control. The Glacial ListView I used to implement progress bars in the main window, but in 3.0 I wrote my own stuff to handle that. Actually not difficult at all, and all the flexibility the Glacial ListView offered my was just additional overhead which I didn’t need.
All in all it was an incredible journey to get to the current beta, now it’s getting packed again and continue my trip to beta 2. Hope to see you on the other side!