Archive | Book Club RSS feed for this section

Two’s Complement

21 Aug

If you want to have a chance of winning one of this months books then please sign up on the Meetup page.  

At the end of July the lucky winner will get a physical copy with an ebook for the runner up.

Two’s Complement

Just getting code to work on your machine isn’t enough. There are many other vital skills that complement coding.

This month we are looking at books that address these important complementary. Tools and skills for operations, project management and web design.

Dev Ops

Gone are the days when developers threw their code over the wall for the operations teams to sort out. Continuous integration into virtualised environments requires close collabortaion and sophisticated tooling.

Implementing VMware Horizon View 5.2

by Jason Ventresco

VMware Horizon View helps you simplify desktop and application management while increasing security and control. This book will introduce you to all of the components of the VMware Horizon View suite, walk you through their deployment, and show how they are used. We will also discuss how to assess your virtual desktop resource requirements, and build an optimized virtual desktop.

“Implementing VMware Horizon View 5.2” will provide you the information needed to deploy and administer your own end-user computing infrastructure. This includes not only the View components themselves, but key topics such as assessing virtual desktop resource needs, and how to optimize your virtual desktop master image.

You will learn how to design and deploy a performant, flexible and powerful desktop virtualization solution using VMware Horizon View. You will implement important components and features, such as VMware View Connection Server, VMware View Composer, VMware View Transfer Server, and VMware View Security Server.

Puppet 3 Beginner’s Guide

by John Arundel

Everyone’s talking about Puppet, the open-source DevOps technology that lets you automate your server setups and manage websites, databases, and desktops. Puppet can build new servers in seconds, keep your systems constantly up to date, and automate daily maintenance tasks.

“Puppet 3 Beginner’s Guide” gets you up and running with Puppet straight away, with complete real world examples. Each chapter builds your skills, adding new Puppet features, always with a practical focus. You’ll learn everything you need to manage your whole infrastructure with Puppet.

“Puppet 3 Beginner’s Guide” takes you from complete beginner to confident Puppet user, through a series of clear, simple examples, with full explanations at every stage.

Through a series of worked examples introducing Puppet to a fictional web company, you’ll learn how to manage every aspect of your server setup. Switching to Puppet needn’t be a big, long-term project; this book will show you how to start by bringing one small part of your systems under Puppet control and, little by little, building to the point where Puppet is managing your whole infrastructure.


Projects are no longer managed in spreadsheets and GANT charts in locked rooms. The whole team takes responsibility for ensuring that everything gets done, and that needs the support of a good tool like Jira.

JIRA 5.2 Essentials

by Patrick Li

Atlassian’s JIRA provides issue tracking and project tracking for software development teams to aid speed of development and quality of code. This book will show you how to develop software more efficiently by planning, designing, and customizing your own JIRA implementation.

JIRA is a popular issue tracking product designed for better bug tracking, issue tracking, and project management. JIRA 5.2 Essentials provides a comprehensive guide covering everything you will need to plan, set up, design, customize, and manage your software development projects efficiently and to a professional standard.

In this practical book you will learn how to design and implement JIRA for project and issue tracking. You will jump into the installation and design of JIRA before going through the required techniques to effectively manage issues that threaten your software development project.

JIRA 5.x Development Cookbook

by Jobin Kuruvilla

JIRA provides issue tracking and project tracking for software development teams to improve code quality and the speed of development.

“JIRA 5.x Development Cookbook” is a one stop resource to master extensions and customizations in JIRA. You will learn how to create your own JIRA plugins, customize the look and feel of your JIRA UI, work with workflows, issues, custom fields, and much more.

“JIRA 5.x Development Cookbook” starts with recipes on simplifying the plugin development process followed by a complete chapter dedicated to the plugin framework to master plugins in JIRA.

Then we will move on to writing custom field plugins to create new field types or custom searchers. We then learn how to program and customize workflows to transform JIRA into a user friendly system.

Responsive Web Design

First there were desktops, then mobiles, then tablets, then mini tablets, then phablets…

Thankfully, responsible web design allows us to craft user interfaces that provide an optimal viewing experience across the every growing range of devices.

HTML5 and CSS3 Responsive Web Design Cookbook

by Benjamin LaGrone

The Internet is going mobile. Desktop computer sales keep falling as the mobile device marketplace burgeons. Web development methods are rapidly changing to adapt to this new trend. HTML5 and CSS3 Responsive Web Design Cookbook, for all of today’s wireless Internet devices, gives developers a new toolbox for staying connected with this on-the-run demographic.

HTML5 and CSS3 Responsive Web Design Cookbook is the programmer’s resource for generating websites that effortlessly interface with modern mobile devices. Using its clear instructions you can create responsive applications that make snappy connections for mobile browsers and give your website the latest design and development advantages for reaching mobile devices.

