Curriculum Vitae
I'll soon be available for new work opportunities. I'm looking for primarily remote software engineering or technology roles, in either Python or Python and Go. I can be reached at michael AT python DOT org.
Note: I have now taken on a full-time role with Red Hat and am not currently seeking work.
Note: I have now taken on a full-time role with Red Hat and am not currently seeking work.
I
believe that software engineering is as much of an art and a craft as
it is a science. I believe that engineers should care about
usability, and that encompasses the whole of the human computer
interface from direct user experience to API design. I’m passionate
in my belief that testing must be part of engineering if we are to
really care about quality. I believe, and my experience has been,
that we can ensure quality in what we produce through good practises
and processes, whilst understanding that there are always trade-offs
involved. Quality means systems that work, that are stable and that
can be easily maintained and extended.
Career Highlights in a Nutshell
10+
years Python development experience. 4+ years web development
experience with Django. 3 years Go development experience, working on
a container orchestration and cloud deployment system (Juju) . Python
Core Developer with a special focus on testing and unittest. 4 years
C#/.NET experience on Windows.
Author
of mock, now part of the Python standard library as unittest.mock.
Author of IronPython in Action (2009, Manning Publications). Advanced
and Introductory Python training, on behalf of David Beazley and
primarily for HP (8 times 2013-2016).
Regular
organiser, speaker and presenter at EuroPython, PyCon UK, PyCon US
and various other conferences. Microsoft MVP 2008-2010, Python
Software Foundation Community Service Award received in 2010. Keynote speaker for PyCon India 2014, keynote speaker for PyCon New Zealand 2013.
Familiarity
with industry standard tools such as git, mercurial, postgresql and
jenkins. 3 years spent wrestling MongoDB for Juju.
My
personal obsession with computers and programming began in the early
1980s learning BBC Basic (a structured programming language on an 8
bit microcomputer) followed by 68000 assembly language on the Amiga
(which had the first consumer operating system with pre-emptive
multitasking).
Employment History
March
2013 – February 2017
Software Engineer, for Canonical, working on Juju
Juju is a service orchestration tool for deploying
and managing systems in the cloud, on bare metal and with containers.
Juju is written in Go, making heavy use of the Go concurrency
primitives, and interoperates with (amongst other things) lxc/lxd and
KVM containers and virtualisation, Amazon Web Services, Azure,
OpenStack and the Canonical Metal As A Service project. From early
2016 on I was part of the team with a special responsibility for the
networking features of Juju.
The Juju project was managed with tools including
git & github, Leankit Kanban Board, Launchpad and Jenkins for
Continuous Integration. Juju is built on top of mongodb.
2013-date
Python Trainer, for David Beazley LLC
Delivering Python Mastery (advanced) and
Introduction to Python (beginner) courses on site throughout Europe.
Courses delivered 8 times from 2013-2016.
2010-2013
Software Engineer, for Canonical, Web Development
Working as part of a team doing web development
with Django. We primarily worked on the payment service and single
sign on systems. We broke these monoliths down into microservices and
worked with our system administrators on revising our deployment
practises to enable us to rapidly deploy updates using current
versions of dependencies whilst maintaining system security. One
achievement I am particularly proud of during my time on this team
was the large scale refactoring of payment services to replace the
business logic scattered throughout the codebase with a single state
machine. This made invalid transaction status transitions
impossible, as well as reducing duplication and making the system
more stable and easier to maintain.
Both SSO and Payment Service were built on top of
Postgres and provided REST APIs as well as a web front end.
2009-2010
Freelance Developer
My largest customer has been a German firm,
Comsulting.de, working remotely developing business web applications
with Django and Silverlight. I travel regularly to Germany (about two
weeks every two months), but most development is remote including
some remote pair programming. Particularly fun was building a test
suite into the Silverlight application, so that functional tests of
the graphical front end could run in the browser.
April 2006-November 2009
Senior Software Engineer and Community Champion for Resolver Systems
Working as part of a small team of programmers,
creating a spreadsheet development environment (a programmable
spreadsheet) aimed at the financial services industry.
This was programmed almost entirely in IronPython
(for the Microsoft .NET platform) with some C#. It used Windows forms
for the presentation layer. The whole team has played a part in the
architecture decisions and constant refactoring to maintain code
quality and readability.
Because of my contacts with the Python and open
source community, I was also the team 'Community Champion'
(Technology evangelist).
We used agile development techniques like pair
programming, test driven development (both unit tests and functional
tests), continuous integration and iterative development.
This has involved some work directly with the
Win32 API, primarily for automation in the functional test suite but
also for remoting and a few other areas.
1995-2006
Sales Manager for TBS Ltd, an independent builders merchant
Managing the sales team at the Daventry depot of
TBS, including:
-
Day-to-day management
-
Sales reporting
-
Appraisal, training and personal development of staff
-
Management of performance
-
Ensuring excellent customer service from all team members
-
Working with customers on project requirements including:
-
Initial contacting phase
-
Specification and product requirements
-
Quoting and Price negotiation
-
Project management of orders including post delivery follow up
-
Negotiating with customers and suppliers
-
Monitoring the stock profile
-
Researching and advising on new products
-
Responsible for winning new business and new customers
-
Resolving problems and disputes including customer service
Education
First year of a law degree at Corpus Christi
college, Cambridge UK completed.
A-Level Maths, Physics and English all at Grade A.
GCSE Maths, Physics, Chemistry, English Language,
English Literature, Economics, History, Technology all at Grade A.
References available on request.