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.
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.
Most communications are not contained within a transactional context. If your mother asks "what car should I buy?", responding with "you should buy X because Y" might be 'correct' but what if she was actually reaching out, and that she doesn't actually need a car but it just 'feels' like it'd help?
In such a case you'd be rejecting her attempt at creating belongingness and a chance for empathy ("why do you need a new car mum? what happened?") and instead hit her with a status ("I know more about this than you") and confrontation ("I have resolved what I thought the situation was so now this conversation is over").
This is at least my interpretation of the terminology. If your question wasn't searching for a solution but instead you were reaching out to feel like your perspective belongs, then I apologise if I come across as confrontational, and I do not mean to imply I know more or less than you about the topic.
It's not likely an inexperienced junior will be able to offer meaningful suggestions of improvement to an experienced senior. If the junior makes suggestions to the senior, it's possible the senior will feel disrespected, or that his seniority/experience isn't acknowledged/appreciated. -- By making a suggestion, you're implying that the recipient doesn't know about (or didn't think about) it.
If someone asks for help and doesn't receive it.. it's like they're -1, and not being given a +1.
I don't think author's point is as concrete as "giving help = status related". Just more of an observation that, sometimes people get upset in communication, and mismatching expectations (different cultural styles) around that lead to stepping on toes.
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...
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...
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.
- 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)
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.
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.
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.
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.
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.
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.
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...
My wife and I actually managed a DIY clutch job thanks to that book, which was far better than any other service manual I ever saw.
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.
Don't let the word "cube" confuse you, a 2D-cube is just a square.
I have the full explanation right here if you're interested: https://wordsandbuttons.online/biwhatever_transformations.ht...
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.
How are exactly does continental philosophy factor into these other topics?
https://www.stevenstrogatz.com/books/nonlinear-dynamics-and-...
I literally read it cover to cover like a novel
It seems like this subject lends itself to good textbooks.
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.
- Algorithms by S. Dasgupta, C. H. Papadimitriou, and U. V. Vazirani. -- compact book that goes from the basics to divide-and-conquer, graphs, dynamic programming, linear programming, NP-completeness, and Quantum.
It is so compact, crisp, and enjoyable to read despite containing a lot of Math.
I was surprised when I was reading this book, it was so great to read.
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.
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).
Not disparaging, I appreciate you sharing a recommendation. I just found the observation funny.
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.
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.
Demystifying all that was really helpful for my programming
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.
M.I.T's OCW containing the same videos: https://ocw.mit.edu/courses/18-06-linear-algebra-spring-2010...
How to Solve It, by Georg Polya. A famous Hungarian mathematician. A text on general problem solving principles or techniques. A classic.
How to Solve It by Computer, by Dromey, an AU CS professor. In the same spirit as the Polya book, but applied to iteratively working out algorithms and pseudocode for common important programming problems.
The K&R C book. What to say.
The Unix Programming Environment, by Kernighan and Pike. Ditto.
Programming Pearls, and More Programming Pearls, by Jon Bentley. Among many other things, some clever / advanced uses of awk.
Writing Efficient Programs, also by Bentley. I had mentioned it on HN earlier, and someone replied saying they had used it in real life, and it was gold.
SQL for Professionals, by authors whose names I forget.
The Object Primer, by can't remember who, but good.
A Unix book by Kochan, IIRC.
Object-Oriented Software Construction, by Bertrand Meyer, creator of the Eiffel programming language.
A book on object-oriented analysis / design, can't remember the name, by Rebecca Wirfs-Brock (?) and others. Learned about CRC cards from it. Very cool concept and technique.
A book on Object-Oriented Design, by Grady Booch, from a time before he co-invented UML. Forget the exact name.
https://www.amazon.in/Sql-Professionals-Swapna-Kishore/dp/00...
https://www.amazon.in/Object-Primer-Agile-Model-Driven-Devel...
https://www.amazon.in/Unix-Shell-Programming-Stephen-Kochan/...
https://www.amazon.in/Designing-Object-Oriented-Software-Reb...
https://www.amazon.in/Object-Oriented-Analysis-Applications-...
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.
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...
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.
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.
- SICP (Structure and Interpretation of Computer Programs), this one is controversial, but getting to the end and actually building the interpreter made me see that seemingly complex programs like compilers and interpreters are just other programs and quite similar to the ones that I was used to writing. The other effect of this on me was learning about powerful abstractions. It felt smooth to follow along and build the interpreter because the abstractions in the book followed a logical progression. I want the other complex programs I write to seem just as simple.
- Software Foundations: Logical Foundations. Writing programs as proofs was fascinating. It felt like mathematical mumbo jumbo before but actually trying it out removed the magic and it became more obvious how programs and formal proofs could go hand-in-hand. The impact of this book wasn't as generic as the other two. Maybe one benefit of seeing programs as proofs is that by trying to write programs that can be proved easily, we write programs that are actually simple to reason about and explain to someone else.
Introduction to the Theory of Computation by Michael Sipser
The classic Hennessy and Patterson: Computer Architecture: A Quantitative Approach
Gray & Reuter: Transaction Processing: Concepts and Techniques
I also think the Gang of Four book always was and still is a tremendously useful read.
& SICP, natch.
The Dictator's Handbook: Why Bad Behavior is Almost Always Good Politics (by Bruce Bueno de Mesquita, Alastair Smith)
https://www.amazon.com/Dictators-Handbook-Behavior-Almost-Po...
After reading that paper I got the idea that it is not worth it to pursue a carrier in physics, because soon the AI will come and solve all the scientific problems in one second. I switched to programming and AI research. 41 year later, the idea turned out to be wrong, but at least I made good dough.
https://www.algorithmsilluminated.org/
The author even shares free video classes and other extra material.
I found the explanations for the geometry part excellent.
https://openlibrary.org/books/OL8012300M/Precalculus_mathema...
Introduces calculus using vectors from the second chapter. For me, it was a very natural and intuitive introduction to the topic.
I came across this Physics textbook in Junior year in High School.
Before reading this book, Physics, and Science in general, was merely "better subjects" for me, and tools to top the class, frontiers where I could excel, and by remembering formulas.
This is the first time when reading something was really, truly fun.
This was the first time I had the pleasure in learning.
My whole outlook towards learning changed. Learning should be fun. And this has served greatly in my life.
This book not only made Physics enjoyable, but instilled in me a lifelong attitude of fun in learning and expecting fun in learning.
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.
393 points|tomrod|1 year ago|522 comments
Took me off the hook of retail trading for the rest of my life.
This book shocked me with the idea of a universal computer:-)
"..there is really only one kind of computer .. all kinds of computers are alike in what they can and cannot do"
".. any computing device, whether it’s built of transistors, sticks and strings, or neurons, can be simulated by a universal computer."
".. making a computer think like a brain is just a matter of programming it correctly."
[1] https://www.amazon.com/Pattern-Stone-Computers-Science-Maste...
Other than that, basically all of them to some degree.
Later I read DPV and it was great, too.
* "An Introduction to Statistical Learning" by James, Witte, Hastie, and Tibshirani: possibly the best intro to the topic I've seen.
* "Introduction to Linear Algebra" by Gilbert Strang: possibly the best intro to the topic I've seen.
Also, here are some books that are not properly textbooks but could be used as such:
* "Robot: Mere Machine to Transcendent Mind" by Hans Moravec: remarkably prescient, in hindsight.
* "On the Origin of Species" by Charles Darwin: I was surprised at how readable it is.
* "The Selfish Gene" by Richard Dawkins: It made me question a lot about a lot.
* "The Better Angels of Our Nature" by Steven Pinker: I was shocked at the violence in our past.
* "Gödel, Escher, Bach" by Doug Hofstadter: an intellectual tour de force.
1. Mathematics and Plausible Reasoning by George Pólya
2. Probability Theory: The Logic of Science by E.T. Jaynes
At the time I thought it was satire, or at least tongue-in-cheek. But it's nowadays treated very seriously by neo-liberal nutters. I guess I was wrong.
Engrossing, interesting, even funny. I read it as a teenager in a Spanish translation and couldn't put it away.
Griffiths - Electromagnetics Chambers - The Western Experience