Wednesday, 27 November 2013

Contributing to Java

I have just written a post on contributing to Java for the London Java Community's JCP Panel. You can find the full post here:

Sunday, 24 November 2013

The LJC Open Conference 2013

Yesterday I attended my 5th LJC open conference, and as always it is one of my favourite times in the year. Most of the major conferences have been and gone and people are winding down ready for Christmas. However, the combined knowledge and enthusiasm of the community doesn’t reflect this slower time of year. 

This year I got a lot more involved with helping in set up and planning board activities, as well as giving a talk on TDD primer. The session board looked like this first thing in the morning:

There are roughly 5 streams of topics at the conference, what interested me was the focus on development of people skills and testing of code - there was definitely a strong feel of craftsmanship in the air. 
  • Core Java
  • Java EE/Application Servers
  • Testing tools and processes
  • Community and soft-skills
  • Workshops
The slides I gave for my talk are below, it's based on a longer talk I gave at JAX London. The idea was to give people who haven't tried Test Driven Development before some guidance in getting started and what some of the pitfalls can be. Sadly I had a Mavericks and projector based issue, which meant I lost about 10 minutes of the talk. However, the show must go on so I covered the first slides without a project whilst the hero of the day John Stevenson fixed the projector. Minstrels will write songs about this day...

Test Driven Development Primer LJC Open Conference from jpgough

I got some good feedback on the talk - I need to refactor the examples in the slides a fair bit, this will be done when I put the information I presented at JAX into a blog series.

I also went to a talk on testing with Spock. It's not usually something I'd be particularly interested with it not being core Java, however it was interesting to see a different take on testing. I quite liked the way you can be verbose in your tests and get a lot of boilerplate you require in JUnit for free. The final talk I went to was on progressing your career without losing technical focus. A lot of people looking for mentorship and guidance at a senior level on how to remain technical. It was a good session, but only touched on a few issues in the time - it looks like something that could be run as a bigger round table.

It was great to catch up with old friends and people I've worked with in the community over the years, especially now I am not in London as often. It's also helped me start to focus on my own learning plan for next year. It's always a motivating weekend and if you didn't get chance to go this year I can't recommend it enough. As always thanks to the sponsors IBM for a great venue and beer from Zero Turnaround and some dodgy car salesman Simon Maple for organising the event.

Tuesday, 3 September 2013

Leaving London and keeping in touch

At the beginning of the beginning of the year Megan and I had our first child Emily and moved to Bedford. This sounds more severe than it actually was, the commute down from Bedford to Kings Cross is only around 40 minutes. It's been a busy 6 months since then working on multiple projects with Stackthread, getting promoted to Vice President at the firm and as you can imagine not too much sleep.

As a family, we have decided to take a step which will involve us spending a lot more time together - but sadly means that I will be leaving London as a work hub. Having just completed major project milestones at the bank I work for, I decided it was time for a change of roles and found an exciting opportunity in Milton Keynes. From a personal perspective this also cuts down a 2 hour commute (each way to Canary Wharf) to 20 minutes, and reduces my outgoing costs on expensive rail tickets.

This has left me with many decisions to make about what projects to keep working on in London and how to keep in touch with specifically the London Java Community and the London Java Community Process Committee. For now, I'm not going to make any rash decisions and see how things pan out in terms of time available and what I realistically commit to. With ever limited time, I am trying not to spread my contributions too thinly and want to ensure that whatever I do chose to work on in the next few years has a solid impact.

Currently, I next plan to be in London on:

  • 29th-30th October for JAX London.
  • One Saturday towards the end of November for the LJC Open Conference

JAX London 2013 - TDD: The Benefits are more than just the tests

An introduction to my talk at JAX 2013 - also published here.

Back when I first started my career as a developer following University I was unleashed with little training in best practices, development methodologies or what to expect from the uncertainties in real world development. Before I could start to learn all these things I was quickly placed in my first job. The type of role I was placed into was fix problems and develop new features - with only guidance relating to the specific tasks at hand. There was no training on industry best practices, which underpin the quality of the software as professionals we strive to deliver - my own development languished.

