Matthew Butt

Experience report: running the 7digital Technical Academy

Posted in programming by bnathyuw on 20 November 2015

Between September 2014 and April 2015 I ran 7digital’s Technical Academy: a half-year training scheme to give a new cohort of software developers a grounding in software craft. Here are a few thoughts on how it went.

Choosing candidates

Our four participants came from diverse backgrounds: two were graduate recruits, one with a degree in Forensic Biology, the other in Physics. One internal participant was a member of our QA team, while the other joined us from the Client Relations team. Three of them were women.

We explicitly opened the external vacancies to candidates with non-Computer Science backgrounds, and this gave us access to a more diverse field of candidates. We wanted candidates who had shown an interest in software development, but didn’t demand any industry experience: programming a spreadsheet to analyse coursework data, working with Access databases in a summer job, or creating a personal website could all be evidence of this interest.

At 7digital, the technical test is to pair programme on a software kata. The usual aim is to assess the candidate’s aptitude for TDD, and to see how well they work with another person. We used the same test for our Technical Academy candidates, but were fully aware that they were unlikely to have any TDD experience. Instead, we used this as an opportunity to find out how quickly they could pick up these techniques. At the beginning of the 45-minute exercise, I took a fairly directive role as Navigator: explaining what a unit test was, how an assertion worked, and telling the candidate what to type. By the end of the session, our successful candidates had demonstrated that they had picked up all the key concepts, and were capable of writing new tests with much less direction. This aptitude for learning was the most important quality we sought in our candidates.

Joining a team

Each participant joined one of the development teams, where they were expected to pair with a more experienced developer from the beginning. In addition, we ran several learning sessions a week, and expected them to work on a personal project over the six months of the academy. We suggested that they divide their time between academy and team work roughly 50:50.

New recruits at 7digital are assigned a Mentor, who has a pastoral role, catching up with them frequently and helping them settle in. We arranged Mentors for our two new joiners, and all four participants were also assigned a Tutor, whose role was to help with with any immediate technical issues during the academy, particularly in the project work.

Learning sessions

We organised a range of learning sessions, and implemented a pull system, choosing topics to address questions that had recently arisen during the participants’ project and team work. We met every Monday morning to finalise that week’s sessions, and to start planning for the following week. Apart from keeping a list of potential topics, we didn’t plan further than two weeks ahead.

Some of the sessions were hands-on practical exercises. At the beginning of the academy, we got the participants into the habit of TDD by running mob programming kata sessions: I would sit with the four of them around a computer, and they would pass the keyboard around in 5 minute sessions. As questions arose, we would sit back from the keyboard to discuss them. I introduced programming concepts and features of the IDE (Visual Studio with ReSharper) as we went along, so they could become familiar with running tests, elemental refactoring shortcuts and so forth.

Some of the sessions were more theoretical, and we enlisted colleagues to give talks and demonstrations of topics where they had particular expertise. Initially I took responsibility for organising this, but as our participants’ confidence and familiarity with their colleagues grew, I handed responsibility for this over to them.

Near the end of the course we ran some presentation sessions: one on the SOLID Principles and a couple on Design Patterns. Each of the participants chose a principle or a pattern and gave a short presentation to the others explaining it (I pitched in and gave a presentation on the Liskov Substitution Principle so as to make up the numbers). Some of the participants were rather nervous about doing their first presentation, but the results were impressive, and it was great to see their confidence boost once we had run these sessions.

Finally, we arranged a weekly reading group. During the first three weeks I led the group in a discussion of chapters 13–15 of Eliyahu Goldratt’s *The Goal*, which give the participants an accessible introduction to the Theory of Constraints, which underlies much of the Kanban methodology. After this, they started reading material on code design, and soon told me that they were happy to continue these sessions without me. The approach of discussion one or two chapters each week seemed to work very successfully, as they could engage properly with the issues.

The project

The project was a key focus of the participants’ learning. We sought ideas from colleagues across the company, and then let the participants choose a project. The person who had suggested the project acted as client, and was expected to be available to answer any questions, and to come along to demos to see how the work was progressing. Tutors were also expected to help out and give guidance.

We emphasised iterative development in the projects, encouraging our participants to get a walking skeleton running and deployed to a server on the network through our CI server (TeamCity) as soon as possible. Only then did we suggest they start fleshing out functionality. We also stressed the importance of doing TDD from the start. This approach front-loaded many of the difficulties in the projects: participants found it hard work to get going, but once they had a deployed project, they found they could pick up speed in their work.

We arranged frequent demos in which the participants could show off the progress they were making in their projects, and get feedback from their Clients and the rest of the academy.

Unlike in their team work, where pair programming was usual, much of the project work was done solo. There was a fantastic moment of revelation about a month before the final demonstrations, when it became clear that several of the participants were struggling with technical issues, and were worried whether they would be able to complete their projects in time. I suggested that rather than working solo, they work together in rotating pairs to solve these problems. At our next catch-up they reported that they had solved the problems and made more progress in those short pairing sessions than they had in the previous weeks’ solo work. For our participants to learn first-hand the value of pair programming less than six months into their careers was wonderful.

What worked

  • We found fantastic recruits and excellent internal candidates.
  • Pull learning was very successful.
  • The projects gave a good context for learning.
  • The participants developed an excellent team spirit and ability to self-organise.
  • The focus on XP and Software Craft skills equipped the participants with skills that are lacked by many developers with many more years’ experience: we created four exceptional software developers.

What didn’t work as well

  • Having a Client for each project worked better in theory than in practice; some didn’t even attend the demos.
  • Participants sometimes had difficulty getting a good balance between team work and Technical Academy work, and there were weeks in which their projects got no attention.

Would I do it again?

In a heartbeat. It was an amazing experience, and seeing the quality of our graduates is incredibly gratifying. I have now left 7digital, but there is a new Technical Academy kicking off as I write this, led by one of last year’s cohort. I wish them the very best of luck!


 

Edited on 20 Nov 2015 at 15:04 to mention the presentation sessions.

