My skillset

Over the last 10 years I have built software for use by media houses, telcos, communities and governments.

Project Management and Architecture

Numerous recent roles have involved the design and implementation of custom and complex software. Most recently I was the lead on all of our core products which number 8 in total. I managed the priorities of tasks and ensure that requests from the board are aligned with the development team’s internal roadmap of bug fixing, improvements and feature addition. I also manage DevOps, which includes 50+ servers on AWS and other environments, as well as working on local and enterprise deployments. I make decisions on best programming practice, toolsets and various enterprise and open source products.

In my most recent employment, I was previously the lead architect for the flagship product of our company and continued to build out the solution. I have also designed and developed a media publishing solution to replace an in-house system which is used by some of the top sporting websites in the world. I assist with support queries on existing and new deployments when appropriate, dealing directly with customers on occasion.

A key skill in this role is to align technical requirements with directives from the board, taking into account political and business requirements of the company and our clients. Dealing with stakeholders at all levels is a necessity in providing the best solution for all parties involved.
Git is used as version control for all software, and Agile methodology is applied to the software development cycle. Both Jira and Trello have been used to track development, and integrations with messaging systems (internal and external) employed for notifications on projects and systems. Dealing with legacy software and transitioning into more modern environments has been a core asset in my employment history.

Go

The core banking system, as well as smaller projects on my Github, are built using Go. The banking project exposes a fully REST API with a great focus on error handling and stability. Light use of go-routines ensures that threads aren’t locked unnecessarily, connections are pooled where possible, and the code is modular in accordance with good design principles.

PHP

The majority of my career has involved PHP development. Main focuses have been the extension of existing open source solutions, custom development of feed-driven publishing platforms, high-throughput messaging platforms, APIs, enterprise and consumer dashboards and innumerable CRUD applications.

Javascript

On the front end I have Javascript and frameworks to extend simple functionality as well as to build deep single page applications. My design style tends towards simplicity, and where possible the lightest and least complicated solution is preferred. I have used plain Javascript and jQuery to add simple functionality as well as to create complex mail browser applications. More recently, I have built complex applications in Ember and ReactNative, which include dealing with REST APIs, calendar functionality, and two-way data binding of short-lived information.

Linux

All of my career has involved a deep understanding of the Linux ecosystem. During my tenure as CTO of OnNet, I was managing 70+ servers in various production and staging environments. One example of bash usage is a script I wrote to ensure data synchronisation of media assets between different load balanced servers (while making sure performance was maintained). This also introduced me to the importance of caching data and we made heavy use of Varnish. Bash scripting is required often to this day, and I am currently managing various AWS and Linode servers for work and personal use.

Ansible

I have employed Ansible in all projects which involve the deployment and management of infrastructure and software. Ansible is also used as part of the CI/CD pipelines I have implemented, including continuous testing of the software. I have brought down the man hours required for managing systems by at least a factor of 10, resulting in an increased resource pool on constrained teams.

Server side

  • PHP
  • Go
  • MySQL
  • Node.js
  • Laravel and Codeigniter
  • Mongo
  • ZeroMQ
  • REST API construction/consumption

Client side

  • HTML5
  • CSS3
  • Javascript
  • Ember
  • Meteor
  • Angular (1.x)

Sysadmin

  • Bash
  • Web servers (Nginx/Apache)
  • Varnish
  • Monitoring
  • Optimisation

Additional

I have also done a fair amount of dev with mobile application development, most recently iOS using Swift.