Oh dear. More stuff that fell through the cracks. One of them's easily fixed; the other will take a little more work.
life in the bay area
Has anyone else noticed that VTA's light rail is always a couple of minutes early in the evening and especially in the wee hours? One week I missed trains three days out of five. One of those days I set out for the 0126, 0236, and 0346 trains home and missed each one, and eventually gave up and spent the night at work. One time I mentioned the schedule to the driver, and he turned the tannoy on to say that his watch was synchronised to an atomic clock. I wish the clocks on the platform would agree with his then.
I missed the train just now (by 20 seconds; it was two minutes early by the platform clock), so I've come back to work on the other problem.
wee hours of saturday
I just went to catch the 0020 train home. Just before I got to the station at 0015 by my watch, the train went past. @%$! So I turned back. Minutes later, I remembered that sometimes they inexplicably send dark trains five minutes before the real ones. Sure enough, at the now distant station, there it was: another train.
So I've fixed the other problem and checked it in. I'm not 100% sure it's exactly right, but it's checked in so people can test it.
It turned out to be a really interesting problem: we have a linker sort of thing, and its behaviour is governed by a bunch of settings. These are set from their default values, from the default handling in a control file, from specific overrides in the control file, from explicit stuff on the command line, and from options on the command line. And these all have to override each over in the right order.
This would be easy if the override order was the same as the order in which the program processes them. But that's impossible: for example, you don't know the filename of the control file until after you've processed the command line options.
...I'd write about the cute solution now, but I'm sure nobody wants to read about me missing another train!