Wednesday, 30 July 2014

Eight reasons never to hire a Unicorn

If you work in the Digital Advertising industry you most likely have come across the term 'Unicorn'. If you don't or haven't, here is a short background.

Unicorns are mythical creatures which have a large, spirally, pointy horn mounted to their forehead. Popular culture - predominantly little girls and pagans - have long since had a fascination with these creatures who are purported to have special healing powers and are symbols of grace and beauty.

Legend also suggests that only virgins can catch unicorns which, in this age of sin, perhaps explains why sightings are very scarce.

In short, Unicorns are rare, special creatures that are difficult to catch.

Drawing back to the Digital Advertising Industry which sometimes thrives on mythology, legend and magic, the notion of 'Unicorn' has been adopted into its lingo as a rare and special person who simply must be snared and put immediately to work dreaming up the next wearable tech idea to promote mouthwash and, in the process, make the world a better place.

Thursday, 17 July 2014

Happy First Birthday 'This is Lean'!

Happy First Birthday to the Tumblr Blog, !

The blog is dedicated to something called 'Lean' which is really big (ironically) right now. If you don't know what 'Lean' is then you probably aren't doing it and your output is all flabby, bloated and struggling to fit into its favorite pair of jeans. If your output suffers in this way, I urge you to read this blog and discover how to become Really Really Lean.

It is a crowd sourced web site so if you have any Lean Thinking that the world needs to know about, submit it here.

Friday, 11 July 2014

Distributed Development : Avoiding The Fog

I've written about the challenges of distributed development as have many others, so I'm not going to bore you with another spin on the types of problems which crop up and new and improved ways of fixing them. What I am going to do is make a controversial statement and then try and pull a Houdini and explain myself out of it.

Communication can make for an opaque development process.

Ok, here I go.

Wednesday, 25 June 2014

Can User Stories be used in Waterfall Development?

If you work in the business of software development you most likely have come across User Stories. If you aren’t familiar with them, or are all of a sudden being asked to write them or deliver them and aren’t quite sure what they are, here is a brief background.

User Stories are born from Extreme Programming (XP) and Agile Development Methodologies. XP and Agile development is essentially a set of principles and practices which have emerged over the years (XP was first coined in 1999) to address with the challenges of software development and fulfill a goal of delivering working software as early as possible.

User Stories fit mainly into the requirements gathering and definition phase of software development. They are Agile’s answer to transforming what is often an onerous, expensive, confusing, obscure and inefficient process to one that is lightweight and effective, and drives the software development process towards delivering valuable software features early.

Like many other aspects of Agile Development, User Stories are becoming adopted as an industry standard way of describing software requirements.

The benefits behind writing requirements in this way include:

  • Writing requirements as User Stories makes them easy to understand i.e. they eliminate technical or domain jargon 
  • Writing requirements as User Stories helps validate their value to the users of the application 
  • User Stories can be delivered independently and in short iterations, allowing the ROI from working software to be realised earlier 

However, because User Stories are being appropriated by different organisations who deliver software in less agile and more waterfall ways (wagile, scrumafall, etc) and don’t have all the other Agile practices in place, there is often confusion around what a User Story is and how they can be used to describe, specify and deliver a solution.

In my experience, this is often the case where an Agency or Software House (Delivery Partner) is tasked to define, cost and deliver a new build for a Client.

In this scenario, the following constraints often apply:

  • The Client has a maximum budget to get the solution built 
  • The Client has a massive wish list of requirements 
  • The list of requirements exceed the budget
  • The Client wants to know what they are going to get for their budget at the beginning of the project 

Given this starting position, the Delivery Partner has the challenge of defining and delivering a solution which has as many of the items from the wishlist within the budget constraint. So faced with this challenge, can User Stories be used to define and cost a fix priced build?

The short answer, I put forward, is yes with a caveat that User Stories go through the following steps to turn them into a scope of work that can be delivered within a budget.

Thursday, 19 September 2013

The Devil of Distributed Development

There is gold in them thar hills!
Over the last six months, I have been working on a model for distributed, Agile Scrum development. This has been in response to on-going issues on software projects where development (front end, back-end and testing) is done in an offshore office. The issues have been around areas such as relationships, quality, communication, profitability and client satisfaction.

