|Principal Engineer at SparkPostfirstname.lastname@example.org|
|Bristol, United Kingdom||Tel: 0777-6141675|
Self-motivated, technical leader and systems software engineer with 20+ years' experience.
My personal goals:
I am currently focussed on the reliability, resiliency and scalability of the email generation pipeline in SparkPost's cloud-based, high performance email delivery and analytics service.
|Skills:||Distributed Systems; Continuous Integration / Continuous Deployment (CI/CD), unit/functional/integration testing; full Software Development Lifecycle (SDLC); requirements analysis; design & integration planning; performance analysis & improvement; incident management, mitigation & resolution; Root Cause Analysis; training|
|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|
|Principal Engineer||SparkPost, UK (remote)||March 2015 - present|
As a Principal Engineer in the Email Delivery Group, I provide 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 to the existing production service with no issues. This scaled both the AWS ECS service and EC2 compute capacity. Wrote 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 greatly reduce costs and increase efficiency by moving from a cluster per tenant to shared clusters, thereby eliminating ~120 c4.4xl/8xl AWS EC2 instances (~$30k+ per month). 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 Thanksgiving / 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, to ensure our customers' emails would be accepted and delivered promptly. 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 (no outages).
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. Delivery within a short timescale was also a key goal for the customer. This uncovered a number of issues with our system. 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 a capacity model to determine extra capacity required. My colleagues also resolved a number of other issues that we discovered with a customer operating at this scale.
|Lead Engineer / Senior Software Engineer||Message Systems, UK (remote)||2013 - 2015|
Note: Message Systems, Inc. is now doing business as SparkPost.
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 email server software to add email submission APIs and much-improved reporting use interface. It used the Cassandra database to provide scalable and resilient storage. Momentum is a powerful, high-performance email server, extensible in C or Lua.
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 C.
Designed the click and open tracking system for Momentum, and led the team of 3 engineers developing it. This included changes to message generation to insert tracked links, and building an HTTP service to process requests from email clients when recipients opened their emails or clicked on links. (80% C, 20% Lua)
Discovered, investigated and resolved issues in the new multi-event-loop mode in Momentum 3.6: poor throughput in the HTTP server in multi-threaded mode; infrequent and subtle crashes during config reloads due to unsafe use of data from multiple threads. (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, but with largely the same responsibilities: Senior Software Engineer, Professional Services Engineer, Client Integration Architect, Principal Solutions Engineer.
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. 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 discovered critical bugs in the Lua runtime, then debugged and proposed fixes for them. Worked closely with Engineering to deliver fixes to the customer.
Responsible for a large engagement that involved heavily customizing Momentum with ~5,000 lines of C++ code, and driving email policy based on data from an external system accessed via a C++ library provided by the customer. Message Systems was contracted to develop and support this code. I wrote about 50% of the C++ code and Perl test cases.
Worked closely with our Support team to resolve any problems encountered by our customers.
|Senior Software Engineer /
|MessageLabs, Gloucester, UK||2003 - 2007|
Software Engineer (2003 - 2005), Senior Software Engineer (2005 - 2007)
Responsible for the SMTP email server software at the core of MessageLabs's email cloud infrastructure. This accepted, scanned, modified, and delivered messages according to customer-configurable policy. Written in a mix of C and C++ (STL and boost) on Linux.
Designed & implemented new features in the email server to support updated versions of AV/AS/IC/CC services, working closely with other teams (Development, Test, Operations, Client Services, Product Management). For example, integrating the Symantec Brightmail anti-spam service.
Led a small team of 2 to 4 people implementing new features and bugfixes in the email server.
Technical Lead for a proof-of-concept to evaluate a replacement for the aging SMTP email server software. This included working closely with the vendors, and prototyping to ensure that a replacement would meet our needs and we could integrate it into our systems. A replacement was chosen and successfully implemented.
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) using Public Key Infrastructure (PKI) for certificates on 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.
Sat, 24 Apr 2021 11:34:38 +0100 (richard-dawe-cv.html e20478bf48f707f78b55c903ba36feba9403bddb)