/cv

CV website for David Bliss

🪪 David Bliss

Software engineer near London and Southeast England.

Email · Website · LinkedIn · GitHub

✅ Profile

Well-practised software engineer with experience building solutions across the banking, insurance, customer loyalty, and law enforcement industries. Real-world expertise building large-scale data platforms, micro-services, analytic algorithms, and real-time communication systems and taking them to production. A keen polygot-programmer who believes code should be written to be understood by humans, and who values simplicity and readability over complexity and obscurity. Hands-on in the design and development of greenfield projects, and also the enhancement, maintenance and support of mature systems.

🌟 Skills

Core
  Scala, Java, Python, Rust, Golang, Kafka, Kafka Streams, Apache Spark, Kubernetes, Helm,
  Cassandra, AWS, big data, batch and stream processing, microservices.

AWS
  Lamda, S3, EC2, ECR, Kinesis, Data Pipelines, CloudWatch.

Languages and APIs
  Scala, Java, Python, Rust, Golang, SQL, Spring, Hibernate, JUnit, Linux.

Databases
  Cassandra, Mongo, Oracle, MySQL, SQLite.

Messaging
  Kafka, AWS Kinesis, Rabbit MQ, Apache Active MQ, REST.

Build Tools
  sbt, Gradle, Maven, Ant, make, Jenkins, Git.

Methodologies
  Agile, XP, TDD, BDD.

🐧 Open Source

Fotema, a Photo Gallery for Linux (March 2024—present)

Self-taught Rust and developed a Linux-native photo gallery app for the GNOME desktop environment. Published to Flathub, the app store for Linux.

Rust, SQLite, GTK-RS, Relm4, Uber H3 Geocoding, Flatpak

🧑‍💻 Experience

Backend Software Engineer at J.P. Morgan (September 2024—present)

Java, Kubernetes, Helm.

Software and Platform Engineer at NewDay (July 2022—June 2024)

Design and implementation of a new data streaming platform built in Confluent Cloud and Snowflake. Designed a DBT project for creating and managing data models. Designed and implemented encryption-at-rest for Apache Kafka by integrating with the HashiCorp Vault Transit Security Engine.

Integrated applications into NewDay's observability platform using an Open Telemetry collector deployed to Kubernetes by ArgoCD with metrics and alerts in NewRelic managed by Crossplane.

Scala, Java, Kafka, Kubernetes, Helm, ArgoCD, Crossplane, Terraform, Terragrunt, Crossplane, ArgoCD, DBT, Confluent Cloud, Snowflake.

Scala/Python/Golang/Big Data Software Engineer at NewDay (April 2020—October 2021)

Developed Golang tooling for scrubbing and importing 24 terabytes of CSV data into AWS Athena, allowing NewDay to migrate away from a third-party service and reduce costs by £1.4 million per year.

Solved a batch system's AWS S3 "small files problem" which would turn a 40GB input file into 80,000 very small Parquet files being written to S3. The file processing was redesigned to write to S3 a small number of large Parquet files. File processing time was reduced by two hours allowing NewDay to meet SLAs and storage space was reduced by 10 times.

Designed and implemented an AWS lambda to refresh views in the Dremio data lake engine. The solution reduced processing time and costs for updating views and centralised view configuration into a single location per environment, which gave data engineers and analysts a complete overview of an environment's view requirements.

Designed and implemented a Scala FS2 batch job to process large JSON files and convert to Parquet tables.

Wrote a Golang utility for quickly deleting records from AWS DynamoDB.

Scala, Java, Python, Golang, cats, FS2, AWS Batch, AWS Lambda, Dremio.

Scala Micro-service Engineer at 11:FS Foundry (August 2019—February 2020)

Designed and developed micro-services to support Foundry, a ledger-first API driven banking platform. The platform was built using the Lightbend Lagom micro-services framework, Scala, Cassandra, and Kafka.

Designed and implemented the micro-services to support the expiry of payment card authorisations. The functionality was delivered over two sprints to support the alpha release of a new payment card product.

Led the adoption of the Apache Avro message format for Kafka messages to improve performance and reduce the risk of breaking changes to message formats.

AWS, GCP, Micro-services, Scala, Kubernetes, Kafka, Cassandra, Docker, Helm, Lagom, Avro.

Big Data Engineer at Hive (November 2014—July 2019)

Designed and developed pipelines with Kafka, Kafka Streams, and Apache Spark to implement data science algorithms to deliver customer-facing products derived from Hive thermostat data. Algorithms were packaged as Docker images and deployed with Helm charts to a Kubernetes cluster running in AWS. Processes at a rate of 100,000+ messages per second.

