Graham Hay
I am a skilled, experienced and resourceful contract software developer and system designer with a scientific and mathematical background.
I have a track record of developing effective solutions for the banking and energy sector, primarilly in credit and market risk applications. I have also worked in scientific programming.
My focus is on technical work, designing and developing frameworks and applications in Microsoft .NET. I have many years of experience with object orientation and patterns, databases and object/relational mapping. I also have experience of domain driven design and service based architecture.
I am very interested in functional programming and endeavour to apply the principles to my work. I have studied functional programming at Oxford University, successfully completing the assessment.
I always strive to develop correct, concise software. I believe that an iterative approach to design and coding with automated tests leads to software that is performant, maintainable and extensible.
Lloyds TSB Wholesale
Senior Developer/Architect
Jan 2012 to Dec 2012 (11 months)
Low latency Market Risk project
This is a greenfield project to develop a low-latency market risk system using a Complex Event Processing (CEP) based architecture. The system is built using Sybase Aleri for the CEP platform, Microsoft.Net for the infrastructure and Sybase IQ for the analytics. I developed two of the system components:
- A light weight synchronous/asynchronous messaging library for IBM Websphere MQ in C# using Reactive Extensions.
- A risk aggregation component performing multi-dimensional analysis of a billion low-level risk measures over various dimensions including the business hierarchy. This component was built using the Sybase IQ analytical (OLAP) database.
Skills: C#Microsoft .NetSybase IQ
Technology: IBM Websphere MQMicrosoft .NetReactive ExtensionsSybase AleriSybase IQ
Rabobank
Senior Developer/Architect
Mar 2004 to Dec 2011 (7 years 9 months)
Credit Risk desktop application
This project was to add a desktop application to the Credit Risk and Collateral Management application using a WPF client and WCF service based architecture in C#.
I worked on the following sub-systems:
- WPF clients developed using MVVM with Prism and Unity.
- WCF services developed with data acces to MS SQL Server database via Entity Framework Code First and Linq sequences over ADO.Net data readers.
- Collateral Calculations using pure functions and immutable data structures.
Credit Risk web application
This was a project to replace an existing Credit Risk and Collateral Management application development using ASP.Net web based architecture in C#.
I designed and built the following sub-systems:
- Business component model using Domain Driven Design, Microsoft Entity Framework and LINQ to Entities.
- Reporting framework based on LINQ sequences and data readers supporting output to text file (CSV or Xml) or Excel 2007 Open XML format files.
- ASP.NET web property forms and applications using Model-View-Presenter pattern.
Market Risk application
This was a greenfield project to build a Market Risk application to calculate Value at Risk by historical simulation based on a distributed calculation service supporting
concurrent processing of scenario generation and scenario valuations across many multi-core processors with bulk load of the results into a MS SQL Server database.
- Distributed calculation engine.
- Display of portfolio VaR figures aggregated and filtered by various dimensions displayed via web pages using ASP.Net.
- OLAP cube in Analysis Services for portfolio VaR figures.
Skills: C#Microsoft .NetASP.NetSQL Server
Technology: Microsoft .NetMS SQL ServerWCFWPF
Raft International
Architect/Developer
Jul 1996 to Nov 2003 (7 years 4 months)
I joined the company as an equity holder when the first contract was signed and played a major part in the success of three key projects which grew the company to the point where it was floated on AIM in October 2000.
I was lead developer on the customisation of the Credit Risk system for the energy company Texas Utilities (TXU) Energy Trading.
I designed and developed a Collateral Management system extending the Raft data model and adding new components. This involved working closely with the Collateral department to agree functionality and testing requirements.
I designed and developed the following framework components of the Raft system:
asynchronous, distributed network messaging (Visual C++ ATL COM objects),
asynchronous multi-threaded calculation engine (Visual C++ ATL COM objects),
batch architecture and Process Scheduler (Visual C++ ATL COM objects and VB COM components)
Skills: Visual Basic Visual C++ COMSQL Server
Technology: Windows
Internet Systems plc
Team Lead/Developer
May 1992 to Jun 1996 (4 years 2 months)
I was team lead of the information delivery and distributed system software sub-systems of the Transact dealing room system.
The software was in C++ with an operating system abstraction layer supporting IBM OS/2, Microsoft Windows NT and Sun Solaris.
Skills: C++
Technology: Windows TCP/IP
Transact Software
Team Lead/Developer
Jan 1991 to Apr 1992 (1 years 4 months)
I was team lead of the information delivery and distributed system software sub-systems of the Transact dealing room system.
The software was in C on IBM OS/2.
Skills: C
Technology: OS/2 Lan Manager
Ceres Trading Systems
Senior Developer
Jun 1988 to Dec 1990 (2 years 6 months)
I developed real-time distributed network software which supported the information delivery and deal capture/position keeping applications,
interfacing to Reuters and Telerate information feeds.
Processes were implemented as finite state machines with inter-process communication using asynchronous IO and network multicasting.
Skills: C
Technology: VAX/VMS DECNet
Scicon
Analyst/Programmer
Aug 1980 to May 1988 (7 years 10 months)
I worked in scientific programming on a variety of projects including:
- Combat Systems effectiveness using Next Event Monte Carlo simulation.
- PC bit-mapped real-time interactive graphics in ASM-86 assembler under DOS.
- 3D visual modelling and ray tracing.
- Electro-magnetic wave propagation.
- Network communications modelling using queuing theory.
Skills: FORTRAN
Technology: VAX/VMS