Skip to main content

Curriculum Vitae

I am a passionate and tech-savvy software engineer with 18+ years of professional experience across Go, VueJS, PostgreSQL, SQL Server, PHP, C#, .Net, MySQL, HTML, CSS, and JavaScript. Throughout my career I have held roles that have required I build my experience managing Linux and Windows servers, building CI/CD pipelines, and implementing DevOps/Agile development methodologies. My most recent roles have provided me with the opportunity to manage projects and a development team.

Swoop

Backend Developer #

2023-04-11 → present

Working as part of Swoop’s second team of developers, I was initially assigned to development of Sonic, Swoop’s NBN service provisioning system, and tasked with adding new features, writing enhancements, and performing large scale refactors of the codebases of numerous micro-services and packages for external services.

Once rapid development of Sonic was complete and the project entered Business As Usual (BAU) stage, my team and I were assigned to the development of Swoop’s voice billing and provisioning system which will later be merged with Sonic.

Duties include:

  • fixing bugs resulting from incorrect or incomplete business logic
  • extending the nbn and provisioning micro-services with functionality for newly adopted NBN services
  • rewriting and refactoring large sections of the codebase to allow new functionality to extend the existing functionality, without conflict or unnecessary duplication

Highlights:

  • Implemented tooling to streamline and automate releases 2023-09-01
    After formalising a standardised release process, I was able to begin work on Minion a CLI tool written in Go that performs steps from that process and performs the weekly releases with minimal input from users. The end goal is to have Minion perform the entire release with the user just selecting what to release.

TrustGrid

Senior Golang Engineer #

2022-08-08 → 2023-03-28

Taking on ownership of TrustGrid’s core codebases, I was responsible for upgrading and improving the backend systems upon which TrustGrid’s decentralised identity services ran.

As part of team given a project to develop services for use by Australian and international governments, I was tasked with upgrading the framework behind TrustGrid’s distributed ledger from Microsoft Confidential Consortium Framework (CCF) 0.15.6 to 2.0.7 and integrating it with the existing ReactJS frontend, until the project was put on hold and the team transitioned to a new project.

After the first project was mothballed, my team researched a new private blockchain framework, Hyperledger Fabric, and began writing an Go API that allowed external services to interact with the smart contracts written in TypeScript, was started in order to produce a product that could be provided to international military organisations. This project involved re-writing most of the code from the previous project and once again integrating it with the the existing ReactJS frontend. This project was put on hold as work on the first project was resumed.

Duties included:

  • implementing a multi-architecture docker build process so developers can work with Go on x64 and ARM64 machines
  • writing system architecture specifications for a decentralized identity and verifiable credential platform
  • managing and maintaining Kubernetes clusters for production ready systems

Highlights:

  • Deployed my first private blockchain 2022-09-16
    With smart contracts written in typescript, this CCF-based private blockchain allows TrustGrid’s clients to issue verifiable credentials to their customers/users.

Kiss My Creative

Corum #

2018-08-02 → present

Custom Order Request Update Manager, or Corum, is a web application for retail businesses, primarily automotive parts stores, that allows staff to create, track, and report on customer special-request orders. Written in PHP/Yii2, and Kendo UI.

Demo available upon request.

Kiss My Creative

faceMasq #

2020-01-19 → present

Self-hosted network security solution. Scan your network, detect and track the presence of devices, and get alerts when unknown devices connect.

Currently in pre-alpha state.

Kiss My Creative

Tannis #

2023-09-16 → present

A CLI for managing large docker compose stacks, with secret management, image building, and more. Tannis serves as the foundation for Lilith.

Currently in alpha state.

Kiss My Creative

Lilith #

2024-02-26 → present

A web service for managing large docker compose stacks, with secret management, image building, and more. Lilith builds upon Tannis, adding a web GUI.

Currently in alpha state.

Grain Market

Senior Software Engineer #

2016-10-16 → 2018-10-15

Reporting directly to the CEO, I lead the development team in adding new features, iterative improvements, and bug fixes to the online Portal and mobile app platforms Grain Market provides to licensees and clients.

I was also responsible for the ongoing migration of the Portal platform from a monolithic PHP code base to a Go micro-service back-end and a VueJS front-end while redesigning the SQL Server database.

Duties included:

  • planning, designing, developing, and documenting new features within the Portal platform
  • redeveloping an out-of-date Cordova mobile application to allow it to work with newly developed tools within the Portal platform
  • implementing third-party API services with full error reporting for SMS and Email delivery
  • building and maintaining a bespoke multi-user drag-and-drop newsletter editor that allows for delivery of relevant content to end users with “live document” support
  • rewrite the Portal platform from PHP to Go
  • redesign the SQL Server database to allow for easier querying and faster response times