HTML5 and CSS3 Responsive Web Design Cookbook is full of how-to recipes for site enhancements and optimizing your sites for the latest devices and the mobile Web.

Responsive Web Design by Example

by Thoriq Firdaus

By following the detailed step-by-step instructions in this structured reference guide, you will learn how you can build engaging responsive websites. With coverage of Bootstrap, Skeleton, and Zurb Foundation you’ll learn about three of the most powerful responsive frameworks available today.

Leading you through by practical example, you’ll find that this essential reference develops your understanding by actually helping you create beautiful websites step by step in front of your very eyes. After going over the basics, you’ll be able to choose between creating your own responsive portfolio page with Skeleton, building a stunning product page with Bootstrap, or setting up your own professional business website with Zurb Foundation. Ultimately you’ll learn how to decide which framework is right for you, and how you can deploy and customize it to your exact specifications!


Skimmers Guide for Week 15 of Functional Programming for the Object-Oriented Programmer

21 Jul

“…today’s commonplaces of object-oriented programming were mysterious and brain-bending twenty or thirty years ago… Monads and other higher-higher-higher-order abstractions may follow the same trajectory. I hope they do.

What did we read about?

This was our fifteenth week of ‘Functional Programming for the Object-Oriented Programmer‘ by Brian Manick.

We start from Page 141 at section 10.10 Lifting Functions with Monads, finishing at Page 146 at the end of chapter 10!

Only 6 pages to read this week but they are absolutely rammed packed with information and examples.

What stood out?

  • Page 142 – The m-lift monad is introduced which is a concise way to do short-circuiting.
  • Page 144 – The sequence-m monad is introduced as a way of transparently doing looping.

If you read nothing else this week…

  • Page 146 – 10.13 Choose your own adventure – A succinct summary of monads, which bestow upon programmers both great power and great responsibility 😉

Skimmers Guide for Week 14 of Functional Programming for the Object-Oriented Programme

21 Jul

“…functional programming terminology is perhaps slightly less than optimal for novice understanding. That is the case with monad terminology.”

What did we read about?

This was our fourteenth week of ‘Functional Programming for the Object-Oriented Programmer‘ by Brian Manick.

We start from Page 132 at the start of section 10.6 Monads as Data-Driven Extended Continuation-Passing Style. Finish at Page 141 at the end of section 10.9 Exercises

We continue looking at monads and delve into them further. We work on a simplified version of the truth and gradually form a concrete appreciation of the complexity and power of monads!

What stood out?

  • Page 139 – 10.8 Cond is all about “a multi-way” if, appearing much like a switch statement.
  • The exercise at the end of our reading is amusing and gives us our first chance in writing our own monad!

If you read nothing else this week…

  • Page 133 – “The lie” gives you a working understanding of monads, which is absolutely critical.

Skimmers Guide for Week 13 of Functional Programming for the Object-Oriented Programme

8 Jul

“A monad is a collection of functions that can be used to modify stepwise calculations.”

What did we read about?

This was our thirteenth week of ‘Functional Programming for the Object-Oriented Programmer‘ by Brian Manick.

We start from Page 121 “10 Branching and Looping in Dataflow Style” and read all the way through to Page 131 stopping at “10.5 Extending continuation-passing style”.

Going over the “->” and “let” functions again, we compare the linear/non-linear calculation of them both. We look at removing explicit branching through “monads”, which allow us to insert code after the computation steps in the normal flow of our code.

Finally we are introduced to the “continuation-passing style”, revolving around the idea of “flowing the result” of each step of our computation into the next. There are some Exercises to get you to grips with it and then we elaborate on how the style gets evaluated.

What stood out?

  • “10.1 That pesky nil again” (Page 124) – A well worked example of doing nil checking automagically via the “with-monad” and “domonad”.
  • “10.2 Continuation-passing style” (Page 126) – An interesting use of the “->” function which actually makes computation steps clearer.

If you read nothing else this week…

  • Practice the continuation-passing style in Exercises 1 – 3 (Page 127).
  • “10.4 Expansions in Evaluation” (Page 128) gets under the covers of continuation-passing style and how it gets evaluated. We compare this to how the “domonad” gets evaluated and how understanding both is critical to understanding how monads in general work.

Skimmers Guide for Week 12 of Functional Programming for the Object-Oriented Programme

29 Jun

“With loosely-coupled objects that communicate only by passing behaviors (functions) around (rather than entire bundles of state and behavior in the form of objects), the early part of design may become easier.

What did we read about?

This was our twelfth week of ‘Functional Programming for the Object-Oriented Programmer‘ by Brian Manick.

We begin on Page 115 at the start of section 9.4, picking up the exercises from last week’s reading. We finish at Page 120 at the end of chapter 9.

