Employment History


Quantitative Derivatives Analytics Library Architect

London, United Kingdom

November 2009 - December 2010

Royal Bank of Scotland

Global Business Markets

February 2007 to November 2009


Global Markets Business Unit


This position started at ABN-AMRO and transferred to RBS after it acquired ABN. At ABN I reported directly to the Head of Credit, Hybrid, Inflation and Commodity Derivative Analytics.

  • I was responsible for maintaining the architectural integrity of the library as it evolved, to provide technical support and guidance to the quantitative team and to the Head and to verify new code for conformance to standards and sound practices.
  • Designed a programming language to be used by the trading desk to optimize computations on the DataSynapse grid. Implemented an interpreter for the language.
  • Improved the distributed computing code to increase the concurrency of the calculations or to implement the ability to cache constant objects on the grid to be reutilized by future computations.
  • While at RBS I worked on maintenance and enhancement of the Common Analytics Framework used by the trading desk. Examples:
    • Refactoring of many parts of the library, notably the whole of the Volatility Engine, to improve the architecture, giving them a cohesive interface.
    • Researched and solved numerical differences observed on the computational grid due to differences in the hardware, AMD or Intel, or the code emitted by the Windows and Linux C++ compilers.
    • Re-implemented the interpolation code to make it object oriented and faster.
    • Wrote C++ and sometimes Assembler code to fix some subtle problems with the C++ compiler implementation of some primitive math functions, or to make them more robust. As an example, the replacements of atoi() and atof() that I wrote to properly validate their input turned out to be 2.5 times faster than the original versions.


Quantitative Developer (consultant)

October 2006 to February 2007

Barclays Capital

Fixed Income Risk and Pricing

London, United Kingdom

I took responsibility for maintaining code and implementing new curves related to inflation-linked instruments. Skills: C++, SQL, and some Excel/VBA development, plus proprietary tools.


Sr. Software Developer

2003 to 2006

Macrovision Corporation (Rovi Corporation)

Berkshire, United Kingdom

  • I was responsible for the core engine of a product for copy protecting CD contents which had already been released in over 300 million CD’s around the world and was being produced at the rate of ~10 million a month. Notably in this role:
    • redesigned the engine to be multithreaded and to make it more robust,
    • developed a new algorithm for multichannel decryption, andt
    • greatly increased the number of supported devices.
  • Designed the infrastructure for a new product dealing with large scale, secure distribution of TV programmes on the Internet.

Skills: Visual C++, STL, COM, OOD, OOP, IPC and multi-threading, SCSI protocol.


Independent Consultant

2001 to 2003

Several consulting jobs in the US and Canada

  • InterTrade Systems Corporation: Worked on existing Enterprise JavaBeans, JSP and servlet modules of a large Electronic Data Interchange (EDI) J2EE application.
  • Fujitsu Softek: Worked on various parts of the Transparent Data Mirroring Facility (TDMF) product. Developed all of the MFC based GUI, and contributed to the database (MSDE SQL) and networking modules.
  • Greenleaf Medical Systems: Rewrote the COM / DCOM portions of several modules for robustness and increased performance. Also some Windows CE development (targeting the H/PC Pro) to generate and print formatted medical reports.
  • DeltaClick.com: TCP/IP development with IPWorks, WinSocks, Visual C++, and MFC.


Software Architect / Team Lead

04/2000 to 05/2001

Internet Gig.com

San Francisco, California, USA

I designed the global architecture of a product for high volume multimedia storage and distribution on the Internet. I supervised a team of four developers and two QA specialists. Main personal contributions:

  • Server development: designed and implemented in C++ a TCP/IP - HTTP multithreaded server. This server, which was fully object oriented and reusable, included a self-monitoring technology to guard against resource leaks and stalled threads. It was clocked at substantially higher speeds than Apache Server.
  • Compiler design: invented a new, proprietary script language used by the QA team for automatic, high volume, stress testing of the server. This language provided constants, variables, loops, etc, plus allocation of threads to concurrent tasks, to simulate a large number of simultaneous XML sessions between the test clients and the HTTP server. Using this tool two QA technicians were able to conduct both functional and stress tests on the Server, achieving rates of over three million test messages per hour, thus performing the equivalent work of a substantially larger QA team.

Skills: Visual C++, STL, OOD, OOP, UML, TCP/IP, MFC, HTTP, XML, compiler technology, multi-threading, library / framework design.


Software Architect and Developer

Outsourcing contract

04/1999 to 03/2000

Nippon Telegraph& Telephone

Multimedia Communications Laboratories

California, USA

