Book review: BDD in Action by John Ferguson Smart

bddinactionBack to technical reading with this book BDD in Action by John Ferguson Smart. BDD stands for Behaviour Driven Development, a relatively new technique for specifying software requirements.

Behaviour Driven Development is an evolution of the Agile software development methodology which has project managers writing “stories” to describe features, and sees developers writing automated tests to guide the writing of code – this part is called “test driven development”. In behaviour driven development the project manager, along with their colleagues who may be business analysts, testers and developers, write structured, but still “natural language”, acceptance criteria which are translated into tests that are executed automatically.

Behaviour Driven Development was invented by Dan North whilst at Thoughtworks in London, there he wrote the first BDD test framework, JBehave and defined the language of the tests, called Gherkin. Gherkin looks like this:

Scenario: Register for online banking

Given that bill wants to register for online banking

When he submits his application online

Then his application should be created in a pending state

And he should be sent a PDF contract to sign by email

The scenario describes the feature that we are trying to implement, and the Given-When-Then steps describe the test, Given is the setup, When is an action and Then is the expected outcome. The developer writes so called “step definitions” which map to these steps and the BDD test framework arranges the running of the tests and the collection of results. There is a bit more to Gherkin than the snippet above encompasses, it can provide named variables and values, and even tables of values and outputs to be fed to the tests.

Subsequently BDD frameworks have been written for other languages, such as Lettuce for Python, SpecFlow for .NET and Cucumber for Ruby. There are higher level tools such as Thucydides and Cucumber Reports. These tools can be used to generate so-called “Living Documentation” where the documentation is guaranteed to describe the developed application because it describes the tests around which the application was built. Of course it is possible to write poorly considered tests and thus poor living documentation but the alternative is writing documentation completely divorced from code.

Reading the paragraph above I can see that for non-developers the choice of names may seem a bit whacky but that’s a foible of developers. I still have no idea how to pronounce Thucydides and my spelling of it is erratic.

BDD in Action describes all of this process including the non-technical parts of writing the test scenarios, and the execution of those scenarios using appropriate tools. It takes care to present examples across the range of languages and BDD frameworks. This is quite useful since it exposes some of how the different languages work and also shows the various dialects of Gherkin. BDD in Action also covers processes such as continuous integration and integration testing using Selenium.

As someone currently more on the developer side of the fence, rather than the (non-coding) project manager BDD seems to add additional layers of complexity since now I need a library to link my BDD style tests to actual code, and whilst I’m at it I may also include a test-runner library and a library for writing unit tests in BDD style (such as spock).

I’ve had some experience of managing Agile development and with that hat on BDD feels more promising, in principle I can now capture capabilities and feature requirements with my stakeholders in a language that my developers can run as code. Ideally BDD makes the project manager and stakeholders discuss the requirements in the form of explicit examples which the developers will code against.

BDD in Action has reminded why I haven’t spent much time using Java: everything is buried deep in directories, there are curly brackets everywhere and lots of boilerplate!

I suspect I won’t be using BDD in my current work but I’ll keep it in the back of my mind for when the need arises. Even without the tooling it is a different way of talking to stakeholders about requirements. From a technical point of view I’m thinking of switching my test naming conventions to methods like test_that_this_function_does_something arranged in classes named like WhenIWantToDoThisThing, as proposed in the text.

In keeping with my newfound sensitivity to the lack of women in technical writing, I scanned the acknowledgements for women and found Liz Keogh – who is also mentioned a number of times in the text as an experienced practioner of BDD. You can find Liz Keogh here. I did look for books on BDD written by women but I could find none.

If you want to know what Behaviour Driven Design is about, and you want to get a feel for how it looks technically in practice (without a firm commitment to any development language or libraries) then BDD in Action is a good place to start.

Book review: Where the Animals Go by James Cheshire and Oliver Uberti

animalsgoIt is becoming a tradition for me to receive a beautiful James Cheshire and Oliver Uberti coffee table book for my birthday. A couple of years ago it was The Information Capital, this year it was Where the Animals Go.

Where the Animals Go is a collection of stories and visualisations all relating to the tracking of animals, each story occupies at most a few pages and is accompanied by a couple of maps which trace the paths of one or more of the species in question across the earth. The maps are beautiful.

The book starts with an introduction which covers the evolution of animal tracking technology. The bulk tracking of the movement of animals on an hourly or faster basis has become easier with the advent of commodity GPS devices since the 1990s. Some of these raw data are now being published on aggregation websites such as Movebank.

Precursors to these GPS tracking systems are old-fashioned bird-ringing – a passive technique which relies on recapture of animals and has been around since the early 19th century. The Argos system relies on data from tags being transmitted to a small constellation of satellites – it has lower temporary and spatial resolution than GPS. There are also radio and acoustic tracking methods which have been around from the sixties.

In the text we discover how ants have been tracked in an artificial nest using tiny bar codes, and Daphnia zooplankton have been tracked with fluorescent nanoparticles in a tiny aquarium. Penguin colonies have been identified, and numbers estimated, from satellite imagery of the guano (posh word for poo) that they stand amidst.