Highlights:

  • Development of Living Doc - a live document editor 2018-06-15
  • Released first mobile app in Cordova 2017-06-21

Grain Market

Senior Software Engineer + DevOps Engineer #

2018-10-16 → 2021-10-15

Focusing on reducing the development workload, I oversee the automated processes and services used to review, test, and deploy Grain Market’s modern services into various environments.

During this time, Grain Market was forced to respond to the global pandemic by moving to remote work, which I was able to facilitate with minimal disruption to the development team.

Duties included:

  • implementing and updating modern Agile/DevOps development processes
  • deploying and managing Linux and Windows Azure services for various environments
  • developing a bespoke database backup solution that handles takes twice-daily log updates and weekly full backups of the production databases, deploys them to development environments, and archives them on various storage medium
  • implementing, improving, and maintaining deployment of code via CI/CD pipelines to docker containers, Azure VMs, internal servers, and Google/Apple app stores
  • beginning to manage infrastructure as code using AWX and Ansible
  • implementing and monitoring centralised log aggregation with urgent notification support

Highlights:

  • Migrated to remote work 2020-03-20
    I created a collection of docker-compose configurations and custom Go applications that allowed our developers to quickly and easily deploy standardised development environments, complete with database replication and Visual Studio Code workspaces, to allow for remote work without compromising productivity.

Grain Market

Engineering Team Lead #

2021-10-16 → 2022-08-05

Combining my previous roles within the team, I was given the responsibility for overseeing the ongoing development of Grain Market’s flagship products, in addition to my previous responsibilities.

The development team was expanded with the addition of a junior mobile developer, who I was responsible for mentoring and guiding in the migration of the Cordova mobile app to React Native.

Duties included:

  • liaising with external development teams when integrating their services into Grain Market’s products
  • managing all of Grain Market’s online services across Azure, Cloudflare
  • leading retrospective meetings to discuss and document the team’s performance during each development period
  • updating the development team’s tooling and platforms, in particular moving from Vue2/Webpack to Vue3/Vite
  • establishing low friction processes that allow faster development within the team
  • leading in-depth planning sessions to define the work required to deliver the features set by upper management

Highlights:

  • Hired a junior mobile developer to migrate Cordova app to React Native 2022-06-15
  • Rewrote the Living Doc in Go and VueJS

LBRY

Senior Community Moderator #

2016-07-01 → 2018-03-20

Sumo Group

Front End Developer #

2015-04-13 → 2015-10-14

Working with a team of designers and developers I was responsible for implementing the client-approved designs as responsive templated components for use in Sitefinity, Wordpress, Joomla, OpenText, and SharePoint, as well as HeavyMail and MailChimp.

Client projects included websites for IMF Bentham, LWP Property Group, and Nation Lifestyle Villages.

Sumo Group

Full Stack Developer #

2015-10-15 → 2016-10-14

In addition to the initial Front End Developer duties, I was given the responsibility of developing backend modules for Sitefinity in C# using the Feather MVC framework.

Client projects included websites for St John Ambulance, Racing and Wagering Western Australia, Fremantle Football Club, United Forklifts, and Web Applications for Murdoch University and Olay.

CPSU

Developer #

2015-02-01 → 2015-04-12

Working for the Community and Public Sector Union as a solo developer, I was responsible for updating report generation templates for use with CPSU’s CRM systems.

Additionally I was tasked with updating content on and improving the UI and responsiveness of the union’s internal and public websites.

Kresta

Senior Web Engineer (Contract) #

2014-07-28 → 2015-01-26

Reporting directly to Kresta’s CTO during a six-month contract, I was tasked with developing the front-end logic and interface for an iPad centric sales portal based on Magento and OpenERP.

I was then placed with the in-house marketing team, where I managed the company’s many Wordpress sites.

Moodle

Developer #

2011-10-03 → 2014-07-25

Working on an agile front-end development team, I contributed to the development of 7 releases of Moodle’s LMS Platform.

Highlights included redesigning the theme for TinyMCE in Moodle 2.6 and developing the replacement text editor, ATTO, in 2.7.

Metisc

Senior Web Developer #

2011-07-04 → 2011-09-30

Working as a senior developer I oversaw the development of websites that interacted with Microsoft Dynamics and iMIS.

