I am a software engineer, classically trained musician, philosophy graduate, teacher and writer.
My commercial development experience has been gained in a diverse range of industries: investment banking (Barclays Capital), two start-ups (Fluidinfo & Xmonic), media (The Guardian) retail (Marks & Spencer) and large public sector based projects (NHS England, The Council of Europe & Royal College of Paediatrics and Child Health). I proposed, coordinated and contributed to the Python programming related aspects of the BBC micro:bit project ~ a small computing device delivered to a million of the UK's 11-12 year old school children.
I can offer expertise in:
I am active in the free software community having created or actively contributed to several projects (see my Github page). I am especially active in the Python community as a Fellow of the Python Software Foundation, the originator of the London Python Code Dojo, and as one of the organisers of the annual PyconUK conference. I am also coordinating the work on the Python Software Foundation's upcoming Python in Education website. I regularly speak and keynote at conferences and other tech-related events (including PyconUK, PyCon, Europython (keynote), PyCon India (keynote), several other national PyCons (including keynotes at PyCon Slovakia and PyCon Poland), OpenTech, Techhub, PyData London and various "open source" related meet-ups). Some of my presentations can be found online and slides for my presentations can be found here. I also help organise and take part in the various NHSHackdays and programming-in-education efforts (Computing at School, Python-related teacher outreach and the education track for PyconUK). Sometimes I have fun with mobile based augmented reality and "AI" generated art (I'm active in the "algorithmic art" scene - usually in musical or textual media). :-)
I am a published author having authored Python in Education and co-authored Learning jQuery Deferreds (with Terry Jones) and Getting Started with Fluidinfo (with Nicholas J.Radcliffe) for O'Reilly and Associates. I am currently writing my fourth title for O'Reilly MicroPython on the BBC micro:bit to be published May 2017. I have contributed both technical and general interest articles to the Guardian's Developer Blog and wrote articles for the UK version of Computer Shopper Magazine as a student to help finance my MSc. I occasionally write blog posts on this site and sometimes write as a guest blogger elsewhere (such as for O'Reilly Radar).
I was elected a Fellow of the RSA in 2012 and, as such, intend to use the opportunity to promote programming education through work done at PyconUK.
Finally, I am still actively involved in music making; regularly performing in amateur orchestral concerts and occasionally appearing as a concerto soloist (I used to play the tuba professionally and I also play the piano and organ). Sometimes I am persuaded to compose and arrange music for specific occasions or with friends.
I value simplicity, compassion, openness, collaboration and fun applied to challenging technical and social problems in order to produce solutions that create value, opportunities and empowerment for my clients, collaborators, friends and users.
I'm currently doing several things:
I was part of a small agile team maintaining the Guardian's online dating site, Soulmates (the most profitable part of the Guardian).
I was involved in sprint planning, cross team retrospectives and various other aspects of agile methodology. Furthermore, I was pro-active in pair programming with colleagues, gave presentations on TDD to the wider digital development team and took part in various hackathons.
Fluidinfo is an openly writeable, shared data store based on objects, tags and values exposed via a RESTful API. It allows anyone to store, organize, query and share data about anything. For this reason, some people call it a social data platform while others have described it as, "a database with the heart of a wiki".
I was lead developer on a Django based web-application for internal use within the RCPCH for gathering assessments and reporting on the progress of trainee paediatricians in the UK. I was involved in all aspects of the project including client-facing requirements capture, writing technical reports, architecture design, coding, testing, deployment and client support. The client reported that this was the first IT project they have been involved in where the product was delivered on time, under-budget and better than specified.
I worked as a software engineer within the Development Tools team with responsibility for designing and delivering bespoke software solutions (both web and desktop based):
Other responsibilities included helping to administer and support the various services and applications that the team provided to "clients" within the bank:
I was lead developer / architect on two contracts:
Both projects used the following technologies:
In addition, I provided consultation to Bis-Web on the agile development methodology, coding standards and best practices, improvements in source control (using Subversion), testing with nUnit, Lucene search technology and the hiring / testing of potential new software developers (I wrote their practical tests and took part in and advised upon several job interviews). I also mentored some of their new and junior developers.
I was part of a small start-up team that developed a web based business tool (RM3) for strategic account managers in large multi-national businesses. In addition to web-application development I was responsible for an expert system and natural language conversational agent.
I wrote several articles and reviews on music hardware and software, Linux and IT in education whilst studying for my MSc in Computing.
I was a head of an inner-city Secondary (High School) music department and then a freelance music teacher. I organised / took part in:
Performed on / took part in:
Although I no longer work professionally I still play at a high level (I was the soloist in a performance of Vaughan-Williams's Tuba concerto in June 2008).
References available upon request.