Principal Software Engineer | richdawe@gmail.com |
Bristol, United Kingdom | Tel: +44-777-6141675 |
Self-motivated, technical leader and systems & back-end software engineer with 20+ years' experience.
My personal goals:
Skills: | Distributed Systems; Continuous Integration & Continuous Deployment (CI/CD); unit/functional/integration testing; full Software Development Lifecycle (SDLC); requirements analysis; design & integration planning; incident mitigation & resolution; training |
Languages: | C, go, JavaScript (node.js), Lua, Perl |
Technologies: | Linux, Amazon Web Services (AWS), REST APIs, HTTP, TCP/IP, TLS / SSL, Cassandra, Postgres, multi-threaded and event-loop-based applications |
Tools: | Mercurial, git, gdb, valgrind, strace, Docker, Ansible |
Note: I worked continuously for Message Systems from 2007 until 2023. The majority of the Message Systems team was in the USA, and I worked remotely from the UK. From 2015, Message Systems did business as SparkPost. It was acquired by MessageBird in May 2021.
Principal Software Engineer | MessageBird, UK (remote) | May 2021 - January 2023 |
I worked on two new products, neither of which have been launched yet. Unfortunately I can only describe my work at a high level.
Product 1 (up to summer 2022): I led a team to build out a new product. The bulk of the development work was outsourced to a company in India, with integration work done by me in the UK and my colleagues in the USA and Brazil.
I led the process to evaluate potential contractors, and the selection process. I worked closely with:
I worked very closely with the Product manager, who was also managing the project. This product was entirely new, and we were learning continously through the project.
This project was challenging for many reasons, including: It was the first time development work had been outsourced. The timezone spread was 10.5 hours across the team. A lot of the tools and technologies were new, including AWS services that had not been used previously. There were challenges using deliverables because the contractor had limited access to our environments.
Product 2 (from summer 2022): I joined an existing project to build a new messaging product. This team was largely based in Europe.
In this role I acted more as a Senior Software Engineer, working on back-end services written in go. I worked closely with Product on understanding requirements and phasing of features. I took over ownership of one of the messaging protocols in the product, adding features and fixing bugs.
As part of my hand-over before leaving, I delivered 3 x 2 hour training sessions to multiple teams in Engineering, and Compliance & Deliverability.
Principal Software Engineer | SparkPost, UK (remote) | 2015 - May 2021 |
As a Principal Software Engineer in the Email Delivery Group, I provided technical leadership and architectural oversight for SparkPost's high throughput email platform. Some highlights:
I introduced autoscaling into the highest-volume and most critical SparkPost REST API, the Transmissions API. This reduced infrastructure costs and engineer toil. I modelled autoscaling using traffic volume data from our Data Lake, validated the autoscaling parameters in pre-production, and rolled it out with no issues. This scaled both the AWS ECS service and EC2 compute capacity. Wrote a Lambda in node.js to trigger scaling of EC2. Worked closely with our SRE team. First use of EC2 Spot instances in a production service at SparkPost.
Led a team of 3 engineers to introduce multi-tenancy to our email platform. This was a critical part of a larger project to consolidate many single-tenant clusters into smaller shared clusters, thereby eliminating ~120 c4.4xl/8xl AWS EC2 instances (~$30k+ per month saving). I proposed and sold the approach for multi-tenancy to internal stakeholders; designed the solution; led the development team (changes mostly in Lua).
I formalized capacity planning for the 2019 and 2020 Black Friday / Cyber Monday period, where email volumes typically increase by 30%+. I worked with Technical Account Managers to understand our customers' plans. I built a capacity model for our email platform, and worked with various teams to add capacity ahead of time. We had no issues in 2019. In 2020 I led the response to two incidents that resulted in some delayed email deliveries for some customers.
I performed critical work as part of a cross-functional team to provide a news organization with a 2 million messages/minute burst rate SLA, much higher than any other customer burst SLA. I investigated and resolved a number of issues under very high load, where the system would crash / run out of memory (OOM), potentially losing messages and event data. I improved data gathering for high memory usage situations to guide further investigations. I added backpressure to the Transmissions API to improve resilience. I changed how jobs were queued internally in our Lua implementation, to greatly reduce memory growth during bursts (90+% peak usage down to stable at 45% on a machine with 96 GB RAM).
Built an internal web app to allow our Customer Success team to decode click and open links themselves, to aid customer support. I built this on my own initiative, and my colleagues continue to use it to this day.
Lead Engineer / Senior Software Engineer | Message Systems, UK (remote) | 2013 - 2015 |
After a year as a Senior Software Engineer, I became a Lead. As a Lead, I provided technical leadership to a team of engineers during the development of Momentum 4.0. This was a major update to the Momentum high-performance email server software to add new email submission APIs.
Designed and built the C and Lua APIs to allow REST APIs to be built using idiomatic Lua on top of Momentum's HTTP server. This allowed faster prototyping, development and iteration of key REST APIs than would have been possible with Momentum's C APIs.
Designed the click and open tracking system for Momentum, and led the team of 3 engineers developing it. This included a highly-reliable HTTP service to process requests when recipients opened their emails or clicked on links. (80% C, 20% Lua)
Discovered, investigated and resolved crashes and performance issues in the new multi-event-loop mode in Momentum 3.6. (Heavily multi-threaded C)
Triaged and resolved escalations from our support team; supported colleagues working on escalations / production issues.
Subject-matter expert on the internals of our software, Lua, and email standards. Trained my colleagues on various aspects of our systems.
Professional Services | Message Systems, UK (remote) | 2007 - 2013 |
I had a number of different titles for my role during this time, from Senior Software Engineer to Principal Solutions Engineer, but with largely the same responsibilities.
As a part of the Professional Services team, I designed and implemented solutions based on Message Systems' Momentum messaging server, often extending the platform with C, C++ and Lua. I worked primarily with customers in the telecommunications and financial services industries, in Europe and the USA. Some highlights:
Technical sponsor and development lead for two large, multi-year Professional Services engagements. These involved extensive requirements analysis, design and solution implementation work on behalf of the clients. Worked with Product to ensure required features were on the roadmap.
Led a project with one other engineer that was one of the first large-scale uses of Lua for email policy. We diagnosed critical bugs in the Lua runtime, and then proposed fixes to the core product. Worked closely with Engineering to deliver fixes to the customer.
Worked closely with our Support team to resolve any problems encountered by our customers.
Senior Software Engineer / Software Engineer |
MessageLabs, Gloucester, UK | 2003 - 2007 |
Software Engineer (2003 - 2005), Senior Software Engineer (2005 - 2007)
Led a small team of 2 to 4 people implementing new features and bugfixes in the SMTP email server software at the core of MessageLabs's email cloud infrastructure. Written in a mix of C and C++ (STL and boost) on Linux.
Supported the Operations and Client Services teams in resolving customer issues.
Software Engineer | Riverstone Networks, Reading, UK | 2000 - 2002 |
Wrote microcode (assembler) for networking protocols for two custom processors. Worked closely with the hardware, software and simulation teams in California.
Initiated and wrote significant portions of tools in C++ for blackbox testing of the microcode. These helped find several hardware bugs, thereby avoiding expensive re-design and fabrication of the custom processors.
Software Engineer | Cabletron Systems, Reading, UK | 1999 - 2000 |
Part of a team developing in-house implementation of Virtual Private Networking (VPN) for Cabletron's small-office routers.
1995 - 1999 |
University of Bristol, UK - MSci Physics with First Class Honours |
HTML and CSS crafted by hand. HTML linted with HTML Tidy. PDF generated using Puppeteer.
Fri, 14 Apr 2023 10:02:26 +0100 (richard-dawe-cv.html 8b8fa4081a6930f2a5a813fbe547885e0de48965)