Customer projects included websites for the Australian Chiropractors Association’s Locate a Chiropractor programme.

Tonkin Brands

Web Production Manager #

2009-07-22 → 2011-07-01

Reporting directly to the Managing Director, I managed the web production side of Tonkin Brands, and oversaw the design and performing the development and deployment of the clients’ websites.

Client projects included websites for Abaxa, Caremi, Habitat1, and Zellabox.

Titan Interactive

Web Developer #

2009-05-22 → 2009-07-17

As a member of the web development team, I was tasked with assisting in rebuilding Titan’s proprietary CMS to work as an MVC application on the Zend Framework.

Additionally, I was given the task of researching the viability of using the Joomla CMS for client projects as an opensource alternative to the proprietary CMS.

Envisage Blue

Web Developer #

2009-02-23 → 2009-05-21

Working as a contract developer I designed and built a Joomla extension that collected analytics data and produced a PDF report with visitor activity and performance metrics, plus information about the order of pages visitors viewed as they navigated the site.

A second employment contract saw me re-developing a Flash application to improve display of 3D mapped photography used to provide a guided tour of Western Australia’s Parliament House.

Edgwize

Lead Joomla Developer #

2008-05-24 → 2009-02-22

Working as the lead Joomla developer I was responsible for the design specification, development, customization, maintenance, and documentation of all the company’s Joomla sites.

This included development to extend the Joomla component VirtueMart to allow for clients to maintain their own product catalogues, with products then fed into the Edgwize store.

JAMdesign

Web Developer + SysAdmin #

2007-06-19 → 2008-05-23

As a member of the web production team, I was responsible for the specification, development, customization, and documentation of all the sites for the company’s clients and jam’s own company sites.

Client projects included websites for Medic Technology, East of Perth Yatch Club, and Maxim Property Group.

Solid State Solutions

Web Developer + Junior Systems Administrator #

2006-01-01 → 2007-06-18
Brought on as an IT Developer, I was responsible for developing websites, building and managing Linux servers, and deploying and maintaining Asterisk VoIP services.

Edith Cowan University

Bachelor of Communications #

2004-01-01 → 2006-12-31
Major in Interactive Multimedia with a supporting minor in Internet Computing.

Swoop

Backend Developer #

2023-04-11 → present
Go
Docker Swarm
BuildKite
Camunda
Sendgrid
Tracking More

Working as part of Swoop’s second team of developers, I was initially assigned to development of Sonic, Swoop’s NBN service provisioning system, and tasked with adding new features, writing enhancements, and performing large scale refactors of the codebases of numerous micro-services and packages for external services.

Once rapid development of Sonic was complete and the project entered Business As Usual (BAU) stage, my team and I were assigned to the development of Swoop’s voice billing and provisioning system which will later be merged with Sonic.

Duties include:

  • Fixing bugs resulting from incorrect or incomplete business logic
  • Extending the nbn and provisioning micro-services with functionality for newly adopted NBN services
  • Rewriting and refactoring large sections of the codebase to allow new functionality to extend the existing functionality, without conflict or unnecessary duplication

Highlights:

  • Implemented tooling to streamline and automate releases 2023-09-01
employment

TrustGrid

Senior Golang Engineer #

2022-08-08 → 2023-03-28
Microsoft CCF
Hyperledger Fabric
gRPC
Kubernetes (AKS)
Docker

Taking on ownership of TrustGrid’s core codebases, I was responsible for upgrading and improving the backend systems upon which TrustGrid’s decentralised identity services ran.

As part of team given a project to develop services for use by Australian and international governments, I was tasked with upgrading the framework behind TrustGrid’s distributed ledger from Microsoft Confidential Consortium Framework (CCF) 0.15.6 to 2.0.7 and integrating it with the existing ReactJS frontend, until the project was put on hold and the team transitioned to a new project.

After the first project was mothballed, my team researched a new private blockchain framework, Hyperledger Fabric, and began writing an Go API that allowed external services to interact with the smart contracts written in TypeScript, was started in order to produce a product that could be provided to international military organisations. This project involved re-writing most of the code from the previous project and once again integrating it with the the existing ReactJS frontend. This project was put on hold as work on the first project was resumed.

Duties included:

  • Implementing a multi-architecture docker build process so developers can work with Go on x64 and ARM64 machines
  • Writing system architecture specifications for a decentralized identity and verifiable credential platform
  • Managing and maintaining Kubernetes clusters for production ready systems

Highlights:

  • Deployed my first private blockchain 2022-09-16
employment

Kiss My Creative

