Friday, 22 November 2013

Yesterday I had the privilege of presenting the very first session for vJUG, a new virtual Java User Group that allows us to span geographies when sharing talks and stories. I'm really interested in the vJUG idea, especially now I'm not in London - if we can find good ways to share knowledge without having to travel, that will help us reach people who don't normally go to conferences or don't have a local user group to go to. Not to mention cutting travel costs and saving the environment.

See the event, and the record of the IRC chat, here:

The slides are also online, but obviously they're part of the video as well:

Thursday, 7 November 2013

In previous years, JAX London would have been an easy, local conference to go to. This time it took me most of Sunday to get there, and not because of the Super Storm. Still, that gave me the day to finish off the tutorial I was running there on Monday morning. Not that I would be so unprofessional as to leave preparing things until the last minute, oh no....

But as in previous years, the main benefit of this conference for me was meeting most of the usual suspects from the London Java Community. For example, presenting were: Andy Piper; Barry Cranford; Jim Gough; Peter Lawrey; Sandro Mancuso; Simon Maple; Martijn Verburg; John Oliver: John Stevenson; Richard Warburton. The Community Night in particular also drew a lot of LJC members (including some first-timers) to JAX, and it was a really good "networking opportunity" (i.e. chance to have free drinks, catch up with friends and make new ones). I really enjoyed hanging out with everyone at JAX this year, I was tempted to write the names of everyone I spoke to and had fun with because it really made my conference, but I think that would make a very boring blog post. But if I spoke to you at JAX, you made my journey from Spain worthwhile, thank you.

As well as the LJC-types, there were some other really big name speakers too, including MongoDB's Chairman Dwight Merriman. Highlights for me were:

Ken Sipe's Spock talk. I saw this at GeeCON and that's why I started using Spock to test the MongoDB Java driver, but it was great to see it again and pick up some extra tips

Ted Neward's talk at the community night about being a CTO at a startup. It was really interesting, and nice to see a realistic view of the difficulties of that role.

James Governor's keynote on how Java got its Mojo back. I like seeing facts and figures to back up a viewpoint, and as you'd expect from the founder of an analyst firm, this talk was full of them.

As James mentioned during his talk, the audience at JAX was, as in previous years, somewhat passive. I'm not really sure why, as around 50% of the audience came from outside the UK so we can't even blame English reticence. And in a conference full of outspoken LJC-types, it seems an odd thing to have an unresponsive audience. Maybe it's the venue, the main hall in particular seems to lend itself to sitting quietly in the audience and expecting to be entertained.

I presented four times at JAX, because, well, on home turf one ends up doing more than one expects.

Firstly, a tutorial on the new Java driver for MongoDB (more on this later);

Secondly, a clinic for novice speakers. This was a lot of fun, and I think it was useful for everyone. I'd love to run this again (I probably will at the LJC Open Conference). The aim is to give new speakers confidence, not focus on details like building a slide deck.

Thirdly, the third time out for my "Design is a Process, not a Document" presentation. It's a relatively interactive presentation, which I don't think worked so well at JAX, but it's a fun presentation to give.

Finally, not only did I get roped into being on the panel for "How to start a community" at the community night, I ended up, somehow, moderating it. That was fun, it was the first time I've been a moderator, it's a role I usually avoid as moderators ought to limit the amount of talking they do, which doesn't sound fun to me.

The tutorial materials are available on GitHub. I haven't provided a lot of guidance on how to get started online, but the exercises are there, and the slides which present the concepts and suggest the order to tackle the tests in. If people use these materials, please feel free to give me feedback on them, but be nice - they were designed for an in-person tutorial, not an online one. But it is a good way to get a feel for the new MongoDB Java API (in its current, unfinished, state).

So, JAX London - great speakers, and a good conference to meet not only Londoners, but a lot of international people too.

Wednesday, 6 November 2013

For no reason other than LinkedIn communications are starting to irritate me, here's my personal LinkedIn Etiquette guide. Feel free to disagree with it all.

I'm not going to accept invitations from recruiters. Not just because I'm not looking for a job (who knows what the future holds?), but because I believe it shows a lack of respect to my network to bring recruiters one step closer to being able to contact them all. It's not about Evil or Good recruiters, but I really don't want to make it easier for lazy recruiters to spam people I respect (caveat: there are people who are technically recruiters who I have added into my network, either because I know them personally or because they have proved their worth).

If I get an invite without an introduction message from someone who's name I don't immediately recognise, I'm going to check out that profile to see if we have employers in common or common connections, but usually I won't accept that invitation. I know LinkedIn makes it easy to click one button and request a connection, but I think my LinkedIn network is valuable and made up of people I know (even if I only met you once at a conference), and a short introduction reminding me of where I know you from (or why you'd like to connect) is going to help my poor, beleaguered memory.

Endorsements - almost a total waste of time. People I have worked with and respect have accidentally endorsed me for things they know I've never worked on, simply because LinkedIn makes it too easy to click a button and endorse someone for two things they've already been endorsed for and a third thing which, through some LinkedIn magic algorithm, is probably related to what you've done before and LinkedIn hopes is only accidentally missing from your profile. If recommendations were too easy to game (and they were), endorsements are almost entirely valueless.

However, I do find LinkedIn enormously useful. I value it more than I think many others do for a few reasons:

It encourages you to keep your CV/resume reasonably up to date. I personally believe everyone should do this, not because you might want to hop jobs at a moment's notice (although it's nice to be able to do that), but because a) it's really difficult to remember what you did over the last 12 months, never mind a longer period - keeping your profile up to date means you can truly highlight the good stuff you've worked on, and b) if you've got nothing to add to your resume from the last 12 months, that's a good sign that you're not growing and your career needs a bit of love (if you think investing in your career is a Good Thing).

