# Technical Books I ❤️

A lot of the “classics” or “bibles” I often see recommended are as exciting to read as dictionaries so I decided to write the list I wish someone else wrote when I was getting started.

**Electronics**

Practical Electronics for Makers — a comprehensive introduction to all aspects of electronics where each topic is explained very succinctly. You’re not supposed to just sit down and read the whole thing, the chapters are written independently of each other so you can decide whether today you wanna learn about electromagnetics, circuit design, filters and micro-controllers. The Art of Electronics is another similar comprehensive book that goes a bit deeper than the first book but to be honest I have a hard time reading it.

**Mechanical Engineering**

Structures: Or Why Things Don’t Fall Down — Before you understand how moving bodies work, it’s worth understanding how static bodies work. Felt like a condense undergraduate degree in civil engineering and material sciences.

Infrastructure — we often take for granted the modern infrastructure that helps keep us alive in our cozy apartments. This has been my favorite coffee table which I’ve repeatedly come back to learn how mines, sewage plants, power grid, oil drills and everything in our concrete jungle actually works.

Embedded Computing and Mechatronics with the PIC32 Microcontroller — robots involve software, electronics and mechanical engineering so this is a rare book that will help you really understand how sensors and joints work really work without treating them as abstractions. You’ll also learn more about deploying robots in the real world.

The Handbook of Model Rocketry — will give you all the tools you need to build aerial or aquatic robots since they both use propulsion systems. Granted these are more complicated than land based robots and will often be single use unless you’re smart about it.

**Robotics Math**

Modern Robotics: Mechanics, Planning, and Control — if you abstract away a robot mathematically what you’re left with is a bunch of limbs connected by joints that need to move and rotate in space to achieve some goals. Turns out you really need some higher level math to represent this stuff and this book is the best introduction to Lie Groups and Screw Theory that I’ve read. This book also comes with extremely short and clear Python, Julia and C++ libraries which implements everything. There’s also some chapters on path planning, PID controllers and SLAM but for those specific topics I preferred Planning Algorithms.

*“Pure” *Math

*“Pure”*Math

Mathematics and Its History — it’s generally hard to figure out what you’d use some type of math for and why you’d justify learning it without knowing a possible application. I’ve found it really helps to look at the history of why a technique was developed.

**Abstract Algebra**

The emphasis on pure is because I believe that mathematical areas that are considered too “abstract” today are actually already applied in Physics and Robotics. These techniques are also making their way to Machine Learning.

Visual Group Theory — my favorite abstract math book. There’s a mistaken assumption that algebraic proofs are more rigorous than visual ones. Just read Elements of Euclid by Byrne to convince yourself otherwise in the simple case of Euclidean Geometry. That said the Visual approach also applies to much more complicated mathematical structures and Visual Group Theory will give you beautiful diagrams which you can also play around with online.

Algebra Chapter 0 — is a comprehensive introduction to Abstract Algebra where most of the proofs are done using Category Theory. While this may initially sound convoluted, consider that most of the proofs ending shrinking considerably in length relative to other “classics”.

An Invitation to Applied Category Theory: Seven Sketches in Compositionality — Category Theorists often joke that they work on Abstract nonsense but really what they work on is the study of compositionality which shows up computational graphs like circuits and neural networks and mathematical proofs. Learning Category Theory is a lot like learning programming, you’ll be able to express proofs in a much more succinct way after investing some time learning the new opaque terminology.

**Analysis**

Visual Complex Analysis and Visual Complex Functions (notice a pattern?) both have some of the wildest diagrams I’ve ever seen. Complex numbers initially have this weird mysterious property. The mystery will be replaced by awe every-time you open either book.

A Visual Introduction to Differential Forms and Calculus on Manifolds — how I wish that this was my intro Calculus book instead of the opaque mess I had to work with. I probably don’t need to tell you that calculus is really useful and as Machine Learning practitioners look to solve problems more complex than ∂x² you probably won’t regret finally understanding Calculus.

