Check out my first novel, midnight's simulacra!

# Book list for streetfighting computer scientists

2022 edition. this is very different from most "best books for programmers" lists you'll see, with *Code Complete* and *Clean Code* and *Wistful Wanking for Practical Wankers* and *Design Slatterns* and titles like that. you'll figure all that out as you go along. these are books to read so that you can cut motherfuckers with knives. do you need to read all of these? only if you want to know the things inside, i guess.

- Dijkstra, A Discipline of Programming
- Knuth, The Art of Computer Programming, especially volumes 1 and 4B
- Warren, Hacker's Delight
- Stevens, Advanced Programming in the UNIX Environment
- Stevens, UNIX Network Programming
- Abelson + Sussman, Structure and Interpretation of Computer Programs
- Varghese, Networking Algorithmics
- McKusick, The Design and Implementation of the FreeBSD Operating System
- Kerrisk, The Linux Programming Interface
- Stroustrup, The C++ Programming Language
- Gustedt, Modern C
- Hanson, C Interfaces and Implementations
- Garcia + Widjaja, Communications Networks
- Kleinrock, Queueing Systems, especially volume 1
- Hennessy + Paterson, Computer Architecture: A Quantitative Approach
- Kennedy, Optimizing Compilers for Modern Architectures
- Stepanov, From Mathematics to Generic Programming
- CLRS, Introduction to Algorithms
- Samet, Metric and Multidimensional Data Structures
- McKenney, Is Parallel Programming Hard, And, If So, What Can You Do About It
- Crochemere et al, Algorithms on Strings
- Culler et al, Parallel Computer Architecture
- Ward + Halstead, Computation Structures
- Shriver + Smith, The Anatomy of a High-Performance Microprocessor
- Vazirani, Approximation Algorithms
- Raghaven + Motwani, Randomized Algorithms
- Sipser, Introduction to the Theory of Computation
- Ahora + Barak, Computational Complexity
- Pierce, Types and Programming Languages
- Barendregt, The Lambda Calculus
- Okasaki, Purely Functional Data Structures
- Van Roy + Hardidi, Concepts, Techniques, and Models of Computer Programming
- Galub + Van Loan, Matrix Computations (note that this last is pretty much a straight mathematics textbook, but roaming multiethnic gangs of matrices make up many streetfights)

speaking of math, you might want to take a look at Axler's *Linear Algebra Done Right* and Knuth's *Concrete Mathematics*. you'll want to know your combinatorics, your prob/stats, and your linear algebra cold. calculus through diffeqs is necessary to know, but i'm a pretty hardcore nerd and yet don't find myself integrating things all that often.

now go forth and fight in the streets. i list no machine learning because i dislike machine learning. there are no quantum books because quantum is not yet useful for streetfighting (we all look forward to this situation changing). i list no SIMT/accelerator books because they're all shite. i list no infosec because infosec is a subfield of QA, fight me. there are no links because i'm a lazy, lazy man.

i've heard good things about Tim Roughgarden's algorithms books, and have them on my shelves to read soon, but cannot yet speak to them. likewise Beej's book on networking, though that looks kinda lightweight. neither he nor Stevens goes into modern fast networking using things like XDP and Io_uring.

you should of course also read Hacking the Planet with Notcurses, buying copies for your team and family.