I must admit to being a bit of an enthusiast for tracking myself, particularly when out skiing or walking. I used use GPS to geotag my photographs – parenthood has put a stop to such pursuits. I started using GPS about 10 years ago when the process was a bit clunky both in terms of the hardware and the software to process tracks. Nowadays I can record a GPS track on my watch or a mobile phone. So I can easily see how advances in technology relate to advances in the study of animal movement with GPS sensors becoming feasible for ever smaller animals.

After introducing the technology there are then three parts covering animals on the land, in the water and in the air.

The tracks of troops of baboons seemed most similar to the tracks of my Alpine skiing holidays. In this study a number of baboons from the same troop were tracked, this made it possible to see something of the leadership, or otherwise, behaviour of the baboons but this is actually unusual – in most cases a small number of individuals from a group are tracked.

Most entertaining are the tracks of animals who have been relocated for human convenience, and promptly return to the place from whence they came – pythons and crocodiles are in this group. Sadly, I suspect this type of behaviour does not end well for the animals concerned.

Related to this are those animals who live in close proximity to humans and find their why blocked by major highways, mountain lions in California – for example. Animal tracking can show the degree to which major highways cause a problem, and also show the way to solutions in providing corridors.

Sometimes tracking clears animals of what humans consider to be mis-deeds – the tracking, by acoustic sensors, of sharks in Hawaii falls into this category. More benignly it has been discovered that oilbirds in Venezuela did not simply foray out of their nesting caves at night and return at dawn, thus failing to carry out vital ecosystem services such as dispersing seeds. Instead GPS tracking showed that they spent days out in the forest foraging, and roosting in trees.

Generally the animals portrayed are depicted moving in a plane (mathematically speaking) across the land but sometimes they break out into the third dimension – an example is vultures spiralling upwards on thermals. Hang-gliding friends I know would be interested in this. Also included are the bar-headed geese, who migrate across the Himalayas, it turns out they generally stick to the lowest altitudes they can get away with, however they still exhibit great endurance in high altitude flying.

The accompanying text provides detail on what we see in the maps, and also some human interest in the scientists who collected the data.

Another beautiful book, and the references are sufficient for you to go and find out more about any of the individual stories. There is a dedicated website where you can see excerpts of Where the Animals Go.  

A real opposition

Labour no longer form an effective opposition. On the main issue of the day, Brexit, their leader was insipid in the referendum campaign, and the Remain campaign was hamstring because of this. And now the vote has passed their policy seems to be a vague “we’ll do Brexit but not as Brexity as the Tories”. They voted to trigger Article 50 in the absence of any practical acquiesce to their demands on Brexit.

Theresa May led a slim majority in parliament with no personal mandate, and a prime directive: Brexit that a very narrow majority of voters actually voted for and if they did vote for it then it was a glorious unicorn which frankly is not on the table (or in the stable, if you wish to avoid a mixed metaphor). Any reasonable opposition should be well ahead in the opinion polls, not 20 points behind as Labour is now.

The opinion polls as they now stand are not “will they / won’t they form a government”, more “what size rump of the Labour party will be left”.

Their main problem is leadership. Fundamentally a man who rebelled so often against the party in the past is incapable of leading it. The parliamentary Labour Party agrees, 80% of them voted against Jeremy Corbyn in a no confidence vote. Labour MPs don’t want Corbyn as their leader, why on earth should we want him to lead the country?

The problem with leadership has meant that the Opposition has scarcely had a function front bench since the 2015 election, and re-electing Corbyn as a leader as not helped in any way.

Labour as an opposition with a minority of less than 20 seats have been ineffective. Just think what it would be like with a minority in of more than 100.

Labour as a party is dead. It’s dead but it doesn’t yet know it. You can vote for it to make the corpse wiggle for a little longer or you can do something different.

Across the country Labour are saying “Don’t vote for them, they’ll let the Tories in”. The blunt truth is, they will let the Tories in with their utter incompetence and they’ll give them a free hand to do what they want once they are in. They rely on their “hereditary” vote and a presumption that they have the right to any vote that is not a vote for the Tories.

On the 8th June, vote for a real opposition, vote for the Liberal Democrats.

And they’re off!

How did we get here, facing a second general election only two years after the last one?

Theresa May called the election, possibly because she saw that Labour was historically weak – the Tories currently have something like a 20 point lead over Labour in the opinion polls. That’s much larger than any sort of margin of error, and if maintained until the election will give the Tories an overall majority in excess of 100 seats – see the Electoral Calculus website for a more detailed prediction.

Or it might have been because she was going to lose her majority of 17 through resignations of Tory MPs over election expenses. Channel 4 has done some great work researching this story: Channel 4 Election Expenses Investigation. As it stands Tory MPs and their agents could have charges brought against them during the election campaign.

MPs voted by more than a two thirds majority to allow the election, as required by the Fixed Term Parliament Act. In retrospect this is a bit surprising, clearly the Liberal Democrats have an interest in this General Election – things can’t be worse for them than the 2015 election. But why have Labour made this so easy? They could have forced a vote of no confidence instead of voting with the government which would have made little practical difference but would have not looked good for the government.

