The Sadness of Empty Seats

It is very sad to see all the empty seats at the Olympics in Rio — especially remembering how hard it was to get tickets four years ago.

I expect that not many people in Brazil are well enough off to afford tickets — though you’d think it would be incumbent upon the organisers to set the prices at a level where people could afford them. It’s not as if it’s the ticket-buyers who pay for the bulk of the games’ costs, after all. That would come from the corporate sponsors. Or so I would expect: I don’t have the actual figures.

You’d think that there would be a lot of tourists. I’m sure there are, but it looks like it’s not enough to fill the seats. Maybe getting to Brazil and buying the tickets is just too expensive for many.

And of course there were empty seats visible at London 2012 too, which annoyed everyone — especially when we discovered that many, many seats went to corporate sponsors, who then just didn’t bother to use them. But then, everything was shown as sold out on the ticketing site. Aparently in Rio that is not the case.

Oh well, you get a better view on the telly, anyway.

Proposed New Cycling Race for the Olympics: the “Commuter Race”

This is something that I wrote some notes on around the London 2012 Olympics, and just sitting here watching the Men’s Road Race on day 1 of Rio 2016, I thought I’d dig it out and finally post it.

Competitors have to ride stock bikes — no fancy superlight frames or custom wheels; just ordinary commuter-type bikes. They can be set up for the individual, but they must have mudguards and lights and EITHER a rack and one pannier OR the competitor must carry a backpack or messenger bag; the bag to hold a weight equivalent to (say) a laptop and a change of clothes.

The race to be a typical commute distances (say 5 miles?) carried out over normal commuting streets, during rush hour, with normal traffic.

Competitors get disqualified for jumping red lights or going the wrong way down a one-way street; and receive time penalties for going on the pavement (maybe disqualification there too, actually). They may receive a time bonus (or at least clock-stoppage) for unreasonable delays, as for example when an articulated lorry is reversing across the road and holding everybody up.

To be run as time trials with say a one-minute separation, so competitors should not be directly racing against each other.

An alternative version would have them use bikes from the city’s bike-hire scheme. They’d have to turn up at a designated pickup point, wait if a bike wasn’t available, and so on. This has the added advantage that it forces host cities to have or introduce such a scheme, and to keep the bikes well maintained.

It’s challenge that normal people — ones who commute by bike, at least — could really identify with.

Smith & Jones

The “other” Labour leadership candidate, as you might say, is called Owen Smith. There is aGuardian andNew Statesman columnist and noted left-wing writer called Owen Jones.

It’s easy to confuse them; I saw this article (which is actually from almost exactly a year ago, and is about the first leadership election, but never mind) today and was confused, because it seemed strange that Jeremy Corbyn’s opponent would be writing a piece warning of the attacks that will come if Corbyn wins.

Then I realised that the byline was Jones, not Smith.

All I can say is that Kid Curry & Hannibal Heyes, and Mel & Griff Rhys — and indeed, The Doctor & Martha — have a lot to answer for. 

Some Thoughts On Software Development

Before the job interview that I mentioned the other day, the company asked me to answer some questions in writing. I didn’t get the job, but I was pleased with my written answers (and they presumably helped me to get the interview, at least). So I thought I’d reuse them as a blog post. None of this should be surprising for anyone who knows anything about the software development field, but it’s interesting to reflect on how things have changed across my career.

What are some of the fundamental changes in your approach to software development you have adopted in the last few years?

There are two main changes that are fundamental and independent of languages and deployment environments: agile techniques and test-driven development (TDD).

Agile

Moving from waterfall to agile development was probably the most significant change to development practices in the industry. We always knew that breaking work down into smaller units led to better estimating, more modular code, and just better software. The genius of agile was to extend that understanding to the period of time spent on a block of work. A two-week sprint, with its work being specifically estimated, planned and developed, is just infinitely more manageable than a project phase lasting months.

Add to that:

  • self-organising teams which include someone from the customer or end user — or at least someone whose role is to represent the user;
  • accepting that change will happen, and embracing it;
  • and the discipline of saying that some features won’t be developed;

and we have a recipe for success.

TDD

