Curriculum Vitae

James Pike


Personal
   details

Personal Information

Address: Please e-mail me for this information.

E-mail: cv_AT_blaggart_DOT_com
Nationality:British
Date of Birth:14th March 1982

Education

2000 - 2004
Imperial College of Science, Technology & Medicine, London

  • Master of Engineering in Computing

1998 - 2000
Exeter College

  • A-levels (2000) - Mathematics (A), Further Mathematics (A), Physics (A), Computing (A)

1993 - 1998
Sidmouth College

  • GCSEs (1998/9) - 9 subjects (4 A*, 4 A, 1 B)

Technical
       skills

Software & Systems

  • Linux (10 years), incl. network, setting up custom systems, Apache, NFS, shell-scripting, system administration etc.
  • C/C++ (9 years), including:
    • C++ meta-programming.
    • Expression templates.
    • C++0x.
    • The use of the template meta-programming libraries Loki and BooST.
    • GUI programming using the QT and FoX toolkits.
  • Perl - incl. Perl CGI, Perl/Tk, Perl/Curses, OOP, Perl/DBI..
  • Java, including Java Applets/JavaScript/Swing/JSP 2.0/JDBC
  • PHP - incl. Database access (MySQL and PostgreSQL), dynamic web pages.
  • SQL incl. MySQL, PostgreSQL, PLSQL, Oracle (2 years).
  • Prolog, OOT, Haskell.
  • Microsoft Access (database and form design, Visual Basic front ends).
  • Shell scripting - bash, tcsh, ksh, zsh, sed, awk, etc.
  • Web Design incl. Web 2.0 (XHTML, DHTML, CSS, JavaScript), JSP (1.2 & 2.0) Jboss, Jboss Seam, CGI, CSS, XML, XSLT, perl-CGI..
  • CVS, Subversion & Wiki group development collaboration software.
  • TCP/IP, Samba (Windows inter-networking).

Qualifications

  • 3 RSA word-processing, proof-reading and typing courses (distinction), 80+wpm typing speed.

Professional
   experience

September 2008 - Present
TS Associates

At TSA I designed and implemented an interactive real-time multi-threaded server for relaying large volumes of stock market and news data in multiple formats including Reuters Market Feed. This server sits on top of a template-meta-programming library I wrote for parsing, and generating the bespoke messaging format. I also maintain the previous release. At TSA I also converted many software libraries to the cmake build system. I also wrote an adapter to allow Boost ASIO to be used with an interface identical to Tibco Rendezvous and a library for expressing configuration files in lua code. Technologies used include:
  • Boost (including boost ASIO).
  • Tibco Rendezvous IO.
  • Reuters RFA.
  • C++, with template meta-programming and expression templates.
  • Linux & Solaris 8, 9 and 10 (x86 and Sparc).
  • Cmake 2.6-8, gnu make.
  • Lua 5.1.
  • Gnu AWK, nawk, perl and C.
  • OpenSSL.

September 2007 - August 2008
Mavenlab

I moved to Singapore to work for Mavenlab, a small company who write rich and interactive "web 2.0" websites and work on various mobile platforms. Here I worked as a system administrator, designer and programmer. At Mavenlab I designed and developed software in a variety of languages including Ruby, Java, C++ and unix shell. The tasks I performed included:
  • Developing several high profile interactive websites from scratch both alone and in small teams.
  • Writing widgets for websites in DHTML with JSP backends.
  • Installing new hardware in a data centre.
  • Administered a small network of machines running Gentoo, RedHat, CentOS, Ubuntu and Mac OS X.
  • TCP/IP networking and installing and maintaining iptables firewalls.
  • Writing a large set of zsh scripts to allow complex system administration tasks to be performed by laymen from the command line or using a web interface.

April 2007 - September 2007
Yahoo

At Yahoo! I was part of a team that provides location services, which includes determining where a user is, or whether they are searching for a location amongst other location related services. Here I have:
  • Designed and implemented a high performance multi-threaded webserver in C++ using Boost and the STL that provides traditional webserver technologies such as CGI and serving static data, amongst more advanced concepts such as accessing shared resources. The webserver is built from the ground up to support Web 2.0 technologies such as AJAX and Comet.
  • Implemented some web services with the webserver I designed.

August 2004 - March 2007
Amadeus

Amadeus are a leading provider of software to the airline industry. I worked as a C++ developer on a large multi-tier, multi-threaded real time check in system. My tasks at Amadeus included:
  • The entire re-design and implementation of the customer check-in server using advanced C++ techniques (policy-based class design, iterator adapters, template meta-programming).
  • The design and coding of STL extensions for use throughout the company.
  • The design and implementation of a regression system built on top of the existing Perl coded test system. This system simplified the implementation of the regression building process and vastly increased maintainability.
  • The design and implementation in python, of a system allowing object code to be stored and referenced against CVS releases of the code, and then re-used via symlinks to shorten compilation time for all developers considerably.

