I liked the article, just one remark:
To get the macrodef task running you have to use @ instead of $ for the substitution of the attributes.
Means you have to use
<jar destfile="lib/@{build.dir}.jar" basedir="@{build.dir}/classfiles"/>
instead of
<jar destfile="lib/${build.dir}.jar" basedir="${build.dir}/classfiles"/>.
I am eagerly waiting for the next article.