Welcome to G403.co, my name is Gabriel and I will be your host for this journey into insanity.
I’m currently system’s developer for Fusions, producing code, maintaining systems and developing automation techniques (think puppet, vagrant, jenkins and packer) to streamline development, deployment and maintenace.
I am formerly a dev-op for Go MAD Thinking, where I developed software as well maintained infrastructure.
I suffer badly from chronic side project syndrome (CSPS), currently building Slim API, a set of command line tools for generating API endpoints/mvc architecture on top of Slim using Symfony’s console component. I help where I can with maintenance on the Slim PHP framework. I also built DOM, a front end for working with Digital Ocean’s v2 API, though with the new team functionality in DO it’s not needed so much.
My main languages are PHP/RoR with oodles of jQuery, AngularJS, Bootstrap and Dojo JS as well.
I’m a graduate of De Montfort University, gaining a 1st class degree with Honours in Software Engineering.
I am an open source software developer/systems administrator, who works equally on the backend, PHP (Slim, ZF2, Apigility, Symfony, homegrown), RoR as both APIs and full stack frameworks and the frontend jQuery, AngularJS, Bootstrap, Dojo Toolkit. I also have extensive experience of provisioning/managing servers with puppet and packer. As well as such things as Redis, bower, brunch and grunt. As part of my CSPS I like to try new technology, and buy the laptop sticker for it. I’ve recently aquired a hankering for docker, which we started to use when migrating some services from heroku to a DO droplet.
I am currently systems developer for Fusions PIM, a system for managing product enrichment lifecycle. I manage multiple servers for hosting the various environments as well as day to day PHP development as part of the development team. I write multiple one off apps to automate and simplify routine tasks, including a RoR application for updating the on-call support member and a Rails API/AngularJS deployment platform. I also maintain the server instances and development VMs using a series of puppet scripts (puppet forge and home grown) and packer.
I’m a passionate open source advocate producing various modules to ease the use of Slim Framework, Zend Framework 2, as well as my own website/blog, making use of various open source tools, such as Michelf’s PHP Markdown Extra and GitHub for hosting. I blog on various PHP/JS related topics and present talks on various subjects at local user groups.
Go MAD Technology
During my placement year at university I started as a junior web developer working for Go MAD Thinking, working on iCheev. iCheev (yes that is how it’s spelt) is a website to help people plan and achieve their goals, through various tools. I quickly became the server administrator handling SVN, access control, testing and live servers as well as deployment.
I also introduced the trac bug tracking system which we’ve used to track the development process of new features as well tracking bugs from discovery to resolution.
After graduating I went back to working for the same company as web developer/server administrator. I started working with more languages such as C#.NET and Ruby.
I also worked to integrate our provisional suite of unit tests into a more continuous solution by the introduction of Jenkins CI to routinely run our rapidly increasing suite of unit tests. I then progressed to using Jenkins CI to automate our deployment through the testing stages and finally to the production deploy.
As a frequent contributor to open source projects, most of them through github I introduced the company to git and championed the use of git as our vcs, finalising with a presentation on git, github and gitflow to the majority of the company upon which the decision was taken to move forward with git.
After discovering the wonders of puppet and vagrant (and how github use puppet to set up their local dev machines (I stole the name)) and how well they could be combined I started work on a project to enable our devs to spin up vagrant instances to use as dev servers. I also produced configurable puppet scripts that would reproduce our various development projects, with all server dependencies, with minimal fuss. This allowed rapid deployment of our projects to new nodes as needed. This also freed the devs and allowed them to use any combination of operating system and hardware they wished whilst still running their development on the vagrant boxes which would replicate a common environment. Extra vagrant boxes were generated to enable developers to replicate different environments from our ‘edge’ development server all the way to production, all on VMs on their local machine. This also lead to new technologies being implemented as puppet scripts allowing easy deployment amongst developers and then on servers, as the puppet scripts don’t need to run on a virtual. This also enabled writing puppet scripts to set up brand new or newly reinstalled machines with all the programs a dev needs.
Vagrant, Puppet and Packer
One of my first jobs when I started working at Fusions was to rebuild the dev vm the company was currently using. Due to time constraints and only being a small company they hadn’t had the oppertunity to keep the VM up to date nor to automate an installation with the various provisioning tools available. During the rebuilding of the VM I made the conscious decision to make the provisioning and future rebuild of the VM as automated as possible, I wanted to spend my time doing development not rebuilding virtual machine images. I’d already had experience of using Puppet and Vagrant at GMT and was able to expand on that significantly when building the fusions VM. I was able to keep the dependencies of the puppet scripts nicely serperated so that they can be reused in other environments. This led on to being able to use an expanded and more configurable set of scripts to set up the more advanced environments, so that our edge, staging, backup and production servers where all buildable using the same set of scripts. I also used the advantages of Packer to further automate the building of these VMs, meaning I’d literally have to run a single command to produce a new up to date virtual machine in any particular environment.
When I first joined Fusions all deployments were manual, consisting of sftp uploads and folder naming, chowning and chmoding of certains directories. This would not do. Until we found our ideal deployment service I built and maintainted a RoR/resqueue app that automated as much of this as possible.
We do out of hours support, with a single person being on call and getting OT pay based on day of week and shift, using current products would mean trying to tie 2 or 3 apps together and then using something like IFTTT to get the scheduler to change which phone was on duty. It was much simpler to write our own purpose built app to do all this. The result of which was soundwave (which we plan on open sourcing really really soon).
The account holder of our Digital Ocean account was for obvious reasons our boss. As I was dealing with most of the ops I needed someway of interacting with DO. Thankfully DO released their v2 API soon after I joined. I built as a front end client to that API to allow me to work with our droplets.
I’m frequent speaker at the local PHP user group, on a variety of subjects from building your own framework, to using puppet, packer and vagrant, as well as front end testing with behat.
Open Source Software
Most of my open source code can be viewed in my github account, these include a set of tools for generating API end points Slim API, modules for the Slim PHP framework, modules for ZF2, PHP Based CI Server, doing bug fixes and code for Slim & ZF2 itself, as well as working on my projects to try out the various other programming languages. A RoR app for doing deployments Prowl, v2. A kanban board written in Node.js Kaizen Kanban, using redis as a backend.
subscribe via RSS