Here's part six of my favorite programming, mathematics, physics and science books.
Quick intro for anyone joining: I've been collecting and researching scientific books for more than 15 years, since early 2000s. I'm really passionate about high quality books. For every great book there are a thousand sloppy ones and I want nothing to do with them. I'm only interested in truly mind-changing books. I wouldn't recommend a book that I don't trust is really well written. That just wouldn't be me. I want people to read these books so we can have interesting conversations.
This time I'm sharing my favorite books about number theory, unix philosophy, computation theory, computer security and symmetry. If you're interested in this article series, you can subscribe to rss feed of my blog and follow me on twitter for updates.
Here are this week's five books.
#26 Primes of the Form x²+ny²
This is the most fun math book that you've never heard of. It addresses the most interesting question ever:
Given a positive integer n, which primes p can be expressed in the form p=x²+ny² where x and y are integers?
Holy crap! That is so interesting. I was jumping when I got this book. What primes can be expressed in this form? Tell me! Tell me quick I want to know! Tell me! Tell me! Tell me! Tell me!
This book answers this question completely and along the way you will encounter some remarkably rich areas of number theory. It starts with a historic overview of how this problem came to be and solution attempts to similar problems by Fermat, Euler, Lagrange, Legendre and Gauss. You'll learn about quadratic reciprocity and bridge the gap between between elementary number theory and class field theory. At the end of the book you'll learn how to find a constructive solution of p=x²+ny² using modular functions and elliptic curves.
I get obsessed with problems like this and can spend weeks on end figuring out every tiny obscure detail. I've only read 1/5 of it so far and it's most excellent. It's not a textbook but has fun exercises and a bunch of insight connecting various branches of math that no other book connects so elegantly. As soon as I free up I'll power through the rest of it. I'll quit facebook, twitter, email and just read this book and ignore everyone. It will be just me and this book for a few weeks.
I wish there were more math books like this. There are a couple more similar books but none are as exciting. I'll share them later in the series.
Author: David A. Cox.
#27 The Unix Philosophy
This is one of the most important books about software development ever written. This book is not about how to write software but about philosophy of writing software the Unix way. You will only appreciate this book after a decade in software industry. I remember reading it when I was like 15 and I thought cool but only a decade later I started appreciating philosophical principles laid out in this book.
- Small is beautiful.
- Make each program do one thing well.
- Build a prototype as soon as possible.
- Choose portability over efficiency.
- Store data in flat text files.
- Use software leverage to your advantage.
- Use shell scripts to increase leverage and portability.
- Avoid captive user interfaces.
- Make every program a filter.
I try to follow most of Unix philosophy closely when writing my software. I write tiny utilities that do one thing and only one thing well. I ignore frameworks as they're bloatware that do all the things. I build prototypes as soon as possible and show it to everyone, get feedback and quickly iterate to make it a finished program. I don't care much about portability. I store data in text files and sqlite databases. I leverage helper libraries and utilities but I don't leverage frameworks or larger code pieces that can often be rewritten in 90 lines of code to have 90% of their functionality and you don't need the remaining 10% anyway. I use shell scripts exclusively to connect my programs. I avoid captive user interfaces. I sometimes make my programs a filter and sometimes I don't. Sometimes making programs to filter data don't make sense.
This is one of ten books that I give to new employees as a greeting gift when they start working at Browserling. They can choose 9 other books from my 100+ book list but I force everyone who works at Browserling to read this book as we've an incredible Unix culture at Browserling. If you haven't read this book, you will have trouble understanding the culture and fitting in.
There are several more tenets, ideas which tend to be part of the Unix world's belief system and that are part of Unix culture. Here are a few that matter:
- Allow the user to tailor the environment.
- Use lower case and keep it short.
- Silence is golden.
- Think parallel.
- The sum of the parts is greater than the whole.
- Look for the 90% solution.
- Worse is better.
- Think hierarchically.
I won't comment on these as this book review is taking over the entire post but you can look into these on your own. These are really beautiful and it takes many years to appreciate them and incorporate them in your thinking and how you get things done.
A newer version of this book exists called Linux and the UNIX Philosophy. I don't have it but I just ordered it as I was writing this text.
Author: Mike Gancarz.
#28 A Little Java, A Few Patterns (0th Edition)
Here we go again! The last book in The Little X series. In parts one, two, three, four and five I listed The Little Schemer, The Seasoned Schemer, The Reasoned Schemer, The Little MLer, The Little Prover, and now it's time for the last adventure with A Little Java, A Few Patterns.
Just like all other books in the series, this fun little book is a dialog between the authors and the reader. This style of writing is called Socratic teaching method. The Socratic method is probably the most effect way to teach new concepts because it's an on-going dialog that keeps you engaged. I wish more books were written this way. I'll have to fix this situation by writing a couple books in this style myself.
This book has nothing to do with learning Java. It's about having a fun adventure in the world of computation. Authors don't really care about Java. No one in the world cares about Java. The authors want you to think about computation using object-oriented concepts - classes, interfaces, methods, inheritance, objects, and recursion. Truly mastering programming requires understanding the nature of computation and this book teaches exactly that. It doesn't teach Java. It teaches computation. If you want to, you can go ahead and learn Java later or you can learn C++, or Objective C. The knowledge you'll gain from this book will help you master any object oriented language 200x quicker than by reading conventional books written by authors who have no appreciation or understanding of computation theory.
I'm waiting for authors to write a new book now! The Little Prover that I shared last time was excellent and I want authors to top that! Do a book purely on set theory and build up computation based on sets. Do a book on modern theory of computation that starts with alphabets, builds automata, builds turing machines, shows what computation can and can't do and ends with incompleteness theory. Or I'll do it!
Authors: Matthias Felleisen and Daniel P. Friedman.
#29 Stealing the Network: How to Own the Box
Oh man. This book. Where do I start. When I was a kid I wanted to be a badass hacker. A real actual hacker that owns boxes and takes down networks. I had long hair, black clothes, black glasses to look and feel like a true hacker. Movies like Matrix, Hackers, Take Down, and this book shaped my mind.
When I first saw this title I was captured. I knew I had to read this book. I wanted to own boxes. When I got it, it took me just a few hours to read through it page after page. Syngress became my hero publishing company.
This book is the first in series of several Stealing the Network books. It's a cyber fiction book about hackers. The stories in this book are fake but there's no reason why they couldn't be real. Every story explains how the hacks are performed, which tools and techniques are used. If you can think then you'll quickly be able to apply these ideas for your own profit, whether it's securing your own networks or breaking into someone else's networks. Absolute must read for anyone.
Here are all other books in Stealing the Network series by Syngress:
- Stealing the Network: How to Own a Continent
- Stealing the Network: How to Own an Identity
- Stealing the Network: How to Own a Shadow
- Stealing the Network: The Complete Series Collector's Edition
Don't read these books if you're a system administrator and want to sleep at night. You won't be sleeping because I'm coming after your network! Bwahaha!
Authors: Ryan Russell, Tim Mullen (Thor), FX, Dan "Effugas" Kaminsky, Joe Grand, Ken Pfeil, Ido Durbrawsky, Mark Burnett, Paul Craig.
#30 Symmetry through the Eyes of a Chemist
This is the most delightful book on symmetry ever written. I've more than 10 books on symmetry but this one tops them all. This book presents symmetry through the eyes of professor Istvan Hargittai and his wife. He's down to earth and actually understands what scientifically curious people want to know about symmetry. This book is not for beginners (like most books on symmetry) and it's not for PhDs. It's right in the middle accessible to everyone with a little bit of education.
Hargittai's fascination for symmetry extends beyond the chemistry realm. He presents symmetry from an unusually broad perspective in a much wider sense than that in which it appears in geometry and chemistry. He starts with simplest symmetries, proceeds to group theory and other math that is used in symmetry, and then goes all in to molecular chemistry, exploring chemical reactions which are governed by symmetry, molecular vibrations, crystals, and infinite symmetries. This book has more than 1000 illustrations and math is only used where necessary.
I'm really pleased I found this book.
Authors: Istvan Hargittai and Magdolna Hargittai.