Joseph Wynn's Résumé

Kia ora!

I'm Joseph Wynn, an engineering team lead and software developer based in Ōtautahi Christchurch. My experience ranges from building high-traffic distributed systems to growing and supporting engineering teams; from crafting rich interactive UI components to implementing real-time data processing pipelines.

On my journey to build better systems I've become a polyglot and a generalist. I've written software in many languages at almost every layer of the web stack: database, backend, API, frontend, CDN/edge, tooling, and testing.

Outside of my professional work I maintain several open source projects, (infrequently) write software development guides, and (even less frequently) write about other stuff.

Want to know more? Ask me to walk you through how SpeedCurve's real user monitoring (RUM) architecture handles 2000 requests per second, or my role as Principal Engineer building the BBC's next web platform with 50 developers from multiple teams.


Overview

Languages: Rust, TypeScript/JavaScript, Python, SQL, PHP
Platforms: Fastly Compute, Heroku, Amazon Web Services (AWS)
Data stores: MariaDB/MySQL, Amazon Redshift, SQLite
Workflow: Git, Docker, Jenkins, CircleCI, GitHub
Team lead: 5-10 direct reports, 50+ indirect reports

Experience

2020–present: SpeedCurve | Head of Engineering

Stepping into the Head of Engineering role, my initial focus was on expanding the team and setting technical direction. It was rewarding to empower the team to work on what was important to them while still delivering the needs of the product and business.

I oversaw the migration to a new cloud provider, enabling better scalability and faster deployments with no downtime. We adopted a service-based architecture during a period of high growth which enabled us to deliver new features without impacting existing services.

Due to our small team size, I remained an active contributor while in the Head of Engineering role. One of my bigger projects was building a bespoke database abstraction layer (DBAL) that allows end users to build custom charts, with the DBAL seamlessly fetching data from multiple sources. This project was a huge success and enabled us to easily add new data, dimensions, and even data sources.

2017–2020: SpeedCurve | Lead Software Developer

As a developer at SpeedCurve I worked on everything from the infrastructure, database, and backend to the API and frontend. I took ownership of SpeedCurve's real user monitoring (RUM) product, performing a major refactor of the data collection script and validating the results by writing a test harness with nearly 100% coverage. I migrated the RUM data ingestion from primitive VCL routines to a fast & flexible Rust service running on Fastly Compute. I used code generation techniques including self-modifying code to build highly-optimised SQL for generating correlation charts. I also guided our engineering team through building a library of modular front-end components using techniques that I pioneered at the BBC.

While I love coding, my priority as a team lead has always been unblocking my team and enabling them to work on the things they care about. Regular one-on-one meetings helped me identify and fix conflicts or burnout before they became issues for the wider team. I am proud to say that no one was afraid to ask for my time, and that we had a culture of lifting each other up.

2014–2017: BBC News | Principal Engineer

Working across several teams, I helped to deliver the BBC's responsive web platform and new front-end component library. I worked on the CI pipeline that enabled teams to move from weekly deploys to several deploys per day, and built automated testing tooling to increase QA productivity. As Principal Engineer I led the team responsible for building a better BBC News front page and the BBC's next web platform. As my role shifted to include more management responsibility, I focused on growing & supporting the people around me.

2013–2014: Rightster | Senior Software Developer

Working closely with product developers and designers, I helped build Rightster's new video distribution platform. This role involved writing a lot of code and co-ordinating feature development with other teams. In between shipping features, I implemented a Git workflow that helped to reduce the chaos of multiple teams working on the same source code. It was this Git workflow that led me to write A Hacker's Guide to Git. It was very satisfying to build a product from the ground up, and to ensure our development practices allowed the team to grow quickly.

2012–2013: Time Inc. UK | Senior Software Developer

Built websites for some of the UK's biggest magazine brands, using complex caching strategies to handle high traffic demands. Learned a myriad of useful things including programming at the CDN edge, proper change management, automated testing, and data-driven product development.

2007–2012: Various | Software Developer

Software development at various agencies in Christchurch and London. I helped build a tourism booking portal, a buy & sell platform, a real-time racing odds checker, and much more. Let's chat over a coffee if you'd like to learn more about my past work.


Writing

Some of my writings have been circulated through the wider software development community over the years. Here are a few of the most popular pieces:


Open Source

Below are a few of my open source projects. You can find the rest of them on GitHub.

tiny-relative-date

A tiny (800 byte) library that converts absolute dates to relative, human-readable strings. If you've used npm, then you've used this project!

jekyll-responsive-image

A popular responsive image plugin for the Jekyll static site generator.

Second

A framework for server-rendered React apps with delcarative data fetching and opt-in client-side rendering. Many of Second's features are now part of React core.

Plait

A fast, experimental JavaScript component framework based on the original Elm architecture.


Hey, you made it to the end! If you want to know more about me, or you just want to chat, you can find me on Bluesky or GitHub. You could also email me: joseph at wildlyinaccurate dot com.