**Topology**

Topology Illustrated — contains an almost endless amount of examples that are beautifully drawn so that topological ideas really stick with you. Topology is already used to model the configuration space of robots and is starting become more popular in data analysis.

Elementary Applied Topology — this is a unique math book in that it doesn’t mind being hand-wavy to make a point clearer BUT if you read this while also checking out details in Wikipedia or Youtube you’ll find it has some particularly good examples of the applications of Algebraic Topology which other books don’t seem to think is all that important.

## Computational Math

Linear Algebra Done Right — you’re doing to need Linear Algebra for pretty much any scientific computing. Intro classes usually introduce matrices as sort of containers for equations and this analogy makes it challenging to figure out why certain properties hold for matrices. If you think of a matrix as a linear map between spaces, it becomes far easier to think about them.

Geometric Algebra for Computer Scientists — some stuff in Linear Algebra just doesn't’ make much sense. Why do determinants only work for square matrices? Why do cross product not work in high dimensions? Turns out Geometric Algebra is a different formalism that can model geometric problems including data and topology in a far more natural manner. The book comes with a GA library which is easy to play around with so you’re not fooled by complicated looking formulas.

Non Linear Dynamics and Chaos — even small systems can exhibit chaotic behavior so it’s important to understand how to solve them and visualize them. The solved problems in this book are exceptionally good and its filled with beautiful images that’ll make you a pro at dealing with pendulums. Robotic motion is an example of a non linear chaotic system.

Purely Functional Data Structures— admittedly this is an odd recommendation especially for a section on computational math. That said, functional programming is a much more natural paradigm in scientific code vs systems code. After I read this book I finally understood how Spark works and have since been able to enjoy reading short and powerful Haskell code for science. An amazing example is Automatic Differentiation in Haskell

Algorithms for Optimization — I used to recommend Convex Optimization but have started recommending this one. The two books are similar, clear Julia code, clear math but Algorithms for Optimization is a LOT shorter and similarly good. Minimizing a function is actually pretty complicated business and in fact a lot of modern Machine Learning research focuses heavily on optimization.

**Computer Science Theory**

Computational Complexity — what’s P vs NP? What does Quantum do to cryptography? What are the other complexity classes? This book is fantastic you’ll a really nice sneak peek at how CS theorists tackle hard problems in computation.

Quantum Computing Since Democritus — this is the best I recommend to people telling me they want to learn more about math. It’s by far the most accessible introduction to Quantum Computing but also Computational Complexity that I’ve ever read. It’s more mathematical and less rambly than something like Godel, Escher & Bach.

Elements of Information Theory — how does the layer between hardware and software really work? What does information really mean?

**Physics**

To really understand electronics and mechanics you need to at least have a basic understanding of Physics. I’ll often see books by Susskind like The Theoretical Minimum: What You Need to Know to Start Doing Physics or the Feynman Lectures but those books never did it for me since I couldn’t figure out how to turn the equations into code I could visualize while the below list did.

Extension of Man — similar to Mathematics and Its History this is a very short book that motivates most of the discoveries and inventions in Physics so you’ll have great context when you read any of the below. Unfortunately it seems like it’s sold out on Amazon right now, so I’ll update this link if/when it become available again.

No-Nonsense Classical Mechanics — goes over the Lagrangian and Hamiltonian formulations of classical mechanics which ends up being a lot more powerful and easier to program than Newtonian mechanics. This book is part of an entire series including Quantum Mechanics and Magnetism, I haven’t read the other books yet so I’ll review when I’m done with them.

Structure and Interpretation of Classical Mechanics — designs a domain specific language to do Lagrangian physics in LISP. Another book by the same authors Structure and Interpretation of Computer Programs is incredibly popular on forums like Hacker News but SICM is special because it shows you how you can solve problems by designing a custom programming language for them.

