Why the Gas-Tax Holiday Won’t Work

Senators McCain and Clinton have proposed a “gas-tax holiday” this summer, which would eliminate the 18.4-cent-per-gallon federal tax on gasoline between Memorial Day and Labor Day.

If you squint and ignore the $10 billion hole it leaves in the federal highway budget (which McCain would fill by borrowing from taxpayers, and Clinton would take out of oil companies’ profits), at first this seems like a good idea: a gallon of gas would be about 18 cents cheaper, saving each hardworking American family a good $50 over the course of the summer.

Unfortunately, that’s not how these things work. Our hypothetical American family is never going to see those fifty dollars. Who will get them? Well let’s just say they aren’t exactly hurting for cash at the moment.

Imagine you’re an oil company. People are buying the stuff as fast as you can pump it out of the ground, at prices that are three times what they were a few years ago. And if Americans won’t buy at those prices, China and India are happy to.

Maybe you’re even a Big Oil company, like Exxon or Chevron, but that means you still only produce a few percent of the world’s oil. So you don’t have the clout to set the price of oil, although you can certainly benefit when it’s high. In any case you can’t immediately pump your product out of the ground any faster no matter how much people are willing to pay.

Now let’s say there’s a gas-tax holiday coming up, and gas is four bucks a gallon. If before Memorial day you charged $3.82 a gallon (for a pump price of $4.00 a gallon) and people still bought all the gas you could produce, how much do you suppose you can charge now the government isn’t taking an 18¢ cut? (Hint: $4.00)

If you think about it for more than two seconds, you’ll see that the holiday price is going to instantly rise to the pre-holiday level. And where will the difference go? Right into the pocketbooks of Big Oil. The Law of Unintended Consequences strikes again!

The end effect of McCain’s plan is to siphon money out of the federal government’s general revenue and hand it to Big Oil (meaning that sooner or later, taxpayers will have to pay for this subsidy).

The best thing we can say about Clinton’s plan is that it does nothing: her “Windfall Tax” on Big Oil would probably roughly make up for the extra money they would get during the tax holiday. But there are better ways to do nothing than to run around in a circle.

Of the major presidential candidates, only Obama has refused to pander to the American people by going along with this counterproductive proposal. Let’s hope Americans are smart enough to see why.

Things I Hate, Part II: Web Forms that Auto-Tab

There seem to be quite a few web designers with too much time on their hands out there, with just enough knowledge of JavaScript to be dangerous. 

What else can explain the fascination with taking what could be a simple text field (for entering a phone number, IP address, or SSN, for instance) and instead making it three or four separate text fields plus a half-baked script to “conveniently” yank the cursor into the next field when the current one is full? This violates at least three common-sense principles of user interface design.

The first violation is of the KISS principle. There is no reason why a phone number can’t be one field that accepts 5558675309, (555) 867-5309, or +1-555-867-5309 and figures out with a regular expression or two that the area code is 555, the prefix 867, and the number 5309. 

Secondly, it violates the principle of least surprise. Other fields in web forms don’t do this: I don’t finish typing “Frank” in the First Name field only to have the cursor magically jump into the Last Name field. Because, of course, my name might be Franklin (it’s not — in Germany “Frank” is a bona fide first name and that’s what my birth certificate says) and if the web form knew my name it wouldn’t be asking for it. But while it’s possible to do this for certain classes of text fields it’s a Bad Idea, because it’s never the expected behavior. 

Finally, it’s fundamentally broken. At least, every implementation of this “feature” that I’ve ever dealt with has been broken. When I screw up and type my area code as “666”, I want to be able to hit the delete key and correct it. Failing that, I at least want to be able to shift-tab back to the screwed-up field and correct it without having the cursor jump right back to the next field. I also want to be able to type 5 5 5 tab 8 6 7 without the “867” appearing in the number field, leaving the prefix blank.

It may in fact be impossible to implement this in JavaScript in a cross-platform way that doesn’t confuse grandmas and confound compulsive keyboard users like myself. Which doesn’t mean you should take a stab at it and make something that kinda works most of the time. It means you should back off, take a deep breath, and take a different approach.