I am an experienced software engineer with over 20 years experience working on large scale software implementations and have a passion for well crafted, pragmatically tested software. I am currently working at Crown Agents Bank as a Senior Software Engineer and have significant experience in Java, Kotlin and Spring Boot along with test-driven development and stringent source and release management processes. I am also experienced with agile practices such as scrum, pair programming and continuous integration.
I am constantly learning and extending my skills and am able to become proficient in new languages quickly. I contribute to open-source projects and write and present about software development and software testing and I am comfortable working either as part of a bigger development team or as a solo developer.
I am a Snyk Ambassador - a voluntary role supported by Snyk for professionals who are passionate about application security, want to lead by example, champion for improved application security by increasing AppSec awareness and being active in our respective communities.
I am the founder of the Brighton Kotlin and Brighton JUG meetup groups where we bring Kotlin and Java users, enthusiasts and learners from beginners to experts, and anyone wanting to get involved with the Kotlin/JVM ecosystem together to learn and support each other.
My specialties are in Java & Kotlin microservice architectures, test-driven development and agile software development.
- Responsible for the design and implementation of the insufficient funds process for Swift payments at Crown Agents Bank.
- Technical & implementation lead on Crunch’s single sign on project bringing authentication and user management of all Crunch products into a single portal and implementation. This project paved the way for Crunch’s long term plans to systematically rebuild their core accountancy application.
- Introduced Kotlin into the backend echo-system as an option for Crunch developers. Building our initial exemplar Kotlin Spring Boot services to provide reference points for the backend team
- Implemented a Progression Framework across the Crunch engineering function to provide our developers clarity over where they currently are and how to progress and grow in their work
- Designed and developed a suite of common Java and XSL components which allowed developers of the NHS Clinical Spine Application to provide a consistent user experience which conformed to the World Wide Web Consortium (W3C) guidelines on Web Content Accessibility.
- Being a key member of the team which delivered the “Really Big Programme” at Britannia Building Society – winner of the BCS Financial and Related Services Award 2004, the BCS Flagship Achievement Award 2004 and Corporate IT Forum Project of the Year 2004.
- Delivered to time and quality a bespoke browser based mortgage system to be utilised across all Britannia branches.
Senior Software Engineer
Senior Software Engineer in the Payments Domain, working on the team responsible for rearchitecting the Swift payments flow to integrate with the core banking system providing a more stable and scalable payments flow.
- Responsible for implementing BIC code validation across our API.
- Responsible for the design and implementation of the insufficient funds process for Swift payments, spanning the Payment Gateway and core banking system
- Responsible for the infrastructure for the the new Swift payments flow - using Terraform and Ansible for all infrastructure orchestration.
- Built a POC to mock the core banking system integration APIs using Wiremock. This greatly improved the teams ability to test the new swift flow locally.
- Implementation of developer tooling to capture and verify API callbacks when developing locally. This side project was built using Micronaut
- Implementation of a testing framework to simulate a stream of configurable events to the callback API
- Responsible for the design and implementation of the Swift flow callback endpoint security
- Mentoring and pairing with junior and senior members of the team to help spread knowledge and support team members where possible
- Established the Security Guild within the Payments Domain and introduced dependency scanning into the software development lifecycle
- Responsible for Engineering the Engineering Experience within the Payments Domain - shaping the engineering habitat, increasing developer joy and productivity
Brighton JUG Founder & Organiser
Brighton JUG is a group bringing together Java users, enthusiasts and learners. We’re interested in the whole world of Java – android development, server frameworks, interesting tools, applications, development methodologies and so on and so on – anything Java. Our meeting-ups will include talks, workshops and socials.
The Snyk Ambassador Program is a voluntary role supported by Snyk for professionals who are passionate about application security. The idea is to lead by example, championing for improved application security by increasing AppSec awareness, being active in your respective communities, and celebrating wins. We share our interest, expertise, and excitement within our communities to help other developers and engineers build secure software. I was one of the first 8 people accepted onto the program. You can find out more here - https://snyk.io/snyk-ambassadors/
- Part of the live hosting team for Devoxx UK 2021 where diverse, local and global talent introduce the newest and most vital content from the development world. Responsible for welcoming speakers, managing the live chat and monitoring questions throughout the session. After each session I hosted the live Q & A for the speakers.
Lead Backend Developer
As Lead backend Developer I am the leader, convenor, and organiser of the backend function. I provide a single point of contact with the Head of Solutions Architecture and Principal Technical Architect, Head of Engineering, and Lead Front End Developer. I am responsible for playing a key role in setting direction and to then embed within the backend function, ensuring all backend developers can work productively and happily. Part of my role as Lead Backend Developer is to provide a Developer Advocacy role, being a conduit between Crunch Engineering and the world of external software developers and in the process raise Crunch brand awareness.
- Developing and implementing the Crunch Java & Kotlin coding standards
- Being the main point of contact for the business for high-level estimation meetings for roadmap items
- Actively contribute to department meetings, TechTalks, and training sessions/workshops - sharing best practices and lessons learnt to help raise the knowledge base of the team as a whole.
- Responsible for outlining and maintaining a mentoring pathway for New Starters and Junior Developers.
- Responsible for implementing a Progression Framework across the Crunch engineering function to provide our developers clarity over where they currently are and how to progress and grow in their work
- Championing open source at Crunch by building relationships with our open source partners, i.e. companies, developers, and tools that we use and ensuring we have a good range of Open Source projects of our own
- Championing application security (AppSec) with the developers at Crunch and being part of the initial responders team responsible for investigating and responding to issues raised through the Crunch responsible disclosure process
Brighton Kotlin Founder & Organiser
This is a group is for Kotlin users, enthusiasts and learners from beginners to experts, and anyone wanting to get involved with the Kotlin/JVM ecosystem. The aim of Brighton Kotlin is to build a community of people who get together to have regular meetups, presentations, talks, code labs and hackathons
Senior Java Developer
Java/Kotlin developer responsible for new technologies and replacing our core accountancy application.
- Technical & implementation lead on Crunch’s single sign on project bringing authentication and user management of all Crunch products into a single portal and implementation. This project paved the way for Crunch’s long term plans to systematically rebuild their core accountancy application. Managed the in-house development team along side various contractors throughout the life of the project.
- Responsible for architecting and building Crunch’s initial Open Banking implementation consisting of multiple Spring Boot microservices interfacing with external bank APIs
- Along with the Principal Architect, responsible for introducing Kotlin into the backend echo-system as an option for our developers. Building our initial exemplar Kotlin services to provide reference points for the backend team
- Responsible for migrating our entire fleet of microservices from JUnit 4 to JUnit 5 (Jupiter)
Java developer on the core product team – responsible for the maintenance and improvement of Crunch’s core accounting SASS product and key business critical microservices using agile methodologies.
- Part of the core product team responsible for new features, bug fixes and testing of Crunch’s core accounting product.
- Using agile development practices to take the stories defined and prioritised by the Product Owner and architecting solutions to meet those requirements.
- Assisting with the full end to end release management process - deploying software to development, test and production environments.
- Taking part in code reviews from other developers in the team and providing constructive feedback.
- Building, testing and deploying Spring Boot microservices to interface with external API from strategic partners such as Salesforce and receipt processing services.
- Passionate about promoting best practice and new technologies with the wider engineering team by presenting tech talks on topics such as Mutation Testing and Fn Project
Owner and founder of From Small Acorns created to provide Technical Consultancy for high growth businesses. I provided a hands-on, consultative role where I got under the hood of our client’s business to fully understand where we could add value.
- Developing in-house data analysis tools for our team to use on clients projects. These were web based tools using a number different technologies and frameworks including Java/Grails and PHP/Cakephp.
- Responsible for business development – organisation growth, client acquisition and client on-boarding.
- Client engagement and needs analysis – as the primary contact for our clients, I engage with people at all levels of the organisation to define a strategy that will achieve our client’s goals.
- Team Success – Supporting our team in the implementation and monitoring of that strategy through too successful outcome for our clients.
- Creating custom measurement plans specific to our client’s business and implementing those plans using Google Analytics.
- Working closely with our team to constantly test new marketing strategies and update our working practices to achieve the best results for our clients
- Helped our clients install, configure and optimise their websites. These were predominantly PHP based websites using Wordpress and Drupal.
Senior Java Developer
Map of Medicine, NHS National Programme for IT (NPfIT). Responsible for the development of the end user component of the Map of Medicine. This is the component that displays the map content across all specialties to clinicians and patients, Technologies Used: Java, Spring, Spring Webflow, Cocoon, XML, XSLT and Java Server Pages
- Refactoring an existing code base as well as architecting and developing applications from scratch.
- Introduction of a test driven development model to the core development team and later expanding that out to a remote team in Poland.
- Creation and testing of an automated build and continuous integration process to support our new release procedures.
- Creation of the initial performance testing suite.
- Updates to the application required to ensure it met the stringent performance criteria specified by the client and the NHS authority.
- Involved in a move to Agile development practices for the whole development team – leading daily scrum stand ups.
- Visiting client sites to consult on environment setup and configuration. Once the performance testing was complete I was responsible
Senior Java Developer
NHS National Programme for IT (NPfIT) developing the Clinical Spine Application (CSA) Responsible for developing library of common components, developed in both XSL and Java, to provide a unified consistent front end to the user. Technologies Used: Java, XML, XSLT, CSS, Struts, Spring framework, Apache Ant
- Ensuring all user interface elements conformed to the World Wide Web Consortium (W3C) guidelines on web content accessibility.
- Responsible for developing W3C compliant Cascading Style Sheets which would remain consistent across four different browsers on two different platforms.
- Developed two prototypes to investigate the use of web applications frameworks within the overall architecture.
- Introduced Spring Framework which was used extensively throughout the presentation layer as a means of controlling application logic.
- Introduction of Apache Ant as a programme wide build tool.
Senior Java Developer
Consultant for Logica CMG on the Systems Integration Stream, Britannia Building Society. Responsible for the development and release management of the integration components developed in the systems integration stream. Technologies Used: Java, EJB, Servlets, XML, XSLT, HTML, MQ Series, JMS, Apache Ant and Oracle.
- Development of a XML/XSLT based thin browser client and Java servlet responsible for delegating requests to and processing responses from various distributed server components via MQ Series.
- Requirements gathering, design using UML, proof of concept, development, documentation and deployment.
- Coordinating a team of developers to ensure quality and timely software releases
- Coordinating a support team to ensure the availability of the testing environments and managing faults raised by the test team.
- Introduction of the Apache Ant build tool as a means to build all components developed by the systems integration stream.
Responsible for reviewing all development procedures and technologies with the aim of providing a platform to build all future internet based systems. Technologies Used: Java, EJB, Servlets, JavaMail, Weblogic Application Server, Oracle DB, UML
- Introduction of UML for the documentation of user requirements and the modelling of system specifications.
- Development of POC (Proof Of Concept) prototype using Java 2 Enterprise Edition (EJB, Servlets), with Oracle as back end database and WebLogic as middle tier application server.
- Development of a web based front end using Java Servlets, authenticated access via Oracle database.
- Development of architecture for general purpose security and personalisation modules – user ID/password authentication, user management and incorporating JavaMail for notifications, alerts etc.
Responsible for application development, testing, implementation and organisation wide deployment of in-house custom applications. Technologies Used: Magic rapid application development environment, Visual Basic, Btrieve and MS SQL Server
- Liaison with managers and users re application and systems development requirements
- Development of a production/accounting tool for Asda Wal-Mart managing a cash flow of £6 million pounds per annum.
Courses & Training
Implementing Event-Driven Systems using DDD, CQRS and Event Sourcing
DDD, CQRS, and Event Sourcing theory, explaining the basic concepts for implementing a service using Axon. It also demonstrates how to apply the non-functional requirements.
Introduction to DDD, CQRS and Event Sourcing
This course covers the essential building blocks of Domain-Driven Design, Command-Query Responsibility Separation and Event Sourcing concepts.
Kotlin For Java Developers
Up skilling in Kotlin to enable the introduction of Kotlin as an option for Crunch backend developers
Provision a Kubernetes cluster, Run an application on Kubernetes and examine its logs and monitor its health, Use Readiness and Liveness probes to allow Kubernetes to maintain an application
Understand Memory Management and Garbage Collection, Recognise the Symptoms of Memory Problems, Utilise Diagnostic Data Collection and Analysis tools
Hugo Progression is a Hugo template that can render progression frameworks using the same data format as the Monzo progression framework. A progression framework (or competency matrix, career ladder, career pathway) is a tool to help people within an organisation understand where they currently are and how to progress and grow in their work. It also helps an organisation map people’s competencies (their skills and knowledge) to compensation (how they’re rewarded for them financially) - find out more information in this blog post or on GitHub
pinboard2markdown is a command line tool written in Kotlin and Spring Boot that communicates with the pinboard.in api to retrieve a selection of bookmarks that are tagged with a specified tag. It then converts those bookmarks to markdown and outputs them to the terminal. I use this tool to build regular newsletters for the backend developers at Crunch and to generate my Geek Reads posts