John Alden
With over 20 years of programming experience and more than 10 years of web development, wide experience of technical management and software systems architecture, John's areas of expertise include:
- Technical project management of internet-related projects
- Technical solutions architecting
- Software development in Perl, PHP, Actionscript(Flash) and Javascript
- Relational databases including MySQL and Oracle
Technical skills
Technical skills (years of practising experience)
| Programming: | Over 20 years programming experience; 10 years of OOP; several years doing test-driven development. |
|---|---|
| Languages: | Perl(7) [CPAN author], Javascript(5) [JSAN author], Actionscript(1), XSLT(2), C++ incl STL(4), C(5), VB(2), FORTRAN(5) |
| Databases: | Over 10 years experience of relational databases including: MySQL (4), Oracle(4), Informix(2), MS Access(3), SQL server(0.5), Revelation & PICK |
| Unix: | Over 10 years experience developing on unix (mainly solaris and linux), writing shell scripts etc and some basic sysadmin (e.g. compiling/installing software, configuring startup scripts, installing custom mail handlers, exporting/mounting network filesystems, software RAID etc) |
| Windows: | Developing C++ with Visual Studio(4), COM/ATL(2), MFC(0.5), ODBC (C/C++ [1]), ADO (C++ [1] & VB [2]). Some Win32 scripting in ActivePerl, WSH and batch files. Over 15 years experience using windows. |
| Internet-related: | HTML (9), XML Schema(0.5), Perl CGI/mod_perl(6), C++ CGI (3), Apache configuration (6), MS ASP & VB script (3); very familiar with HTTP - written numerous clients; experience of programming FTP clients and Email processing |
| VCS: | CVS(5), Sourcesafe(0.5), Allchange(1) |
Employment history
Jan 2007-current: Freelance technical consultant and web developer
Recently this has included:
- Technical design (e.g. co-designing a layered component architecture for user-generated-content suitable for site aimed at young children, numerous API designs)
- Project planning (resource estimation, budgeting, risk planning, timelines etc)
- OO Perl programming (e.g. scripts to generate multilingual sites from Excel spreadsheets and serve KML dynamically to google earth, or daemon processes to trickle content scraping into a MySQL database)
- OO PHP programming with and without the Zend Framework to create web services and client libraries
- Actionscript programming (e.g. a suite of client libraries for interfacing with the BBC's server-side applications)
- Mentoring developers (software engineering for php+flash developers and cross training a realtime systems programmer for web development)
Autumn 2005-Xmas 2006: Team leader of software engineering and technical project management teams, BBC Learning and Interactive
- In charge of team of 9 software engineers and a team of 8 technical project managers - responsible for growing both teams from about half this size (recruitment, training, mentoring and general line management).
- Defining the role of the technical project managers and standardising working practices. Setting up some software product management for some of the larger software systems and toolkits (using agile approach similar to SCRUM).
- Managing departmental CPMS (hardware+software) and bbc.co.uk server software strategy including managing budget. Managed a number of departmental infrastucture upgrades (e.g. Oracle 8 => 9 upgrade, Linux upgrade to RHEL4, build/migration to new DB server).
- Adviser for design of a number of bbc.co.uk infrastructure projects (new app server environment, shared filesystem for user-generated content).
- Open Source release of over a dozen Perl distributions to CPAN. This involved a fair amount of hands-on code refactoring, measuring and improving unit test coverage, reviewing and improving documentation.
- Designed and implemented (in Perl) secure file I/O and email components as a standard for bbc.co.uk.
- Implemented shell+Perl scripts to trawl gigabytes of web content (incrementally) and webserver access logs to generate a range of nightly reports for bbc.co.uk (application usage, broken links, etc).
- A few bits of C programming (e.g. adding conditional comment support to the jsmin javascript compressor and writing an apache module to emulate the bbc.co.uk geo-ip service in development environments).
Summer 2001-Autumn 2005: Software development team leader, BBC Interactive Factual and Learning
Main responsibilities:
- In charge of team of 7 software engineers - responsible for recruitment, training, mentoring and general line management.
- Setting up a software engineering process (source control, unit/integration testing, automated builds, documentation, release management).
- Devising the server-side software strategy for the BBC's factual and educational websites and providing content management tools for a web development department of ~100 people, in the most cost-effective and maintainable way possible.
- Designed and produced a toolbox of a dozen reusable server-side website components (quiz engine, database search engine, personalised storage, content upload etc) which are reused all over bbc.co.uk.
- Infrastructure design, purchase and administration of departmental unix infrastructure for content production and software development (~10 solaris & linux servers).
- Hands-on programming mostly in Perl (modules, cmdline scripts, CGI/mod_perl scripts, unit tests) with Oracle and MySQL databases. A few representitive examples of things I personally implemented include the department's batch-processing system (which all web publishing goes through), QA frameworks for the web content and software repository, a database connection caching/recovery module used widely on bbc.co.uk and a few mod_perl apps for bbc.co.uk. Some MS Access UI work for Oracle DBs. Some javascript for web user interfaces.
- Pioneering the BBC's Perl Open Source effort - getting a release process agreed across the BBC and releasing the BBC's first perl modules to CPAN.
- Set up departmental intranet: XHTML content, transformed via XSLT with post-render caching for improved performance. Wrote a lot of the department's technical documentation myself.
- Giving departmental seminars and producing documentation for non-technical audiences.
- Assisting tech teams across the BBC with troubleshooting their applications on bbc.co.uk.
2001: Freelance development of a web-based adventure game for the BBC Walking With Beasts web site (mod_perl).
Nov 2000 - Summer 2001: Software Engineer, BBC Interactive Factual and Learning- Perl CGI/mod_perl programming with Oracle on Solaris.
- Reengineered, optimised and ported the BBC Education user registration and activity tracking system to mod_perl.
- Designed and implemented a generic personalisation system to complement the above.
- Set up a HTTP fetching and caching system for SSI content on the BBC mod_perl servers (used by virtually every BBC mod_perl script).
- Set up departmental CVS repository and software deployment mechanism using make.
2000: Implemented and co-designed a web-based adventure game for the BBC Walking With Dinosaurs web site. Originally Perl/CGI later ported to mod_perl.
1998-2000: Software Developer, Oxford GlycoSciences.
- Designed and lead programmer on the company's flagship data analysis software package for windows NT - C++/ATL & VB Activex controls for statistical and graphical analysis.
- Image processing data pipelines - Perl programming with Informix on Solaris.
- Various web-based visualisation and data-mining tools (MS ASP & C++ CGIs on windows using GD for graphics, Perl CGIs & Informix web datablade on Solaris).
1997-8: Web site design, authoring and management for Linacre College & Avex UK. The sites were database-driven using MS ASP and had some C++ CGI programs for e.g. email/fax gateways. Since neither client initially knew what they wanted, the jobs involved a great deal of imagination, prototyping and flexible designing.
1995-1998 [Doctorate]: Developed electrochemical simulation software (involved mixed-language linking of C++/C/FORTRAN code on Unix). Included a web interface (C++ CGI) and visualisation (via callable IDL - a C graphics API) output either to a web browser or to X-Windows as the simulations ran. Lots of emphasis on profiling/optimisation/algorithm design. Also wrote custom simulations for many experimental scientists - this provided valuable experience in requirements capture. Built a simulation server (PC running Red Hat Linux, C++/C/FORTRAN simulation code and an apache web server) so simulations could be demonstrated in real-time over HTTP in presentations etc.
Summer 1995: Developed a data analysis software package (written in C++ using MFC for Windows 3.1) for a new piece of electrochemical apparatus (included charting data and interactivity e.g. zooming).
1991: Developed an interactive presentation of health awareness data for Cornwall County Council written in MS Excel macro language.
1989-91: Wrote a product information labelling/stock-control/double-entry accounts system for my father's Garden centre. The database was written in Revelation, mostly in PICK BASIC with reports in PICK ACCESS language.