Edited on 26 Sept 2017 at 16:31 to remove a reference to an individual whose political views are not consistent with the spirit of this blog.

Watch out for exceptions in NUnit TestFixture constructors

Posted in programming by bnathyuw on 16 February 2015

Don’t do anything that might throw an exception in a TestFixture constructor: your tests will be ignored, rather than failing.

My colleague Chris and I have been playing around with polymorphous testing, taking advantage of the fact that you can pass parameters to an NUnit TestFixture like this:

[TestFixture(parameter1)]
[TestFixture(parameter2)]
public class BazTests{
  public BazTests(Blah parameter){
    ...
  }
}

We wanted to use these parameters to pass in a collaborator, which would then enable us to run the same tests against different implementations of the same interface. However, we immediately encountered difficulties, as the TestFixture attribute will only take parameters that are compile-time constants, which rules out directly passing in a collaborator class. If you are adding parameters to a Test, you can use the TestDataSource attribute to pass in more complex arguments; however, no such attribute is available for TestFixtures.

To get round this, we created a static factory that would then create our dependency according to the enum value passed in:

[TestFixture(TestSetting.Foo)]
[TestFixture(TestSetting.Bar)]
public class BazTests{
  private ITestHelper _testHelper;
  
  public BazTests(TestSetting testSetting){
    _testHelper = TestHelperFactory.Create(testSetting);
  }
}

However, some of our implementations of ITestHelper require a connection string, and when it is not present, a NullReferenceException is thrown. We would have expected some of our tests to fail because of this, but instead they were just ignored, and as TeamCity disregards ignored tests, this meant that our builds were treated as successful.

It suspect the tests are ignored because exceptions in the test constructor are not sent to TeamCity as errors; rather the exception must happen in one of the attribute-decorated methods.

The code gave us the correct failures once we had rewritten it like this:

[TestFixture(TestSetting.Foo)]
[TestFixture(TestSetting.Bar)]
public class BazTests{
  private TestSetting _testSetting;
  private ITestHelper _testHelper;

  public BazTests(TestSetting testSetting){
    _testSetting = testSetting;
  }

  [TestFixtureSetUp]
  public void TestFixtureSetUp(){
    _testHelper = TestHelperFactory.Create(_testSetting);
  }
}
Tagged with: , , , ,

TfL: “Sorry you didn’t like our shit plans for Elephant; we’ve responded by making them shitter”

Posted in cycling by bnathyuw on 21 August 2014

I responded to TfL’s consultation on improving Elephant and Castle. I criticised the inconsistent and confusing layout for cyclists, and the lack of consideration for pedestrian’s desire lines.

Here is their considered response (emphases mine):

Dear Stakeholder

Thank you for taking the time to provide us with your views on our proposals to transform Elephant & Castle Northern Roundabout.

After carefully considering all of the feedback received, we have made the decision to proceed with the scheme. This will include taking forward the design for northbound off-carriageway cycling provision along the Elephant and Castle Link Road as outlined in Option B. However, following feedback from the consultation and further traffic modelling, we will be making a number of modifications to the design.

A full report detailing the responses received during the consultation, our response to many of the issues raised, and a full explanation of the changes to the proposed design is now available at www.tfl.gov.uk/elephantandcastle.

In summary, the key changes we are proposing to the plans consulted on include:

  • Progressing with the design in Option B but with a widened footway and a commitment to carefully consider the materials used to build the off-carriageway cycle lane in order to manage the risk of pedestrian/cycle conflict
  • Considering additional improvements for cyclists who wish to remain on the carriageway, such as widening the bus lane on the Elephant and Castle Link Road northbound to 4.5m to offer space for cyclists to overtake buses, and introducing a new cycle feeder lane on the approach to St Georges Road to offer better protection to cyclists approaching the junction
  • Following concerns about the safety of the proposed cycle lane with segregated kerb southbound on the Elephant and Castle Link Road, we will instead offer a 4.5m bus lane and use road markings to encourage bus drivers to exit in agreed places. This should provide more space for cyclists overtaking buses and also make the potential conflict points clearer to cyclists
  • To address concerns about the right turn cycle movement into London Road, a two stage cycle crossing will be provided which will enable cyclists to cross in parallel and on the same signal phase as pedestrians
  • Following concerns about congestion and queuing we will add an additional right turn lane into St Georges Road to ensure traffic can clear through this turn. We will also add an additional lane on the approach to the junction from New Kent Road. The space for these additional lanes will be taken from the peninsula and will not move the highway closer to residential buildings
  • We will reduce London Road from four to three traffic lanes. This will retain the three mature trees, ensure the road does not significantly move closer to residential properties and will also offer a better road layout for cyclists
  • Following concerns about waiting and crossing times at the new pedestrian crossings we will increase the ‘green man invitation to cross’ times on a number of the crossings. However, most journeys will have increases in average travel time from waiting at signals, which will be similar to other crossings at busy junctions in London

We are also exploring implementing a 20mph limit through the junction. This would help to regulate traffic speeds and improve overall safety conditions for all users of the junction.

We are still considering the re-location of the bus stop for services towards Camberwell. Discussions are on-going with the owners of the new shopping centre regarding their design and the plans for the new London Underground station entrance. Once more is known we will be able to make a firm decision.

Now the decision has been taken to proceed, the updated design will be subject to a detailed design process and  more detailed safety audits. It is expected that construction work will commence in late spring 2015. The main highway works are scheduled to take approximately one year to complete.

We have commissioned urban design specialists to design the new areas of public space that are being created, as well as looking more broadly at the design for the wider urban realm across the interchange area. We are working closely with LB Southwark, the new owners of the shopping centre site and other key stakeholders to ensure plans evolve jointly. We will engage with local residents and users of the interchange on these plans later in the year.

Please feel free to email us at STEngagement@tfl.gov.uk if you wish to discuss our plans in further detail.

I can’t say I’m impressed.

Andy Slaughter on DRIP

Posted in politics by bnathyuw on 11 July 2014

