Times have changed. When I was in school, and I'm sure this is true for the members that are older than me, geek/nerd/dork were all insults, but by my senior year (2000) they had started to become a complementary and good thing.
I think that a geek is an enthusiast (for example, I am a programming geek, a sports geek and a science geek) and a nerd is someone who studies a lot. A dork is for me someone who doesn't know anything, or who remembers everything, but he doesn't know how it works or what is it. For example, I don't use the POSIX API, because I don't know what is it. geek/nerd=good, dork=bad.
I've only been called nerd 3 times. I'm twelve and in 7th grade, and people just don't say that much anymore, at least where I live. Anyways, to me geek is smart and obsessive and a nerd has bad social skills, and cares a lot about academics.
Where I live:
"Geek" doesn't have to do with technical knowledge... it means someone that doesn't know what's generally going on and is weird, and has a certain kind of personality that I can't explain using words. If someone calls someone a "geek" they mean don't waste your time on them.