Tag: Transportation

  • Countdown to Tram 19

    Countdown to Tram 19

    Pre-intro post scriptum

    Oh the irony… This was the original post when I had the idea of making this blog. It centered around me complaining about how things always get delayed, starring Delft’s tram line 19 as the example of how something seemingly so simple ends up being late by several years.

    I compiled the data at the end of 2024, made the plot in January 2025, and half-wrote the post in April 2025. I then got busy due to a case of increase in scope of my nuclear family, and the website was sent back to the dusty unrealized personal projects shelf.

    I have made the commitment of only making this whole blog live once I had made at least 5 posts (check) and had finished this one, The Original Post. So here it goes. I only updated the plot because I found a new data point to add to it.

    Long winding intro

    When I’m feeling discouraged about the present, I like to think of nice things I can look forward to. These include, of course, major construction projects promising to make life better when completed. New transit infrastructure, for example.

    But if you have ever followed such a project, you probably already realize how this coping mechanism is certain to backfire. Accepting the inevitability of multiple delays and cost overruns reveals that checking in on these projects is only yet another thing to feel angry about.

    They say acceptance is the last stage of grief, and since I’m here to procrastinate, that will have to wait. Line 19 of the Haagse Tram is as good as any candidate for official hopium supplier to my ADHD-saddled brain. A new tram line extension that would pass right by my workplace at the Delft University of Technology, connecting it to the city’s center and its railway station. It is not just a good bit of infrastructure, but one that would benefit me directly.

    The line is impossible to miss. It cuts through the campus right down the middle, flanked on both sides by the various buildings sheltering the great minds that… apparently were against the line being positioned there? Just think of the impact on the poor parking facilities, or the harm it would do to the concept of the campus! We should be scared that one day the line could potentially be upgraded to an even scarier form of transport, light rail (sneltram is the term used)!

    I presume that the municipality won against the visionaries at the Executive Board of TU Delft, because whenever you had to go from one building to another, there it was, at the very center of it all. Those unmistakable trails of extruded steel buried flush with the concrete pavement, on which buses ride with frequency, collecting students and the occasional confused visitor, unsure why there are no trams to be seen on top of the suspiciously rust-tinged rails.

    In anticipation for the trams, tracks were installed sometime before I joined the university in 2019. Since then, opening day has always been just around the corner—like the bus that should have arrived three minutes ago according to the timetable, which any moment now should get unstuck from traffic and come to your rescue. But the ride never ends, because as of early 2026 tram 19 is yet to even start riding through TU Delft.

    This feels unjust. It feels like I am constantly being cheated out of the final gratification of this obsession. If there is no ultimate benefit, have I just been wasting my time dwelling in anticipation? It feels like the world is rigged such that good things never actually happen. It makes me want to look at the project closer so that either I find the hope and positivity I was looking for in the first place, or at least I find definitive proof that this is really unfair—that things are just systematically hopeless, and I am the clueless sucker who keeps pulling the lever on the slot machine expecting a good outcome.

    Thankfully, there is always a relevant xkcd. Long before I knew about public transit in these lowlands, I looked forward to the greatest space observatory ever, the James Webb Space Telescope. Same deal: cool nerdy contraption promised to be delivered in the future. Sadly, the project was also infamous for multibillionairily large delays. That comic from 2018, 15 years after the signing of the construction contract and 3 years before the eventual launch of the telescope, managed to tell that story in a way I did not think was possible.

    The graph remarkably captured that feeling I had; it contained the proof that we were being constantly let down. Not being as negative as I am, however, the comic has a positive hopeful message, that at least the slope is less than one. To optimism’s credit, the spacecraft did launch eventually—in fact, it did so at the end of 2021, just as the last (non-projected) point suggested.

    So that’s the prompt: I wanted to apply the same analysis to other such projects. That is, make the same plot for other cases, exposing the ugly truth about delays that every press release and ribbon cutting ceremony erase with determination. The idea stuck with me, and eventually I saw Tram 19 as a good subject to try this with.

    First trial (of the plot, not the tram)

    Sorry, one more stop on our way. This is a tale of belatedness after all. In truth, the first opportunity to try out this plot format actually came from another bit of transit infrastructure.

    As part of a wider program to increase train frequencies in the southern part of the Oude Lijn, which connects the second and third largest metro areas of the Netherlands, a decent portion of this right of way was being upgraded from 2 to 4 tracks. This included reactivating two platforms at the Schiedam Centrum station which used to go to the sea at Hoek van Holland, as well as reconnecting them to the tracks towards Delft and rearranging the track layout accordingly. The result would be more Sprinter trains (that’s the local service), six per hour at peak instead of four, and capacity for extra Intercity trains (the longer distance service) that wouldn’t necessarily stop at Schiedam.

    That would be great for me. 15-min intervals are not bad at all, although by that time the timetable annoyingly had a Sprinter in alternating intervals of 10 and 20 minutes. But 10-min is the magical threshold when I wouldn’t even bother looking at the clock before leaving for the station. No more rushing or detouring for a frikandelbroodje when the next train didn’t align with my morning RNG seed.

    But as the saying goes, no geen-trein, no gain. Or something like that.

    The Dutch seem to love to renovate things. I guess that’s the unadvertised price of having well-maintained infrastructure: maintenance is annoying. Summer vacation is understandably the preferred time for public inconvenience. Quoting myself at the time, complaining to my coworkers:

    “To recap: from July 13 I won’t be able to take the footpath I usually take (which will be closed) to get to the train station, where I won’t be able to catch the train I usually get (which will not run) to the other train station, from which I won’t be able to cross the bridge I usually cross (which will be closed) to get to the office. But none of that matters, because I won’t be able to work at the office (which will also be closed). Cool”

    Replacement bus service would run instead of the train from July 13–27. Brought to you by completely clueless Croatian coach drivers who might have never been to the Netherlands before, only speak Croatian, and whose employer I’m guessing offered the lowest price to NS. It was actually fine; and the drivers too, I was just amused by how lost they were on the first day. Still, the longer, less comfortable journey was extra annoying in the heat of summer. Especially when carrying a toddler along, who is not entitled to her own seat.

    A mere two days before the restart of service and a delay of a couple of days was announced. Halfway through the now four-day wait, a new delay: just one more day. At least the slope is less than one.

    In an unexpected turn of events, the next two days brought more delays. Plus one, then plus three days. Out of frustration, the following figure was born:

    But despite the setbacks, it was all good in the end. In fact, trains even ended up running a day earlier than the last forecast plotted. The reason for the delays was that they couldn’t finish the signaling system in time, and the people who knew how to do that were all busy after the time window originally scheduled for the job: “However, these skilled workers are currently difficult to find. This is due, among other things, to a tight labor market”. I love how, in the best economic system ever devised, low unemployment is a worrisome bad thing labeled as tight labor market.

    Back to the tram

    I really liked the format of that xkcd, but it needed a final adjustment. Drawing a 45° line and an almost 45° line doesn’t do justice to the fact that the latter should be at 0°. Doing a little change of variable, or just tilting your head an eighth-turn to the right while keeping the x-axis steady, reveals a nicer format for what I was looking for. The y-axis becomes “time to launch”, which is expected to always go down at a 45° angle until it hits the ground (maybe I should have flipped it, so it went up to the ceiling?). Crucially, any delay is clearly seen as a straight line “jump” that pushes us away from the big moment, kind of like this.

    So my plan for the plot was simple: find out how the opening date of the Tram 19 extension to TU Delft changed over time, and make a “countdown” plot. All I needed was to lookup what was the original planned opening date, and what were all the subsequent ones.

    But first, we have to ask the question: what is line 19? The one I’m writing about is a line, the newest, on the tram network of The Hague, a city that line runs through only tangentially. Line 19 connects the town of Leidschendam, through the Hague’s district of Leidschenveen-Ypenburg, to the main train station of the city of Delft, some eight kilometers from the center of the Hague. It opened July 1, 2010; and you can read more about its history on Dutch Wikipedia.

    But as evidenced by the article from 2004 I referenced in the introduction, the plan was always for the line to diverge from line 1 at the Delft train station, pass through the TU Delft campus, and terminate at the science park just south of it. This last ~3.5 km bit is the “extension” that is yet to materialize.

    The earliest expected “opening date” I could find was “end of 2006”; which is more than 19 years ago! To be fair, it is unclear to me if that was supposed to include the tracks to TU Delft, but the next reference I found from less than two months later mention the full line in 2007.

    And here’s another issue: if you say your project will take two or three years to execute, and if we assume that there must be limit on shamelessness somewhere, each delay you announce should not be longer than that. From which we can surmise there must have been something like a dozen different delays over all this time.

    I tried looking up old news of this project, and succeeded in finding enough (credible?) articles to compile a list with 25 different points in time when the opening date was mentioned. This was not made easier by my beginner level Dutch and how poorly old internet is preserved. I also never bothered to actually go to a library and do my own research in a more formal, proper way. So it’s very likely that I missed some delays or that there are inaccuracies here or there.

    Even when an opening date is given, it is actually almost invariably a date-ish, like “mid-2020”. If you say the project will finish “in 2012”, there is zero chance it will finish on Transit Driver Appreciation Day, also known as March 18. The earliest it can be realistically be expected to finish is like by the International Monkey Day (known in some places as December 14). So there was some language parsing for me to do, which is very subjective. Still, I put on my gullible mask and I treated “2012” as a range from 01-01-2012 to 31-12-2012.

    Instead of thinking critically about all those 20+ articles I found and crafting a cohesive narrative covering the story behind this never-ending project, I’ll do the engineer thing and just dump a table with the dates I took from them. Please note that while I didn’t go to a physical library, I did use a news archive system from TU Delft, so the early references might be hard to access from the outside. These “VPNwalled” references are listed below the table. Dates are dd-mm-yyyy. “Low” and “High” form a range that is my interpretation of the quoted date when the line would be put in service.

    ReferenceOpening dateLowHigh
    23-06-2004[1]n/an/an/a
    08-07-2004[2]“end of 2006”01-12-200631-12-2006
    31-08-2004[3]“2007”01-01-200731-12-2007
    06-03-2006[4]“end of Dec 2007”16-01-200731-12-2007
    25-05-2007[5]“2012”01-01-201231-12-2012
    14-12-2007[6]“2012”01-01-201231-12-2012
    13-01-2008“2012”01-01-201231-12-2012
    13-03-2009“2012”01-01-201231-12-2012
    04-06-2010[7]“2012”01-01-201231-12-2012
    27-06-2010“2015”01-01-201531-12-2015
    12-08-2012“end of 2015”01-12-201531-12-2015
    17-06-2014“Q2 2017”01-04-201730-06-2017
    18-11-2015“before summer 2020”01-01-202031-05-2020
    09-09-2018“mid-2020”01-06-202031-08-2020
    26-02-2019[8]“mid-2020”01-06-202031-08-2020
    06-11-2019[9]“end of 2020”01-12-202031-12-2020
    25-01-2020[10]“after 2020”01-01-202131-12-2022
    15-07-2020[11]“end of 2022”01-10-202231-12-2022
    17-07-2020“not before Q4 2022”01-10-202231-12-2022
    25-06-2022“end of 2023”01-12-202331-12-2023
    10-03-2023“end of 2023”01-12-202331-12-2023
    07-04-2023“spring 2024”01-03-202431-05-2024
    08-04-2023“end of Q1 2024”01-03-202431-03-2024
    16-02-2024“second half of 2025”01-06-202531-12-2025
    14-10-2024“June 2026”01-06-202630-06-2026
    07-03-2026“early Sep 2026”01-09-202614-09-2026
    [1] (June 24, 2004). Gemeente betaalt miljoenen voor tramlijn 19. Haagsche Courant.
    [2] (July 8, 2004). LEIDSCHENDAM-VOORBURG – ‘Het Zijdepark is al niet zo groot’. Haagsche Courant.
    [3] (August 31, 2004). DELFT – Onderzoek TU naar schade door tramlijn 19. Haagsche Courant.
    [4] FLOOR DE BOOYS. (6 March 2006 Monday). Tramlijn 19 komt eraan. AD/Haagsche Courant.
    [5] (May 25, 2007 Friday). Aanleg tram 19 jaar vertraagd. De Telegraaf.
    [6](14 December 2007 Friday). Jaren vertraging voor tramlijn 19. AD/Haagsche Courant.
    [7] (4 juni 2010 vrijdag). Klap op klap voor laatste stuk van nieuwe tramlijn 19. AD/Haagsche Courant.
    [8] (26 februari 2019 dinsdag). Miljoenen weg voor ’gedrocht’. De Telegraaf.
    [9] (6 november 2019 woensdag). Sebastiaansbrug tweede helft 2020 open. De Telegraaf.
    [10] KARL FLIEGER. (25 januari 2020 zaterdag). Straling verstoort komst van tram naar campus. AD/Haagsche Courant.
    [11] Carel van der Velden. (15 juli 2020 woensdag). Help, tram heeft twee jaar vertraging! Sint Sebastiaansbrug open, maar lijn 19 niet. AD/Algemeen Dagblad.nl.

    The best I can summarize this history of delays is: they realized the bridge leading to TU Delft needed to be reinforced (somehow that accounts for like 14 years of delay), and the other thing is the university was always concerned by vibrations and electromagnetic radiation affecting their sensitive labs, but in addressing those concerns they failed to account for the new model of trams that were to be used.

    The oldest of the GTL8 trams still in service, the model used on line 19 when it opened, are now 44 years old. Line 1, which shares tracks with line 19 in Delft, still uses exclusively them. The newer line, however, has already transitioned to the low-floor RegioCitadis, which weighs 59 tons instead of the 38 of the old trams. This required all the tracks in TU-land to be torn out and replaced with a special construction using special concrete, rubber dampers, and a lot of special cables for shorter and better insulated electric loops. You can read a more thorough retelling of the story here (this one is in English, don’t worry).

    In addition to the special measures to reduce vibrations and EMR, the very best engineers and scientists in these Low Lands pulled out the big guns, the most powerful tool they had saved for tough unforeseen challenges just like this. In 2020, they just cut the last kilometer or so of the route. The intellectual NIMBYs still got a win after all. The tram won’t go to the science park or even the southern part of TU Delft, where my faculty is located. I say “southern part” because yes, there is a highway that cuts right through the campus, of course there is (a provinciale weg, technically). Tram 19 will now terminate before crossing under that road.

    Oh, and for good measure, it was announced in 2023 that: “The tram only runs on working days from 7.00 to 19.00, every fifteen minutes in off-peak hours and in rush hour every ten minutes. The tram does not run faster than 30 km/h on campus and as soon as the tram starts running, bus line 69 is deleted”. I should point out that bendy-bus 69 does run all the way to the “Technopolis” science park, Monday through Friday, from 7:15 to 23:45.

    But at last, they are triumphantly sweeping the floor of the recently installed platforms (not the old ones pictured above, those were built for nothing and will never be used). The first test ride scheduled less than two weeks from the date I am writing this. The wait is almost over.

    The Plot

    The last ingredient for today’s figure gives it some perspective, and a punchline I suppose. The tram would have been useful for me, if only they hadn’t cut it back and it wasn’t late by so many years. So I decided to make a second line counting down towards the end of my temporary contract. After a three-year extension, I thought I was again on track to use the tram. But further delays mean the opening date is now a month after I leave. Here’s the final figure:

    The gray areas represent the “ranges” considered, but the thicker line above is still more prominent. The vertical spikes really serve as a nice visual representation of the “setting back” feeling you get when a new delay is announced. The annotations try to tell the story in a few words, without polluting the figure too much.

    Also, those of you who keep a protractor at hand at all times will have noticed that the lines are not actually at 45°. I didn’t use a 1:1 aspect ratio for the axes because this project is so delayed that the figure becomes ungainly. As a bonus, here’s a more chrono-geometrically accurate version:

    A final note is that I couldn’t bring myself to project the lines beyond the present day… I tried using the figure to argue why the university should keep me on their payroll, but to no avail. In conclusion, things are always late, but sometimes they eventually arrive. The tram got the last laugh.

  • The Intercity of the future

    The Intercity of the future

    Long winding intro

    For those who are interested, swaying away to the right there, that’s the Old Bridge, that was replaced by the New Bridge in 1972. Funny thing, the Old Bridge used to be called the New Bridge. Yeah, it’s bit of a funny one

    Bus Driver’s Song, by Flight of the Conchords

    The Intercity Nieuwe Generatie, ICNG for its closer friends, is the nieuwest train used by the Nederlandse Spoorwegen (NS). But I will have to wait a few decades for the joke above to land, as these trains are meant to replace the locomotive-driven Intercityrijtuig (“Intercity carriages”; ICR), and part of the Intercitymaterieel fleet (“Intercity rolling stock”; ICM). The ICNG joins a further acronym called SNG (Sprinter Nieuwe Generatie), and someday the DDNG (Dubbeldekker Nieuwe Generatie).

    Some 45 years after the Shinkansen started its operation, the Netherlands opened its own high-speed rail line, named HSL-Zuid. Eventually, a good part of this 300 km/h line between Rotterdam and Amsterdam was downgraded back to low speeds after they realized a series of 10 viaducts were poorly designed. It is currently three years after this discovery, and a month after construction work began on a permanent solution. The current estimate is that repairs will take another 6 years. As this post illustrates, nothing ever goes wrong, so I’m sure the fix will be ready on time.

    HSL-Zuid enabled fancy trains to go from the two largest Dutch cities directly to the capitals of Belgium, France, and the UK. But to get back the money they begrudgingly spent to maximize public benefits, the Dutch government also conceded the track to NS for it to run domestic and shorter international services on it. NS International was rearranged, a partnership with KLM was formed, and trains capable of 250 km/h were ordered for a service to Brussels, dubbed Fyra. Delivery of these fast trains was delayed, so NS rented a bunch of TRAXX locomotives from a train landlord (“rolling stock company” if you are feeling charitable) and started the service using the aforementioned ICR carriages.

    Long story short, the V250 trainsets started running December 9, 2012, and would have a fondly-remembered career until January 18, 2013. It was decided the best course of action was to rebrand Fyra to Intercity Direct, paint the slow carriages a different color, and forget anything had ever happened.

    In 2014, NS said they could tune-up the TRAXX-ICR combo to run at 200 km/h in as little as two and a half years, but it was preferable to buy newer trains instead. This time, they would be less ambitious, with 200 km/h trains to be slotted in between the 300 km/h trains from Thalys / Eurostar. They would buy a model that was already in use elsewhere, and they would test it thoroughly before committing to a start date, which would be no earlier than 2021.

    Intercity Defect

    A decision was made later in 2014, and in 2016 the ICNG was ordered from Alstom, with entry into service being aimed for 2021 as recently as in 2017. The first unit was received in the Netherlands on May 23, 2020. But, afraid of a second Fyra hitting their proverbial World Trade Center, NS would continue testing for almost three years before there was enough confidence to start passenger service.

    The pandemic in 2020 was naturally a good first excuse for the delays. As was a small derailment in Germany, which was not the fault of the two ICNG units being towed, although the optics certainly weren’t ideal for Alstom, who I assume also made the locomotive pulling the consist:

    Hopes of a 2022 launch were quashed by discovery of serious technical problems, including poor weld quality and software issues. The news broke only in November of 2022, but the issues had been identified back in March of that year. And in any case, even before that, at the end of 2021, an external report commissioned by the Ministry of Infrastructure and Water Management (I&W) had already established that the original planning was no longer feasible:

    But the wait was over when, on April 19, 2023, passengers boarded the ICNG in commercial operation for the first time. After which, the new trains immediately ran into technical issues (the very first day, if you were too lazy to translate the article linked). One day before start of operation, the Secretary of Infrastructure and Water Management sent a letter to the House of Representatives recounting this history of delays and updating them on the current outlook: defective trains would be returned to the factory in Poland for fixes and retrofits, and the last train should roll out of the production line only in 2025. Scheduling risks had been raised earlier in 2023 by a second external review commissioned by the I&W, as promised to the House:

    The narrative that NS put out after launch was that those problems were improving, although half a year later the ICNG’s track record wasn’t really stellar. And as that last article reported, despite all delays up to that point, NS was promising that deliveries would pick up pace and all 99 units would be in operation by early 2026.

    Come 2024 and 10 extra units were ordered for international services (I go over the variants below), bringing the total to 109. But delivery of new trains is so slow that Germans start to wonder why there are so many trains parked on their tracks for months now. On July 26, the NRC newspaper publishes this amazing article investigating the whole story, and doing a much better job than I ever could at describing this situation. NS puts out a news brief the same day with their (indirect) response.

    So, just a quick list of officially acknowledged technical issues that affected the ICNG:

    • Defects in welding the aluminum body, compromising their lifespan.
    • Erroneous indications of brake failure.
    • Interior sliding doors not working properly.
    • Water ingress through the cabin door.
    • Noisy and uncomfortable climate control system.

    And a list of additional issues mentioned anonymously by a conductor, which are not necessarily systemic:

    • Fire door not working.
    • Adhesive wrap peeling out.
    • Layout of door buttons prone to errors by conductors.

    I should also add anecdotal complaints I’ve heard:

    • Typically fewer seats than the ICR trains.
    • Emergency button placement causes accidental presses too often.
    • Significantly less room for trash disposal, causing more littering.

    Software updates should be able to fix all of that, especially now with AI and such. So for our plot today I will only look at how delivery went, as it’s already 2026. Wait, I mean how delivery is going.

    NS had received enough trains to finally retire the old ICR trains in October 2025, in triumphant fashion. But as we will see, deliveries will continue into 2026 (and beyond?). Relatedly, I rode in an ICNG in September last year (2025) and noticed a strong “fresh train” smell. A quick search on my phone indicated that the unit had started service just a week earlier. The door separating the compartments next to me was out of service.

    ICNG variants

    Before looking at delivery data, here is a quick explanation of the different variants of the ICNG that NS has ordered (also here):

    • ICNG-V: domestic trainset with 5 cars.
    • ICNG-VIII: domestic transet with 8 cars.
    • ICNG-B: 8-car trainset for international services to Belgium.
    • ICNG-D: 8-car trainset for international services to Germany.

    Implementation started with the domestic services, with Belgium-bound trains following a few months later. After the ICR carriages were retired, the Intercity Direct services to Brussels were no more. As of December 15, 2025, the era of Eurocity and Eurocity Direct began. Eurocity, the service with more stops, is being operated by Belgium’s NMBS/SNCB, while Eurocity Direct is operated by NS using exclusively the ICNG.

    As of writing this, the German-speaking trainsets are still in early testing. They will be used for a new, not yet publicly disclosed international service (extending the The Hague – Eindhoven line to Aachen?).

    Tracking trains on tracks

    When you are on the platform wondering where is the train that was supposed to have shown up already, you check treinposities.nl. This website (and I’m sure there are others like it) uses real time tracking data provided by NS so that you can follow the (damn) train.

    That website also maintains a database of rolling stock, including some extra information added by its community. In the overview page for the ICNG, you can see (depending on when you are reading this) that the last position for a lot of units still reads “Wacht op aflevering” (waiting for delivery).

    On the details page for specific trainsets (e.g.) there is a table indicating when their status has changed, such as when they are put in service. It seems most of these are filled automatically when the feed data indicates a trainset is running, but there are also data manually added by moderators. It’s not perfect, but that is fine for our purposes here.

    Using this as a data source, my goal was to plot how has delivery gone over time, because despite reassurances from NS, it felt like it was slow. I scraped the website on December 20, 2025 to get a list of when each ICNG trainset was put into service.

    There were a few cases of trains that started commercial operation and were later sent back to Poland for rework, which seems to be somewhat recorded in the data. My initial analysis just looked at the date when each operational trainset was put into service (for the last time). It was clear this wasn’t ideal because the plot showed no trains in operation on April 2023. I later refined this to account for trainsets being put into and out of service, with the plot then going both up and down.

    The plot

    All -V and -VIII trainsets should have been in operation “early 2026”. Let’s see how things were going as of the end of 2025:

    Still a long way to go it seems. In terms of number of domestic cars, we were at (335+138)/(495+278)=58%(33*5+13*8)/(49*5+27*8)=58\%. No wonder why you can still see crowded trains with just a single 5-car unit during rush. It’s also no surprise that service in the Breda Rotterdam Amsterdam route hasn’t been extended to Leeuwarden, Groningen or Eschede yet, although some trains do run all the way to Lelystad now.

    The rollout of the smaller -B fleet seems to have been quicker. I’m guessing these units didn’t suffer as much from the weld issues due to entering production later. And maybe the pending commitment to start the EuroCity product with NMBS/SNCB in the 2026 timetable caused the delivery of the -B trains to be prioritized?

    Finally, a sequence of work-in-progress plots is show below. These use the first version of data processing, which didn’t account for trainsets being removed from service then being put back into operation.

    As always, progress is slow. Both in railway engineering and in me writing posts. But one day in the future, these intercity trains won’t be new anymore. And I hope to get to be old enough to make an update to this plot in which all the lines reach 100%.