Russel Winder's Website

Gant 1.2.0 is Released

Groovy released version 1.5.6, so making a Gant release was something to think about. People had been using 1.2.0-SNAPSHOT for a while and there appear to be no problems. All in all it seemed right to shift from 1.1.x to 1.2.x -- there are some breaking changes as well as lots of new goodies and some important bug fixes.

As ever distributions are available at For those who use Maven 2, the repository URL is, the groupId is org.codehaus.gant, the artifactId is gant , and the version is 1.2.0.

The Gant webpage has the documentation.

ACCU 2008

Another great ACCU conference, but a very busy one for me, I gave two solo sessions and joint session with Jim Hague. Also I was on the closing panel with Tom Gilb, Jim Coplien, Peter Somerlad and Hubert Matthews, run by Giovanni Asproni. For proof that I was there, see Anna-Jayne Metcalfe's photo of the event -- OK she caught me at a bad moment, so whilst it is a horrible shot of me at least it proves I was there!

  • _Them Threads, Them Threads, Them Useless Threads_ was taking a look at what programming support we have in the brave, new world of multicore (and hence parallel) hardware. The answer is of course threads, and they are not a good tool. Systems such as OpenMP and MPI purport to be the programmer's friend but... Also there are functional languages such as Haskell and Erlang that take a very different view of parallelism.
  • _Functional Programming Matters_ was part of the functional programming track of the conference and was to augment the tutorial sessions by Joe Armstrong and Simon Peyton Jones to show that Erlang and Haskell don't have to actually be used to have influence and importance. The ideas of no side effects and referential transparency can be used in C, C++, Java, Python, Perl, Groovy, Ruby, etc. Also of course, things like list comprehensions have been taken up by Python, Perl, Groovy, Ruby, etc. Programming is generally becoming a more declarative thing even in imperative languages. The C++ standard library is a case in point: why program a loop when you can apply a function. The killer point is that you have no hope of programming using C++ templates unless you know how to program using a functional language.
  • _To Distribute Or Not To Distribute: How to know your DVCS from your CVCS_ This was originally intended to be a three person session, but Tim Penhey was not able to get to ACCU this year even though he originally planned to, so Jim Hague and myself did it as a two hander. This was really an introduction to distributed version control (Bazaar, Mercurial, and Git) for people only versed in centralized version control (Subversion).

The PDF files are all held on the Concertant LLP website.

UKUUG Spring 2008

John Pinner asked if I would revamp and present at UKUUG Spring 2008 one of the talks I did at PyCon UK 2007. The talk is entitled "The Great Languages Debate" but it isn't really a debate. It is a small tour through a few comparative programming language examples. The main aim is to show that dynamic programming languages are the languages of applications development. Also whilst functional programming languages may not be mainstream, the techniques and idioms are very important -- so much so that many of them are introduced into mainstream languages.

A PDF of the slides for the talk can be found on the Concertant LLP website.

The UKUUG Spring 2008 conference was very enjoyable, and everyone there entered into the right spirit of competition between Python and Perl. I was not lynched for stating categorically that Perl is an "execute only" programming language.

Gant 1.1.1 is Released

Not only are we now up to Groovy 1.5.4, there were a number of fixes and additions in the Gant code base, so it seemed appropriate to make a new release -- which actually happened last night. Highlights of the release are:

  • Ivy and Maven Ant Task jars actually included in the distributions.
  • Allow control of directory paths in Maven target set.
  • Alter the Execute tool to avoid any blocking.
  • Added AntFile tool for reading Ant files into Gant.
  • Added -L | --lib options a la Ant.
  • ~/.gant/lib added as path to search for jars along with ~/.ant/lib.
  • depends can now take a list of mixed strings and Closures.

As ever distributions are available at For those who use Maven 2, the repository URL is, the groupId is org.codehaus.gant, the artifactId is gant , and the version is 1.1.1.

The Gant webpage has the documentation.

