Senior software engineer
2019-06 — 2022-01Worked across backend, frontend and infrastructure, taking on lead developer and interim team lead responsibilities in several teams.
MoreLess
At BookBeat, I worked across backend, frontend and infrastructure, moving between teams where senior engineering experience was needed. My responsibilities included developing new services, modernizing existing systems, and taking on lead developer and interim team lead roles.
After several years focused on leadership and project management at my previous employer, I joined BookBeat to return to hands-on development and broaden my backend and full-stack experience. I worked with .NET services, databases, Azure infrastructure, and internal and public-facing React applications. The development teams also owned deployment, monitoring, logging and support.
At BookBeat, I worked across backend, frontend and infrastructure, moving between teams where senior engineering experience was needed. My responsibilities included developing new services, modernizing existing systems, and taking on lead developer and interim team lead roles.
After several years focused on leadership and project management at my previous employer, I joined BookBeat to return to hands-on development and broaden my backend and full-stack experience. I worked with .NET services, databases, Azure infrastructure, and internal and public-facing React applications. The development teams also owned deployment, monitoring, logging and support.
Selected projects
Public website migration & design system
2021-08 — 2022-01Helped migrate the public web to Next.js, developed the component library with UX and design, and aligned delivery and logging with the rest of the company.
MoreLess
I joined the web team to accelerate the migration of BookBeat’s public website from its existing React platform to Next.js. Alongside the migration, I implemented BookBeat’s new visual identity in our shared component library, working closely with UX and design to establish a design system. I set up the build and publishing pipeline so teams could consume the library as an internal npm package.
I also migrated the project’s CI pipeline from CircleCI to Azure Pipelines and moved logging to New Relic. This aligned the website’s tooling with the rest of the company and made it possible to trace calls through the entire stack.
I joined the web team to accelerate the migration of BookBeat’s public website from its existing React platform to Next.js. Alongside the migration, I implemented BookBeat’s new visual identity in our shared component library, working closely with UX and design to establish a design system. I set up the build and publishing pipeline so teams could consume the library as an internal npm package.
I also migrated the project’s CI pipeline from CircleCI to Azure Pipelines and moved logging to New Relic. This aligned the website’s tooling with the rest of the company and made it possible to trace calls through the entire stack.
Tech: React, TypeScript, Next.js, Node.js, MobX, SCSS, Azure Pipelines, Azure Container Services, Storybook, Adyen, New Relic
Full-stack developer & tech lead — Content Controlling
2020-08 — 2021-07Served as tech lead for Content Controlling, helped deliver a zero-downtime database migration to RavenDB, and modernized the publisher portal.
MoreLess
As tech lead for the Content Controlling sub-team, I helped plan and execute a database migration from Azure Table Storage to RavenDB for a complex .NET service. We moved traffic gradually while keeping both databases live, completing the migration with zero downtime. The migration addressed growing data volumes and the need for better performance and a richer feature set.
The team owned content pricing, reporting and the publisher portal. I planned and organized development work and collaborated with other parts of the company on requirements and delivery.
I also modernized the portal’s React frontend, moving from Redux and MobX to Redux Toolkit Query and replacing an older internal UI library with Ant Design. Alongside this, I updated the application’s build tooling and deployment setup.
As tech lead for the Content Controlling sub-team, I helped plan and execute a database migration from Azure Table Storage to RavenDB for a complex .NET service. We moved traffic gradually while keeping both databases live, completing the migration with zero downtime. The migration addressed growing data volumes and the need for better performance and a richer feature set.
The team owned content pricing, reporting and the publisher portal. I planned and organized development work and collaborated with other parts of the company on requirements and delivery.
I also modernized the portal’s React frontend, moving from Redux and MobX to Redux Toolkit Query and replacing an older internal UI library with Ant Design. Alongside this, I updated the application’s build tooling and deployment setup.
Tech: .NET Core, C#, React, MobX, Redux, Redux Toolkit Query, Node.js, Less, Azure Pipelines, Azure Kubernetes Service, SQL Server, RavenDB, Azure Table Storage, Azure Service Bus, Azure StorageBus (message broker for large, slow messages), Helm, Octopus Deploy, New Relic, Ant Design
Interim team lead — Content
2020-02 — 2020-08Led five developers through the shift to remote work while developing and operating content services and web applications.
MoreLess
I led a team of five developers responsible for around ten .NET microservices and two React web applications, covering content ingestion, curation and reporting. I joined as interim team lead during the existing lead’s parental leave.
The assignment coincided with the start of the COVID-19 pandemic, so a major focus was keeping our working process effective during the shift to remote work. Alongside team leadership, I continued hands-on backend development. We owned the full delivery lifecycle, from requirements and design through development, deployment, monitoring and support.
I led a team of five developers responsible for around ten .NET microservices and two React web applications, covering content ingestion, curation and reporting. I joined as interim team lead during the existing lead’s parental leave.
The assignment coincided with the start of the COVID-19 pandemic, so a major focus was keeping our working process effective during the shift to remote work. Alongside team leadership, I continued hands-on backend development. We owned the full delivery lifecycle, from requirements and design through development, deployment, monitoring and support.
Tech: .NET Core, C#, React, Redux, Node.js, Less, Azure Pipelines, Azure Kubernetes Service, SQL Server, Azure Table Storage, Azure Service Bus, Azure StorageBus (message broker for large, slow messages), Helm, Octopus Deploy, New Relic
Backend developer — Marketing
2019-09 — 2020-01Worked with business stakeholders to define and build a campaign engine, delivered in time for a major business partnership.
MoreLess
BookBeat’s marketing team needed a campaign engine to tailor customer offers to different stages of the customer journey and other customer attributes. Drawing on my experience at Mr Green, I worked with business stakeholders to define the feature set and helped design and implement the service.
We launched the engine in time for a major business partnership.
BookBeat’s marketing team needed a campaign engine to tailor customer offers to different stages of the customer journey and other customer attributes. Drawing on my experience at Mr Green, I worked with business stakeholders to define the feature set and helped design and implement the service.
We launched the engine in time for a major business partnership.
Tech: .NET Core, C#, SQL Server, EF Core, Azure Service Bus, Octopus Deploy, Azure Pipelines, Azure Web Apps
Backend developer — Engineering
2019-06 — 2019-08Migrated backend services to .NET Core and helped move delivery and hosting to Azure Pipelines and Kubernetes.
MoreLess
In BookBeat’s Engineering team, I worked on developer experience and the backend platform. I migrated several microservices from .NET Framework and Entity Framework 6 to .NET Core and EF Core, researched how to run them on Linux, and helped deploy them to Azure Kubernetes Service.
I also researched and implemented shared pipeline templates for moving .NET services from TeamCity to Azure Pipelines, laying the groundwork for container builds.
In BookBeat’s Engineering team, I worked on developer experience and the backend platform. I migrated several microservices from .NET Framework and Entity Framework 6 to .NET Core and EF Core, researched how to run them on Linux, and helped deploy them to Azure Kubernetes Service.
I also researched and implemented shared pipeline templates for moving .NET services from TeamCity to Azure Pipelines, laying the groundwork for container builds.
Tech: .NET Core, C#, Azure Pipelines, Azure Kubernetes Service, EF Core, SQL Server, Azure Table Storage, Azure Service Bus, Azure StorageBus (message broker for large, slow messages), Helm, Octopus Deploy, Mono