Of course the original cause for the General Election is David Cameron’s decision to hold a referendum on Britain’s membership of the EU to pacify the europhobic wing of the Tory party. He clearly expected to win the Remain vote in the referendum, and his failure led to the most spectacular act of political self-decapitation that I can recall.

This general election appears to have taken Labour and even Tory parties by surprise, but not the Liberal Democrats – as local parties we were asked by our HQ to select candidates last summer, after the EU referendum.

Regular readers of my blog will be aware that I’m somewhat political. I can’t maintain a mysterious and thoughtful mien in the forthcoming campaign before finally, publically revealing my voting intentions. I am the treasurer of City of Chester Liberal Democrats, so:

Vote Liberal Democrat on 8th June, wherever you are!

Book review: Man of Iron by Julian Glover

This review is on man-of-ironMan of Iron: Thomas Telford and the Building of Britain by Julian Glover. Telford fits in with my interest in the Industrial Revolution, which are longstanding – in my very early teens my first stay at a hotel was in Ironbridge for a weekend of visiting the museums in that area. More recently I moved to Chester which is not that far from the famous Pontscysyllte Aqueduct and the Menai bridge and London to Holyhead roads, all works Telford was involved in.

Telford was born in Eskdale in the Scottish Borders in 1757, a tightknit rural community from which a number of great names have emerged  – William Pulteney (formerly William Johnstone) key amongst them, as an early patron of Telford. His father, a shepherd, died shortly after he was born.

He originally apprenticed as a stonemason in Eskdale before travelling to Edinburgh and London, where he worked on the refurbishment of Somerset House. He next worked in Portsmouth where he started to be involved in architectural design. He moved to Shropshire to become (eventually) county surveyor in 1786, where he was engaged in a wide range of projects.

As we head into the 1790’s the projects he is involved in expand enormously. Starting with the Ellesmere Canal, which includes the Pontscysyllte Aqueduct. Originally it was intended as a lower level, stone structure with locks taking the canal into the valley, at one point it was proposed that it should carry a rail-way. However, when the moment came the economy and lightness of iron led to the high level structure we see today.

Telford then went on to an enormous construction project in Scotland including harbours, the Calendonian Canal, numerous bridges and roads which necessitated extensive biannual visits over a period of 20 years or so. This project was put in place by the government, keen to see development in the Highlands, and later in the period having more cash to fund such work having finished fighting the French.

In common with William Smith, who made the first geological map of Britain, and Erasmus Darwin he was tremendously mobile forever travelling at a time when travel was hard. (Both of these men were his contemporaries). Telford knew the Darwin family and admired Erasmus Darwin’s “The Loves of Plants”, an epic scientific poem (a genre that has long fallen into disuse). In his earlier years Telford turned his hand to (not particularly good) poetry in the manner of Robert Burns who again was also a contemporary and was born not far from Eskdale.

In addition to this he directed the construction of the London to Holyhead road including the Menai Bridge, and with spurs along the North Wales coast to Conwy. He also planned the Göta Canal which crosses Sweden from the North to the Baltic Seas. The book includes a lengthy appendix listing his works (and the resident engineers on those projects, where relevant), I did consider mapping all these works but decided the list was too long!

Much of his inner motivation we learn from his correspondence with Andrew Little, a boyhood friend which sadly ends in 1803 with the death at age 48 of Little. Telford never married and there is scarcely a hint of any relationships with any women, Glover suggests in passing that his relationship with Little may have been very deep.

In his correspondence with Little we see Telford’s voracious appetite for continuous learning, but also a degree of cunning in his ambitions. He is not just a skilled technician in his fields but also a skilled worker of contacts, and project manager. He had a keen eye for his progress.

There’s some discussion in the book as to how much we should consider the projects he was involved in as his individual successes or as part of a team. This seems to me to be something of a trap, we tend to seek out the hero, the individual in any venture rather than truly appreciate the team effort. Think for example the way in which individual footballers are adulated. This carries over into histories of science and engineering, much of popular history of science is about the “great man” rather than the broader sweep or the group effort. Telford was no doubt technically able across a wide range of topics, he knew how to work his patrons, and he seems an excellent project manager. It’s clear there were often others like William Jessop who were notionally his superior for projects such as the Ellesmere Port canal and some of the Scottish work and likewise he had strong independent subordinates, particularly in Scotland, who delivered the work. Often biographers seems to fall into the trap of considering their subject “not sufficiently recognised”.

Telford died in 1834, a somewhat diminished figure. By that time the railways were starting to spread across the country and they would soon displace the canals and roads that had been his life’s work. I can’t help thinking that the projects that he worked on such as the Menai Bridge, the London – Holyhead road and the Ellesmere Canal demonstrated that the railway lines which were to come were feasible, if not always economically viable. Many times whilst reading this book I googled for the bridges he had built and found them still standing, sometimes still in use, sometimes by-passed by newer versions built to carry traffic unimaginable 200 years ago. Nevertheless they represent an impressive legacy.