From time to time I like to evaluate the way I’m working, investigate on new alternatives, try other approaches, etc. in order to improve the way I do things. Other times, I have to change the way I do some things by necessity. This time was a bit of both. The number of components I’m selling on my web page www.manuelabadia.com is growing slowly and some things I was doing by hand were a pain to maintain and started to take too much time, so a change was really needed. Also, in the development area, things were also getting more complex.
Distribution of the components by mail is a lot less reliable than I thought as some companies have really strict firewall/attachment policies. Implementing a decent LicenseProvider based on digital signature was more complex than I thought, has some hurdles with ASP.NET and works a bit different between web site projects and web application projects. However, having the LicenseProvider implemented has freed me of all component distribution and signing, saving a lot of time and headaches.
Maintaining and developing new components was also getting more complicated, because components were starting to share code, and having to maintain two versions of the same code is problematic and error prone. However, splitting the components in several projects and then using ILMerge seems to work great. Improving my subversion merge/branch skills was also necessary as I end with a lot of releases with a very similar codebase but with little differences between them. Better tool integration for ordinary tasks with Visual Studio has also helped a lot. I’ll comment about a few of these tools in a future.
There seem to be a lot of good tools emerging with a goal to improve the quality and reliability of our code. Microsoft research is also trying some things with Spec# and Pex. Maybe I’ll blog about those when Pex becomes available to the masses.
So what about the future? Well, I have a lot of ideas for new components and new features for the existing ones. As always, the biggest problem is time. There’s no time to do all the stuff I have in mind or the cool things I want to try (has anybody tried SharpMap?) I have a component in the works that has been nearly finished for a couple of months. I hope to finish it at the end of the year or in January 2008. After that probably I’ll concentrate on further improving the existing components and checking if something new can be added if the version of ASP.NET shipped Visual Studio 2008 has a couple of significant changes. After that probably I won’t release more components because I can’t be sure to be able to provide a good service if I release more components.
As I said before, the sales are growing slowly, and the components are being used in most of the “important” countries:
This shows me that I’m doing things well and encourages me to work harder and keep improving my skills.