Donald Robertson

Full-stack software engineer with 9 years of professional experience across multiple technology stacks. I like building efficient and robust web applications, mentoring other developers and implementing effective processes. Onetime researcher with a focus on transport protocols, streaming media applications and how they can collaborate to achieve fairer performance for users.

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

Education

Sep. 2018 - Sep. 2024

PhD Computer Science University of St Andrews

Supervisors: Marwan Fayed (Primary), Saleem Bhatti (Secondary)

Thesis: Collaborative Feedback Controls for Transport and Application Layers in Dynamic Adaptive Streaming over HTTP (DASH)

  • Conducted a statistical analysis of data transfer during slow-start to avoid issues due to nesting the congestion avoidance and ABR algorithm control loops
  • Implemented a system allowing a modified dash.js player to enable pacing at the server-side using a a combination of: 1) an HTTP server implemented in Rust, 2) a custom congestion control module with Reno AIMD, and 3) a modified Linux kernel
  • Explored using server-side transport-state to improve low-latency live-streaming performance in a dash.js player modified to handle TCP or QUIC metrics
  • Deployed a patched version of Nginx with QUIC support provided by Quiche to enable surfacing of transport-state without the use of OpenResty or Lua

Awards

  • Brendan Murphy Memorial Prize, 2019: Awarded for the best presentation by a young researcher at the Next Generation Networks Multi-Service Networks workshop

Sep. 2011 - Jun. 2016

BSc Software Engineering University of Stirling

First Class (Honours)

Dissertation: Development of a Linux Driver for the Microsoft Xbox 360 Wired Controller

  • Implemented a Linux kernel USB device driver for the Microsoft Xbox 360 Wired game controller including support for LED and vibration features
  • Conducted a statistical analysis of performance against extant solutions using number of clock cycles to avoid issues with time-based measurement of kernel-space driver software

Awards

  • Computing Science Honours Project Prize, 2015
  • Computing Science Third Year Prize, 2014
  • Computing Science Second Year Prize, 2013

Technical Skills

Languages
JavaScript, TypeScript, Rust, Elixir, Python, SQL (PostgreSQL), HTML, CSS, C
Libraries
  • JavaScript
    • NodeJS
    • React
    • Next.js
    • Tanstack Query
    • Prisma
    • Jest
    • Playwright
  • Rust
    • Actix
    • Tokio
    • Hyper
    • Log
    • LazyStatic
    • Tracing
    • Serde
  • Python
    • Jupyter
    • Matplotlib
    • NumPy
    • SciPy
Tooling
Nginx, Kubernetes, OpenTelemetry, Prometheus, AlertManager, Grafana, Ansible, Vault, GitHub Actions

Interests

Football
I have been a devotee of football since childhood. I am a diehard fan and former season ticket holder of Leicester City. Sadly I am now reduced to following them from afar. I delight in learning more of the global history of the game. Most recently I have been reading about the evolution of Argentinian football across the twentieth century.
Programming
Writing code has been my main hobby since beginning my undergraduate degree. I enjoy problem solving and the structure programming brings to that pursuit. I was treasurer and then president of Stirling University Computer Club. In second year I led development of an on-campus route finder for Android. I now work primarily in TypeScript. I enjoy the safety provided by type annotations when trying to ensure program correctness.