> You will regret using this data. You will regret using this API.
> It serves data from individual arrivals boards, which all spell stations differently.
> It describes train status in free text that varies between stations. “Approaching Barnet”, “Near Waterloo”, “Heading to Bank”, “Departing Southgate”, “Leaving Hampstead”, etc.
I'm not sure what you expected from an organisation still offering nothing but SMS-based MFA to its "customers" and one that got massively disrupted by a 17 year old in a cyber incident which seemed to paralyse the entire organisation a few months ago...
Symbiote · 19d ago
It's also the organization that rolled out the second large stored-credit contactless payment system in the world (after Hong Kong), and was the first to introduce bank card contactless payments.
theginger · 19d ago
Best part of 20 years ago, which is a long time in anything, it's a lifetime in tech.
About 15 years ago I used to work on some projects for greater London authority, we seemed to mostly be squatting on transport for London servers and they seemed to have good tech and people seemed to like using it. 5 years later they couldn't get away fast enough.
ghaff · 19d ago
These days just tap a contactless credit card is about as good as it gets-while still having the Oyster alternative where the credit card isn’t a good or preferred option.
lol768 · 17d ago
Hurrah. That was 13 years ago and it still doesn't support railcard discounts.
TfL may have been innovative a long time ago, but they haven't moved with the times at all. Hell, the Oyster POMs only got contactless payment readers in the last couple of weeks. Prior to that it was "chip 'n' pin" - y'know, the technology introduced back in 2004.
HPsquared · 19d ago
For some reason I'm thinking of the classic "Speed cooking" videos:
FunFact: I have enjoyed HN for about 10 years even though I have NO IDEA what an API etc. is. A tribute to its welcoming big tent for non-techies like me who wouldn't know a dark pattern from dark matter.
Pathogen-David · 19d ago
If you're curious: An API is more or less just the communication boundary between two pieces of software.
A common sign of a bad API (including this one) is when it presents data in an overly human-centric way rather than something more computer-friendly.
For a human it's really easy to see "Regents Park" and "Regent's Park" are very very likely referring to the same station, but a computer can't know that unless a human goes out of their way to tell it that.
You could argue the TfL API is perfectly fine for its intended use-case of updating the arrival screens (which are meant for humans), but it's generally better to design APIs to grow for future use-cases you haven't thought of yet. Changing an API tends to be hard once it's being used in the real world.
For example: The older TfL stations have LED matrix displays for displaying information, which are very limited in how much text they can display at once. The newer stations have big TV screens instead, which can show a lot of information. It wouldn't surprise me if this is the underlying reason behind some of the inconsistencies, especially ones like "Kings Cross" vs "King's Cross St. Pancras". I'd bet the longer names with punctuation correspond to arrival displays in the newer stations.
exe34 · 18d ago
this reminds me of the time I got on a train to Kingsley instead of King's Cross, because the train board only said "Kings" and I didn't think to check the boards/platform number in a rush.
Pathogen-David · 17d ago
Ahh, that's the worst. Hopefully you realized your mistake sooner rather than later.
exe34 · 17d ago
only went one or two stops the wrong way and turned around. I was new to the British train system.
eks391 · 19d ago
An Application Programming Interface provides data to a requester. They are built/shaped by the provider and so the provider usually has documentation for a user to know how to pull and parse it, with example snippets.
Its like having a printer with preset documents it can print. You set it on your desk, and others can click a button to have the chosen preset sheet come out. You can get creative by hiding some buttons, making some buttons also require a fingerprint of the user to print the paper, or the printout changes every minute, etc.
But the API printer sits on someone's server and prints objects, or organized data, and sends it to whatever you used to call, or request, from the API.
sa-code · 19d ago
It's like a website but for code instead of people.
People use web browsers to hit websites, but when code hits URLs they are typically just called APIs. A website is technically an API too
unfocused · 19d ago
I'll try and explain it simply with no technical information.
An API, or Application Programming Interface, allows you to interact with software using pre-defined agreements, or contracts.
Think of API as a set of legal contracts. I use this analogy when explaining it to lawyers.
If I give you $5, and I say give me an Apple, you will give me an Apple, as expected by the predefined contract, that I receive an Apple.
If I end up receiving Broccoli, then what we have here, is a bug. Or, in other words, the contract has been broken.
Now apply this to other domains in commerce - e.g. I give an ID of an item in a store, and I get back the name of the item, it's price, and if it's stock.
unkeen · 19d ago
To the gloriously mansplaining sibling commenters: Do you really think a question has been asked in the parent comment? If you do, why?
Mountain_Skies · 19d ago
For each person who is willing to speak up and say they don't understand something, there's usually dozens more who silently are wondering the same thing. Even if the parent commentor didn't want an explanation, they opened to floor for others to help out the silent folks who actually were curious as to the explanation.
bookofjoe · 18d ago
So true. I have a rule of 100: for every person who takes the time and trouble to actively respond to something on the phone/by mail/online, there are 99 others who feel exactly the same way but can't be bothered.
bryanrasmussen · 19d ago
Do you really think they're "mansplaining" to the user identified as bookofjoe?
hardlianotion · 19d ago
Pretty sure they're all women.
johnmlussier · 19d ago
What’s the harm? Parent can choose to not read if they want.
bookofjoe · 19d ago
This made me smile.
frakkingcylons · 19d ago
This is something that a small LLM handles quite well. I’m using one to normalize MTA delay reports so I can aggregate stuff in a sane way.
MrsPeaches · 20d ago
Was this big one recently that took out the Zip cards?
tim333 · 19d ago
Seems to be: "TfL’s efforts to deal with the cyber attack have resulted in a growing shutdown of its own systems, meaning that new zip cards used by children and teenagers cannot be obtained" "17-year-old male has been arrested on suspicion of Computer Misuse Act offences in relation to the attack. The teenager, who was arrested in Walsall ..." https://www.standard.co.uk/news/london/tfl-cyber-attack-pers...
i_like_robots · 20d ago
I've seen visualisations similar to this before, but this one is by far the most beautiful and I could watch it all day.
I echo the sentiments on the TfL API, I've built the same Tube Tracker app over and over for more than 10 years[1] as my go-to for learning new tools[2] or testing changes to frameworks[3] and I'm not sure it's ever improved. A chap called Chris Applegate wrote extensively about his battles more than a decade ago[4], did they ever add the stations between Latimer Road and Goldhawk Road on the Hammersmith & City/Circle line?
its incredible the sentiment on TfL API without realising your country even has an API for your public transport. Thats a huge leap in itself, let alone an actively maintained one
charkubi · 20d ago
I also implemented this 16 years ago[1] while researching a lot of new technology all at once, it was tricky but very satisfying to get it working.
But its after the last trains now so not much to see.
dachris · 20d ago
There's this board game we played as kids - https://en.wikipedia.org/wiki/Scotland_Yard_(board_game) where you move around the London public transport system chasing Mr. X (everyone always wanted to play Mr. X) - it was really funny
bbx · 20d ago
I still play that game! Fairly popular in France, but nobody seems to know it in England weirdly enough. The newer board is a bit less readable than the 90's version. I also play it on my phone, although the AI isn't that good.
hk__2 · 19d ago
I’m French and this is the first time I hear about it.
usr1106 · 19d ago
It was fairly popular in Germany in the late 80s / early 90s.
The Austrian version of this is particularly cool because it has all forms of public transport on it: https://anachb.vor.at/ (click Kartenoptionen -> Live map -> alle einblenden).
I just spent a bit of time in Wien and was blown away by the ease of use of their transit system and its integration into Google Maps. For someone from the US, it's like a different world.
archagon · 19d ago
I noticed Yandex maps for St. Petersburg has this as well. Always wanted it in the US.
modernerd · 20d ago
Tube Creature is also cool (the source of the tube paths for this map).
Particularly like the "Tube Tongues" metric — the second-most commonly spoken language after English by residents near each tube station, it paints a real picture of a diverse London:
Incidental to this, I'm now convinced that the tube map is overrated and a quasi-geographical map would suit London better. And by "quasi" I mean slightly expanded or contracted in certain spots for clarity but basically correct.
But the district labels are a bit too in the way right now, and in any case it would be nice to see the stations.
Kwpolska · 19d ago
For most big cities and conurbations in Poland: https://czynaczas.pl/ (city picker in the top left, defaults to Warsaw, and shows many modes of transport).
_joel · 20d ago
Jago Hazzard will be happy (well worth subscribing on youtube btw if you like trains)
ratatoskrt · 20d ago
> It serves data from individual arrivals boards, which all spell stations differently
It doesn't, at least not for most lines. TfL's data is notoriously inconsistent, with multiple backends used for different purposes. For most lines, the dot matrix indicators are fed by the signalling system and timetables (more modern signaling systems are timetable-aware). Meanwhile, the online API relies on estimates from TfL's TrackerNet.
teleforce · 20d ago
One of the best game I ever played is the text based souvenir game shopping game on Windows 3. I can't recall the name of the game now since it's more than 30 years ago, but it's about shopping souvenirs using London Underground Tube. You have a semi realistic time constraints like train schedules, your flight schedules and of course list of souvenirs items to shop. This is totally offline since there is no Internet available at the time but it's very engaging nonetheless.
My proposal for the modern version of the game is to use real-time train schedules (with delays, ticket discounts, etc) that are available publicly on the Internet for many metropolitan cities in the world for examples Tokyo, London and Berlin.
Imagine you can have a real-world realistic in-app in-game items purchases feature that you personally can buy in the game and delivered to you or anyone you fancy of giving souvenirs except that you only virtually went there.
There is a similar real time map for Berlin VBB network. It shows the realtime locations of S-Bahns, U-Bahns, Buses, ferries etc. Pretty cool and handy.
(You'll have to select the Livekarte option under Livekarte & Multi -Mobilität)
Its a bit confusing as it only shows a single line for places that have multiple lines running on the same track
TheOtherHobbes · 20d ago
Trains in opposite directions overlap, which makes it very hard to see what's going on.
Also, trains disappear when they stop. Which is - uh - strange.
It's more pretty than practical. Trains marked with dots, arrows, or boxes would be far easier to read.
ralferoo · 20d ago
The trains themselves have different colours though, so it's not too bad.
Personally, I think the stations themselves are a bit too dark and hide any train that's at the station once the trail disappear. But overall, I think this visualisation is beautiful.
The line is there, it's just hard to see. There are no trains on it though, as far as I can see.
_kush · 19d ago
I love how it makes life seem slow paced. If this was a wallpaper I would stare at it all day
zabzonk · 19d ago
Well, only because tube trains are a bit slow?
pjsg · 20d ago
I note that the times for future stations are in UTC and not BST. Also, when you zoom in to only a couple of stations, the trains seem to vanish occasionally -- maybe when part of the train reaches the edge of the display. I also find it jarring that the trains appear above the buildings rather than get hidden by the buildings. I'd like to see the trains running along the surface... All of these suggestions are much easier to make than to implement!
Good job on this and pretty cool.
n4r9 · 20d ago
It's cool to see how fast the trains go on different lines. But... where's the Elizabeth line? You get the tooltip when you hover over it, but the polyline is missing.
megapolitics · 20d ago
It’s probably excluded because TFL don’t classify it as an Underground line. Similarly, hovering over the DLR will produce a tooltip but the line is excluded.
No comments yet
bodyfour · 20d ago
Waterloo&City seems to be missing too
throwaway519 · 20d ago
It's not a tube, it's an overground line. As evidenced by this Network Southeast livery.. on a tube train that's an overground train that goes entirely underground https://m.youtube.com/watch?v=MhUDyX4DKXQ
fredoralive · 20d ago
The Waterloo and City was transferred to London Underground in 1994, as part of the privatisation (or not in this case) of British Rail.
As the only way to get trains on and off the line involves craning them out of the depot[1], they did retain their Network South East livery for about a decade after formally becoming an Underground line though, until repainted at an off line overhaul.
[1] There used to be a lift that could take a carriage at a time to surface tracks, but the Eurostar extension at Waterloo did for that.
Symbiote · 19d ago
I think it's present on the map, but is transparent or invisible in some way.
You can find it if you hover north-east of Waterloo.
pledg · 20d ago
If you hover over the line to the right of Blackfriars it says Waterloo and City, incorrectly.
I once saw a rendering of parts of the underground showing the stations and the tracks in 3D (hand-drawn but in scale), what stood out to me is how much of the entire system is composed of stations and how little for the actual tubes connecting those areas, certainly in the busier areas. I was hoping to see the stations rendered as well as I never could find those images back. This looks very nice in any case, reminds me of marinetraffic.
"ChatGPT - please make Waterloo station into a Doom WAD."
chris_overseas · 20d ago
Looks great but I'm watching this while sitting on a tube right now. What I assumed was my train was lagging by quite a bit and then disappeared!
ralferoo · 20d ago
This sounds like the start of a science fiction story where you find yourself transported to a parallel world...
bookofjoe · 19d ago
Yes, give us a holler when [if?] you return...
velocity3230 · 19d ago
RIP
iLoveOncall · 20d ago
From tracking the tube I'm in right now it seems to have around a minute of lag, that's pretty good to know when to leave your house, etc.
gorbachev · 20d ago
It doesn't list the final destination of the trains, which is quite important on lines like the District line.
grishka · 19d ago
Last time I ran into something similar, I researched whether I could get real-time subway train location data for my city, St Petersburg. It turned out that such data unfortunately doesn't exist as far as I can tell. I did find an official open API for the ground transport though.
Maybe a slight bug: the overlay doesnt appear to be locked to the map - when I scroll around, the overlay moves. Currently the northern lines' southern terminal is hovering over Kingston rather than Morden!
comte7092 · 19d ago
Shout out to Trimet in Portland, Oregon. I think their map is pretty great:
Great job! But what really caught my attention was that map — the 3D structures are perfect, and I was able to see my own building. Does anyone know which one it is?
This is very cool, but it is so sad to look at. South of the river has barely any connections far as the underground is concerned. The trains aren't much better.
blitzar · 20d ago
> Data -> TfL live tube data
> *You will regret using this data. You will regret using this API.*
> It serves data from individual arrivals boards, which all spell stations differently
> It has a load-balancer that regularly returns data that is older than the data returned in the previous request.
Won't someone think of the Ai overlords who will take care of all this for us in the future. A bit of consistency goes a long way.
urbandw311er · 19d ago
Actually I think AI would have far less trouble joining the disparate data than traditional compute techniques.
InDubioProRubio · 19d ago
Could you compute the heat-addition by the sub and the rail to the underground just by thermal radiation of the devices and passengers from this map?
kayo_20211030 · 19d ago
Nice. Pretty impressive in the standard view. But zoom and pan are broken. A revert to default view would be helpful.
ed_db · 20d ago
Very cool, although it seems to be missing both the Waterloo & City line and the Hammersmith & City line.
Quarrel · 20d ago
Hammersmith & City + Lizzy Line missing, makes Farringdon look like a backwater rather than London's best connected station.
Carstairs · 20d ago
It also has the met line extension in Watford that never got built.
mike_hearn · 20d ago
Sadly it seems to have broken, at least for me. I get:
> dist.min.js:11 deck: LineString coordinates are malformed
and no trains appear :(
jipl104 · 20d ago
What basemap provider are you using? built with Deck.gl it seems. Very cool!
ainiriand · 20d ago
This is one of the coolest things I've seen the whole morning.
wwdx · 20d ago
Repping for London UK - a rare feat these days. Well done Ben!
rossamurphy · 19d ago
Could you open source it ? Would love to contribute.
unkulunkulu · 19d ago
Oh no they will hit each other, someone call 911!
ww520 · 19d ago
It's 999.
usr1106 · 19d ago
Is it? In EU 112 is legally mandated. Did they roll back after Brexit?
Either way the numbers are mostly legacy. On mobiles emergency calls are a special protocol, no number is really transmitted to the network. If the phone application recognizes a certain number it will initiate an emergency call. And quite often several numbers do it. 000, 112, 911, 999. (Admittedly it's many years I last tested it.)
ascorbic · 18d ago
It's always been 999 in the UK. 112 works on phones too, but that wasn't because of the EU: it's part of the GSM standard.
Also, I love the webcams scattered around the city, and especially those which have sound.
softgrow · 20d ago
It is better, has underground, overground and is womble free. Also has planes and current weather effect (raining).
gloosx · 20d ago
This is frankly very cool and hypnotising to look at. I'd love to see more real-life data maps; anything else like this for London?
Imagine layering this, 3D buildings, live weather, street lighting, traffic, and even live business data from Google visualised as crowds on the streets. I could stare at that for hours.
talkingtab · 19d ago
FYI, the Amersham train just left.
ge96 · 19d ago
wonder if it would be worth putting arrow heads on the train direction
anotheryou · 20d ago
the tube is so deep, would be fun if that was reflected here.
jaffa2 · 20d ago
Very neat. I like it.
cryptoboy2283 · 20d ago
No Elizabeth Line?
BillinghamJ · 20d ago
Although it has a core section that does run underground through tube-like tunnels, it isn't classified as a tube line :) So isn't part of the "London Underground"
> You will regret using this data. You will regret using this API.
> It serves data from individual arrivals boards, which all spell stations differently.
> It describes train status in free text that varies between stations. “Approaching Barnet”, “Near Waterloo”, “Heading to Bank”, “Departing Southgate”, “Leaving Hampstead”, etc.
I'm not sure what you expected from an organisation still offering nothing but SMS-based MFA to its "customers" and one that got massively disrupted by a 17 year old in a cyber incident which seemed to paralyse the entire organisation a few months ago...
TfL may have been innovative a long time ago, but they haven't moved with the times at all. Hell, the Oyster POMs only got contactless payment readers in the last couple of weeks. Prior to that it was "chip 'n' pin" - y'know, the technology introduced back in 2004.
https://youtu.be/8TVpQiCIqp4
A common sign of a bad API (including this one) is when it presents data in an overly human-centric way rather than something more computer-friendly.
For a human it's really easy to see "Regents Park" and "Regent's Park" are very very likely referring to the same station, but a computer can't know that unless a human goes out of their way to tell it that.
You could argue the TfL API is perfectly fine for its intended use-case of updating the arrival screens (which are meant for humans), but it's generally better to design APIs to grow for future use-cases you haven't thought of yet. Changing an API tends to be hard once it's being used in the real world.
For example: The older TfL stations have LED matrix displays for displaying information, which are very limited in how much text they can display at once. The newer stations have big TV screens instead, which can show a lot of information. It wouldn't surprise me if this is the underlying reason behind some of the inconsistencies, especially ones like "Kings Cross" vs "King's Cross St. Pancras". I'd bet the longer names with punctuation correspond to arrival displays in the newer stations.
Its like having a printer with preset documents it can print. You set it on your desk, and others can click a button to have the chosen preset sheet come out. You can get creative by hiding some buttons, making some buttons also require a fingerprint of the user to print the paper, or the printout changes every minute, etc.
But the API printer sits on someone's server and prints objects, or organized data, and sends it to whatever you used to call, or request, from the API.
People use web browsers to hit websites, but when code hits URLs they are typically just called APIs. A website is technically an API too
An API, or Application Programming Interface, allows you to interact with software using pre-defined agreements, or contracts.
Think of API as a set of legal contracts. I use this analogy when explaining it to lawyers.
If I give you $5, and I say give me an Apple, you will give me an Apple, as expected by the predefined contract, that I receive an Apple.
If I end up receiving Broccoli, then what we have here, is a bug. Or, in other words, the contract has been broken.
Now apply this to other domains in commerce - e.g. I give an ID of an item in a store, and I get back the name of the item, it's price, and if it's stock.
I echo the sentiments on the TfL API, I've built the same Tube Tracker app over and over for more than 10 years[1] as my go-to for learning new tools[2] or testing changes to frameworks[3] and I'm not sure it's ever improved. A chap called Chris Applegate wrote extensively about his battles more than a decade ago[4], did they ever add the stations between Latimer Road and Goldhawk Road on the Hammersmith & City/Circle line?
[1]: https://www.matthinchliffe.dev/2014/03/05/building-robust-we...
[2]: https://svelte-tube-tracker.vercel.app/
[3]: https://github.com/i-like-robots/react-through-time/pulls
[4]: https://web.archive.org/web/20150620042340/http://www.qwghlm...
[1]: https://github.com/charleskubicek/wheres-my-tube
The detailing of things like how trains "overlap" each other is incredible
https://minitokyo3d.com/
Particularly like the "Tube Tongues" metric — the second-most commonly spoken language after English by residents near each tube station, it paints a real picture of a diverse London:
https://misc.oomap.co.uk/tubecreature.com/#/tongues/current/...
But the district labels are a bit too in the way right now, and in any case it would be nice to see the stations.
It doesn't, at least not for most lines. TfL's data is notoriously inconsistent, with multiple backends used for different purposes. For most lines, the dot matrix indicators are fed by the signalling system and timetables (more modern signaling systems are timetable-aware). Meanwhile, the online API relies on estimates from TfL's TrackerNet.
My proposal for the modern version of the game is to use real-time train schedules (with delays, ticket discounts, etc) that are available publicly on the Internet for many metropolitan cities in the world for examples Tokyo, London and Berlin.
Imagine you can have a real-world realistic in-app in-game items purchases feature that you personally can buy in the game and delivered to you or anyone you fancy of giving souvenirs except that you only virtually went there.
(You'll have to select the Livekarte option under Livekarte & Multi -Mobilität)
https://www.vbb.de/fahrinfo/
Also, trains disappear when they stop. Which is - uh - strange.
It's more pretty than practical. Trains marked with dots, arrows, or boxes would be far easier to read.
Personally, I think the stations themselves are a bit too dark and hide any train that's at the station once the trail disappear. But overall, I think this visualisation is beautiful.
https://tfl.gov.uk/
Good job on this and pretty cool.
No comments yet
As the only way to get trains on and off the line involves craning them out of the depot[1], they did retain their Network South East livery for about a decade after formally becoming an Underground line though, until repainted at an off line overhaul.
[1] There used to be a lift that could take a carriage at a time to surface tracks, but the Eurostar extension at Waterloo did for that.
You can find it if you hover north-east of Waterloo.
https://trimet.org/home/
https://www.maptiler.com/maps/#style=streets-v2&mode=2d&lang...
It looks like it uses OpenStreetMaps data.
> *You will regret using this data. You will regret using this API.*
> It serves data from individual arrivals boards, which all spell stations differently
> It has a load-balancer that regularly returns data that is older than the data returned in the previous request.
Won't someone think of the Ai overlords who will take care of all this for us in the future. A bit of consistency goes a long way.
> dist.min.js:11 deck: LineString coordinates are malformed
and no trains appear :(
Either way the numbers are mostly legacy. On mobiles emergency calls are a special protocol, no number is really transmitted to the network. If the phone application recognizes a certain number it will initiate an emergency call. And quite often several numbers do it. 000, 112, 911, 999. (Admittedly it's many years I last tested it.)
112 was made official by EU in 1991 when GSM did not exit yet: https://en.m.wikipedia.org/wiki/112_(emergency_telephone_num...
I find the 3D trains (and planes) easier to see.
Also, I love the webcams scattered around the city, and especially those which have sound.
Imagine layering this, 3D buildings, live weather, street lighting, traffic, and even live business data from Google visualised as crowds on the streets. I could stare at that for hours.