Java Software Engineer (Contractor)
July 2014 - January 2015
Commonwealth Scientific and Industrial Research Organisation (CSIRO)
In my contract with CSIRO I was a Java Software Engineer on the CSIRO ASKAP Science Data Archive (CASDA)
project. This is the data management component of the Australian Square Kilometre Array Pathfinder
The SKA radio telescope is an international project to build the world's largest radio telescope;
consisting of thousands of antennas linked together by high bandwidth optical fibre.
The SKA will be 50 times as sensitive as the best existing radio telescopes and will have a survey speed
10,000 times faster than its nearest current-day rival—enabling it to carry out research more quickly
than ever before. It aims to address fundamental questions about the evolution of the Universe including
the formation of black holes, the origins of the first stars and the generation of magnetic fields in
I was part of a multi-discipline team consisting of 6 developers, a project manager, business analysts,
testing teams (functional, performance and security) and infrastructure teams.
The software engineering team is building virtual observatory tools to the International Virtual
Observatory Alliance standards. IVOA is a worldwide scientific organisation formed in June 2002. Its
mission is to facilitate international coordination and collaboration necessary for enabling global and
integrated access to data gathered by astronomical observatories. An information system allowing such an
access is called a Virtual Observatory.
The stack we developed with with includes Spring 4, Java, Tomcat, Groovy, Gradle for the builds,
Postgresql, the H2 in-memory database and Elastic Search (we started with SOLR). We use Jenkins for
Continuous Integration, Jira for Configuration and Issue management, Git and Atlassian Stash and
Atlassian Source Tree for version control, and Atlassian Confluence for documentation.
The team works using Agile software engineering methodologies and all developers have taken turns as
May - June 2014
Geoscience Australia (GA)
project. The Boreholes project is a greenfield project for the consolidation of multiple disparate data
sources (Oracle DB, Access DB, Spreadsheet) into the one Oracle database. As well as maintaining the one
data source this project helps the business units in GA standardise their boreholes practices and share data
(since boreholes often change from being for one purpose to being for another). Boreholes also includes a UI
for operators to create and read new boreholes.
A borehole is a narrow shaft bored in the ground for purposes involving petroleum, minerals, gas, aquifer,
geothermal, exploration or investigation. Geoscience Australia maintains a large database of meta
information and physical samples.
In this role I was responsible for developing the client-UI (using AngualrJS, JQuery, HTML5, CSS3, Bootstrap, Sass,
WCAG, Yeoman scaffolding, Grunt, nodejs, Karma and Jasmine), the API development for RESTful web services to
communicate with the middle tier, assisting with the development of RESTful web services using Spring,
assisting with the architecture (including working within the enterprise architecture), application design and the initial
stages of ETL for consolidating the data. I worked with a team including Enterprise Architects, a Project
Manager, a Business Analyst, a DBA and a primary Java EE developer.
Java Software Engineer (Contractor)
May - December 2013
Commonwealth Scientific and Industrial Research Organisation (CSIRO)
In my role at the Commonwealth Scientific and Industrial Research Organisation, I was responsible for:
- Rewriting the ESA “Emergency Situational Awareness” J2EE web application in Java EE 7 adding unit and
integration testing (where none existed previously) (Junit, Mockito and Jboss Arquillian)
- Implementing RESTful web services APIs to expose the CSIRO's Emergency Situation Awareness application
- The development of JSF web applications as a front-end;
- Oracle 11 DB and MySQL backends
- JMS 1.1 ApacheMQ maintenance and JMS 2 upgrade investigations
- Course development and the training of CSIRO staff in Java EE 6+ and the architecture of the new
- Course development and the training of CSIRO staff in how to follow test driven development practices,
and how to write unit and integration tests;
- Workshop developed and conducted with the CSIRO staff to teach and enable them to add further unit and
- Configuring a modern development environment with issue tracker, wiki and git clients. The provision of
on-the-job training with CSIRO staff in the use of this environment;
- Technologies: Jquery, Java EE 7, EJB 3.2, CDI 1.1, JPA 2.1 & EclipseLink 2.5, JSF 2.2, JSON-P, JAX-RS
1.1, Glassfish 4, git, Eclipse IDE (Juno), Maven 3, Oracle 11g, Arquillian;
- Initial trials with Oracle Web Logic as a replacement Application Server for Oracle Glassfish, since
Glassfish is losing its commercial support as of November 2013;
- Ported Spring Framework REST Authentication web application that included extensive unit and integration
tests to Java EE
The existing J2EE application was an Ant driven collection of HTTPServlets with JDBC SQL connections to an
Oracle 11g backend. As part of my redevelopment of this I created a completely new architecture with
multiple Maven 3 modules. The previously untested business logic was incorporated into the system along with
unit and integration tests to verify the expected behaviour. I employed clean code techniques such as
polymorphism instead of switches and breaking long methods into many smaller manageable (and testable)
The Emergency Situational Awareness (ESA) application is used by the Australian Federal and State
governments, and agencies to detect, assess, summarise and report Twitter messages of interest for crisis
coordination. Please see http://www.csiro.au/Outcomes/ICT-and-Services/emergency-situation-awareness.aspx
for more details.
June 2012 – May 2013
My wife and I swapped roles allowing me to spend time with my children and her to restart her career.
August 2010 – June 2012
Breast Screening Product including Public Web Module
In this role I worked in a team of five developers with product managers, project managers, testers and
documenters where we coordinated development activities using an agile scrum process. We developed the
Breast Screening product in use by New Zealand and New South Wales with the ACT and Tasmania to follow
The Breast Screening product is a Web Application for managing the breast screening workflow from booking
screening appointments, linking with the mammograms to booking and holding assessments of the mammograms. It
also has a client component called the Public Web Module that allows user's to book and manage appointments
from their own homes. It used RESTful web services to communicate with the server.
Cascading Style Sheets.
- JSP, Orion template language (Orion's solution to JSP's and servlets), SpringMVC
- Stripes presentation framework
- Java Servlets for JSPs, Stripes and the Orion templating language pages
- Hibernate for persistence
- RESTful web services
- Java classes and OSGi framework to bundle the application into modules, Spring for dependency
- MSSQL and Derby databases
- Tomcat web servlet container
- Junit (for TDD and Integration testing)
- Sahi and J-Behave (for Behaviour Driven Development and functional testing).
- Centos Server running Bash and Groovy scripts, Windows Workstation & Virtual Box virtual environments.
Orion has quarterly events called “Scrath-O-Rama” which is like Google's 20% time. Its to encourage staff to
come up with projects outside their usual work. I developed a version of the Public Web Module (written in
J2EE and Stripes) in EJB3 (Java EE 6) with JSF pages. The other project I developed was customised
Confluence pages based on the user model the user sets up on their home page. This required working with
Confluence at the back-end with my own macros.
Application Developer, Technical Publications Developer, Technical Publications
Development Team Leader, Technical Publications Specialist and Software Engineering Capability Council
representative for the Product Support Group
January 1999 – August 2010
Boeing Defence Australia
- S1000D - For the AEWC (Advanced Early Warning & Control aircraft)
project I helped write the S1000D Rough Order of Magnitude (ROM) for converting Boeing's AEWC ATA
publications to S1000D. This formed of the business case for moving to S1000D. S1000D is an
international specification for the procurement and production of technical publications.
I wrote S1000D business Rules, performed server installation and configuration, and wrote
translations from ATA SGML & XML to S1000D XML.
I scoped alternate solutions for interactive wiring diagrams in S1000D publications and then
implemented and configured the chosen one.
- LSAR to S1000D conversion - I lead the project to generate S1000D
Technical Publications from a Logistics Support Analysis Report (LSAR) database. The purpose of this was
to enable single-source publishing from the LSAR database rather than have a separate XML format
containing the same information.
- AEWC ATA publishing system - I was the architect, technical lead,
senior developer and team lead (4 developers) for the AEWC ATA publishing system. It published SGML
(instances of 8 largely distinct DTDs) and graphics from a Contenta CMS (Content Management System) to
PDF using XPP as the publishing engine. The output was to 16 mostly distinct formats (front matter, body
matter and various other speciality content). The code is made up of 100,000 lines of Bash shell, Perl,
Java SE, XSLT and Omnimark and ran on Unix (Solaris) servers. The system enabled the project to publish
over 120,000 pages.
ATA is the Air Transport Association and is a standard for commercial, private and defence aircraft
I started the project in 2002 as the sole developer. I helped recruit a team and lead them to
complete the system on schedule in October 2009.
- Team Lead - As team lead I was responsible for team employment, the
team's task assignments, performance management plans and career guidance. The team worked across 6
projects for 5 different business divisions (F111, AP3C, F/A-18, AEWC, Business Development).
I also setup the RCS, CVS and Subversion Version Control Systems, JIRA issue tracker and wrote
process manuals and work instructions for our development environment. I adopted the Boeing specified
software development methodologies including Waterfall, RUP and Iterative spiral development. I helped
investigate using Agile (Scrum) and Lean 10x as part of my work with the Software Engineering Capability
Council and I introduced these into my team's work flow. For this I trained the team in Test Driven
- F/A-18 Tools - I converted and configured the St Louis XPP Publishing
System native documents to work in our Australian environment to enable Australia to author, maintain
and publish the Australian F/A-18 (legacy and hornet) manuals.
- 5629a publishing system – My first major task in 1999 was to write the
5629a publishing system to publish SGML and graphics to generate F111 and AP3C Orion platform manuals in
PDF. The 5629a system runs on Solaris and is composed of C-Shell, Perl and Omnimark scripts. I completed
this system on time to meet the schedule. I continued to maintain the system until it was decommissioned
in 2009 (when the F111's stopped flying and the AP3C customer moved the publications to Framemaker to
support new requirements).
- Loose leaf publishing - I set up a loose leaf publishing environment
in the 5629a system to publish amendments allowing only changed pages to be printed.
- Application Support - I worked as part of Management Information
Systems, Boeing Defence Australia's Information Technology (IT) department and as part of that group we
were required to perform application support for the applications that were part of our capability (SDL
Contenta, SDL Contenta S1000D, SDL Xml Professional Publisher (XPP), PTC Arbortext Editor, Stilo
Omnimark, Perl, Java, Solaris) and others that were of a general capability such as Mercury Quality
Centre, Oracle E-Business ERP Suite and in-house Java tools.
We undertook ITIL v2 training and I'm now ITIL v2 certified. We were required to use Service
Support discipline's set of functions to manage our support activities - incident, problem, change,
release and configuration management.
As part of the Java tools support I participated in a Web Services using IBM Rational Application
Developer course, and with that built SOAP Web Services for the tools.
- Balancing Agility and Discipline (based on Barry Boehm's book of the
same name) - I used the work of Barry Boehm to investigate and analyse the projects in Boeing Defence
Australia and demonstrate the weaknesses in the wholly disciplined approach typically used in Defence
software engineering project. It was used as support for the case of moving Boeing to Agile processes.
Electronic Publishing Developer
March 1996 – January 1999
Butterworths Legal Publisher (Now part of Reed Elsevier / Lexis Nexis)
I was part of a team that created paper and electronic legal documents. I worked on court reports (Casebase),
Butterworths reports (Caserep) and the Butterworths Online web site.
Database and Applications Developer
June 1993 – June 1995
New South Wales Government,
Department of Business and Regional Development (BARD)
I was part of a team that created database applications written in MS Visual Basic and MS Access DB.
Macintosh Applications Developer (Contractor)
May – August 1994
Australian Defence Industries
In this position I developed C++ modules and performed database administration in FoxPro.