Archive for the ‘Review’ Category

Learning Chef by Mischa Taylor and Seth Vargo

January 2nd, 2015

What is Chef?
Chef is a configuration management tool written in Ruby and Erlang. It uses a pure-Ruby, domain-specific language (DSL) for writing system configuration “recipes”. Chef is used to streamline the task of configuring and maintaining a company’s servers, and can integrate with cloud-based platforms such as Rackspace, Amazon EC2, Google Cloud Platform, OpenStack, SoftLayer and Microsoft Azure to automatically provision and configure new machines.
In short, it is the latest tool for system administration to perform configuration tasks on server as well as administrative tasks automation.

About The Authors
Mischa Taylor is a consultant at Chef, a fast-growing Seattle-based startup responsible for creating the Chef platform, which makes it easy to quickly automate development processes and move business processes into the cloud. He has spent his career focusing on building high quality products and increasing engineering productivity within organizations. Mischa is an author, speaker and mentor on software development topics and neuromorphic computing.

Seth Vargo is currently a software engineer and open source advocate at at HashiCorp. Previously, Seth worked at Chef (Opscode), CustomInk, and a few Pittsburgh-based startups. He is passionate about inequality in technology and organizational culture. When he is not writing software or working on open source, Seth enjoys speaking at local user groups and conferences.

So how does Chef works?
1. Chef relies on reusable definitions known as recipes to automate infrastructure tasks. Examples of recipes are instructions for configuring web servers, databases and load balancers.
2. The Chef server stores your recipes as well as other configuration data.
3. The Chef client is installed on each node in your network. A node can be a physical server, a virtual server or a container instance.
4. The Chef client periodically polls the Chef server for the latest recipes and checks to see if the node is in compliance with the policy defined by these recipes. If the node is out of date, the Chef client runs them on the node to bring it up to date.

Chapter 1 Configuration Management and Chef
Chapter 2 Configure Your Chef Development Environment
Chapter 3 Ruby and Chef Syntax
Chapter 4 Write Your First Chef Recipe
Chapter 5 Manage Sandbox Environments with Test Kitchen
Chapter 6 Manage Nodes with Chef Client
Chapter 7 Cookbook Authoring and Use
Chapter 8 Attributes
Chapter 9 Manage Multiple Nodes at Once with Chef Server
Chapter 10 Community and the Chef-Client Cookbook
Chapter 11 Chef Zero
Chapter 12 Search
Chapter 13 Data Bags
Chapter 14 Roles
Chapter 15 Environments
Chapter 16 Testing
Chapter 17 Conclusion
Appendix Open Source Chef Server
Appendix Hosted Enterprise Chef

Learning Chef is a book to introduce system administrators and software developers to the automation of systems or infrastructure automation.
The introduction chapters guide the readers to setup the Chef Development Environment, installing necessary tools and the ‘Test Kitchen’ sandbox environment.
Chef itself is written in Ruby, so there is a chapter introducing Ruby for new users.
The book is quite hands-on for readers so you can follow the source code examples that came with the book organized in chapters.
Readers will get to learn how to write recipes, cookbooks, and managing the Chef Server or Nodes.
Although Chef is designed to be a tool for administrative or operational tasks, it has many features including searching for recipes based on IP addresses, shared information for nodes (data bags), roles grouping and environment categorization.
If you are a system administrator, this is definitely a book for you.

Other Resources
Chef Website –
Learn Chef –
Chef Youtube Channel –
Chef Wiki –

You can now purchase this title from Amazon:

Books, Review, Technology , , ,

Java Cookbook, 3rd Edition by Ian F. Darwin

October 8th, 2014

Anybody learning Java should have or should read at least one of these few introductory books to Java
1. Head First Java, 2nd Edition
2. Learning Java
3. Java in a Nutshell

Subsequently, if one still decides that polishing their skills in Java is needed and to learn more about this programming language, then Java Cookbook
is definitely the next book one should cover.

Java Cookbook, already the 3rd edition, published in July 2014 covers all the basic features and API any programmers needed to know about Java up until Java 8.

The author, Ian F. Darwin has worked in the computer industry for three decades. He wrote the freeware file(1) command used on Linux and BSD and is the author of Checking C Programs with Lint, Java Cookbook, and over seventy articles and courses on C and Unix. In addition to programming and consulting, Ian teaches Unix, C, and Java for Learning Tree International, one of the world’s largest technical training companies.

