While I was away, I started reading Charles Petzold’s book Code. This is the perfect book to read if you’re a programmer who doesn’t have a traditional computer science/electrical engineering background. If you spend your time proramming, but are irritated every time you have to deal with bitmasks, bitwise operators, or hex in any way shape or form, pick up this book immediately. It’s an incredibly clear explanation of how computers work at the level of circuitry, and provides a great refresher course in all that fundamental stuff that is hidden below about 100 layers of abstraction when you’re writing a SQL query or writing code using an IDE. The book is also really interesting, so reading it doesn’t feel like work. Or, I should say that if reading it feels like work, maybe you shouldn’t be a programmer. I’d guess that even real computer scientists might find it interesting, but since I’m not one, I can’t say for sure.
By the way, this book would also make the perfect gift for that teenager who has an interest in computers. Their level of interest in the book will be a great gauge as to whether they ought to consider making computers their career.