Experience
Oct. 2022 - Present
Senior Software Engineer Beamery Remote
- Led migration of internal tooling from multiple CLIs to a single ReactJS web UI. Overhauled a dormant project with dependency upgrades. Added OpenTelemetry-based observability surfaced using Grafana. Co-authored an internal RFC proposing architectural simplifications and efficiency gains for related upstream services.
- Subsequently selected to lead UI development on a new business-critical product. Responsible for project setup, technology choices, documentation, system architecture, operational ownership and feature delivery.
- Drove process improvements that increased team velocity through a reduction in non-essential meetings and adoption of asynchronous pre-refinement activities. Defined a collaborative process with product and design to identify and resolve technical unknowns before they could block delivery.
- Mentored multiple engineers in front-end development to reduce development bottlenecks and minimise knowledge siloing.
May 2016 - Sep. 2022
Part-Time:
Oct 2018 - Sep 2022
Software Engineer Findmypast Dundee
- Helped drive the migration of user account data and functionality from an ASP.NET/MS-SQL monolith to an Elixir/PostgreSQL microservice with zero downtime and 6 weeks ahead of schedule
- Designed, implemented and optimised a novel family tree layout algorithm in NodeJS supporting performant layout of 10,000 node trees in ancestral and descendant directions simultaneously thereby outperforming competing products. The algorithm underpins the ReactJS family-tree application within the wider family history product.
- Investigated network performance at the container, node and VM layers of an on-premises
Kubernetes cluster using eBPF and perf
resulting in issues with DNS caching being identified while affirming normal patterns of
softirq
processing following a NIC upgrade
Jun. 2020 - Sep. 2020
Internship
Research Intern BBC Remote
- Researched improvements to low-latency live-streaming performance by enabling communication of server-side transport state via a novel HTTP header to a client-side dash.js video player
- Deployed an OpenResty server as a transparent proxy that generates and prepends the header to responses from an upstream CDN server
- Implemented a throughput estimator in dash.js to parse the contents of the HTTP header and estimate throughput based on the congestion window, MSS and RTT
- Documented the project results in an internally published report. The approach was refined and expanded to support QUIC in the course of my PhD.
Feb. 2016 - Apr. 2016
Software Engineer Etellect Glasgow
- Co-led integration of PayPal into an ASP.NET/MS-SQL e-commerce platform used by multiple SME clients across Scotland
Jul. 2015 - Jan. 2016
Graduate Software Engineer Verint Inchinnan
- Delivered an integration of consumer forums with a CRM product