Michael Foord - Curriculum Vitae
Past, Present, and Future
|Other:||Full Driving License|
|Date:||This document created May 2006|
|Updated:||Last update March 2010|
- Employment History
- COMPUTING EXPERIENCE
- EDUCATION. QUALIFICATIONS & TRAINING
- SKILLS. ABILITIES & QUALITIES
- PERSONAL INTERESTS
This document is available, in RTF format, from Michael Foord - CV.rtf.
I currently work as a freelance software developer, creating web applications with Django and Silverlight. The web applications are deployed on Linux with MySQL and developed on Mac OS X. I am available for contracting or consulting for both and IronPython. I develop as part of a distributed team, doing remote collaboration. Although I'm happy to travel regularly I prefer telecommute based work.
2006 - 2009 I was a senior programmer for Resolver Systems in London. We are developed a spreadsheet application using the .NET framework, written in IronPython and C#. At Resolver Systems we used agile development practises including pair programming and test driven development. I'm a strong believer in TDD as an important part of producing quality software.
I have been developing with Python since 2002 and with the .NET framework since 2006.
I am the author of IronPython in Action, for Manning Publications. In 2008 I was made the first Microsoft MVP (Most Valued Professional) for Dynamic Languages.
I am a Python core developer, mainly working on maintaining standard library modules like unittest. I'm also a member of the Python Software Foundation and involved with organizing PyCon in the US and EuroPython / PyCon UK.
I'm a strong believer in both community and open source. Examples of my own open source work can be seen at voidspace.org.uk/python/modules.shtml.
|From - To:||November 2009 - Date|
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.
|Job Title:||Senior Software Engineer and Community Champion|
|From - To:||April 2006 - November 2009|
|Hours:||32 Hours Per Week|
Working as part of a small team of programmers, creating a spreadsheet development environment (a programmable spreadsheet) aimed at the financial services industry.
This is programmed almost entirely in IronPython (for the Microsoft .NET platform) with some C#. It uses 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 am also the team 'Community Champion' (Technology evangelist).
We use agile development techniques like pair programming, test driven development (both unit tests and functional tests), continuous integration and iterative development. At the time of writing Resolver is thirty thousand lines of production code and one hundred and twenty thousand lines of code in the test framework.
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.
|Job Title:||Community Liaison Worker & Service Development|
|Employer:||Jesus Army Charitable Trust, Northampton Jesus Centre|
|From - To:||2004 - November 2009|
|Hours:||8 hours per week|
- Responsible for the development of the centre and its integration with the local community
- Responsible for the expansion of the range of groups and activities run at the centre
- Nurturing contacts, liaising, interacting and communicating effectively with the local community, businesses and organisations
- Policy and development work
- Supporting volunteers in developing and running new activities
- Responsible for preparing reports for the management committee
- Responsible for monitoring and evaluating the client service statistics
- Responsible for co-ordinating the promotion and publicity of the centres services
|Job Title:||Sales Manager|
|Employer:||TBS - Independent Builders Merchants|
|From - To:||1995 - April 2006|
|Hours:||32 Hours Per Week|
- 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
|Employer:||Independent Financial Adviser/St.Albans|
|From - To:||1992 - 1993|
|Hours:||40 Hours Per Week|
Telesales for a Pensions Adviser, including:
- Cold calling
- Follow up calls
- Sales and marketing
I am passionate about computers and I possess excellent technical ability. I have been using computers since the days of the BBC B 32k (early and mid eighties). I even messed around designing my own computers with the Z80 processor and single board computer designs. I did some assembly language programming on the Amiga (the Motorola 68000 chipset), this was my first experience making operating system calls. I learned HTML, to manage my own website, several years ago.
In 2002 I started to learn Python for a project I was involved in and fell in love with the language.
I have worked with Resolver Systems, with IronPython and C#, since 2006. I have learned a great deal about project architecture and have increased my appreciation of the importance of testing, code quality and maintainability.
Technologies I have used include:
- Object Oriented Programming
- Programming styles including:
- Structured application development utilising MVC (plus observer and command patterns)
- Functional programming
- Event oriented Programming
- Stack based programming
- Testing (including Test Driven Development and agile methodologies)
- Web development with Django
- Source Code Control (Subversion & Mercurial)
- Unicode and character encodings
- Text parsing and processing
- Technical writing: documentation, articles, and tutorials
- Parsers and grammars (mainly with PLY)
- Windows Forms, C# and the .NET framework
- wxPython and Tkinter Python GUI toolkits
- Databases (some T(SQL))
- reStructured Text markup (including custom writers)
- Wix, MSBuild and py2exe
I have spoken on the subject of IronPython at many conferences and events. In 2008 I spoke at nine conferences. Conferences I have spoken at include the following:
- PyCon (Dallas in Texas, February 2007 & Chicago 2008 / 2009 & Atlanta 2010)
- PyCon UK 2008 and EuroPython 2009
- QCon London 2009
- ACCU Conference, Oxford 2008 & 2009
- Expert Zone Developer Summit (Stockholm 2008)
- Microsoft TechEd Conference (Barcelona, November 2007)
- Mix UK Microsoft Developer and Designer Conference 2007 (London)
- Developer Day 6 (Microsoft Community Event, Reading 2007) and DDD Ireland (2008)
- Academic Student Conference (Krakow in Poland, March 2007 & 2008)
- RuPy, Ruby and Python Conference (Poznan in Poland, April 2007 & 2008)
As well as writing IronPython in Action for Manning publication, I've written various articles and tutorials on Python. (See the articles section of my website for examples).
My article on ConfigObj (an configuration file parsing library) was published in the (print) publication Python Magazine.
Some of my writing has been published by PyZine the online Python Journal. This includes :
- An article on writing web clients in Python
- An article on writing CGI (web) applications in Python
- An article on Unicode and character encoding issues
A short article of mine was published in the UK MSDN Flash (Microsoft Developer Newsletter): Getting Started with IronPython. This was one of the first articles they published by a non-Microsoft employee.
I currently manage several open source projects. Almost all the code I have produced is available for download from my website.
This Python module presents application configuration data as a single object. It reads and writes config files using an ini style syntax - with single line commands (methods). Sections can be nested to an arbitrary depth and members are accessed using normal Python dictionary syntax.
It has many powerful features (value substitution, integrated type checking of config file entries) - but its main feature is that it is very easy to use.
unittest2 - http://pypi.python.org/pypi/unittest2
A backport of the new features in unittest in Python 2.7 for earlier versions of Python. New features include test discovery, shared fixtures, many new assert methods and command line options.
A mock library for testing. Inspired by the testing patterns used at Resolver Systems. It provides utility functions / objects to assist with testing, particularly mocking and monkey patching. Based on the action -> assertion pattern of mocking rather than record -> replay.
Try Python - http://trypython.org
An online Python tutorial that runs in the browser using IronPython and Silverlight.
|Name of Institution||From - To||Qualifications||Grade||Date|
||1993 - 1994||
BA (Hons) Law
||1990 - 1992||
||1990 - 1991||
||1986 - 1990||
||1988||Amateur Radio Exam||Credit||1988|
||1996 - 2005||
- Committed, intelligent and quick to learn.
- Confident, clear and effective communicator at all levels
- High degree of customer care skills, including quality of service
- Excellent written (e.g. reports, essays, letters) listening, presentation and verbal skills (both telephone and face to face), including an accurate eye for detail
- Excellent relationship building skills, with the ability to obtain individuals trust quickly
- Good knowledge and experience of using non-verbal communication systems,
- Excellent networking and negotiation skills
- Willingness to learn new skills and develop myself, my knowledge and experiences
- Prioritising and multi-task planning of work load
- Information resource and research, ranging from committee papers to advice
- Organisation and administration of training, campaigns and events
- Self-sufficient and self-reliant with office administration for myself and others
- Good time, office & diary management, including flexibility
- Applying a systematic approach to solving complex problems
- Developing and implementing administrative procedures and policies
- Perform well under pressure and enjoy a challenge
- Ability to identify my own training needs
- Ability to play any role within a team and I have worked in a range of positions where teamwork is essential and would be an asset to any development team
- Excellent at working on my own initiative, although knowing when to ask for help
- Strong skills such as:- initiator, motivator, proactive approach, problem solver and a finisher
I enjoy meeting, mixing and socialising with new people. My past-times include Python development, and writing, as well as keeping up-to-date with current affairs.
For buying techie books, science fiction, computer hardware or the latest gadgets: visit The Voidspace Amazon Store.
Last edited Mon Mar 29 18:28:24 2010.