
Defence
At Your Service.
Leonardo, Airborne & Space Systems, Luton, Bedfordshire, UK Dec 2017 – Nov 2019
​
Supported the lead architect with final development and integration of Qicr, a VS 2017 C++11 based inter-process messaging publisher-subscriber middleware product into the Next Generation Defensive Aids System (DAS) team. Consumer class callbacks invoked from within Qicr ran in a separate consumer thread dedicated to each EndPoint with a socket based Message Router in-between. Developed a Qicr Message C++11 class generator using an XSL stylesheet with a Qicr Message XSL Transform and a C# Reader/Writer, then assisted the team with development of ViconXF, SAGE sensor and Meggitt HMI interfaces for a VxWorks target and CppUnit unit tested on Windows 7. NuGet Package Manager. TFS version control. AGILE process.
​
One of five developing the C++ Rhapsody UML based Apache AH-64E and Chinook CH47 helicopters DAS Controller variants, increasing their platform survivability over than provided by federated sensor and effector sub-systems. Personality modules for the Laser and Radar Warner Receivers, Modernised Radar Frequency Interferometer, Missile Warner, Counter Measure Dispensing System mapped CRUD reports into common Tracks then a prioritised Tactic to deploy was decided based on Threat Angle of Arrival, Platform height, bank angle, speed and the aircraft and dispenser notified. Mission data was recorded throughout to a Data Transfer Unit, messages configured by JSON files. A Secure Load facility transferred the VxWorks target onto the rig. The VS 2017 Windows 10 target was host tested by injecting events into a separate DASC adaption layer, forwarding them to the DASC core. Dimensions was used for version control. Waterfall process.
​
Thales Land & Air Systems, Templecombe, Somerset, UK Nov 2016 – Nov 2017
​
One of five developing the CROWSNEST replacement for Sea King Mk7 airborne surveillance and control mission planning capability for the Merlin Mk2. Developed Link 16 JTRS/MIDS terminal load software in Java 8 for the Merlin plus mission preparation and video download/replay software (C++). The work included presentation layer and integration into a multi-tiered architecture developed in both Java 8 and C++ for a Windows 7 laptop target. SQLite, Postgres and Access databases supported client and encoding/decoding meta data. Tools included UML, Eclipse, JIRA, BitBucket, Git, SonarQube, KlocWork, Jenkins, Maven. Common Language Runtime C++ on VS2015, all to an Agile process.
​
Ultra Electronics Sonar Systems, Weymouth, Dorset, UK October 2014 – April 2015
​
Part of the Processing team developing data injection solutions to stimulate the Integrated Sonar System (ISS) for the Air Warfare Destroyer for the Royal Australian Navy. Developed in C++ a Windows/Linux (RHEL/CentOS) scenario generator tool using Xerces-C++ XML Parser. This injected Hull Mounted Sonar and Variable Depth Sonar data in XML format into the back-end processing chain (concurrent multithreaded processes generated from a graphical circuit designer). These injected, timed events played out as simulated live ping transmissions, reflections, target kinetics and acoustic environmental data, distributed via DDS middleware, then represented graphically following processing as torpedo or ship contacts, based on their frequency profile, on the Simulation Java based GUI. Developed a process to control a third party process via Rti DDS subscription. Gained DDS/Clip MT architecture and sonar domain knowledge. Some Matlab.
​
MBDA, Stevenage, Hertfordshire, UK January 2013 – October 2014
​
Lead architect/designer/C++ developer, in a team of four, of a missile simulation system for the MoD. This began with a C# GUI client and a procedural Ada algorithm legacy and ended with an enhanced C# client and a green-field OO C++ hard RT server, designed in Rhapsody under RUP. The team were one for the C# GUI, one for the tracking/algorithm design, one for hardware, and myself who designed and developed the architecture and much of the application code of the server in C++98/11 under VS 2010 for RTOS Windows 7 RTX embedded. This included a Service Orientated Architecture (SOA) (like DDS), with message passing for inter-thread communication, a shared memory message database to connect with a C-binding to the in-house Atena package of hardware drivers, all over an OS platform layer (both RTX C-runtime and Boost) and configured using a C# inspired C++ dependency injection (DI) layer, using Google Hypodermic. Atena provided a C API and drivers for the Ethernet connection to the C# GUI and digital I/O and 1553 bus, so embedded RTOS issues were understood more than driver development. The SOA, VC++11 (lamba functions), DI, templates and X-platform OS interface allowed focus on the application. Experience was gained in C++11/architecture design, hard RT embedded systems development. Some C#.
​
IBM, Farnborough, Hampshire, UK November 2009 – March 2011
​
One of Halifax-Class Modernisation Tactical Data Link development team producing a Link 11, 16 and 22 upgrade for the Canadian Navy, sub contracted from Lockheed Martin. C++ Pattern based framework supported standardized message processing for local/link and data forwarding development for F, J and M series messages for the DLPS core server, which connected to an Oracle database. C++ interfacing to Link 11/16 Ada legacy core, with Link 22 written entirely in C++. Multiple message objects, managers and transmission rules developed in C++ alongside Simulator development. STANAG requirements analysis recorded in Requisite Pro. Testing in Rational Manual Tester. Windows XP/Visual Studio environment.
​
Electronic Data Systems (EDS), Hook, Hampshire, UK May 2009 – July 2009
​
One of the transformation team on the MoD mission planning AMPA (Advanced Mission Planning Aid) Hawk AJT aircraft project, tasked with developing part of a C++ aircraft deployment framework suitable for configuring a video replay sub-component of AMPA. Design patterns found in Java Spring - Inversion of Control (IoC) and Dependency Injection (DI) were to be implemented in C++ using open-source software to produce a simple, decoupled system of objects whose deployment is configured by XML data.
​
Development: POCO (Plain Old C++ Objects) Capsule (an XML based IoC container) was applied to configure toolbar and controls (developed in wxWidgets, a cross-platform GUI toolkit, similar to Qt). Once this proof of concept was complete it could be adopted more widely on the project. The two open-source libraries each controlled their own event loop so separate event handlers were written for each side and custom events injected from a managing thread to oversee the initialization of the GUI from the IoC software. C++ code development: Eclipse under Redhat Linux, version control: ClearCase, design: Rational Rose, Doxygen. RUP/Agile development process. Testing: Locally on Linux box for proof of concept.
​
Aerosystems International, Yeovil, Somerset, UK August 2007 – January 2008
​
One of four developing the BAE Systems UK Wedgetail Tactical Data Link (TDL or TADIL) L11/L16 Network Simulator interface. This interfaces between Boeing’s MCS Airborne Early Warning and Control tactical system onboard 737 aircraft and BAE Systems Australia OMS which generates operator training data. The VC++/Windows XP application was split between GUI, message processor and simulator processes running on each of five platforms (Workstations, OMS, Term and Host) interlinked via UDP socket messaging in polling (L11) and broadcast (L16) architectures. Agile development process.
​
Development: Designed (UML in Enterprise Architect) and developed in VC++/STL for the GUI, simulator and message processor components: randomized geodetic position error enhancements, and sensor radio silence capability such that sensors in radio silence are reported as tracks when in range of active sensors and report themselves again when they come out of radio silence (each sensor has a link specific transmit list of message nodes). The development conformed to NATO STANAG for L11/L16.
​
Testing: Stand-alone and target system regression tested on delivered 5 x Window XP platform configuration prior to handing over for formal regression testing to test department.
​
Thales Aerospace Division, Crawley, West Sussex, UK February 2007 – July 2007
​
Part of a team developing a loosely coupled, cross-platform, message orientated middleware framework based on service orientated architecture and written in C++ using UML (with wide use of C++ templates), suitable for cross-compilation on VxWorks, Linux and Windows. The framework is to be used throughout the Thales Group, the latest project being the Watchkeeper Unmanned Air Vehicle (UAV). It was developed using MS Visual C++ 2005 (version 8.0), MFC 8.0, Visual SourceSafe 6.0.
​
Development: One of two developing five new VC++ MFC GUI controls (frequency, altitude, location, bearing and time) for the GUI for data entry fields on the Watchkeeper project. These standardised field formatting code with use of C++ templates.
​
Development: Worked on the Radar Message Level Simulator (MLRS3) project for the Viper Radar. Added an Ethernet interface to allow XML scripts to run through the radar simulator remotely by the addition of a UDP network connection to a Flight Trials MMI which would be run from within an aircraft. Again this was written in C++ but used Borland Developer Studio (C++ Builder) 2006.
Testing: Wrote a simple static code analyzer in C++ for the framework code to provide basic complexity measures as part of testing metrics. This also acted as an introduction to the code base.
​