Good developers always understood that testing was essential, and did it. But they used to follow a written test plan, or just have an idea of what needed to be tested and work to that. Testing was manual, hard to repeat, and error-prone.

TDD brought automation. So instead of writing a document listing the required tests, we can write code. That inherently makes the tests rerunnable, so regressions get caught before they become a problem.

But almost more important than that is the idea of writing the tests first. In an ideal world you write a comprehensive set of tests, write functional code until all the tests pass, and you’re done. It may not always work out exactly like that — in particular, adding tests to a mature codebase can be problematic — but writing tests first encourages us to write code that is easy to test, which tends to lead to better-designed, more modular code.

An added bonus is that the tests can help to document the code, by showing our expectations. And of course they make refactoring easy and safe, as long as they are in place before you start.

If you were to start your last project over again, what would you do differently?

The project I’m thinking of involved rewriting the product’s GUI into a modern, responsive, browser-independent form, using HTML 5 and Twitter Bootstrap.

The existing version was an old frames-based web app that only worked fully in Internet Explorer, and had to be tweaked when each new version of that browser came out. We had long wanted to modernise it, but there were always other demands on development time.

Eventually I got a chance to try a proof of concept for the change. The application uses JSPs and Struts action classes, and the brief was to continue using these as much as possible. I decided to start with one of the main display pages, the one that users spend most of their time in. The idea was to give a quick demonstration of what was possible; and it did, to a point. But what I hadn’t realised was that frames are not part of HTML 5. There are ways to keep using them, but it’s not easy, and not good practice.

So while the new look and feel of a single page was clear, it was far from clear how the various pages would interact, how they would be brought together to form the whole UI, without frames.

If I were to start the project again now, my first step would be to work out how to link the pages together into a single interface, in the absence of frames. Most likely I would use one or other of the forms of JSP includes.

However, if there was the budget to do a more complete rewrite — by which I mean one that did not necessarily seek to use the existing JSPs — I would probably make much greater use of JavaScript and Ajax, and use the action classes just to provide data to the Ajax calls.

What is your approach to testing, and how would you test your application?

I would use a mixture of automated unit testing using JUnit, automated GUI testing, and actual user testing, if at all possible.

This fits well with what I was saying above. There are, broadly, three levels of testing: unit, integration, and system. Though writing automated unit tests is a development activity, rather than a testing one. Certainly we wouldn’t expect dedicated QA testers to work at the unit-test level.

So let’s assume that we have satisfactory unit-test coverage and we are interested in testing the application as a whole. Automation is obviously key here, as well, both because it allows us to easily repeat the tests regularly — for every checkin, in an ideal world (and see below); and because it removes the need for testers to manually step through a written script, which is boring and error-prone.

I have used Selenium for automated GUI testing, with some success. It takes a significant amount of development work, because it’s doing a significant thing, but the effort should pay off.

However, even after all that, there is still no alternative to having someone sit down and actually use the application. Automated testing might pick up outright errors in how the user interaction works. But it won’t catch fine details like misaligned elements, typos in onscreen text, or just generally how it feels to use the application.

What are the benefits of Continuous Integration?

Continuous Integration takes us beyond the traditional daily build. It does more than just building, and does it more frequently than just daily.

At the simplest level it ensures that, for every commit, an incremental build of the complete product is made, and all the unit tests are run. In the most advanced case, as well as building and testing, the product can be deployed to test servers and integration tests such as the automated GUI tests mentioned above can be run. Realistically those tend to take longer, so it’s unlikely that you would do them for every commit, but they can certainly be run multiple times daily.

So we get the following benefits:

  • frequent builds catch problems in code integration;
  • unit tests are run frequently, catching any regressions;
  • integration tests are run regularly, catching other problems;
  • general confidence in the product is increased;
  • developers are happy to commit changes frequently.

Brexit Latest Thoughts

In today’s "Brexit weekly briefing" from the Guardian, they say that:

May is soon going to have to choose between a soft and a hard Brexit – one that maximises single market access and minimises immigration controls (which the City wants), or the reverse (which a majority of British voters want)