Several years on, in my own time and through quizzing various industry leading technologists like Sandro Mancuso (at JAX London 2012) and Martijn Verburg (at numerous beverage centric establishments) I started to discover my personal points of improvement. I realised that there were steps I could take to improve the approaches I had in my toolbox for software problems. I took a look at my peers and people that were applying for job roles. Many listed Test Drive Development (TDD) as something that they used on a regular basis. I very quickly realised that a lot of people claim to practice TDD, but either don't do this at all or write integration tests rather than unit tests, as well as other ideas about what TDD is.

My talk at JAX London 2013 is designed for developers who have been too busy to appreciate the less obvious benefits of TDD, particularly the side effects and task breakdown from a cognitive perspective. The session will cover the basics of TDD, the use of mocking and how this helps break up the coding complexity using code and architecture examples. I will also convey my own experience of converting to TDD along with the benefits I have realised and how to convince developers who don't want to test the approach has merits outside of just high test coverage. The talk does not aim to sell TDD, but instead present facts and experiences that I have gained over the last year so developers can form their own opinions.

From taking these steps myself I produce code closer to the requirements, more maintainable code that is able to respond quickly to changes and my colleagues can look at the code and tests and quickly understand what is going on. Conferences are often the catalyst for personal improvement, and people interested in this space but haven't had time to explore it themselves will get some good practical advice on how to get going and what to expect.

Wednesday, 27 March 2013

My First Devoxx

Venue and kick off

I've walked past the venue many times, but had never realised it was even there (standard London). The space feels huge, with plenty power points, great wifi and crap coffee. Perfect for a great conference venue. The space isn't just space, it's been well planned and thought out to enable a fantastic community feel and corridore track. The venue is nothing without setting the right tone and introduction for the rest of the conference, which is what the keynote delivered. Conferences without keynotes and setting expectations really don't ever get going. Right from the beginning Dan Hardiker made it clear that the most important part of the conference was the attendees and helping attendees to find something at the conference to help them improve as a developer. The conference was also supported by a code of conduct, everyone is safe and knows the expectations here. This is also supported by the number of keen volunteers and organisers who have done a fantastic job of making the event in London bring in the community feel of Devoxx.


The keynote by Kevlin Henney bolstered the standard that is expected for speakers at Devoxx. The keynote "The Programmer" was thought provoking about how we see ourselves as professionals and how can draw comparisons between our experiences and other professions. It also explored different types of programmers and how their approaches to problems can be ineffective given the cognitive performance of humans. From the keynote I've taken away that I need to revisit my approach to development and time management, especially with my recent promotion. I also took away the fact I really need to work on one presentation and make it the best it can be rather than lots of smaller presentations. I've got an idea in mind which I am planning to submit to JAX London and Java Zone, not saying it will be even close to this - but a new standard is set!

Talk Highlights and Takeaways

I could write a blog post on every talk that I've been to whilst being at Devoxx, but I'll try and put together my thoughts and the talks that these have come from. Hopefully, if you're interested, you can then grab them from Parleys.

Are some of the people that are jumping to functional programming being immature in their choice? Jumping because it's the Justin Bieber of technologies and OO sucks (awesome quote Sandro). This was a great talk about OO principles and good quality design. It certainly matched a few talks I have given recently about "Is Object Oriented Programming Still Relevant" and why it is important to strike practical balances between OO theory and design.

There have been a few references to "You do write at least unit tests right?" - and I'm quite sure that the people that are at this conference do. However, how do we approach the rafts of developers that are not at conferences that don't write tests and believe that good design, software principles and tests are not conducive to being more productive? 

Charles Nutter's talk on invoke dynamic has taken a concept that I'm vaguely familiar with and got me thinking about how practical this could be to day-to-day Java developers. The one usage I've been thinking of is dependency injection without the need to do reflection. I need to think about this some more, but I'm also wondering if this could have an impact with not requiring to define dependency hierarchies - and effectively lazily load these or parts of these as required. This definitely needs more beer talk time.

