About Harrison
A highly motivated, innovative and professional software engineer.
Can integrate seamlessly into, or lead, teams producing
high quality software artefacts using a variety of languages, libraries, tools
and techniques.
Passionate about all aspects of technology.
Able to learn new languages and technologies quickly.
Specialises in JVM applications.
Experience
Jan 2021 - Present
Senior Software EngineerBAE Systems Digital Intelligence
Senior software engineer leading a distributed SCRUM team based on customer-sites and at home. Designed and built an array of Android, JVM (Java 11, Kotlin, Spring, Apache NiFi), TypeScript (React), and .NET (MEF/WPF) applications and plugins. Responsible for establishing the team's engineering approach and best practices. Highly involved with client, end-user, and product owner meetings.
2018 - 2021
Software EngineerBAE Systems Applied Intelligence
Lead a software engineering team building a prototype application for exhibition at DSEI utilising TypeScript, React, Node, GraphQL and Neo4j. Interacted closely with stakeholders and sub-contractors. Presented the prototype to potential customers.
As part of a scrum team added new features to a personal data management system using C# .NET Framework and Core, TypeScript, React and Microsoft SQL Server.
Sept 16 - 2018
Graduate Software EngineerBAE Systems Applied Intelligence
Built a knowledge base application utilising a Neo4j graph database linked to Elasticsearch to store and search highly connected data.
Designed and built from the ground up in a small team a document searching solution utilising Elasticsearch to integrate with Microsoft enterprise systems including: Distributed File Systems, Exchange, SharePoint and Skype. A Java Spring backend with an Angular 4 and Materialize frontend provide a seamless interface for viewing all documents.
Created a unified Linux system monitoring solution across multiple client system using Nagios with NRPE and shell scripting.
Conducted a security audit of client systems to reduce the potential attack surface of the systems.
Jun 2015 - Sept 2015
Software Engineer - Summer InternThales UK - Innovation Hub
Contributed to the Centre for Maritime Intelligent Systems; building and deploying maritime simulation software build using Java, VBS2 and Data Distribution Service.
Worked on tools for WebLVC and HLE-E interoperability protocols using Java, Zero MQ and JSON; including building a WebSockets implementation in C++.
Jun 2013 - Aug 2014
Software Engineer - Industrial PlacementThales UK - BTC
Concept development and demonstration by means of low fidelity, yet highly flexible simulation. Created and maintained a large suite of Java applications, with some C++, which supported the simulation. Maintained DDS Topics allowing communication between simulation applications. Additionally produced scripts and scenarios for the VBS2 simulator used for visualisation and CGF. A large degree of stakeholder interaction was required during concept development and demonstrations.
Professional
As a member of the IET; strives to be a professional software engineer and is continually developing himself.
Innovative
Utilising previous experiences and education produces innovative yet simple solutions to complex problems.
Engineer
Believing in engineering principals for software development; follows engineering best practices and methodologies to produce high quality software artifacts.
Education
2011 - 2016
The University of YorkComputer Science with Artificial Intelligence
Master of Engineering - First Class Honours
A five year integrated masters course including a year in industry at Thales with a specialism in artificial intelligence. The course covered a wide variety of subjects including but not limited to:
- Programming Paradigms
- Software Engineering
- Databases
- Operating Systems
- A variety of Artificial Intelligence and Machine Learning techniques
- Human Computer Interaction
- Real Time Systems
- Cyber Security
Final year dissertation on the subject of Reinforcement Learning for Helicopter Control
During the third academic year (2015) won the IBM Prize for Outstanding Performance
A final group module with a industry customer (Thales) to create a (simulated) autonomous flood aid system. The module involved requirement elicitation, requirement changes, team interoperability and a sales pitch. Java was used for the simulation and Command and Control software. RabbitMQ was used as the communications channel. Unfolding Maps was used for visualisation. The codebase can be found on github.
2009 - 2011
Oriel Sixth FormA Levels
Two years of AS and A Levels:
Mathematics | A* |
Computing | A |
Physics | B |
Chemistry (AS) | C |
2007 - 2009
Oriel High SchoolGCSEs
13 GCSEs (A-C) including:
English, Mathematics, Physics, Biology, Chemistry, Electronics and ICT.
Skills
Professionally used skills and technologies. Core skills in bold.Programming Languages
Java (7 through 17), Kotlin, C#, Python, TypeScript, SQL, Bash, C++
Operating Systems
Linux, Windows, Android, MacOS
IDEs & Editors
IntelliJ, Visual Studio Code, Eclipse, Visual Studio
Office Software
Microsoft Office, LATEX, Open Office, PDFs, SharePoint
Libraries
Mockito, JUnit, Espresso, Selenium, Jackson, Apache Tika, Message Queues, Enzyme, NUnit, NSubstitute
Frameworks
Spring Framework (Boot, Web, Data, GQL, Security), Dagger, React, GraphQL (Apollo Server & Client)
Teamwork and Knowledge Sharing
Git, Agile (Scrum), Atlassian Tool Suite (Jira, BitBucket, Confluence), GitHub, Slack, Team Leading, UML
Other Technologies
JSON, WebSockets, XML & XSD, HTML5, MySQL, SQLite, SSH, Gradle & Maven, Elasticsearch, Neo4j, Docker, Apache NiFi