In addition to these common trouble hotspots, I work in a creative led Digital Agency which, due to the nature of the beast, presents even more challenges around establishing dedicated teams with the right skill-sets, consistent delivery methodologies, adhering to best practices and educating internal and external stakeholders into rationale behind them.  The last point around education is probably the biggest overarching challenge since if everyone knew what the right thing was to do, they would do it.

The best example of an education challenge is explaining the tax of distributed development. From a financial person's perspective distributed development is a no brainer.

"What? You mean one expensive onshore developer can fund almost five cheap offshore developers. These margins are massive! Well get on the phone to any country with a slightly f*cked economy and round up developers. Ideally it should be a country that has been oppressed by a communist regime guaranteeing optimal economic exploitation combined with a decent level of education. Yeehaaa! There is gold in them thar hills!" said fictitious Financial Person.

Thursday, 8 August 2013

The Raspberry Pi Phenomenon

Originally Published on POSSIBLE.COM

Growing up in the eighties was a very exciting time for a young boy with geeky inclinations. It was the birth of the computing age, when for the first time in history, you could own your very own console or PC for an affordable price and use it for games, word processing or, best of all, tinkering.

I first learned to program on a clunky looking IBM XT, and although my first few programs were largely rubbish, it was an enchanting experience making a machine do things that you tell it to do. My DIY tinkering wasn’t limited to just consoles and PCs. I remember playing with electronics, chemistry sets and Meccano kits that my father still had from his childhood. Making things out of bits of technology was the ultimate pastime for me, as it was for other likeminded geeks. My disposition hasn’t changed very much over the years, which is why the Raspberry Pi phenomenon is one that delights me and brings back fond childhood memories.

Friday, 14 June 2013

A better way to spend your commute

It was about two years ago while sitting on a London Underground tube firing small birds at towers, that I felt a strong pang of discontent. I’ve spent so much time, I thought whilst pulling back yet another bird in the catapult, to and from work playing time wasting apps like Angry Birds on my iPhone. How much time has this all amounted to over the last few years? I wondered. How could I use this time better? What could I do with this time instead?

Ideally it would be something off my Bucket List, but the Tube was severely limiting to many of my aspirations like swimming with dolphins or fire eating. 

Cloud Talk : A walk through the clouds

Thanks @syzygyuk for hosting the EPiServer meetup.

I've uploaded my slides from my talk on the Cloud to the Cloud:

Sunday, 3 February 2013

Angry Customer Twitter Campaign #Fail

Have you seen @lostbag
There comes a time in every customer's life when they are served injustice. This dish comes from all industries and in all forms and leaves its victims with raised blood pressure and the acidic burn of righteous indignation.  I recently was a victim and the perpetrator was Lufthansa Airlines WHO LOST MY BAG AND STILL HAVEN'T GIVEN ME MONEY BACK FOR IT!!!!!


So, I went on a business trip and Lufthansa lost my bag on the return leg. After a painful journey back home and trying to get into my house (my bag had my keys and my wife was away) I began the process of trying to get my bag back. After a few weeks of unsuccessful bag finding I realised that I was in a Kafka'esque world of bizarre bureaucracy where no one knew anything and nothing made sense.

Living in the 21st Century with social networking and Apps, I realised I could challenge the status quo. I was an empowered consumer! Their inefficient call centres and surly staff could do nothing to stop what was to become the greatest social media campaign the airline industry had witnessed since that guy made a song about an airline which broke his guitar and went, like, totally viral on YouTube.

119 tweets and about two months later I had 10 followers. Sadly, my @LufthansaBad campaign never went viral and MY BAG IS STILL LOST AND THEY STILL HAVEN'T GIVEN ME MONEY BACK FOR IT!!!!!

Thursday, 31 January 2013

What is Dev Ops and why is it important?

We have recently been recruiting for a new role in our company: that of a Developer Operations role, or Dev Ops. This initiative has mainly been inspired by other companies who have identified the need for a separation between Development and Operations, and the need for development skills in the operations sphere.

