Having commenced working in the industry in 1983, I have accumulated technical experience on a diverse range of platforms.
My roles have covered the full life-cycle of software development. I have successfully led and contributed to teams that have delivered applications to corporate, small to medium business, NGOs and government organisations in Australia and the United Kingdom.
Engineering Manager (2021 - present)
I joined Envato in July 2021.
Watch this space for details as my role takes shape.
Co-Founder, RemoteRetro (2016 - present)
Contributed to the development of RemoteRetro, a tool that helps teams run retrospectives remotely. Whilst this is a side-project, I have been honoured to collaborate on the evolution of this tool since its inception at RubyConf AU on the Gold Coast in early 2016.
Contributor, Australian Ruby Community (2006 - present)
Since late 2006 I have been a keen participant in the Australian Ruby community.
Most recently, I was delighted to present a talk entitled What were they thinking? at RubyConf Australia 2019.
One of the highlights of my career was leading the organisation of RubyConf Australia 2013, the inaugural Ruby conference in Australia, which was held in Melbourne in February 2013. This conference has since been held yearly, attracting speakers from all over the globe.
Head of Software Engineering, SuperEd Pty Ltd (2020 - 2021)
In October 2020 Clover was acquired by SuperEd Pty Ltd.
I finished up at SuperEd in early July 2021. My work included:
- facilitating the transfer of knowledge about Elixir and Phoenix in order to improve the collective capability of supporting and enhancing the Book of Records application
- contributing to the development of user stories consistent with the vision for the expanding set of SuperEd products
- developing several API endpoints within the Book of Records application
- preparing for the creation of an AWS stack to support the Book of Records application, which currently runs on Heroku
- contributing to the analysis of changes required to the core of SuperEd’s platform to enable the integration of the Book of Records application
- developing a proof of concept providing a Phoenix GraphQL API via Absinthe
- facilitating existing Clover customers to continue using the product by agreeing to a new SuperEd Statement of Advice
- investigating the feasibility of potential technical approaches to integrating the Book of Records Elixir application with SuperEd’s platform
- sharing technical knowledge about the Clover platform with SuperEd staff
- maintaining the Book of Records Elixir application, formerly known as Trading
Head of Engineering, Clover.com.au (2019 - 2020)
In September 2019 I took over the role of Head of Engineering.
My work included:
- supporting preparations for the transition from Clover’s to SuperEd’s licence
- upgrading the Trading Elixir application in preparation for Clover’s acquisition by SuperEd
- performance tuning
- scoping high-level feature requests
- facilitating and contributing to technical upgrades
- facilitating collaborative high-level planning with the business
- managing the launch of a new advisor’s use of Clover’s SAAS platform
- providing technical leadership
- managing members of the development team
- maintaining and enhancing the core of Clover’s platform using Ruby on Rails, PostgreSQL, GraphQL, React and Redux
- providing DevOps support via tools such as Buildkite, Heroku, AWS and Terraform
- contributing to and facilitating completion of the multi-tenancy upgrade to the Clover platform
- managing the relationship with a third party development partner
- supporting and enhancing the Trading application using Elixir, Ecto and Phoenix
- creating architecture model diagrams for the platform using Structurizr
- facilitating technical knowledge sharing
- reviewing developers’ work
- recruiting developers
Senior Software Engineer, Clover.com.au (2019)
I joined Clover.com.au in June 2019.
During my first few months the bulk of my work was focussed on re-engineering the main Ruby on Rails application to support many advisors. This included:
- designing and implementing database table and ActiveRecord class relationships to support multi-tenancy
- converting keys for all tables from integers to UUIDs
- merging tables from two PostgreSQL databases into one
- planning the steps needed to enable the platform to support many tenants
Senior Software Developer, Birdsnest (2018 - 2019)
In January 2018 I joined Birdsnest, an online retailer based in Cooma, NSW. Whilst I visited “the nest” most months until my departure in June 2019, I was based remotely at my home on the NSW Central Coast.
My work included:
- documenting policies for development of custom applications
- analysing support for business processes by a specific E-Commerce platform compared with the current custom software
- modelling generic elements of the emerging architecture using Structurizr
- documenting non-functional requirements for the future architecture
- researching products offered by various E-Commerce vendors
- co-presenting a paper to the board with recommendations for future technology choices
- presenting papers to external advisors
- guiding a new team member with using Cucumber & Capybara to automate end-to-end testing
- liaising with external partners
- mentoring colleagues in skills such as TDD with Ruby
- introducing a training and mentoring framework
- fixing various bugs in server-side Ruby code
- changing elements of Rails applications to support business needs
- guiding implementation of imgix and section.io to improve site speed
- instrumenting Ruby code as part of identifying contributing factors to sub-optimal site speed
- improving the capacity of staging environments to facilitate more effective QA
- assisting new team members set up their local development environments
- introducing and facilitating fortnightly team retrospectives
- reviewing many GitHub Pull Requests and mentoring colleagues to improve their confidence in reviewing PRs
- planning, guiding and contributing to an upgrade of the customer-facing web application to newer versions of Ruby and Rails
- ensuring that automated tests for the main web application are run on a continuous integration server
- initiating and overseeing work to secure the main administrative web application with unique logins using Auth0
- initiating and overseeing work to update the main administrative web application, based on Rails 2.3, to Rails LTS to ensure implementation of security patches
- initiating development team review processes
Developer, The Conversation (2015 - 2017)
In June 2015 I joined the technology team at The Conversation on a contract basis to contribute to the development of the web applications that support their sites in Australia, Africa, Canada, France, Indonesia, the United Kingdom and the United States as well as a Global Perspectives edition.
My work included:
- facilitating process improvements to the development team’s workflow
- facilitating effective communication among distributed members of the development team
- mentoring colleagues and reviewing code
- contributing to the customization of The Conversation’s Apple News channel
- enabling fact check articles to utilize Google’s ClaimReview schema
- contributing to various technical upgrades
- contributing to the launch of The Conversation in Indonesia
- facilitating more flexible pitches to editors from prospective authors
- reviving and curating the Building the Conversation development blog
- contributing to the development of a custom Analytics Rails application to provide enhanced metrics information to institutional users
- maintenance and enhancement of the Data Warehouse, a Sinatra application which is an integral part of the suite of applications which form The Conversation’s web platform
- improvement of the reliability of the test suite of the main application
- development of a set of rake tasks to help manage translations in the codebase, subsequently extracted to the i18n-hygiene gem
- contributing to the internationalisation and localisation of the main Rails application to support the launch of The Conversation France
- collaborating with the Community Manager to facilitate improved management of comments
- fixing various problems reported by customers and editorial staff
Web Developer, Blake eLearning (2014 - 2015)
From March 2014 until June 2015 I worked for Blake eLearning as a permanent member of their staff, allowing me to focus fully on contributing to the development team responsible for Reading Eggs, Reading Eggspress, Mathseeds and WordFlyers.
Building upon the earlier contributions I made whilst consulting to Blake, I:
- reconfigured CI projects to take advantage of new Buildkite agent metadata and parallelism features
- automated updating of repositories dependent on a common internal RubyGem
- facilitated remote pairing via tmux and ngrok
- contributed to the migration of a MongoDB database to PostgreSQL
- improved the stability of several continuous integration builds
- established a process for dealing with non-deterministic tests
- supported the team’s use of continuous integration tools
- developed solutions to complex problems that were adversely affecting customers
- refactored code to improve readability
- overhauled test suites to run within acceptable time frames
- improved audit trail to facilitate easier customer support
- assisted with resolution of numerous customer service tickets
- developed features using Ember.js and Blake’s HTML5 framework to replace legacy features that relied on Flash
- facilitated the consolidation of tools used to track project activities
Director, Cockatoo Software Pty Ltd (2007 - 2018)
After founding Cockatoo Software in November 2007 I undertook assignments including:
- project management and development of RMACheck, a Ruby on Rails application that provides an IT industry wide service providing IT suppliers, distributors, resellers and customers with the capability to determine the hardware replacement services an IT vendor offers to a specific street address in any country
- contributing to Blake eLearning’s ongoing development of ABC Reading Eggs, Reading Eggspress and Mathseeds using tools such as Ruby on Rails, CoffeeScript and Ember.js
- implementation of content management systems for Wine Country Villas and Golf Central Coast via customisation of RefineryCMS
- project management, maintenance and enhancement of the Myhealthworks web portal, a Rails web application
- development and maintenance of the Leading OHS web application using Rails 3 and jQuery
- maintenance and enhancement of an internal Ruby on Rails and Flex application for Bosch Rexroth Pty Ltd
- management of a project to deliver a timesheet web application using Ruby on Rails
- advice about selection of technology to implement a website for Wyong Golf Club
- provision of Ruby on Rails mentoring
- development of a specialised content management web application with integrated social networking features for Plus2 using Ruby on Rails
Senior Consultant, Cirrus Technologies Pty Ltd (2000 - 2007)
During more than seven years with Cirrus Technologies I contributed to teams developing software using Java’s standard (Java SE) and enterprise (Java EE) editions for many clients. I also provided services as an instructor.
For example, I:
- played a leading role in developing a Health Insurance Comparison web application;
- contributed to the development, support and enhancement of a Station Turnout System used by fire brigade personnel;
- analysed, designed, developed and enhanced parts of a Sales Contact web application for a major insurance company;
- managed several web application projects for a NSW government department as well as well as developing much of the software and mentoring development staff;
- developed components of several Java EE sub-systems that contributed to replacing COBOL applications for a medium-sized insurance company;
- delivered many public Java SE, Java EE and WebSphere courses on behalf of a major global technology corporation.
In my spare time from 2000 onwards I explored many Java technologies, especially open source frameworks. In 2004 I began to take an increasing interest in the Ruby programming language and the Ruby on Rails web application framework.
Senior Consultant, Advanced Software Engineering Pty Ltd (1997 - 1999)
Amongst a variety of assignments during my time with ASE, major clients included Qantas and Woolworths. I assisted a Qantas software infrastructure team as they migrated from CSP to VisualAge Generator. In particular, I taught members of the team the fundamentals of the Smalltalk programming language. For Woolworths, I managed a team of ASE consultants as we developed a Bank Reconciliation system using COBOL/CICS/DB2 and demonstrated the value of Micro Focus software tools. Within ASE I managed the improvement of business procedures as part of the implementation of a Quality Management System. I also provided pre-sales support for Object-Oriented development tools such as VisualAge for Java, Toplink for Java and Simply Objects.
Earlier Positions (1983 - 1997)
In my early years as a professional programmer I used technologies such as PL/I, COBOL, IMS, CICS and DB2 on IBM mainframes. Having started in the IT industry as a trainee programmer for TNT, I moved on to work at IBM Australia where I gained project management experience. During 1988 and 1989, an overseas working holiday included the chance for me to work as a contractor at Lombard North Central in Redhill, UK. Continuing contracting on my return to Sydney, I provided services to major corporations including IBM, Woolworths and Westpac.
From about 1992 onwards I began exploring Object-Orientation and Internet technologies in my spare time. From an OO programming perspective, I began with Smalltalk and later moved on to Java.
I hold a Bachelor of Science from Sydney University and am a member of the Australian Computer Society and the Association for Computing Machinery.