Python — my language of choice since 1999. I've used it to write web servers, database systems, daemons, scientific simulations, blog engines, and innumerable scripts for various purposes. I'm deeply familiar with the language, its libraries and best practices, and I bring that to bear on writing high quality code. Today I mainly use Django and Flask for web development, and I'm experienced in a wide range of supporting technologies such as Celery, SQLAlchemy, etc. I'm also proficient with various data analysis/visualisation tools such as Pandas, Numpy, matplotlib, bokeh. I prefer test-driven development where possible, supported by tools such as pytest, nose, Selenium, and Cucumber.
System Administration / DevOps — I'm an experienced UNIX/Linux/BSD/OSX sysadmin; I've set up and maintained servers running Nginx, Apache, PostgreSQL, MySQL, RabbitMQ, ElasticSearch, InfluxDB, Grafana, Supervisord, SELinux, Jenkins, etc. and am comfortable working with infrastructure tools such as Docker, Ansible, SaltStack, and VirtualBox/Vagrant. For version control I prefer Git, but have also worked with Mercurial, Subversion, Darcs and CVS.
Haskell — a key tool for much of my scientific work between 2004 and 2014, when I applied it to language processing, formal logic, simulations, GUIs and web apps. It's a beautiful and mind-expanding language, and using it has informed my general programming practice for the better.
Other languages — I'm a multi-linguist and a fast learner, with a rigorous grasp of programming fundamentals across multiple paradigms. I know Ruby though these days mainly use it for Behaviour-Driven Design (via Cucumber); I wrote a lot of Haskell for my PhD – it's a mind-expanding language which has informed my general programming practice for the better; I write PHP when I need to do get things done in Wordpress; I know Objective-C and have written some iOS apps for personal use; I'm also competent in Java, Scala, C, LISP and various shell scripting languages.
2009 — 2014
PhD in Computer ScienceSwansea University
2004 — 2008
MPhil in Computer ScienceSwansea University
Thesis: Tool Support for CSP-CASL — language design/formalisation and tool implementation for a new mathematically rigorous system specification language; compiler programming in Haskell.
Language design, tool support, and case studies for a new system specification language called CSP-CASL (a process algebra with algebraically specified datatypes), within the Processes and Data research group. This involved design and formalisation of the language's syntax and static semantics, and implementation of its parser and static analyser in Haskell.
1992 — 1995
BA (Hons) Computing & Pure Mathematics, first classCardiff University