My Reading List01 Jan 2001
My recommended readings.
The books I’ve listed here are some of the most useful and eye-opening that I’ve gone through. I’ve read everything on this list and won’t add anything here unless I’ve read it myself.
The lists are in the order they I would read them if starting from scratch.
If you have books that you think I should read or add to this list, feel free to let me know!
This is my recommended reading list for pretty much anyone.
- 1984 by George Orwell
- Economics in One Lesson by Henry Hazlitt
- The Quest for Cosmic Justice by Thomas Sowell
- The Righteous Mind: Why Good People Are Divided by Politics and Religion by Jonathan Haidt
I think every programmer should read these books, they are each so great and so important. They will take you from building a computer from the ground up, to writing clean maintainable code, designing it well, and then making it efficient. You then go on to start thinking about the kinds of problems that computers can actually solve, and what the limits are.
- CODE by Charles Petzold
- Code Complete 2 by Steve McConnell
- Design Patterns: Elements of Reusable Object-Oriented Software by John Vlissides, Richard Helm, Ralph Johnson, and Erich Gamma
- The Algorithm Design Manual, 2nd Ed. by Steven Skiena
- Quantum Computing Since Democritus by Scott Aaronson
Others that are good
- Grokking Algorithms by Aditya Bhargava
- Debugging by David J. Agans
- The C Programming Language by Brian Kernighan and Dennis Ritchie
- Neural Networks and Deep Learning by Michael Nielsen
- Team Geek by Brian Fitzpatrick and Ben Sussman
- An Introduction to Programming with Threads by Andrew Birrell
- Algorithms for Scalable Synchronization on Shared Memory Multiprocessors by John M. Mellor-Crummey and Michael L. Scott
- MapReduce: Simplified Data Processing on Large Clusters by Jeffrey Dean and Sanjay Ghemawat
There are a few web resources that are worth taking a look through.
This course by UAlberta on Design Patterns is really helpful for understanding how to structure clean software, and you should take it before you write code for anyone.
it’s really hard to find physics books that don’t feel like they’re going over the same concepts again and again.
- A Brief History of Time by Steven Hawking
- Six Easy Pieces by Richard Feynman
- Six Not So Easy Pieces by Richard Feynman
- QED by Richard Feynman
- The Apology by Plato
- The Practicing Stoic: A Philosophical User’s Manual by Ward Farnsworth
- The Re/public by Plato
- Meditations by Marcus Aurelius
- Groundwork of the Metaphysic of Morals by Immanuel Kant
- Tom Sawyer by Mark Twain
- Huckleberry Finn by Mark Twain
These are books that I thought were really interesting, a good learning experience, or just a fun read.
- On Liberty by John Stuart Mill, specifically chapter 2. Some of the best arguments on free speech ever written.
- Improvise by Mick Napier
- The Enchiridion by Epictetus
- The Indisputable Existence of Santa Claus
- The United States of Absurdity by Dave Anthony and Gareth Reynolds
- Thus Spoke Zarathustra by Friedrich Nietchze
- A People’s History of the Supreme Court by Peter Irons
- Born a Crime by Trevor Noah
- Gaming the Vote: Why Elections Aren’t Fair by William Poundstone*
Before you get start attacking me, this is a book about the mathematics of voting systems and how they can be improved upon.
- The Euthyphro by Plato
- The Federalist Papers by Alexander Hamilton, James Madison, and John Jay
In the federalist papers I recommend specifically:
[10, 28, 29, 71, 78, 79, 80, 81]. Those are the most important ones.
- Classical English Rhetoric by Ward Farnsworth
These are the MOOC’s I’ve taken that I think are worth going through. Feel free to pick and choose, I recommend everything here.
- Introduction to American Law
Really interesting overview of the basics of a few different types of law. Everyone should take this course.
- Introduction to Key Constitutional Concepts and Supreme Court Cases
I found it interesting, and a fun overview of the history.
- Design Patterns
This is a GREAT course if you’ve never really done (or been forced to do) proper object oriented programming before Lots of widely used terms and an understanding of good design patterns is great.
- Software Architecture
Not as useful of a course if you already have some experience but it filled a few gaps in my knowledge