Archive by Author

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!


Time To Play

19 Jul

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.

Summer Is Here

Its Time To Play

The summer is here. The sun is shining. The sky is blue and there isn’t a cloud to spoil the view.

That’s why there is no better time to stay indoors and play with your computer.

You work all day with Java, so there isn’t any this month. We have Javascript, Lua, Scala and hardware but no Java.

Write A Game To Play

HTML5 Game Development with ImpactJS

by Davy Cielen and Arno Meysman

ImpactJS is a JavaScript library specially geared towards building 2-dimensional games. It is intuitive and versatile and allows the game developer to get results in no time while keeping an easy overview when games grow more complex. Games built with ImpactJS can be published on websites and even as an app on both Android and iOS.

With “HTML5 Game Development with ImpactJS”, building games for the Web and app markets has never been so easy. Using the ImpactJS JavaScript engine, you only need this book and basic knowledge of JavaScript in order to build and publish your own game.

Developing Mobile Games with Moai SDK

by Francisco Tufró

Code mobile games in Lua using Moai.

Its a fast, minimalist, open-source Lua mobile framework for pro game developers. Moai is built around Lua, a common programming language for games, and offers a single open-source platform for both the front-end elements seen by consumers and the back-end infrastructure.

Developing Mobile Games with Moai SDK will guide you through the creation of two game prototypes in a step-by-step way, giving you the basic tools you need in order to create your own games.

Play With Some New Web Technologies

Learning Play! Framework 2

by Andy Petrella

What better technology is there better to play with than Play!

The Learning Play! Framework 2 has been created for web developers that are building web applications. The core idea is to focus on the HTTP features and to enable them through a simplification lens. Building a web application no longer requires a configuration phase, an environment setup, or a long development lifecycle – it’s integrated!

Learning Play! Framework 2 will enable any web developers to create amazing web applications taking advantage of the coolest features. It’s the fastest way to dive into Play!, focusing on the capabilities by using them in a sample application. Although essentially Java based code, a Scala version is presented as well – giving an opportunity to see some Scala in action.

Socket.IO Real-time Web Application Development

by Rohit Rai

The expectations of users for interactivity with web applications have changed over the past few years. No more does the user want to press the refresh button to check if new messages have arrived in their inbox; people expect to see updates in their applications in real-time. Mass multiplayer online games have given up the requirement of plugins and are built entirely in JavaScript. enables you to build these highly interactive applications that work cross-browser.

“ Real-time Web Application Development” is a guide to building, deploying, and scaling highly interactive real-time web applications using This book will guide you through the building of a chat system using Node.js and, helping you get familiar with various features of the framework. Going further it will empower you to deploy and scale your applications in production.

Play With Some Raspberry PI

Raspberry Pi Networking Cookbook

by Rick Golden

The Raspberry Pi is more than just a platform for teaching students how to program computers! The recipes in this book show you how this inexpensive computer can be used out of the box for a number of practical solutions that utilise existing networks and connectivity.

The Raspberry Pi Networking Cookbook is an essential reference full of practical solutions for use both at home and in the office. Beginning with step-by-step instructions for installation and configuration, this book can either be read from cover to cover or treated as an essential reference companion to your Raspberry Pi.

Raspberry Pi Media Center

by Sam Nazarko

Low-cost and high-performing, with a massively diverse range of uses and applications, the Raspberry Pi is set to revolutionise the way we think about computing and programming. Using it as a Media Centre allows everyone to have a low-cost device that is always on, attached to their TV.

Imagine controlling your TV with your smartphone, dynamically streaming content that you have on various devices across your home, as and when you want. Raspberry Pi Media Centre will show you how to configure the complete experience using readily available and accessible tools, so that you too will soon be enjoying your media from the comfort of your own sofa.

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

20 Jun

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


“A function that can close over external values is called a closure. I mention that because now you know why Clojure is called ‘Clojure’.  It’s a portmanteau word combining ‘closure’ and ‘Java’.

Higher Order FunctionsWhat did we read about?

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

We began on Page 108, at the start of chapter 9 “Functions That Make Functions”. We read through to Page 114, leaving the exercises for next week.

