shortformrecentcv-v1.12
TRANSCRIPT
CURRICULUM VITAE
V1.12 Page 1 of 8
David G. Cannon
Mobile: 07858 727 905 Nationality: British (no work restrictions)
Email: [email protected] Security: Cleared to SC level (lapsed)
Summary
IT professional with 20+ years experience, with Java, C#, C++, Microsoft and Open
Source technologies, across Embedded, Workstation, Server and Application platforms.
Proven track record in all aspects of software development lifecycle, including Business
Development/Analysis, Project Management, Requirements Capture, Design,
Development, Testing and Delivery Management within structured and quality controlled
environments.
Self motivated and dedicated with a collaborative and communicative open style, able to
see the big picture and also focus on detail; with strong technical, commercial, team
building and motivational skills.
Strong organisational skills within and across delivery teams, organisations and suppliers.
Experience in Technical Lead, Team Lead, Developer and Delivery roles.
Technical Summary
Languages/Scripting Java, C#, C++, C, JavaScript, NAnt/Ant, MS Build, Python/Jython
Architectural Frameworks .NET (v3.5, 4), Silverlight v4, Spring, Spring ROO, WPF
Patterns & Practices Software Architecture - Gang of Four (GOF) Design Patterns, Microsoft
Patterns & Practices (Unity, Enterprise Library, MVVM)
Web Technologies Apache Tomcat, IIS, XML, XAML, CSS, XSLT, HTML, JAXB, JCE, SOAP,
WSDL, Web Services, REST, Servlets, JSP, ExtJS
Database Technologies MySQL, PostgreSQL, Oracle 11g, SQL Server, JPA, Hibernate, SQL,
PL/SQL, Transact SQL, SQuirreL (Universal SQL Client), Hibernate
ORM, Java Persistence API (JPA)
Tools Eclipse, IntelliJ, Spring Tool Suite (STS), MS Visual Studio (v1 –
2015), MS Expression Blend v4, MS Office 2013 (MS Project),
Continuous Integration (CI) (Jenkins, Cruise Control, TeamCity),
MSBuild, MediaWiki, IM, Outlook, FxCop, Checkstyle, Cobertura,
NCover, Resharper, CVS (TortoiseCVS, WinCVS, CVSNT), SubVersion
(SVN) (TortoiseSVN, VisualSVN), AccuRev CMS, Git, Team Foundation
Server (TFS), Enterprise Architect (EA), Maven, Notepad++, JIRA,
(GreenHopper, JIRA Agile Plug-in), Artifactory, Nexus (Maven
Repository Managers), Confluence, MediaWiki, InstallShield,
mRemoteNG
OS Microsoft Windows Desktop (v3.1/3.11 thru’ Windows 10), Windows
Server (2003 – 2012), UNIX, LINUX
Methodologies Agile, SCRUM, RAD, Classis Waterfall, UML (Enterprise Architect), OO,
Classes Responsibilities Collaborators (CRC), Use Case Analysis,
Function Point Analysis, Training Needs Analysis, Workflow Analysis,
Test Driven Development (TDD), Behavior Driven Development (BDD)
Test Technologies/Tools NUnit, JUnit, Mocking (MoQ, NMock, JMock, EasyMock), Code
Coverage (Cobetura, NCover), DBUnit, CPPUnit, TestTrack (Test Case
Management), Microsoft Coded UI
Libraries Google Guice DI, Logging (log4j, log4cxx, log4net, SLF4J, Logback),
ZLIB (compression), Java Native Interface (JNI), Connection Pooling
(C3PO, DBCP), Oracle OCCI, Boost, Standard Template Library (STL)
Virtualization
Technologies
VMWare, VirtualBox, Linux Kernel-based Virtual Machine (KVM), Citrix
Zen, Citrix Virtual Desktop Infrastructure (VDI)
V 1.12 Page 2 of 8
Assignments
Company: Robobank
Period: Feb 2016 – Aug 2016 (Contractor)
Role(s): Environments Manager
Joined Rabobank London’s Environments Management Team, who are responsible for the
continuous delivery of enhancements and patches to the bank’s PPQ trading platform from
development thru UAT to production servers. Duties included management of all automated
continuous integration, test and deployment processes and tools.
The PPQ platform comprises a suite of Desktop, Server and Database applications that span
Front Office (FO), Middle Office (MO) and Risk. This suite includes in-house products and
industry standard third party applications like Calypso and Kondor+, interconnected using IBM
MQ. The platform manages trades from Capture to Clearing with connections to regulators and
third party providers like MarkitWire and Bloomberg.
Source control and work item tracking used Microsoft Team Foundation Server (TFS).
Continuous integration used Jet Brains TeamCity Enterprise 9.1.6 and Microsoft Visual Studio
Enterprise 2015 to build C#, C++ and TSQL code and run automated unit and integration
tests. Continuous deployment used XebiaLabs XL Deploy and XL Release.
Maintain Windows Installer MSI scripts using Flexera InstallShield. These MSIs were used
to deploy desktop applications using Microsoft System Centre Configuration Manager
(SCCM).
Maintain XL Deploy manifests and automate XL Deploy using the CLI programmed using
Python/Jython
Maintain Development and UAT environments, used by Developers, Testers and Business
Analysts.
Work with DBAs and developers to manage test databases using Microsoft SQL
Management Studio and TSQL.
Capture and disseminate knowledge as developed and retain it within teams using
Confluence wiki.
Participate in continuous improvement initiatives, working with colleges across delivery
and support teams.
Company: Thomson Reuters
Period: Jan 2012 – 2016 (Contractor)
Role(s): Senior Developer / Configuration, Integration & Delivery Manager
With the growing success of the Thomson Reuters Global Foreign Exchange Trading Platform a
number of initiatives were undertaken to standardise tools and process across projects and
departments.
Migration from SVN to Git, adoption of Maven and Artifactory repositories.
Extensive use was made of Maven features and plugins to build effective POMs and
illuminate copy-n-paste POM sections to maximise maintainability. This included making
use of multi-module projects features, inheritance and aggregation, BOM and the mixin-
maven-plugin.
To improve build infrastructure availability and throughput, build and test servers where
virtualised and multiple instances were run in parallel using VMware.
Participate in major platform enhancements to architecture, including the introduction of an
Enterprise Service Bus (ESB) and Oracle Coherence In-Memory Data Grid.
Develop services and core libraries written in C++ and Java 8 to interchange data via
Coherence.
To support production and test environments Performance and Monitoring of OS, JVM and
applications was introduced; using Graphite for data storage and Grafana graphing and
dashboards. This was implemented by all services writing statistics to Coherence, and a
publisher forwarding them to Graphite ingest servers.
V 1.12 Page 3 of 8
Company: Thomson Reuters
Period: Jan 2012 – Current (Contractor)
Role(s): Senior Developer / Integration Manager
I was retained by Thomson Reuters to prepare the Reuters Trading for Foreign Exchange
(RTFX) platform to meet the Dodd-Frank Wall Street Reform Act. Also involved in major
technology refresh programs to re-architecture trading platforms to deliver low latency trading
and increase throughput.
My role also included being an advocate for the adoption of the build and release management
processes and systems developed during my previous contract to other departments and sites
within the organisation. This includes both UK and overseas sites, across time zones and
cultures.
Duties included on-going evolution of Continuous Integration (CI) environment and
implementing a Component Build System (CBS). Migration of source control to Subversion
(SVN) and the introduction of automated version history and release recording based on
Oracle with browser based UI via Spring MVC website. Some experimentation also with
Spring ROO.
Build and release management work also included introducing the use of Maven and
Artifactory to support and manage deployment of Java components, in combination with
ANT scripts.
Due to the success of the Component Build System (CBS), I was involved in rolling it out
across the organisation.
Other duties include on-going product development.
o All solutions delivered using C++ on Microsoft Windows Servers, 2003/2008.
o Extensive use of Test Driven Development (TDD)
o Use of Boost v1.53, STL, TR1 and other third party libraries.
o Also included continuation of Oracle Database PL/SQL based stored procedure
development to enhance database performance.
Company: Thomson Reuters
Period: Oct 2010 – Dec 2011 (Contractor)
Role(s): Senior Developer
C++, C#, Java Developer working on upgrades to the Reuters Trading for Foreign Exchange
(RTFX) platform to meet the new regulations that govern the OTC derivatives markets. The
solution encompasses all users globally that trade any in scope OTC derivatives within the
regulated jurisdictions. The project involved meeting aggressive project timescales with
unmovable deadlines to ensure readiness for July 2012.
Responsible for putting in-place a Continuous Integration (CI) environment and
implementing a Component Sharing System (CSS) to support globally distributed
development and test teams in Bangkok, London and Russia. This included training staff
and porting legacy products to the CSS for integration with newly developed software.
Development of key system components and Oracle 11g interfaces compatible with Oracle
High Availability technologies using Oracle C++ Call Interface (OCCI) and Transparent
Application Failover (TAF). Development of Oracle 11g PL/SQL stored procedures.
CI implemented with Cruise Control .NET and NAnt; working with source control managed
by Microsoft Visual Sourcesafe (VSS).
Introduction of Open Source Analysis software (blackduck) to ensure products conformed
to licensing obligations and Reuters Open Source policy.
System development undertaken primarily in C++, with C# and Java used also. Other
languages, libraries and tools included SQL, PL/SQL, CPPUnit, STL, Boost, log4cxx, Oracle
SQL Developer, Microsoft Visual Studio 2008, MediaWiki, WinSCP, PuTTy, SQLPlus.
V 1.12 Page 4 of 8
System test infrastructure based on VMware LabManager to simulate data centre
deployment environment, CPPUnit and JUnit used for unit and regression testing.
Company: Intrinsica
Period: April 1993 – Oct 2010
The following assignments were undertaken on behalf of Intrinsica, a Hertfordshire-based Software Consultancy and Development Company.
I worked for Intrinsica for 17 years, in that time I fulfilled a consultancy role to service the needs of their broad client base, which involved both short term assignments on the clients site and heading-up out-sourced projects at Intrinsica's office.
I fulfilled numerous roles at Intrinsica spanning technical, management, consultancy, business analyst, customer facing as well as in-house sales/marketing and company
business development, more details are available on request. This version of my CV primarily focuses on technical experience.
Assignment: i2
Period: June 2010 – Oct - 2010
Role(s): Silverlight Developer, Scrum Team Member
Technologies: Silverlight 4, C# 4, XAML, Visual Studio 2010, Silverlight 4 Toolkit, Expression Blend 4, Microsoft Patterns & Practices, MS Unity DI (aka Prism), Oracle, NUnit, MoQ (mocking), Hudson CI, MediaWiki,
AccuRev CSM, FXCop, ReSharper
C# - Silverlight developer on i2’s Intelligence-Led Operations Platform, the platform of
choice for government agencies and private sector businesses, to investigate, predict, prevent
and disrupt the world's most sophisticated criminal and terrorist threats.
Working with C# 4, Silverlight 4, Java Web Service and Oracle 11g to deliver a Rich
Internet Application to co-ordinate team working across multiple agencies; and leverage
information from multiple data warehouses.
Senior Developer in UI Scrum team responsible for taking prototype UI designs and
implementing those applying Microsoft Patterns & Practices to produce a DI-style
enterprise solution. Using Unity v2 (aka Prism), MVVM, Behaviours, Dependency-Objects,
etc to ensure testability in a Test Driven Development (TDD) environment.
Liaise with developers and remote outsourced system test team to develop an extensive
automated UAT and regression test suite to support the incremental and iterative
development cycles.
Project utilised a range of tools to promote best practices in a Continuous Integration (CI)
environment. These included Resharper and FxCop to enforce coding style; NUnit, MoQ
mocking to implement unit test with NCover to measure coverage. Source control was
managed by AccuRev CMS; Hudson was used as the CI engine.
Project made extensive use of MediaWiki for documentation to support developers and
capture rapidly developing knowledge for technical authors.
V 1.12 Page 5 of 8
Assignment: Intrinsica
Period: Nov. 2009 - May 2010
Role(s): Technical Lead, Java Web Developer
Technologies: AJAX, Spring, Hibernate, ExtJS, Apache Tomcat, PostgreSQL,
HSQLDB, JUnit, EasyMock, DBUnit, REST, Maven, Hudson CI, MediaWiki, Eclipse IDE for Java EE, Google Android SDK, Subversion (SVN), GreenHopper for JIRA, UML, Enterprise Architect
(EA), XStream, log4j, Apache Commons, CheckStyle, FindBugs, Cobertura
Java - JavaScript Developer on Intrinsica’s revolutionary new Online Tree Inspection & Survey
System (OTISS) product aimed at landowners and organisations that have a legal “duty of
care” under the Occupiers Liability Act 1957/1984 for employee and public safety arising from
the condition of their trees.
Working with Java, JavaScript, PostgreSQL v8.4 and Google Android SDK to develop this
innovative mobile phone application and website; to support landowners and professional
surveyors with their geospatial asset management needs.
The project made extensive use of Open Source tools, OS, Virtualisation and libraries to
deliver a cost effective solution in a cost sensitive market place to maximise product and
service margins. These included Spring, Hibernate, Eclipse IDE, Maven, PostgreSQL,
Subversion (SVN), Hudson CI, Apache Tomcat, Java, Ubuntu KVM, log4j, etc.
Used Spring v3 and Hibernate to enable database agnostic persistence layer, integrating
with ExtJS front-end using MVC pattern to maximise cross browser support.
Responsible during the prototyping and early production phases for setting up a
Continuous Integration, Test Driven project environment, using GreenHopper for JIRA for
management of project’s backlog, sprint planning and tracking through the release
process.
Senior Developer and technical lead in an Agile project environment responsible for
technical leadership of development team, including code reviews and architectural design,
architectural white-board sessions with team members in both an ad-hoc and structured
manner.
The project used MediaWiki to provide an on-line dynamic resource for information. The
product was unit and integration tested using JUnit and EasyMock. The project had a
Continuous Integration server using the Hudson CI Engine; that provided automated build,
test and reporting. The work involved UML modelling, database schema and UI design
using Enterprise Architect (EA); implementing server-side code in the Spring MVC
framework with full support for transactional data storage and retrieval; development of
Hibernate Criteria and HSQL queries. A Representational State Transfer (REST) approach
was used for website URLs.
Assignment: Selex SI Ltd (formally Vega)
Period: Feb. 2009 – Oct 2009
Role(s): C++ Developer, Java Developer
Technologies: C++, Java, JNI, DLL, UDP, C Runtime library (CRT) and the Standard Template Library (STL), Visual Studio 2008 (Express),
Apache log4cxx, zlib (compression), Eclipse, UML, CVS, JIRA
C++ - Java Developer in an Agile team responsible for a strategic communications sub-system
of the YahSat satellite project intended for both commercial and government for the Middle
East, Africa, Europe and South-West Asia
V 1.12 Page 6 of 8
Working with C++ and Java to develop a communications sub-system designed to
provided a "one too many" bi-directional transfer of messages between Network Control
Centres and mobile ground terminals.
Implemented using a UDP based protocol designed to be fault tolerant, highly resilient
over high loss and high latency satellite links, also providing prioritisation and resilience to
outages at the sending and receiving ends.
This was a technically challenging project that involved writing multi-threaded code, with
constraints on minimising the number of threads and using a proprietary protocol over
UDP rather than TCPIP.
I introduced the Apache log4cxx to provide a highly configurable logging facility to aid test
automation and product development.
Packaged as a Windows DLL, that provided a C and Java Native Interface (JNI) to translate
between Java and C++. To keep the memory footprint small, the implementation was
restricted to the CRT and STL, with no 3rd party libraries. Integration testing used the JNI
with test harnesses written in Java.
All code developed in Visual Studio 2008 and Eclipse, unit test using CPPUnit, source
control used CVS, Enterprise Architect for UML design modelling and documentation using
MS Office.
Assignment: DRS
Period: Sept. 2008 – Jan 2009
Role(s): C# .NET Developer, SCRUM Team Member
Technologies: C# .NET, SQL Server 2008, Web Services, Visual Studio 2005,
NUnit, NMock, SubVersion(SVN), VisualSVN, Resharper, NDepend, SQL Server Management Studio, IIS, Windows Forms, Continuous Integration (CI) - Cruise Control
C# - .NET Developer participating in Scrum team charged with producing a proof of concept
next generation e-Marker® to provide a modular and scalable electronic on-line marking
application for GCSE and A-Level awarding, assessment and professional bodies.
Working with C# .NET Windows Forms and UI/UX designers to produce web-client and
web-service to extend DRS e-Marker® to mark essay style examinations, e.g. English.
Responsible for asynchronous multithreaded design to deliver reliable and secure
performance over low and high bandwidth HTTPS connections. Architecture based on MVC
and componentised to cater for differing workflows in DRS’s customer base.
Participated in re-architecting the back-end C# web services and SQL Server 2008
database schema to enable support for new marking client and database-driven
configuration of admin client.
Working with Visual Studio 2005, Resharper, VisualSVN, NUnit, NCover tools to produce
high quality code in a Test Driven Development and Continuous Integration environment.
Assignment: i2
Period: Dec. 2007 – Aug. 2008
Role(s): C# Developer, Java Developer
Technologies: Java, C# .NET, SQL Server 2005, MYSQL, IIS Apache Tomcat, AJP13, Advanced Encryption Standard (AES), Integrated Windows
Authentication (IWA) aka SPENGO, Hibernate, SOAP, WSDL, Eclipse, JUnit, JMock, MySQL, HSQLDB, SQLServer and ANT
C# - Java Developer involved in the development of a Java SDK product used by i2's
Professional Services to facilitate data mining semantically tagged relational databases using
i2's visual investigative analysis software.
V 1.12 Page 7 of 8
Working with C#, Java, Hibernate to produce i2’s iXa Web Services SDK a library of Java
components and tools to allow the rapid production of a Java Web Service that can be
hosted using industry standard Application Containers, e.g. Apache Tomcat; and target
SQL Server 2005, MySQL, and other databases. SDK also included utilities written in C#
.NET for use with i2's SQL Server based products; these were developed using Visual
Studio 2005.
Responsible for a password encryption solution that allowed JAVA and .NET products to
inter-operate, which was based around the Advanced Encryption Standard (AES), using
the Rijndael cipher; and worked on inter-operability between IIS and Apache Tomcat using
AJP13
Assignment: Selex SI Ltd (formally Vega)
Period: Feb. 2007 – Nov 2007
Role(s): Consultant
Technologies: UML (Enterprise Architect), Use Case Analysis, DOORS, Systems Engineering, V-Model
A Systems Engineering Consultant, reporting directly to the Technical and Software Development Managers on the project team responsible for delivering the UK WATCHKEEPER
Tactical Unmanned Air Vehicle (TUAV) through-life training solution.
Responsible for carrying out a risk mitigation exercise for all the risks identified during the
contract bid phase and refined the project Quality Assurance plan.
Reviewing the customers’ requirements, the proposed system architecture and high level
design to identify any deficiencies. This was done using a Requirement Management
approach that provided full traceability of requirements, through design, implementation
and system customer acceptance. All requirements were managed using IBM Rational
Dynamic Object Oriented Requirements System (DOORS); requirements included User,
Functional, Performance, Legal and Environmental.
Working closely with SELEX Learning Needs Analysis (LNA) consultants, the customer and
other programme partners to fully identify and understand the end-users operational use
of the target system; to ensure that the training solution to be delivered by SELEX would
provide effective training for the target system.
Using Enterprise Architect (EA) extensively to manage and document the requirements,
high level design and produce custom reports. EA was used throughout to manage the
project’s UML models, including Use Case, Domain, Design and Component models.
Working closely with the customer, SELEX consultants and technical teams to ensure that
all captured requirements had been identified and fully understood.
User requirements were captured using UML Structured Goal Oriented Use Cases, which
produced reviewable and measurable requirements that formed the basis for the design,
development, and ultimately the customer Acceptance Test cases.
Working closely with technical teams to produce and review Interface Control Documents
that formed the basis for Functional and Integration Test specs, and allowed the project to
be componentised and allocated to development and test teams.
Working closely with managers, team leaders; development and test teams to refine an
iterative and incremental software development process built on the V-Model to manage
the code and test activities. This delivered a quality assurance strategy that ensured that
requirements were being meet throughout the incremental development.
V 1.12 Page 8 of 8
Assignment: Vega
Period: May. 2006 – Jan 2007
Role(s): Java Developer, PostgreSQL Developer, SCRUM Team Member
Technologies: Java, PostgreSQL, PL/SQL, Eclipse, Linux (Fedora Core 4), JUnit, Cobertura, Windows XP
Java – SQL Developer on SkyNet 5 project, the next generation of military satellites, which
provide strategic communication services to the three branches of the British Armed Forces
and to NATO forces engaged on coalition tasks.
I was part of a Scrum team responsible for the development of Encryption Key
Management Facility (KMF) used as part of SkyNet 5.
Working with Java, PL/SQL, PostgreSQL, to implement the database schema, business
logic, triggers, stored procedures, multi-threaded request processing architecture,
message handling and synchronisation of databases between 2 KMF installations/sites.
Developed on Windows XP and deployed to a Linux (Fedora Core 4) platform, using
Eclipse, JUnit, Cobertura (coverage tool) in a Test Driven Environment.
Education / Qualifications
CEng: Chartered Engineer
IET: Member of Institute of Engineering and Technology (IET)
BSc. (Eng.): Electrical/Electronic Engineering, (Telecoms and Data Processing)
End of Document