This is part seven of my 100 favorite programming, mathematics, physics and science books.
Quick intro for anyone joining: I've been collecting interesting books for more than 15 years. I'm interested only in books that push thinking and challenge what I already know. I also like fun books that teach you something new in a unique way. And I like books that focus deeply on one and only one topic. I hate average books and would never recommend such books. My recommendations have no affiliate links or garbage. Just awesome books that I truly enjoy.
This time I'm sharing my favorite books about math, number theory, cryptography, programming, and visual proofs.
Part of my bookshelf.
Here are the next five books.
31. Reciprocity Laws: From Euler to Eisenstein
Holy crap! Another amazing book that rarely anyone knows. This book covers one specific topic, just the way I like it. This book is all about history and development of reciprocity laws in terms of algebraic number theory. It covers it all. Quadratic, cubic, quartic, sextic, octic rational and Eistenstein's reciprocity laws, their proofs, extensions and applications. I understand maybe 10% of what's in this book as number theory isn't my specialty but I'd love to give it a 100% and just work through it. I really like books that focus on a single subject and take wild journeys into unknown.
Chapter on Gauss's Last Entry caught my attention. It's the last entry in Gauss's diary. The author uses Gauss's last entry to show connection between biquadratic reciprocity, elliptic curves, zeta functions and Weil conjectures. Super advanced stuff and I only know some of these words.
Gauss's last entry (in Latin; mouse over for English.)
This book stops with Eistenstein's reciprocity law. The author also says there will be the 2nd volume that will start with Artin's reciprocity law and cover latest developments that have happened in the last 20 years. I'm waiting eagerly.
Author: Franz Lemmermeyer.
32. The Design and Evolution of C++
In mid 2000s I was super obsessed with C and C++ programming languages. At one point I decided to become a C++ language lawyer. That's a person who knows ins and outs of the standard and also the history of the language. I spent half a year reading this book. A chapter or two every month until I finished it. I took many pages of notes, memorized every single most important detail. This is how my notes look. I can now quickly review the entire book in half an hour.
But then I decided that being a language lawyer would be too boring and didn't fit my mindset and lifestyle and I dropped the whole idea of becoming a C++ language lawyer.
Overall this is a great book by Bjarne Stroustroup, the creator of C++ language. He tells the history of C++ since day one. Get this book if you want to know why C++ is the way it is, how it's historically connected with C, and how it's made.
Author: Bjarne Stroustrup.
33. The Practice of Programming
Another classic book for beginners and journeymen. Very similar to Bentley's Programming Pearls (and More Programming Pearls) that I covered in part one. This book teaches you how to write good code. There are two ways to write good code, read this book in a few days, and write good code, or spend 10 years writing random code and coming up with these same principles - simplicity, clarity, generality and automation.
And to be honest, I love this book because I've special feelings for Kernighan (and other Unix giants.) Kernighan? Add to cart and checkout!
Kernighan also recently wrote The Go Programming Language book. I'm not going to read it but guess what he used for typesetting?
troff! I can also say that I'll buy any and all books written today that are typeset in troff. Without knowing the author. Anyone who uses troff knows what they're doing. I'll actually write one of my own next books in troff.
Author: Brian Kernighan, Rob Pike.
34. Algebraic Aspects of Cryptography
In part four I recommended Neil's A Course in Number Theory and Cryptography. I said "I love two of his books. This is one of them. I'll keep the other book secret until the next part of the series." Well here it is.
Koblitz is my favorite author. He's not only a badass and inventor of elliptic curve cryptography but also a great writer. As I said early in the series, I hate textbooks. But not Koblitz's textbooks. His textbooks are not really textbooks. Koblitz knows exactly what to explain and how to explain and always gives good and relevant examples. This book gives brief refresher to algebra and then introduces hidden monomial cryptosystems, combinatorial-algebraic cryptosystems, and hyperelliptic cryptosystems (as well as elliptic-cruve systems). I hadn't heard about these systems before and that's what also made me excited about this book. It's not like some other boring stupid cryptography books that derive RSA for the 5000th time.
This book is also written mostly in definition-theorem-proof-example-exercise-answer style, which is one of the quickest ways to learn something.
Author: Neal I. Koblitz.
35. Proofs Without Words III
I love this series! In part four I recommended Proofs Without Words I and Proofs Without Words II. Roger Nelsen, the author, just published the third book in this series. The third book contains another 100+ elegant proofs. There is almost no text in the book, just proofs that will make you think hard. Proofs in this book are divided in several categories: geometry, algebra, trigonometry, calculus, analytic geometry, inequalities, integers, integer sums, infinite series, and other proofs.
Reciprocal Pythagorean Theorem.
I've only figured out about a dozen proofs and this is still one of my favorite hobbies as I love visual proofs so much. I even started an article series on catonmat called Visual Math Friday where I was explaining visual proofs but I didn't get too far as I realized I was just duplicating these books and wasn't creating much value.
Author: Roger B. Nelsen.
See you next time!
Let me know in the comments what your favorite books are and what you like about them. If you like this series, you can follow my posts you can subscribe to my blog and/or follow me on twitter and/or do nothing.
Yesterday I was interviewed on Coder Intros. This is a copy of the interview. Coder Intros showcases coders as awesome yet real and flawed human beings, so that others can become interested and invested in coding.
a wild pkrumins in its natural habitat.
What is your coding specialty?
I have many, and Linux system programming is one of them.
Who is your current employer?
I'm my own employer. I'm the CEO of my own company, Browserling, a cross-browser testing company.
What is your earliest coding memory?
Writing tiny applications in Visual Basic when I was like 10 years old. They were very simple, like adding two numbers together or converting text to ascii.
Did you go to school for computer science?
No. I didn't go to college for computer science. College is the stupidest place you can go to for any kind of education. Completely outdated concept in the modern world.
What was your process like of learning to code?
I started using computers when I was 6 years old. I would go to my mom's work and use the computers there. I loved everything about them. I got hooked and I just kept learning more and more about them.
What percentage of you is motivated by money?
100% directly or indirectly. I've too many projects going on and all of them need ever increasing funding. Also I'm not stopping until my personal wealth is in 10 digits.
At what age did you realize that you could make money from coding?
At the age of 12 I was creating websites for people. I charged like $10 an hour or maybe $10 per website.
If you had unlimited time, resources and knowledge what would you create?
I would have a team of scientists study time on a quantum scale. I would want to figure out answers to the questions: what is time? can we stop it? can we reverse it?
Then I would have that same team see if we can extract one bit of information from the future. I read an article about some crazy stuff where at a quantum scale that is possible. So why not study it? It would be the most powerful discovery. A single bit from the future is all you need.
I would also want to team up with Musk and help people, including myself, go to Mars and to other planets. Oh and next I would want to study reverse aging and longevity. I would give Aubrey de Grey billions of dollars to build a team that would stop aging and reverse it.
Oh and also creating a superhuman race. And more, like creating super dense pills filled with nutrients that you swallow and that dissolves throughout the day slowly so you don't have to waste time eating.
If you couldn't live in the US, what country would you live in?
I don't know. I don't like to go anywhere.
What state would you want to live in?
Only California so I could network and hang out with my Hackers & Founders friends. They have a huge network.
How did you get started with Hackers & Founders?
I went to a Hackers & Founders event where I ran into Jonathan Nelson, the founder. It just so happened that he had been reading my blog and the rest is history.
Do you still write on your blog? Why did you start it?
Yes, I still work on my blog. I started it because I had so much knowledge and I wanted to share it with the world.
What is your natural sleep cycle?
I stay up for as long as I want and I sleep for as long as I want. I don't operate on Earth's schedule - I operate on my own 26 or 28 hour cycle. I like to work late at night and around the clock.
What languages do you use?
What advice would you give to someone who wants to get into coding?
Start with interactive tutorials like the ones from Code Academy. Don't read books, do the interactive tutorials. Reading a book from cover to cover will not make you a programmer. You'll be a smartass theoretician and won't be able to write a single line of code. If you do the interactive stuff you will really learn how to apply what you just learned. Once you've 5 years of coding behind your belt read a book or two to learn some theory but not too much. Theory is hacker's worst enemy.
Do you think everyone has the ability to learn to code?
Yes, but to get really good you have to start at a really young age. The skills you learn at an early age become second nature. At a later age it's much harder. I mean you can learn to code but you'll never have the same mental agility nor general computer aptitude if you learn at age 20 or 30 compared to someone who started at 10.
If you could describe yourself in three words what would they be?
Hard working, motivated, and curious.
What is your primary value?
My integrity is my primary value. I deliver what I say I will deliver. If I make a promise to you, I will fulfill that promise.
Are you happy?
Has your hair always been as fantastic as it is currently?
Want to be interviewed?
If you want to be interviewed or know any great software developers, fill this form to get them interviewed.
See you next time!
According to Alexa, Browserling is now a top 50k website in the world. It's one small step for a ling, one giant leap for ling-kind.
All competitors - hold on to your butts! Next stop: top 10k.
I just added another 25 tools to Browserling's web developer tools, increasing the collection from 225 tools to 250 tools. Each tool does just one thing and one thing only. There are no ads, no config options, and no nonsense. All tools are free. All tools work the same way. Press button, get result.
Here are some of the latest additions:
- Swap columns in CSV files
- Extract columns from CSV files
- Transpose CSV files
- Change CSV field separator (comma to something else)
- Generate random real numbers (decimal fractions)
- Generate random MAC addresses
- Pick a random element from a list
- Convert text to ASCII code points
- Convert ASCII code points to text
- Find common elements in two lists (list intersection)
- Find distinct elements in two lists (list difference)
- Left-pad text
- Right-pad text
Coming up: New design for individual tools, widgets that let you embed tools in your websites, file upload support, and more tools.
See you next time!