Corum #

2018-08-02 → present
PHP/Yii2
Kendo UI
MySQL
Bootstrap CSS

Custom Order Request Update Manager, or Corum, is a web application for retail businesses, primarily automotive parts stores, that allows staff to create, track, and report on customer special-request orders. Written in PHP/Yii2, and Kendo UI.

Demo available upon request.

FaceMasq #

2020-01-19 → present
Go
VueJS
SQLC
PostgreSQL
OpenAPI Code-Gen
Docker

Self-hosted network security solution. Scan your network, detect and track the presence of devices, and get alerts when unknown devices connect.

Currently in pre-alpha state.

Tannis #

2023-09-16 → present
Go
Docker
Docker Compose

A CLI for managing large docker compose stacks, with secret management, image building, and more. Tannis serves as the foundation for Lilith.

Currently in alpha state.

Lilith #

2024-02-26 → present
Go
VueJS
SQLC
PostgreSQL
OpenAPI Code-Gen
Docker
Docker Compose

A web service for managing large docker compose stacks, with secret management, image building, and more. Lilith builds upon Tannis, adding a web GUI.

Currently in alpha state.

project

Grain Market

Senior Software Engineer #

2016-10-16 → 2018-10-15
PHP/Yii
Go
Kendo UI
Cordova
Bootstrap CSS
VueJS
SQL Server
Webpack
Gulp
VuePress

Reporting directly to the CEO, I lead the development team in adding new features, iterative improvements, and bug fixes to the online Portal and mobile app platforms Grain Market provides to licensees and clients.

I was also responsible for the ongoing migration of the Portal platform from a monolithic PHP code base to a Go micro-service back-end and a VueJS front-end while redesigning the SQL Server database.

Duties included:

  • Planning, designing, developing, and documenting new features within the Portal platform
  • Redeveloping an out-of-date Cordova mobile application to allow it to work with newly developed tools within the Portal platform
  • Implementing third-party API services with full error reporting for SMS and Email delivery
  • Building and maintaining a bespoke multi-user drag-and-drop newsletter editor that allows for delivery of relevant content to end users with “live document” support
  • Rewrite the Portal platform from PHP to Go
  • Redesign the SQL Server database to allow for easier querying and faster response times

Highlights:

  • Development of Living Doc - a live document editor 2018-06-15
  • Released first mobile app in Cordova 2017-06-21

Senior Software Engineer + DevOps Engineer #

2018-10-16 → 2021-10-15
Azure Windows VMs
Kubernetes (AKS)
Azure Linux VMs
Azure DevOps
Apache/NGINX
Ansible/AWX
SQL Server
TeamCity
Docker Swarm
Bitbucket Pipelines

Focusing on reducing the development workload, I oversee the automated processes and services used to review, test, and deploy Grain Market’s modern services into various environments.

During this time, Grain Market was forced to respond to the global pandemic by moving to remote work, which I was able to facilitate with minimal disruption to the development team.

Duties included:

  • Implementing and updating modern Agile/DevOps development processes
  • Deploying and managing Linux and Windows Azure services for various environments
  • Developing a bespoke database backup solution that handles takes twice-daily log updates and weekly full backups of the production databases, deploys them to development environments, and archives them on various storage medium
  • Implementing, improving, and maintaining deployment of code via CI/CD pipelines to docker containers, Azure VMs, internal servers, and Google/Apple app stores
  • Beginning to manage infrastructure as code using AWX and Ansible
  • Implementing and monitoring centralised log aggregation with urgent notification support

Highlights:

  • Migrated to remote work 2020-03-20

Engineering Team Lead #

2021-10-16 → 2022-08-05
Azure Windows VMs
Kubernetes (AKS)
Azure Linux VMs
Azure DevOps
Apache/NGINX
Ansible/AWX
SQL Server
TeamCity
Docker Swarm
Bitbucket Pipelines

Combining my previous roles within the team, I was given the responsibility for overseeing the ongoing development of Grain Market’s flagship products, in addition to my previous responsibilities.

The development team was expanded with the addition of a junior mobile developer, who I was responsible for mentoring and guiding in the migration of the Cordova mobile app to React Native.

Duties included:

  • Liaising with external development teams when integrating their services into Grain Market’s products
  • Managing all of Grain Market’s online services across Azure, Cloudflare
  • Leading retrospective meetings to discuss and document the team’s performance during each development period
  • Updating the development team’s tooling and platforms, in particular moving from Vue2/Webpack to Vue3/Vite
  • Establishing low friction processes that allow faster development within the team
  • Leading in-depth planning sessions to define the work required to deliver the features set by upper management

