Posts from February 2010.

The 7 Greatest Left-Handed Guitarists of All Time

As I‘ve mentioned before, I play guitar left-handed. And I won’t get into the question of whether it’s a good thing or a bad thing (or a little of both). It is, however, fairly unusual. Anywhere from 7-10% of the population is left-handed, but go to a guitar store and see if 7-10% of the guitars are. It’s rare enough that I’ve only ever met a couple of other southpaw players, and that was only when buying or selling a guitar.

There have been a handful of greats, though, who play the “wrong” way. As a fun (and hopelessly subjective) exercise I thought I would put together a top 7 (get it? 7%?) list. Here goes:

jimi_hendrix_on_stage_fender_stratocaster

1. Jimi Hendrix. This one’s a no-brainer. He would have been #1 on the list of greatest right-handed guitarists, too, if he had played right-handed. He played a variety of guitars, both built left-handed models and righty guitars with the strings flipped. The greatest rock guitarist of all time.

dick_dale

2. Dick Dale. The king of the surf guitar was was and continues to be innovative and inimitable. He plays Fender Stratocasters strung upside down (that is, strung as if for a right-handed player). His machine gun tremolo picking and lightning-fast runs were unlike anything anyone else was doing when he appeared on the scene.

albertking

3. Albert King. The Velvet Bulldozer. A tremendous blues frontman, he had a commanding and powerful stage presence and voice that complimented his muscular and agressive playing. He’s another guy who played guitars strung for right-handed players, which no doubt contributed to his unique voicing and phrasing.

tony iommi

4. Tony Iommi. A founding member of Black Sabbath, Iommi has as much claim as anyone else to the title “inventor of heavy metal.” Since 1969, Iommi has been cranking out classic metal riffs, from Iron Man to War Pigs to Sweet Leaf, along with some surprisingly sweet and sophisticated prog-rock-inspired interludes like A Bit of Finger and Planet Caravan.

paul-mccartney-2

5. Paul McCartney. Surely the man needs no introduction, but besides being a very musical and underrated bass player, McCartney played guitar on several Beatles songs. Later on in Wings and his solo efforts he played many of the guitar parts.

kurt-cobain-1

6. Kurt Cobain. Not a great technical player, but composed some classic riffs and songs, many of which are very deceptively hard to sing and play at the same time. Would be rated much higher if this list was based upon influence, but even as a guitarist he could hang with the greats. Interestingly enough, Cobain wrote with his right hand.

Mars Volta 6

7. Omar Rodríguez-López. Pompous? Yes. Often annoying? Well, that’s my opinion, but yes. Say what you will, (and obviously I’m not a great fan,) the guitarist for At the Drive In and The Mars Volta can shred.

So, what do you think? Anyone I missed? Who should I move up the list?

Thrown for a loop by JavaScript’s ReferenceError

The other day I was talking to a couple of friends about a ReferenceError they were getting in some code they were running. They were just checking for the existence of a global variable. They were just doing this:

   if(foo){
      doSomething();
   }

Would you expect that to work? If so, you’re better at this than I am. If foo is not defined, either in the current scope or globally, you’ll get a ReferenceError there. Why does this strike me as so inconsistent? Consider the following:

   var foo = {};
   if(foo.propertyThatDoesntExist){
      doSomething();
   }

If you check for the existence of a property of an object that doesn’t exist, it simply returns undefined. No error is thrown, your code doesn’t halt execution, things don’t explode. In fact, the interpreter will work its way up the scope chain from foo, looking for the missing property.

Now, consider this example:

   var setImplicitGlobal = function(){
      implicitGlobal = 'Are you sure this is what you wanted?';
   }

   setImplicitGlobal();
   alert(implicitGlobal);   // Alerts the string from above

So when we’re doing assignment and try to assign a value to an undefined variable, the interpreter assumes we wanted a new global variable and creates it for us. Despite the fact that this is almost never what anyone would reasonably want to happen.

Finally, consider the following:

if(foo){   // Reference error when foo has not been declared
   doSomething();
}

if(window.foo){  // Undefined when foo window.foo has not been set.
   doSomething()
}

So when we try to assign a value to an undeclared variable, the interpreter assumes we meant window.foo and creates it for us. But when we’re trying to read the same thing, it doesn’t make the same assumption, throws an error, and breaks our script even when we thought we were coding defensively.

What am I missing here? This is sort of inconsistent, is it not?