The exercises revolve around putting into practice what we have learnt about “Point-Free Programming”. We are introduced to the new juxt function before being tasked with a diverse set of exercises to test understanding on various topics so far.

Finally we look at higher order functions from the perspective of object orientated programming and how we can decouple our design using “function passing” (either directly in Ruby or via single abstract method interfaces in Java).

What stood out?

  • Exercise 2 introduces the neat little function juxt, definitely a good tool to know about and not a bad exercise either.

If you read nothing else this week…

  • Exercise 7 – 10 are brilliant practice of the Clojure we have learnt so far. Highly recommend everyone gives it a try as they are great for working on your code style and thinking about reducing duplication.
  • “9.5 Higher-order functions from the object-oriented perspective” – only two pages but makes you think about how you should handle your dependencies (on functions or on objects).

Behaviour Driven Development with JavaScript Give Away

20 Jun

“BDD has many different aspects. Which of them are important depends on your perspective.”

We are teaming up again with, a fledgling book publisher that is changing the way books for software developers are produced.

They specialise in digital books, written by leading experts from across the software development ecosystem. The short format books they produce give you access to key technical know-how for less than the price of a cup of coffee!

This time around we are giving away a mature and enlightening insight into “Behaviour Driven Development with JavaScript” by Marco Emrich (winners will be able to request their desired e-format). Absolutely rammed full of excellent information, the book is nevertheless extremely well paced and reads very easily.

Behaviour Driven Development With JavaScript by Marco Emrich

TO WIN: Simply jump onto the competition section the LJC Book Club Google+ community and +1 the corresponding post!

2 lucky winners will then be picked on Thursday 27th June 2013!

This book is really rich with content (catch the Skimmer’s Guide here) and we are really excited for this and future give-aways with! Watch this space and check out more from this fantastic new publisher on FacebookGoogle+Twitter and their blog:

Skimmers Guide for Week 10 of Functional Programming for the Object-Oriented Programmer

10 Jun

“…I think you could say “There is a thing that we’re justified in saying is an object-oriented architectural style.” We’re not at that point for the functional style yet, so far as I can tell.

What did we read about?

Our tenth week of ‘Functional Programming for the Object-Oriented Programmer‘ by Brian Manick.

We pick up on a new chapter on Page 99, “8 Embedding Functional Code in an OO Codebase”. No exercises this week and we blitz through until the end of the chapter on Page 107.

To be honest, a lot of this chapter is irrelevant or uninteresting, revolving around boilerplate code or SQL. Skimming/skipping through is recommended!

What stood out?

  • Concept of “functional nuggets” in OO code, Page 100. An interesting theory, sadly demonstrated in a rather tedious fashion.

If you read nothing else this week…

  • The big picture, Page 108.  Talking about the evolution of functional programming and looking forward to “Functional Patterns for Enterprise Application Architecture.”

Skimmers Guide for Week 9 of Functional Programming for the Object-Oriented Programmer

8 Jun

“…don’t read Lisp functions from top to bottom… look for the most important code (typically closer to the bottom of the function, often the most visually dense) and read it first.

What did we read about?

This was our ninth week of ‘Functional Programming for the Object-Oriented Programmer‘ by Brian Manick.

We began on Page 90, at the start of section “7.6 Processing Sequences of Maps”. We did the two exercises, starting on Page 94, and then continued reading through to Page 98 at the end of chapter 7.

Continuing with the student courses example, we work through how to manipulate the course data. New and powerful features of Clojure are introduced, such as destructing and external binding.

Rather interesting we finally touch upon design at a high level within functional programming. Brian discusses his thoughts on how to handle encapsulation within a dynamic language as well.

What stood out?

  • Destructuring arguments, Page 92, is an incredibly useful tool that reminds me a lot of pattern matching. Brian covers it very well succinctly, although there promises to be an entire chapter on it later!
  • Avoiding argument passing by using external binding is a very interesting topic (starting on the bottom of  Page 94). Again it will be covered in a later chapter but is raises the interesting design question on where and when to “nest functions”?

If you read nothing else this week…

  • Information Hiding, Page 98, brief but thought provoking section on encapsulation. Do you think using private helper functions and file based modularity is enough?
  • Discussion of the pros and cons of nesting functions, bottom of Page 96. In functional programming, does deciding on the number of higher level functions to use and their responsibilities reflect the design of classes in imperative programming?

Cloud Computing Concepts, Technology and Architecture

31 May
Inline images 7

Cloud Computing

Concepts, Technology and Architecture

Inline images 5

To mark the official release of the book “Cloud Computing: Concepts, Technology and Architecture” the LJC Book Club is holding a special event.

It will be held on June 11th.  We are just finalising the details and this post will be updated with more information as it becomes available.

Cloud Computing is an important technology that we all need to get to grips with.  This isn’t easy when there is so much confusing hype.