Now, as we’ve discussed before, you can’t really argue that a majority of British voters wanted any kind of Brexit. But let’s assume they mean “The majority of those who voted,” which is fair. Even then, you can’t really, fairly, state what it is that those voters wanted, since they were sold a pack of lies, and many voted that way merely as a protest.

On Corbyn, Electability, and Compromise

The other night we watchedLincoln, Steven Spielberg’s 2012 film about the US president. It covers just a few months towards the end of the civil war and his life, during the time when he was trying to get the Thirteenth Amendment to the US Constitution through the House of Representatives (the Senate having already passed it). That’s the amendment that outlaws slavery.

It was dramatised, of course.1 But what struck me, and what held resonances with our current situation, was the sheer amount of compromising he had to do.

Then I read an article onVox about Hillary Clinton, which included this:

politics, as Clinton never tires of reminding audiences, is about getting real things done for real people.

This is the problem that Labour is having now. Whether it’s Jeremy Corbyn’s fault or that of the MPs not backing him, in Labour’s current position it has no chance of getting into government. And if we don’t get into government we can’t do those “real things” for “real people.”

However, I’m far from being convinced that Owen Smith, even if he were to be elected as leader, would put us in any better a position. As well as being largely unknown in the country, he has what looks a slightly shady past, with his lobbying for Pfizer and speaking against the NHS. Though to be fair he rejects any talk of privatisation now.

Corbyn is constantly criticised for not building bridges, not reaching out to people within the party – even within his cabinet, as I linked to the other day. I think it’s fair at this point to say that he is at fault to some degree on the Remain campaign. And I’m certainly unhappy with his call, early on the day after the referendum, for Article 50 to be invoked immediately. That does strongly suggest that his support of the Remain campaign was only ever half-hearted at best.

But even if that’s all true, it doesn’t mean he is solely or even mainly to blame for the disastrous result of the referendum.

And the ongoing, slow-motion disaster that is besetting the Labour Party is at least as much the fault of the plotters. In particular, their behaviour at Prime Minister’s Questions the other day was disgraceful. Their point – renewing Trident was party policy, so the leader should not be speaking against it – was a valid one, but the floor of the House of Commons during the most important event of the parliamentary week, is not the place to argue about it.

The idea of Britain still being a nuclear power, and the doctrine of deterrence, are even more ludicrous now than they were during the 80s when I was a member of CND. But like I say, there’s a time and a place to have that argument, and it’s the party conference.

Maya Goodfellow has a great piece about it all inThe Guardian:

The coup itself is unique in recent times, but Labour’s navel gazing is not.

The tribalism that grasps the Labour party is part of its problem. There’s an idea among lifelong supporters and MPs that you’re born Labour, you call the party your own and you will never leave it. This makes some sense – these are people whose families for generations have been Labour members, who spend their weekends canvassing and invest all their spare time, emotional energy and money into the party. They want to feel they have control over it.

But it [the tribalism] is also partly responsible for the current divisions. The people who feel entitled to call the party their own have competing viewpoints; some of them want to see a leftward shift and others range from wanting Miliband 2.0 to the rebirth of Blairism.

The idea too often seems to be “Vote for Labour because we aren’t the Tories”.

Instead of slinging insults at opponents or branding them all Blairites, Corbyn supporters would do better to focus on the task at hand – winning a future general election.

That idea of the divisions on the left go further than just the Labour party. I thought it was well summed up by this banner that I saw on the Palestine Solidarity march two years ago:

March with banner showing 'CPGB-ML Communist Pary of Great Britain (Marxist-Leninist)'

“Communist Party of Great Britain (Marxist-Leninist),” it says. You can just feel the layers of splits down the years that have led it to such an unwieldy name. Splits on the left are far from new. It’s an old criticism that we spend more time fighting among ourselves than fighting the real enemies.

Or in this case, than working out how to get back into power. Because going back to Lincoln2 and his compromises, to Hillary and her desire to get things done: it’s all for nothing if we don’t get a Labour government into power.

