Ask HN: What are the most eye-opening textbooks you have ever read?

250 points by debanjan16 ↗ HN
In spirit of the tweet by Michael Nielsen: https://twitter.com/michael_nielsen/status/1656708273343459328?s=20

170 comments

[ 4.3 ms ] story [ 245 ms ] thread
Fractals Everywhere, Michael F. Barnsley.

I love the way it starts:

>Fractal geometry will make you see everything differently. There is a danger in reading further. You risk the loss of your childhood vision of clouds, forests, flowers, galaxies, leaves, feathers, rocks, mountains, torrents of water, carpet, bricks, and much else besides. Never again will your interpretation of these things be quite the same.

You just made a sale of copy. Holy shit that is a cool start!
marvelous book. prof barnsley is also a wonderful man and teacher
Not a textbook, but John Gleick's The theory of Chaos is a great read on chaos theory - very approchable!
That was a fun read. But it was written at the height of interest in chaos theory and so some of the curious things it talked about, like the Feigenbaum constants, went nowhere
Interesting! I'll look into that. I'm about 1/3 into The Information, from the same author - also a good read for anyone interested!
Did chaos theory as a whole go anywhere? Where is it used, meteorology?
Didn't really go very far. It's a subfield of dynamical systems, and some of its results have been used there. People continue to study it, but it's more in the pure math area, at this point anyway. Recently I heard about some new research into "wild chaos" which sounds interesting.
Is it like Chaos by James Gleick?
not really. this is actually a textbook
The books that taught me computer science

