Experienced software architect and developer with an emphasis on the Microsoft platform. Working in diverse industry sectors has provided an understanding of the various business drivers behind modern IT systems and required the ability to adapt quickly to different environments. A history of working both alone and as part of a team, coupled with extensive design and implementation experience and a proven ability to impart systems knowledge, provides rapid positive results for your project.

Both full and concise copies of my software development cv are available.

Work History

Work History
Aug 1995 - Present

Managing Director

Greystoke Systems Ltd
May 2010 - Dec 2010

C#, SQL Server & ASP.NET contract developer


Design, develop and support web service and ASP.NET / Ajax web sites that record phone manufacture, register customers and send relevant information to third party service suppliers. Work areas included:

 Migration from Visual Studio 2005 to 2010 and introduction of continuous build and test using

Provision of customer authentication and email services using OpenLDAP accessed via SDSP.

Development of style sheets for new web services and the transforms to fulfil them from existing data

Work on database to resolve deadlocks and get stored procs to generate xml based result sets

Aug 2009 - Apr 2010

C#, SQL Server & ASP.NET contract developer

NICE CTI Systems

Part of team developing software used to capture and organise audio and video recordings made by public safety operations (police, air traffic control, etc.). This covered all areas of the product from the server and database, through to the WinForm client distributed via an ASP.NET website. Work areas included:

Modify software to support both IPv4 and IPv6 based networks

Resolution of threading and database locking issues encountered in systems with multiple servers

Development of mechanism to detect tampering of database tables used within the system

Implementation of additional system administration functionality requiring updates to database tables, server access mechanisms and client control panels

Development of multi-threaded test harness to simulate multiple concurrent connections for stress testing of the server. Collection and analysis of performance metrics collected by the test harness

Resolution of various bugs and performance issues raised by customers

May 2009 - Aug 2009

C#, SQL Server & WCF freelance developer

Brand Management Agency

Design, develop and support WCF based RESTful web service secured by 2-way SSL that records payment information for developers of mobile phone applications hosted by O2 Litmus. Work areas included:SQL Server 2008 database to store information on developers and the accounts earnings are credited to C# based web service implementing the payment work flow – i.e. validating incoming data, updating database tables and generating reports from which payments may be made

Aug 2007 - Jan 2009

C#, SQL Server & ASP.NET contract developer

Design, develop and support web service and ASP.NET / Ajax web sites that record phone manufacture, register customers and send relevant information to third party service suppliers. Work areas included: SQL Server 2005 based database to store information on phones, their owners and services subscribed to C# based web service implementing the customer registration workflow – i.e. validating incoming data, updating database tables and forwarding information to other systems via web services and SyncML Development of XSD describing the data consumed and produced by the web service methods Production of customer registration and support web sites utilising this web service Writing tools to aid the translation and re-skinning of Java and Flash applications shipped with the phone
Jan 2005 - Jul 2007

C# & WinForms contract developer

Nokia Mobile Phones
Part of team designing, developing and supporting .NET based framework enabling test engineers to develop libraries which exercise mobile phones attached over a variety of media. Work areas included: Prototyping Windows Workflow Foundation based environment for specifying tests Development of executables to host test libraries. Unattended testing was via a service controlling a bank of PCs that would flash mobile phones with the latest software and then execute a series of tests configured via a WebService or Click-Once application. Tests could be run locally using a WinForm. Use of CodeDom to produce source files from an XML specification. The generated partial classes represent messages that can be sent to / from a mobile phone and provide byte stream serialisation. Develop class framework to simplify common tasks, e.g. Audio capture and FFT analysis, OCR and image comparison / validation, error handling, analyse phone memory leaks, generate and disseminate reports from XML, transfer OMA and WM DRM protected content, control of CMU200, etc. Maintenance of multi-threaded C++ communications layer that passes byte streams between test and phone over appropriate media (USB, Bluetooth, IR, FBUS) using relevant protocols. Transferring class framework to central group for adoption as company wide testing mechanism Production of PC based SyncML DM User Agent for testing phone SyncML implementation.
Dec 2002 - Dec 2004

C++, C# & SQL Server contract developer

Part of team implementing the successor to LOTIES 2002, 2003, 2004 and SCL 2003 award winning digital dictation workflow software. Implemented using an n-tiered architecture where both windows and web based clients’ record and play back dictations, storing the audio files on centralised clustered servers. Inter application communications took place via XML documents passed over TCP sockets, intra application was based around COM. Work areas included: Design and develop in Visual C++, ATL and STL the server responsible for processing dictation workflows and disseminating results to clients. Implement authentication process based around directory servers (typically Active Directory), or where unavailable NTLM. Synchronise the list of registered users with directory servers via LDAP. Design and development in C# of streaming audio server and ASP.NET based web client using ADO.NET to access a locally held database Work on unified real-time access to dictations on various digital recording devices via disparate SDKs. Advising on .NET and database issues Design, develop and tune server-side SQL Server schema and stored procedures. Initial ports to MySQL and Oracle. Custom report generation using XSL to render output in the appropriate formats Tuning and bug fixing within all system components, such as the MFC based client, bespoke client side transactional relational database and streaming recorder supporting Windows, WTS and Citrix
Sep 2001 - Jul 2002

C++ & SQL Server contract developer

