Favorite Reading

I like to read when I want to deeply understand a new concept, find a solution to a personal or existential problem, or just jog my imagination and creativity. I’ve found some of my favorite books by looking at someone else’s reading list, so here are my favorites in the hope that you may like some of them too. You can find a more complete list on my Goodreads. Also, I’ve been motivated to read more after a friend introduced me to “You Must Read At Least One Book To Ride”, so I’m sharing that here as well.

A Philosophy of Software Design, John Ousterhout

A Philosophy of Software Design, John Ousterhout

This book addresses the topic of software design: how to decompose complex software systems into modules that can be implemented relatively independently. The book first introduces the fundamental problem in software design, which is managing complexity. It then discusses philosophical issues about how to approach the software design process and it presents a collection of design principles to apply during software design. You can apply the ideas in this book to minimize the complexity of large software systems, so that you can write software more quickly and cheaply.

This is not a 'coding style' book, it teaches a more abstract system design that is applicable to any discipline that requires large amounts of complex cognition to understand. I think it is doubly more important to read with the rise of AI programming, in order to recognize how it changes software system behavior over time.

The Metamorphosis of Prime Intellect, Roger Williams

The Metamorphosis of Prime Intellect, Roger Williams

In a time not far from our own, Lawrence sets out simply to build an artificial intelligence that can pass as human, and finds himself instead with one that can pass as a god. Taking the Three Laws of Robotics literally, Prime Intellect makes every human immortal and provides instantly for every stated human desire. At turns shocking and humorous, Prime Intellect looks unflinchingly at extremes of human behavior that might emerge when all limits are removed.

This was a very creative take on an malicious artificial intelligence trope, and made me think about how people would behave in a 'perfect' world.

Coding Styles That Kill, Clifford E. Cummings

Coding Styles That Kill, Clifford E. Cummings

One of the most misunderstood constructs in the Verilog language is the nonblocking assignment. Even very experienced Verilog designers do not fully understand how nonblocking assignments are scheduled in an IEEE compliant Verilog simulator and do not understand when and why nonblocking assignments should be used. This paper details how Verilog blocking and nonblocking assignments are scheduled, gives important coding guidelines to infer correct synthesizable logic and details coding styles to avoid Verilog simulation race conditions.

This has great coverage of how Verilog events work and there are even no-brainer guidelines at the end. If you study the concepts in this paper, you will just write better Verilog.

Blindsight, Peter Watts

Blindsight, Peter Watts

Who do you send to force introductions on an alien intelligence with motives unknown, maybe unknowable? You send a linguist with her brain surgically partitioned into separate processing cores. You send a biologist so radically interfaced with machinery that he sees X-rays and tastes ultrasound. You send a pacifist warrior in the faint hope she won’t be needed. You send a monster to command them all, a “vampire,” recalled from the grave with the voodoo of recombinant genetics and the blood of sociopaths. And you send a synthesist – an informational topologist with half his mind gone – as an interface between here and there. You send them all to the edge of interstellar space, praying you can trust such freaks and retrofits with the fate of a world. You fear they may be more alien than the thing they’ve been sent to find.

Reading this book changed my perspective on everything. I can't recommend everyone read it, but for that, it has to have a place on this list.