It’s the end of my working day, time to head for the train station and make my way home. Because I’ve done this trip many a time it’s a fairly well honed process:
- I have a rough idea of how long each leg of my journey takes so if I need to be home for a given time, I can backtrack from there and figure out roughly when I need to get a train.
- I leave work on most days at about the same time so I know which trains are when, how many stops there are and which will stop at Reading.
But there are days when this doesn’t work because the trains aren’t running to time. So I fall back to a much simpler approach which is to:
- Look at each train departure
- See if it’s going to Reading
- See if it is making fewer stops than my current choice
- See how soon it’s leaving
Based on the above I make a guess as to which train is best and climb aboard. Of course, the train I’m on can break down in which case I’ll be dumped at some intermediate station and the process starts again.
In these modern times things are made easier because departures, destinations and so on are announced and displayed on big electronic scoreboards but that’s an optimization. My process doesn’t require much in the way of extra information beyond what I could get from the driver and a map of the available stations and routes (often some subset information is posted at individual stations which means I don’t need to carry all this information around in my head).
Notice also how I don’t actually need a sense of time because in the worst cases I can dump my needs for predicting/controlling my arrival time and just take the first train I can find that gets me towards my destination.
Thankfully most trains do run to time but on any particular day, some don’t. Sometimes there’s an announcement that tells me why the train hasn’t arrived, whether it’s late or cancelled and I can then decide to wait or make other arrangements. What if there isn’t an announcement? Well I’ll wait a while and then assume the train is not going to arrive. Whether I get an announcement or not I can still make progress by virtue of my self-imposed waiting limit. Of course I might miss an announcement because I didn’t wait long enough but it doesn’t matter, I’ll still find a train. Even in the worst case where I miss the last train home, I can curl up somewhere and wait until the first useful train the next day.
You probably aren’t worried about my daily journey or whether I make it home but you might want to think about the above in the context of polling, timeouts and events. And you might want to consider that only polling and timeouts are really necessary for me to find a train to get me home. Event’s help me optimize but aren’t necessary. And you may notice that I require only a minimum amount of knowledge and it’s usually available locally from train driver or station wall.
Distributed fault tolerant systems are everywhere and seem only to need the simplest of underpinning mechanisms to make them work.
Technorati Tags: architecture, availability, distributed systems, software

Entries (RSS)
Okay that is just spooky Swiss Railways were an inspiration to me recently… and quite a bit more reliable than the ones I have to cope with at home.
HI Steve,
Yep I saw your posting and having spent a nice week in Luzern last year and tripped around on buses and trains, I came away with similar impressions to yours. To be honest I didn’t remember anything of your posting as I typed out mine but after a bit of digging, check this out – map of swiss railways:
http://www.alleuroperail.com/eurorailway-maps/switzerland-map.htm
And a map of ours:
http://www.nationalrail.co.uk/tocs_maps/maps/network_rail_maps.htm
Right so compare and contrast – the swiss railway is evenly distributed with no substantial hubs. The British railway by contrast has one very large hub in the form of London. So to travel from London to anywhere is fairly direct, but travelling cross country intuitively will be harder. Meanwhile the Swiss system means many trains are not direct, you will have to change but it’s expected and thus well supported.
In conclusion, you’ve got central hub versus decentralized peer to peer and it would seem that there’s only one winner! There’s lots more to think about too like the fact that Swiss trains run pretty much in any weather whilst the British equivalent stumbles majorly over errrr leaves.
Only the wrong type of leaves to be fair
)
I caught a bus from Geneva every weekday for nearly a year and I swear one was never late by more than a minute. Really!