I was reading a book that recommended you be a Maven to your industry to gain interest in your software product. It made me think back to when we had an excellent software architect to recommended we port our build scripts to the Maven tool by Apache. We did end up porting our build scripts. However we did not use Maven. And the awesome software architect has moved to another company and has since informed me that there is an even better build tool out there.
First let's talk a little history. I have been on my current project for a very long time. Before I got here, we had a UNIX shell programmer who worked for configuration management. He build an elaborate set of korn shell scripts which produced our official builds. These scripts were complex and performed a lot of good functionality. The problem was that after the shell programmer left, it was difficult to maintain these scripts.
So we had a couple Java developers try to rewrite the build scripts. They were excited to use Apache Ant because it provided a lot of functionality that they needed. However these developers did not fully understand all of the tasks that the old build scripts did. So our new scripts are lacking in some areas. For example, if the build fails at compile time, the new build just repackages an old build as the new one. That is not the desired effect. We want builds which fail to compile to halt, informing us that we have a problem. Who knows what other bugs and missing features there are. At least the new builds are good enough to get by for now.
All of this brings up the question of what is the best language in which to write a build script for a somewhat complex product. Back when I was doing some prototypes for the rewrite, I accomplished pretty much all the functionality with Windows command files (*.bat). But the inner programmer in me wanted to write it all in plain C. The real goal however is to produce a set of build scripts which are easy to debug and maintain. The Ant scripts we have now are not too difficult. I think the jury is still out on this question.
A Little Bit of Crypto - I have been trying to figure out to "collision resistant" some of these standard hash functions are. It is a tough concept to get my head around. I figure...