Responsible for development, design and site reliability engineering functions with Civo Ltd. Reporting to the Chief Executive Officer (CEO), my duties include ensuring work is completed for our external clients, managing and mentoring the development team while maintaining a very active hands-on development role.
Having previously installed OpenStack for a client, in 2016 we launched our own OpenStack-based cloud environment under the brand Civo.com in to Beta. The frontend of the site and API are written in Ruby (2.6) and Rails (5.2). After a succesful beta, we launched fully to the public in April 2019 and at the time of full launch I had written 54% of the frontend website and 85% of the API/orchestration backend. Key to the success of the platform was both the KPI statistics we gather and monitoring platforms. I installed Kubernetes on top of Civo, and then moved Civo.com and the API to be dogfood-hosted within our own platform - this is automatically deployed via GitLab CI jobs performing rolling updates out to the Kubernetes cluster.
In 2019 we launched our Kubernetes managed service running on Rancher Labs's k3s service to a group of beta customers called our #KUBE100. This is (to the best of our knowledge) the first managed k3s service in the world. I was responsible for writing almost all of the code for the platform, as well as liasing with the marketing team and working with the developer advocate to ensure a great developer experience.
While offering team leading consultancy to LCN Ltd, I worked with a very talented system administrator to build an OpenStack based cloud, with a custom Go (golang) based API. I also technically lead a team of designers/developers to deliver sites for customers and provide estimates for work.
Modernised LCN.com's Rails platform from Rails 3.1 to 4.1, including migrating Cucumber tests to RSpec feature specs, upgrading Gems from old forked plugins and putting in place automated processes such as Jenkins automatically managing job creation/deletion as branches are created/deleted.
Developing the next version of the main Which? homepage and product reviews in Ruby 1.9/2.0/2.1 and Ruby on Rails 4.0 (including migrating applications from 3.x to 4.0), using Behaviour-Driven Development (BDD) with RSpec and Capybara, deployment to cloud servers configured with Chef and Heroku, and ensuring high test coverage checking using SimpleCov.
I then almost solely built a next generation betting component system using Rails 3.1 engines, including writing a custom gem server and this framework (Apollo) was used to rebuild FDJ's site in 2012. Lots of dynamic code has been written in order to build a nice system for interacting with the REST web interface of the Java-based Advanced Betting Platform backend system. MongoDB is used for rolling visitor accesses to be able to trace visitor actions/numbers. Tests were written using RSpec and Cucumber and deployment with Capistrano.
After heavily participating in preparing the RFP response and then presenting/demonstrating in Paris to compete for the bid, I then lead the team building the new website and mobile/tablet interfaces for the Israeli Sports Betting Board, including a lot of negotiation/liasing with the clients regarding specification, code reviews and payment integration with multiple service providers.
My company operates as an independent business on a number of sites, subcontracting to others when required; including liasing with the client to analyse requirements, generating quotes and delivering systems to agree timescales (including maintaining Linux servers for the clients where required). Some of our work has been:
DojangScore - An iOS application to provide scoring ability for matches within a gym or at a small competition for WTF Taekwondo. This is being built in RubyMotion for iOS6. (in progress)
Pocket-lint.co.uk - A gadget news and reviews site. The first version was built by the client, I built the second version to greatly enhanced requirements while maintaining the existing content and search engine rankings. At the end of working with Pocket-Lint they were achieving 4.5 million page impressions per month.
Rightboat.com - A site for selling/buying boats. Complete e-commerce system including a Solr-based search utilising a custom framework/code generation system, storing data including collective-intelligence in MongoDB (suggestions for other boats used, statistics, etc) and use of MySQL Stored Procedures.
Menshealth.co.uk - A site for Natmag-Rodale. The frontend code/markup was created by the client, but the entire backend was written by me. This was a major publishing platform with a full Content Management System generating up to 5 million page impressions per month.
IPC Media Ltd is a major magazine publisher based in London, with an online and magazine portfolio of over 80 titles include What's on TV, Pick Me Up, Woman, Now, Marie Claire, In Style, Woman & Home, Nuts, Loaded and NME. I was Lead Developer of the Content Management System (CMS2) Team, leading up to 8 developers (in a technical capacity, rather than personnel/HR point of view) in turning the project round from a failure, with business consultants from Bearing Point Ltd brought in, to be one of the top performing teams in the department.
I undertook a variety of tasks from managing the team in a Scrum/Agile methodology, developing new modules and enhancing existing ones, code reviewing frontend and backend developers work, interfacing with Business Analysis and Quality Assurance/Testing and presenting progress to Director/Senior Management level.
As the lead developer of IPC's Search 2 team, I was the main developer on a pluggable search system based on Apache Solr with a RESTful web service interface, developed and released successfully to a strict time-scale and with minimal defects. I was also a member of the Architecture Working Group, meeting weekly to discuss/decide the future architecture of IPC's current and future web platforms.
I was the Technical Director of a small (up to 25 people total, 15 in the technical teams) Web Design/ Development Agency working for clients such as Moet & Chandon, Maldon Sea Salt, OXO Gravy, Budgens, Essex Boatyards developing e-commerce systems, CMS, forums and managing all hosting and deployment.
My responsibilities included working closely with the client to analyse their requirements, specify the project and timescales and deliver the work on time, to budget and with an excellent quality level. Providing consultancy services to clients regarding desktop application development. Interviewing, reviewing staff's development and disciplinary procedures.
"Andy was a pleasure to work with. Andy stepped up well beyond the expectations of a contractor in the Which? Digital team. He took on a role as Lead Ruby on Rails developer and worked with us to set best practices for RoR at Which?"
"Andy made many positive contributions to our ways of working, running brown bags and training sessions for team members and helping cross skill our front end developers to Ruby on Rails."
"And last but not least Andy was a great team member - he made quite an impression with his fancy dress outfit for Halloween (I think he won first prize if I recall [I did]). Andy is a positive and 'cup half full' person, and relished new challenges. A really great person to have in the team and he'll be missed."
"Andy is a real pleasure to work with. Efficient, effective, strong technical ability and a great communicator. He was a real asset in my team and got stories completed quickly and correctly. Andy is very proactive and engaging in looking at stories and suggesting viable (normally more efficient) solutions. If you have the chance to work with Andy, I'd strongly recommend it. I look forward to working with him again."
"He is one of these guys who I really enjoy working with, whatever I thow at him, he is able to come back with a solution (or 3) and a way forward. His technical understanding is extremely strong and there were many occasions where I was able to bounce ideas off him and between us find a way forward. However he has more to his bow than being a strong technical person. He is very good with customers and was invaluable to me on our last project together where I knew I could trust him to provide solutions which not only met the requirements of the customer but also were well thought through, with one eye on the future."
"Andy was the Ruby on Rails development lead in the team I've worked in for more than 18 months and I've always been impressed by his technical knowledge. He has in-depth knowledge of Rails and the whole stack of technologies around it, but he's also curious and on the lookout for new tools and technologies for doing the job. Andy is very good at tackling difficult technical challengies and explaining them in understandable terms to non-technical clients. I would highly recommend him for teams needing punctual help or the long-term mentoring of a team. Be warned his passion for technology is contagious."
"I found Andy to be a confident Technical Team lead with a keen interest in new technology and development methodologies. He has excellent experience of Agile development and is able to work well with a large development team of varying ability."
"Andy is one of the most capable developers I have every worked with. I will greatly miss our ramblings about the finer points of a designs or the advantages of Ruby vs PHP."
"Andy has been my team lead for over 6 months now and in that time I have come to respect his knowledge of Software design and development as well as his leadership ability. He has a keen interest in new technologies, and keeps himself up to date on almost everything in the IT world that he can. I highly recommend Andy for his work and believe him to be a true asset to any team that he works with."
I was the Technical Reviewer for the following articles for SmashingMagazine.com:
I was credited as Technical Reviewer for PeachPit’s book "PHP Advanced".
I was credited as Technical Reviewer for Wrox Publishing's book "Professional PHP Programming".
I am a Taekwondo 7th degree black belt Master Instructor running a club for around 90 students ranging from 5 year old children up to adults of 50+ years old. I have been training since 1986 and running my club since early 2011.
I was invited by the World Taekwondo Headquarters in Korea to attend the World Taekwondo Leaders Forum in 2012 along with about 150 masters from 53 countries around the world and was appointed a Regular Member of the forum. I went back to Korea in July 2013 to attend the Kukkiwon Master Training Course, one of 126 international masters to do so, and passed the 3rd class course and received a Citation for "outstanding performance amongst the trainees". I also was re-appointed as a Regular Member of the World Taekwondo Leaders Forum.
In November 2015 I attended a course in Vienna, Austria and qualified as a Poom/Dan (black belt) Examiner under the World Headquarters. In the summer of 2016 I am heading back to Korea, to attend the International Master Training Course,to qualify as a 2nd class Master Instructor (the course requirement is a minimum of 6th degree black belt and an existing 3rd class master instructor qualificiation).
In July 2016 I went back to Korea to attend the Kukkiwon Master Training Course, and successfully passed my 2nd Class master qualfication, again receiving a Citation for my performance. In February 2018 I received a Commendation from the Kukkiwon for my "outstanding contribution to the development and dissemination of Taekwondo".
While at Which? I launched their first ever piece of Open Source Software, ActiveRestClient. This is an abstraction library to help easily implement REST API clients in Ruby (in particular for Ruby on Rails, as its public interface is modelled on ActiveRecord). Unfortunatley, since I left Which? the project stagnated and eventually my committed access was revoked. I therefore forked it and currently still maintain it as Flexirest.
I'm also an amateur photographer, shooting with a Canon 450D, mainly family shots and contact sports (Taekwondo, UFC) and then doing simple processing in Lightroom or for more adventurous manipulations using Photoshop or Pixelmator.