We learn all about closures, and the important role they play in functional programming.  First of all we looked at how repetition can be avoided by creating a partial function, and the Clojure partial function.

We then read about lifting functions to a higher order.  Higher order functions are functions that act on other functions rather than plain values.

Then we looked at point free, or parameter-free, functions and took the Clojure comp function as an example.

To finish there was  a mild rant about style, looking at the different stylistic choices that are available.

What stood out?

  • This week we started to look at what really makes Functional programming different.  You may be familiar with the idea of a factory method creating objects, but functional programming takes it to a whole other level.  Personally I found it necessary to keep rereading paragraphs while I tried to understand what the author was trying to tell me.  Hopefully next weeks exercises will help to complete my understanding.
  • We also caught glimpses of the concepts that underpin functional programming.  The author makes light of the strange expressions in little asides like “No doubt the term ‘closing’ seemed perfectly apt to someone somewhere” and “no doubt the analogy of formal parameters to geometrical points seemed perfectly apt to someone somewhere.”  Personally I’d like to know more about the thinking behind these names.
  • The mild rant on style is revealing.  In Java we are used to having conventions that are followed by everybody so that there is a consistant style.  In Clojure there are so many ways of doing something it is no wonder that functional code can be so incomprehensible.

If you read nothing else this week…

  • If you already understand higher order functions then you can skip this week.  You may find the mild rant on style interesting.
  • If you are new to functional programming then you have to read all of it.  There are a lot of big concepts being introduced.

The Web Keeps Spinning

18 Jun

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 June the lucky winner will get a physical copy with an ebook for the runner up.

The Web Keeps Spinning

It Just Won’t Stop Spinning


Web created by a spider exposed to caffeine

Next year the world wide web will be a quarter of a century old.  Since it’s birth at CERN back in 1989 it hasn’t stopped moving, changing, evolving or revolving.  From clunky desktops in labs to the phone in your pocket change has been the only constant.  This month we are looking at books that can help us get to grips with the web’s latest developments.

Scala Out Back

Scala promises to improve productivity by providing us with a rich, expressive language with strong domain specific support.  Frameworks are being built to deliver on that promise.

Learning Play! Framework 2

by Andy Petrella

The Play framework promises to make it faster and easier to build web applications that scale reliably while supporting both web and mobile clients.

Akka Essentials

by Munish K. Gupta

Akka is a toolkit and runtime for building highly concurrent, distributed, and fault tolerant event-driven applications on the JVM.

HTML5 Up Front

HTML5 Enterprise Application Development

by Nehal Shah, Gabriel José Balda Ortíz

HTML5 has been a trending topic for a long time, but the lack of Flash support on iOS devices has sped up its penetration. New features in HTML5 come at a time when web developers are pushing the limits of what is achievable and HTML5, CSS3, and JavaScript have become an important alternative for building rich user interfaces.

HTML5 Canvas Cookbook

by Eric Rowell

The HTML5 canvas is revolutionizing graphics and visualizations on the Web. Powered by JavaScript, the HTML5 Canvas API enables web developers to create visualizations and animations right in the browser without Flash. Although the HTML5 Canvas is quickly becoming the standard for online graphics and interactivity, many developers fail to exercise all of the features that this powerful technology has to offer.

Getting the User Experience Right

Selenium Testing Tools Cookbook

by Unmesh Gundecha

Selenium automates browsers. That’s it. What you do with that power is entirely up to you. Primarily it is for automating web applications for testing purposes, but is certainly not limited to just that. Boring web-based administration tasks can (and should!) also be automated as well.

Responsive Web Design by Example

by Thoriq Firdaus

Responsive web design is an explosive area of growth in modern web development due to the huge volume of different device sizes and resolutions that are now commercially available. You can now create your very own responsive website quickly and efficiently, allowing you to showcase your content in a format that will work on any device with an Internet browser.

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

Skimmer’s Guide for Week 7 of Functional Programming for the Object Oriented Programmer

20 May

“Pat yourself on the back! You have both used and implemented the built-in function reduce, perhaps the most dreaded of all sequence functions.”

What did we read about?

It’s our seventh week of ‘Functional Programming for the Object-Oriented Programmer‘ by Brian Manick.