April - August 2003
MIK Consultancy

I carried out a 6 month internship at MIK which was part of my course at Imperial. At MIK I worked in a mainly Windows based environment, which allowed me to broaden my skills and experience which had previously been heavily Unix based. Here I gained experience and worked in the following areas:
  • OLAP (multi dimensional database systems).
  • A JSP 2.0 website (using CSS, XHTML, XSLT) to aid human resource management.
  • Visual Basic programming (maintenance and development). Visual Basic tasks included programming an add-in to the Visual Basic IDE to allow full CVS integration from the UI.
  • Visual Basic for Applications. This involved programming with Microsoft VBA using mainly Excel and Access, but also included VBA programming for Powerpoint.
  • C programming.
  • PHP/MSSQL website development and maintenance.

July - October 2002
Elefire

Elefire core services are the administration and management of firewalls and intrusion detection systems. They specialise in providing open source solutions. Here my roles included:
  • C/C++/Perl/PHP development, maintenance and debugging.
  • Maintaining the installation of and creating plug-ins for an HTTP based real time service monitoring system.
  • Linux daemon programming (Perl/C/bash) and the SySV runlevel system.
  • Creating a version of RedHat Linux 7.3 which would run entirely from CD and ramdisks. This involved modifications to the RedHat Linux code, and insertion of my own shell scripts to detect hardware/graphics card settings etc. It also involved writing C code to run from a custom ramdisk which I also created, to allow the CD-ROM drive to be detected and for Linux to be booted from the CD-ROM in this drive.
  • Installing and testing Linux programs on the internal network.

The job also offered me the chance to gain experience with high availability systems (running RedHat Linux 7.3 and 8.0).

July - October 2001
Astraguard

At Astraguard I was part of a small team whose aim was to port a previously Windows based system over to Linux. My roles included:
  • Setting up a custom Linux distribution to be installed on a number of machines running specialised video grabbing software and hardware.
  • Graphical user interface programming (Perl/Tk).
  • PHP web-pages to manipulate extensive XML configuration files (to allow remote configuration via a browser).
  • Programming a console program (in C++ using NCurses) to monitor and adjust the operation of the software.
  • The design of parts of the company website (XHTML).
  • Shell scripting (to automate the task of installing 45 machines running specialised software).
  • Installing a software RAID.
  • Maintenance of a network of machines running Linux and Windows 98/2000.
Follow up support was then provided to the company over the following months after my period of work, which involved fixing bugs and adding additional features to the software which I had designed.

Open Source Projects

A list of my open source projects can be found at http://afterclap.com/projects.html.

University Individual Project

C-flat

This project involved the creation of an introductory cross-platform programming language based on C#. It's aim is to provide a language simple enough to be learned by a beginner, with a syntax similar to C# to allow the programmer to progress on to learning C#. This project involved:

  • Creating a lexer/parser using a language grammar and parser-generator (ANTLR, with C# code output).
  • Constructing a compiler for C-flat using C# as a target language.
  • Creating an extension system for C-flat allowing C-flat's functionality to be extended through libraries written in any .NET programming language (C# programming, C# Reflection).
  • Creating a GUI library to make GUI programming easy from within C-flat (.NET Winforms).
  • Use of the Windows .NET runtime and SDK (for the Windows implementation), and the Mono .NET platform (for all other operating system implementations).

University Group Project

Lexus

Lexus provides a kiosk system layer on top of Linux to monitor and restrict the access of students taking an exam to allowable resources on both the file system and network. The system involved:

  • Writing a database system to monitor and synchronise the state of students taking the exam (PostGreSQL with perl and PL/SQL interfaces).
  • Client processes running on each exam machine (bash shell scripting) to monitor and perform actions across all system partaking in the exam. These actions included changing the state of the system into and out of exam mode, allowing the student to start the exam, providing files to the students, and backing up the students' files as they work in case an error is made and file restoration is required.
  • A QT GUI to access the database and report information on all exam machines to the examiner. The GUI could also be used to send commands to the exam machine client processes.

Interests &
   activities

I love music and walking. I play guitar and violin. I regularly contribute to the open source community, examples being chilon::parser, a C++0x template system for expressing Parsing Expression Grammars that can automatically construct AST, an X.org window multiplexer and meow, a programming and markup language designed to replace HTML and CSS.

Last updated: March 2010