Professional software architect and designer with proven analysis and development experience in a variety of object-oriented languages, although of late mostly using a functional style with JavaScript. Wide experience in designing and implementing commercial software, components, and frameworks. Extensive knowledge of algorithms and data structures and their application for improved speed and resource efficiency. Expertise in developing using an agile process, including requirements gathering, writing user stories, test-driven development, implementing smoke and integration tests. Excellent written and oral communication skills that include teaching, presenting, mentoring, and writing for blogs and professional publications. Well-established ability to research new technology, algorithms, and development methodologies, and to evangelize and promote them within the development organization. Team management skills, including staff appraisals, salary reviews, recruitment, and managing non-performers.

Naturalized as U.S. Citizen since January 2014.


University of London, Kings College
BSc (Hons) Mathematics 2:1

Ernest Bailey Grammar School, Matlock, Derbyshire
5 A levels (Maths, Further Maths, Physics, Chemistry, General Studies)
1 S level (Physics)

Show/hide all job descriptions

Show/hide job description

March 2006 to present (18 yrs)

Developer Express, Inc., Glendale, CA

Chief Technology Officer

Developer Express, Inc., sell components for WinForms, ASP.NET/MVC, WPF, Blazor, MAUI, and client-side HTML5/JavaScript, and also IDE enhancement tools for Visual Studio.

Am employed as CTO with responsibility for the company’s technological vision, for understanding the component market, for raising the visibility of DevExpress in the .NET component and Visual Studio add-in markets. Have technical oversight over all products. Drive acceptance of new techniques and methodologies within the development organization. Research new technologies and prototype possible new products.

Also involved on a day-by-day basis with the marketing and evangelism department. Responsible for pushing the new openness of the company using blogging and webinars, publishing the annual roadmaps, and being the contact for editors and journalists for technical magazines and papers. Coordinate evangelists’ blogging and webinar activities; proof and edit their posts. Partly as a result of this openness, revenues have grown and continue to grow strongly each year.

Show/hide job description

February 2005 to March 2006 (1 yr, 1 mo)

Configuresoft, Inc., Colorado Springs, CO

Software Architect

Configuresoft, Inc., marketed a configuration management system for large enterprises. It was acquired in 2009 by EMC, then by VMWare.