An example of an Application Life-cycle Process without development operations would look something like this.

The work flow would go as follows:

Tuesday, 15 January 2013

Application Hosting Types Demystified

As a technology consultant, there are certain conversations which seem to always get confused. One of these conversations is around hosting. There is a lot of variation in understanding and agreement of what types of hosting there are and what they are called. I've become quite confused by this myself.

This post is my attempt at providing a crystal clear definition of the types of hosting and what they mean to you (a user of hosting services) and the hosting provider.

I've broken down hosting into these the following categories: Onsite Servers, Offsite Servers, Offsite Virtualised Servers and Cloud Services.

Below is a matrix which lists these types of hosting and what aspects you have to look after (marked with ‘C’) and what parts the hosting provider looks after (marked with ‘H’).

Friday, 11 January 2013

Cloud recipe: Standing up an Enterprise, Solr Search Server on Azure in fifteen minutes

I recently saw some Twitter activity around a new on-line Community called VM Depot. From the website: "VM Depot is a community-driven catalogue of preconfigured operating systems, applications, and development stacks that can easily be deployed on Windows Azure."

One of the VMs which caught my eye was an Linux VM with a fully configured instance of Apache Solr 4: a lightening fast, enterprise Lucene search engine built by the Apache community.

In this Cloud Recipe we will deploy a fully configured Linux VM running Apache Solr and write some C# code to talk to it.

To complete this recipe, you need the following:
  • A Windows Azure Subscription. 
  • Node.JS and node package manager (NPM). This can be downloaded and installed here.
You should be able to complete this recipe in under 30 minutes.

Tuesday, 8 January 2013

The most important part of Agile is education. Ongoing education.

Agile is a widely adopted methodology across the software devevlopment industry. The two main frameworks of Agile are Scrum and Kanban, both similar variants to each other but which both address the same set of problems with software traditional waterfall development, such as slower and more problematic delivery.

They address these problems through more collaboration across disciplines to ensure decisions are made with all relevant viewpoints taken into account, more frequent release cycles to ensure early exposure of the product to the client and the ability to adapt and change course where necessary, and a commercial structure that understands the reality of complex, software development with many integration points by agreeing to either fixed price or fixed scope, but not both.

Monday, 24 December 2012

Buzzword Bazinga: What is Big Data? featuring MapReduce and NoSQL

The term 'Big Data' describes a vast amount of data, or chat, generated from two main sources: people and computers. People spend a lot of time talking on social networks like Twitter and Facebook and producing on-line content about their companies, affiliated organisations and themselves. Computers and devices, now IP enabled and connected to the internet, now have the ability to send their instrumentation information into internet. The latter phenomenon is known as 'the internet of things': a description of how connected devices and sensors, from shoes to thermostats to cloud server farms, now have a voice and can make information about how they are used and what they experience accessible to data crunching algorithms. These algorithms would then produce insights that can be feed back into the real world and affect everything ranging from peoples behaviour to how corporations are run.

Handling all this data is a massive computational challenge. Compounding the challenge is that data is  growing exponentially, may be stored over the place and even kept in different formats. To address these challenges two key technologies have evolved to help us along: MapReduce and NoSQL.

But before we delve into these let's break down the attributes of Big Data into a bit more detail.

Friday, 21 December 2012

Cloud Recipes: Build and Deploy an Azure Web Role with and GitHub

In this recipe we will create an Azure Web Role (Cloud Service Project), add the solution to a Git Repository, Download CruiseControl.Net server and set-up a build and deployment script to build from the Git Repository and deploy to the Azure Web Role.

To complete this recipe you need the following:
  • The latest release of Cruise Control.NET ( - Download and install here 
  • A Microsoft Azure Subscription - sign up for a three month free trial here.
  • A Git Account - sign up for a free account here.
  • Putty Gen and Putty Agent can be downloaded here.
  • Git  
  • The .Net framework 4 or above
  • The Azure SDK 1.8 and all the goodies
  • Windows Azure Authoring Tools  
  • Windows Azure Tools for Visual Studio 
  • Visual Studio IDE 2012
I created this recipe on one machine with everything installed in one place. In the real world you would have a dedicated build server.