I've been slow reading books lately for climatic reasons.
See, I'm a bit weird in that I mentally assign books to seasons, and I prefer to read books in the proper season. I don't have a formal way of assigning books, and the season to which a book is assigned isn't always predictable (and some books have no season at all; others have multiple seasons; and don't even ask me to explain the difference between those two ideas), but it's still a real thing.
Normally, that's not a problem -- I just read the appropriate book for the season I'm in. The problem right now, though, is that it should be summer, and I should be reading summer books, but the weather is so damn cold that it doesn't feel like summer. Given a book that demands to be read lying barefoot on the couch with the patio door wide open, basking in the summer heat and the summer evening sounds, it's impossible to read it while huddled under a blanket with the blinds closed.
And yeah, I could just read winter books, but I'm stubbornly refusing to give in to this kind of aberration. I don't want to be reading winter books, damn it.
So, for the moment, I have retreated into the seasonlessness of technical books -- this time, to Joshua Bloch's Effective Java . This is a short... well, style guide, really. What Strunk and White is to the English language, this is to Java. It tells you which constructs to use, which to avoid, and properly idiomatic ways to phrase a particular concept.
It's an excellent guide, too. I found that the suggestions in the book were evenly split between solutions I'd managed to figure out on my own after years of Java programming, and elegant solutions to quandaries I'd encountered before and solved unsatisfactorily. The tip on typesafe enums alone was worth the price of the book -- as soon as I read it, I realized that one section of the code I'm working on at my job would be immensely improved if I rewrote it in that idiom.
Very highly recommended to any Java programmer.