Was employed as a Software Architect, with sole responsibility for the architecture and design of the middle tier (business object and data access layers). Also evangelist for .NET (using C#) as a solution for current and future projects, as well as design and code reviewer for projects written in C#. Driver for the acceptance of a more agile process for developing software, including pushing for a more test-driven development methodology.

Researched and designed next-generation business object and database-independent data access layers, including selecting patterns, class models, application blocks, and frameworks to facilitate writing these layers. Helped .NET development teams understand different design possibilities to select best solution. Drove project to design better packaging story for classes into assemblies to aid with versioning. Designed in-house company-specific frameworks.

Extensive experience in analyzing and fixing poorly-written C# codebase to improve performance, stability, and memory consumption. Wrote and presented many internal C# and development-related seminars to increase understanding of C# and .NET technologies (topics included: using exceptions, unit testing, design patterns, coding anti-patterns, generics, iterators). Wrote the company’s general and C#-specific coding standards.

Show/hide job description

March 2004 to February 2005 (11 mos)

Falafel Software, San Jose, CA

Senior Software Architect

Falafel Software was a consultancy based in San Jose, CA, that was closed down in 2017.

Was employed as a Senior Software Architect, mostly involved in medium-sized projects, working in small teams or solo. Examples of work completed: writing introductory courseware on using Borland’s C++BuilderX product; implementing a suite of components for WinForms applications that enables command objects to be linked to UI controls to centralize action processing (initially written for a large customer, but it was then converted into a retail product called CommandMaster).

Final contract was designing and implementing a multi-tier Volunteer Tracking system for a Californian non-profit organization. This system was written in C# and ASP.NET 1.1 and used SQL Server 2000 and Reporting Services on the backend. Used code generation to generate the majority of the SQL scripts (for both table creation and stored procedures) and business layer code from the simple data descriptions.

Show/hide job description

May 2003 to December 2003 (8 mos)

Microsoft Corporation, Redmond, WA

Program Manager

Microsoft Corporation is a rather large well-known software company.

Was employed by Microsoft as Program Manager in the Visual C# team in the Developer Division. The team acts as a “component vendor” for the main Visual Studio product, providing IDE functionality specifically for C# users, debugging functionality across the product, and, of course, the C# compiler. Worked as one of the Program Managers in the IDE section. Was involved in work primarily on Whidbey (the code name for Visual Studio 2005). Responsibilities included designing the Reorder Parameters, Add Parameter, and Remove Parameter refactorings; designing the initial look of Whidbey for C# users; writing a strategy for improving help documentation; participating in other IDE design meetings; designing a new development methodology for the next Visual Studio version after Whidbey. Gained extensive knowledge of the new C# 2.0 features: generics, iterators, anonymous methods.

Show/hide job description

March 2002 to May 2003 (1 yr, 2 mos)

Aristocrat Technologies, Las Vegas, NV

Director of Future Systems

ATI is a subsidiary of Aristocrat Leisure Ltd, an Australian company developing and marketing gaming machines and systems for the casino industry.

Was promoted from TurboPower to lead the development effort to produce a new global casino management system to be written in C# and .NET. Responsible for devising and implementing the development process (a simplification of the Rational Unified Process) and for putting quality software standards and processes into action (a mix between eXtreme Programming and Test-Driven Development). Liaised with Marketing and other departments, including country managers, to review and approve requirements list. Responsible for and manage a team of developers and QA engineers. Also in charge of budgetary and other financial planning for the new systems division. Project cancelled during company reorganization.

Show/hide job description

May 1993 to February 2002 (8 yrs, 10 mos)

TurboPower Software Company, Colorado Springs, CO

Software Engineer, Director of Engineering

TurboPower Software Company wrote and sold programmer tools and libraries for Borland developers. It was acquired by Casino Data Systems in 1995, which was then acquired by Aristocrat Technologies in 2001; TurboPower was finally closed down in January 2003 and its products were open-sourced on SourceForge.

Originally employed by TurboPower as a software engineer working on their B-Tree Filer database engine and to help with their telephone technical support. Responsible for the development of new releases of this product and the writing of the user manual.

Managed the development of Orpheus (a collection of UI components, the first released for Delphi 1), writing the file viewer, the grid, and part of the manual and help system. Later managed the development of Orpheus 2, the 32-bit version for Delphi 2. Oversaw and wrote part of SysTools, a library of algorithms and system-related routines.

Designed and managed the development of FlashFiler, a client/server database engine. Wrote the server, the client-server communications layer, and the interface to Delphi’s database classes. Wrote the manual and help system.

Was promoted in July 1996 to Director of Engineering. Responsibilities included the managing of all the tools and library development at TurboPower; making recommendations and decisions about possible future products; managing all the software engineers and their day-to-day work; participating in the budget process; prioritizing development versus technical support; mentoring developers; hiring new programmers; writing and proofreading manuals.

Development work was reduced; however, highlights include designing and writing the Zip Deflate compression code, a “large decimal” class for performing accurate arithmetic, a set of stream classes, random number generators, etc.

Delphi and Borland C++ Builder on Windows; some Borland Kylix on Linux.

Show/hide job description

November 1990 to April 1993 (2 yrs, 6 mos)

Deutsche Bank AG, London

Trading Systems Manager

Deutsche Bank is the largest German bank and the fourth largest bank worldwide. The London organization was essentially a merchant banking operation in those days, with emphasis on bonds, swaps, and options.

Headhunted to analyze, design, and implement a swaps trading system, to advise on and manage the Swaps Group’s software and hardware requirements, to represent the Group on technical matters, and to oversee and improve the Group’s LAN. The London Swaps Group had close links to other Deutsche Bank Swaps Groups worldwide and my expertise was used globally. Reported directly to the Head Trader.

The system implemented was a portfolio management system for swaps, FRAs, loans, deposits, and FX trades. It was multiuser, multicurrency, and multibook. Trades and complete books could be valued; swap equivalent hedges were also automatically calculated. New in-house developed algorithms and portfolio research were used throughout. Assembly and object-oriented Borland Pascal on DOS and NetWare.

Show/hide job description

May 1990 to November 1990 (6 mos)

Softbridge Capital Markets Ltd., London

Design Consultant

Softbridge Capital Markets Ltd wrote and marketed a swap portfolio system. It has since been acquired.

Was employed as chief designer for their Swaps Manager package. Redesigned the user interface in order to target the product towards dealers and traders. Designed and specified the new Futures module, made various recommendations on improving the performance of the algorithm for recalculating the zero coupon curves. Designed the new amortizing swap entry module. C/C++ on DOS.

Show/hide job description

September 1989 to May 1990 (8 mos)

Elders Finance Group, London


Elders Finance Group were a UK financial division of an Australian conglomerate.

Investigated and researched better algorithms for hedging swap portfolios using Futures and FRAs as hedging instruments. Designed and started to write a program for tracking portfolio hedges but, unfortunately, Elders were closed down during my contract. Helped during the shutdown by writing various applications and by managing their portfolio systems. Turbo Pascal on DOS.

Show/hide job description

July 1988 to September 1989 (1 yr, 2 mos)

Intercapital Brokers Ltd, London

Development Director

At the time, Intercapital Brokers Ltd (ICAP) was a small brokerage that focused on broking futures, FRAs, swaps and other related financial instruments. It created a small software subsidiary called Data Analysis Risk Technology Ltd (DART) to write and sell swaps trading software on PCs.

Headhunted from MHL to become Development Director of the new company and to design and write the software. Learnt the various money market and capital markets valuation algorithms, designed routines to calculate zero coupon curves, present values, and swap durations, and wrote the Swap Portfolio Manager. Demonstrated the pre-release version to potential customers in the City, in the UK, and in Europe. Turbo Pascal on DOS.

Show/hide job description

March 1984 to July 1988 (4 yrs, 4 mos)

Manufacturers Hanover Ltd, London

Front Office Systems Manager

Manufacturers Hanover Ltd (MHL) was a merchant bank specializing in Eurobond trading. It merged with Chemical Bank, then with Chase Manhattan, and is now part of JP Morgan Chase.

Graduated from analyst/programmer working on my own modifying/enhancing the bank’s MIDAS/34 system, to Systems Manager with sole responsibility for MHL front office systems. In addition, managed a team of six System/38 analyst/programmers, designed and helped write a new Eurobond trading system on the System/38, maintained the Bank’s population of personal computers, and looked after the bank’s communications amongst its various computer systems.

Had sole responsibility for the PC population (from ordering PCs, to arranging maintenance contracts, to programming small applications, to providing an informal help desk). Designed and wrote various spreadsheets for the Eurobond Trading desk. RPG II/III on System/34 and /38, also Lotus 1-2-3 on PCs.

Team management included recruitment interviews, staff appraisals, salary review recommendations, as well as the normal day-to-day management of projects and the team members’ work.

Show/hide job description

November 1982 to March 1984 (1 yr, 4 mos)

Brooke Bond Group, London


Brooke Bond was a retailing company specializing in teas and coffees; it is now part of Unilever.

Was involved in a Group Accounting system for the Finance division to correlate and consolidate the Group’s accounts. Wrote the program specifications from an analyst’s system design, created the data dictionary, and databases; then, with a team of two outside contractors working under me, wrote the complete system. After the programming phase, performed the system test with data and help from the Finance Division. Set up the in-house programming standards. RPG II on System/34.

Show/hide job description

September 1979 to November 1982 (3 yrs, 2 mos)

CAP Group Ltd, London


CAP was a consultancy company.

Was involved in numerous projects, initially as a programmer, but graduating to program design and systems analysis. Most projects were on the IBM System/34 using RPG II for various commercial, industrial, and financial clients.

Show/hide all publication descriptions

Show/hide publication description

December 2013

Kindle: Unlock the Full Potential

Author of “How e-ink works” chapter

This was a one-off “bookazine” by Future Publishing Ltd that covered all aspects of owning an Amazon Kindle. Essentially a book in a magazine format. Wrote the chapter on how e-ink works.

Show/hide publication description

May 2007 to October 2012, monthly


Author of Theory Workshop section

PCPlus was a British magazine that covered general hardware and software topics, appearing on a monthly basis. It had a small section on programming at the back. Wrote the Theory Workshop section from May 2007 until October 2012 when the magazine was closed down. This section covered basic algorithms, computer science theory, and history of computers, and was generally aimed at the interested programming amateur rather than the professional. Originally two pages in length, but was ‘promoted’ to three pages in January 2009. Wrote 70 articles in all.

Articles were republished on personal blog after a year. (Full list)

Show/hide publication description

November 2009

Professional DevExpress ASP.NET Controls

Author of chapters on JavaScript, charting, async programming

The book was an exploration of using ASP.NET controls from DevExpress in professional web applications. Was called in at a late stage to help finish the book, and wrote the chapters on charting, asynchronous programming using AJAX, and the section on JavaScript.

Show/hide publication description

November 1997 to January 2007, monthly

The Delphi Magazine

Author of monthly algorithm articles

The Delphi Magazine appeared monthly until March 2007, publishing technical and programming articles for Delphi developers. Wrote for the magazine from November 1997, and was given my own column on matters algorithmic in June 1998 (Algorithms Alfresco). Wrote an article every month from then onwards until just before it closed down (with a hiatus from May 2003 to February 2004 because my employment with Microsoft required me to stop). Topics have included binary and ternary trees, B-trees, encryption, compression, multithreading, random numbers, automata, binomial heaps, simulation, sorting, genetic algorithms, and so on.

Show/hide publication description

June 2001

The Tomes of Delphi: Algorithms and Data Structures


The book provides Delphi developers with a comprehensive overview of using algorithms and data structures from a practical perspective. It begins with a discussion of algorithm performance, and provides comprehensive coverage of such topics as arrays, linked lists, and binary trees. The book focuses on search algorithms—such as sequential and binary search—and sort algorithms—including bubble, insertion, Shell, quicksort, merge sort, and heapsort—along with techniques for optimization. Additionally, it presents hashing and hash tables; priority queues, state machines and regular expressions; and data compression techniques such as Huffman and LZ77.

“The Tomes of Delphi: Algorithms and Data Structures is a practical, well written, and comprehensive resource.” Tom Lisjac, Delphi Informant review

“I strongly recommend that all Delphi/Kylix developers buy it.” Zarko Gajic,

The Kindle edition.
The Lulu paperback edition.

May 1997

Special Edition: Using Delphi 3

Author of chapter on multithreading

Languages & Technologies

HTML5, CSS3, and JavaScript (and the usual libraries)
C# and .NET Framework (from 1.X onwards)
SQL Server T-SQL


Algorithms and data structures
Agile methodologies (XP, TDD, refactorings, code generation, etc)
n-tier Architectures, Client/Server
Project and team management
Object-oriented analysis, design, and programming
User interface design
Financial and banking algorithms