This was an outsourcing project performed for NTT as an independent consultant. I was working alone and mostly off-site. I provided the analysis, architectural design, implementation, testing, and documentation of all the following:

  • Videoconferencing library: designed and developed a general purpose library for real-time audio and video communications implementing ITU-T Recommendation H.323: Packet-based multimedia communications systems, along with required portions of other supporting ITU-T Recommendations such as H.225.0: Call signalling protocols and media stream packetization for packet-based multimedia communication systems, H.245: Control protocol for multimedia communication, Q.931: Digital subscriber signalling system No. 1, and others. I was responsible for the whole development cycle.
  • Server development: I used the above to design and implement ArcSight (NTT's internal name), an application for multimedia streaming. ArcSight can simultaneously hook into any number of ongoing H.323 intranet videoconference sessions to make the data available to any number of non-H.323 aware client applications through a simplified interface, either in real time or off-line. After localization to Japanese, ArcSight became a commercial product in Japan, and has been used as a model for another product for distance learning.
  • Server development: implemented a RealServer (RealNetworks) COM/DCOM encoder for live Internet broadcasting of video/audio data obtained from ArcSight.

Skills: Visual C++, STL, OOD, OOP, UML, TCP/IP sockets, COM, DCOM, multi-threading and inter-process synchronisation, implementation of H.323 and related ITU T protocols (H.245, H.225, Q.931, H.261, etc), ASN1, library / framework design.


Sr. Software Engineer

1997 - 1999

Eclipsys Corporation

(formerly HealthVISION)

Santa Rosa, California, USA

I worked in various parts of a large MFC product for electronic medical records management in a distributed SQL data base environment.

  • Server development: designed and developed the Alarm Notification System, an enterprise-wide messaging centre for dispatching e-mail and alphanumeric page notifications using MAPI, TAPI, and the Telocator Alphanumeric Protocol. The Alarm Notification System is a multithreaded, highly scalable, fault tolerant DCOM server running as an NT service, and it is currently deployed in various hospitals in the US and Canada.
  • COM / DCOM programming: Took full responsibility for a suite of DCOM client-server applications running in a distributed database environment to connect workstations with the appropriate database servers, implement workgroups, and centralize error logging and viewing.
  • MFC and SQL programming: As needed, worked on various parts of the aplication, both on the GUI and on MS SQL triggers and stored procedures.

Skills: Visual C++, OOD, OOP, UML, MFC, Win32, COM, DCOM, ATL, IDL, Microsoft SQL Server, MAPI, TAPI, Telocator Alphanumeric Protocol, multithreading.


Team Lead and Project Manager

1996 - 1997

Hamilton Software

Santa Rosa, California, USA

Hamilton Software is an outsourcing software development house. I managed a project for CellNet Data Systems (now Landis+Gyr) in Redwood City, California. Led a team of three and interfaced with the client. This was a transitional job I took to move to California

  • Server development: designed a software gateway (router) between CellNet’s wireless network and its Commercial Data Service clients. Besides such usual gateway tasks as validating, reordering, reassembling and redirecting incoming network packages, the software was responsible for keeping traffic statistics for the purpose of billing and documenting the quality of service. Implemented the gateway to execute either on a Windows NT or a UNIX SunOS environment.
  • Stochastic server validation: designed and developed an application to synthesize network packages to test the gateway under a variety of normal and abnormal conditions. The program generated the data following configurable statistical parameters. Thanks to this application the gateway was tested with very little human resources, and was proven to be operational and virtually error free before the actual wireless network was in place, thus shortening the deployment time of a 125,000 node network by approximately three months.

Skills: Visual C++, Sun CC, OOD, OOP, Berkeley TCP/IP sockets, project and team management.


Senior Software Engineer

1992 - 1996

Corel Corporation

Ottawa, Ontario, Canada

  • SCSI CD-R Device drivers: as member of the team developing CD Creator (at the time the world's most popular CD mastering software package), I was solely responsible for the development and maintenance, in C, C++ and Assembler, of all the device drivers and VxD required to support a variety of SCSI CD-R devices under Windows NT/Win95 and Windows 3.1x. Working closely with OEM’s (Sony, Panasonic, Philips, Ricoh, Teac, and many others) and system integrators (Gateway, Turtle Beach) firmware engineers and representatives, contributed to the testing and debugging of their devices, sometimes on-site, and occasionally advised on normalization of the vendor specific SCSI interfaces to comply with industry standards.
  • MFC cross-platform port: was a member of the task force that ported the Microsoft Foundation Classes (MFC) and Windows 95 controls to OS2 Warp. Designed the Graphics Object Manager, an OS2 layer to handle bitmaps, brushes, fonts, pens, and regions created and manipulated with Windows semantics. Wrote code to reproduce under OS2 all of the Windows 95 controls (Pushbutton, Spin control, Tab Control, Property Sheet, etc.).
  • Graphic formats and compression algorithms: re-implemented and optimised most of the Graphics I/O Filters used by various Corel products, such as BMP, TIFF, GIF, Photoshop, JPEG, etc. Implemented various compression algorithms: Huffman, LZW, RLE, etc. (The LZW implementation was measured to be the fastest of all known implementations at that time).

Skills: C, C++, 80x86 Assembler, MFC, Win32, GDI, cross-platform development, graphic formats, compression algorithms, SCSI, CD-R protocols, device drivers.


Previous positions omitted