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.
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?
For me, the eye opening thing was that any n-dimensional body is a transformation of the n-dimensional standard cube. This brings some mathematical consequences I don't understand, but what's important for me is that equations get much easier for the standard cube transformations because your corners are just ones and zeros.
E. g. I wrote an app that "unbends" a book page from a photo so it looks flat. It can be done with a single but rather large transformation, or with a pair of transformations: to and from the standard cube, and each transformation is then much simpler than their composition. 15 years after I learned that trick and 10 years after I wrote an app, I wrote a book called Geometry for Programmers.
If not for Spivak, I would have drowned in equations, never written the app and would have had nothing to write a book about.
I'm entirely failing to envision the process. I want to ask why is the first step (?mapping the book photo to a face of the cube?) is not just restating the original problem, but it's obvious that that question must be missing the point.
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.
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.
>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.
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?
Don Norman's "The Design Of Everyday Things" was very eye-opening for me. It introduced me to a lot of ideas about the human brain, and about how/why we make mistakes.
This will sound stupid, but that book was the first time I encountered the idea that a brain can just straight up miscalculate and make a mistake. No reason, no explanation. Just your thinking meat did the wrong thing.
Really great book. Very entertaining, and a pretty quick read. I'd recommend it to anybody.
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.
A physically beautiful book, carefully crafted and written in a style that's entertaining and brilliantly separated into distinct "phases" such that each chapter adds substantial functionality and doesn't leave the codebase in a broken state. The attention to detail and meticulous documentation of the code is no small feat, and this book delivers like no other.
An absolute joy to work through and provides enough technical detail to provide a good foundation without having to slog through compiler textbooks.
Hands down my favorite programming/software related book.
I already had a strong programming background in Java, C, JavaScript and PHP. I thought an introductory programming class at the Master’s level would be a waste of time. Going through rigorous program design in Racket was a mind expanding experience. I was amazed how much programming we did before reaching the assignment statement (set!) otherwise the first thing taught in typical introductory programming courses.
The format of the class was a big part of the experience though: all assignments pair programmed and then presented to a panel by a randomly chosen member of the pair.
> I was amazed how much programming we did before reaching the assignment statement (set!)
Reminds me of my programming languages course, probably my favorite class in college. Spent nearly a quarter of the course just learning scheme, didn't know if it would pay off even though I was interested, but when various language constructs were introduced through the use of a metacircular interpreter it was eye opening.
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
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.
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.
The Elements of Statistical Learning. This book features some of the most interesting applications of mathematics. It was the likely reason why I started enjoying maths after many years of studying it.
Gilbert Strang's "Introduction to Linear Algebra" made it all click for me. I read it at the beginning of PhD studies and in a few weeks it all made more sense than during all of my Master's studies before.
I was amazed reading that, as I wasn't aware he even lectured anymore. And after googling a bit and finding out he is already 88 years old, I was even more amazed. What an amazing human being, probably many thousands of people in the sciences and engineering owe quite a bit to his life's work.
1) Sakurai and Dirac's textbooks on quantum mechanics.
2) Axler's book on linear algebra. That's when I started to think in terms of vectors as more than the typical "magnitude and direction" concept you are used to in UG physics. It took many years, but I'm finally beginning to apply this to more advanced topics.
3) Concurrency in Action, by Anthony Williams. The training in multithreading aside, that motivated a deeper interest in things like how caches worked or atomics for someone without a CS background like myself. I haven't finished Three Easy Pieces yet, to my eternal shame as I read this thread, but that might also be added on this list by the time I'm complete.
4) On the right-hemisphere side of the brain, books such as Christopher Clark's "Sleepwalkers", Jonathan Smele's treatment of the Russian Civil War, and Richard Thornton's "Odd Man Out" on the Korean War have been useful in teaching me to dig deeper than the standard narrative when looking at history. I'm looking forward to Christopher Goscha's book on Dien Bien Phu and James Howard-Johnston's recent drop on the great final war of classical antiquity in the 7th Century, in a similar vein: both are out, just haven't gotten the chance to digest them yet. Also, Plutarch's Parallel Lives. They aren't "history" in the sense that we know it, but they do teach you that, yes, the lives of famous ancient figures do have lessons that can and should apply to you.
I doubt it is a very effective way to learn the language (though the bizarre vocabulary it teaches has stuck with me), but it is extremely entertaining.
Lessons take the form of cartoon interpretations of ludicrous government reports (evaluating Comrade Borodin's management of the zoopark), academic studies (the surprising link between stealing pencils at work and smoking on the trolleybus), and propaganda literature.
I believe there were cassette tapes that accompanied it originally, though I've never found them anywhere.
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.
The author discusses that often when conflict in communication arises between men/women, it resembles the same tensions in cross-cultural communication.
The author discusses that some communication styles are competitive (with a heavy lens around status and confrontation), other styles are cooperative (with a heavy emphasis on belonging, relatedness, similarities).
The author discusses example of such conflicts. -- One example was, when someone's complaining about a problem, a competitive-oriented mindset typically tries suggest a solution, whereas a related-orient mindset typically shows empathy. Crossing the wires: suggesting a solution might come across an uncaring, and expressing empathy might come across as unhelpful.
[+] [-] jdreaver|2 years ago|reply
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/
[+] [-] electriccatblan|2 years ago|reply
[+] [-] okaleniuk|2 years ago|reply
For me, the eye opening thing was that any n-dimensional body is a transformation of the n-dimensional standard cube. This brings some mathematical consequences I don't understand, but what's important for me is that equations get much easier for the standard cube transformations because your corners are just ones and zeros.
E. g. I wrote an app that "unbends" a book page from a photo so it looks flat. It can be done with a single but rather large transformation, or with a pair of transformations: to and from the standard cube, and each transformation is then much simpler than their composition. 15 years after I learned that trick and 10 years after I wrote an app, I wrote a book called Geometry for Programmers.
If not for Spivak, I would have drowned in equations, never written the app and would have had nothing to write a book about.
[+] [-] cwillu|2 years ago|reply
[+] [-] PTOB|2 years ago|reply
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.
[+] [-] philipswood|2 years ago|reply
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.
[+] [-] dmbche|2 years ago|reply
[+] [-] theOneWhoSmores|2 years ago|reply
[+] [-] shauryamanu|2 years ago|reply
[+] [-] medo-bear|2 years ago|reply
[+] [-] nindalf|2 years ago|reply
- 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)
[+] [-] Xunjin|2 years ago|reply
[+] [-] dstroot|2 years ago|reply
[+] [-] lambdaxymox|2 years ago|reply
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.
[+] [-] ducharmdev|2 years ago|reply
How are exactly does continental philosophy factor into these other topics?
[+] [-] nrclark|2 years ago|reply
This will sound stupid, but that book was the first time I encountered the idea that a brain can just straight up miscalculate and make a mistake. No reason, no explanation. Just your thinking meat did the wrong thing.
Really great book. Very entertaining, and a pretty quick read. I'd recommend it to anybody.
https://www.amazon.com/Design-Everyday-Things-Revised-Expand...
[+] [-] tambourine_man|2 years ago|reply
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.
[+] [-] olalonde|2 years ago|reply
[+] [-] nyarlathotep_|2 years ago|reply
A physically beautiful book, carefully crafted and written in a style that's entertaining and brilliantly separated into distinct "phases" such that each chapter adds substantial functionality and doesn't leave the codebase in a broken state. The attention to detail and meticulous documentation of the code is no small feat, and this book delivers like no other.
An absolute joy to work through and provides enough technical detail to provide a good foundation without having to slog through compiler textbooks.
Hands down my favorite programming/software related book.
[+] [-] wffurr|2 years ago|reply
I already had a strong programming background in Java, C, JavaScript and PHP. I thought an introductory programming class at the Master’s level would be a waste of time. Going through rigorous program design in Racket was a mind expanding experience. I was amazed how much programming we did before reaching the assignment statement (set!) otherwise the first thing taught in typical introductory programming courses.
The format of the class was a big part of the experience though: all assignments pair programmed and then presented to a panel by a randomly chosen member of the pair.
A close second would be PLAI: https://www.plai.org/. As experienced through the Brown University online version of the Design and Implementation of Programming Languages: https://cs.brown.edu/courses/info/csci1730/
It gave me a very thorough and engaging grounding in the various programming language idioms and constructs and how they actually work.
[+] [-] TheFreim|2 years ago|reply
Reminds me of my programming languages course, probably my favorite class in college. Spent nearly a quarter of the course just learning scheme, didn't know if it would pay off even though I was interested, but when various language constructs were introduced through the use of a metacircular interpreter it was eye opening.
[+] [-] adamddev1|2 years ago|reply
[+] [-] optbuild|2 years ago|reply
[+] [-] tdba|2 years ago|reply
https://www.stevenstrogatz.com/books/nonlinear-dynamics-and-...
I literally read it cover to cover like a novel
[+] [-] actinium226|2 years ago|reply
[+] [-] jrumbut|2 years ago|reply
It seems like this subject lends itself to good textbooks.
[+] [-] bckmn|2 years ago|reply
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.
[+] [-] ada1981|2 years ago|reply
[+] [-] Gualdrapo|2 years ago|reply
[+] [-] zvolsky|2 years ago|reply
https://hastie.su.domains/Papers/ESLII.pdf
[+] [-] __rito__|2 years ago|reply
While I really like Machine Learning, it has made me fall in love with Mathematics much more.
[+] [-] juujian|2 years ago|reply
[+] [-] actinium226|2 years ago|reply
Demystifying all that was really helpful for my programming
[+] [-] ChatGTP|2 years ago|reply
[+] [-] mk67|2 years ago|reply
Coincidentally to this question, he will live stream his final lecture on Monday: https://grinfeld.org/strang/
I was amazed reading that, as I wasn't aware he even lectured anymore. And after googling a bit and finding out he is already 88 years old, I was even more amazed. What an amazing human being, probably many thousands of people in the sciences and engineering owe quite a bit to his life's work.
[+] [-] fm2606|2 years ago|reply
M.I.T's OCW containing the same videos: https://ocw.mit.edu/courses/18-06-linear-algebra-spring-2010...
[+] [-] AprilPhoenix|2 years ago|reply
2) Axler's book on linear algebra. That's when I started to think in terms of vectors as more than the typical "magnitude and direction" concept you are used to in UG physics. It took many years, but I'm finally beginning to apply this to more advanced topics.
3) Concurrency in Action, by Anthony Williams. The training in multithreading aside, that motivated a deeper interest in things like how caches worked or atomics for someone without a CS background like myself. I haven't finished Three Easy Pieces yet, to my eternal shame as I read this thread, but that might also be added on this list by the time I'm complete.
4) On the right-hemisphere side of the brain, books such as Christopher Clark's "Sleepwalkers", Jonathan Smele's treatment of the Russian Civil War, and Richard Thornton's "Odd Man Out" on the Korean War have been useful in teaching me to dig deeper than the standard narrative when looking at history. I'm looking forward to Christopher Goscha's book on Dien Bien Phu and James Howard-Johnston's recent drop on the great final war of classical antiquity in the 7th Century, in a similar vein: both are out, just haven't gotten the chance to digest them yet. Also, Plutarch's Parallel Lives. They aren't "history" in the sense that we know it, but they do teach you that, yes, the lives of famous ancient figures do have lessons that can and should apply to you.
[+] [-] jrumbut|2 years ago|reply
I doubt it is a very effective way to learn the language (though the bizarre vocabulary it teaches has stuck with me), but it is extremely entertaining.
Lessons take the form of cartoon interpretations of ludicrous government reports (evaluating Comrade Borodin's management of the zoopark), academic studies (the surprising link between stealing pencils at work and smoking on the trolleybus), and propaganda literature.
I believe there were cassette tapes that accompanied it originally, though I've never found them anywhere.
[+] [-] VWWHFSfQ|2 years ago|reply
[0] https://theartofpostgresql.com/
[+] [-] chubot|2 years ago|reply
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.
[+] [-] rgoulter|2 years ago|reply
The author discusses that often when conflict in communication arises between men/women, it resembles the same tensions in cross-cultural communication.
The author discusses that some communication styles are competitive (with a heavy lens around status and confrontation), other styles are cooperative (with a heavy emphasis on belonging, relatedness, similarities).
The author discusses example of such conflicts. -- One example was, when someone's complaining about a problem, a competitive-oriented mindset typically tries suggest a solution, whereas a related-orient mindset typically shows empathy. Crossing the wires: suggesting a solution might come across an uncaring, and expressing empathy might come across as unhelpful.
[+] [-] kortilla|2 years ago|reply