Review: Go Programming Blueprints – Solving Development Challenges with Golang

Go Programming Blueprints - Solving Development Challenges with Golang
Go Programming Blueprints – Solving Development Challenges with Golang by Mat Ryer
My rating: 4 of 5 stars

Real world solutions in GO
This book is not a primer on GO Language (here I suggest “The GO Programming Language” by Donovan & Kernighan, Addison-Wesley) but it should be read just after learning the basic concepts of the language and its tool chain.
The author introduces and describes in details several important concepts about the GO way to program, to structure the code and to organize the projects.
The examples are clear and simple to be easily understood but, at the same time, they can be used in our own projects.
The first project is a web based chat application which introduces main web application concepts like HTML templates, requests routing, Websocket and Oauth protocols, JSON, images plus some GO specifics like how to use the channels to handle client server communication.
The second project is a WHOIS client which shows how to interact with a RESTful API and how to create a command line utility in GO.
The third and main project is a multi application system which analyze Twitter data streams to count specific tags, using a MongoDB as storage solution and a messaging system to decouple the applications and exposing a REST API for a web based client. With this project the author shows how to integrate a NoSQL database and a Queue Messaging system and how to create a REST API.
The book includes other projects with cover additional topics like how to interact with the file system.
All projects and their code are well described and, again, it is something we can really use in our projects.
Highly suggested.

View all my reviews

Review: Learning IBM Bluemix

Learning IBM Bluemix
Learning IBM Bluemix by Sreelatha Sankaranarayanan
My rating: 3 of 5 stars

Interesting introduction to the Bluemix world
This book is a showcase, with working examples, of what we can do with IBM Bluemix cloud environment and its integrated IBM and third party services.
The main focus is to show what can be done, not how it works. Most of the technical backgrounds are left to several links to external resources on the web.
First step is how to create an application using Bluemix templates (“boilerplates”).
The following chapters are on how to integrate the application to the available services like security, SQL and NoSQL databases and IBM Watson functions, how to use the Bluemix development environment (git repository, continuous integration and deployment, test..) and how to monitor and tune application performances.
Other chapters are devoted to hybrid (cloud and on-premise) solutions and to mobile applications.
Most of the examples are based on Node.js or Java using IBM Liberty application server.
A couple of warnings:
– Bluemix IaaS (Infrastructure as-a-service) features like Docker and Open Stack virtual machines support are mentioned but not described. The book focus is on PaaS (Platform as-a-service) features, based on Pivotal’s Cloud Foundry solution.
– Bluexmix is a fast evolving environment so book screen shots and features lists can be easily obsoleted after few months

View all my reviews

Review: Groovy in Action

Groovy in Action
Groovy in Action by Dierk König
My rating: 5 of 5 stars

A must have for any serious Groovy developers.

Groovy in Action (Second Edition) is, at the same time, a detailed overview of the language and core libraries characteristics and an in-depth description on how it works.

First part is dedicated to the language, with the usual list of syntax elements descriptions (operators, data structures, control structures..), including Groovy unique features like being together a dynamic and a static typing language or supporting both object oriented and functional programming styles, not mentioning the scripting capabilities.

Second part is devoted to the Groovy core library: the Groovy Design Kit, how to work with databases and web-services and how to handle JSON and XML.

Final part is dedicated to unit testing, concurrency and, of course, the domain specific languages, one of the traditional Groovy applications area.

I have found very interesting chapter 16 on how integrate Groovy in a Java application, using, for example, Groovy as dynamic business rules engine, and chapter 20 on the Groovy ecosystem (Gradle, Grails..) introduction.

Authors show not only a very strong knowledge of the language and its ecosystem but also an understanding of how Groovy fits in the real world applications. Very interesting and useful the adoption of the assertions statements to better explain the code examples.

This book, with 900+ pages, is not targeting occasional Groovy users but I think it is a must have (as introduction at the begin, as reference later) for anybody intended to seriously use Groovy.

View all my reviews

“Instant Mockito” review

I have recently read “Instant Mockito” by Marcin Grzejszczak. Good reading.

I use Mockito every day but, nevertheless, the book could give me hints and ideas on how to improve Mockito usage in my projects. For example, I discovered the @InjectMocks annotation and several special arguments matchers I did not know before.

I suggest the book to all experienced programmers.

The book is not a Mockito primer nor it is a tutorial on unit testing techniques. The author assumes you know already how (and why) to do unit testing. Beginners should better start with more introductive books.

Mockito methods are not documented in detail; you should refer to official Mockito documentation for a complete reference (all relevant links can be found at the end of the book).

The first part of the book explains what is Mockito, how to install it in projects based on Maven and other dependency managers and a shows quick start example. Short but the essential is in.

The second part is the most interesting (at least for me) with the section named “Top 8 features you need to know about” which is basically a Mockito showcase: the author describes, by examples, several use cases using almost all Mockito features.

Among them: void methods stubbing, method calls counting, exceptions handling, method arguments capture, legacy code spying and annotations usage.

The book ends with references to Mockito resources available on the Net: web sites, Twitter accounts, blogs, communities.

(Available from Packt Publishing)