About me

I am a cross-paradigm, performance driven, Full stack Software Developer. With a passion for learning new languages, paradigms and frameworks, I can adapt to any team. Excelling in both collaborative and independent environments, I write clean, maintainable code to ensure future organizational success.


Employment

Company: Didgigo
Time Employed: March 2017 - Present



Didgigo is a travel documentation solution for large tour operators globally. Supporting large clients such as Hello World Group, Jonview Canada, Abbey Group Ireland & UK and Tahiti Nui I took Didgigo from approximately 8000 total itineraries to over 135,00. I have managed projects and junior developers, I attended World Travel Mart London 2019 to assist with technical discussions relating to sales. As a fullstack developer I have been in charge of our Kubernetes cluster, nodejs based servers, mobile application and many other aspects of the business. The job has allowed me to understand how developers can enable potential business success and profitability.

Projects

Tripigo (Mobile App)

Tripigo is the Mobile App I produced for Didgigo. A leading edge itinerary viewer, Tripigo is built on Ionic, a hybrid app built using web technologies for iOS and Android. Foreign language support, realtime group chat for tour groups, High quality imagery, curated things to do an see near destinations.

Kubernetes Cluster

I organised, set up and maintained our Kubernetes Cluster on Google Cloud Platform. with 50+ running containers and well over 99.99% uptime it enabled us to prepare for a potential 500,000 documents in 2021

Didgigo API and Import Server

The Didgigo API was produced so we could move away from using a single dedicated server, into a cloud based envorinment. The API enabled external customers to interface directly with Didgigo, aswell as all cloud based systems using the API for general activities. We also interfaced with a number of pieces of Tour Operator software, such as Tourplan and Softrip to automate the import of content (Hotel/Tour content) and production of documentation (Itineraries).

Productivity Suite

The Productivity Suite is and Angular 9 web application to introspect how imports are running. With the ability to be as transparent as possible with regards to how data is transformed from third party systems into the Didgigo data model and see which itineraries have been imported. the entire system has a consistent format so using the system is the same for all Third Party API's.

Previous

Company: Electric Memory IT (EMIT)
Contracted To: Process Systems Enterprise (PSE)
Time Employed: June 2015 - March 2017



I was part of many projects at PSE/EMIT. They challenged me and allowed me to grow as a developer under the guidance of a very good team.

Projects

New Language Engine (NLE)

Using Scala for AST and validation logic, and Antlr4 as our parser and lexer, I collaborate in a team of three to build a fast, immutable, threadsafe and storage efficient language module. I have written most of the Antlr grammars, the parsing logic and a large portion of the language model. Whilst the rest of the team worked on integration with existing code.

Maven to Gradle migration

I led the Gradle migration project. Our build system is rather complex, we have multiple code generation steps, multiple JVM languages being used, extra post-compile tasks (obfuscation and encryption) and multiple repositories. The build was designed to be modular via Gradle plugins. I had to manage other developers such as the CI and Kernel teams. The build had to run fast and support both Windows and Linux.

Flowsheet Routing

Flowsheet routing is the act of ensuring the connection between nodes on a flowsheet are orthogonal. For user-generated projects this could happen on project load and could trigger up to 8 hour GUI freezes. I moved the route calculations off the event dispatch thread (Swing’s GUI thread), ensuring asynchronous execution. I also altered all routing actions so they would be undoable, parallelizable and cancellable.


Past Non Technical Employment

Dick Smith Electronics

Role: Salesman
Time Employed: 2014 - 2015

Countdown Supermarkets

Role: Butchers Assistant/Checkout Operator
Time Employed: 2009 - 2013

Paradise Valley Berry Farm

Role: Raspberry Harvester
Time Employed: 2008


Open Source

In the past I have worked extensively in the open source section of the scala ecosystem. Although in the last 2 years I have done no open source work.

  scalagen

Author

I authored this library primarily because the existing scalameta/paradise library was deprecated, and scalamacros/paradise is not ide or user friendly. I managed everything from issues to design and implementation. No longer maintained as I left the Scala ecosystem.

  Elysium

