What other books are in this vein?
Due to popularity, feel free to skip The Littler Schemer/MLer, HtDP, SICP, On Lisp, Thinking in Forth. And let's skip history, biography books like Soul of a New Machine and Isaacson's Jobs.
And again, let's skip books that you might actually consider required reading for experienced developers.
Joe Armstrong used to recommend Algorithms + Data structures = Programs (https://en.wikipedia.org/wiki/Algorithms_%2B_Data_Structures...) but I haven't read it.
Okay I know you said no to the little schemer but you technically didn't mention The Reasoned Schemer which is just amazingly fun to go through and wrap your head around (https://mitpress.mit.edu/books/reasoned-schemer-second-editi...). Also see Will Byrds latest strangeloop keynote: https://www.youtube.com/watch?v=AffW-7ika0E
Inside the Machine: An Illustrated Introduction to Microprocessors and Computer Architecture
Explains how Microprocessors operate, going from operands and building up a lot of the execution tricks used, all whilst going through popular examples of CPUs (thee pentium chips, PowerPCs, etc), discussing their history, their specs, their capabilities, etc.
Hardware and Support Support for Virtualization
This one corners on useful, but it's short and it's free and unless you work in virtualization it probably won't be much use but I found it helpful in getting a grasp on what is actually happening.
------
Edit: Removed history books but, for anyone interested, the ones I listed previously were The Idea Factory, Valley of Genius, and Android: The Team that Built the Android OS
The second edition from 2000 is online available at https://archive.org/details/ProgrammingPearls2ndEditionJonBe...
https://en.wikipedia.org/wiki/Computer_Lib/Dream_Machines
https://archive.org/details/computer-lib-dream-machines
- - - -
Also "Scalable Internet Architectures" by Theo Schlossnagle
It's about multithreading synchronization issues like the Dining Philosopher's problem, and it's brief, interesting, and very readable.
> ... is a book by Przemyslaw Prusinkiewicz and Aristid Lindenmayer. It's notable as it is the first comprehensive volume on the computer simulation of certain patterns in nature found in plant development (L-systems).
> The book is no longer in print but is available free online.
https://en.wikipedia.org/wiki/The_Algorithmic_Beauty_of_Plan...
You could think of it as "SICP for Prolog".
[0]: https://www.t3x.org/
I surprisingly really enjoyed it. Well written and it pulled back the veil on a lot of concepts that I thought were too complex for me to understand/enjoy.
Edit:
A couple of other suggestions.
Managing Gigabytes: Compressing and Indexing Documents and Images[2]
Mining of Massive Datasets[3]
Algorithm Design Manual[4]
Network Algorithmics[5]
Neural Network Design[6]
I think all of these fall into the category of "Won't be applicable to everyone, but can be good for those who need this kind of stuff."
[1]: https://github.com/clever-algorithms/CleverAlgorithms
[2]: https://people.eng.unimelb.edu.au/ammoffat/mg/
[3]: http://www.mmds.org/
[4]: https://www.amazon.com/Algorithm-Design-Manual-Steven-Skiena...
[5]: https://www.amazon.com/Network-Algorithmics-Interdisciplinar...
The CS Detective: https://nostarch.com/csdetective
Mazes for Programmers: http://www.mazesforprogrammers.com/
A Curious Moon: https://bigmachine.io/products/a-curious-moon/
xchg rax,rax: https://www.xorpd.net/pages/xchg_rax/snip_00.html
P. J. Plauger's "Programming on Purpose" series of essays.
Purely Functional Data Structures by Chris Okasaki.
I would put both of these alongside Bentley's "Programming Pearls" books which I saw mentioned in another comment.
https://en.wikipedia.org/wiki/To_Mock_a_Mockingbird
Nothing explicit computery or even technical in there. Only all kinds of invented birds with specific weird behavior. You need to know nothing above what a 10 year old knows (and be interested in logic). And yet, when you're at the end, it turns out you know what 'Y combinator' actually means.
It comes with a bonus music video! [1]
I still refer to this book from time to time to brush up on file system basics.
Programming Erlang by Joe Armstrong
Communicating Sequential Processes by Hoare
The algorithmic beauty of plants by Prusinkiewicz, Lindenmayer
Network Performance Analysis Using the J Programming Language by Alan Holt
Relational Programming in miniKanren by William Byrd
Exercises in Programming Style by Cristina Videira Lopes
edit: also "SAT/SMT by example" by Dennis Yurichev
I've been following the development of http://browser.engineering/ and it's so much fun to go through. Highly recommended!
Mazes for Programmers is on my bookshelf. I've gone through the first few chapters coding along in Go and going on weird diversions. It's totally pointless, and I love it. There's also "The Ray Tracer Challenge" by the same author, which looks phenomenal.
The Inmates Are Running the Asylum (Alan Cooper) makes the case that user interfaces can and should be easier to understand. I think in the years since this book was written, there has been much improvement in the UI world overall, but still worth thinking about.
Expert C Programming (Deep C Secrets) (Peter van der Linden) goes into some fascinating technical (and historical) tidbits related to C.
I'm working on a collection of 12 books about software development and IT: https://dev-concepts.dev/table-of-contents
I try not to get down to the level of atoms and molecules, but I'm going deep down the rabbit hole, and it's quite fun!
Along the same lines, while not a book, videos and documents about debugging electromechanical pinballs and modular analog synthesizers provide great reference points for what digital systems could look like or strive to emulate, and physical engineering, woodworking and construction decenter the computer as the whole of the process while still being very logical and systematic. At the top level it's usually finding the right structural metaphor that dogs practical programming and gets it into a loop of endless data collection and reprocessing, so it helps to have other things in mind and try to discern ultimate aims.
Not required reading but entertaining and only somewhat practical unless you happen to write Haskell for a living, in which case yeah - too bad.
Free to read online: