Global Player
A radio & podcast streaming service

My work at Global
At Global, I build listening experiences and content tools for Global Player, which brings together Global’s radio stations, podcasts and playlists. My work spans the Next.js web app, internal publishing tools, Alexa and Apple TV, covering frontend development, backend services, testing and CI.
Web app
I develop features for globalplayer.com that help listeners find content, personalise their stations and control playback. My contributions include the dynamic home hub, the station selector customiser for logged-in users, and sharing podcasts and radio. I’ve also contributed to the podcast experience overhaul, playback speed, OAuth account linking and ad-free streams for premium subscribers.
I work with Next.js, React, TypeScript and CSS Modules, developing reusable components in Storybook using Atomic Design. I back feature work with tests using Jest, React Testing Library and Mock Service Worker, exercising the interface with mocked API responses.
Internal content tools
I build tools for the teams publishing content to Global Player and other Global products. I helped introduce collections to the internal admin panel, giving editors a way to bring different types of content together and display those collections across multiple products.
This work uses React, TypeScript and Vite, with Apollo and GraphQL for data. I work with Chakra UI and Motion on the interface, and Storybook for component development.
Alexa
My recent work includes bringing ad-free listening to Alexa, one of Global’s most-used radio platforms, alongside promotional pre-rolls for the premium subscription. I work on both the Alexa-facing app and its backend-for-frontend (BFF), connecting the listening experience with the services behind it.
The Alexa-facing app runs on AWS Lambda, using TypeScript, the ASK SDK, AWS SDK and Axios. On the Node.js BFF, there’s a focus on reducing unnecessary calls and load on backend services given the number of people listening through Alexa.
The BFF work also involves TypeScript, Zod and GraphQL with Codegen, with Jest and Mock Service Worker for testing.
Entitlement expression parser
I wrote and published an internal package for parsing user entitlement expressions, which describe access to features and content.
I built the package with TypeScript and Vite, and used Vitest to test the parsing logic.
Other platform work
I implemented ad-free listening in an existing Apple TV app written in TVML, extending the subscription experience to a platform outside the React stack I use day to day.
I’ve also added routes to a Python BFF, extending the backend services that support Global’s products.
CI
I also contribute to CI improvements using GitHub Actions, Jenkins and Docker. My work extends beyond product features to the pipelines used to build, test and ship changes.
Technologies used: React, Next.js, TypeScript, GraphQL, Node.js, AWS Lambda, Python