RSS
Facebook
Twitter

Friday, November 22, 2013

First presentation at the Virtual JUG!

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, November 7, 2013

JAX London & MongoDB Tutorial

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, November 6, 2013

LinkedIn Etiquette

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.

  1. 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).
  2. 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.
  3. 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:
  1. 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).
  2. 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.
  3. 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.  

I value my connections, and I want to see that you do too.

    Tuesday, November 5, 2013

    JavaOne 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:
    • Designing with Lambda Expressions in Java - Venkat doesn't simply cover the syntax of lambdas, but how they encourage us to use different design patterns to those we commonly use. Very informative.
    • 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.

      Oh, and I gave a talk:

      Wednesday, October 9, 2013

      Make the Future Java



      I think this is a nice example of how to showcase technology and make it relevant and exciting for people.  Something with this approach could do more for increasing the number of people interested in programming as a career than any of the traditional approaches of getting kids and "minorities" interested in IT.

      Wednesday, September 25, 2013

      Kids These Days

      I'm a great believer in getting kids to code early - after all, I'm of that generation that was taught 


      at the age of 9.  There are quite a few approaches to teaching today's kids in an engaging way, but I'm a bit wary of the sandbox solutions that teach kids things like how to navigate a virtual thingie around the screen, or lets them create things in a limited virtual world.  I don't think kids will easily make the leap between these sort of games to seeing the full potential of programming - they're too limited and have no context for the kids.  It's just another game.

      Kids need to understand how programming fits into their world, they need to understand the context of coding, if they're going to fall in love with it.

      I like Jason Gorman's comparison of programming to music.  Most people learn an instrument because they want to make the sort of music they hear on the radio.  But you give them a recorder and teach them to play "snug as a bug in a rug" and they go off the idea entirely.

      "So, is this a sexy tune, Mrs. Badcrumble? I just don’t think, Mrs. Badcrumble, that this is really gonna be a sexy tune.".

      Similarly, you give kids a sandbox environment specifically to learn programming for the sake of programming, and they're not going to see how this turns into Facebook or Google or the apps on their phones.  They're going to continue seeing computer programs as something that magicians in a land far, far away made just for them.  The same way breakfast cereal is grown in box only for them.  They don't see programming as something they can do, they don't see the computer as something they can influence.

      Just the slightest hint, the slightest push, to show them that they can be the magician, that they can have power over this world. That's the way in.

      Many of my generation of programmers learnt by coding those godawful choose-your-own adventure games.  They weren't pretty or elegant, but in a single lesson we learnt that a short magic incantation could create something that looked like those games we played.  With a bit of persistence we could truly create our own adventure, with a story that we created, not just follow someone else's paths.  And then we could inflict that on our little sisters.  It was such a short distance from the BBC command line to a game that many of us saw what programming could create, and that programming was something we could do.

      There's an argument these days that computers got so complicated, so elegant, so perfected, that "kids these days" don't have that.

      This is not true.

      It's just not.  Don't be fooled by this.  Sure, PCs in the 1990s made it more tricky to simply program the thing.  And IDEs felt, to those of us who learnt from a blinking prompt, like cheating somehow.  Or, at the very least, they divorced us from the internals of the machine, provided us with too much separation (what nonsense, by the way - an IDE must be much closer to the command line than  BASIC is from ones and zeros).

      But those days are waaay behind us.  Several more levels of indirection later, and actually it's much easier to write something that gives the immediate feedback, something that has real context, that will help kids get it.  This will help kids see why.  They're the same as us, they can't just be expected to do it because, they want to know what's the point.

      And these days it's easier. You've got:
      To name but a few.  That's not even including the fact that you can get coding web pages and python code pretty quickly and see instant feedback, or even use an IDE to create a UI in something like C#.

      The first three items in the list are great for people who are very touchy-feely, who want to see something in the real world.  Can you imagine how exciting it would be for your kid to see that they wrote a program that closes the curtains?  It's a tiny, stupid thing, but you just gave them control of the physical world they live in.  Let their imagination do the rest.

      The other ideas are probably more directly related to the stuff they use the computer for.  You're really providing them with a way to customise the tools they already use.  Who doesn't want to imprint a bit of themselves on the virtual world?  These sorts of thing let them control a world they understand - in the context of a tool they know (e.g. Facebook), they create a game or a plugin or whatever that works within that world.  And they start to see that this tool they use to talk to their friends, this tool that is there to fill their spare time, is something they can control.  Maybe they'll start small, but they'll soon learn that everything they use, everything they touch on the computer, is really only code that some other human has built.  They'll start to see that the computer-machine is influenceable, that they can tell it to do stuff and it will do it.

      That is addictive.

      That's what we want.  We want to open their minds to how their world is constructed, and show them that they can influence it. They can control it.  


      They can change the world.

      Monday, September 16, 2013

      JavaZone, Oslo

      For the rest of 2013, this blog will mostly be masquerading as a travel blog.

      This week I've been in Oslo, and I liked it.  Actually, you'll be hard-pushed to find somewhere I've visited that I didn't like in one way or another, but Oslo does make my "definitely going back there" list.  If Seville, where I've been for the last month, is stuffed full of History, Oslo is overflowing with Geography.  I've noticed a pattern in that my favourite places were sunny when I visited them first, which subconsciously prompts me to love them (as a vitamin-D-deprived Englishwoman).  Oslo was NOT one of those places, it was overcast and extremely chilly compared to the south of Spain.  But the countryside around it is really pretty, and it's very green and mountainy and watery.  Not like Spain, or the UK for that matter.

      I found the Norwegians really friendly, and as with all the Nordic countries their English is better than you'll find in an international and technically English-speaking city like New York or London (I'm not criticising New York or London, I love their diversity and international-ness, and the fact that London has more active spoken languages than any other city in the world, it's just the excellent standard of English in somewhere like Oslo is very noticeable).

      Anyway, on to the point, the JavaZone conference.

      Over the last two years I've been to a lot of conferences, and over the next month or two I'm probably going to double that number.  So I didn't give JavaZone the attention it truly deserved.  I was, rather boringly, preparing my talk and doing actual work while I was out in Oslo (and less boringly meeting up with old friends) rather than attending the conference.

      However that's actually a shame, as from what I saw of the conference it was a really nice one.  Small enough to run into people you've met before or get talking to strangers, big enough to attract some great speakers and exhibitors.

      Oslo Cathedral
      The thing that struck me the most though is that it had by far the best exhibition space I've seen at a conference.  I'm not sure if it's a result of it being right in the centre of all the rooms, due to the layout of the venue, or if it was simply extremely well designed.  What I liked about it was that the stands for the exhibitors were located around the hall and interspersed with different types of seating for attendees to hang out in - cafeteria-style tables; lounge areas; bar-style high tables and stools; bean-bags; space for people to stand and chat.  This mix of exhibitor stands and social space made it feel a bit like a party.  And while the benefits to the exhibitors are obvious (they can chat really easily to the attendees and hand out freebies), as an attendee it seemed a more relaxed approach and less sales-y than being pounced on by the poor lonely people manning the booths in the sort of exhibitor's hall where you run through it to get to the food.

      Speaking of food, JavaZone had the best approach to food I have seen at a conference.  There were loads of hot and cold food tables around the hall, with different types of food, served all day.  I spotted Italian, French, Sushi, American, cake, and the ever-lasting burger bar (a dangerous thing indeed).  This neatly avoids a lot of issues with "dietary requirements" (vegetarian, gluten free, low-carb etc) and gives us the impression of choice rather than having food foisted on us (see: JavaOne.  Sorry Oracle but your food situation seriously sucks).  Serving it all day avoids massive queues that steal away all your break time, and puts less pressure on you to eat when you have to.  I have no idea how much this set up cost, and I'm pretty sure it wouldn't work at most venues as they have their own catering arrangements, but it was something that seriously differentiates this conference and venue.

      But my favourite thing about it was the quality of the coffee.  Yep, you heard me correctly.  It wasn't the great speakers (I didn't get to see many talks but Tim Berglund's talk was excellent, and Ken Sipe has had a bigger impact on the MongoDB Java Driver than he will ever know).  It was the coffee.  They had all sorts of different coffee stands dotted around the place.  Some sponsored by companies, I guess, and I think the Nespresso-style capsule coffees (that were sadly abandoned because the other stands with baristas were so popular) might have been the default conference coffee.  But being able to grab a really good quality cappuccino without having to leave the venue was a very welcome change from the usual conferences, and it keeps you in the exhibition area with everyone else.

      Tim Berglund speaking in the... challenging... room 1
      Just because if I don't mention it by now it's a bit unfair on JavaZone - they had a good proportion of women attendees.  Wherever you looked you could see at least one, which is (sadly) a lot better than many conferences.  I'd estimate it at around 10-15%, which is not bad at all.  I wonder if they did anything special, or if that reflects the normal proportions of women techies in Oslo?

      OK so I'm clearly extremely superficial in my appreciation of conferences.  Maybe this is the result of having attended quite a few now.  But if you go to any Java conference (in particular, but maybe other types of tech conferences too) they're really focussed on getting great speakers with good presentations (as they should be).  So it's the details that will set your conference apart from another.

      Of course, location plays a part of it.  If you're based in Oslo/Norway and a JVM person, JavaZone should clearly be your first choice.  But if you're in Europe and are going to have to fly somewhere to get to a conference anyway, you have quite a lot of choice now, and you might be tempted by this conference.

      I wonder if one day I'll be able to do a "definitive guide to this year's conferences" in advance and be able to suggest the ones you should go to based on different sets of criteria?


      I'd be remiss if I didn't mention my actual talk at JavaZone, since that was the point of me being there.  I unveiled a new talk, although the sharp-eyed amongst you will probably notice that I've re-purposed/re-written the "What do you mean, Backwards Compatibility?" talk from this year into a more general why-developers-should-care-about-software-design talk.  It turns out this was the perfect conference to do this presentation, as there were quite a few process-ish presentations suggesting that developers should do more than simply learn about technology.  These are challenging talks to give at technical conferences - there isn't always a "process" track, and if there is it's often not for developers.  It is assumed that developers want answers, and tools, and technologies, and often this is true (normal caveats apply around making gross generalisations, but for some developers and some conferences audiences this is true).  It was great to be able to give this talk to a good-sized audience of smart techies who, I think, got what I was trying to say.  I don't really know if I'm preaching to the choir or not though, or what people are really taking home with them.


      You can let me know in the comments (or via twitter or e-mail) what you think of the talk - what did you like? Am I just telling you what you know, or did you learn something specific? Or did it re-enforce your own beliefs?