Gant 1.1.0 is Released

Groovy 1.5.2 was released, and so, as announced, Gant 1.1.0 was released -- it all happened last Tuesday, I have only just got round to writing about it. As noted in the pre-announcement, distributions are available at For those who use Maven 2, the repository URL is, the groupId is org.codehaus.gant, the artifactId is gant , and the version is 1.1.0.

The Gant webpage, has the documentation.

Gant: the freedom of using all the Ant tasks with a dynamic programming language (Groovy) and no XML in sight :-)

Gant 1.1.0 About to be Released

It seems I failed to write a note here when Gant 1.0.0 and later 1.0.2 were released. How very remiss of me. What is worse, I failed to write a note when Gant was turned into a project in its own right at Codehaus. Clearly I need to get better at doing these notes.

Groovy 1.5.2 is soon to be released. To stay in synchrony with the Groovy releases, Gant 1.1.0 is being prepared for release. Snapshots compiled against Groovy 1.5.2-SNAPSHOT are available as a release candidate. Distributions are available at For those who use Maven 2, the URL is, the groupId is org.codehaus.gant, the artifactId is gant , and the version is 1.1.0-SNAPSHOT.

The Gant webpage, has the documentation.

If you give this version a whirl, that would be great. Do let me know if there are problems, or better still (of course) let me know if it works without problems out-of-the-box :-)

Highlights of the new release:

  • Updated Ivy usage to Ivy 2.0.0-beta1.
  • Added a Gant Ant Task.
  • Added Cobertura coverage reporting.
  • Altered the constructors of the Gant class to make programmatic calling of Gant a lot easier.
  • Improved the Maven target set.
  • Improved the LaTeX tool.

There are also a few fixes. The addition of the Gant Ant Task has meant that it is not straightforward to compile Gant with Groovy 1.0. After consulting with Groovy users on the mailing list it was agreed that this was not a problem. So for the moment, Groovy 1.0 is not supported, only Groovy 1.5.x. This can be fixed though if it needs to be.

Python for Rookies ![PfR Book Cover](/Images/pfr_cover_68x91.jpg)

I have been more and more coming to believe that Java is no longer the right programming language for teaching people programming. Java has to be learnt, it is after all one the most important programming languages of the moment. However, I now believe that dynamic programming languages, in particular Python and Groovy, are better languages for the first introduction to programming. Following this you can introduce type, compilation, design patterns and all the good software engineering material as second courses on programming using languages like Java and C++. Of course, everyone interested in programming should also learn languages like Haskell, Erlang, Prolog, but that issue is for another time.

I started thinking about Python as a first programming language for university courses back in 2003. The idea bubbled as a publishing project but didn't really take off until 2005. I was introduced to Sarah Mount and James Shuttleworth (then both at Coventry University, Sarah has now moved to University of Wolverhampton) who were using Python to teach their introductory courses to physicists, economists, art and design students, as well as computer science students. We immediately waded into taking all our material and forming it into a book. The result is _Python for Rookies_ published by Thomson Learning (now called Cengage Learning). This should be in the bookshops next week.

Buy this book, you know you want to :-)

PS It is true that Graham Roberts and I authored the book _Developing Java Software_ as a first programming course using Java (and we'd like you to buy that as well :-). We are however in the process of writing a book using Groovy instead. More on this at a later date.

PPS The _Python for Rookies_ website has only just been started so it doesn't have much on it yet. Over the next few weeks more and more material will be added.

Talk at Grails eXchange

![groovy, grails, java ee, grails exchange](http://www.grails- Last week was the Grails eXchange 2007 conference, which was great fun. It was really nice to meet face-to-face many of the people that are active in the Groovy and Grails community that I had only ever "met" by email on the mail lists. I gave a talk on Gant. A PDF of the slide can be found here from the Concertant LLP presentations page.![](/Images/ groovy_logo.png)[

Copyright © 2017 Russel Winder -