Friday, November 17, 2006
  The first seven books I would buy if my shelves were bare
Lucas Carlson won a $100 gift certificate on Amazon.com for his 2nd place entry at Rails Day (in collaboration with John Butler). Congratulations, Lucas!

Lucas asked for suggestions on spending the money. I tried suggesting a new iPod Nano loaded up with the SICP lectures in video podcast form. But as you would expect for someone working in a music-related venture, he has plenty of toys already.

So… here are the first seven books I would buy if my shelves were bare (in no particular order):
  1. Structure and Interpretation of Computer Programs. You can read it for free on line, but it’s even better as a physical book. One for the ages, it’s the kind of thing that ought to be bound in rich leather (if you go for that sort of thing) and kept in the library you build for your luxury castle.

  2. To Mock a Mockingbird. It seems you can’t raise micro-capital these days without understanding fixed point combinators. Here’s the most enjoyable text on the subject of combinatory logic ever written. What other textbook features starlings, kestrels, and other songbirds?

  3. The Media Lab: Inventing the Future at M. I. T.. Stewart Brand’s book captures the legendary think tank’s culture and ideas. Compare and contrast their view of broadcatch with today’s RSS feeds, or narrowcasting with today’s 500 channel television.

  4. On Intelligence A book that shook my views about how my brain works. To pick one nugget out of many, neurons are so slow that in the time it takes for us to react suddenly—say to duck a flying object—there is only time for a chain of at most 100 steps to complete. 100 steps do not permit us to perform any complex reasoning or look-up. Jeff explains how the neocortex can accomplish complex tasks using layers of parallel switches.

  5. Philip and Alex’s Guide to Web Publishing. While the technologies suggested (TCL, AOLServer) are unlikely to float your boat, this is the most beautiful technical book on my shelves. Philip’s advice on how to build software for web publishing and approach is still relevant several generations of web developers later. (Also available on line for free.)

  6. The Recursive Universe: Cosmic Complexity and the Limits of Scientific Knowledge. Although it seems to be out of print, hunt down a copy for yourself. A thrilling journey into the ideas of the great John Horton Conway and computation’s building blocks. Best of all, it’s explained beautifully using the legendary Game of Life. Who knew that puffer trains and spaceships are Turing Complete?

  7. QED: The Strange Theory of Light and Matter. Yes, the full Feynman Lectures are incomparable, and for further thrills you can listen to him give the lectures on audiobook. But in QED, Feynman does this one magical thing: he explains how a mirror reflects light. And in the process of explaining how light actually reflects off a mirror, Feynman deconstructs classical physics and rebuilds our understanding with Quantum Electrodynamics. For a moment, you can understand how little we really know about how the universe works.

Is there a book you would recommend? What’re your feelings about the books I’ve suggested?

p.s. Shane Sherman’s The 5 Books that Every Programmer Should Read

Labels: ,


Comments on “The first seven books I would buy if my shelves were bare:
If you like SICP, you might also like Concept, Techniques, and Models of Computer Programming (CTM) by Peter Van Roy (PVR) and Seif Haridi. I like how it uses the least concurrent and least stateful (most deterministic) solution that works for a given problem. It also uses an interesting multiparadigm language called Oz, which pulls together all that is good from many popular languages.

Oh, and every programmer needs Code Complete Second Edition by Steve McConnell. It's great for settling annoying code review comments that you sometimes get, like "aren't multiple returns evil?"
mmm... The Godel Escher Bach is also good candidate for the best bookshelf.
link to QED book is broken
Amazon's tool for making links seems to break for QED.

Reverse engineering the bug by looking at the difference between its link and the other links would be interesting... Anyways, it was easy enough to fix by examining the structure of the other links.

Thanks, Max!
I also loved Godel, Escher, Bach when I read it as a student. It was entertaining and provocative, and I would recommend it as a good read.

The main reason it is not on this list is that over the years I haven't felt compelled to return to the book over and over again.All of the other books are well-worn in my library: I pick them up every few years and I discover new things each time I re-read them.

I have definitely felt this way about Glenn Gould's two recordings of Bach's Goldberg Variations.

I think I shall take your recommendation to heart and try re-reading GEB. Perhaps it's time for me to rediscover how much I love the book.
My week is ruined. It's Monday morning and all I want to do now is go home and read. :)
Without a doubt, "Annals of the Former World" by John McPhee. It's five books in one, spanning 20 years of work and explains geology, the history of geology as a science, the history of the earth, the lives of geologists, and so much more. It won a Pulitzer for nonfiction. McPhee has a great talent for writing about people, which is so essential to the readability of any book.

