Making Jenkins Better

Jenkins is a widely used and extremely capable continuous integration server. While it's been available since 2007, under it's original name of Hudson, in popularity seems to have really taken off in the past year or so. One of the primary reasons for its success is it's extremely flexible configuration. Jenkins has a quite a small core, with most of its functionality provided through plugins. Jenkins plugins provide access to different source code control systems, a wide variety of build tools, test result tracking and charting, static analysis tools, and so on. Nearly every aspect of Jenkins can be customised via a plugin. At time of writing there are over 400 different Jenkins plugins available.

Four hundred is too few.

Over the past two years, we've from dabbling with CI to Jenkins forming part of our core toolset. Jenkins builds on checkin, yes, but also deploys builds into development environments. It runs performances tests and records the history. It tells us which build contains which bug fixes. It also does our release builds - tagging the repository, building from the tag, writes release notes telling us which work packs have been updated, pushes the build up onto the live server, and emails Ops to say everything is ready to go. The standard plugins provide the foundation, but the our own plugins have put Jenkins at the heart of our development process.

If you want to get the most from Jenkins, you really should write your own plugins. This session will explain why you should, what you can change or add to Jenkins, and how to do it.

Slides and speaker notes from a 90 minute session presented at ACCU Conference 2012

Iteration: It's just one damn thing after another

What is iteration? Is rolling round in a loop from one end of a list to the other the most an iterator can hope for in its brief life? Given modern inventions like foreach, do iterators even have a place in modern programming?

By examining some of the ways iterators and enumerators are used in various languages perhaps we can widen the horizons of an iterator and take them beyond simple for loops to become a significant and useful part of the programming toolbox.

A revised version of the Java iterator talk, intended for a general audience.

Slides and speaker notes from a 60+ minute session presented to ACCU Cambridge

Finding the Utility in a java.util.Iterator

for(Iterator i = c.iterator(); i.hasNext(); )
{
  Thing t = (Thing)t.next();
  ...
}

Is rolling through a for loop the best a java.util.Iterator can hope for in life? A poster-child of poor design, is running from one end of a container to the other all that Iterators are good for?

By examining some of the ways iterators and enumerators are used in other languages, we can widen the horizons of a Java Iterator and take them beyond simple for loops to become a significant and useful part of the Java toolbox.

Slides and speaker notes from a 90 minute session presented at ACCU Conference 2007

XPath2, XSLT2, and XQuery - The Three Legs of XML Searching and Transformation

You can search an XML document with XSLT2 and you can style an XML document with XQuery. No wait ... no, that's right. And the other way round too. In that case, do we need both? Can we bin one of them? Is it just an accident of corporate politicing that they both exist?

This presentation sprints through XSLT2 and the new features it adds to the existing XSLT spec. That necessarily needs an examination of XPath2, the expression language it incorporates. Since XPath2 also forms the basis of XQuery, we obviously can't ignore that, and so a reasonable chunk is spent comparing XSLT2 and XQuery, looking at their similarities, differences and intended usage.

Slides and speaker notes from a 90 minute session presented at ACCU Conference 2006

Paul and Jez's Stream-a-poloza

A fun filled journey into the Standard Library's dark continent, illuminating the mysteries of IOStreams and revealling the streambufs beneath.

C++ IOStreams - what they do, how they work, why you might want to write your own, and how to do it without pain or fuss.

Slides and speaker notes from a 90 minute session presented with Paul Grenyer at ACCU Conference 2005

Unit Testing XSLT Stylesheets

Describes an approach for XSLT testing. Tests are defined in an XML vocabulary. The test definitions are cranked through a set of XSLT stylesheets to generate Java source, more XML and yet more XSLT. The Java sources are JUnit test suites which drive the XSLT test procedure. The whole thing is stitched together with Ant.

Slides and speaker notes from a 45 minute session presented at ACCU Conference 2005


Jez Higgins