< email > home > CV
An end-to-end software developer working on requirements gathering and design through to implementation, test, and release. 4 years software tools and automated test at Google, 2 years team technical lead during 9 years redesigning and administering large-scale software development and testing environment; 2 years C++ programming; 4 years technical lead in multimedia with 2 years as a Unix system administrator, web designer and CGI programmer.
I am currently looking for opportunities.
I enjoy data conversion - from database and simple file formats to compilers, although I've had more experience with the former. I love Perl, and I enjoy small-scale programming, currently Android projects. I suspect embedded would appeal.
|Date of birth:||July 1970|
|Clean driving licence, but reluctant to drive|
|Preferred location:||Within 1 hour's commuting distance of Watford|
Software Engineer in Test: December 2006 to March 2011
I accepted a position at Google working on software tools and automated application testing, latterly in mobile. Projects included delivering snapshot behaviour in the Android SDK emulator, fine-grained Java coverage integrated to Google's monstrous build/test infrastructure, automated Android screen capture, constructing standardised build/test systems for Android and Symbian/WindowsCE projects, mentoring projects in adoption of TDD, and devising and deploying server-side load testing.
Software engineer: January 2001 to November 2006
I resumed work in the tools group to support the transition of the product to an in-house development environment with principle responsibility for the server's regression test system, technical lead for the deployment of the regression tests to all the other development sites, leading the creation of a central testing database/dashboard, ongoing streamlining and improvement to the developer experience, and reviving the Java client's testing. I was heavily involved with the Linux port.
Specification, design, and implementation of various projects within the core product libraries.
At my request, UGS moved me to `proper' programming (with occasional environmental work thrown in), and I developed in C++ for two years. The projects included specialising a general object comparison system to make the existing comparison interface user-extensible, and a general system for translating internal datastructures into various industry-standard file-formats, and writing those plug-in modules.
I've been pleased to notice that I've had no need to change my programming aesthetic in order to program C++ in earnest, finding its encapsulation mechanism particularly pleasing and natural.
Tools Group Technical Lead: November 1997 to January 2001
Two years as the technical lead during three years in the iMAN business unit's tools and environment group. The primary tasks were reengineering, maintaining, and administering version control and software-development tools and resources, updating the various monitoring utilities, setting policy, and driving the periodic inter-site code merge process. I was required to travel internationally to install and update remote sites.
The role initially involved rewriting source control system customisations (ClearCase) in Perl to make them work on NT, and establishing the NT porting environment in Cambridge. I also ported the Unix regression test system to NT, and visited the Californian site to establish regression testing there and to make the system more easily available to the other three sites.
I replaced the distinct Unix and NT builds with a single much faster and more maintainable solution, retrofitted to the existing front ends. The new NT build system also involved deploying Microsoft's compiler-based symbol export mechanism, requiring widespread automated code analysis and editing, and the correction of several minor modularity and class hierarchy errors.
ClearCase administration involved training developers in ClearCase, monitoring resource usage and system behaviour (for which I developed additional web and email tools), deploying ClearCase upgrades, and liaising with Rational Software for various issues. I was also required to install and port the development environment in new development sites during trips to Detroit, Cologne, and Ann Arbor.
With the additional sites, and the increased breadth of the product, I realised that the tools group needed direction. Since I had automated much of my routine work, and had the best technical grasp on the overall tools area, I proposed and was promoted into a new team leader role to identify and document internal group processes, further automate mundane tasks, liaise with development managers to simplify tools use, to encourage early involvement of the tools group in new projects, and to help enforce development policy. In particular, the additional sites and heavier customer demands required a more flexible forking/merging protocol with standarised configurations and ticklisted procedures, including web-based forms reporting of fixes and projects in each merge.
September 1997 to November 1997
While looking for my next job, I refreshed my understanding of OOA and OOD technologies (the Booch method), as a precursor and adjunct to familiarising myself with Java and bringing my C++ skills up to date.
Chief Technical Officer: October 1993 to August 1997
I developed a comprehensive set of library routines which underpinned virtually all the presentation software subsequently written and sold by the group. For my final two years I was also the Unix systems administrator with responsibility for all programming and major website structuring decisions.
I implemented a games selector for the Commodore CDTV and CD32 - a menuing system allowing selection and execution of up to 300 games and demos on one CD.
I rewrote the pub entertainment system Kwizoke* for improved performance and multiplatform support. During this project I developed much of the multimedia and scheduling library, and the internal tiny Forth interpreter, which were utilised and further improved in the group's subsequent presentation software.
I completely designed and implemented Kwizoke Plus, a one-CD karaoke system: from database handling and MIDI file pre-processing through to the front-end selection and playing program. Strict real-time requirements were met using multithreaded programming and shared memory datastructures to implement an elegant lyric-presentation algorithm. I discovered a bug in the OEM's CD ROM filing system, so designed and implemented a dedicated format which also sped access, helped conceal the data, and streamlined the indexing. This involved writing a ROM image builder and interacting with the CD ROM device driver in the karaoke player. I later designed a dongle based around a PIC embedded controller to overcome an emergent pirating problem. I believe the company is now up to 3000 songs on the one CD.
Thomas Cook Holidays contracted the company to develop an internal staff training system for sittings of 100-200 staff. This product was delivered annually for 3 years and during that time the system was expanded to include increasingly advanced features such as animation and CD audio.
I spent 3 months re-implementing the Karaoke system under Linux. Investigations for product customisation and real-time issues gave me a good understanding of the core Linux kernel boot and scheduling system.
Multi Media Machine started offering Internet web services late in 1995, and I was responsible for all technical activities, including technical Point of Contact with the company's Internet provider Pipex and later, also for InterNiC. My responsibilities included system administration of the Internet server machines, bulk HTML production from other document formats via scripts, and all Perl and CGI programming required to maintain these web sites.
I set up dial-in Internet Service Provision, initially using the existing Unix systems, but later with a dedicated IOLAN+ communications server. I also wrote a program to simplify the creation of new virtual web/email servers, a task subsequently adopted by the sales department for rapid fulfillment.
Some of the sites required CGI scripting: I wrote a reusable script to provide database integration and shopping baskets for Bolton Libraries, Clay Pigeon Shooting Magazine, and all of our other Internet/intranet databases; and a generic response-checking forms system based on CGI and extended HTML. I also wrote several email automata to accept database updates from clients.
I wrote patches for a number of the systems programs and servers, including a patch to enable the web-server to directly interpret server-side image maps in HTML files, and patches to implement the login/ftp access control policy required by Thomas Cook Holidays. During migration of our server systems to a different Linux distribution, I rewrote these latter into a Solaris-style Pluggable Authentication Module (PAM) which was released into the public domain.
As an Internet designer/administrator I have worked with Thomas Cook Holidays, Greater Manchester Police, CPSA, Bolton Institute, Bolton Libraries and numerous local firms.
July 1993 to November 1993
Basic grounding in Novell networking and an industrial placement which led to permanent employment with Multi Media Machine.
Contract programmer: May 1993
4GL accounts module.
September 1991 to February 1993
PGCE - Teacher Training with specialisation in Physics. I realised my skills were mismatched to school teaching and withdrew from the course.
September 1988 to June 1991
BSc(Hons) Computer Science
Programming Officer: Summer 1990
Redbridge Council hired me to assist with the maintenance of the Unix systems and with other in-house activities. During this time, I installed ICL's DRS-NX Unix, helped administer the tendering process for a new software system, and helped with miscellaneous programming tasks.
Programmer: Summer 1989
Datathorn Systems hired me as a contract programmer to write a machine code driver to pre-load Epson GQ3500 and GQ5000 printers with bitmap images and a GUI front end for the driver. This enabled primitive word processors to include graphics in documents.
September 1981 to June 1988
Advanced levels: 'A' Mathematics, 'B' Physics, 'C' Further Mathematics
Employment is a two-way relationship. I have a strong sense of loyalty and expect the same in an employer - represented by goodwill, honesty, and respect on both sides.
Having worked in a family business as sometimes the sole programmer on a dreadful operating system (AmigaOS), and a larger business with a lot of code older than fourteen years on multiple platforms, and Google, I find I vastly prefer working as part of a team, I hate poorly-documented code (particularly when the API is also poorly-documented), I hate prototypes that magically turn into product, I like systems architects that have the technical respect of their programmers, and generally consider OO and TDD to be my favorite paradigms.
Any job I move into should be team-based, staffed mostly with graduates, and ideally treat Microsoft Windows as just another platform (if it's there at all), have reasonable regression testing, good documentation, a house coding style, code reviews, employee reviews, and not restrict trivial environmental things like mail/web client. I'd prefer a relaxed dress code.
Cycling is my preferred mode of transport, although I will use the train if need be. I don't want to have to drive regularly.
Favourite technical book: Design Patterns; Gamma et al. [Addison Wesley]
Favourite fiction authors: Lindsey Davis, Alan Dean Foster
Favourite sandwich filling: Houmous
Mike Reger UGS TeamCentre 46 Regent Street Cambridge CB2 1DP
< email > home > CV
|This page last changed Fri Mar 25 12:22:57 2011|