It's enormously useful for retaining a network of valuable contacts. This is why, in my opinion, one needs to be reasonably selective about who one adds to that network. If you were looking for a new job, for example, and you'd been selective about the recruiters you'd added to your network, those would be the first ones you'd contact, and you'd be reasonably certain of a quality service. But regardless of that, because not everyone is constantly job-seeking, if you're looking for a specific person (for example, someone comes to interview for your company; or you're looking for a great speaker for your conference/event; or someone approaches you about a job or an event to go to; or someone randomly e-mails you out of the blue and you're not sure who they are) and they're either in your network or are connected to someone in your network, you know that you either know them or someone you know knows them. That makes them a Real Human and not a spam-bot or someone who wants something from you without giving value in return.

It's not Facebook. Related to point 2, I am happy to add people I know only professionally (i.e. are not yet friends) to LinkedIn. I'm even happy to add people I don't know personally if they don't fall under rules 1 and 2 in the "I won't add you if..." section. In Facebook, I have two (main) rules: I have to have met you in person (there are one or two exceptions but those are people I have known for a long time only over the interwebs); I have to have spoken to you in the last year, or want to speak to you in the next 12 months. This is for two reasons: 1) I want to keep my Facebook network relatively small so it's more intimate, and therefore 2) I can share more personal things on there without feeling self conscious or wondering who's going to see it. I have to be able to speak honestly on Facebook. On LinkedIn, I don't need to be so fussy - I can add you to my network if I like you but you haven't (yet) crossed into friendship; I can add you if I think I can be useful to you, or you to me; I can add you if I want a way to contact you (or want you to be able to contact me) but don't have a pressing need to stay in touch frequently.

So, that's an unnecessarily deep dive into my attitude towards LinkedIn. It's probably not going to change anyone's behaviour, but I feel better for at least explaining why I won't necessarily add you back - all you need to do is type in the little invitation box to explain why we should be connected.

Tuesday, 5 November 2013

So, I thought a few months ago that my blog would become more of a travel blog than a tech blog because of the amount of conferences I was going to. Turned out that I was so busy writing / updating / practicing talks and workshops and, er, travelling, that I never got around to doing retrospectives on the events I'd been to.

So, JavaOne, again, my third year there. I'll always have a fondness for it - because of Martin Thompson, it was the first conference I presented at. I know people always start with "it's not what it used to be" or "why isn't it in the Moscone?". But not having ever been in the good ol' pre-Oracle days, I don't have that to compare it to.

I do have the previous two years to compare it to, however. This year, I think the quality of the presentations was much better compared to the previous two years (although I can't accurately speak for last year as I spent the whole time running between my presentations and other LJC presentations). I learnt something in all the talks I went to this year, in particular:

Lambda: A Peek under the hood - Brian Goetz goes into detail of how lambdas are actually implemented. Not something an everyday developer needs to know in order to use them, but extremely useful if you want to understand things like their performance, and why they're not simply syntactic sugar. Despite thinking I understood this stuff, I still had to watch this twice (once at JavaOne and once at GOTO Aarhus) before I could say I understood it. Totally worthwhile making the effort.

Making Java Groovy - A great, engaging talk about how Groovy and Java can live side by side, and showcasing some of the nice features of Groovy. I found this particularly helpful now we're using Spock and Gradle, and learnt some new tricks.

MongoDB for Hibernate/JPA developers - Obviously Justin is my colleague, so I should give him a shout out. But what I like about this talk is that it does what it says on the tin - introduces MongoDB for those of us who are/were used to working with out databases in a particular way.

I also liked Martijn & Ben's Lean Startup Ninja talk, even if they weren't terribly complimentary towards MongoDB. The talk doesn't seem to be on Parleys yet, but keep an eye out for it - it's a nice, realistic view of the trials and tribulations of running a startup.

These great sessions were really a bonus for me. The main reason to go to JavaOne in my opinion is to meet people - it's west-coast, and I don't get a chance to get to California very often. You see or meet those who are working to advance Java-the-platform and Java-the-language, and there's a big focus on community so you also get to meet as many of the Java User Group leaders as can make it out there. In addition, there's the folks working hard on the java.net website and those involved in the JCP process, deciding the standards of the language. Although there's some overlap between all these groups, by spending some time with all of them you get to meet a really wide range of people. You get to hear what people are working on, what's coming down the line, and often get a chance to influence that too by giving your opinions (nicely, of course!).

Of course there's the parties too, although I've been threatened with being removed from the invite list of the Zero Turnaround party next year since I failed to show up this time. My favourite was the JCP party - great food, and amazing views of the city.

There's some other conference going on at the same time, over in Moscone. Something called Oracle Open World. A few of us snuck over there to take a look at the massive MongoDB stand there (in the heart of Relational-Database-World!). Open World is a scary place filled with people in suits, looking to sell or be sold to. It's also massive. We chatted to our mates there and then ran off to eat burritos.

A bunch of us also got a chance to go to the Google offices in San Francisco. We slid on their slide, tried Google Glass, got photos taken in their photo booth, ate their food and drank their drink. I was pleased to see it wasn't anything like The Internship (a film I tried to watch on the plane on the way over and could not finish - I was really disappointed with the enforcement of industry stereotypes, and the portrayal of elitism. But maybe it's just me). They also have amazing views of the bay.

In Summary, JavaOne is as relevant as it ever was. The themes of this year were definitely Java 8 (lambdas in particular), alternative JVM languages (which now seem to be used enough in mature systems to be viable for more conservative organisations), JavaScript on the server, and as always there's a lot of noise around front end and web, although I'm still not sure Java has a really nice, easy way to create a web application.

JavaOne is still the place to go to hear what's in the pipeline, to meet the people working on this pipeline, and to influence the future of Java.