Nature of Code — if you’d like to start better understanding how physics engines or how to model biological processes this is an amazing book with simple code and explanations that you can run in your browser.

## Biology

Journey to the Ants — we have a tendency to believe that humans are the most advanced species on earth but ants outnumber us by far. A colony is a distributed system over thousands of ants that can regulate movement, sex and war. Queens have sperm banks. Ants can instinctually find pillars in underground colonies, demolish them and entomb an entire enemy colony. Read this and get inspired.

Machinery of Life — best biology book I’ve ever read. Biology books have a tendency to read like latin dictionaries where layers upon layers are facts are dumped upon the reader. This book instead visually shows you what a protein or virus or bacteria looks like — often it’s just the structure of an object that determines its function and once you remember the shapes of biological organisms you’ll be in awe and never forget the function

DNA: The Story of the Genetic Revolution — Instead of memorizing information dumps, genes make a lot more sense if you study the history and the first principle thinking that pioneers like Watson and Crick had to engage in to open up the floodgates of biological programming

**Machine Learning**

Data Science from Scratch — an incredibly well written applied book where you start from implementing a basic linear algebra library from scratch all the way to deep neural networks, by the end of this book you won’t know all current research developments in Machine Learning but you’ll be well equipped to understand most of them.

Pattern Recognition for Machine Learning — this is a comprehensive text but it still reads really well. Read the first couple of chapters and you’ll have a great understanding of how Machine Learning theory works and you can slowly get back to the later ones as you get interested in them.

Deep Learning with Python — covers all kinds of different deep learning algorithms. The code is very readable here as it’s written by the inventor of Keras, the first deep learning library that had a sane API.

Designing Data Intensive Applications — there’s not all that many systems books in this list. Generally the best systems books I’ve read were the documentation of really well maintained open source products BUT this book is a rare exception. It covers all performance related questions you may have around data systems, it’s especially good at highlighting the various trade-offs between systems you may pick. This book helps me detect BS in product announcements.

All of Statistics — this is my favorite theoretical book about data. Whenever there’s some concept in statistics I’m fuzzy on, this is the book I come back to for extremely short and clear explanations and proofs.

Statistical Rethinking — if you pick up any book on Bayesian Statistics, they usually pummel you with proof after proof all the while promising you that once you get it your whole worldview will change. This book on the other hand makes it clear that Bayesian analysis is a computational technique and is a literate programming book written in R filled with code and beautiful figures that’ll make everything click. If you don’t like R you’ll find an entire community of people that have ported this book to other languages including Python and Julia. I spent about 8 years thinking Bayesian techniques were overrated, this book changed my mind.

Statistical Consequences of Fat Tails — this book is a technical summary of all the ideas that Nassim Taleb discusses in his book. Everyone understands that most real world phenomena can’t be analyzed via Gaussians but they continue doing so because the proofs are nice and convenient. This book provides proofs, figures and intuition as to how to work with Fat Tails.

Deep Learning and the Game of Go — I would recommend this book over the classic Reinforcement Learning: An Introduction. Many Reinforcement Learning references spend way more time on algorithms vs the rest of the pipeline you need to get a real world system that uses RL. I would also recommend this book as the best introduction to Machine Learning for people that know how to code. You’ll see different RL algorithms, learn how to generate training data even when your problem isn’t a supervised learning problem and deploy your agent online so others can play against it.

**Computer Graphics**

Introduction to the Mathematics of Computer Graphics — written by the same author of my favorite math book Visual Group Theory. This is a computer graphics book that can be understood by non computer scientists but also seems to cover all the important topics. Invaluable and beautiful book.

Computer Vision — to really understand vision you need to understand projective geometry and how to project a scene from 3-d to a 2-d screen. This book covers various pre-deep learning techniques. I especially loved the sections on photogrammetry which is about going from a 2-d image to a 3-d scene which lets you do stuff like import your furniture into VR so that you don’t bump into stuff.