- Operating Systems: Three Easy Pieces ( https://pages.cs.wisc.edu/~remzi/OSTEP/)

- Designing Data Intensive Applications by Martin Kleppmann (https://dataintensive.net)

- Crafting Interpreters by Robert Nystrom (http://craftinginterpreters.com)

Second on Martin Kleppman’s book - really good. I have it on my nightstand as type.
It's amazing. One, I learned a lot about database internals.

But more importantly for me, it was an eye opener about all the differences between all those database engines out there.

There are lots of tradeoffs involved in trying to address the problems of distributed databases (obviously), but seeing that database A takes that choice, B another, C leaves out some common feature entirely and therefore doesn't have to care about this, D optimistically ignores the problem hoping to fix it later if it does happen, et cetera - very helpful.

They're not just trade offs, but serious useful databases actually exist that take the different options. Before reading the book I didn't understand how fundamental the differences between all those databases were, I think.

Probably not what anybody here is looking for, but Steven Seidman -- Contested Knowledge: Social Theory Today
I always wonder when I see this, do people learn to lay comments out like a reverse psychology bait from these books, or are people who are already predisposed to that just drawn to owning them. Any chance the book goes over that?

Not disparaging, I appreciate you sharing a recommendation. I just found the observation funny.

Ironically enough, I have a textbook for that: Jeff Pfeffer -- Power: why some people have it -- and others don't. It's good, and not what you would expect from the title.
I'm almost sold on that one from the author alone. Jeff Pfeffer has a great sound to it.
For me, probably What Is This Thing Called Science?. It was the first time I really thought about some basic questions in epistemology.
Fantastic book, and almost a non-fiction read. Pick it up, everyone!
Mathematics Made Difficult, Carl E Linderholm
Computer Networks: A Systems Approach takes a subject I didn’t think I’d like and presents it in a way that made me want to read every chapter. It’s a master class on how to make technical content enjoyable, and a great intro/refresher to networking. Can’t recommend it enough.
Cormen, Introduction to algorithms
I found CRLS dry and difficult. Skiena’s Algorithm Design Manual was much more approachable for me. That was my go to during interview practice.
The Timeless Way of Building by Christopher Alexander.

It really made me reconsider the process and ultimate goals of building systems beyond housing, and how to make pattern languages for any system I build, especially software systems.

I studied urban planning in grad school, but didn't discover Alexander until I learned that my favorite band Phish had modeled their work on a Pattern Language.
There was a horticulture textbook that showed a zoomed-out plot of land on the cover, which with its divisions and sectional diversity effectively looked something like an illustration of the inside of a CPU.

It wasn't intentional as far as I know, but I have to admit that stuck in my head ever since as a really eye-opening metaphor. And the contents of the book were really new to me and even more eye-opening.

Wish I had the name of the book, sorry.

Could it be 'The Self-Sufficient Backyard'? I also remember seeing a CPU at first glance: https://www.amazon.com/-/en/dp/1732557160/
Wow, that's fascinating. It's definitely not the textbook I was using (1990s era design style, quite a bit less decorative and the illustration style was also different) but the effect is similar. I wonder if the illustration on my textbook could have been based on this one.
Maybe it's been read already by anyone here, but Carl Sagan's "The demon-haunted world" turned me into an atheist and made me appreciate much more science and the scientific method in general. The irony part is I got to read it because a the logic teacher in my catholic nun-ruled school suggested it.
This book "opened my eyes" to its contents, but that's not the lesson. It taught me valuable written communications skills I didn't even know I needed.

Kourik, _Drip Irrigation for Every Landscape and All Climates, 2nd Edition_ https://www.amazon.com/Drip-Irrigation-Every-Landscape-Clima...

Picked this up on a whim from the library. I have to say, I couldn't put it down, which was ... odd. It's concise, clear, well-ordered, and humorous at times. The author is humble and he's cross-referenced all his designs with an extensive bibliography.

Obvious answers:

Griffiths - Electromagnetics Chambers - The Western Experience

Rethinking Madness by Dr. Paris Williams.

Helped me to understand psychosis as a natural process, then when supported, results in a more sane, connected and healthier individual — and that that modern medical world is dramatically behind.

Factfulness: Ten Reasons We're Wrong About The World - And Why Things Are Better Than You Think (English Edition) Hans Rosling, Ola Rosling, Anna Rosling Rönnlund

I'm reading this right now and I'm quite surprised by how little I know about the most impactful data on human well-being. The writing is a little bit off sometimes but still worth looking at.

I also liked "Fooled by randomness" by Nassim Taleb. His other writings are good too but I would say this one is the most impactful.

I loved the book when I read it. Unfortunately it's not that great in terms of how it presents the facts (which is ironic due to it's title). Don't want to rain on your parade but you should also look at https://www.researchgate.net/publication/328759928_Good_Thin... for a more balanced view on things and make your own opinion. Keep in mind it's one of BillG's favorite books. It's very well regarded by the 'Everything is fine' gang of capitalists.
Thanks a lot for this clarification with this link. I was actually hoping the book would cover one point discussed in the paper :

2. There is a lack of interest in the material preconditions and ecological consequences of the current techno-economic trajectory and its global diffusion, which the authors tend to extrapolate without qualifications.

So apparently it doesn't cover it very well. Will keep that in mind while reading the book (which nonetheless presents a lot of facts I wasn't aware of).

I don't know about _eye opening_, but The Art of PostgreSQL really changed the way I work for the better. Like a lot of people, I used to be one that would pull all my data into Python for processing, Pandas-style. Once I learned how to do it all directly in PG everything became trivial.

[0] https://theartofpostgresql.com/

Do you have some examples of that ?

I always found that SQL is better for data extraction -- selecting and filtering approximately what I want to analyze.

But for in-depth analysis, R or Python is better. They're just much better languages with more control than SQL.

Even just learning how to use CTEs effectively has been a major improvement for my daily work. Building up a dataset iteratively in clearly defined steps and performing aggregations, transformations, orderings, etc along the way is just a very clean way to work. And it's easy to short-circuit at any step for debugging if you're not getting the results you expect. I often work with datasets larger than the amount of memory on my computer so has benefits there as well instead of trying to load it all into Python memory to work with it.

[0] https://www.postgresql.org/docs/9.1/queries-with.html

Yes CTEs are nice for sure ... But for fine-grained analysis, I still would use them to do any joins I don't want to do on the client, cut down the data size, then export to a "real language" for the details

IMO SQL and tidyverse in R are an ideal combo; this post compares Pandas and tidyverse:

https://www.oilshell.org/blog/2018/11/30.html

I agree that using Python for everything is suboptimal. I'm a big Python user, but for analytics I mostly skip Python, and use SQL and R

What if you need all columns of a few rows, but the rows chosen as the ones satisfying some condition on a few columns across all the rows?

Maybe you could select pk,a,b,c; identify the ones you want in Python; select * where pk in those; and finish doing whatever in Python - but now you've got two round trips to the database.

Obviously that probably doesn't matter if you're doing some 'offline' analytics, but if you're serving a request in a web app it's going to be a lot slower than if you can push that logic into the db, and make a single query.

The Elements of Programming Style by Kernighan and Plauger

Software Tools by Kernighan and Plauger

The Psychology of Computer Programming by Weinberg

A cartoon-illustrated DIY Honda Civic repair book from the 80's I no longer remember the name of.

> cartoon-illustrated DIY Honda Civic repair book from the 80's I no longer remember the name of.

Sounds like the Honda version of “How to Keep Your Volkswagen Alive […] For the Compleat Idiot”.[0]

[0] https://www.ssaircooled.com/vw-how-to-keep-your-vw-alive-com...

+1 for Software Tools by Kernighan and Plauger. It was eye-opening for me because it really made me understand the unix philosophy of composing programs out of smaller programs.
Non-linear dynamics and chaos by Strogatz

https://www.stevenstrogatz.com/books/nonlinear-dynamics-and-...

I literally read it cover to cover like a novel

We used it as a textbook for a graduate level math class at Johns Hopkins. I really appreciated his treatment of the material. It's so accessible, and yet still rigorous enough for advanced math students to get value out of it
Fascinating that there are so many chaos theory texts in this thread.

It seems like this subject lends itself to good textbooks.

The Blind Spot: Lectures On Logic by Jean Yves-Girard

For context, Girard is a mathematical logician, philosopher, and co-discoverer of the type system System F (Haskell, ML, etc.). The book is a monograph on proof theory, and I was interested in learning more about affine and linear logic to deepen my understanding of Rust and other language ecosystems focused around the ability to explicitly model resources. However, along the way, I learned some other great things: (1) continental philosophy is deep and cool; (2) mathematical writing can be simultaneously rigorous, clear, and hilarious; and it reinforced (alongside Alain Connes's Noncommutative Geometry, and various French philosophers) (3) French academic writing is both frustratingly and delightfully idiosyncratic. Girard writes polemically about other aspects of knowledge, mathematics, etc., and there's heaps of dry humor and anecdotes throughout the book. It's a hard book to read even by pure mathematics standards--a topic not exactly known for being a brisk read--but it was worth it just for the side discoveries alone.

I did a double take when I saw "continental philosophy." Usually I don't expect that to be mixed with math, since it's roots are more in the humanities.

How are exactly does continental philosophy factor into these other topics?

Jean Yves-Girard's thinking evolved from analytic philosophy to continental philosophy over the course of his life, and in this book in particular, some of his asides and polemics critique how we conceptualize truth, knowledge, and logic, and how other fields conceptualize that stuff, from a continental perspective. The fact that this kind of stuff turned up in a mathematical logic book of all places really struck me. It put me on a path to taking a more serious interest in the continental school, and reading more of it (currently chewing on Gilles Deleuze and Bruno Latour). It's a very unusual and difficult book, that led me to very different (compared to what I am used to, anyway) modes of thinking.
That is quite fascinating - I was big into continental philosophy in college, especially Deleuze. I might have to check that out!

If you're interested in this stuff, I think you might enjoy Manuel DeLanda - he gives Deleuze a sort of analytic treatment. His book "A New Philosophy of Society: Assemblage Theory and Social Complexity" takes a lot of ideas from A Thousand Plateaus, but makes them clearer and more accessible.

Another suggestion if interested in Deleuze, and more specifically A Thousand Plateaus: someone named Brent Adkins has a great companion for the work. Unless you have extensive experience with the thinkers & ideas referenced in ATP (e.g. Freud, Marx, Nietzsche), I found secondary sources very helpful for setting up context around certain terms and concepts.

Not so much a textbook, but the class NAND to Tetris really opened my eyes as to how computers and OSes work.

Demystifying all that was really helpful for my programming

Second that, is amazing.
Computer Networking: A Top-down Approach by Kurose and Ross
The Elements of Computing Systems: Building a Modern Computer from First Principles [0] [1]

Easily one of the most interesting and engaging textbooks I've read in my entire life. I remember barely doing any work for my day job while I powered through this book for a couple weeks.

Also, another +1 to Operating Systems: Three Easy Pieces [2], which was mentioned in this thread. I read this one cover to cover.

Lastly, Statistical Rethinking [3] really did change the way I think about statistics.

[0] https://www.nand2tetris.org/

[1] https://www.amazon.com/Elements-Computing-Systems-second-Pri...

[2] https://pages.cs.wisc.edu/~remzi/OSTEP/

[3] https://xcelab.net/rm/statistical-rethinking/

Would Statistical Rethinking help me interpret web app metrics? E.g. if I have a canary out and the response times are longer after x requests, is that significant?
I've found that Statistics is one of those topics that changes your world view about everything. You can consider pretty much any issue statistically, and that will enrich your perspective significantly. In that sense, Statistical Rethinking will help. However, it's a book on Bayesian stats, it's quite dense, and examples are coded in R. It may be overkill for web app metrics interpretation. For that you may be better served with basic stats & inference, frequencies, descriptive statistics, percentiles, basic distributions, data visualization (e.g., trend lines, scatter plots, boxplots, histograms), etc.

To be clear though, Statistical Rethinking is a beautiful piece of work. You can check out the author's lectures[0] and see how much they suit your needs.

[0] https://www.youtube.com/playlist?list=PLDcUM9US4XdPz-KxHM4XH...

The book is a bit more foundational than that. It teaches you about Bayesian statistics, and discusses (among other things) why the concept of binary yes/no statistical significance is usually not the best way of evaluating a hypothesis with data.

However, for your question specifically, the choice of prior is less meaningful when you have lots of data, and presumably a web app seeing hundreds or thousands of requests per second can gather enough data to determine if the canary has a different latency profile than the deployed version within a few seconds. Also, presumably you would use an uninformed prior for a test like that. If I were trying to prevent latency regressions in an automated deployment pipeline I would just compare latency samples after 1 minute with a t-test or something simple like that.

Brigham's book on the Fast Fourier Transform was an eye opener for me. Not so much because of the "Fast" part (which is super interesting and useful too) but it was the introduction I needed to make integral transforms and convolution click. And that helped tremendously to connect a whole bunch of other dots.
Code, by Petzold.

Not exactly eye-opening, I sort of knew most of the content, but I don't remember ever having such joy while reading a technical book. Before or since.

I read the whole thing in a holiday (it's a big book, 500 pages or more IIRC), and I am a terrible reader. I was at a place with no internet, so that surely helped a lot.

Same. I read almost half the book in one sitting when I initially picked it up, couldn't put it down.