I have been meaning to review the books I have read my spare time, but I never seem to work up the will to sit down and do it. This post is going to serve as a running, ranked list of “TLDR” summaries instead.
My ranking scale will proceed as follows:
Awesome – Stop what you are doing and buy this book now.
Great – If you are at all interested in the subject this book discusses, read this.
Good – Certainly worth reading you really care about the subject, but maybe not necessary.
Pretty Good – Read this book if you extremely dedicated to the subject and to reading about it.
Meh – This book is probably not worth your time.
Influence by Robert Cialdini. This book is an exception as it was for college, but it is a fantastic book that describes six key principles of influence. To paraphrase, the purpose of this book is not to teach the reader how to make people do what they want, but to teach the reader how to make people WANT to do what they want – and even more importantly, to teach the reader how to detect when they are being manipulated.
Secure Coding in C and C++ by Robert C. Seacord. This book is almost awesome. If you care at all about writing bug-free code, and especially in memory “unsafe” languages, you pretty much need to read this book.
Programming in C by Stephen G. Kochan. This is really just a wonderful book on the C language. If you’re tired of high level interpreted languages with their mind-framing abstractions that you know are written in the freedom that is C, and you want to see and feel that freedom first hand while gaining and understanding of the lower level and more technical bits, look no further.
Metaprogramming Ruby by Paolo Perrota. Again, this book is almost awesome. It truly opened my eyes to the power of Ruby. It helped me finally understand the internals of Rails and how it couples itself so tightly to the language. If you love Rails for its deployment speed and ease of use but hate it because it feels like black box magic, this book will bring your mind to ease.
Agile Web Development with Rails by Sam Ruby, Dave Thomas, and David Heinemeir Hansson. I probably don’t need to even mention this one as everyone who programs in Rails is pointed at this reference, but that is because it really is a fantastic and complete beginning-to-end book.
Deploying Rails by Anthony Burns and Tom Copeland. In a similar style of Agile Web Development with Rails, this lead-by-example page turner is great for anyone who wants to get things up and running yesterday. It is an easy read that gives a Ruby on Rails programmer the knowledge they need to get started doing things DevOps style.
Artificial Intelligence – A Modern Approach by Stuart Russell and Peter Norvig. This book is sort of the de facto text on the subject of AI. It is a big college-style format, and I haven’t finished it yet; but from what I have read so far, I can understand why it is so widely acclaimed. It takes a complicated discipline and does a wonderful job explaining it.
Reversing – Secrets of Reverse Engineering by Eldad Eilam. While a bit dated, this is a fantastic resource. From an assembly language point of view, not a whole lot has changed from x86 to x64. This book went a long, long way toward improving my understanding of reverse engineering on Intel platforms, especially within Windows environments.
Metasploit – The Penetration Tester’s Guide by David Kennedy, Jin O’Gorman, Devon Kearns, and Mati Aharoni. More than just a Metasploit walkthrough, it does a really good job alluring to the foundational concepts of hacking and exploit development.
The dRuby Book by Masatoshi Seki. If distributed and parallel computing in Ruby is what you are after, look no further. The author of the book is the author of the dRuby library (as well as a contributor to others), so you’ll be getting the information you seek straight from the horse’s mouth. More than just understanding how to use the library, you will understand what influenced his design choices.
Basic Security Testing with Kali Linux by Daniel W. Dieterie. It packs a lot of examples and gives the reader a good sense of just how simple hacking is. You won’t be doing any low-level stuff, but you will get acquainted with a ton of tools.
Practical Reverse Engineering by Bruce Dang, Alexandre Gazet, and Elias Bachaalany. This book assumes a lot of knowledge that if the reader had, would probably invalidate his need to read it. If you have a solid computer science foundation you could probably get by, but if not you might want to look elsewhere. It would make a good cross-platform reference book in any case, though.
Programming in the Large with Design Patterns by Eddie Burns. A serious programmer will want to be familiar with popular design patterns. This book is short and sweet, so if you are not a fan of heavy reading, you may really enjoy it. It explains the philosophy behind the patterns and provides code examples.
Fortunately, none yet.