a bookshelf snapshot
For some reason, in mid-2023, and I really have no idea why, I took photos of one of the bookshelves in my office. April 2023 feels like years ago, at this point. Anyway, they’ve been sitting in a folder on my desktop since then. I’ve got a recurring todo item that says “clean files out of your desktop and downloads folders”, and I gave these a pass last time it came up, but today it came up again and I decided I could either delete them or do something. So I’m doing something and posting a ridiculous little post about them.
For context, I’ve got four bookshelves. Two of them are novels, philosophy, textbooks, and history. One is board games and RPGs. The last one is mostly technical books, and it’s the one I took photos of. I’d named the files “shelfie 1” through “shelfie 5”, from top to bottom, so that’s the order I’ll go in.
Shelf 1: Notebooks
My top shelf is sort of ridiculous. Also, in the last six months, it’s gotten more ridiculous. That wooden box is a Field Notes archival box, and now there are two more of them. They’re nice affordable boxes to old the little Field Notes notebooks that I like using. I have somewhere between 50 and 100 of those notebooks, mostly unused. I need to use them more and buy them less.
Anyway, the rest of the shelf is other notebooks, mostly also empty. At the far right, you can see the blue spine of my extremely limited edition Fastmail staff notebook. There are a bunch of real Moleskines and a bunch of Google-branded knockoffs. There’s one set of notebooks made from stone (I don’t get it) and two nice Leuchtturm1917s, one of which I was given when I retired from running the Perl 5 project.
As for non-notebook stuff, there’s a ceramic Disney Alice in Wonderland that Gloria gave me ages ago, and whose ankles are held together with gorilla glue. Also, that red zip case is “all the cables I need to travel”, more or less. It’s in a transitional period, now. It’s still got a bunch of USB-A cables, and even a stupid micro-USB cable for my dang Kindle.
I am going to stop buying notebooks until I fill more of them. Probably.
Shelf 2: some books
Unfortunately, it is here, at the first shelf of books, that I am reminded that my bookshelf is not really organized in any coherent way. I think that when I first loaded it with books, I had a plan, but I don’t know that I stuck to it, and I certainly don’t remember it.
Anyway, you can see…
My Lisp books, of which the most important to me is Let Over Lambda. You can’t learn Lisp from it, but it does really well explaining the concepts behind advanced macros, which means behind much advanced code generation. This is a topic dear to me, and I think the book does really well. It’s a difficult book, and I should probably read it again in a few years. Also, it got a few bonus points because part of what it does is implement Forth in macros.
I’ve got all (I think) of the The Little Whatever-er books. I think The Little Schemer was probably the book that most helped me get my Lisp legs. the others are a mixed bag. I haven’t read The Little Prover yet, but I’d like to. I’m not sure I’d even like to read The Little Typer. I’m curious about Idris and dependent typing, but it’s so thick (compared to the others), and when I’ve glanced inside it, I felt cold. Still, it’s there waiting for me!
This isn’t my Perl shelf because I don’t have one. It does have a couple Perl books, though. Pro Perl Debugging was a mixed bag, but I learned things from it. (I am sometimes baffled how little most Perl programmers know about the Perl 5 debugger.) Perl Best Practices is an even more mixed bag, but definitely helped me nail down a bunch of my Perl style opinions. Minimal Perl is not life-changing, but I’ve recommended it often whenever somebody under the age of fifty mentions wanting to write more awk. Finally, Higher-Order Perl is terrific, and I keep meaning to go back and do the last chapter or two again, since they were just a bit out of my grasp when I first read this about 20 years ago. (Woah.)
I haven’t read the Eiffel book yet, for no reason I can name.
Finally, my Silver Camel! This was a gift upon my retirement from managing Perl 5, and it means a lot to me. I’m not much of a trophy or award person, but I felt like this wasn’t a perfunctory acknowledgement that somebody had to get, but a really nice gesture of thanks. It’s gotten a bit scratched in my moves, but I try to keep it looking good.
Shelf 3: another bunch of books
Before we talk books, though: check it out! A sheet of the rare, staff-only Fastmail Melbourne Office stickers, including fairy bread, a Keep Cup, and more.
As for the books: more dead languages, of course! Starting Forth is a favorite of mine, and I’ve given many copies over the years. It’s a good language to help with computational thinking, and the book is fun. (If you buy your own copy: you can skip the chapter about the built-in Forth editor. It’s obsolete and weird. But it’s also kind of interesting.) The sequel, Thinking Forth, is less great, I think, but I’m still glad I read it.
There are books that I don’t have much to say about: the C books, Unix Network Programming, the LaTeX book. But there’s the Inform Designer’s Manual, which is a very good book about a fairly weird language. (It compiles down to games for the Z-Machine!) There’s ML for the Working Programmer, which I’ve only read the very start of, but mean to read. Thompson’s Haskell book is very good, although I found it very dry. The build to monads and sequencing was slow, but I really said “a ha!” when we got there.
The Perl books ont his shelf are maybe more notable. Perl Debugged and Perl Medic didn’t get the attention they deserved, I think. I’m not sure they’re worth going back to read (unless maybe you still write Perl?) but they were very good at the time. Stein’s Network Programming with Perl is a real gem, even if you don’t write Perl. It really helped me understand why network programming is the way it is. I bet there’s some newer book that does this job now — and I’d like to read it! The pink Programming perl is the first edition “Camel Book”, signed by Larry Wall and Tom Christiansen. Finally, Object Oriented Perl is a good book about writing OO code in Perl, but also just a good book about object-oriented programming. It’s the book that finally helped me understand what objects were all about. Probably there are better books for other people, but it was a big influence on me.
Finally, on the far right is chromatic’s Extreme Programming Pocket Guide, which I really liked, and still think about when I think about how to build software alone or as a team.
Shelf 4: TCP/IP Illustrated and other thick books
So many thick books on this shelf! TCP/IP Illustrated gets a lot more shelf space than I think it deserves. Or, maybe what I mean is: volumes 2 and 3 never really moved me. The first one taught me almost everything I know about how the Internet works. (This is a mixed blessing, because it is (and I am) pretty out of date.) Advanced Programming in the Unix Environment came strongly recommended, but it’s absurdly thick. I am never going to read that book.
The Pragmatic Programmer is a book that I read at just the right time. I bet if I tried to read it now, I’d be bored and feel like it was just restating well-understood things. When I read it, I only sort of understood them.
I think I read The Unix Programming Environment, but I should re-read it. It’s short, and I’ve had a few people tell me how much it changed their lives. and it’s short.
The Mythical Man Month is here, and I think its reputation is well-deserved. Also More Programming Pearls… but no Programming Pearls! Maybe I loaned it out? That book on Algol was surprisingly really good. I still haven’t made it far into Crafting Interpreters, which makes me feel bad. On the far right is a printed and bound Z-Machine specification.
Finally, don’t miss Andy Lester’s Land the Tech Job You Love. It’s good advice, and I will always associate it with the series of conference talks he did on the subject, including a slide that said “cow eye sucker”.
Shelf 5: the bottom shelf
Honestly, this whole exercise has felt really weird. Why are my books organized like this? Why do I have so many that I haven’t read? Why am I posting this? I don’t know, but I guess I’m just happy to be keeping busy. It’s well below freezing outside and I don’t like being idle. The last shelf does not bring me to any realization about my books or their organization. It’s just more books.
On the far left is a big deal, Object-Oriented Software Construction, a book from the late 80s, about OO programming. Its author, Bertrand Meyer, was the creator of Eiffel, and so also the author of that Eiffel book on shelf two that I didn’t read. I also didn’t read his book Reusable Software, right on this shelf. It was a gift from my friend Stevan. He moved to Europe and before doing so handed me a big box full of programming books that he (correctly) thought I might like having. Also, he drove down from Connecticut to do it. What a guy!
If you squint, you can see Programming with curses, which of course I never
bothered reading because I don’t write C. There are two books on
make, and I
read the O’Reilly one. The eXtreme Programming eXplained book was another
important one for my thinking about software development. I’ve since picked up
the second edition, but not read it yet.
Applied Cryptography was a gift, and I read a respectable 20% or so of it. I don’t know that I’ll go back, but it was clearly a good book. Model-Based Development was written by one of my dad’s frat brothers, but actually does look good. I’ll get to it, maybe. The Dragon Book is here, but not because I planned to write a compiler. I just took it when we moved from an office to a co-working space ten years ago. I didn’t want it to get lost. Finally, Software Tools (in Ratfor) and Software Tools in Pascal. The first one was good, and the second one got us the excellent paper Why Pascal is Not My Favorite Programming Language.
Lately, I’m mostly reading technical books on O’Reilly Learning, either on my desktop monitor or on my iPad. This is nice because I can have the text in front of me while I edit code. It’s not nice because it’s easy to be distracted by everything else on my computer. Also, it’s harder to sit in the park and read on an iPad. Maybe when the weather is better, I’ll try to pick one of these to read through while sitting in the sun. Maybe one of those Bertrand Meyer books, or ML for the Working Programming. Something old and dead and without any direct application. That sounds like a nice time.