AotFW will leave you in complete awe of what a brief, tiny smudge the human race really is in the grand scheme of things.
sean: Erg, maybe my experience was tainted because that was a book for a class that I took but I found SICP to teach most of the same material in a FAR superior way.

Van Roy and Haridi covered a wider range, but SICP was just so much... more comprehensible.

Also, Scheme/LISP is way simpler, which is a plus.
If you like On Intelligence, you may like Godel, Escher, Bach. That is my favorite non-fiction book of all-time. It deals with complex systems which reflect aspects of reality, and their implications in consciousness.
-Paradigms of Artificial Intelligence Programming.
-Concept, Techniques, and Models of Computer Programming
-The Haskell School of Expression

I've already read the above, so I won't buy them again.

I think I would buy: "Smalltalk the language and the implementation" (The blue book)and "Types and Programming languages". These will be my last computer science books ever until the next real revolution (the last one has been smalltalk I think)
To reiterate Sean's response, I look for Code Complete on the desk of every developer I come across. I've been known to ask why it's nonexistant in the "library" during interviews.
On creative problemsolving: Conceptual blockbusting for me.

The psychological dictionary.

Listening to children (Gordon) (I'm a mother)(that one is really broken)

A reader with lists on activities that children like to do according to Howard Gardner's multiple intelligences is also worn.

There is also GEB here, but I don't reference to it.
"The Giving Tree"

by Shel Silverstein

One to re-read every few years to make sure you haven't gone too far off track.

-Buford Twain
I am reading "Concept, Techniques, and Models of Computer Programming" by Van Roy and Haridi together with SICP. So far I enjoy both very much.

Code Complete seems quite good too.
2 books by Simon Singh, Fermat's Last Theorem and Code.

Also 2 recent O'Reilly releases

Programming Collective Intelligence: Building Smart Web 2.0 Applications

Beautiful Code: Leading Programmers Explain How They Think

<< Home
Reg Braithwaite

Recent Writing
Homoiconic Technical Writing / raganwald.posterous.com

What I‘ve Learned From Failure / Kestrels, Quirky Birds, and Hopeless Egocentricity

rewrite_rails / andand / unfold.rb / string_to_proc.rb / dsl_and_let.rb / comprehension.rb / lazy_lists.rb

IS-STRICTLY-EQUIVALENT-TO-A / Spaghetti-Western Coding / Golf is a good program spoiled / Programming conventions as signals / Not all functions should be object methods

The Not So Big Software Design / Writing programs for people to read / Why Why Functional Programming Matters Matters / But Y would I want to do a thing like this?

The single most important thing you must do to improve your programming career / The Naïve Approach to Hiring People / No Disrespect / Take control of your interview / Three tips for getting a job through a recruiter / My favourite interview question

Exception Handling in Software Development / What if powerful languages and idioms only work for small teams? / Bricks / Which theory fits the evidence? / Still failing, still learning / What I’ve learned from failure

The unary ampersand in Ruby / (1..100).inject(&:+) / The challenge of teaching yourself a programming language / The significance of the meta-circular interpreter / Block-Structured Javascript / Haskell, Ruby and Infinity / Closures and Higher-Order Functions

Why Apple is more expensive than Amazon / Why we are the biggest obstacles to our own growth / Is software the documentation of business process mistakes? / We have lost control of the apparatus / What I’ve Learned From Sales I, II, III

The Narcissism of Small Code Differences / Billy Martin’s Technique for Managing his Manager / Three stories about The Tao / Programming Language Stories / Why You Need a Degree to Work For BigCo

06/04 / 07/04 / 08/04 / 09/04 / 10/04 / 11/04 / 12/04 / 01/05 / 02/05 / 03/05 / 04/05 / 06/05 / 07/05 / 08/05 / 09/05 / 10/05 / 11/05 / 01/06 / 02/06 / 03/06 / 04/06 / 05/06 / 06/06 / 07/06 / 08/06 / 09/06 / 10/06 / 11/06 / 12/06 / 01/07 / 02/07 / 03/07 / 04/07 / 05/07 / 06/07 / 07/07 / 08/07 / 09/07 / 10/07 / 11/07 / 12/07 / 01/08 / 02/08 / 03/08 / 04/08 / 05/08 / 06/08 / 07/08 /