Worked with data scientists to deliver a Kafka Streams application to analyse thermostat state, detect when a customer's heating fails, and notify the customer of that failure. A batch-based Python prototype algorithm was delivered by data scientists, but was unsuitable for real-time failure detection, so I redesigned the algorithm to work as a real-time Kafka Streams application.

Designed and developed a data pipeline to feed smart meter readings into algorithms to deliver energy usage insights to British Gas customers. Applied a random forest, from the Weka machine learning library, to classify customer energy usage.

Developed a processing pipeline tool to convert IoT device protobuf messages from an AWS kinesis stream to daily aggregated Parquet files stored in S3 and queryable from Athena.

AWS, Scala, Spark, Kafka, Kafka Streams, Cassandra, Python, Kubernetes, Helm, Docker.

Java Developer at Post Office (August 2014—November 2014)

Delivered a financial reconciliation engine to reconcile financial transactions across Post Office products, identify transactions that cannot be balanced, and provide a reporting user interface for financial service centre staff to investigate unbalanced transactions.

Java, Spring Batch, Spring Integration, Spring MVC, RabbitMQ, REST, MySQL, and Tomcat.

Java Developer at Monitise (January 2014—July 2014)

Developed the credit card payment user interface and backend for Yaap Shopping, a first of its kind venture between a telecoms company (Telefónica) and a bank (Santander and Caixa). Evaluated metrics monitoring solutions for Monitise to deploy across all their platforms.

Java Developer at Aimia (June 2012—December 2013)

Aimia is a global leader of loyalty management and owner of the Nectar brand of loyalty cards. Delivered a flexible and compelling loyalty platform to allow Aimia to win new business. Developed a batch processing framework (Spring Batch, Mongo DB) for ingesting large files from third-party suppliers. Introduced property-based testing and BDD to drive up code quality.

Java, Spring, Spring Batch, Mongo DB, MySQL, Apache Camel, Rabbit MQ, AWS, REST, asynchronous events, pair programming.

Java Microservice Developer at Bank of America Merrill Lynch (February 2011—May 2012)

Delivered a Global Liquidity Platform that became a solid foundation for rapidly developing novel market- leading sweeping and pooling products, which included Multi-Currency Notional Pooling, Single Currency Notional Pooling, and Physical Cash Concentration.

Java, Spring, Hibernate, idempotency, compensating transactions, parallelism, pair programming.

Java Lead Practitioner at RDF Group (October 2006—January 2011)

RDF Group is a supplier of IT solutions and staff and provided my expertise to the loyalty systems company Aimia, the marine insurance and reinsurance provider Kiln Group, and the bank Northern Rock.

C/C#/Java Developer at C Squared Consulting (July 2000—July 2006)

Developed a fault-tolerant and high-performance message switch (C, BEA Tuxedo, and Oracle), which integrated the California Law Enforcement Telecommunications System with state and federal systems.

Lead development of California's "Do Not Call" system.

👨‍🎓 Education

University of Brighton 1996—2000

  • 2.1 BSc (Honours) Computer Science
  • Software Engineering Higher National Diploma

🏅 Certifications and Courses

2024
  Java Collections Framework + Generics, Lambdas & Stream API @ Udemy
  Scala 3 And Functional Programming Essentials @ Rock The JVM

2020
  Building Reusable Code from Scratch with Rust @ Udemy
  The Rust Programming Language @ Udemy
  Build a TCP Chat App with Go @ Udemy
  Complete Guide to Protocol Buffers in Golang/Python/Java @ Udemy
  Go: The Complete Developer's Guide @ Udemy
  REST API JWT Auth with Golang @ Udemy
  Web Development with Golang @ Udemy
  gRPC Golang Master Class: Build Modern APIs and Microservices @ Udemy
  Learn How to Code Golang @ Udemy

2019
  Programming Reactive Systems @ edX

2017
  Blockchain for Business—An Introduction to Hyperledger Technologies @ edX
  Big Data Analysis with Scala and Spark @ Coursera

2016
  Parallel Programming @ Coursera
  Retrieving, Processing, and Visualizing Data with Python @ Coursera

2015
  Using Databases with Python @ Coursera
  Using Python to Access Web Data @ Coursera
  Python Data Structures @ Coursera
  Principles of Functional Reactive Programming in Scala @ Coursera

2014
  Functional Programming Principles in Scala @ Cousera