Physically Based Rendering — honestly I find this book difficult but by the end of it you do build an entire physically based rendering engine to generate photo-realistic images. The book is also written in a literate style so the book itself is the engine. AFAIK this is the only book on this list that’s won an Oscar

## Game Programming

Foundations of Game Engine Development — part 1 of an incomplete 4 part series on building game engines. The book has particularly good diagrams and clear code that explain how the entire game engine pipeline works.

Game Programming Patterns — this is the book that made me understand Design patterns, the first one I was recommended was Design Patterns which is quintessential example of a book that reads like a dictionary. Games involve simulating and rendering tons of objects and their interactions and it quickly becomes impossible to add features to a messy core code base.

Game Hacking — hacking for ethical purposes is invaluable. You’ll learn about the basics you’ll need to reverse engineer how certain features you like in games are implemented and you can use this to inspire your own implementation.

Doom/Wolfenstein Black books — the 2 books in this series define a genre of programming books I like to call programming archaeology. It’s humbling to see what the old pros like Carmack had to do to build a fast 3-d game in a time where computers pretty much were spreadsheet machines.

Multiplayer Game Programming — made me finally understand how computer networking works. A slow website sucks but is still usable a slow game is unusable so there’s a lot all system maintainers can learn from multiplayer games.

**Game Theory**

Game-Theoretic Foundations for Probability and Finance — I’ve heard many times a sentence along the lines of “*to REALLY get Machine Learning you need to study Measure Theory*” but I always found the analogies to sets more confusing than helpful. Fortunately, you can derive most theorems from Probability Theory using Game Theory instead and you end up with shorter and far more intuitive proofs. Probability Theory was invented to solve gambling problems so why not have a theory that better reflects this foundation?

Multiagent systems — not only is this the best game theory text I know of, it also does a good job of introducing many more complex topics like trust, voting, auctions among others. This makes ideal if you wanna learn more about the kinds of incentives that cryptocurrencies enforce.

Skin in the Game — this is probably the easiest read in this list because it’s a not textbook. By the same author of the Black Swan, Skin in the Game goes over the various heuristics that different societies have used to govern themselves in a distributed way. After I read this book I became obsessed and angry anytime I would notice someone be in a position where they have unlimited upside when things are going well and no skin in the game when things are going south.

## Design

At the end of the day, regardless of how complex the internals of a robot are you still wanna design something that you and others will love using.

Design of everyday things — this book changes the way you see the world. You’ll be able to pinpoint why you liked or disliked certain products and if you get rid of your ego, you’ll be able to do the same for any product you build.

Tufte’s 3 best books are The Visual Display of Quantitative Information, Envisioning Information and Visual Explanations: Images and Quantities, Evidence and Narrative and they’ll teach you how to explain stuff really well whether its text, a graph or an illustration.

Don’t Make Me Think — this book pretends to be about making websites clearer but really it’s about making your product clearer. Everything your users interact with from your packaging, to hardware, to API documentation to code needs to evoke joy.

Understanding Comics — a comic explaining why comics can be so popular. You’ll learn a lot about how to present information in a way that you can evoke certain emotions from a reader. This book isn’t really about comics but about storytelling in general and it reminds about another book which isn’t really about what its title suggests Impro: Improvisation and the Theater.

Theory of Fun — there’s just an insane amount of books on designing video games and board games almost all of them read like dictionaries and just pull out random examples from popular games and call it a DESIGN PRINCIPLE. This book on the other hand is a comic that gets to the root of what makes things fun and why we play.

# Next steps

If you enjoyed any of the above books please let me know about it.

If you have any books you love but haven’t seen in this list please let me know about it.

If you’re still on the fence about any of these books let me know how I can convince you to buy them. Remember all of them combined are cheaper than a semester of your university education and will give you enough information to last a lifetime.

If you found any of these books interesting you’ll probably like my book The Robot Overlord Manual.