I wrote to my MP to ask him to oppose the Data Retention and Investigatory Powers Bill, which the government is rushing through after the European Court of Justice ruled that UK spooks were illegally accessing our data.

Here is what he had to say:

Dear Mr Butt,

Thank you for writing to me regarding the Government’s emergency legislation on communication data and interception.

As a result of a recent judgement by the European Court of Justice, the police and intelligence agencies are in danger of losing vital information which is used in 95% of serious and organised crime investigations as well as counter terror investigations and online child abuse.

In order to prevent this, UK legislation needs to change to be compliant with EU law. If these changes are not made, the police are likely to suddenly lose vital evidence this summer.

I share your concerns about the rushed nature of these proposals, but as a former criminal barrister I know how crippling the loss of this evidence would be in prosecuting dangerous or violent offenders.

Given the limited Parliamentary time available to discuss the emergency legislation Labour has ensured that the Government’s legislation is temporary and that it will expire in 2016. This will require the Government and Parliament to properly consult on and consider longer term proposals next year.

I think it is important to remember that this is not the Snooper’s Charter that the Government previously tried to push through Parliament and which I opposed. No extension of powers will be introduced in this temporary legislation. This legislation is designed solely to protect existing capabilities in compliance with the European Court of Justice’s ruling and in fact Labour has now been able to secure safeguards that have not previously existed.

We have also now secured agreement to our proposal for a major independent review of the legal framework governing data access and interception (the RIPA review we called for earlier this year) in light of the huge changes in technology. In the wake of the Snowdon leaks and the concerns raised about whether the legal framework has failed to keep up with new technology, there is a clear need for wider public debate about the right balance between security and privacy online, a review of powers and stronger oversight.

I think it is important that legislation is subject to full parliamentary debate and scrutiny and I am very disappointed that the Government has waited until the last possible moment to introduce these temporary measures. However, I will support these proposals as I believe it would be far too damaging in the fight against serious crime and terrorism if the police and intelligence services were to suddenly lose existing capabilities.

I will be sure to keep your comments and concerns in mind when I scrutinise the details of the Government’s plans in Parliament next week.

Thanks again for your e-mail. I really appreciate the time you have taken to share your views on this important issue.

Yours sincerely,

Andy Slaughter

Labour MP for Hammersmith

My message to Boris

Posted in cycling, politics by bnathyuw on 19 November 2013

The London Cycling Campaign is asking us to send an email to Boris to call for safe streets for cycling.

Here is my message:

Boris, this is your chance to be a cycling hero: act now to make our streets safe for cycling

Dear Mayor,

I am writing to ask you to take decisive action before anyone else is killed cycling around London. The six deaths of people cycling in this city in the last fortnight are not only tragic, they are completely unacceptable, and as mayor, you have the power and responsibility to prevent any further fatalities.

One of those killed was my parents’ old friend Francis, who was killed as he rode through Holborn on 5 November. Their devastation at losing a dear friend is matched by their fear that I, my brother, or either of our partners might meet a similar fate as we cycle around town. How can I reassure my mother that I will be safe on this city’s streets when her friend, who had several decades’ experience on our streets, was struck down?

You have recently responded to these deaths by announcing a ‘zero tolerance’ approach to traffic offences; I hope that this means that rather than nagging a few people on bikes, the Metropolitan Police will start taking seriously the commonplace disregard so many London drivers—many in their ranks included—have for the rules of the road. Enforcements of speed limits, parking restrictions, ASLs and cycle lanes would go a small way to making this city a pleasanter place to get around.

However, this all misses the point: cycling in this city is dangerous and stressful because the infrastructure is woeful. People on bikes are expected to negotiate their way around half-blind HGVs, huge buses, and cabs that pull up to the kerb when least expected. We are expected to share bus lanes, for heaven’s sake: the lightest and most vulnerable road users are positively encouraged to use the same space as some of the heaviest and most dangerous vehicles, and we have to leap-frog each other at every bus stop.

Nowhere are these shortcomings more apparent than on Cycle Superhighway 2, which for those on bikes must be the most lethal stretch of road in this city.

I see glimmers of hope that you, Andrew Gilligan, and your team are beginning to see what can be done, and the mock-ups of Blackfriars Road and Victoria Embankment are encouraging, not to mention the draft plans for Nine Elms; however, this is too little, too late while people are being killed on our roads. To force us to wait years for one or two safe streets is, quite frankly, criminally negligent.

