Ashley Hindmarsh - Curriculum Vitae - May 2024
Roles sought: Senior or Principal/Lead Software Engineer (Contract/Permanent). Location: Remote, or hybrid in/around London
Summary
I can offer in-depth experience of software development practice, from experience in small/medium/large commercial organisations, across multiple sectors - media, commercial, publishing, banking. As such I can quickly adapt and bring different viewpoints to a new role. Having also previously worked as a tech lead I’m able to advise on technical solutions for backend systems, devops practice, and software architecture. I have also worked as a team lead, so I am comfortable leading small teams.
Primarily, I’m looking for senior+ engineering roles rather than leadership but I am happy to bring all my experience to any role and the company culture.
Experience
Nov 2023 - Mar 2024 (contract)
Senior Software Engineer at Currency Cloud (via OpenCredo)
- CurrencyCloud was looking to replace an proprietary API gateway, and address security issues coupled across the backend.
- My role was to investigate the use of the existing API gateway and security issues across the backend stack.
- To achieve this, I reverse-engineered documentation for the existing gateway and security protocols.
- Also, I designed and helped to deliver a proof-of-concept gateway/security stack as a model for future development. Technologies involved including Spring Boot, Keycloak, OpenAPI, API gateways.
- This also included making recommendations for the use of standards-based approach (OAuth2/OIDC) rather than reimplementing old proprietary protocols.
- By the end of this period, there was a clear, documented path for onwards development which involved a strategy for deprecating the old gateway in favour of the new model.
Oct 2021 - Oct 2023 (contract)
Senior Software Engineer at 10x Banking
- Developed and maintained services to deliver specific customer-facing features for the 10x Banking platform, as part of multiple feature teams.
- Including core services - Statement Generation, Customer Goals management, Customer Insights and Lending Products (Loans and Credit Cards).
- Gained a deep and detailed understanding of retail banking concepts and the increased sense of security and integrity required in this sector.
- Worked on a variety of products serving different business and customer needs, targeting a production workload of daily transactions for millions of customers.
- Mostly Java/Kotlin with Spring Boot, with Kafka, Postgres, Elasticsearch. Deployed via CI/CD to Kubernetes clusters in AWS. Exposure to Terraform.
- Responsible for coding features to agreed spec, with relevant E2E and unit tests, and attention to observability, load testing and other NFRs.
Oct 2018 - Oct 2021 (contract)
Principal Software Engineer / Tech Lead at Tesco PayPlus
- Part of a backend team engaged in all parts of an independent sub-business of Tesco Bank
- Initially Senior SE, but later assumed a Tech Lead role, responsible for the ongoing maintenance and development of all backend software services supporting the business.
- Mentoring and supporting a team of devs to work autonomously and productively. Encouraging sharing of views and problems.
- Working with solution architect, product leads and other tech leads to design and implement solutions.
- Maintaining, updating and extending main backend services - a programme of continuous renovation. Replacing proprietary systems with mature OSS solutions.
- Led a migration programme to exit end-of-life payment system, built using Python/Kubernetes.
- Main tech stack: Java 8, Spring, Tomcat, Jersey, Oracle, Cucumber. Deployed via CI/CD to Kubernetes on Azure (built from scratch), and also legacy systems.
Jan 2017 - Jul 2018 (contract)
Senior Software Engineer at Mendeley/Elsevier (London)
- Part of multiple cross-functional teams for Mendeley, through a major technology refresh.
- Acquisition and Onboarding: Migrating local Oauth2 sign-in to federated OpenID Connect solution. High-volume, mission-critical services.
- Building new services for flagship ‘Reference Manager 2’ product - mix of client-facing and message-processing.
- Working mostly with back-end Java 8 development, in a microservice architecture with continuous deployment.
- Technologies used/learned: Java 8, Dropwizard, Kibana, Redis, TDD, BDD, Oauth2, OpenID Connect (OIDC), RxJava, Docker/ECS, Terraform, AWS, Payments integration (Adyen).
Nov 2015 - Jan 2017 (contract)
Senior Software Engineer (SEO) at Zoopla (London)
- Tasked with re-engineering of SEO support to support long-term transformation from a monolithic site to SOA; includes setting-up a permanent SEO engineering team.
- Developing internal SEO engineering platform and reporting framework, for a major website which relies hugely on organic SEO traffic.
- Perl, Python, Google APIs, Google Analytics, AWS Redshift, Birst BI tools. Some HTML/CSS/Javascript.
- Left the SEO team with a working, documented system that was handed over to perm developers.
Aug - Nov 2015 (contract)
Java Software Engineer at Sky (London)
- Working within small Agile teams, developing high-volume Web services to support both OTT client-facing and back-end APIs.
Aug 2008 - Aug 2015 (perm/contract)
Principal Software Engineer / Tech Lead / Team Lead at BBC (onsite/London)
Summary:
- Tech Lead for Media Distribution on key customer-facing systems for “Video Factory” - the power behind BBC iPlayer.
- Principal Dev and Team lead on the award-winning BBC Video Factory portfolio - bringing over a million hours of content to all devices.
- Designated “Single Responsible Person” for delivering HLS streaming for iPlayer - a hard deadline for Xmas 2011.
2014-2015 : Team Lead / Principal Software Engineer - Media Services
- Led a new team, charged with reduction of both AWS costs and technical debt. Responsible for a mix of greenfield and legacy components.
- Design and build of components for the BBC’s Video Factory. Video Factory ensures that BBC digital audio and video is available to users across a vast range of devices. Components are designed to be highly-available and scalable.
- Java (Camel/Jersey) applications, continuous integration (Jenkins), AWS in a devops environment. Extensive use of AWS (EC2/ELB/ASG,CloudFormation,S3,SQS,SNS - limited exposure to DynamoDB and Lambdas).
- Working environment: Agile with Kanban(“Scrumban”), TDD/BDD (Java/Ruby). Pair programming (where appropriate).
2012-2014 : Principal Software Engineer - Publishing Services
- Development and maintenance of Java components for Video Factory (details above), and existing Perl components.
- Ongoing tech lead responsibility for selected iPlayer’s core services - then supporting 18 million+ req/day.
- Designed and delivered a secure SAML gateway supporting the “BBC Store” and the “Xbox iPlayer” products.
- Organised coding “dojos” for TDD.
2008-2012 : Technical Lead / Principal Software Engineer
- Design and delivery of “Media Selector 5” application in Perl; a business-critical, audience-facing service behind all iPlayer playback. Tech: Perl (Moose,Plack), XML/JSON, NoSQL (couchdb).
- Ongoing maintenance on existing related middleware and customer-facing services for BBC media delivery. Included major database migration (2012-2014); focus on data integrity, risk management and migration planning.
- Led the delivery of the playback mechanism for iPlayer 3G/iOS product (Dec 2011).
2007 - 2008 (contract)
Senior Software Engineer at CAIW Netwerken (Netherlands)
- Maintaining Perl middleware services; reverse-engineered SOAP/WSDL contract from Perl source code for Java clients.
2005 - 2007 (perm)
Senior Software Engineer at Semantico (Brighton)
- Developing new client sites (e.g. www.blackwellreference.com) in Perl using Semantico’s backend CMS and access management technology.
1999 - 2005
Senior Software Engineer at Best Scarper Ltd
- Providing freelance software engineering services through my own limited company. Multiple clients. Mainly Perl/Web.
Technical
Development
- Java/JVM (10+ years): Oracle Certified Associate (Java 8). Spring ecosystem, Java versions 8/11/17/21 Kotlin (1 year), Spring Boot, TDD/BDD (JUnit, Mockito, Cucumber-JVM), REST, Maven/Gradle.
- DevOps: Containerization, (Docker/Kubernetes/Helm) to reduce distance between development and production.
- Distributed systems: Breadth of experience developing high-volume transactional systems, and the issues. Scalability via Kubernetes and use of message brokers e.g. Kafka, ActiveMQ.
- Perl (10+ years): “Modern Perl” OO (Moose, Plack) - database apps, web services, data-processing (XML, JSON etc).
- Other dynamic languages: Python, Groovy, Javascript, Ruby (varying experience)
- Frontend: I’m not a “full-stack developer”, but I have plenty of experience with HTML, CSS, Javascript, templating
- Relational databases: PostgresQL, Cockroach, AWS Aurora (Postgres), MySQL, Oracle. In general, detailed SQL knowledge, schema design, query design and optimisation.
- “NoSQL” databases and key/value stores (e.g. DynamoDB, Redis, Memcached)
Delivery
- Distributed system architecture: observability, maintainability, API design, caching, volumetric analysis, microservices, performance testing.
- Design and maintenance for monoliths, microservices and message-oriented systems.
- Experience with migration projects - both system and data migration, done over extended periods.
- Cloud (IaaS/PaaS):
- AWS & Azure (architecture and implementation): Using comparable tech across both: Compute / Kubernetes / Queue / DB / IAM / Files / IaC
- Experience with Azure Devops pipelines, deploying into AKS clusters, App Gateway, KeyVault.
- Security: PKI; OAuth2; SSO (OpenID Connect) hashing, encryption/decryption, signing/verification with XML standards, some exposure to SAML.
- Support software/systems: Jenkins, Maven, Gradle, Git, Jira, Confluence, Splunk