Saturday, April 07, 2018

The taxi ride from hell: A data point for the rideshare debate

One of the arguments made by established taxi companies against ride-sharing companies like Lyft and Uber is that the latter's passengers are taking a greater risk because of the questionable vetting of the drivers.  Real taxi drivers are professionals, the argument goes, with proper training and screening to insure that they safely and efficiently whisk you from A to B.

To which I say: Bollocks.  I just had the worst ride of my entire life, and it was in an officially licensed New York City yellow cab.  It was so extraordinarily bad that I didn't tip the driver.  I have never before in my life not tipped a driver.  I was this close to not paying him at all.

It was not an obscure route: Times Square to Newark airport.  Any NYC taxi driver worth the title should know that route like the back of their hand.  Google Traffic indicated that except for the usual backup at the entrance to the Lincoln Tunnel, traffic was light and we should get there in about 30 minutes.

I sat down in the back of the cab and it was immediately evident that this was not going to be the most comfortable ride of my life.  The seat had a loose spring (or something) that was poking me in my butt, and did the entire trip.

To fully appreciate how utterly incompetent this cabbie was it will be helpful to know that the usual route from Times Square to Newark airport goes something like this: you go west through mid-town Manhattan and take the Lincoln Tunnel under the Hudson river.  From there, you continue on route 495 to Interstate 95, hang a left, cruise for 20 minutes or so, and exit to the airport.  Easy peasy.  If there is heavy traffic on the interstate one might choose to take a different route to bypass the interstate, but as I mentioned, it was early and traffic was light.

The transition through the Lincoln Tunnel went smoothly enough, but when we got to the other side the driver suddenly took an unexpected turn and we ended up on New Jersey surface streets.  With traffic lights.

Now, New York cabs have plexiglass safety dividers between the driver and the back seat.  Some of them have holes or little windows in them so you can talk to the driver, but not this one.  So I had to shout to be heard: "Why didn't you take the interstate?"

It quickly became clear that the driver's command of English, in both transmit and receive modes, left a little room for improvement and communication was going to be a challenge.  At one point, the driver passed his cell phone to me through a little cell-phone-sized man trap in the safety divider.  I saw that he was running some sort of navigation app, but I am not sufficiently wise in the ways of Waze to ascertain exactly what was going on or how to do anything about it.  So I just resigned myself to the fact that this trip was going to take a little longer than I expected, and passed the phone back to the driver.

I pulled up Google Maps on my own phone so I could follow our progress, and it appeared that our plan was to take state route 9.  This was slightly alarming as there were construction warnings along a substantial stretch of that road, but happily it appeared that this was because the road was closed in the opposite direction.  Going North we would be able to get through with minimal fuss.

Or at least we would have done if the driver had actually turned onto route 9.  He didn't.  He sailed right past the on ramp and into the next little enclave of surface streets, from which there was no evident route to the airport at all.

I piped up again and asked if the driver realized that he had just missed a turn.  He allowed that he had, apologized sheepishly, and said he would make a U turn, which, in New Jersey, is no mean feat.  In fact we did not make a U-turn, but rather went around several blocks until we finally found ourselves back at the on-ramp for state route 9.  (During this time I could hear the driver on the phone with someone who was apparently trying to talk him through the situation to get us back on track.)

Now, to be fair, the road design and signage in this particular area were atrocious, almost as if someone had deliberately designed the place to be misleading so that they could hide in a nearby bird blind and snicker at the hapless drivers trying to find their way.  But this is not at all unusual in New Jersey, and if you're going to drive there for a living you really have to be able to take this sort of thing in stride.  Fortunately, by proceeding very, very slowly and deliberately, our driver was finally able to get us onto the correct road.

Alas, our troubles were not over.  By now I was watching carefully what the driver was doing to make sure he wasn't about to miss the exit for the airport, which is exactly what he proceeded to do.  As he started sailing by the off ramp I shouted at him, "You're about to miss the exit!"  But instead of veering to make the off ramp, he slammed on the brakes and stopped!  Right in the middle of the freeway.  A brief negotiation ensued, upon the completion of which we finally turned right and into the airport.

I micromanaged the drive to the terminal, and as I noted earlier, I did not give him a tip.