We come to the end of the “Embedding and Object Oriented Language” with some exercises and a bit of wrap up.

  • Begin on Page 73 at section 6.4 Exercises

    • Exercise 1 (Page 73)
    • Exercise 2 (Page 74)
    • Exercise 3
    • Exercise 4 (Page 75)
    • Exercise 5
    • Exercise 6
  • Finish at Page 77 at the end of chapter 6


What stood out?

  • Anybody playing the functional tutorial drinking game can take two drinks: one for recursion and the other for factorial 😉
  • The answer for each exercise feeds into the next, building up the complexity to use increasingly sophisticated forms of recursion.
  • The exercises conclude by introducing the powerful reduce function.

If you read nothing else this week…

  • Whatever you do make sure you complete exercises 1 to 6.
  • Exercise 5 is partially tricky, kudos if you complete it without hints! (note the result doesn’t have to be in-order)

Becoming Data Scientists – May’s Packt Publishing Competition

14 May

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 May the lucky winner will get a physical copy with an ebook for the runner up.

Data Science

Why Your Next HR Hire Should Be a Data Scientist @

Why Your Next HR Hire Should Be a Data Scientist @

The role of Data Scientist is new and important.  Big Data is seen as the key area for innovation, and the Data Scientist is a key role in putting Big Data to work.

So who are the Data Scientists, what do they do and does it include skills that we as developers may want to acquire?

The Data Scientist mines data for useful insights.  It’s a role that is closely related to the Computer Scientist, the role often fulfilled by developers like us.

Last month we looked at the tools used by the Computer Scientist, this month we look at the skills and tools needed by the Data Scientist.

The Data Scientist Role

In his Book “Data Visualisation – a Successful Design Process” Andy Kirk identifies the “Eight Hats” of data visualisation design:

  • The Initiator – The leader who is seeks a solution.
  • The Data Scientist – The data miner, wearing a miners hat, discovering nuggets of insight buried deep within the numbers.
  • The Journalist – the story teller who refines the insight with narrative and context.
  • The Computer Scientist – The person who breaths life into the project with their breadth of software and programming literacy.
  • The Designer – With an eye for visual detail and a flair for innovation they work with the computer scientist to ensure harmony between form and function.
  • The Cognitive Scientist – Brings an understanding of visual perception, colour theories and human-computer interaction to inform the design process.
  • The Communicator – The negotiator and presenter who acts as the client-customer-designer gateway.
  • The Project Manager – The co-ordinator who picks up the unpopular duties and makes sure that the project is cohesive, on time and on message.

These are hats, and we will probably find ourselves wearing several of them over time. As you can see, Data Visualisation requires us to pull together a range of disciplines in order to achieve something meaningful.

Last month we focused on the skills of the Computer Scientist, looking at the skills needed to pull the data out of the repository and put it in front of the audience.

Miner Willy

Data Scientists are Data Miners

This month we are looking at the skills of the Data Scientist. Here’s Kirk’s full description:

The data scientist is characterized as the data miner, wearing the miner’s hat. They are responsible for sourcing, acquiring, handling, and preparing the data. This means demonstrating the technical skills to work with data sets large and small and of many different types. Once acquired, the data scientist is responsible for examining and preparing the data. In this proposed skill set model, it is the data scientist who will hold the key statistical and mathematical knowledge and they will apply this to undertake exploratory visual analysis to learn about the patterns, relationships, and descriptive properties of the data.

From Chapter 2 of Data Visualisation – A Successful Design Process

Last month we talked about data being the new soil.  The data scientist is a miner who digs down deep.  It is a pivotal roll in the design process. Kirk elaborates further:

If we don’t have the data we want, or the data we do have doesn’t tell us what we hoped it would, or the findings we unearth aren’t as interesting as we wish them to be there is nothing we can (legitimately) do about it. That is an important factor to remember. No amount of 3D-snazzy-cool-fancy-design dust sprinkled on to a project can change that.

An incomplete, error strewn or just plain dull dataset will simply contaminate your visualization with the same properties. So, the primary duty for us now is to avoid this happening, remove all guessing and hoping, and just get on with the task of acquiring our data and immerse ourselves into it to learn about its condition, its characteristics, and the potential stories it contains.

