These files contain notes on non-fiction technical books that I've read or am reading, including some personal thoughts and notes about related topics.
The goal of this is drifting over time, but I would like to accomplish the following:
- Capture and reinforce my learning
- Discover and highlight good books
- Focus my study efforts on things I enjoy and that matter to me
- Provide a somewhat searchable body of text to find books by topic
To peruse the entire list of books, look to the by subject page.
For a smaller subset, check out the learning paths.
The best stuff gets aggregated:
This is very much a work in progress.
The following books are ones that I especially like:
- The Psychology of Computer Programming (Gerald Weinberg, 1971, Van Nostrand Reinhold)
- Land of Lisp (Conrad Barski, 2011, No Starch)
- Lean Software Development (Poppendieck, 2003, Addison-Wesley)
- The Elements of Computing Systems (Noam Nisan, Shimon Schocken, 2005, MIT Press)
- Accelerate (Forsgren, Humble, and Kim, 2018, IT Revolution)
- Absolute FreeBSD (Michael Lucas, 2007, No Starch)
A loosely curated selection of books. For the full list, see the by subject page.
- The Psychology of Computer Programming (Gerald Weinberg, 1971, Van Nostrand Reinhold)
- Drive: The Surprising Truth About What Motivates Us (Daniel Pink, 2009, Riverhead Books)
- The Manager's Path (Camille Fournier, 2017, O'Reilly)
- Radical Candor (Kim Scott, 2017, Pan Macmillen)
- Lean Software Development (Poppendieck, 2003, Addison-Wesley)
- Kanban in Action (Joakim Sundén, Marcus Hammarberg, 2014, Manning)
- Accelerate (Forsgren, Humble, and Kim, 2018, IT Revolution)
- Refactoring (Kent Beck, Martin Fowler, 1999, Addison-Wesley)
- Game Programming Patterns (Robert Nystrom, 2011, Genever Benning)
- Building Microservices (Sam Newman, 2015, O'Reilly)
- Computer Lib/Dream Machines (Ted Nelson, 1974, self-published)
- Algorithms + Data Structures = Programs (Niklaus Wirth, 1976, Prentice-Hall)
- The Turing Omnibus (Alexander Dewdney, 1989)
- The Art of the Metaobject Protocol (Daniel Bobrow, Gregor Kiczales, 1991, MIT Press)
- Applied Cryptography (Bruce Schneier, 1993, Wiley)
- Hacker's Delight (Henry S. Warren Jr., 2002, Addison-Wesley)
- The Elements of Computing Systems (Noam Nisan, Shimon Schocken, 2005, MIT Press)
- Visualize This (Nathan Yau, 2011, Wiley)
- Designing Data-Intensive Applications (Martin Kleppmann, 2017, O'Reilly)
- A Curious Moon (Rob Conery, 2017, Big Machine)
- Release It! (Michael Nygard, 2007, Pragmatic Bookshelf)
- Absolute FreeBSD (Michael Lucas, 2007, No Starch)
- Twisted: Network Programming Essentials (Jessica McKellar, Abe Fettig, 2013, O'Reilly)
- Networking for Systems Administrators (Michael Lucas, 2015, Tilted Windmill)
- SSH Mastery (Michael Lucas, 2018, Tilted Windmill)
- Building Microservices (Sam Newman, 2015, O'Reilly)
- REST in Practice (Savas Parastatidis, Jim Webber, and Ian Robinson, 2010, O'Reilly)
- RESTful Web APIs (Leonard Richardson, Sam Ruby, and Mike Amundsen, 2013, O'Reilly)
- Secure Your Node.js Web Application (Karl Duuna, 2015, Pragmatic Bookshelf)
- Microservices in .NET Core (Christian Gammelgaard, 2017, Manning)
- Designing Web APIs (Amir Shevat, Brenda Jin, and Saurabh Sahni, 2018, O'Reilly)
- Node.js 8 The Right Way (Jim Wilson, 2018, Pragmatic Bookshelf)
- Structure and Interpretation of Computer Programs (Gerald Sussman, Hal Abelson, 1979, MIT Press)
- The C Programming Language (Brian W. Kernighan, Dennis Ritchie, 1978, Prentice Hall)
- Prolog Programming for Artificial Intelligence (Ivan Bratko, 1986, Addison-Wesley)
- The Scheme Programming Language (R. Kent Dybvig, 1987, MIT Press)
- Effective C++ (Scott Meyers, 1992, Addison-Wesley)
- Practical Common Lisp (Peter Seibel, 2005, Apress)
- Higher Order Perl (Mark Dominus, 2005, Morgan Kaufmann)
- C# in Depth (Jon Skeet, 2008, Manning)
- JavaScript: The Good Parts (Douglas Crockford, 2008, O'Reilly)
- Land of Lisp (Conrad Barski, 2011, No Starch)
- Learn You a Haskell for Great Good! (Miran Lipovača, 2011, No Starch)
- Ruby Under a Microscope (Pat Shaughnessy, 2013, No Starch)
- Realm of Racket (Matthias Felleisen, Conrad Barski, David Van Horn, 2013, No Starch)
- The Book of F# (Dave Fancher, 2014, No Starch)
- Domain Modeling Made Functional (Scott Wlaschin, 2018, Pragmatic Bookshelf)
- Classic Computer Science Problems in Python (David Kopec, 2019, Manning)
- Serious Python (Julien Danjou, 2019, No Starch)
- Thinking With Types (Sandy Maguire, 2019, Leanpub)
- Build Your Own Z80 Computer (Steve Ciarcia, 1981, McGraw-Hill)
- Hacking the Xbox (Andrew Huang, 2003, No Starch)
Stop starting, start finishing.
- Game Programming Patterns (Robert Nystrom, 2011, Genever Benning)
- The Psychology of Computer Programming (Gerald Weinberg, 1971, Van Nostrand Reinhold)
- Designing Data-Intensive Applications (Martin Kleppmann, 2017, O'Reilly)
- Algebra-Driven Design (Sandy Meguire, 2020, Leanpub)
- Advanced C++ Programming Styles and Idioms (James Coplien, 1992, AT&T Bell Labs)
- API Security in Action (Neil Madden, 2020, Manning)
- Resilient Management (Lara Hogan, 2019, A Book Apart)
- Realm of Racket (Matthias Felleisen, Conrad Barski, David Van Horn, 2013, No Starch)
- Domain-Driven Design Distilled (Vaughn Vernon, 2016, Addison-Wesley)
- Technical Agile Coaching with the Samman Method (Emily Bache, 2020, Leanpub)
- Thinking With Types (Sandy Maguire, 2019, Leanpub)
- Designing Web APIs (Amir Shevat, Brenda Jin, and Saurabh Sahni, 2018, O'Reilly)
- A Scrum Book: The Spirit of the Game (Jeff Sutherland, Jim Coplien, 2019, Pragmatic Bookshelf)
- Programming Sound with Pure Data (Tony Hillerson, 2014, Pragmatic Bookshelf)