I haven’t done a book review in quite a while, but I really can’t recommend “Programming Collective Intelligence” highly enough. This book kinda made me fall in love with programming again.
In it, the author describes how to do some really neat things with code – like how pick the best travel schedule from almost infinite options, how to determine “distance” between two structured objects, how to cluster concepts together into groups, and all sorts of other programming magic that you probably thought was beyond your capabilities.
The author does a fantastic job of breaking this stuff down to a manageable level. The final chapters in the book will have you writing programs that write other programs, in effect creating evolutionary code which learns and adapts to a task.
If you’re a little bored with the usually functional programming tasks, and you want exposure to what’s really possible when you start thinking outside your standard code boundaries, this is your book.