Experienced web programmer and Linux systems administrator.
Many years experience with Python, especially web programming using Django.
I also have extensive experience in Linux systems administration, including most of the popular technologies - MySql, PostgreSQL, Apache, Nginx etc etc, plus server deployment and auto-scaling tools such as Puppet, Ansible, Vagrant, AWS technologies such as Elastic Beanstalk and so on.
I have a wide range of experience, including 5 years with one of the leading internet companies. I have developed a wide range of software, from web applications using Django to distributed applications processing large quantities of data. In addition I have good in depth knowledge of the administration of linux servers and clusters.
I have considerable experience in programming, especially in web programming.
many sites over the years, including legal services, logistics, entertainment and social networking sites.
I also have experience in developing sites in PHP.
I also work extensively in Linux systems administration. I have worked on low level maintenance of clusters, large-scale machine life-cycle management (cradle-to-grave automation of maintenance of hundreds of thousands of machines). The use of web based report and monitoring systems gave me a good grounding in Django and challenging web programming.
I currently focus on systems administration for small and medium sized businesses, configuring, tuning and fixing services.
I also work on provisioning services, using systems such as Ansible or Puppet to provide a flexible and scalable configuration that can provision and configure any number of services.
I have extensive expereince with
- Amazon services
- Linode, Rackspace, Digitalocean etc etc
I place a high priority on clean, well written, readable. well-commented code.
I believe in Djikstra's aphorism that each line of code written should be seen as a line spent, not a line produced.
I believe that a system should be built for the future
- that code should be written so that it will be easy for a new programmer to read and understand what is going on.
- that a system should be written with the assumption that any particular part may need to be replaced as the system scales in any one of a number of ways.
- that a system should be build in a way that is easy to explain to a non-technical person.
University of Bradford
Postgraduate Diploma in Computting
1997 - 1998
various technical roles
2008 - Present
Worked on various short contracts on a variety of technical issues in IT, theatre and live music.
2003 - 2008
I worked on the management of Google's vast fleet of servers, focusing on automation of the tasks involved in testing, repairing, tracking and decommissioning these machines. This involved designing solutions on individual machines and then scaling these solutions up by many orders of magnitude so that the operations could be carried out on vast clusters. Typically I would solve low level system problems, then write code that would solve these problems automatically, taking into account the variety of architectures and platforms present, then write a dstribution and tracking layer that would allow the code to run on many many thousands of machines and allow the outcomes to be automatically monitored, displayed via web applications and further actions to be automatically if needed.