- Software Developer2014 - 20151Spatial
- Delivered a system to produce simplified maps from complex survey data.
- Developed many GIS algorithms including promontory removal, labeling, workload partitioning, short edge removal and dead-end removal.
- Reviewed code and coached team members on good design practices.
- Communicated closely with customers to help with requirements definition and system configuration.
- Principal Software Developer2012 - 2013Worldpay
- Integrated the Austrian EPS payment system into the payment gateway.
- Made extensive use of digital certificates and XML signing to make payments.
- Found, triaged, and fixed security flaws.
- Coached junior developers and reviewed code.
- Led the technical implementation of a multi-day server upgrade process.
- Improved performance and robustness in the high-volume Internet-facing payments gateway.
- Lead Software Developer2010 - 2011BNP Paribas
- Led the technical delivery of three development teams.
- Worked with other technical leads to introduce consistent practices across the organisation.
- Fixed hundreds of failures in the Selenium test suite, many due to the mishandling of multi-threading.
- Software Developer2010 - 2010Royal Bank of Scotland
Technologies: Java, JMS, Coherence, Oracle, GWT
- Created a distributed, cache-based data store for centralized trade data.
- Created a custom ClassLoader to prevent Java library version conflicts.
- Mentored remote developers in good design practice and TDD.
- Software Developer2008 - 2010Swiss Re
Technologies: Java, SWT, RMI, JEXL, Groovy, TopLink JPA, Sybase, Perl
- Created a risk management system covering both issuer and the counterparty risk for every financial instrument traded by Swiss Re.
- Used bi-temporal database structure to provide fully historized data.
- Used multi-threading and a clever sharding of data into huge JVMs to achieve full risk calculations in seconds rather than hours.
- Created complex a front-end that allowed power users to create their own reports and define their own risk calculations.
- Software Developer2005 - 2008Barclays Global Investors
Technologies: Java, JMS, Spring, Hibernate, Sybase, Swing, C#, .NET
- Implemented a liability driven investments system generating analytics across liabilities, bonds, swaps, and credit derivatives.
- Worked in a fully Agile team with daily pair programming.
- Communicated and worked closely with the business to generate and refine requirements.
- Architected and implemented an event-based fund management system.
- Created an extensive automated test suite covering unit tests, acceptance tests and regression tests.
- Software Developer2004 - 2004Royal Bank of Scotland
Technologies: Java, C#, .NET, SOAP, XML, SQL, Oracle
- Implemented a real-time swaps pricing system.
- Created a network of price calculations that could handle concurrent changes to input prices.
- Created an adaptive graph widget that would show more or less detail depending on how much screen real-estate it had available.
- Integrated publishing prices to Bloomberg.
- Added limit based trader alerting.
- Upgraded the GUI so that it automatically restored to the last state.
- Senior Software Developer2003 - 2004Rolfe and Nolan
Technologies: Java, XML, EJB, JMS, Oracle
- Led the development of a derivatives trading system.
- Created a clever mechanism to handle incoming messages so that new types of messages were automatically parsed, validated, and persisted.
- Software Developer2003 - 2003Abbey
Technologies: Java, XML, XSLT, JMS, MDB, SQL, JBoss, WebLogic, Windows, Unix
- Integrated a trading system using an XML messaging architecture.
- Contributed several patches to the open source project OpenAdaptor.
- Software Developer2001 - 2003WestLB Panmure
- Led the design and implementation of a back office static data management system.
- Trained and mentored others in Java and Object-Oriented design.
- Coordinated with the architecture group.
- Solved the problem of maintaining consistent data whilst allowing potentially conflicting changes to move through a workflow for approval.
- Introduced semi-automated smoke testing for the web-based front end.
- Senior Software Developer2000 - 2001Citria
Technologies: Java, EJB, JSP, Servlets, XML, RMI, WebLogic, SQL, Sybase
- Led a team of seven software engineers to build a web app for financial intermediaries.
- Defined technology and architecture for a news publishing website.
- Participated in the security group - sharing knowledge and ideas relating to software security.
- Organized a series of lectures on technical topics.
- Conducted annual appraisals for a group of fifteen people.
- Heavily involved in recruitment of software developers.
- Software Developer1998 - 2000Anvil Software
Technologies: C++, CORBA, Perl, UNIX, SQL, Sybase
- Created the core mathematical components of a cross-product trading system.
- Developed and supported custom enhancements to a front and middle office repo trading system.
- Worked on client site providing front line support in a front office trading environment.
- Fixed a huge number of bugs from the backlog.
- Researcher1996 - 1998GCHQ
Technologies: C, C++, Java
- Worked as a research mathematician.
- Defined new algorithms and evaluated their performance.