Have a quick look on the Table of Contents:
1. Getting Started: Compiling, Running, and Debugging
2. Interacting with the Environment
3. Strings and Things
4. Pattern Matching with Regular Expressions
5. Numbers
6. Dates and Times – New API
7. Structuring Data with Java
8. Object-Oriented Techniques
9. Functional Programming Techniques: Functional Interfaces, Streams, Spliterators, Parallel Collections
10. Input and Output
11. Directory and Filesystem Operations
12. Media: Graphics, Audio, Video
13. Graphical User Interfaces
14. Internationalization and Localization
15. Network Clients
16. Server-Side Java
17. Java and Electronic Mail
18. Database Access
19. Processing JSON Data
20. Processing XML
21. Packages and Packaging
22. Threaded Java
23. Reflection, or “A Class Named Class”
24. Using Java with Other Languages
A. Java Then and Now
Introduction: Always In Motion The Java Is
Java Preview: HotJava
Java Arrives: 1.0
What Was New In Java 1.1
What Was New In Java 2 (Java SDK 1.2)
What Was New In Java 1.3
What Was New In Java 1.4
What Was New In Java 5
What Was New In Java 6
What Was New In Java 7
What Is New In Java 8
Look Away Beyond the Blue Horizon…

For the first eight chapters, I have found the book to be pretty boring and basic for a start. I almost gave up on completing it but I was thoroughly surprised with Chapter 9 onwards.
Thirty percent or so of the earlier chapters are good for Java programmers who needed to know the very basic of Strings and Numbers. The rest of the chapters are very comprehensive for a programmer to know the advance stuff or the common enterprise usage of Java in server-side web applications.
In every chapters and sub topics, example source codes are given so the reader can basically use the code and run them to get a hands-on experience. Let me tell you that the examples are not that basic and they are practical and useful examples.
I also particularly liked the final afterword section of the book that briefly tells the history of Java so if a graduate jumped directly into Java 7 or 8, they should know the evolution of Java and how it started.
With such comprehensive coverage on the topics, it seems to me that this Java Cookbook is even better than the topics required for Oracle Certified Professional, Java Programmer certification.
A definite must-read for any Java programmers!

Books, Java, Review , ,

Functional Thinking : Paradigm Over Syntax By Neal Ford

September 16th, 2014

First thing first, what is functional programming?

In computer science, functional programming is a programming paradigm, a style of building the structure and elements of computer programs, that treats computation as the evaluation of mathematical functions and avoids state and mutable data. It is a declarative programming paradigm, which means programming is done with expressions. In functional code, the output value of a function depends only on the arguments that are input to the function, so calling a function f twice with the same value for an argument x will produce the same result f(x) both times. Eliminating side effects, i.e. changes in state that do not depend on the function inputs, can make it much easier to understand and predict the behavior of a program, which is one of the key motivations for the development of functional programming.
Source : Wikipedia

Functional Thinking: Paradigm Over Syntax is an intermediate level book about functional programming features in Java and other languages. This is an in-depth guide that goes beyond syntax and demonstrates some new ways of thinking in programming languages.

The author, Neal Ford is an Application Architect at ThoughtWorks, a global IT consultancy with an exclusive focus on end-to-end software development and delivery.

Each chapter from the book shows you various examples of functional thinking, using numerous code examples from Java 8 and other JVM languages that include functional capabilities. This book may bend your mind, but you’ll come away with a good grasp of functional programming concepts.

  • Understand why many imperative languages are adding functional capabilities
  • Compare functional and imperative solutions to common problems
  • Examine ways to cede control of routine chores to the runtime
  • Learn how memoization and laziness eliminate hand-crafted solutions
  • Explore functional approaches to design patterns and code reuse
  • View real-world examples of functional thinking with Java 8, and in functional architectures and web frameworks
  • Learn the pros and cons of living in a paradigmatically richer world

Table of Contents
Chapter 1 – Why
Chapter 2 – Shift
Chapter 3 – Cede
Chapter 4 – Smarter, Not Harder
Chapter 5 – Evolve
Chapter 6 – Advance
Chapter 7 – Practical Thinking
Chapter 8 – Polyglot and Polyparadigm

Chapter 1 is an introduction to functional thinking while Chapters 2,3,4 show code examples of common programming problems that can be solved with functional programming languages.
Chapter 5 highlights that programming languages are already evolving to become more functional and Chapter 6 advances to design patterns in functional programming.
Chapter 7 takes a dive to Java 8 functional features and how they can fit into other languages.
The final chapter summarizes the common programming languages and their placing along two axes, a strong and weak axis versus a dynamic and static axis.

This is an intermediate level guide on functional programming. For any beginners, they might actually need a better understanding of functional programming before going for this. However, the introduction and ending chapters are good for beginners too.
Overall, this book provides useful code examples where functional programming can be beneficial and promotes the idea and possibilities of solving current programming problems with functional languages.

Books, Java, Review, Software ,