Author

Elysium was an exploration of what could be accomplished with Macro Annotations, I also wrote a macro to develop macros. All Elysium macros are strongly typed and became the foundation of scalagen’s API. No longer maintained as I left the Scala ecosystem.

  scalameta

Maintainer

A huge center point for Scala’s tooling which exists primarily as an AST manipulation library. I am the co-author of the scalameta-contrib module, built to simplify interactions with scalameta.

  scalameta paradise

Maintainer

Macro library for Scala. Now deprecated in favor of scalameta/scalagen (annotation macros) and scalacenter/macros (def macros). I have written a large portion of the annotation processing logic used to ensure feature parity with scalamacros/paradise.

Technical

Languages, Libraries and Skills
Javascript
I have written a lot of Javascript/Typescript. It is what most of my last 2 years has been. I have experience in ES5, ES6, Typescript and Coffeescript. I have also used frameworks such as AngularJS, Angular and React, using tools such as NPM, Bower, Gulp, Ionic and Webpack.
Scala
I have 6 years Scala experience, 2 and a half in industry. I have given a talk and follow-up workshop on the language at the local Software Development meetup group.
Java
I have 7 years Java experience, 2 and a half in industry. I am a competent OO developer and have spent a lot of time profiling the JVM and optimizing low level code.
C#
The core application for Didgigo was a C# ASP.Net Web Forms application. Most of my time was adding functionality to our cloud infrastructure, however a portion was spent working on the existing web forms.
Python
I have over 5 years Python experience, with a small amount in industry. I have used Python for small web servers (Django or Flask) and command line tooling in the past.
Category theory
I learnt basic category theory which helped me understand programming from a mathematical perspective. Various abstractions such as Monoids, Free Monads and Natural Transformations allowed me to further grasp general programming concepts.
Functional Programming
I apply functional programming knowledge to all programming languages, It has helped me to produce clean reusable pieces of code with a clear separation of behavior, data and effects.
Testing
I’m competent with all testing and use different testing methods depending on the situation. My knowledge covers unit, integration, interactive and acceptance testing, as well as benchmarking.
Code Review
I am experienced with code review, both on Github for reviewing pull requests, and Gerrit for internal code review.
Operating System

I am experienced with all 3 major operating systems. Linux, OSX and Windows. I am most experienced with Linux, primarily NixOS, and Ubunutu.

Version Control

I use git for version control. I am competent with git and have written many programs interacting with Git repositories. I am familiar with git-flow.

IDE's and Editors
  • IntelliJ IDEA
  • Pycharm
  • Webstorm
  • Rider
  • Android Studio
  • VSCode
  • Atom

Conferences

  • Kiwicon X
  • 2x Kiwi Pycon
  • NZJSCon
  • linux.conf.au 2018

Community

I enjoy attend conferences and programming events, I would like to grow the Software Development community in Cairns and potentially start a meetup group.


Education

Massey University

Qualification: Bachelor of Information Science. Computer Science Major

Status: Compulsories complete in 2015

Left for fulltime development work before completing all electives.

New Plymouth Boys' High School (NPBHS)

Qualification: NCEA level 3

Status: Complete in 2011

References

Matt McKinley

Relationship: Founder and CEO Of Didgigo
Location: Cairns, Australia
Timezone: Australian Eastern Standard Time (AEST - UTC+10)
Email: matt.mckinley@didgigo.com.au

Duane Griffin

Relationship: Cofounder of Electric Memory IT
Location: Palmerston North, New Zealand
Timezone: New Zealand Standard Time (NZST - UTC+13)
Email: duaneg@psenterprise.com

Luke Usherwood

Relationship: Cofounder of Electric Memory IT
Location: Hungary
Timezone: Central European Time (CET - UTC+1)
Email: lukeu@psenterprise.com

Andrew Bevan

Relationship: Head of Software Development, Process Systems Enterprise
Location: London, England
Timezone: Greenwich Mean Time (GMT - UTC+0)
Email: andrewb@psenterprise.com
Phone: +44 20 8563 0888