November 1, 2025
Mind the comments, not the map
I built my own CityMapper
DIY Citymapper sparks ‘clone wars’ as devs roast images and shout out the OGs
TLDR: An indie dev built a London transit router using live train data and a Microsoft algorithm that reduces transfers. Commenters cheered the effort but pointed to existing open projects, griped about key info being images, and cracked jokes about the “Rail Data Marketplace” name—classic build vs. reinvent debate.
One London developer built a DIY Citymapper: a transit router that uses live bus, tube, and train times and the Microsoft-born RAPTOR algorithm, which favors fewer transfers over tiny time wins. They pulled live boards from the Rail Data Marketplace and wrangled station codes so walking times would work. That’s the article. The comments? Pure “clone wars.” Veterans chimed in: “Before Citymapper existed, there was OneBusAway,” said one, while another waved the flag for OpenTripPlanner, a globe‑spanning open source trip planner that already uses RAPTOR. A third dropped OptiTravel, a uni project built with the A* pathfinding trick. The mood split between “great learning project” and “this already exists, friend.”
The spiciest scuffle: the author posted tables and algorithm steps as images, triggering accessibility and copy‑paste outrage. Others roasted the clunky “Rail Data Marketplace” brand—great data, cringe name. Meanwhile, Norway flexed: one commenter claimed their national deployment powers every trip planner. Devs swapped receipts, including a UK app built on the same live boards, TrainTrack UK. “JPEG‑as‑documentation speedrun,” and “RAPTOR vs Dijkstra cage match.” Final vibe: applause for hustle, with the Hacker News refrain—celebrate the build, then point you to mature open tools before you reinvent the bus stop.
Key Points
- •The project builds a public transport router for London that uses live arrivals for buses, tubes, and trains.
- •A naive Dijkstra-based approach was deemed unsuitable due to performance on large networks and lack of transfer optimization.
- •The chosen solution is the RAPTOR algorithm (Microsoft Research, 2012), which minimizes transfers and travel time via iterative rounds.
- •Live rail data is sourced from the Rail Data Marketplace’s Live Arrival and Departure Boards API using station CRS codes.
- •Station CRS codes and coordinates were parsed with Python and stored in SQLite to support routing and walking-time calculations.