Richard Warburton gave an excellent low level discussion of hardware features and how applications can struggle or thrive under certain conditions. I was glad it came with a disclaimer that these techniques won't be for everyone, as there is usually so many other things you can optimise before you'd get down to this level of crazy!

My thoughts have long been out on whether JavaScript is a complete solution for some of the more powerful products you can build in Flex and action script. Angular JS provides food for thought that there is a decent supporting framework to study in more detail. The main benefit seems to be a framework that supports a good separation of concerns and with that the testability that is required by large organised code bases.

I attended a few decent short talks on Mutability Detector and docx4j, both of which I wouldn't have been interested in a full talk, but was good to get an introduction as will potentially use both of these in the future.

Final Thoughts

  • Devoxx really is a community conference prepared and delivered by the community.
  • The atmosphere and friendly nature is something I've not seen outside of the LJC Open Conference at a large event in the past.
  • Thanks to all the organisers and volunteers for a fun and informative few days.
  • The conference is only just beginning, I must have only seen around 30% of what I wanted to see at Devoxx and now need a few more days to catch up with everything else on Parleys.
  • I've learnt a lot about Java, wider technologies and approaches to a wide range of technical problems and challenges. I think this conference would have been useful to developers of all levels.

Monday, 11 March 2013

Devoxx London 2013, What I'm Excited about on day 1

It's been a while since I last wrote a blog post! A lot has been going on since last years conference tour. The main thing has been the birth of my first child Emily, who is now 2 months old and growing well. As well as that I was promoted at work and have moved into a house in Bedford, what that does is I now have more time to write as I will be spending more of my life on a train.

Sadly, I did not have time to get my act in gear to get a submission in for Devoxx UK, however I have managed to obtain a ticket and am very excited about the event. I plan to write a few blog posts at and about the event as I don't have any talks to prepare. It's an amazing difference to be going to my first technical conference as a delegate, and in this stress free environment I'm excited about what I can learn and contribute to the conference. Conferences have had a positive impact on my career so far. The conversations I had with Sandro Mancuso, Ben Evans, Kirk Pepperdine, Richard Warburton and Martijn Verburg and others have shaped the products that I have been working on and my approach to technology. You simply don't get this from the average day, and you have to come out of your environment and comfort zone to improve your technical skills and appreciate new points of view. If you're in London Devoxx is simple the best opportunity to do this until JAX London in November.

I thought I'd highlight some talks that I'm very interested in that I think will be awesome (this doesn't mean I'm not interested in others, but these I will definitely attend)

55 New Features in Java 8

Looking forward to this one as although I've been involved in a few projects related to SE 8 it will be great to learn what's coming next. After seeing some interesting statistics on Java 7 uptake recently it will be interesting to see how many people make the direct jump from 6 to 8.

Banking, How hard can it be?

The title says it all really, and for anyone that's ever worked in banking I imagine there will be something in this talk that can be related to. I'm specifically interest in how companies are approaching more modern processes and techniques for benefitting their business and the success they have had with this.

Functional is cool, but do you know OO

Sandro is one of my favourite speakers and has had a positive influence to the way I approach problems. Recently I've run several sessions on "Is OO still relevant", so I'm hoping this will challenge my view point and maybe I will learn something about this functional programming business!

Performance Testing Java Applications

I've actually never seen Martin give a full presentation, and its always been in an informal setting I've spoken to him in the past. Often baseline performance of even non performance based systems is something that can easily be overlooked. I'm interested to understand more about how to even begin approaching systems where performance is a key business driver.

Hitting the limits of your hardware with Java

I've spoken to Peter once before at the London Java Community developer sessions and again was amazed to have access to an expert developer. At the time we were talking about ways to improve OpenJDK, some of the ideas and explanations behind his thoughts were excellent.

I think that actually just about confirms my 1st day and the first thing I've noticed is the schedule is quite narrow in terms of choice. However, I'm struggling to pick sessions because there's so many I want to go to. Several conferences I have attended have almost too much choice. The content committee has done an awesome job of making my life difficult. Not being able to chose what to go to is awesome, looking forward to sharing what I'm thinking about day 2 shortly.