Dr Nicholas William Clark

Home:103 New Street Hill
Nationality:British Citizen


Perl (12 years)
I am release manager for Perl 5.8.x, responsible for 6 stable releases to date, with a world class understanding of the Perl internals. I devised the adaptive hashing algorithm Perl uses to combat algorithmic complexity attacks, and wrote the 64 bit integer preservation logic for Perl 5.8. I have refactored the data structures of Perl to use less memory without compromising source compatibility, and the C code to be both simpler and smaller without compromising functionality. I can interface C and C++ to Perl using any of XS, Inline and SWIG. I have excellent grasp of all aspects of Perl programming, and can take any existing Perl code and run with it. As well as official Perl 5 releases, I have contributed several modules to CPAN. My contributions to the Perl 6 project have earned me commit rights to its source tree.
C (12 years)
I write reliable, portable code which runs on multiple Unix versions, MS Windows, MVS etc. I understand areas which can give compatibility problems, such as 32 bit/64 bit issues, endian-ness, structure alignment, and integer overflow.
C++ (4 years experience)
I write OO code using the STL, exceptions and templates. I can maintain this discipline without external constraint - the 60,000 lines of C++ in my PhD project cleanly divided the problem into three sections, whose class hierarchies communicated solely through public interfaces.
SQL (4 years experience)
I have used the Perl DBI with Oracle and MySQL, and ProC to embed SQL in C.
Other languages
Public speaking
I wrote and presented half day tutorials on optimising Perl at European Perl conferences in 2003 and 2005. I have given talks on Perl and Ponie at several European conferences from 2002 to 2005, and at in the United States at OSCON in 2004 and 2005.
Programming environments
I have worked on Linux, OS X, Solaris, FreeBSD, Irix, AIX, HP-UX and others. I run Linux, FreeBSD and Irix systems at home. I've used pthreads, sockets and IPC on Unix directly; others have used my code unchanged on Windows. I have implemented networking protocols such as HTTP, FTP, SMTP. I am familiar with several debugging and validation tools (such as gdb, valgrind, gprof, gcov) and several version control systems (CVS, Perforce, Subversion, RCS). I can write and debug Makefiles and shell scripts.


The Perl Foundation
Development Grant Recipient; December 2005 - May 2006

(C, Perl, Linux, FreeBSD, Solaris)

I have worked on improving the core Perl 5 distribution, partly self-funded, partly with a $11,000 grant from The Perl Foundation. I reduced the memory footprint of core data structures considerably, fixed complex long standing bugs, and completed many projects from the core's TODO list that no-one had felt able to start.

Senior Developer; March 2004 - November 2005

(Perl, C, MySQL, Postgres, Linux, AIX)

I maintained the backend code used by the websites Fotango run for Canon Europe, code written in Perl, MySQL and Postgres. Often this involved troubleshooting legacy code, or inserting new functionality into it with minimal changes. I was principal developer of Ponie, the project to re-write Perl 5 to use the Parrot virtual machine. This involved intimate knowledge of the Perl 5 implementation, and creative flair with the C programming language, to be able to re-implement Perl's legacy C APIs without breaking existing C source code.

Taylor Nelson Sofres
Senior Systems Developer; March 2002 - Feb 2004

(C, C++, Linux, Perl)

I developed persistent daemons, batch and network transfer systems to process data streams from audio capture devices used in TV ratings measurements. My code could match samples against 500M of reference data in under 15 seconds. The systems had extensive tests - using CPPUNIT to test C++, and a Perl harness to test the C code.

Consultant; October - November 2001 (contract)

(Apache, Linux, mod_perl, Perl, Solaris)

I wrote the front end to the BBCi search, getting the search project back on schedule for the BBCi launch. The front end queries several backend servers in parallel using non-blocking socket routines to give fast responses even when some servers are sluggish.

Copernicus Global Billing Systems
Developer Engineer; May - September 2001 (insolvency)

(Apache, C, Linux, Oracle, Perl)

Copernicus were a start up billing Application Service Provider. They provided a web based front end written with Oracle and Perl using the DBI and an in-house templating system. I interfaced Perl to the C language API of Quick Address World, worked with Datacash's credit card authorisation and UK, Dutch and Spanish direct debit systems.

Tangleweb Consultants
Software Developer; May 2000 - March 2001 (insolvency)

(Apache, C, Linux, mod_perl, MySQL, Perl)

I designed and implemented a Perl/MySQL system to case manage customers' e-mail, initially for customer support systems. The backend used VERP (Variable Envelope Return Paths) to handle replies efficiently; the front end was web based, using Mason running on mod_perl. I worked on Instant Messenger systems, including stability and load testing Jabber servers, modifying its C source where necessary.

Software Developer; July 1999 - May 2000 (insolvency)

(Apache, C, FreeBSD, Oracle, Perl, Solaris)

I worked on backend projects, bridging between the sysadmins and the web development team. I automated the product image QA system, making it cross check the webserver with the Oracle database, generating a concise morning e-mail report on any problems. I automated the ad-hoc process for putting product images live. Developed a server load monitor which restricted new sessions to prevent site overload. My report to management on how to make the site smaller formed the basis of the post launch optimisation strategy. I helped implement many of my recommendations, including writing a stripper program to remove verbosity from the InterWorld application server templates - something not even InterWorld had attempted. I developed a server side templating system which baked static files, to replace the client side JavaScript implementing the multi-language site.

Global Internet
Systems Development Engineer; April - June 1999

(Apache, C, Linux, MySQL, Perl, Solaris)

I conducted internal research measuring network bandwidth for service level agreements, quantified bottlenecks in the customer modem dial-in/authentication stages and wrote customer facing CGI scripts in Perl to show virtual ISP partners the state of user sign-ups.

Veritas DGC
Support Programmer - September 1998 - January 1999

(C, csh, FORTRAN, Oracle, Perl, ProC)

Veritas DGC are one of the top 5 seismic processing firms. I found and fixed bugs in their in house geophysical applications (written in a mix of C, FORTRAN, csh and Perl). I worked on the design and implementation of the interface between the job scheduling and processing programs and the Oracle database.


University of Liverpool 1994-1998
PhD - "Three dimensional structural restoration of extensional fault displacements using elastic dislocation theory" (Geophysics)
University of Cambridge 1991-1994
B.A. - Natural Sciences
Colfe's School, Lee, London. 1982-1991
4 A levels, 10 GCSEs


An active volunteer on the Bluebell Railway, I am part of a group doing special projects for the Signals & Telegraph and Carriage & Wagon departments.

I enjoy improvising music on the piano.

This document is copyright Nicholas Clark 2007. Redistribution of this document or derived works is not permitted without written authorisation.

Valid HTML 4.01!