Clean Code

Clean Code, at this point, has become a canonized reference for software developers. The book begins by extolling the importance of a clean code base. Software with a low quality code base will become more and more difficult to change and improve until the benefit no longer justifies the costs. Getting code to work correctly and meet specifications is of course top priority, but equally as important is scrutinizing the code and ensuring its authors are constantly optimizing the code so that change is as cheap as possible. We cannot predict the future, we cannot foresee the evolution that our software will inevitably have to go through. We only know that the code will need to be changed in the future and will have to evolve. With that out of the way, Mr. Martin dives into his arsenal of experience to teach us techniques used for creating high quality, changeable code. Techniques on handling variable names, functions, avoiding comments, visual layout of code, and code architecture are covered. He also enlists help from other master developers for different chapters. Chapter 7 on error handling, written by Michael Feathers, was done really well. I actually purchased a book by him after reading his chapter. After an overview of the techniques, the author then dives into specific code bases and walks us through refactoring. This let's readers see how, like writing, code begins often as a rough draft and is only refined after the rough draft is finished. Its oftentimes very difficult, if not impossible, to understand the complete algorithm before writing out the code. The answer is revealed and understanding is gained only as we work through the problem. This is why coding architecture cannot be optimized until the full idea is expressed in a rough draft. This is why coding cannot be rushed if it is to be sustainable. The final section of Clean Coders enumerates the various techniques into a nice concise set of guidelines for reference and offers a nice review of the topics covered.

A Guide to the Good Life: The Ancient Art of Stoic Joy

Irvine takes his broad knowledge of philosophy and the Stoics in particular and distills it down into a modern manual for practicing the Stoic philosophy of life. _A Guide to the Good Life_ begins with a brief history on the origins of Stoicism and then dives right into techniques and advice for practicing the philosophy. After reading other Stoics, the material presented here is crystal clear and practical. For these reasons _A Guide to the Good Life_ makes a great introduction to Stoicism. Stoicism itself is designed to be a set of tools for living a good life and contains a lot of wisdom that can have an immediate impact. It seems these days that the goals of our lives are predestined to chase the consumer lifestyle. It's interesting that despite the ancients dedicating so much of their time to contemplating the ingredients of a good life, we never stop to think about it. The most important question we need to work out as a human is removed from our awareness like a magician's coin. The Stoic philosophy of life will be very helpful and will improve my day to day living, but if nothing else is gained from Irvine, stop for a moment and consider the question, "How can I live a good life".

The Handbook

Tiny condensed nuggets of Stoicism that could be read in one sitting. Thoughts that align the perspective and focus your awareness straight from an ancient Stoic master. Read every once in awhile to hone your perspective and awareness.

American Gods

They're all around. Gods, given life through our beliefs, carry on day to day struggling to survive and make ends meet in the case of the ancient and close to forgotten. While others at their zenith revel in their moment. Using an extensive knowledge world mythology, Gaiman weaves together their stories with gripping drama filtered through a gritty, stylized American setting. Its a very short 742 pages.

Eloquent Ruby

When starting out with Ruby, it was easy to pick up the basics; variables, conditional statements, loops, etc, and Eloquent Ruby covers these topics. However, Ruby also has many idioms and syntactic sugar that are not obvious to the newcomer. Eloquent Ruby does an outstanding job of bringing the reader up to speed. Not only, are these idioms and patterns explained, but the reasoning and logic behind them are clearly described. Olsen organizes the book well and sets up building blocks so complicated concepts are explained with a foundation that's built in earlier chapters. I cannot recommend this book enough for anyone getting started with Ruby.

The Anatomy of Fascism

Considering the term fascism is thrown around loosely, I was curious to learn more about its origin and definition. Paxton admits its a difficult term to define concretely and that fascism needs to be viewed more like a movie rather than a single photograph for a true understanding. Context is important and therefore most of the book is dedicated to examining how fascism is created, takes root, gets power, and exercises power. While these stages are explained for fascist movements, Paxton also compares and contrasts these different stages with similar, but different forms of authoritarianism in order to further clarify the definition of fascism. With this context laid out, the last chapter attempts to provide a succinct definition: > Fascism may be defined as a form of political behavior marked by obsessive preoccupation with community decline, humiliation, or victimhood and by compensatory cults of unity, energy, and purity in which a mass-based party of committed nationalist militants, working in uneasy but effective collaboration with traditional elites, abandons democratic liberties and pursues with redemptive violence and without ethical or legal restraints goals of internal cleansing and external expansion. Also interesting are Paxton's "mobilizing passions" that underlie fascist actions. While these passions seem like they can be found in any society and exploited they feel very relevant to today's political climate in America. From page 219 * a sense of overwhelming crisis beyond the reach of any traditional solutions * the primacy of the group, toward which one has duties superior to every right, whether individual or universal, and the subordination of the individual to it * the belief that one's group is a victim, a sentiment that justifies any action, without legal or moral limits, against its enemies, both internal and external * dread of the group's decline under the corrosive effects of individualistic liberalism, class conflict, and alien influences * the need for closer integration of a purer community, by consent if possible, or by exclusionary violence of necessary * the need for authority by natural chiefs (always male), culmination in a national chieftain who alone is capable of incarnation the groups historical destiny * the superiority of the leader's instincts over abstract and universal reason * the beauty of violence and the efficacy of will, when they are devoted to the group's success * the right of the chosen people to dominate others without restranit from any kind of human or divine law, right being decided by the sole criterion of the group's prowess within a Darwinian struggle


Short essential satirical read about the fictional adventure of Candide who, forced out of his Edenistic world, begins to understand the world's complexities after facing hardships and having his preconceived notions of the world overturned. In the end, only through his travels, has he gained wisdom and found contentment in cultivating his garden. > "I have only twenty acres, " replied the old man; "I and my children cultivate them; our labor preserves us from three great evils - weariness, vice, and want."


Classic and timeless wisdom is presented from the emperor of Rome. Marcus Aurelius reminds us to keep our human lives in perspective with the scale of the universe and to not let events outside of your control upset us. Change is constant. Our goal is to discover our purpose (nature's plan) and strive, before all else, to fulfill that plan. Often times Aurelius warns us against letting our animal instincts drive our decision making and encourages us to put those feelings aside and think rationally. Excellent wisdom that helped keep even the emperor of the Roman Empire level headed.

Practical Object-Oriented Design in Ruby: An Agile Primer

A must have for any Ruby programmer, but valuable for any programmer. I find myself making a point to reread this once every few years. This is not a lesson in syntax, but rather lessons and concepts about how to create code that is easy to maintain and change, as an application's needs change. The lessons Sandi teaches are tried and tested in real world applications and she discusses trade offs and costs involved with your coding decisions. After applying concepts to my own programming, I find myself much more excited to revisit my own code.

Design Patterns in Ruby

Excellent guide on the original Gang of Four patterns adapted for use in Ruby. The patterns laid out of Design Patterns will become well used tools in your arsenal and are also good to know when reading others' code who make use of them. Readers coming from statically typed languages will be pleased to know that the author makes a conscious effort to talk about how to adapt the patterns and your programming style to make use of Ruby's dynamic features. I found the wrapping up section at the end of each chapter to be an invaluable summary that I reference frequently. Lastly, the author dedicates a few chapters at the end toward emerging patterns that have cropped up more recently, possibly as a result of Ruby's dynamic nature. Design Patterns is a good bang for your buck investment in leveling up your Ruby skills.