About me
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.
Read on to learn more about my professional background and what others have had to say about my work.
Engineering Manager, Envato (2021 - present)
I joined Envato in July 2021 in the role of an
Engineering Manager.
From July 2024 I managed a Find Experience team of six engineers
within the Search and Content Management domain. Watch this space for
further details in due course.
In mid-2022, following a company-wide restructure, I briefly moved to a
Tech Services team before moving to the Market team.
During my time in the Market team, I:
- managed six direct reports
- co-managed the Market team
- contributed to improvements in the team’s processes
- collaborated with the team’s Product Manager to plan, prioritise
and track maintenance, tactical and strategic initiatives
- collaborated with another Engineering Manager to introduce more
Engineers to the on-call roster
- provided guidance to Engineers who have been leading initiatives
- facilitated Envato’s sponsorship of, and involvement in RubyConf AU 2023
- facilitated Envato’s Tech Leadership Book Club
- collaborated with others to improve Envato’s Incident Management
capabilities
From July 2021 until June 2023 I co-managed the Infrastructure team.
My work included:
- managing seven direct reports
- sharing the management of the Infrastructure team with another
Engineering Manager
- leading improvements to the team’s workflow processes
- giving a presentation to leaders within the Engineering cohort about
the team’s use of the AWS Cloud Development Kit
- developing working relationships with vendors
- facilitating the revision of on-call and technical support rosters
- hiring new Site Reliability Engineers and introducing them to Envato
and the Infrastructure team
- facilitating team retrospectives
- familiarising myself with the infrastructure that the team’s SREs
supported
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 - 2023)
In 2006 I began a long involvement in the Australian Ruby community.
After many contributions over the years my participation is now more
occasional.
Most recently, I facilitated Envato’s sponsorship of RubyConf Australia 2023.
At RubyConf Australia 2019, I was delighted to present
a talk entitled What were they
thinking?
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 was held yearly until the pandemic,
attracting speakers from all over the globe. Thankfully Ruby
Australia was able to revive RubyConf AU in 2023.
I also:
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.
Qualifications
I hold a Bachelor of Science from Sydney University and am a member of
the Australian Computer Society and the Association for Computing
Machinery.