| |
|
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.
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).
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 |