I read an article recently by Joel Spolsky entitled "The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)". I knew nothing about Unicode before I read the article. Now, I feel like I can speak intelligently about the topic and, if I ever needed to dig deeper, I have a good foundation of knowledge to build on.
This enlightenment got me thinking: "I wish there were an article like this for all topics germane to software development (and computer science in general)."
So, the question is: what are the things that every developer should know something about?
(And, if possible - what is the something and how do I learn it?).
EDIT: A good point was raised -- that the answer highly depends on the role the developer is supposed to fulfill. However, regardless of your day-to-day role, you probably should know something about common things like networks, database design, etc (for example).
It's not likely you'd be embarrassed as a developer if you couldn't discuss the detailed inner-workings of the MySQL database engine, but you might be if you didn't know what a primary key was.