Highlights:

  • Hired a junior mobile developer to migrate Cordova app to React Native 2022-06-15
  • Rewrote the Living Doc in Go and VueJS
employment

LBRY

Senior Community Moderator #

2016-07-01 → 2018-03-20

project

Sumo Group

Front End Developer #

2015-04-13 → 2015-10-14

Working with a team of designers and developers I was responsible for implementing the client-approved designs as responsive templated components for use in Sitefinity, Wordpress, Joomla, OpenText, and SharePoint, as well as HeavyMail and MailChimp.

Client projects included websites for IMF Bentham, LWP Property Group, and Nation Lifestyle Villages.

Full Stack Developer #

2015-10-15 → 2016-10-14

In addition to the initial Front End Developer duties, I was given the responsibility of developing backend modules for Sitefinity in C# using the Feather MVC framework.

Client projects included websites for St John Ambulance, Racing and Wagering Western Australia, Fremantle Football Club, United Forklifts, and Web Applications for Murdoch University and Olay.

employment

CPSU

Developer #

2015-02-01 → 2015-04-12

Working for the Community and Public Sector Union as a solo developer, I was responsible for updating report generation templates for use with CPSU’s CRM systems.

Additionally I was tasked with updating content on and improving the UI and responsiveness of the union’s internal and public websites.

contract

Kresta

Senior Web Engineer (Contract) #

2014-07-28 → 2015-01-26

Reporting directly to Kresta’s CTO during a six-month contract, I was tasked with developing the front-end logic and interface for an iPad centric sales portal based on Magento and OpenERP.

I was then placed with the in-house marketing team, where I managed the company’s many Wordpress sites.

contract

Moodle

Developer #

2011-10-03 → 2014-07-25

Working on an agile front-end development team, I contributed to the development of 7 releases of Moodle’s LMS Platform.

Highlights included redesigning the theme for TinyMCE in Moodle 2.6 and developing the replacement text editor, ATTO, in 2.7.

employment

Metisc

Senior Web Developer #

2011-07-04 → 2011-09-30

Working as a senior developer I oversaw the development of websites that interacted with Microsoft Dynamics and iMIS.

Customer projects included websites for the Australian Chiropractors Association’s Locate a Chiropractor programme.

employment

Tonkin Brands

Web Production Manager #

2009-07-22 → 2011-07-01

Reporting directly to the Managing Director, I managed the web production side of Tonkin Brands, and oversaw the design and performing the development and deployment of the clients’ websites.

Client projects included websites for Abaxa, Caremi, Habitat1, and Zellabox.

employment

Titan Interactive

Web Developer #

2009-05-22 → 2009-07-17

As a member of the web development team, I was tasked with assisting in rebuilding Titan’s proprietary CMS to work as an MVC application on the Zend Framework.

Additionally, I was given the task of researching the viability of using the Joomla CMS for client projects as an opensource alternative to the proprietary CMS.

employment

Envisage Blue

Web Developer #

2009-02-23 → 2009-05-21

Working as a contract developer I designed and built a Joomla extension that collected analytics data and produced a PDF report with visitor activity and performance metrics, plus information about the order of pages visitors viewed as they navigated the site.

A second employment contract saw me re-developing a Flash application to improve display of 3D mapped photography used to provide a guided tour of Western Australia’s Parliament House.

contract

Edgwize

Lead Joomla Developer #

2008-05-24 → 2009-02-22

Working as the lead Joomla developer I was responsible for the design specification, development, customization, maintenance, and documentation of all the company’s Joomla sites.

This included development to extend the Joomla component VirtueMart to allow for clients to maintain their own product catalogues, with products then fed into the Edgwize store.

employment

JAMdesign

Web Developer + SysAdmin #

2007-06-19 → 2008-05-23

As a member of the web production team, I was responsible for the specification, development, customization, and documentation of all the sites for the company’s clients and jam’s own company sites.

Client projects included websites for Medic Technology, East of Perth Yatch Club, and Maxim Property Group.

employment

Solid State Solutions

Web Developer + Junior Systems Administrator #

2006-01-01 → 2007-06-18

Brought on as an IT Developer, I was responsible for developing websites, building and managing Linux servers, and deploying and maintaining Asterisk VoIP services.

employment

Edith Cowan University

Bachelor of Communications #

2004-01-01 → 2006-12-31

Major in Interactive Multimedia with a supporting minor in Internet Computing.

study