A nerd is someone who is out-of-step with mainstream society, passionate about technical or scientific subjects, and wishes he was cool.
A geek is someone who is out-of-step with mainstream society, passionate about technical or scientific subjects, and thinks that *is* what's cool.
I started out as a physics/math geek, but I haven't kept up with those subjects as well as I should for some years now, so I usually describe myself as a techno-geek these days.