Here are books I read recently. Mix of technical, non-fiction, and power-hungry loonies fighting with swords.
The Soul of a New Machine
Love this one. I’m fascinated by stories about the dawn of computers — before smartphones and tablets, before the World Wide Web and the ubiquity of the Internet. Applications like instant communication and immersive virtual reality and Google Maps are what excite me about computers,1 but here you have engineers waxing poetic about pure, raw machines. Did they see the potential in what they were building? Was that even possible? I dig computer science but I’m unsure I’d want to work in the industry if payroll software was the hot thing.
The book emphasizes the development of hardware rather than software; the author only mentions the operating system group in passing. Perhaps this is because he primarily had access to the hardware folks, but I get the impression that it was up to the customers buying the machines to make them useful. What a different landscape today.
My biggest takeaway: debugging hardware sounds hellish. Wire-wrapped boards sound like the creation of Satan himself.
The C Programming Language
I picked this up in my ongoing effort to consume the classics of computer science. It’s well-written, lean and to the point, but I didn’t get a lot out of it. I’ve used C-inspired languages for years so none of the constructs were new. If you’re starting out though and will use C professionally it might be a decent first resource. The exercises make for fun challenges.
The minimalism of C is refreshing compared to complex monstrosities like C++. No generics, no lambdas, not even classes. I never fell in love with the language like others have — give me Python or Clojure any day of the week — but I understand the appeal.
A Tour of C++
This one’s a perfect balance between beginner-focused “this is a
for loop” introductions and the giant tomes that explain every facet of a language. The author (also the author of C++ itself) makes a convincing case that modern C++ is different than and far superior to its earlier incarnations. Some of the new C++20 features like modules and concepts promise to make writing certain kinds of software a helluva lot easier. It’s going to be a long time before codebases rock the latest and greatest — most C++ I’ve touched recently has yet to adopt C++11 — but the language’s future looks bright.
I would love to see this sort of whirlwind tour for other languages.
Thinking, Fast and Slow
I’m a fan of pop psychology, and this one scratches that itch. You don’t need any particular background to enjoy it; all the thought experiments are easy to understand and perform on yourself. As the author predicts, I always choose the less rational option even when the math says I should do otherwise. I’m a work in progress.
Working Effectively With Legacy Code
This book’s format is wonderfully practical. Each chapter presents a roadblock to testing (e.g. “my application is all API calls”) and offers a solution. Its catalog of dependency-breaking techniques to make your code more testable is particularly valuable. I already use many of the techniques, but it’s nice to have a name for them.
Unfortunately after finishing the book I have an uneasy feeling that I retained far less than I should have. Taking notes would have helped. At university I took copious notes during lectures that I would never read again, but the process helped me soak up the material. Time to reintroduce that practice.
The Pragmatic Programmer
This is my favourite technical book I’ve read in a while. Practical advice, entertaining anecdotes, sage wisdom. No single tip will massively change the way I work, but it’s always good to have a reminder, say, about the dangers of shared state and oft-abused paradigms like inheritance. Like Code Complete, I wish I had read this earlier in my career.
While reading I also listened to the Coding Blocks episodes where they talk through each chapter. They discuss the original edition rather than the second one that I read, but it sounds like the chapters mostly cover the same material. I enjoyed consuming both the text and conversation about it at the same time; I’ll be sure to look for a relevant podcast when I crack open my next technical book.
I also took notes this time. Makes for slower reading but retention is off the charts.
A Song of Ice and Fire
Pure buttery popcorn.
Especially Google Maps. What a marvel. Let’s all take a moment to recognize the brilliance that is Google Maps. ↩