A space for my creative projects and digital tinkering.

Highlighted Graphics Project

Great Western Railway

An accurate map of train services and their frequencies has always been something that I have been looking for. While being accurate!

My Great Western Railway map is my ‘magnum opus’, this is an accurate map of every regular GWR service, station and frequency

Due to GWR’s inconsistent frequencies and calling patters at peak times some areas have had to be simplified but overall I hope this helps people navigate the UK’s Rail Network

Versions for other operators are available

Web Based Programs

Live Tube Departures

This site is currently a work in progress. I’m developing a system that can interpret and present TfL’s live Tube departure data with far greater accuracy than most existing tools and for it to be accessible for all to be able to use, manipulate and be understood

TfL’s API is known for being inconsistent, and part of this project involves understanding and working around those quirks. A big focus has been figuring out how the data behaves in real‑world conditions so the site can present live departures as accurately and reliably as possible.

I first became interested in how TfL’s live data actually works after watching a detailed technical lecture from eta (the creator of intertube) that broke down the quirks, delays and internal logic behind the system. It explained why the API can appear unpredictable from the outside, how the underlying prediction engine behaves, and what developers need to understand in order to interpret the data properly. A lot of what I’m building here is informed by the insights from that talk and the deeper understanding it gave me of how the network reports real‑time information.

This project should be finished later this year and then I can work out how to properly distribute the final product.

The TfL Unified API exposes real‑time prediction data for London Underground services, but it isn’t a simple feed of raw train positions. Instead, it provides a mixture of scheduled information, live telemetry, and inferred predictions generated by TfL’s internal forecasting engine. This means the API can behave unpredictably: arrival times may jump, disappear, or recalculate when the prediction model updates, and different endpoints can return slightly different states depending on when they were last refreshed. Understanding these quirks is essential for building a reliable departures interface, as it requires handling inconsistent timestamps, smoothing rapid prediction changes, and accounting for the fact that the API does not always reflect the exact real‑world state of the network. A large part of this project involves analysing these behaviours and designing logic that can interpret the data more intelligently than simply displaying the raw responses.