ContrOCC Developer’s Hackday

Luke Canvin

We recently held the first ContrOCC Developer's Hackday, which was all about giving the team some time to work on things that would make the product a little nicer for them in some way. For example:

  • A development task or bug that's getting on their nerves but which isn't getting scheduled
  • Improving developer tools
  • Experimental development which might or might not work
  • A prototype solution or toy program to demonstrate an interesting idea
  • A spec or mockup for something more complex you’d like to work on
  • A collaborative project with other developers

As well as improving life working on ContrOCC, we hoped that the day would be a welcome break from our scheduled plan, and with everyone taking the day off together there would be the chance for a bit more interaction than usual with people taking an interest in what everyone was tinkering with.

We decided that the team would decide in advance what they wanted to work on, to help give as much time as possible on the day to implementing their ideas. The only ideas that had any sort of vetting were ones that proposed committing code to official repositories or tools.

The team's technical leads were available all through the day for questions, discussions and advice, and the whole team had lunch together in our pool room to chat about what they were up to.

The day's projects

Alan looked at improving the status summary page for ContrOCC's automated tests, switching to an HTML grid view with on-hover result details.

Chris developed a prototype version of "Did You Know?" tips to be displayed when ContrOCC starts. We have a long list of functionality we'd love to draw users' attention to, and this would be a great way to introduce users to features they may not have known about.

Chris' prototype of a "Did You Know?" tip.
Chris' prototype of a "Did You Know?" tip.

Jo worked on improving ContrOCC's help documentation; tackling some problem pages and researching how we might improve the help-generation tool we use in order to create help that is more tailored to a user's specific needs.

Julian looked at how we could adapt our database performance monitoring tools to help us better record and analyse performance information. He identified the most useful data to monitor and created SQL scripts to allow us to quickly set up and run the tools, and analyse the results.

Mark researched improvements to ContrOCC's web service technologies; looking at how feasible it would be to upgrade from Web Services Enhancements to Windows Communication Foundation.

Mike developed a tool to extract details from ContrOCC's database schema and visualise them in a web browser. He used HyperTree from the JavaScript InfoVis Toolkit to provide an interactive view of ContrOCC's database tables and relationships.

Mike's visualisation of the ContrOCC database.
Mike's visualisation of the ContrOCC database.

Steph spent her day cleaning up compiler warnings from the ContrOCC C# projects, allowing her to enable the "treat warnings as errors" build setting so that we can ensure no new warnings sneak in.

Tom worked on using the Microsoft Entity Framework tools to reverse engineer a layer of ContrOCC object model C# classes that maps to the database schema. Whilst the relative immaturity of the Entity Framework tools alongside the complexity of the schema meant that generating a UI from the model layer was not possible for the system as a whole, Tom did identify some sub-sets that would be good candidates. Tom also noted that probably the best use for Entity Framework would be in replacing Test Perform Actions - with C# wrappers providing intellisense.

Tom's ContrOCC Entity Framework.
Tom's ContrOCC Entity Framework.

Ulen looked into improving the automation of ContrOCC's component tests, which currently involve a fair amount of repetitive effort. He got a prototype up and running and plans to continue work on it as part of his training time.

We think the day was a real success and aim to hold them regularly.