The problem is that Corbyn is “unelectable.” Is he? I’m not sure we know that. He’s sometimes compared to Michael Foot, who famously failed to win an election. But things are very different today from how they were in the eighties. It won’t be easy, but a Labour Party that got fully behind a left-wing leader might well be in a position to win power in 2020, when the next election is due. Or sooner, if May goes to the country over Brexit or otherwise.

In the end I wonder if Corbyn’s biggest problem isn’t just handling the Media. Maybe he needs an Alistair Campbell figure (or hell, why not: a Malcolm Tucker one). Does he even have a press secretary or Director of Communications?

All of this leaves me not knowing how to vote in the new leadership election. My heart is with Corbyn, as most of his policies match my own principles. But if the MPs won’t get behind him again, then we’ll be right back where we are now, with the party not providing a useful opposition, and with no likelihood of electoral success.3

Owen Smith, on the other hand, seems more likely to fight for us to remain in the EU. But can we trust him?

And either way, what will it do to the party as a whole? A party divided against itself, or worse, a party split in two, has no chance of forming a government.


  1. Though I wonder whether anyone with less Hollywood power than Spielberg could have got a film made that was so much about talking and legal and political manoeuvring. []
  2. No left-winger, of course, though seeing the Republican Party today, it’s impossible to understand how he could have been one of its founders. []
  3. Because, I contend, of the split, rather then necessarily the leadership. []

Recent Events

It’s been a strange few weeks.

There was the referendum, and its immediate aftermath. That’s still ongoing, of course, and won’t be over any time soon.

Then there was my leaving do from work, as I’d reached the end of the at-risk period, and am now redundant, obsolete, out of work, etc. The do was good. We had a decent turnout of current and former colleagues. My boss’s boss’s boss, the one who told us the news that we were being made redundant, turned up (he is the only one of the hierarchy who is based in Britain, the intervening layers being in Manila) and paid off the tab at the time he left, which must have been about 7pm. We still managed to spend just over £250 after that, which was optimal, as there were five of us.

I got an Uber home, and accidentally discovered what the difference between “Pool” and “UberX” is. I found myself in a car with four strangers (including the driver). To be honest I don’t think “Pool” was an option when I last used an Uber. I assume the “X” means “Exclusive.”

Anyway, they were all going to Islington, which left me to snooze on to Hackney, so it worked out fine.

And then I was unemployed. It didn’t quite hit me at first, because my beloved and I had a weekend trip to Avebury, which was fascinating. Here’s a picture of some stones. And a sheep.

AveburyCoveAndSheep

But Monday dawned, and I set to with my new daily plan:

  • 8:00 – Get up, go for a swim.
  • 9:00-ish – Home, breakfast.
  • 9:30-12:30 – Job-hunt things.
  • 12:30-1:30 – Lunch.
  • 1:30-5:00-ish – Side projects (indie dev/writing).

As you might imagine, I haven’t exactly been sticking to that 100%. But the idea is that it’s going to be important to have some structure to my day now that I don’t have one imposed by full-time employment. And job-hunting can be very time-consuming, so treating that as my job for at least part of each day seems like the right thing to do.

The first day was strange, because I kept having this sense at the back of my mind, “I’m working from home today, so I’ll be in office tomorrow,” which would have been true on Tuesdays and Thursday afternoons for the last few years. But then of course it would hit me: no office; no job.

I’m enjoying the experience, though, so far at least. I’ve managed to do pretty well with the schedule, and even extended the swimming to using the gym at the local leisure centre. This is the first time I’ve ever used a gym, except for a few years ago when I had physio after injuring my leg.1 The guy who did my induction managed to hide his disbelief of this fact quite well. And now that I’ve done a few sessions I’m thinking, “Why didn’t I do this years ago?” Oh well.

So all in all, a time of change and newness — which would generally be good, and some of it is. But see the first point, above, and the debris from that. An unknown new Tory government who don’t seem to be quite willing to accept that parliament is sovereign, and so it needs to decide whether or not to invoke Article 50 of the Lisbon treaty. And Labour too busy tearing itself apart to hold the government to account.

As to the Labour leadership business, I’ll have more to say about that when I’ve worked out what I think.


  1. I’m wryly amused to see that at that leg link from 2004 I’m expressing bafflement about people who would want to leave the EU. []