So first, have a look at this article (http://therantyhighwayman.blogspot.co.uk/2013/11/cycling-in-london-what-could-be-done-now.html), which describes in great detail exactly what powers you and your planners have to make immediate, temporary improvements to our roads. Then act on this, at Bow, and on other principle roads in this city.

Second, show us some progress with these plans. A few pretty pictures are not good enough. Give us timescales, and tell us what temporary measures you are putting in place while you work on the final plans. You could even use temporary measures to test out new layouts.

Thirdly, ditch your commitment to ‘smoothing the traffic flow’ unless you can recognise that people on bikes ARE traffic, and that the most effective way to smooth the flow is by creating ample, high-quality infrastructure for two-wheeled traffic to pass the more lumbering road users.

Finally, remember that this is your opportunity to sell the case for better cycling infrastructure. This is your opportunity to show clear leadership in opposing those councils, Westminster, Kensington and Chelsea, and Greenwich in particular, that refuse to countenance dedicated infrastructure. In the light of the carnage on our streets you have the opportunity to embarrass them into permitting proper segregation on principle streets in the area; if you do this, you will really be a cycling hero, and not just a bumbling bloke on a bike.

Boris, this could be your moment. Carpe diem—carpe urticam—and transform this city into one that really is fit for cycling. This means infrastructure, not nagging PCSOs, and it is your responsibility to deliver it now.

Yours sincerely,

Matthew Butt

[Edited for typos]

Tagged with: , ,

Come & Hear my String Quartet, 19 November, 13:00

Posted in music by bnathyuw on 17 November 2013

The Ligeti Quartet will be performing my new String Quartet at 13:00 on Tuesday 19 November at St Stephen Walbrook; they will also perform Bartók’s 4th String Quartet. Admission is free, so please come along if you are in the area.

Meanwhile, here is my programme note, which will give a brief idea of what you can expect:

Matthew Butt, String Quartet (30 mins)

In March 2012 I saw the Arditti Quartet perform Alvin Lucier’s Navigations and was struck by how the incredibly slow pace of the work forces the listener to pay attention on a scale of minutes, rather than seconds. I wanted to explore this notion in a piece of my own, one that would stretch a small number of musical ideas over a long period of time.

Around this time a small melodic fragment started playing over in my mind: three notes rising up the harmonic series, then a fourth note stepping downwards rather than up. This motif became the basis of the ostinato middle section of this quartet.

The harmonic series suggested by this motif also led me to explore the use of subharmonics, or anomalous low frequencies. By bowing in a particular way, the performer can coax out notes which would normally be considered below the possible range of the instrument. Two sections of this quartet make wide use of subharmonics, contrasting them with the high, glassy harmonics used in other sections.

Finally, I used this piece to indulge my obsession with canon, mensuration, isorhythm, Greek lyric meter, prime numbers and algorithmic processes. The only truly conventional canon appears in the violins’ melodic section, but almost every other section draws extensively, if cryptically, on canonic techniques.

The pieces is in five sections:

Section 1: high, quiet, sustained notes; harmonics (5 mins)

The pitches start high, and slowly descend the harmonic series, getting less distinct and fading to nothing.

Section 2: low, brash, widely spaced notes; subharmonics (5 mins)

The quiet of the first section is brusquely broken. The pitches start low, rise towards the middle of this section, then descend again.

Towards the end of this section, the violins introduce a melodic canon which continues into Section 3.

Section 3: motoric ostinati (10 mins)

While the violins continue their melody, the cello introduces the 4-note motif, played to a 7-beat rhythm. After a while the viola joins with the same motif in a 5-beat rhythm. When the violins have played themselves out, they join the viola and cello to continue the ostinati in hocket.

Section 4: low, brash, sustained notes; subharmonics (5 mins)

This section takes the structure of Section 1, but the sonorities of Section 2. The pitches sink lower and lower, till all four players are below the conventional range of their instruments.

Section 5: high, quiet, widely spaced notes; harmonics (5 mins)

This section mixes the structure of Section 2 with the sonorities of Section 1. The pitches start high, descend towards the middle of the section, then rise towards the end. The instruments drop out, till the cello has the last word.

I was very lucky to have the opportunity to workshop this piece with the Ligeti Quartet in September, and their patient comments and questioning at this session have helped shape the quartet into the piece you will hear today.

Response to Shepherd’s Bush Town Centre (West) Major Scheme consultation

Posted in cycling by bnathyuw on 4 October 2013

My local council is consulting on changing two of the major roads in Shepherd’s Bush.

They claim that this scheme offers several improvements for cyclists. I disagree.

You can find the consultation at https://www.citizenspace.com/lbhf/transport-and-technical-services/sbtcconsult/consult_view. It closes on Sunday 6 October, so there’s not much time left.

And here is my response; I have sent it to the council officer, copied to my local councillors and MP, plus Jenny Jones and Andrew Gilligan at the Greater London Assembly.

Summary

  • The proposals for Shepherd’s Bush Town Centre make utterly inadequate provision for cycling, are inimical to broadening the appeal of cycling as a mode of transport in Shepherd’s Bush, and site completely at odds with the Mayor’s Vision for Cycling in London (http://www.tfl.gov.uk/assets/downloads/roadusers/gla-mayors-cycle-vision-2013.pdf), despite the fact that TfL is committing £2.5m to this project (http://democracy.lbhf.gov.uk/documents/s33513/Item%2019%20-%20Shepherds%20Bush%20Town%20Centre%20West%20CMD%20Report%20v2.pdf, s6.1).
  • I ask both LBHF and TfL to reject the current proposals, and conduct another consultation once plans have been drawn up that fit with the mayor’s vision, and can accommodate the levels and diversity of cycling are projected for the next twenty years. The standards of cycling provision in these proposals are already decades out of date, and not fit for today’s levels of cycling, and they are certainly not suitable to take us up to 2033; to implement the plans as they stand would be a gross waste of resources, either condemning this area to substandard provision for the next two decades, or requiring further, costly intervention to bring the area up to standard.

Key points

  • Uxbridge Road and Goldhawk Road are two important corridors for people commuting by bike. At the moment, many existing cycle commuters are fairly fast, assertive cyclists, but the carriageway narrowing and inset loading bays will make conditions worse for even these cyclists, as they will increase conflict with motor traffic.
  • These two roads are amongst the few crossing points of the Hammersmith and City railway, which otherwise forms an impermeable barrier to cycling across the borough. It is vital that they are safe and inviting for all people on bikes.
  • Uxbridge Road forms part of Ealing Council’s Mini Holland Bid (http://www.ealing.gov.uk/download/downloads/id/7010/ealing_councils_mini-holland_bid p10), and the proposals for Shepherd’s Bush fall far below the standards outlined in this document. TfL should not be committing money to a project that will could compromise the quality of another flagship project.
  • There are two primary schools in the consultation zone, and children already make their way to school by bike—on the pavement. These plans will do nothing to improve conditions for young children, and will do nothing to support more families choosing sustainable, active travel.
  • There is also a fair amount of pavement cycling by adults in this area, which demonstrates a latent demand for safe, inviting space for cycling. Again, these plans will make no provision for people unwilling or unable to cycle in heavy traffic, and pavement cycling is likely to continue.
  • The proposals for contraflow cycling on Lime Grove and Pennard Road are more welcome than the rest of the plans, and offer better access routes for residents, and students at the London College of Fashion; however these plans have been drawn up with inadequate provision turning onto these roads, and these routes will be of limited value if they are not incorporated into a decent network of quiet streets by opening up streets such as Hopgood and Richford Streets to contraflow cycling.
  • Finally, the treatment of the junction of Goldhawk Road and Hammersmith Grove is very poor for cycling and needs complete revision.

Survey Response

About you

  • I have been a resident in Shepherd’s Bush for 9 years, and hope to remain in the area for the foreseeable future. I have been cycling as my primary form of transport since early 2008. My daily commute to work in Shoreditch takes me along either Uxbridge or Goldhawk Road, so I am very familiar with the conditions they currently provide for cyclists, and will be directly affected by these proposals.
  • I am an experienced cyclist and am capable of cycling quickly and assertively, although this does not mean I always want to ride like this. For example, I might be tired, or carrying shopping, or have met a neighbour and want to cycle slowly and chat. In responding to this survey I have done my best to put myself in the position of a less assertive cyclist, as these are the people we should be encouraging to choose cycling as a mode of transport.

Improve the look and feel of the area

4. Widening of footways

I do not support this proposal

  • With the exception of the railway arches, the footways in this area are not unduly narrow. Extra provision for pedestrians would be nice, but I cannot see this as a priority, and should not be done at the expense of vulnerable road users. Narrowing the carriageway without dedicated, separated provision for cyclists will increase conflict between them and motor traffic, and for this reason I do not support this proposal.

5. Raised entry treatments

I can give this proposal my qualified support, as it has some effect at taming the traffic turning into side streets.

  • However, this provision should take measures to mitigate the risk to cyclists of left hook manoeuvres from motor vehicles. A separated cycle track at or near the footway level could continue across the raised entry, and would be protected by the same slowing effect as the pedestrian route. Also, kerbs or other physical barriers could be used to prevent drivers cutting the corner across the route of cyclists.
  • Second, an even better treatment would be to continue footway paving across the junction; this would make it clear to drivers that they are entering a completely different type of street, and would have a more pronounced effect on speed; again, this should be combined with protected tracks for cyclists.

6 Moving the bus stop

I support moving the bus stop from the railway arch, but do not support the proposed layout, as it continues to present conflict between cyclists and buses.

  • The bus stop under the railway arch is the most significant pinch point for pedestrians along this route. When I walk past here I often have to step into the road to pass people waiting for the bus, and when a bust is stopped here, it I have to wait till passengers have mounted and dismounted. Moving this bus stop makes a lot of sense. The one disadvantage will be to those making the connection between the tube and the bus, but I do not think this is a significant concern.
  • However, the treatment of the proposed bus stop is hopeless for cyclists, and I oppose the plans on these grounds. Allowing the bus stop to interrupt interrupt the cycle lane means cyclists will have to pull out into the motor traffic around stopped buses, which is an intimidating manoeuvre for less assertive cyclists. Furthermore, buses pulling into the bus stop will cut in front of cyclists on the cycle lane, which is also intimidating. A bus stop bypass should be constructed at each bus stop on this route: the cycle lane be brought into into the footway, and an island should be constructed to house the bus shelter and waiting passengers, along with crossing points over the cycle track. This has been done, for example, on the Cycle Superhighway 2 Extension, and could be done successfully here too. This is not just an issue with this bus stop, but with all the stops in this area, and all should be given a bypass.

Improve the pedestrian crossings, with signalised countdown crossings

7 Goldhawk Road/Hammersmith Grove

I oppose this proposal as it is inadequate for pedestrians, and hopeless for cyclists.

  • An ideal solution would be to close Hammersmith Grove to through traffic. This is a mostly residential road, with a small parade of local shops halfway down, and some office buildings at the south end; it is completely inappropriate for it to be a through road, and it would be improved enormously by removing through traffic and allowing only local traffic. However, even if Hammersmith Grove continues to be a through road, the proposed junction is not good enough.

Impact on Pedestrians

  • The proposed junction makes no provision for pedestrians to cross Goldhawk Road from the west side of Hammersmith Grove, and they will still have to make a two-stage crossing. A third crossing point over the west arm would fix this problem.
  • I support the proposal to replace the current pig-pen arrangement with a straight-over pedestrian crossing, but am concerned that countdown timers do more harm than good, by chivvying pedestrians to get a move on, rather than indicating that they have every right to cross the road.

Impact on Cyclists

  • Cyclists heading East along Goldhawk Road need not be stopped before the junction, as there are no conflicts with turning traffic.
  • Cyclists turning right into Hammersmith Grove will have to make an awkward right turn as part of the flow of motor traffic. If the lights are red, then they may be able to pull across the bike box (ASL), providing it is not blocked by motor vehicles, but if the lights are green they will have no choice but to cross two lanes of motor traffic to make this turn. This type of manoeuvre is intimidating to less assertive cyclists, and these proposals do nothing to address it.Cyclists should be allowed to continue through the junction up to the pedestrian crossing, and then make the right turn at the same time as the pedestrian phase; this way conflicts will be eliminated.
  • Cycling West along Goldhawk Road will be unpleasant, as there is no safe space for cycling, and no efforts to remove the risk of left hooks at Hammersmith Grove. The left turn will be fairly straightforward, but to continue straight ahead they will have to cycle at least in the middle of the inside lane, in order not to be cut up by left-turning traffic.
  • The approach from Hammersmith Grove will not be very pleasant, but is the smallest problem here.

8 Goldhawk Road/Wells Road crossing

I do not support this proposal, as it makes no provision for cycling.

  • At this crossing the cycle path has disappeared, and the carriageway is narrowed. The goal of slowing the traffic is absolutely desirable, but it is doubtful that the narrowing will be significant enough to achieve this, and there will be an increased level of conflict with cyclists, which will make these stretches of road feel unsafe. The cycle track should continue, separated, at the same width as along the rest of the road and any carriageway narrowing should affect only motor traffic. This could be achieved by placing smaller islands between the cycle tracks and the main carriageway: this would give the benefits of narrowing the carriageway for motor traffic, whilst giving an additional level of protection to cyclists.
  • Countdown timers offer little benefit for pedestrians: their main purpose seems to be to get pedestrians out of the way so the traffic flow can resume. I would favour puffin crossings, like the once recently installed across Goldhawk Road near Cathnor Road, as the smarter algorithms in these can reduce pedestrian waiting times.

9 Stanlake Road crossing

I do not support this crossing for the same reasons as above.

  • In addition, it appears that the fencing will be retained between the footpath and the carriageway. This reduces the options for informal crossing when the road is quiet, and also presents a danger to cyclists, as there is a risk of being squashed against the railing by a close passing vehicle, and no option to jump onto the pavement.

10 Shepherd’s Bush Market crossing

I support the provision of better crossing facilities here, but do not support the proposed implementation for the same reasons as above.

Improve traffic flow and improvements for cyclists

11 road layout

I oppose this layout, as it is totally inadequate for cycling.

  • Cycle lanes are neither mandatory nor separated. This means they will be driven in and blocked by vehicles parked or loading by the side of the carriageway, and even when they are not, they will not feel safe, particularly to people who are not happy or able to cycle assertively in traffic. They should be separated from the traffic either by raising with a kerb or with wands, armadillos or planters (Camden Council have just implemented separation on Royal College Street using armadillos and planters, and this could serve as a model); they must also be wide enough (2m) to ensure that there is sufficient space for cyclists of different speeds to pass each other comfortably, and of continuously quality as faster cyclists will not use them if their progress is interrupted.
  • At every side street there is a risk of left hooks from vehicles. This could be mitigated a) by passing the bike track over the raised street entry and b) by ensuring that the protection of the track continues far enough to stop vehicles cutting the corner across the bike track.
  • I am neutral on the removal of the bus lanes, as they do not appear to provide much benefit at the moment; however, if the space reclaimed from the bus lanes is not used to create safe conditions for cycling, then I oppose their removal.

There are particular issues with right turns for cyclists:

  • Right turns are awkward for cyclists at all times. assertive cyclists who are happy to ‘take the lane’ and put up with abuse from drivers for being ‘in the middle of the road’ can make a right turn in the same way as a driver, but less assertive cyclists who prefer to stay in the cycle lanes are faced with having to cross two lanes of traffic.

12 Parking and loading bays

I oppose these plans, as they present a further risk to cyclists, and also negate much of the claimed additional space for pedestrians:

  • The entry of vehicles into these lanes will be across the cycle lane, providing a dangerous point of conflict.
  • The cycle lane is placed in the door zone of parked vehicles, which means that the occupant of a car can easily open a door into the path of an approaching cyclist, which at the very least will force them to swerve, and could knock them into the path of oncoming traffic. These incidents can kill (http://www.thetimes.co.uk/tto/public/cyclesafety/article3626604.ece).
  • The correct arrangement should be footway—cycle track—buffer—parking—carriageway. The buffer reduces the risk of a cyclist being hit, positioning the cycle track to the left of the parked vehicle makes these incidents less likely, as this is the passenger side, and if a cyclist is hit, they will be knocked into the footway, rather than the traffic, which greatly mitigates the risk of injury. This is the arrangement used by Camden Council on Royal College Street.
  • As for the effect on pedestrians, the claim is made that these loading bays will form part of the footway when they are not in use, but in fact the balance seems to operate the other way around: the claim is made that space is being reclaimed for pedestrians, when in fact it is being claimed for parking and loading.
  • However, I would tentatively support the provision of properly demarkated parking and loading bays, as the current situation, where the cycle lane becomes a parking lane as soon as 18:30 strikes, is useless.

13 Cycle provision

Two metre wide cycle lanes:

  • I welcome the proposal to increase the width of cycle lanes to 2m, but I cannot support these plans, as the lanes are discontinuous, unseparated and unenforceable, as explained above.
  • I support the introduction of contraflow cycling on Lime Grove and Pennard Road, although I believe this will have limited impact except on people who want access to these streets.
  • The small islands are not necessary at the entrances to these roads. Islands like these are frequently blocked by parked/loading vehicles, even when there are double yellow lines, and this forces cyclists onto the wrong side of the road. Clear paint on the road seems to be sufficient, and works very well in the City of London, which has implemented extensive contraflow cycling.
  • I have concerns about the treatment of right turns into these roads. At the very least, right turns into these roads should be made as easy as possible for cyclists who do not adopt an assertive cycling style, and the current plans do not do this.
  • As shown on the plans, turning right into these roads will involve pulling across the main flow of traffic. Extra space should be left in the cycle lane at these locations so people waiting to turn right don’t block those going straight on, and markings should be place on the road to make it clear that cyclists are expected to turn at these locations. I believe ‘elephant’s feet’ are approved for cases like these.
  • However, these roads would be much more useful as part of a continuous network. In particular, extending contraflow cycling along Richford Street and Grove Mews would provide an excellent parallel route to Hammersmith Grove. Therefore, contraflow cycling should also be permitted on the following roads as part of these plans; this could be as simple as adding ‘except cyclists’ to the no entry signs:
    • MacFarlane Road/Hopgood Street
    • Richford Street/Grove Mews
    • Sycamore Gardens
    • Titmuss Street

    And also these streets, which fall just outside the consultation zone, but could be included in such a traffic order:

    • Devonport Road
    • St Stephen’s Avenue
    • Godolphin Road
    • Stowe Road
    • Scotts Road

Additional cycle parking:

  • I support the introduction of more cycle parking, but there are no detailed plans for this, so it is difficult to comment further. The use of small rings (like these http://www.cyclehoop.com/products/cyclehoops/) on all lamp- and sign posts would be a very space-efficient way to achieve this.

SuDs and Pocket Parks

I have no particular comments on these proposals.

Surfacing, lighting and CCTV

I absolutely support the resurfacing of the carriageways. Uxbridge Road in particular has several dangerous potholes and should be resurfaced regularly.

Improved footways

I am happy to support this. A note of caution should be the lime trees outside St Stephen & St Thomas’s Church, which make the paving slabs very slippery; if paving can be found that avoids this problem that would be very useful.

Street lighting

I support better street lighting, particularly if it is more energy efficient.

CCTV

I do not support further CCTV coverage. We have quite enough already, and parking should be enforced by other means.

Appendix: each route in detail

Here is a brief summary of the problems that these proposals present to cyclists, following each of the routes.

Uxbridge Road West–East

  • Narrow, discontinuous, unseparated, unenforceable cycle lane
  • Awkward right turn into Coverdale Road.
  • Risk of left hook at Tunis Road.
  • Carriageway narrowing after Tunis Road.
  • Risk of left hook at Stanlake Road.
  • Conflict with loading bay after Stanlake Road.
  • Awkward right turn into Lime Grove.
  • Bus stop interrupts cycle lane.
  • Risk of left hook at Frithville Gardens.
  • Conflict with loading bay after Frithville Gardens.
  • Carriageway narrowing after Frithville Gardens.
  • Awkward right turn into Pennard Road.
  • Risk of left hook at Hopgood Street.

Uxbridge Road East–West

  • Narrow, discontinuous, unseparated, unenforceable cycle lane
  • Awkward right turn into Hopgood Street.
  • Risk of left hook at Pennard Road.
  • Carriageway narrowing after Pennard Road.
  • Conflict with loading bay after railway arch.
  • Bus stop interrupts cycle lane.
  • Awkward right turn into Frithville Gardens (blocked by bus stop).
  • Conflict with loading bay after Lime Grove.
  • Awkward right turn into Stanlake Road.
  • Carriageway narrows outside church.
  • Awkward right turn into Tunis Road.
  • Risk of left hook at Coverdale Road.
  • Bus stop interrupts cycle lane after Coverdale Road.

Goldhawk Road West–East

  • Discontinuous, unseparated, unenforceable cycle lane
  • Unnecessary stop for straight-ahead movements when the pedestrian crossing is not in use.
  • Difficult right turn into Hammersmith Grove.
  • Missing left turn into Titmuss Street.
  • Risk of left hook at Lime Grove.
  • Missing right turn into Richford Street (which should be treated safely).
  • Bus stop interrupts cycle lane after Lime Grove.
  • Cycle lane disappears outside the Market.
  • Awkward right turn into Woodger Road.
  • Bus stop interrupts cycle lane after Pennard Road.
  • Awkward right turn (through bus stop) into Bamborough Gardens.
  • Awkwards right turn onto shared island to get onto the common.

Goldhawk Road East–West

  • Discontinuous, unseparated, unenforceable cycle lane
  • Risk of left hook at Bamborough Gardens.
  • Bus stop interrupts cycle lane after Bamborough Gardens.
  • Awkward right turn into Pennard Road.
  • Risk of left hook at Woodger Road.
  • Cycle lane disappears outside the Market.
  • Risk of left hook at Wells Road (significant, as this is the entry to the bus depot).
  • Bus stop interrupts cycle lane after the railway bridge.
  • Missing left turn into Richford Stree.
  • Awkward right turn into Lime Grove.
  • Disappearing cycle lane approaching Hammersmith Grove, and then significant risk of left hook.

Thoughts on Marriage

Posted in politics by bnathyuw on 17 July 2013

My brother married recently. It was a lovely afternoon, and thrilling to see the two of them looking so happy, but what touched me most was something he said in his speech.

You see, marriage isn’t a big thing in my close family, and when pressed—ever so gently—on the matter, my brother and his girlfriend had always brushed off suggestions that they might get married, so it came as a wonderful surprise when they announced their engagement. And then, on his wedding day, my brother explained that, yes, they had never seen much attraction in marriage until I, his brother, married my partner Peer. This, he said, was what showed him that marriage still had a relevance today, and this was a tipping point in their decision to get engaged.

Of course, Peer and I didn’t actually get married. We couldn’t. Instead we entered into a civil partnership. But we have always spoken of each other as husbands, and have always referred to the day as our wedding, even if that wasn’t strictly true, and it was lovely to feel that our example, far from undermining the institution of marriage, had lent it contemporary relevance to a mixed-sex couple who might otherwise have been happy to continue cohabiting.

Today, however, the Marriage (Same Sex Couples) Act received royal assent, and soon we will be able to have a proper, legally recognised marriage, rather than a next-best civil partnership.

But I’m not celebrating.

First, there is the disgraceful way this legislation has thrown trans* people under the bus, and while I am pleased that I may personally gain something from the act, I cannot in good faith celebrate something that disregards the rights of a more marginalised group of people. It is fantastic that gay rights have progressed to this point, but saddening that those of our trans* friends lag so far behind.

Then there is the way that this act retains the gender-specificity of previous legislation: rather than removing references to ‘a man and a woman’ in previous legislation, this act simply makes additional references to ‘a same-sex couple’.

But there are some remarks by Helen Grant, in the discussion of the spousal veto on Gender Recognition Certificates, that add to the disquiet I feel about this.

On 21 May, Grant said:

It must be remembered that a marriage is contracted between two people who should have an equal say in the future of that marriage. We consider that it would be unfair to remove the right of every non-trans spouse to have a say in the future of their marriage before gender recognition takes place. 21 May 2013 : Column 1146

The implication here is that if one spouse is granted a Gender Recognition Certificate, the nature of their marriage changes, and that is why the other spouse’s consent is needed. In other words, a marriage between a man and a woman is not the same as a same-sex marriage, and the two are so distinct that someone should have a veto over their partner’s self-realisation to protect them from slipping from one form of marriage to the other.

What this means is that, far from opening up the existing institution of marriage to same-sex couples, we are in fact creating a new institution, also called ‘marriage’, in many ways interchangeable, but still different enough to merit the insertion of the spiteful spousal veto into this act. Funny enough, this is pretty much what civil partnership did, and that its lack of equivalence led to the campaign for same-sex marriage.

So no, I don’t feel we have achieved true equality. I don’t believe we will have achieved that until we can get marriage redefined in truly gender-agnostic terms as a union between two persons, with none of these weasel mentions of gender or insinuations that one configuration might be less desirable than another. In the mean time, I will recognise the passing of this act into law as an incremental step towards equality, but not the glorious triumph that some would claim.

Tagged with: , , , ,

Roles vs Activities

Posted in programming by bnathyuw on 17 July 2013

At work, Gonçalo sent round a link to an article by Michael Lopp on management and engineers. Lots of discussion ensued, much of it fairly tangential.

This discussion got me thinking about the difference between roles and activities, and I’m going to sketch out these ideas here.

Roles

It is easy to talk about roles: a Project Manager does X, a Product Manager does Y; a Developer does φ, a Tester does χ, and Architect does ψ. This thinking encourages us to assign roles to people: to turn them into jobs.

Lopp talks about ownership, and certainly, if a role is assigned to a person, you know where to go to to get answers in that domain. If I have a Project Manager, I know who will give me updates on the progress of the project; if I have a Tester, I know who to ask to test a piece of functionality.

But it’s also about blame. If I have a Project Manager, then I know who to shout at if the project falls behind schedule; if I have a Tester, I know who to sack if a vulnerability is released that leaks personal data.

And I wonder whether the focus on individuals filling roles not only encourages this focus on blame, but remains attractive when a culture of blame persists.

Getting away from blame

At my work, when something goes horribly wrong, we carry out a blame-free post mortem. We establish the facts of the incident, acknowledge the aggravating factors, take note of the mitigating factors, and come up with a plan for the future. During this process we recognise that people did things, but don’t get hung up on criticising them for their actions; rather we try to understand why they acted in the way they did, and how we can make this better next time.

This approach differs radically from the traditional approach of declaring ‘heads will roll’, initiating a witch hunt, and ensuring that the persons responsible are at the very least made to feel thoroughly shitty, and quite possibly relieved of their duties.

In conducting a blame-free post mortem, we are not interested in roles and responsibilities, we are interested in actions and activities. It matters less who acted than what action was taken; not who failed to act, but what action would have helped.

Activities

Recover from incidents is smoother if we focus on activities rather than roles, actions rather than people; can this shift in emphasis help elsewhere? I think it can.

Again, where I work we don’t have Architects. This doesn’t mean we don’t do Architecture: we do it all the time. Our team whiteboards are decorated with particoloured diagrams of the systems we’re building. We treat Architecture as an activity, not as a role, and this means that many people are involved, understanding of the decisions is pervasive, assumptions are more likely to be challenged, and single points of failure are less likely to exist.

And what happens if we make a catastrophically bad architectural decision? Well, there is no one to point the finger at, no convenient repository for blame, as the decision was collective and consensual. Instead, we can recognise that the decision was poor, learn from that, and adapt and move on.

Conclusion

I have seen how a limited shift in focus from roles to activities can work well. I wonder whether a more comprehensive shift would have further advantages. This isn’t to suggest that everyone should be engaged in all activities all of the time, but rather that by introducing flexibility, collaboration and sharing, we might be able to move further away from a culture of blame.

Tagged with:

Encapsulation isn’t just about code

Posted in programming by bnathyuw on 20 March 2013

In programming, we use the concept of encapsulation. Think of a hi-fi: if I add a radio to my setup, I expect to have a box with a few buttons on the front, and a few sockets on the back. This is the interface of the radio, and I expect it to be simple and predictable. What I don’t want is have to get out a soldering iron to connect it to my amp, or, even worse, have to fiddle around on the circuit board whenever I want to change the station.

We routinely apply this principle to software, but I’m beginning to wonder whether we should apply it to other systems too.

Let’s take a purely hypothetical example.

The Systems team at Brenda’s Badgers are making some infrastructural changes. One of these is to retire a server called Sauron, which is well past its prime and keeps failing unexpectedly. They send out an email to the dev team announcing the imminent decommissioning of Sauron, and asking for any potential problems to be flagged up.

Now, a couple of years ago it was decided that, rather than referring to servers by name, it would be a good idea to give them service names, which could resolve to their IP address. Sauron is used for various purposes, so it goes by the service names sett-cache-2.brendas.prod, brock-store-01.sql.brendas.prod and web-server-001alpha.www.brendas.prod. The developers always use these service names, and few of them were even around in the days of Sauron.

So, when the email comes round about Sauron’s imminent demise, no one is too concerned; this sounds like a piece of legacy infrastructure, so it must be someone else’s problem.

Crisis is narrowly averted when a developer in the Sow Care API Team does a search through their code, and finds a single reference to Sauron. They find this is being used in the same context as references to sett-cache-2.brendas.prod, and decide to do a bit more investigation, which uncovers the various services behind which this machine hides. A last-minute panic ensues, and, a couple of days behind schedule, Sauron is finally laid to rest.

[Now it seems to me that this has all come about because of a failure of encapsulation. The dev team shouldn’t need to know that there is a server called Sauron. Their concern is that there are machines that fulfil the services of sett-cache-2.brendas.prod, brock-store-01.sql.brendas.prod and web-server-001alpha.www.brendas.prod. By expecting the dev team to know about Sauron, the Systems team are leaking details of the internal implementation to the outside world. Instead, they should be using the common vocabulary of the service names.

Furthermore, if all the references to these services use the proper service names, rather than referring directly to Sauron, then the responsibilities of these services can be moved across to other boxes by changing the DNS configuration, rather than doing a full release, which removes a significant amount of fragility.]

So, in a post-panic retrospective, the Systems and Dev teams at Brenda’s Badgers got together to discuss why the process was so fraught. They agreed on the following changes:

  • In future, all code should exclusively use service names, to remove the fragility of pointing directly to individual boxes.
  • In future communications, the Systems team would refer to these boxes by the service names that point to them, rather than by their externally irrelevant names.

And everyone lived happily ever after.

[Of course, this isn’t really the end of the story: the service names themselves are smelly, as they seem to include version numbers. Further investigation might reveal multiple servers with load balancing distributing calls amongst them; this in turn might prompt questions about whether the dev team should even know about the individual machines, or should just be able to treat the services as black boxes.]

So, the moral of this little fable is that the notion of encapsulation is not only useful when writing code, but can also have applications in wider contexts: communicate data that need to be shared with a consistent vocabulary, and hide everything that doesn’t need sharing.

Tagged with: ,