Contact: email@example.com or +1-415-938-7428
Cambridge University: MA Maths, Computer Science, EIST (Electronic and Information Systems)
Ruby (1.8 & 1.9), Rails (3.1, 3.2)
Perl (4.036 - 5.14)
HTML (v2.0 - 4.01
& XHTML 1.0 + CSS2)
SQL (see below)
Unix tools: sh, sed, awk, etc
ML, Prolog, C++
Linux (Debian, SuSE, RedHat), SunOS 4, Solaris
I have been professionally hosting Debian-based servers since 1999.
MySQL & PostgreSQL
Badger & BountySource
San Francisco, US
Primarily responsible for data cleaning and converting partner datasets into our schema. Python, Django, PostgreSQL, Google Refine. Exposure to redis, sentry, EC2, Elastic Search.
(née Google Refine; Open Source)
Contributor to the mailing list and codebase committer. Java, Python, DOS(!). Presented on Google Refine at OpenTech 2011.
Chief software architect and developer then CTO designing news aggregation and analysis. Perl, Catalyst, DBIx::Class, PHP, PostgreSQL, MySQL, XML
Developer on team for internal publishing/programme modelling project. Perl, Catalyst, ORM, SQLite
Lead software developer implementing Apache/mod_perl XMLRPC proxy
Took on Proboscis's several sites onto a dedicated server as my largest hosting client.
Migrate LDAP services from Omnes to Schlumberger; build, install, security, backup for LDAP Solaris servers; advanced mail server development & configuration
a.k.a. Archaeology Section
Joined this UK startup before launch initially to produce a system to create templated iPad, Playbook, and Android applications. Took on responsibility for data 'ingestion', converting partner (gallery, museum, art library) datasets into our database. Became involved with the OpenRefine open source project: authored a OpenRefine Python client library and am now a committer on the project after submitting several accepted patches. Python, Django, Perl, sh, PostgreSQL, EC2.
A thoroughly fun and challenging year or so off in California learning to fly. Also part-time with Investor Dynamics (see below).
Took over as lead architect, developer, and ultimately CTO for a media analysis start-up implementing software to track perception of companies and securities and their peers/competitors. Initially moving Borland C++ application online with Perl and PHP. Back-end software in use is MySQL 5, importing and generating XML to drive a variety of incoming and outgoing feeds. Perl, Catalyst, DBIx::Class, git, process definition, code review, team lead.
Developer role assisting in the development of next-gen Programme Information Pages internal project. Scope included ground-up implementation in Perl interfacing and processing existing data sources. Working in team of eight, including five other developer peers. Perl, Catalyst, ORM, SQLite.
Took over as lead server developer for the Urban Tapestries cityspace locative annotation research project, implementing a new XMLRPC server API as a mod_perl/Apache proxy for the existing Java server. Developed knowledge of Symbian C++/UIQ emulator environment, GIS and GPS theory, tomcat, Java. Assisted the phone client developer with image manipulation perl scripts.
Took on Proboscis social research thinktank's several sites onto a dedicated server as my largest hosting client teaming up with iTransact to provide power/pipe/ping in Docklands. Migrated several multi-faceted sites running a wide variety of web tools and provide ongoing support.
Corrobbo is an online project execution application designed to assist the process of matching briefs with proposals, threaded discussions, polls, managing teams, creating billing groups, through to completion and sign-off. Corrobbo is currently a two-person team of which I am responsible for the every technical aspect from architecture through to load testing, e-commerce integration, and deployment. A demo is online (mail for password). Corrobbo's technology is based on perl, Apache, and PostgreSQL. The SQL usage and schema is quite sophisticated.
In October I integrated a collection of leading edge Open Source software to create a spam-filtering system equipped with a Web-frontend. The frontend enables users to register, set up domains, set up email users, manage accounts, and examine, delete, and send on caught spam or miscategorized spam. It is currently operating for about 40 users and domains. Its development has halted while working on Corrobbo.
Interoute commissioned me to set up an environment using Perl and sh that would monitor a collection of heavily secured servers. The servers were configured in a tree like structure, some accessible only from others. The system I conceived deploys monitoring agents that report to a central Big Sister (an open source monitoring package) server using SSH & autossh via a remote port forward. The entire deployment was managed through a makefile for utmost administrative simplicity.
I was contracted to build a Web and command line-based tool for monitoring Toyota.com's various Web servers' uptime and the sites' page integrity. It employed a series of tests that could be configured and monitored online behaving as a largely autonomous flexible extension to the Big Brother monitoring suite.
I then enhanced this to enable an administrator to input a series of pages in a form which the monitoring software could "replay" on a schedule and ensure the returned data was correct. The input system consisted of a moderately complex proxy cache so that the user need only 'surf' a site and all the underlying transactions & cookie transfers were automatically recorded. All code was Object Oriented Perl and made heavy use of existing Perl modules (in particular HTTP::Daemon and LWP)
I added maildir support derived primarily from qmail source to an existing Open Source POP daemon, tpop3d in C. Additionally, I wrote software that enabled exim the mail server to communicate directly with an Oracle 8i database for virtual mail routing information that was shared with tpop3d, both via those programs' embedded perl interpreter facility.
This project involved familiarizing myself with two medium to large-sized Open Source code bases, and sufficient DBA knowledge to create a scripted install and deployment for a Oracle8i development database and schema for the project.
In collaboration with another developer/designer, Matt Gorbet, I was commissioned to create a Mac OS X client and Java server to track customers' mouse movements as they used the Macs in-store This data was sent to a server that would be used as part of a in-store visualization piece Herman Miller RED have projected in their recently-opened New York store.
The project was executed against an extreme deadline: completion from scratch in approximately ten days during which time I learnt the then barely-released Mac OS X, Project Builder, Interface Builder, the Cocoa Framework (a.k.a. Yellowbox), Objective C and enough low-level BSD Ethernet network programming (I linked some Open Source code from the Darwin bootp client project) to allow the client and server to perform IP autodiscovery of each other with no configuration files.
Herman Miller RED in-store -- you can see the visualization on the back wall. The Macs in the foreground are running the client mouse tracker.
ICI is a non-profit that curates and funds touring exhibitions. I was involved with their first Internet-focussed endeavor, Telematic Connections: The Virtual Embrace, an exhibition consisting of eight pieces that have a networked (`virtual') and physical component. I designed and built the network: routing server, managed switch, UPS, rack, CAT5 cabling. The server is a Debian Linux server running DHCP, NAT, QoS firewall, Apache, caching DNS and ipchains port forwarding (to enable artists external access to their pieces). I spent considerable time helping artists set up pieces which included Windows NT network debugging, Real Video encoder configuration, and assorted electrical duties. I continue to oversee the server remotely.
I provided consultancy on Apache, Perl and overall web architecture for a Peninsula start-up. I built a demo news-publishing system that provided drop-in stylesheets, graphics & templated HTML. The news and company data was stored in an Oracle8i database accessed using Perl's DBI.
I moved to Monterey/Carmel in May 2000 to work for a mortgage company where I hacked Apache/mod_perl (content handlers) and built the company's entire IT infrastructure: two Linux servers providing production and development Web, DNS, email, secure IMAP, FTP, disk backups, security, LRP-based firewall. In my capacity as software engineer I used the Template Toolkit and MySQL (with an eye to migrating to Oracle) to create the foundation of the RAD Systems vision. As team technical lead I was responsible for providing direction on methodology & process both in the management and engineering realms.
In October 2000 I was relocated to C&W USA as a result of the Omnes joint venture between Schlumberger and C&W being dissolved. My first project there was extensive modification of a Perl-based packaged ISP solution that C&W were installing in their Bermuda regional office. My second project was being taught scripted Windows NT Terminal Server installation and configuration. As this was a fledgling company developing business relations I spent much of my remaining time helping other employees with UNIX use and administration and teaching myself XSLT. I attended a course using Rational Rose's UML tools.
I was the point-person for the migration of their entire LDAP Directory Services from Omnes to Schlumberger. SLB has the largest corporate Intranet in the world & extensively use their directory services for an employee base of 60,000. This position involved a ground-up build of Solaris 7, evaluation of commercial and Open Source LDAP providers, liaising with the LDAP solution provider's tech team (I exposed over a dozen bugs in their version 4), security provisions & lockdown, data syncing (LDIF over rsync) and sundry other admin tasks. I have worked with exim (http://www.exim.org/) and built an LDAP fuzzy email address matcher using exim and OpenLDAP. These administrative tasks were aided by considerable use of Perl both as command line and full OO applications.
Cable & Wireless sponsored an around-the-world balloon trip that was scheduled to depart early December 1998. Black Sun Plc were contracted by C&W to produce the accompanying high traffic (4-6million hits/day estimated) web-site, http://www.cwballoon.com/. I was entirely responsible for the technical and code aspects of the site's installation, development and deployment. This included:
Technical liaison with States-side Unix personnel for Real Video/Audio and server configuration
Consultancy in respect of selection of optimal technologies (mod_perl, Apache web-server, server specification)
Developing the publishing system for the balloon flight logs, media press releases and a viewers' comments/questions section. This is a re-purposing of technology developed for ITV Formula One (see below)
Dynamic map generation to provide a top-down view of the balloon's flight-path around the world including hyperlinks from nearby cities to the Encyclopædia Britannica. The users are able to zoom in and out of the map and look back along its flight-path.
Image database with browser-based image upload facility, indexing and basic search facility.
Browser-based telemetry tracking to update the home page's status information and flight-path tracking.
The UK Meteorological Office sell image and data files from their Data and Products Distribution Service. The project was two-fold: firstly to completely redesign the existing product selection interface to provide users with a considerably simpler and more useful interface and secondly to re-implement the delivery system to enhance functionality and cope with an increasingly high load on their server.
My involvement was implementing the programmatic aspects of the new interface designed by Soft Options and creating an infrastructure that would enable easy configuration and updating of the several thousand products available.
The delivery system provides a means for users to have deliveries arrive over email or have their product uploaded via FTP to their server automatically as well as the standard FTP download method. The deliverer provides two common forms of compression (Unix `compress' and `gzip') as well as attachments and `uuencoded' data. The deliverer is implemented in two stages and features the ability to queue simultaneous deliveries.
Cloudband.com is a UK start-up internet resource which is focused on the Antique Carpet, Textile and Asian Art trades.
I was commissioned to provide a machine capable of providing for their varied IT infrastructural needs: a web-server, FTP area, IMAP mail, mail service, an SQL database, DNS and remote access through telnet along with full administrative and installation documentation. Following my advice, they selected a Linux-based system with the Apache web-server running `mod_perl' to speed their CGI program execution.
Aside from building a machine capable of dealing with a high traffic site and a near-indefinite number of users' mail I provided technical liaison with the ISP to ensure accurate DNS entries.
Future work is slated to involve evaluating existing auction software and leading the ground-up development of the integrated piece of web-based e-commerce software. The resource will include extensive editorial and reference material as well as both mall and auction functionality to enable dealers and collectors to trade.
Ford Credit commissioned a project to enable customers to make Settlement Enquiries over the web in order to discover details about their remaining due car repayments. This project involved using Perl and UNIX sockets to construct query packets to send and receive data from their mainframes with a web interface.
Eidoscope are responsible for the production of the http://www.itv-f1.com/ ITV Formula One website which features live news updates coming directly Haymarket which are then manually posted up to the site. I was commissioned to produce an extremely easy-to-use automated web-based publishing system where virtually computer-illiterate authors can upload news stories from their web-browsers from `The Pits'. These stories can include images taken with digital cameras.
The system additionally features both webserver and CGI-based security authentication, privileges, image upload and positioning through a web-browser, automated links to recent stories with summaries, automated news re-indexing and archiving plus remote and template-based modification of other key pages and images within the site. The system is based on a number of in-house developed custom classes that allow expansion to remotely manage content for an entire site. The software for this entire facility including fully documented Perl classes took just five days.
When I joined Soft Options (http://www.softopt.co.uk/) I was made responsible for providing a plan and solution for reorganising and updating their server platform in order to effect a considerable reduction in day-to-day administrative effort and decentralise this work. This involved: automation of existing procedures, back-ups, systems procedure documentation, web-mastering, failsafe protection (diagnostic scripts/UPS). In addition to providing the typical `sysadmin' in-house technical support I also had client-facing duties and conducted sometimes complex technical liaisons.
Making use of my experience as a long-time programmer combining systems administration knowledge I constructed a series of web-based tools that allow non-Unix-conversant people within the company to carry out tasks on which sysadmins often spend time. Typical tasks are: updating DNS entries, email accounts, adding & registering domains, configure per-site statistical log analysis, site documentation all spanning six Solaris- and NT-based web-servers. All this has demanded a highly automated and consistent infrastructure for the servers and filing system.
Syzygy (http://www.syzygy.co.uk/) is a 25-person `new media' company with a strong list of very successful international clients. I was promoted to Chief Programmer within a month of joining. My primary developmental responsibilities were to create software for an online game for Cartoon Network (http://www.cartoon-network.co.uk/game) and implement a Management Information Systems marketing training tool Intranet for Procter & Gamble (URL on request). As technical project leader in a small, growing company I have been involved with suggesting and setting company technical policies and systems. In the absence of a HR dept, I have also been responsible for recruitment, interviewing, in-house training of new employees and supervision of technical contractors at Syzygy.
Syzygy's most technically demanding web-site has been Cartoon Network's multi-user online game. It is written entirely in Object Oriented Perl 5.004 connecting to an Informix database server. It features secure registration, home-page personalisation, email verification, obscene language filtering, multi-user interaction, security/cheat-prevention mechanisms, extremely advanced state management, league/high-score tracking, email-like messaging facility, integration with twelve sub-games, automated graphics rendering, entire site pre-compilation to HTML, web-based map design and admin facility and over 200KBytes of scripts and modules.
Much of Syzygy's recent work has involved sites with considerable server-side effort. A lot of my developmental work has gone into creating innovative technical solutions to reduce server computational and network coststo even enable aspects of various sites to operate at all.
Quintek were contracted to produce some state-of-the-art video-imaging hardware and software. I was responsible for creating a three-week feasibility study and designing suitable architectures using state-of-the-art Field Programmable Gate Array hardware technology in concert with high-end DSPs to provide real-time high-resolution portable video-processing equipment.
I designed an Internet security video application using Java/Perl/C/HTML to implement a bespoke Client/Server system operating over a slow Internet link. It enabled live and recent monitoring of a number of remote camera sites. During this I administered a remote web-server and designed the architecture for a proprietary UDP/IP image server to operate in conjunction with a standard web-server. All the file management routines, many binary data-processing tasks and a server-side database and associated CGI scripts for the captured video sequences were written in Perl and C.
I rewrote and significantly enhanced a technical document library system over the course of a ten-week project. Having evaluated the project requirements I chose to write it in Perl 4. The system consisted of a number of interacting modules with which users all over the company could add, remove, update, index, preview, print and co-author documents with a user-editable change history.
I rewrote sections of MicroEmacs, a shareware editor that had been modified for in-house use. I converted the sources to ANSI C and made some significant optimisations to reduce start-up delay and correct bugs in the folding (cf. outline) algorithms. I was also responsible for updating a library of test programs for QA within the parallel processing compiler group.
A four-week mini-project before starting University I developed a data extraction tool in C for a medical CAT-scan system. Patients' scan records needed to be analysed and relevant data extracted from a proprietary file format to be used for display on a dedicated medical imaging- and data-server.
During a four-week vacation mini-project I wrote a demo to show-off the abilities of a high-end graphics processor (Weitek P9100) being used in a Transputer-based video capture/display board developed by Quintek. C and OCCAM were used to directly manipulate the graphics processor's registers to show how it could be used to render polygons extremely quickly in a parallel processor environment.
I have since worked during vacations for Quintek on a variety of projects that have included writing bespoke network configuration and boot utilities, an automatic Perl source code-to-documentation generator and a number of C- and OCCAM-based utilities.
In the first six weeks of a 12-month placement I became familiar with C, Unix and Transputer technology by writing a complete demonstration explaining the parallel and multitasking abilities of the Transputer.
For the rest of the year I wrote and developed Transputer-network analysis and debugging tools using C and OCCAM in a Unix/C environment, executing on arrays of Transputer. During that time I was exposed to Xlib and Motif programming.
My computing interest began with an Oric, Dragon 32 and for the most part a Commodore 64 where I wrote hybrid BASIC and Assembly language games, utilities and kernel extensions. In December 1989 (age 15) I had one such game published including a technical tutorial for BASIC/Assembly optimisations and shortly afterwards a maze generator used to explain Assembly language and algorithmic optimisations.