B.Sc. (Jt.Hons.), MSc by Research, CITP, MBCS, MInstP.
130C Warwick Way, Pimlico, London, SW1V 4JD. U.K.
Email consultant@hussar.demon.co.uk
Mobile: +44 (0)7775 652959
Personal Details:
Date of birth: 3rd March, 1969
Nationality: British.
Marital status: Single.
Languages: French (passable).
Preferred Employment Location: Central London, but willing to travel within the M25.
Employment Summary:
- Period, Title and Company: June 2007 - to date. Permanent role.
Senior Technical Developer for Barclays Capital http://www.barclayscapital.com, Docklands, London.
Duties: To investigate and solve performance issues with client-server software that connects Equities
Algorithmic trading software, written in C# using .Net 2005, (primarily FTSE index arbitrage and
proprietary algos.) with an interface in managed C++, connecting to the XTP trading system, written
in C++ using .Net 2003 on Windows 2003. This small but extremely high-pressure project involved
assuming such responsibilities as liaising directly with the traders, liaising with their management and
their front-office algo. developers. A highly self-driven role that required considerable motivation and
people skills. The project was due to be cancelled until my efforts demonstrated the potential of the
system, so that finally, after the 4 years prior to my joining, my work meant they could trade using XTP.
Successfully improved performance by at least 6 times, to latencies consistently under 10ms, by using such
techniques as: making the internal caches hierarchical so improving their locking, optimising the threading
and queuing, using suitable locking, improving the message protocol using a greedy batching algorithm
to replace the Nagle algorithm, using Boost and optimising the compilation options. This was enabled
by carefully extending the originally limited C# test harness to ensure that the client behaviour was
maintained. Only now will the connectivity and XTP be replaced by the massive STOMP & SubM system
from Lehman’s. My efforts also directly caused an increase in performance of the OMS (within XTP) by
4 times, by causing a multi-threaded memory manager to be used. I also single-handedly increased the
performance of all of the exchange links in XTP by 30%, a direct performance increase of the whole of
XTP, this was achieved by using Boost, examining the parameter passing, removing superfluous string
conversions, utilising the multi-threaded heap and optimising the compilation options, amongst other
techniques. The traders often said that only by my influence was the performance of the rest of XTP
improved, so my impact was above and beyond the component I was initially employed to address.
Management: Directly reporting to the traders and their front-office developers. Project manager,
developer, coordinator.
Languages: C++, managed C++, C#.
Tools: MS .Net 2003, UCM/ClearCase, ClearQuest, Perforce, Rational Quantify & Purify.
Software: MS .Net 2003 & 2005, Win 32 API, Windows sockets, ATL, COM, Boost.
Hardware: Development on Windows XP, Windows 2000 and Windows 2003 servers.
- Period, Title and Company: April 2004 - May 2007. Permanent role.
Senior Technical Developer for Credit Suisse http://www.credit-suisse.com, Docklands, London.
Duties: Develop and maintain the business critical Value at Risk systems for regulatory reporting to the
FSA and Swiss financial authorities. My primary responsibility was for the core Risk-Server component,
written in C++ using Boost and OTL, that implements the Credit Suisse “Credit Risk +II: Value at
Risk Methodology and Historical Simulation” models, which involves not only hist. sim., but XM, VCV
and BMC models, amongst others. This role also included developing the software according to business
and regulatory requirements as well as supporting the current systems in production. System support
included rapid deployment of business-critical fixes, to ensure that the generation of the business critical
VaR reports could be submitted in time. The BAU work involved liaising with the RMM quant. team to
assist specifying further risk classes and their models, then implementing those new models, for example
adding the Credit Risk model. As a senior developer I was also responsible for overseeing the continued
development of the risk server as a highly scalable and robust service that ran on large servers that
need to maintain high availability, for example extending the risk server to move from caching fixed, 2
year time-series to variable-length time-series, by writing a replacement LRU cache that made use of a
custom-implemented unordered map, advanced locking and the ability to grow the cached time-series
in memory, so only fetching the minimal amount of data, whilst enhancing the hit-rate of the cache to
99.99%. Initially these ran on Sun Solaris machines but I was directly involved with the migration to
Egenera blade frames running Linux, so converting the code-base from the Sun Forte compiler to G++.
Amongst my other influences, I was instrumental in ensuring that a version of GCC was used that could
generate optimised code for Opteron processors, the original compiler with the installed OS being too
old. Also I was directly involved with upgrading our Linux development environment to use the KDevelop
IDE, KDE window manager and other modern tools.
Management: Senior technical developer in the MaRS team, reporting both to the Senior Technical
Architect and the RMM quant. team.
Languages: C++, XML, XSLT and SQL program development. Oracle PL/SQL.
Tools: Kdevelop, ClearCase, Sun Forte Workshop.
Software: GCC v4.2, Sun Forte compiler suite v6.2update5, Iona Orbix Orb and Corba communication
layers, Boost, Hoard, OTL.
Hardware: Development on Egenra blade frames (dual processor, 4 core Opterons) on Linux (Suse
Enterprise v9.0), Sun Netrix and Enterprise servers (8-16 UltraSparc IIIi+ systems).
- Period, Title and Company: April 2001 - June 2002. Permanent role.
Senior Technical Lead Developer for Dell Corporation http://www.dell.com, Bracknell.
Duties: Design and create a highly scalable and robust C++ service on Windows 2000 for flexibly
transferring XML-based data from one data base cluster to another, with minimal impact on the target
data base. This involved dynamic dependency analysis of the data to be transferred using an XML-based
rules system with XSLTs to perform the data transformations and fetches from the back-end data
bases. The implementation involved a fully-asynchronous, message-passing using wrappers to MSMQ,
distributed-server design, which automatically load balances across the servers. The system I designed had
two logical components, a system to construct the messages from the rules which passed those messages,
of many mega-bytes each, to the servers that loaded the data into the front-end data bases. As part of
a two-person team I designed and implemented a Pricing Engine for performing sophisticated, real-time,
multi-currency calculations that included non-uniform discounting, country-specific taxation (both sales
and environment) and legal break-down of the total price into the sub-totals required by country-specific
legislation. The role also involved giving programming advice and mentoring other team members.
Management: Senior technical developer in the core architecture team, reporting directly to Dell
UK’s Senior Technical Architect.
Languages: Visual C++, XSL, XSLT and XML, JScript, Visual Basic and SQL program development.
Microsoft SQL Server based SQL.
Tools: Visual Source Safe, Numega Bounds Checker, Compuware Track Record, Internet Information
Server, Microsoft SQL Server 2000.
Software: Microsoft Developer’s Studio v6.0 using the MSXML v3.0 and v4.0 DOMs, COM and
DCOM. MSMQ and OLE DB. NT Service programming. DCOM and web service implementation and
programming.
Hardware: Development on Windows 2000 Advanced Server clusters.
- Period, Title and Company: August 2000 - April 2001. Permanent role.
Senior Technical Lead & Architect for Felspar Limited http://www.felspar.com, London.
Duties: Advise on all technical design and programming issues. Design base systems tools and
architecture. Perform design analysis and implement code enhancements and performance analysis and
improvements. Wrote white paper on corporate policy for programmatic caching of business objects.
Implemented massively-scalable, shared-memory, multi-process caching on Windows NT.
Management: Senior technical advisor of all development teams. Responsible for all technical design
issues, reporting directly to the Chief Technical Officer and co-director.
Languages: Visual C++, JScript, Visual Basic and SQL program development. Microsoft SQL Server
based SQL.
Tools: Rational Rose, Visual Source Safe, Internet Information Server, Microsoft SQL Server v6.5 & v7.
Software: Microsoft Developer’s Studio using the Win32 API programming. ODBC and ADO
programming. NT Service programming. DCOM and web service implementation and programming.
Hardware: Development on Windows N.T. Servers and Workstations.
- Period, Title and Company: April 2000 - July 2000. Contract role.
Contract system support specialist for BancTec Limited http://www.banctec.com, Colnbrook.
Duties: System support for the GEMS clearing system involving on-site customer support, bug fixing
and system development.
Management: Senior team member of closely knit on-site installation and development team.
Responsible for P.C. based development, reporting to the customer liaison manager.
Languages: Visual C++, Java, JavaScript, Visual Basic and embedded SQL (ESQL) C language
program development. Informix based SQL.
Tools: Visual Source Safe, Internet Information Server, Unix RCS version control, Informix SQL database
server, Microsoft SQL Server 7.
Software: Unix based Informix databases. Microsoft Developer’s Studio using the Win32 API
programming.
Hardware: Development on HP-UX based Unix RAID Servers, Windows N.T. Servers and
Workstations.
- Period, Title and Company: September 1998 - June 1999. Contract role.
Advanced Technical Architect/Programmer for Intelligent Micro Software Limited
http://www.eschertech.com, Frimley.
Duties: Highly technically involved programming in a specialist language for designing and writing an
object-orientated, automated, software-based program to validate and verify other programs. This involves
the used of highly sophisticated, mathematical logic based techniques to analyse the input program’s
structure and design to verify its soundness. Duties also included compiler design verification. A Theorem
Prover is a highly specialised piece of programming that requires expertise in solving highly abstract
and complex logical problems using First Order Logic. The work done in this contract enabled me to be
invited to take up, and complete, an MSc by Research by a lecturer from the University of Surrey who
was employed to work on various language issues, including ensuring completeness of the programming
language and provability requirements of that language.
Management: Team Leader for the Theorem Prover Project, reporting directly to the CTO and
Director of the company. Technical Architect for the Theorem Prover design and strategy.
Languages: In-house developed, mathematical - logic based programming language (called “Perfect”)
and Visual C++.
Tools: Mortice Kern Systems Source Integrity.
Software: In-house developed tools (released as “Perfect Developer”) and Microsoft Developer’s Studio.
Hardware: Development Windows N.T. Workstations.
- Period, Title and Company: March 1998 - August 1998. Contract role.
Contract system support specialist for BancTec Limited http://www.banctec.com, Colnbrook.
Duties: System support for the MARS Remittance processing system involving on-site customer
support, bug fixing and system development.
Management: Senior team member of closely knit on-site installation and development team. On-site
team leader responsible for P.C. based development, reporting to the customer liaison manager.
Languages: Unix based SQL. Visual C++ and C language program development. Unix-based 4GL
Various in-house scripting languages.
Tools: Unix RCS version control, Informix SQL database server.
Software: Unix-based Informix databases. Microsoft Developer’s Studio using the Win32 API
programming.
Hardware: Development on HP-UX based Unix RAID Servers, Windows N.T. Server, Windows 95,
Windows for Workgroups and OS-2 Warp based P.C.s.
Education:
- MSc by Research, part-time, started 2000, completed January 2007, at the University of Hertfordshire
http://www.herts.ac.uk, Hatfield, Hertfordshire:
- Topic: “The Challenges of Writing Software for Massively Parallel Architectures”.
- Publications:
- MSc by Research thesis titled “Automatic Code-Generation Techniques for Micro-Threaded RISC
Architectures”.
- Conference paper presented at the Advanced Computer Systems and Architecture Conference,
2006 in Shanghai, titled The Challenges of Efficient Code-Generation for Massively Parallel
Architectures http://www.springerlink.com/content/6058124235j8v34u/, published in the
conference proceedings, of which I was also a co-reviewer.
- Presentation at Microgrid 2005
http://www.science.uva.nl/research/csa/workshophome.html in Amsterdam, topic: “The
Challenges of Writing Software for Massively Parallel Architectures”.
- Poster session at Super Computing 2003 http://www.sc-conference.org/sc2003/ in Phoenix,
AZ, U.S.A, presenting a Mandelbrot-set generating program on a prototype IBM BlueGene/C
(Cyclops) architecture.
- Member of the Compiler Technology and Computer Architecture Research Group
http://homepages.feis.herts.ac.uk/~ctca at the University of Hertfordshire http://www.herts.ac.uk,
Hatfield & at the Computer Architecture and Parallel Systems Laboratory http://www.capsl.udel.edu at
the University of Delaware http://www.udel.edu, Newark, U.S.A (from 2001-2003).
- Whilst in the US worked within the CAPSL group http://www.capsl.udel.edu and worked with the IBM
JT Watson Research Labs and Monty Denneau (respected both in Industry and Academia for a number of
super computer designs) developing the BlueGene/C (Cyclops) supercomputer. Gave a seminar
http://www.capsl.udel.edu/seminars_text_simple.shtml on my work at CAPSL with DIMES/P-8 and
Cyclops.
- Joint Honours Degree in Mathematics with Physics (2ii), completed 1990 at University of Bristol
http://www.bris.ac.uk, Tyndall’s Avenue, Bristol.
- College, completed 1987 at Eton College http://www.etoncollege.com, Windsor, Berkshire.
- Brainbench http://www.brainbench.com/ transcript ID for “C++” & “C++ Fundamentals”: 6628294
Professional Bodies:
- Member of the British Computing Society http://www.bcs.org (membership number: 09533631), a
Chartered IT Professional.
- Member of the Association of C and C++ Users http://www.accu.org (membership number:
00261).
- Presented at ACCU conference in Oxford:
- Presented to ACCU-London branch:
- Member of the BSI panel on C++ Standardisation, special interest in threading, directly influencing the
development of the atomics and threading chapters of the standard. Influenced, within the BSI, the dropping of
Concepts from C++0x.
- Member of the Institute of Physics http://www.iop.org (membership number: 61367).
Personal Projects:
- Developing the open-source, LGPL, Parallel Pixie Dust http://libjmmcg.sf.net/ as a project derived
from my MRes to investigate solving the problems associated with high-performance parallelism within
C++ on multiple platforms. This library primary targets the Linux and Windows platforms, but is not
exclusive to them and could target the CUDA architecture for example.
- An open-source, GPL program to generate fractals in both 2-d and 4-d ray tracing of them.
Experience Summary:
Management: Team Leader (5+yrs), Technical Architect (4+yrs).
Languages: C++ (14yrs), XSL/XSLT/XML (1+yrs), Java (6+months), UML (8+months), C (9yrs), Assembler
(5yrs), Delphi (1yr), Pascal (3yrs), Fortran (5yrs), SQL and T-SQL (1yr).
Mixed language programming: C++/C/JScript/VB/Delphi/Assembler/C (combined 7yrs).
Platforms: Windows XP, 2000, 2003 & NT (8yrs), Unix (Linux (3+yrs), Sun (2yrs) & HP (1yr)) including
installation and configuration of clustered web servers.
Techniques: Object Orientated Design (11+yrs), Object Orientated Analysis (4+yrs), Safety Critical Design (2yrs),
and Unix scripts (6+ months).