The book is written by Thomas Erl, Ricardo Puttini and Zaigham Mahmood and published by Prentice Hall.

The meetup is organised and delivered by the LJC Book Club.  We are sharing an impartial overview of what promises to be an influential book.

We are hoping to find a clear answer to an important question: what, exactly, is the cloud?


What is the Cloud?

Inline images 1

What, exactly, is “The Cloud?”  Do you know?  Does anybody know?

According to Amazon it’s a CD rack, a photo album, and it’s made of elastic.  According to Microsoft it’s like a really rubbish bat cave that is full of “real opportunities for IT to deliver more efficiencies.”  (:|

And there are so many cloud services.  Infrastructure as a Service (IaaS), Platform as a Service (PaaS), Software as a Service (SaaS), Data as a Service (DaaS) and Pain in the as a Service (PitaaS).  :-p

What does it all mean?  How can any of us keep track of it all?

One thing we can say for certain about “The Cloud”: it is going to change the way we work.  According to Gartner it reached the apex of the “Peak of Inflated Expectations” back in 2009 and by 2012 it was maturing but still heavily hyped.

The Hype Cycle
 Cloud computing sat at the top of the peak of 
inflated expectations back in 2009.

With so many companies looking to expand the hype buzzword to cover their own products how is the developer to climb the Slope of Enlightenment?  How can we know what is worth learning and what will be left behind (in the recycling bin for the next fad)?

With his book “Cloud Computing: Concepts, Technology and Architecture” Thomas Erl is trying to help.  The author explains in his introduction:

Gaining a vendor-neutral understanding of cloud computing from an industry perspective empowers you with the clarity necessary to determine what is factually cloud-related and what is not… With this information you can establish criteria that will allow you to filter out the parts of the cloud computing product and service provider marketplaces to focus on what has the most potential to help you.

If the book is as successful as Erl’s previous SOA books then it could potentially provide a vital missing link: a ubiquitous language, a shared, unambiguous vocabulary that will let developers, managers and accountants talk intelligently about the the cloud.   It will end the frustration of failing cloud projects based on misconceptions.  The author again:

Cloud computing has much to offer but its roadmap is riddled with pitfalls, ambiguities, and mistruths. The best way to navigate this landscape is to chart each part of the journey by making educated decisions.

With this meetup we are hoping to help by sharing the books vendor-neutral perspective through presentation and discussion. 

The Cloud Computing Meetup

With the book’s official release on June 11th we are going to take the opportunity to reflect on Cloud computing; how it has progressed and how it affects our work as developers.

There is a dizzying array of terms that need to be understood.  In interviews you will need to be comfortable with terms like “hybrid cloud”, “multitenancy” and “threat agent.”  If you haven’t already encountered technologies like “hypervisors”, “resource replication” or “dynamic failure detection” then there is a good chance that you soon will.

In this event we will provide an overview of the ideas presented in the book.  It’s a big book, with 16 chapters and 7 appendices that contain 260 diagrams, 29 models and 20 mechanisms.  We will provide a guided tour of the contents so that you can see which parts are relevant to you.

If you are new to cloud computing then it will provided an invaluable overview of new technologies that are just beginning to disrupt the mainstream.

If you are already familiar with cloud technology you can see the models that are likely to frame your less technical colleague’s understanding.

We will also take a look at some of the specific technologies that are being used to implement cloud computing.

Stay tuned for more details.

Skimmers Guide for Week 8 of Functional Programming for the Object-Oriented Programmer

27 May

“Only a fool tries to define something as nebulous as a style of programming. So here goes!”

“My solution will seem so inefficient as to border on professional malpractice.”

What did we read about?

This was our eighth week of ‘Functional Programming for the Object-Oriented Programmer‘ by Brian Manick.

We began on Page 78 at the start of Part II and read through to page 90.  There were three exercises.

In Part II we are going to learn about writing in a functional style in Clojure. 

It started by looking at what a functional style is, and how it is different from an object-oriented style.  It is summed up as follows:

  • Object oriented: stable relationships and varying paths.
  • Functional: Many specialised flows and shapes.

Unfortunately, it isn’t clearly explained what that actually means.

Hopefully working through the example problem, which involves matching students to courses, will make things clearer.  The solution involves annotating maps and then filtering them based on those annotations.  To help us create the solution sets, map annotations and the arrow operator were introduced.

What stood out?

  • We talked about avoiding conditionals back in week 2.  Section 7.2 shows how we are actually going to do this.  The approach sounds appealing.
  • On the group we felt the need to talk about sets several weeks ago.  Now the author has finally decided to introduce them in section 7.3.
  • The approach described in section 7.4 is rather clumsy.  Hopefully we’ll be shown a better way next week.

If you read nothing else this week…

  • Sets are introduced in section 7.3
  • The arrow operator is introduced in section 7.5