Sunday, August 23, 2009

More Joel on Software

Think of a great sequel movie. Terminator 2 comes to mind. The original wasn't great, was it? Now think of a great movie with a really disappointing sequel. The Matrix is the one that most people remember in that category - the original was so good that the sequel could only be a let down.

Joel on Software is the best single book on software development I've read. Every developer I've hired has read it, and every one of them has agreed that it's a great book. It is a book of useful tips and simple strategies for building software that works. I could go on for pages describing how brilliant it is; honestly, just go and buy it.

Unfortunately, there's a sequel - More Joel on Software. As soon as I saw it I thought "wow - another 300 pages of invaluable advice that I'll be able to use". Probably in the same way you thought "wow - another matrix movie that will blow me away". Anyway, I've just finished reading it - there are several chapters which were useful to read, several which were padding the book out to 300 pages, and lots which I read and don't remember.

So, at the end of the book I'm filled with disappointment. The problem isn't that the second book is rubbish; it's not. It's that the first one was so brilliant, and the second one was a bit ho-hum. I was prepared to be blown away all over again, but instead I just learnt bits and pieces, just like many other books.

By the way, I never did go to see "The Matrix Reloaded", nor did I bother with the third one, mainly because friends told me it was nowhere near as good as the first. So, as your friend I highly recommend you buy the first Joel on Software book. It's brilliant.

Saturday, August 15, 2009

Apache Maven and Ivy

I went to a Canberra Java Users Group meeting on Wednesday night, where Glen Smith was giving a presentation on Apache Maven. I'd previously looked at Maven, and found it complex, confusing, poorly documented, and not really offering anything I wanted that Apache Ant didn't already do.

Anyway, apparently the documentation part of my complaint has been solved - Glen recommended the O'Reilly book on Maven - it's a free PDF download, and written by some core Maven people, due to the common complaint about the lack of decent documentation.

It did some cool things, but most of them are things which my Ant scripts do for us. The only thing it really did that I thought would be useful was automatic downloading of updated third party jars (think "yum update" every time you do an "ant build"). There's a plugin for Ant to do this (Apache Ivy - http://ant.apache.org/ivy/). The concept is pretty cool - stops me from needing to go through our third party libs every now and then and updating them by hand, and drops the size of our subversion repository as well.

So I looked into this further. Ivy uses the Maven master repository as its default upstream repository for solving third party library dependencies. So I looked at the versions of some of the libraries we use:

  1. SWT - 3.0.1, last updated January 2007. We're using 3.5.0. Not much good.

  2. Apache FOP - 0.93, last updated May 2007. We're using 0.95. Not much good.

  3. Apache Struts - 1.2.9, last updated Jaunary 2007. Latest 1.x is 1.3.10, we're using 2.1.6. There is nothing in that repository for Struts 2.x at all! Not much good.


And so it goes on. It looks like a great framework for updating to packages that are at least two years out of date. (To be 100% honest, there are packages that are up to date; but looking down the list, the majority look to be years out of date).

Oh, the one thing Glen did say Maven was really good with was sharing code amongst multiple teams. You have your own Maven repository, and publish versions there, and other projects pull them down automatically when they build. That seems cool, but irrelevant if you aren't a large organisation with multiple development teams.

So it was an interesting presentation, and convinced me that I was right to ignore it for our purposes.