From Chapter 3 of Data Visualisation – A Successful Design Process

This month we’re going to look at some of the tools we can use as Data Scientists to immerse ourselves in the data. Tools that will help us to interact with our data, drill down into it’s seams and discover what nuggets lie within.

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 May the lucky winner will get to choose a physical copy and the runner up can select an ebook.

Data Visualisation

Data Visualisation: a successful design process

For a second month we are going to look at Andy Kirk’s “Data Visualisation – a Successful Design Process.” It’s a great introduction to using Data Visualisation in your applications and the key text behind this series of competitions.

Kirk provides us with a structured approach to what can appear like a dark art. The task of data familiarisation, for example, is organised into the following steps:

  1. Acquisition – Getting hold of the data.
  2. Examination – Assessing the data’s completeness and fitness.
  3. Data Types – Understanding the properties of the raw material. (Not to be confused with Data Types in our code.)
  4. Transforming for Quality – Tidying and cleaning, filling in the gaps.
  5. Transforming for Analysis – Preparing and refining for final use.
  6. Consolidating – Bringing it all together, mashing it up with other sources.

From Chapter 3 of Data Visualisation – A Successful Design Process

Learning Highcharts for Javascript Data Visualisation

Highcharts allows the creation of sophisticated, interactive visualisations.

Let’s start at the ending: the consolidation of data to create an effective visualisation, like the one above.

Last month we looked at using HTML5 directly for producing our data visualisations. This month we’re going to look at Highcharts, a Javascript library built on top of HTML5 to provide stunning interactive charts with a lot less effort. It’s free for non-commercial use.

Highcharts provides interactivity, allowing the user’s to become data scientists and explore the data for themselves.

This is an easy approach for simple data mining needs, but the real value is in mining the rich seams of complex data through Data Analysis.  For this some powerful tools are needed.

Data Analysis

Data Analysis Cookbook

Chapter 5 talks about distributed processing with Hadoop

Anybody looking for a ‘real world’ use of Clojure should take a look at the Incanter libraries and the practical value they provide in the first phases of Data Science.  This is a Clojure cookbook that is full of solid, practical recipes for dealing with large datasets.  It shows you how to go beyond spreadsheets to deal with data on new scales of size and complexity.

The book is particularly strong on recipes for acquisition and transformation for quality and analysis.  The first chapter will show you how to pull in your data from a whole range of data sources, including JSON, XML, CSV, JDBC and Excel.  The second chapter will show you how to clean up your data with tools like regular expressions, synonym maps, custom data type parsers and the Valip validation library.

Eric Rochester’s Cookbook provides sound, practical recipes.  If you want to practical introduction to Data Analysis that will get you up, running and productive quickly then this is the place to start.

It also touches on a whole range of other related topics, such parallel programming, distributed processing and machine learning.

It isn’t so strong on the theoretical side of data analysis.  There’s a whistlestop tour of linear and non-linear relationships, Bayesian distributions and Bneford’s law in chapter 7.  Chapter 9 introduces Weka for machine learning.  In between chapter 8 shows you how to interface with Mathematica or R.

Statistical Analysis with R – Beginners Guide

A grouping of several plots displayed in the graphic window

If you want to learn more about the theory of data analysis you may want to consider working with R directly. R is the lingua franca of statistics and learning it will give you access to a wealth of resources available on the web.

In this Beginners guide the authors R John and M. Quick will show you how to get up and running with R.  The material is more abstract, with talk of standard deviations, linear models and ANOVA.  However, the authors make it more entertaining with a bit of role play.  Your are the lead strategist for a kingdom who must gather your intelligence, prepare the battle plans and brief the emperor and his generals.

When it comes to learning the mathematical theory the book doesn’t go much deeper than the Data Analysis Cookbook.  However, it does present the information in an entertaining way and by learning R you open the door to working directly with a tool used by mathematicians rather than programmers.

Big Data

Statistical analysis has been around for a long time, but it is now being performed with more data than ever before.  Companies like Google and Facebook are now working with data on an unprecedented scale and that is why there is so much buzz about Big Data.

