Hell of a Way to Save a Buck

First, some background.

The city of San Francisco has not one, but two light rail mass transit systems. Making matters even more silly, downtown, they're not just parallel, but literally one atop the other. From street level, you go into an underground station with separate turnstiles for BART and for MUNI. For MUNI, you take an escalator down one floor. For BART, you take an escalator down two floors.

They also use different, and entirely incompatible, payment systems. BART is on prepaid magnetic farecards: put it through the turnstile at the start and at the end; the end turnstile deducts an amount based on the distance you've travelled. Attendants on duty watch for turnstile jumpers.

MUNI, on the other hand, uses an honor system: pay a dollar as you board. Aboveground, this means giving a buck to the streetcar driver. Downtown, they have unattended turnstiles that take bills and coins. Either way, you get a receipt (which also works as a bus transfer). Every so often, ticket inspectors come around; people without receipts get slapped with a $76 fine.

Now for the actual story.

I was on my way into the BART today when I saw a guy on the up escalator scramble up onto the handrail. Afgter a quick glance all around, he vaulted over the side, dropping about six or eight feet to the floor -- in this case, the MUNI platform. It's quite a sight to see someone just jump the side of an escalator and drop out of sight; I felt like an extra in Minority Report.

It took me a while to figure out the logic. At first, I thought he was trying to cheat on the MUNI fare. But he could have just jumped the unattended MUNI turnstile if that was his goal: he'd still have to deal with the risk of being caught by the inspector. No, our clever protagonist had figured out a way to cheat on the BART fare. I'm willing to bet that he'd just finished a BART trip, and the next thing he did was take the MUNI escalator back up and walk out through the unattended MUNI exit gate.

Computer scientists, take note: this is why malloc/free and garbage collection don't play nice together.