Freelance programmer with over a decade of experience developing high quality software using a wide range of technologies.
Key projects include research software management tools for UCL, a technical refresh of the Pointbank incentives platform and building the BBC Weather website.
I choose to work with productive high level languages such as Python, but also have a strong background in systems development and optimisation. I am confident with the Linux command line and am experienced with web development.
I enjoy working with creative and intelligent people, building on open software and APIs to create solid and elegant systems.
Server side technologies
- Python (2 and 3), Django, Flask
- Linux / Unix command line, GNU tools, bash, server admin
- Task management and scheduling - RQ, celery
- RESTful web services (Django Rest Framework)
- SQL databases (PostgreSQL, MySQL, SQLite, Oracle)
- API integrations - Twitter, GitHub, OAuth
- CSS, LESS, SASS, Compass, Bootstrap
- Cross browser concerns, progressive enhancement, accessibility
- HTML5 features - geolocation, websockets (socket.io)
- Responsive web development
- Mapping toolkits (Google Maps, OpenLayers, Leaflet)
Tools & Techniques
- Agile, Scrum, TDD, BDD, CI
- Testing - tox, pytest, webtest, selenium, mocking
- Collaborative tools - Trello, Jira, github, GNU screen
- Remote working, pair programming, peer code review
- Sphinx/RST documentation
- Source control - git, mercurial, Subversion
- Deployment - fabric, ansible, puppet
University College London (2015)
- Full stack Django development of new product
- Integrations with GitHub, BitBucket
- Shibboleth (SAML) authentication
- Testing with pytest / webtest / selenium
- Task queues with redis / rq / rqscheduler
- Working with Oracle databases
- Providing and consuming REST APIs
- Puppet deployment
Potato - Back end development (2014-2015)
Building new products and improving existing ones using Django and App Engine.
- Optimisation and performance enhancements
- TDD, continuous integration
- RESTful API design / implementation (Django REST Framework)
- both SQL and NoSQL database design
Technical refresh of Pointbank, a corporate incentives platform built in Django.
- Architected and developed an activity feed based on Activity Streams standard.
- Rebuilt the front end using Sass for improved extensibility
- Built custom authentication backend for bespoke client integration
- Key technologies: Django, Python, Celery, PostgreSQL
BBC Weather (2011-12)
Development of the BBC Weather website. Initial three month contract, returned twice for further work.
- Weather Map: Integrated existing OpenLayers map component, added successful optimizations to improve performance.
- Daily forecast: tab switching, CSS3 animations, Ajax loading and caching of detailed hourly forecasts
- Tide tables: progressively enhanced hierarchical page featuring High Charts graphs
- Worked closely with service layer team to define web service interfaces
- BDD (Cucumber / Capybara), TDD
- Paper Shaker (by PhotoBox) (2012 – 2013) - Front end for PhotoBox’s personalised card store
- BBC Knowledge (2010-11) - Nature, history and science websites including BBC Earth science website and Human Planet Explorer
- Linden Lab International Billing System (2010) - Scalable Django services for Second Life billing engine. Linux scripting / admin, TDD, pairing and peer code review.
- BBC Social (2008-9) - Prototyping social and personalisation features for the BBC platform. RESTful webservices, Twitter (OAuth) and Facebook integration.
- EMMA (2007-7) - feature development for medical management system which is now the Qinec platform
- Volantis Systems Ltd (2005-6) - development of bespoke Java/J2EE/Struts mobile websites
- Mintel International Group Ltd (2003-5) - Unix / web development with C++, XSLT, HTML, Python. Wrote a discussion / collaboration engine, implemented significant indexing improvements to inhouse search engine.
- Albany Software Ltd (2001-3) - Multi-platform C++ development of business software core components. Improved inhouse database query speed by a factor of several hundred.
- Gee Broadcast Systems Ltd (1999-2001) - C++ development of bespoke broadcast data display software for sports results systems and on screen timers.
- Map Thing is a route planning tool built on Google Maps and Open Street Map APIs. It displays distance and elevation information and allows for routes to be edited and routing methods to be changed.
Open Source / Community
- Contributions to various open source projects - please see my Github profile for details.
- Volunteer for Django Girls, a series of workshops aimed at encouraging more women to learn to code. I contribute to the tutorial and website, and both organise and coach at events.
- I speak regularly at conferences all over the world, on various topics. Please see my work page for full details.
- Open University (2000-2004) BSc(Hons) Mathematical Sciences - First Class Honours
- A-Levels (1997) - Mathematics, Physics, Chemistry, Biology - all Grade A
- 9 GCSEs (1995), including seven at grade A/A*