If you want to work with Big Data, processing massive data sets measured in the terabytes, then the essential tool to learn is Map Reduce.

MapReduce Cookbook


More advanced MapReduce scenarios are described.

The authors are well qualified.  Srinath Perera is a Senior Software Architect at WSO2 and has a Ph.D.  Thilina Gunarathne is a Ph.D. candidate at the School of Informatics and Computing of Indiana University.  The have provided 90 recipes, presented in a simple and straightforward manner, with step-by-step instructions and real world examples.  These recipes guide you through the complex business of getting Hadoop up and running and then not only demonstrate what MapReduce is but how it can be applied to problems such as analytics, indexing, searching, classification and text processing on a massive scale.  Along the way you will be exposed to the tools and techniques that are fundamental to working with big data.

Infinispan Data Grid Platform

While Hadoop is implemented in Java, and offers a Java API it doesn’t reallly sit within the Java ecosystem.  Using Hadoop requires the learning of a whole new eco system.  To use it properly you’ll need to get to know complementary apache projects such as HBase, Hive, and Pig.

If you want to get to be able to experiment with MapReduce and distributed computing while staying firmly within the Java ecosystem then consider the Infispan data grid platform.  Installing Infinispan is as easy as installing jBoss AS7 and you can use it to provide persistance for your standard CDI applications without alteration.  The authors are Java people.  Francesco Marchioni has written several books on the JBoss application server and Manik Surtani is the specification lead of JSR 347 (Data Grids for the Java Platform).

The book offers practical guidence to get you up and running with Infinispan platform.  While none of them deal with MapReduce, they will leave you well equipped to follow the online documentation.

Skimmer’s Guide for Week 4 of Functional Programming for the Object Oriented Programmer

1 May

“This reality is usefully obscured by the language so that programmers can, without thinking, do wonderful things, blissfully pretending that the pictures in their head are what the computer is really doing.”

What did we read about?

This is our fourth week reading Functional Programming for the Object Orientated Programmer.

  • Begin on page 47 (“All the Class in a Constructor”) and read until page 54, leaving the exercises for next week.

The bare believable object from week three is developed further by moving the Class out of the constructor and introducing object instantiation and message dispatch.

What stood out?

  • The Let special form was introduced.

If you read nothing else this week…

  • Make sure you read about the Let special form.

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

14 Apr

“How do you write loops in Clojure? You don’t (mostly).”

What did we read about?

This is our second week reading Functional Programming for the Object Orientated Programmer.

  • Finish Chapter 1 – from 1.11 Vectors

After discussing vectors and how they differ to lists we finally discuss what we might consider the basic elements of a programming language: loops, conditionals and different methods for passing parameters.  The chapter concludes with four pages of exercises.

In a language like Java we are usually introduced to the control flow first and the data structures come later.  Here the reverse approach is taken: with a discussion on data structures coming first and the control flow following.  The chapter is then disparaging about both conditionals and loops.

What stood out?

  • In structured programming there are three basic constructs: sequence, selection and repetition.  In functional programming sequence is achieved using lists.  Conditionals are introduced with a reference to the Anti-IF Campaign and regarding repetition we are told that we dont write loops (mostly).  This book is forcing us to think about programming in a new way.
  • Rather than walking through the common functions the reader is given an exercise (5) with a list and told to think of a problem it could solve and then solve it.  The reader is not being spoon fed.

If you read nothing else this week…

  • Work through the exercises in section 1.18.

Further research

  • If you’re new to Clojure then I would strongly recommend Clojure Made Simple.  It will provide you with many essential tips that will help you stay sane.  In section 2.8, for example, you’ll find out how to access the built in docs are referred to in exercise 5.  Type “(doc take)” at the  REPL and you’ll quickly discover that it “returns a lazy sequence of the first n items in coll,”  That will definitely help you keep your sanity.
  • Take a look at the Anti-IF Campaign.
  • The classic book Thinking Forth has an excellent chapter on “Minimizing Control Structures:”  “The use of control structures adds complexity to your code.  The more complex your code is the harder it will be for you to read and maintain. The more parts a machine has, the greater are its chances of breaking down.  And the harder it is for someone to fix.”  The principles explained are good for any language.