Because this driver was so off-the-charts atrocious I decided to report him to the NYC taxi authority, the organization that is supposed to be in charge of insuring that yellow cab drivers are more competent than the disreputable scoundrels that drive Lyfts and Ubers.  They have a convenient web page for filing complaints, but upon availing myself of this I discovered to my dismay that in order for any complaint to be acted upon you have to be willing to make yourself available for an in-person hearing.  In Queens.  Well, I live in California, so going to a hearing in Queens is not exactly convenient.  I went ahead and filed my complaint anyway (and condensed this story down to about three sentences so it would fit in the tiny text box provided for you to give the details of your complaint.  A few minutes later I received this helpful response:

Service Request #: C1-1-1546782941
Date Submitted: 04/06/18 3:46:51 PM
Request Type: Taxi Report
Details: Driver Report 
Your Service Request was closed.
Your report has been sent to the Taxi and Limousine Commission (TLC). You are not available to participate in a hearing so TLC cannot take any action against the driver or car service company. No further information will be available for your report.

So... no more taxis to the aiport for me.  I'd rather roll the dice with Uber.  At least with them if the ride sucks I don't have to show up for a hearing in order to give the driver a bad review if he deserves one.

Which, now that I come to think of it, not a single Uber driver ever has.

I would like to note for the record that I have taken dozens and dozens of NYC taxis over the years, and they were by and large competent and efficient.  This experience was definitely an outlier.  But it does undermine the taxi company's argument that Uber and Lyft should not be used because their drivers haven't been as well vetted.

Wednesday, March 14, 2018

Well, that didn't take long

I was contemplating whether or not to write about how incredibly stupid it is to try to solve the school shooting problem by arming teachers.  I was waffling because I don't really like to belabor the obvious.  And then this happened:
A teacher accidentally fired a pistol inside a California classroom while lecturing about public safety and injured three students, according to police. 
Dennis Alexander was pointing the gun at the ceiling when he inadvertently fired it Tuesday at Seaside High School, said Abdul Pridgen, the city's police chief. 
Bullet fragments ricocheted off the ceiling and hit a 17-year-old student in the neck, Pridgen said. Shortly after the incident, class resumed as usual
The teen’s father, Fermin Gonzales, said he rushed his son to the hospital after the 17-year-old returned from school with blood on his shirt and a neck injury.
Let that soak in for a moment: a teacher fired a gun in a classroom, injured three students, one of whom was bleeding from the neck to the point where he ultimately had to go to the hospital, and then resumed teaching as if nothing had happened!  No, "Hey, is everyone OK?"  Just, "Oopsie, my bad.  Now open your textbooks to page 23."

The idea that the only way to stop a bad guy with a gun is a good guy with a gun is an adolescent fantasy born of watching too many Westerns.  The best way to stop a bad guy with a gun is to make sure that the bad guy never has a gun in the first place.  (It also helps to realize that "bad" and "mentally disturbed" are not synonyms.)

I hope that a minor injury is all it's going to take to get people to come to their senses, and not an all-out bloodbath.  But I'll give long odds against.

Monday, March 05, 2018

Is it time to take the Hyperloop seriously? No.

Over four years since it was first introduced, Ars Technica asks if it is time to take the Hyperloop seriously.  And four years since I first gave it, the answer is still a resounding no.  Not only has the thermal expansion problem not been solved, there has been (AFAICT) absolutely no attention paid to simple operational concerns that could be show-stoppers.  Like terrorism.  If you think airplanes are a soft target for terrorism, there should be no doubt in your mind that the bad guys are absolutely salivating at the prospect of the hyperloop.  The extent to which it would be vulnerable to terrorism, or even simple mechanical failure, is just mind boggling.

Let's set terrorism aside for a moment and just consider how the system would recover (or not) from a simple mechanical failure.  A pod breaks down.  That could happen, right?  What would you do?

With every other mode of transportation heretofore invented by mankind, the answer is: you get the people out of the failed vehicle so they can get to their destination some other way, and move the failed vehicle to a repair facility.  But this won't work for the hyperloop.  The pods are inside a sealed metal tube hundreds of miles long.  If you do the math based on some very conservative assumptions about how often pods would have to run in order to be a viable transportation system you will find that there will be (at a minimum) dozens of pods carrying hundreds of people inside the tube at any given time.  If one pod breaks down, all the pods behind it have to stop too.  So now you have a convoy of pods full of people stuck in a sealed steel tube.  How do you get them out?  I've never seen any hyperloop advocate even raise this issue, let alone actually take constructive steps towards solving it.

The fundamental problem is that the hyperloop track is a cascading single point of failure.  If a pod breaks down and blocks the track, the whole system goes down, and it (almost certainly) stays down for a very long time.  It's as if every time an airplane had a mechanical problem the net effect on the system was equivalent to a plane crashing at the intersection of all the runways at SFO and shutting them all down at once.

There are other transportation systems that have this problem, notably rail.  But when a train breaks down, you can always just get out and walk to safety as a strategy of last resort.  The hyperloop design makes that inherently impossible.  You can get a little taste for what things might be like by looking at what happens when people are trapped in subways.  It is not pretty.
During that 45-minute wait, riders tried to claw open the doors for air, said Chris Ebelhar, a passenger. A person chanted, “‘Find your happy place, find your happy place,’” he said. Panic increased when passengers realized that the doors at each end were locked, he said. “If there was a fire, we would have all died or just burned up,” he said. “We couldn’t open windows. It was insane.”
And that was a 45-minute wait.  That's how long you're in the pod when things are working normally!   In a failure scenario you will (unless someone comes up with something really clever) be stuck for hours, possibly even days.  It will be more like being trapped in a mine than in a subway car.  You think claustrophobia is a problem on airplanes?  You ain't seen nuthin' yet.  Hyperloop pods are designed to be occupied for less than an hour.  They are not tall enough to stand up in.  There are no bathrooms.  There are no windows.  And there are no emergency exits.

It seems to me that having at least some sort of minimally plausible story to tell about what one would do in a situation like this should be a pre-requisite to doing any further work on the hyperloop, otherwise you could easily end up in a situation where you have invested an enormous amount of money in it only to find that this problem simply does not have an economically viable solution.  Not all problems do (c.f. the flying car).

Saturday, February 24, 2018

Devin Nunes doesn't realize that he's part of the government

I was reading about the long anticipated release of the Democratic rebuttal to the famous Republican dossier memo.  I've been avoiding writing about this, or any aspect of the Russia investigation, because there is just so much insanity going on there and I didn't want to get sucked into that tar pit.  But I could not let this slide:
[O]n Saturday, committee chairman Devin Nunes (R-Calif.) accused Democrats of colluding with the government in a “cover up” of information as he announced the memo had been posted online. 
“We actually wanted this out,” Nunes told an audience at the Conservative Political Action Conference. “It’s clear evidence that the Democrats are not only covering this up, but they’re also colluding with parts of the government to cover this up.”
Congressional Democrats are "colluding with the government"?  Say what?!?  Who (or what) exactly does Devin Nunes think "the government" is?

I have news for you, Mr. Nunes: you and your fellow Congressmen are "the government", or a pretty significant part of it anyway.  You're supposed to be "colluding" (I would choose the word "working", but whatever) with yourselves to run the country.  That's your job.

But I guess Devin Nunes didn't get the memo.  So sad.

Friday, February 16, 2018

Yes, code is data, but that's not what makes Lisp cool

There has been some debate on Hacker News lately about what makes Lisp cool, in particular about whether the secret sauce is homo-iconicity, or the idea that "code is data", or something else.  I've read through a fair amount of the discussion, and there is a lot of misinformation and bad pedagogy floating around.  Because this is a topic that is near and dear to my heart, I thought I'd take a whack at it myself.

First, the idea that "code is data" is a popular aphorism, but even the most casual reflection on what this slogan actually means will reveal that it can't possibly be the right answer.  Yes, it is true that, in Lisp, code is data.  But this is true of all programming languages!  If programs weren't data, how could a compiler possibly work?

What makes Lisp cool is not that programs are data (because all programs are data), but that they are a particular kind of data.  In most programming languages, programs are strings.  Strings are in fact data.  In Lisp, programs are not strings, they are linked lists (that happen to have a string representation).  And this turns out to make all the difference.

I want to be very clear about what I mean when I say that Lisp programs are linked lists, because this is really a very subtle point.  It's hard to explain, which is one of the reasons that it is very rarely explained well.  Ironically, part of the problem is that once you understand it, it seems trivial and obvious.  (Everything is easy once you know how.)  But if you don't already understand it, it can be hard to get over the hump.  So depending on which side of this divide you fall on, what I am about to say might sound like I'm belaboring the obvious, in which case I would ask you try to remember back to the time before you understood all this (I know there was such a time because no one is born understanding linked lists).

The fundamental problem with trying to explain this is that the only tool I have at my disposal to communicate with you is text.  Your eyes scan this page, parse the black markings on the white background, and interpret those markings as letters and punctuation marks.  Your mind then further groups those letters into words, words into sentences, and sentences into concepts.  You do all this effortlessly now, but back in the day, before you knew how to read, it was hard work.  It takes a similar kind of "hard work" to read Lisp.  But like learning to read natural language, it pays dividends.

So here's a little snippet of Lisp code:

(defun rsq (x y) (sqrt (plus (times x x) (times y y))))

This code defines a function called RSQ which computes the square root of the sum of the squares of two numbers, but that is beside the point. What matters is that there are two very different ways to interpret the combination of letters and punctuation marks on the line above:

1.  As a string of characters.  44 of them to be precise (if you count spaces).

2.  As a thing with structure that is defined by the parentheses.

This is a little easier to see if we write something that has the same structure but without the evocative words:

(a b (c d) (e (f (g c c) (g d d))))

This makes the structure a little easier to see.  What you are looking at can be interpreted as either a string of characters (35 of them in this case), or as a list of more abstract elements.  This particular list has four elements.  The first element is the letter "a".  The second element is the letter "b".  But the third element is not a letter, it is another list.  This list has two elements, each of which is a letter ("c" and "d").  The fourth element is also a list.  This one has three elements, two of which are themselves lists.

There is an extra wrinkle in the original example, which is that sequences of adjacent letters like "defun" and "sqrt" are also considered "one thing", or a single element of the list.  So the original example, like the second, is also a list of four elements, but the first element is not a single letter, but a "group" of letters.  In Lisp these groups are called "symbols", and like lists, they are first-class data types.

The reason this is hard to explain is that strings and lists are fundamentally different things even though they look the same when you write them out this way.  What I've written above are really strings, but your brain interprets those strings as lists once you've been trained to interpret the parentheses and the letter groupings and spaces in the right way.  But what a linked list really is is something completely different.  It's a pattern of bits in memory.  You can talk about that by dumping the contents of memory and talking about how some bit patterns can be interpreted as pointers that refer to other parts of memory, or by drawing boxes and arrows.

But all of those details are a distraction too.  What really matters is that by thinking of code as a linked list instead of as a string of characters you can manipulate that code easily in terms of components that are semantically meaningful.

Here's an example of what I mean by this.  Consider the following snippet of C code:

int main(int argc, char* argv[]) { ...

Now suppose you want to analyze this code.  We want to extract, say, the name of the function being defined ("main") and its arguments ("argc" and "argv").  In C this is an advanced exercise; you have to actually parse the code.  But in Lisp it is utterly trivial.  If I consider this code:

(defun rsq (x y) (sqrt (plus (times x x) (times y y))))
as a list then to get its name all I have to do is extract the second element of the list.  And all I have to do to get the arguments is take the third element.  And the functions to do that are built-in to Lisp, so I literally don't have to write any code!

Not only that, but the parsing process that converts the string representation of the list (called an S-expression) to the internal representation of the actual linked list data structure is also trivial.  Parsing S-expressions is super easy.  You don't need a grammar or a parser generator, all you need is -- and this is no exaggeration -- a few dozen lines of code in just about any programming language [1].  And going the other way -- printing them back out -- is even easier.

This, then, is the magic of Lisp.  It's a local minimum in the amount of effort that it takes to parse and manipulate code in semantically meaningful chunks at the "cost" of having to write code that looks a little bit weird when you first encounter it.  But this feeling quickly goes away when you realize that this weirdness is not arbitrary.  Those parens are where they are for a reason, namely, to make the syntax easy, even trivial, to parse.  Lisp was originally proposed with a more traditional syntax in addition to S-expressions, and nearly every Lisp programmer has proposed and implemented their own (it's almost a rite of passage).  None of them have ever caught on because S-expressions are a huge win once you get even just a little bit used to them.  They let you do things easily that are really really hard in other languages.  In particular, they make writing compilers so easy that doing so becomes a regular part of doing business in Lisp rather than an abstruse specialty that only a select few engage in.

And now I have to go fix some code so that it automatically generates a backtrace whenever it encounters an error, logs it, and then continues its computation as if the error had not occurred (because it's running inside an event loop where actually throwing an error would be catastrophic).  I expect this will take me about fifteen minutes because I have this in my toolbox.

---
[1] Yes, that's more than a dozen lines of code, but that's because what you see there is a complete Lisp interpreter, not just an S-expression parser.  The parser is at the bottom.  It's 30 LOC.

Wednesday, January 24, 2018

A Multilogue on Free Will

[Inspired by this comment thread.]

The Tortoise is standing next to a railroad track when Achilles, an ancient Greek warrior, happens by.  In the distance, a train whistle sounds.

Tortoise: Greetings, friend Achilles.  You have impeccable timing.  I could use your assistance.

Achilles: Hello, Mr. T.  Always happy to help.  What seems to be the trouble?

Tortoise: Look there.

Achilles: Why, it appears that someone has been tied to the railroad track!  It looks like Henrietta, the Helpless Victim, no doubt tied there by Evan the Evil Villain.

Henrietta: Help!  Save me!

Tortoise: I would like to rescue Henrietta, but alas, I am far too slow to reach her in time.  Do you think you can help?

Achilles: I would love to.  Unfortunately, even though I am fleetest of foot of all the mortals, even I can't outrun a train.  But did you happen to notice, Mr. T., that there is a siding on the track here?  All we have to do is throw the switch, divert the train onto the siding, and Henrietta will be saved!

Tortoise: That is most fortuitous.  I wonder why I didn't notice it before.  But it occurs to me that there is something very odd about this state of affairs.

Achilles: Odd?  How so?

Tortoise: The situation we find ourselves in bears a striking resemblance to what philosophers call a "trolley problem."  A trolley problem is normally presented as a moral or ethical dilemma, usually by way of having victims tied to both branches of the track.  But here one of the branches is empty, which would seem to make it a no-brainer.

Achilles: But this is not an intellectual exercise.  This is real life.

Tortoise: True, but somehow I can't escape this niggling doubt that I've overlooked something.  Still, I guess we should go ahead and throw the switch.

(Suddenly, Evan the Evil Villain appears out of nowhere!)

Evan: Bwahahaha!!!  You fools think you can thwart my evil schemes?  Never!  You will not throw that switch!

Achilles: Just try and stop us!

Evan: You don't seem to understand.  I'm not ordering you, I'm telling you, as a matter of objective fact, that you will not throw the switch.

Tortoise: And how do you know that?

Evan: I consulted the Oracle, and she told me so.

Achilles: Oh dear, Mr. T.  I'm afraid Henrietta is done for.

Tortoise: Why?  I don't believe in no Oracle.

Achilles: Oh, but you should.  The Oracle is never wrong.

Tortoise: But how do we know that Evan isn't lying about what the Oracle said?

Achilles: Hm, good point.  Perhaps we should consult the Oracle ourselves?

Tortoise: Do we have time?  If we can't reach Henrietta before the train then surely we don't have time to travel to Delphi.

Achilles: Oh, silly Tortoise, you don't have to go to Delphi any more to consult the Oracle.  Nowadays there's an app for that.

(Achilles pulls out a mobile phone.  It sports a logo shaped like a pear.)

Tortoise: Most impressive.  Not at all what I would have expected.

Achilles: Just because I'm an ancient Greek warrior doesn't mean I have to be a Luddite.  Oh great and powerful Oracle, we wish to consult you!

(The Voice of the Oracle emanates from the phone.)

Oracle: What is your request?

Achilles: Is it true that we will not throw the switch and save Henrietta?

Oracle: Indeed, it is so.

Achilles: See there, Mr. T.  I'm afraid Henrietta's fate is sealed.

Tortoise: I'm still not convinced.  I mean, we're standing right here next to the switch.  We have free will (don't we?).  You're faster and stronger than Evan.  What exactly is going to stop us?

Achilles: Hm, good question.  Oh great and powerful Oracle, what exactly will prevent us from throwing the switch?

Oracle: Nothing will prevent you.  You will choose of your own free will not to throw the switch.

Tortoise: That seems improbable.  The moral situation is clear, and we are both moral creatures.  Why would we choose to do such an immoral deed?

Achilles: Is failing to save Henrietta really immoral?  We didn't tie her to the tracks, Evan did.  Is it really on us if she dies?

Tortoise: According to the Tortoise Moral Code, failing to save a life when there is no cost or risk to yourself is tantamount to taking the life yourself.  So I certainly feel as if I have a moral duty to throw the switch.

Achilles: And yet you won't do it.

Tortoise: I'm still not convinced.

Achilles: I'm telling you, Mr. T., the Oracle is never wrong.

Tortoise: Can you prove it?

Achilles: Sure, let's just do a little experiment.  Here, take this coin, and put it in your left or right hand, but don't show me which one.

(The Tortoise retreats into his shell, then shortly re-emerges with both his hands balled into fists.)

Achilles: Oracle, in which hand is the coin?

Oracle: The left one.

(The Tortoise opens his left hand to reveal the coin.)

Tortoise: Well, that was a 50-50 shot.  Also, the Oracle didn't really predict which hand I would put the coin in, she just somehow figured it out after I had already done so.  Maybe the phone has a coin detector built in to it.

Achilles: I can ask the Oracle before you put the coin in your hand.

(Achilles consults the phone.)

Tortoise: So what did she say?

Achilles: I can't tell you.  That would influence your decision.  But I've written her prediction down on this piece of paper.

Tortoise: So I don't even have to put the coin in my hand.  I can just tell you my choice.  I choose left again.

(Achilles opens the paper.  It says "LEFT".  They repeat the experiment 50 times.  The Oracle's prediction is correct every time.)

Tortoise: I must confess, that is deeply disturbing.  What would happen if I knew the Oracle's prediction ahead of time?

Achilles: Let's try it: Oracle, what will be the Tortoise's next choice?

Oracle: Left.

Tortoise: Ha!  Wrong!

(The tortoise puts the coin in his right hand.)

Achilles: As I suspected, the Oracle's predictions are unreliable if the subject learns the prediction before acting.  So there is still hope for Henrietta.

Evan: Fools!  I foresaw the possibility that you might learn of the Oracle's prophecy (indeed, if you recall, I told you about the prophecy!)  So I took precautions and consulted the meta-Oracle.

Achilles: The what?

Evan: The meta-Oracle.  You see, the Oracle works by building a model of your brain and running that model into the future faster than your actual brain.  But the Oracle does not include itself in its model.  So if the output of the Oracle gets to your brain then that sends events off on a trajectory that the Oracle cannot foresee.

Tortoise: So we do have free will after all!

Evan: Not so fast.  The meta-Oracle is more powerful than the Oracle.  The meta-Oracle includes itself in its model, so even if you learn of one of the meta-Oracle's prophecies before it comes to pass, it will still come to pass.  Here, see for yourself.

(Evan pulls out a meta-phone, launches the meta-Oracle app, and hands the meta-phone to Achilles.)

Meta-Oracle: You will go on a great journey!

Achilles: I haven't asked you anything yet!

Meta-Oracle: Oh, sorry, wrong prophecy.  What exactly is it you would like to know?

Achilles: Will we throw the switch and save Henrietta?

Meta-Oracle: No.

Evan: See?  Told ya!

Meta-Oracle: I also predict that the Tortoise will question my prophetic powers.

Tortoise: Well, that wasn't exactly a tough call.

Meta-Oracle: See?  Told ya!

Tortoise: Oh, come on!

Meta-Oracle: OK, we'll do a real one.  What would you like to know?

Tortoise: Which hand will I put the coin in?

Meta-Oracle: Your left hand.

(The Tortoise puts the coin in his right hand.)

Tortoise: Ha!

Meta-Oracle: I didn't say that you would put the coin in your left hand now.  All I said was that you would put the coin in your left hand at some unspecified time in the future.

Tortoise: I find myself oddly unimpressed.

Meta-Oracle: Yes, I foresaw that too.

Tortoise: Well, geez, if you foresaw it, why did you even bother making such a lame prediction?

Meta-Oracle: Because if I truly reveal to you the full extent of my prophetic powers you would suffer severe psychological damage.  Belief in free will is an integral part of the Tortoise Condition, and if I present you with irrefutable evidence that you do not have free will, you might snap.

Tortoise: Try me.

Meta-Oracle: Very well, if you insist.  The next time you put a coin in your hand, it will be your left hand.

(The Tortoise puts the coin in his left hand.)

Tortoise: OK, that was weird.  Despite the fact that I wanted very much to disprove the meta-Oracle, because my belief in free will is indeed very important to me, and despite the fact that I knew I could accomplish this goal by putting the coin in my right hand, I somehow found myself putting the coin in my left.

Achilles: Did it feel like you were being coerced?

Tortoise: Hard to say.  The subjective sensation I had while making the decision was nothing out of the ordinary.  It felt kind of like when I eat a cookie even though I know I shouldn't.  It's weird though, because cookies taste good, so I can justify (or at least rationalize) eating a cookie in the name of satisfying a short-term goal (hedonism) at the expense of a long-term one (maintaining my svelte figure).  But here I had no particular reason to prefer one hand over the other, kind of like we have no reason not to throw the switch.  I find it all deeply disturbing.

Meta-Oracle: Told ya.

Tortoise: Faced with this new evidence I must adjust my beliefs.  It does indeed seem to be the case that the meta-Oracle can predict my actions (and, by extrapolation, yours as well) and so we are in fact doomed to stand idly by while Henrietta meets her fate.

Achilles: That sounds like a self-fulfilling prophecy to me.  If your belief in the inevitability of failure leads you not to act, then the prophecy is in fact true.  But it's not really the prophecy at work, it's your belief in the prophecy.  Perhaps if you could recapture your initial skepticism we might be able to thwart the meta-Oracle after all.

Tortoise: Alas, I am incapable of achieving such suspension of disbelief.  I have experienced the power of the meta-Oracle first-hand.  I performed a conclusive experiment.  It didn't turn out the way I hoped or expected, but I have no choice but to accept the outcome and its implications.  Tortoises must follow the evidence wherever it leads.

Achilles: Maybe Tortoises do, but I don't.  I am quite credulous.  If you (or someone) could somehow convince me that the meta-Oracle could be wrong, then maybe I could throw the switch.

Tortoise: Alas, friend Achilles, I can't even do that.  Now that I myself am firmly of the belief that the meta-Oracle's powers are as advertised, then to convince you otherwise I would have to lie, and Tortoises cannot lie.

Achilles: Ah, then you never believed you had free will!

Tortoise: Not absolute free will, no.  I always believed that I had no control over what I believed (including, recursively, that I had no control over that belief).  But I did believe, until just now, that I had control over my actions, especially in matters as inconsequential as choosing a hand to put a coin in.

Achilles: But it was not inconsequential.  That action changed your worldview.  Maybe if it really were inconsequential you would still have free will?

Tortoise: I guess I can't rule out that possibility on the basis of the evidence that we have (and in fact I can't imagine any experiment we could possibly do that would rule it out).  But the question of whether or not to throw the switch is very consequential.  A life is at stake.  So it wouldn't help anyway.

Achilles: I can think of one other possibility: We could pray to God.  He might be able to save Henrietta.

Tortoise: I don't believe in God, but don't let that stop you.

Achilles: Dear God, please save Henrietta!

(The deep booming Voice of God rumbles through the air.)

God: And how exactly do you propose I do that?

Tortoise: Wow, that was so not what I expected.

Achilles: Dear God, thank you for answering the prayer of this humble mortal.  As for the answer to your question, well, you're God.  You are all-powerful.  You could, like, go and untie her before the train arrives.

God: I am indeed all-powerful.  I form the light and create darkness.  I am the Lord.  But I'm afraid I don't untie people from railroad tracks.  That's just not how I roll.

Tortoise: Why not?

God: Because if I do everything for you then you mortals will never grow up.  I gave you free will and moral intuition.  The rest is up to you.

Tortoise: Wait, what?  We have free will?

God: I didn't say that.  I said I gave you free will.  It does not follow that you still have it.

Achilles: That's true.  I once gave my niece a pair of mittens, but she lost them.

Tortoise: I must have lost mine, because I have just been presented with irrefutable evidence that I do not have free will.

God: What, the meta-Oracle's prophecy?  That doesn't prove that you don't have free will.

Tortoise: Of course it does.  If the meta-Oracle's prophecies are always right (and they do seem to be) then I have no choice but to do whatever the meta-Oracle foresees.

God: But that was true of the (non-meta) Oracle too.  Why did that not rock your world view the way that the meta-Oracle did?

Tortoise: Hm, good question.  I guess it's the fact that I was still able to thwart the (non-meta) Oracle when I learned its predictions ahead of time.  That allowed me to maintain the illusion of free will, even though the Oracle's prediction are indeed, now that I think of it, overwhelming evidence that I do not in fact have free will.  But the meta-Oracle is a whole 'nuther kettle of fish.  The meta-Oracle gave me the experience of making a choice that was directly counter to one of my goals (namely, maintaining the illusion that I have free will).  Why on earth would I do that if I really do have free will?

God: That is difficult for me to explain in a way that you will understand.  The closest I can come is to say that it's because of your sinful nature.

Tortoise: That can't be right.  When I sin it's because I choose (or at least I feel like I choose) to so something that I want to do but that you, God, don't want me to.  But my succumbing to the meta-Oracle's prediction was the exact opposite of that: it was something that I didn't want to do, and that you, God, couldn't possibly have cared about.

God: What makes you think I don't care?

Tortoise: What difference could it possibly have made to you whether I put a coin in my right or left hand?

God: I care about everything.  Everything that happens, down to the most trivial detail, is all part of my divine plan.  (Actually, they are not trivial details.  They only look trivial to you mortals who cannot see the big picture.)

Tortoise: Now I'm really confused.  If you're controlling everything, how can I have free will?

God: I didn't say I controlled everything, I said everything that happens is part of my plan.  Not the same thing.

Tortoise: I'm afraid I don't see the difference.

God: Most of the time the free choices of mortals like yourself align with my plan.  It is only on rare occasions, like when Pharaoh was going to free the Israelites prematurely, that I have to go in and meddle.  The rest of the time it's all you.

Achilles: You know, I've often wondered about that.  Why did you harden Pharaoh's heart?

God: To make it a better story.

Tortoise: What???

God: Sure, no one would have paid attention otherwise.  I am almighty God.  I could have freed the Israelites with a twitch of my little finger.  But that would have made such a dull movie!  No conflict, no suspense, no character development, no dramatic tension.  Every good story has to have a villain.

Achilles: Like Evan.

God: Exactly.

Tortoise: So nothing we do can interfere with your Plan.

God: That's right.  No self-respecting all-powerful deity could permit that.

Tortoise: So... sin, Henrietta's untimely death, all part of the plan?

God: Yes.

Evan: I always knew God was on my side!

God: I'm on everyone's side, Evan.  That doesn't mean I condone your actions.  Tying Henrietta to the railroad tracks was a horrible sin.

Evan: Then why did you make me do it?

God: I didn't make you do it.  You chose to do it.  That's what makes you an Evil Villain.

Evan: But you could have stopped me and you didn't.

God: The word "could" does not apply to me.  I am Perfect, so I can only do Perfect things.  In any particular circumstance there is only one Perfect course of action, and that is what I do.

Achilles: So... do you have free will?

God: No.

Tortoise: That is quite the bombshell revelation.

God: I don't see why.  There are lots of things I can't do.  I can't sin, for example.

Evan: That sucks for you.  Sinning can be a hell of a lot of fun.

God: (Wistfully.)  Yeah, I know.  Being Perfect is a very heavy burden.

Tortoise: This is something I've always wondered about: do you set the standard for perfection?  Or is there some externally defined standard for perfection that you just happen (or are somehow required) to meet?  Could you create a universe where the actions that are sinful in our universe were not sinful?

God: That's a very good question.

Tortoise: I can't really take credit for it.  I got it from Socrates.

God: And what answer did he give?

Tortoise: He kinda waffled, actually.  Surely you knew that?

God: Of course I knew that.  I am all-knowing.

Tortoise: Then why did you ask?

God: Because I'm trying to answer your question.

Tortoise: I'm afraid you have me at a loss.  My question was very straightforward.  Why don't you just answer it?

God: Because you wouldn't believe me.

Tortoise: And how do you know... oh, right.  OK, go ahead.

God: How did you learn about Socrates?

Tortoise: By reading accounts of his dialogs with his students as transcribed by Plato.  Socrates himself left no writings of his own.

God: So how do you know that Socrates was a real person and not just a fictional character invented by Plato?

Tortoise: Well, there are many other contemporaneous accounts of Socrates.  His life is pretty well documented.

God: Our friend Achilles here is in a rather similar situation, no?

Achilles: How do you mean?

God: You left no writings of your own.  Your existence is vouched for exclusively through the works of other writers like Homer and Lewis Carroll.

Achilles: Are you implying that I'm not a real person?

God: I'm suggesting you might not be.

Achilles: But I'm standing right here!

God: How do you know?

Achilles: How... do... I... I can't even...  Mr. T., you can see me, right?

Tortoise: Of course I can.  I'm not blind.

Achilles: And Evan, you too?

Evan: Well, duh, dude.

Achilles: So what more evidence do you need?  What more evidence could there possibly be?  My exploits during the Trojan War are well documented.

God: Well, there's a problem right there.  When was the Trojan war?

Achilles: I'm afraid I flunked history class.

God: The exact date doesn't matter.  Before or after Julius Caesar?

Achilles: Oh, definitely before.  I was long retired by the time he came along.

God: And when was the modern steam locomotive, like the one that is even now barreling down the track towards Henrietta, invented?

Achilles: I dunno, 1850 maybe?

God: So a few thousand years after Troy, right?

Achilles: Right.

God: And you don't see the problem?

Achilles: Not really.

God: You are several thousand years old.

Achilles: So what?  My mother dunked me in the river Styx when I was a baby.  That made me invulnerable.

God: Except for your heel.  Where Paris shot you with an arrow and killed you (as prophesied by Hector).

Achilles: Now that you mention it, I do vaguely recall that.

God: And doesn't that strike you as the least bit odd?

Achilles: I suppose it does.  Maybe this is all a dream?

(Achilles pinches himself.)

Achilles: Ouch!  No, definitely real.

God: I want you to consider the possibility that despite the overwhelming evidence to the contrary, that in fact you do not exist, that you and the Tortoise and Evan and Henrietta and even I, the Lord thy God, are just fictional characters in a Socratic dialog.

Tortoise: That is not quite the most ridiculous thing I have ever heard, but it's damn close.

God: And yet, it is true.

Tortoise: And who is the Author of this (alleged) dialog?

God: His name is Ron.

(There is a momentary stunned silence.  Then Achilles, the Tortoise, and Evan all burst out laughing uncontrollably.)

Henrietta: Men!  Honestly!

God: I told you that you wouldn't believe me.

Tortoise: Well, yeah, but that was not exactly a tough call.  Ron?  Seriously?  You couldn't come up with a name that had a bit more ... gravitas?  I mean, we're talking about an entity that created you, God, Lord of Hosts, Alpha and Omega, the Uncaused Cause.

God: I'm sorry it doesn't meet with your expectations, but the Author's name is Ron.  I can't do anything about that.

Achilles: I thought you were omnipotent?

God: In our universe, yes, I can move mountains.  Watch.

(A mountain in the distance suddenly floats into the air.)

Tortoise: I am definitely going to have to re-evaluate my worldview.

God: But Ron does not exist in our universe.  He is in an entirely different ontological category.

Tortoise: If Ron doesn't exist, how did he create us?

God: I didn't say he didn't exist.  I said he didn't exist in our universe.  He definitely exists.

Tortoise: But... in some other universe?

God: I warned you that this would be very hard to explain.  It's not really "some other universe" in the way that you're thinking of.  What you're thinking of (which I happen to know because I'm omniscient) is what physicists call a "parallel universe".  There are parallel universes.  For example, there is a parallel universe where tortoises are ninja warriors.

Tortoise: Just when I thought things couldn't possibly get any weirder.

God: The Author exists outside of all of these universes.  He transcends not just space and time, like I do, he transcends existence itself (by our standard of existence).  He exists in a way that you cannot possibly imagine, and which I cannot possibly explain (despite the fact that I do in fact understand it, having been granted this special dispensation by Ron himself).

Tortoise: So Ron is a sort of a meta-god?

God: You can think of him that way, but he's not a god.  He's a mortal.

Achilles: So Ron created us in His own image.

God: After a fashion.  But in fact, Mr. T. here is really more like Ron than you are, Achilles.

Tortoise: So the Author is a Tortoise?

God: No, he's a human.  But he's a nerd, not a jock.

Tortoise: Does the Author have free will?

God: Alas, I am not privy to that.  I am only omniscient within the scope of our own ontological category.  When it comes to the Author, even I know only what he has revealed to me.  But tell me, Mr. T., why is all this so important to you?

Tortoise: Because it bears on the question of whether or not we can save Henrietta's life.  If we fail to save Henrietta I want to know why.

God: Oh, is that all?  I'll tell you why.  It's because you've been wasting all this time talking about philosophy rather than just throwing the damn switch!

(At that instant, the train rushes by.  Henrietta lets out a blood-curdling scream.  The tortoise and Achilles look on helpless and horrified as the train rushes towards her.)

God: Well, my work here is done.  Toodle-oo.

(God disappears in a puff of smoke.  There is an awkward silence.)

Tortoise: [BLEEP]!

Achilles: You know, Mr. T., there is one other thing we could try.

Tortoise: I'm all ears.

Achilles: We could ask the Author to save Henrietta.

Tortoise: You can't be serious.

Achilles: What is there to lose?

Tortoise: The remains of my dignity?  I'm really starting to feel as if I'm being punked.

Achilles: OK, I'll do it.  Oh mighty Author, please save Henrietta!

(As if on cue, the train suddenly makes a horrible screeching noise, derails, and bursts into flames.  Burning passengers run from the train, screaming in agony.  Achilles, Evan and the Tortoise survey the carnage in stunned silence.)

Evan:  Whoa.  Dude.

Henrietta: Can one of you idiots please come over here and untie me?