BBC Technology
Part of team designing, documenting and developing a web based-system implemented using C++ as a series of COM+ components called from an ISAPI extension DLL. Its purpose was to sell licences for and stream copyrighted media items to the public on behalf of various clients. The system hosted one of the most successful DRM implementations to date, accounting for £60,000+ of sales. Access to the streams was controlled via the Windows Media and Real DRM mechanisms. For resilience the system was hosted within a load balanced web-farm with session data stored in a common database. Work areas included: Payment collection via WorldPay Session state management via SQL Server 2000 Database schema design Digital Rights Management of copyrighted media items
May 2000 - Jul 2001

C++ & MQ contract developer

Post Office
Provision of COM and middleware consultancy. Tasks included: Design and development in VC++ and VB of n-tiered COM+ based web front-end to a Mainframe application. Transaction proxies called by ASP pages used COMTI to populate CICS COMMAREAs. Operation within stateless web farms required the production of a state storage mechanism based around SQL Server 2000. Programmatic access provided through MSMQ, converted by the MSMQ Bridge into MQSeries messages to be processed by the mainframe application. Designed, developed in C++ and documented cross platform (HP-UX, Windows 2000) MQ isolation layer insulating both organisation and COOL:Gen application developers from the underlying technology. A COM wrapper catered for VB and ASP developers. Inclusion of hooks for distributed transactions (Encina and MTS). Support of Encina COM objects and associated broker. Write and review middleware strategy documents on MQ, MQSI and ConstellaHub.
Sep 1995 - Apr 2000

C++ & MQ contract software developer

Development and support of MQSeries for Windows NT / 2000 from inception to version 5.2. Work areas included: LDAP schema for use in Active Directory and Secure Way directory servers. Extensive prototyping in both C and Visual C++ was required to validate suitability of various schema designs. Development in Visual C++ of both COM and LDAP update and query mechanisms enabling internal and external administration tools to control MQ installations. XML based interfaces using Xerces-C and STL under Visual C++. Permitted administration of MQ to be undertaken using XML as opposed to the previous proprietary mechanisms. Support of the Microsoft Clustering Services (MSCS) development Advised on the technicalities of and implemented the code to extend the MQ COM interfaces. Supported Microsoft’s Active Directory Service Interfaces with the introduction of a new namespace. Involved considerable use of DCOM to provide a virtual directory - information held on individual queue managers being remotely accessed through ATL based COM objects. Network problem analysis and resolution - mainly TCP and NetBIOS but some exposure to SNA. Provision of NT service to act as interface between the Service Control Manager and MQ components. This had to respond to start and stop requests, activating the appropriate MQ programs. Port exception handling from the original UNIX based model to one that could exploit the structured exception handling (SEH) mechanism provided by NT. Besides capturing and logging errors to both the event log and disk file hooks to error recovery code had to be provided. Provision of internationalised messaging services. Text to be displayed was stored within a catalogue with access based on message and language identifiers. Besides producing code to retrieve these messages, an automated catalogue generation system was developed. Addition of COM interfaces (MQAI) to provide access to MQ.
Jan 1992 - Aug 1995

Software engineer

MBA Systems
Design, produce and support data dissemination and presentation systems for the financial markets, operating under Windows NT, Windows 3.1 and DOS. Assignments included: Object orientated design and implementation in Visual C++ of customer based servers, running under NT. These used real-time data feeds (TOPIC3) from satellite or leased lines to construct databases from which information requests received from existing TOPICplus workstations could be satisfied. The databases were split into two areas (viewdata and instrument prices + volumes) maintained by separate servers. Each had to be self reliant, performing appropriate activities at pre-set times. To allow performance monitoring statistical information was logged to both screen and file. Besides coding, there was responsibility for producing large amounts of the servers design and acting as a reference point on data feed handling, due to previous experience in these areas. Supervision of contracted employees was required, together with the production of help files - both manually and via packages such as RoboHelp. Object orientated design and implementation in Visual C++ of NT based data feed converter that transformed Sequence (a new X.25 based service from the London Stock Exchange) into CRS (a previous format) for use with existing systems. ODBC was used to manipulate a database of instrument information. The converter was composed of a number of separate applications communicating via IPC mechanisms, each logging statistical information to allow performance tracking to take place. Control was provided via dialog interfaces to each application. Although originally intended for use with all Sequence releases the TOPIC3 converter superseded this product. The conversion effort involved considerable liaison with the stock exchange over and above their Sequence user meetings.
Jun 1992 - Dec 1992

Junior software engineer

Apple Macintosh application development in C++. Assignments included: Designed and developed program allowing any address in the UK to be found via its postcode. Enhancement of package to produce and control web-offset printing of labels for surgical envelopes. The program had to calculate the most efficient layout of irregularly shaped labels to minimise wastage.
Jul 1990 - Sep 1991

Industrial trainee

Produced multi-media applications under various languages (including AVC and C) for both internal and external use. Appraisal of various multi-media packages, particularly in respect to their operation over LANs. Trained others in use of AVC a multi-media authoring package. Assignments included: Mouse operated front end, written under AVC, for accounting package using both the PC and AS/400. Package to enable AVC to interpret word-processed documents with embedded commands. This allowed multi-media presentations to be quickly and easily generated from existing documentation. ID-badge generator using C to control image capture card and SQL to access employee details database.


1988 - 1992


University of Portsmouth