Tuesday, 18 December 2012

Devoxx: The Problem with Women - A Technical Approach

As well as talking about, you know, actual work-type-stuff, I was encouraged to give my "Technical Approach to Women" presentation at Devoxx.  This went so well at JavaOne that I thought it would be difficult to top.  Also, I wasn't convinced it would work at Devoxx, because the theatres are not well suited to audience participation - the seats are warm and comfy, the room is dark, the speaker is on stage in front of a massive screen....

I was incredibly impressed with the audience.  There were literally hundreds of people, most of them men.  To me, it proved once again that the men in this industry are determined to "fix" this problem of gender imbalance.  And they're happy to extend that to improving diversity as a whole, once you highlight the bigger problem.  It says to me that this is not naturally a misogynistic industry, where you have to fight against the boys club to get anywhere.  It says to me that we are all in this together.  After all, in the "real" world the geeks are still outsiders, and different, so we're used to embracing our different-ness - whether that's because you're the only girl in the room, the only Java developer at a .NET conference, or the only techy at a dinner party.

Conferences are a self-selecting audience, I know - these are the people who are investing time and money in advancing their careers, or at least encouraging their employers to do.  But for the punchline of this session, these are exactly the right people.  We need to go out, tell everyone how much we enjoy our jobs; tell kids that programming is cool, and show them it's fun; mentor other people, and each other, and be a role model.  I don't care what gender you are or what colour you are or what your dark secret is - you are the role model to inspire someone.

Just do it.

Wednesday, 12 December 2012

Agile++: When Agile Goes Well

If you see anything about LMAX - the Disruptor, Continuous Delivery, or even the selection criteria for hiring developers, you'll see that LMAX is pretty keen on Agile.  However, no-one's documented the Agile process there, as far as I know.  Although I personally had it on my todo list, I never had the motivation, the hook to do it.  And I realised eventually that's because I'm not sure it's a process that would work very well for another team, in another company, working in another business.

The agile process followed at LMAX is one that works for the individuals and the organisation there.  And that's because they do one thing very well - they regularly examine the issues faced and adapt the process to try and combat them.  It's an agile process that's, well, very agile - it's constantly changing.  Documenting it would only represent a single snapshot in time that would be out of date almost as soon as the next retrospective comes along.

Any process can inspire Cargo Cultism, and the last thing I want to do is give people a process to without the tools to know whether it's the right thing for them or not.  It's more important to understand your goals, check progress and improve.

I was talking this through with a colleague, Israel, and he rightly pointed out the tool that LMAX can share with everyone else - thinking.  Examining the problems, visualising them, and trying out different ways to fix them.

So at Devoxx Israel and I presented a session on "Agile++", using LMAX as a use case of when agile methods work.  The session examines four specific issues encountered at LMAX and the steps taken to solve them, and it's available on Parleys.  Enjoy.

Wednesday, 5 December 2012

Webinar: Processing High Volume Data Feeds with MongoDB

Hot on the heels of my very first MongoDB webinar, I was... encouraged... to do another.  Here at 10gen we've been running a series of webinars around using MongoDB in the financial services domain.  Yesterday was the last in the series, and was presented in association with C24 - John Davies, their CTO, did most of the talking, and demonstrated their product for automatically turning financial messages from one format into another.

(Slides and webinar available here - and you're not going deaf, the sound doesn't start until about 3:44 into the video)

It was a fun webinar to do, actually - I didn't know anything about C24's iO tool, so I learnt quite a lot as I watched John navigate the demo.  My background in trying to debug raw FIX messages probably skewed my questions, I was definitely more interested in how to use it as a developer and what it could give me if I were doing production support.  It's a dead interesting tool - I know for a fact that many organisations, banks in particular, spend a lot of time translating stuff from one format to another, before making some decision on on what to do with the contents.  This tool does all the heavy lifting so you can get on with the interesting stuff, the stuff your business actually needs you to do.

In addition, as someone with more of an FS background than a NoSQL background, I was very interested to hear how lots of the financial institutions are using MongoDB already - the combination of not having an enforced schema but supporting structured data, supported by fast execution, makes it a good fit for a lot of the problems they're trying to solve.  Yes, it's my job to say nice things about MongoDB, but when businesses are already using it because it makes their lives easier and meets their needs, it gives you a warm fuzzy feeling that the product must be doing something right.

I enjoyed giving this webinar, I think if I do any more I will suggest pairing on it (we all know two heads are better than one, right?) - it gives you some of the feedback and energy that's hard to get in a darkened room talking to a microphone.

Friday, 30 November 2012

My First Official MongoDB Appearance

Yesterday I had the nerve-wracking dubious alarming great pleasure of presenting my first official MongoDB-shaped talk.  This was in the form of a webinar, which is an interesting and different format.

I na├»vely assumed it would be like a presentation but without the visible hand-waving, but it isn't really.  For a start, you can't easily poll the audience to find out what their level of experience is, and taking questions is quite tricky, even with the technology to support it.  Also, because you're not standing in front of people, I think the "rules" around making sure your slides don't distract from you are a little different - it strikes me that webinars are more like a set of slides with a narrator and a fixed time, than a presenter with a set of slides to emphasise points.  This puts the medium in an awkward position between an infodeck and a talk (yes, I am reading Presentation Patterns at the moment, and it's making me very conscious of all my slides and presentations).  So my slides are more info-heavy than my usual style.

I actually learnt a lot while I was putting together this webinar, so whether you're completely new to NoSQL/MongoDB, or just starting to use it from a language running on the JVM, it's worth checking out.

(Or see the webinar and slides together)

As always, feedback very much appreciated - I think there's great material in here, but I already have some ideas for improvement.

Monday, 26 November 2012

LJC Open Conference 2012

Saturday I had the pleasure of being part of the 5th London Java Community Open Conference.  This is a great event to end the conference season on - it made me feel good about being part of the LJC, and  got me excited about the prospects for 2013.

The fantastic thing about an open conference is that a) you don't have to prepare like mad for it and b) the short sessions and wide variety of subjects mean that you learn stuff you didn't expect to.

Given how much I've been presenting lately, and with the conferences piling on top of each other back-to-back leaving little time for preparation, I had decided not to speak at the open conference, but to sit and learn for a change - it's a great opportunity for new speakers to present for a start.  But that resolution lasted all of 3.54 milliseconds.  After all, if people don't like the sessions I propose, they won't come, so I lose nothing by suggesting some.

Photo by Ged Byrne
First up, it was a very great honour to be giving my very first Keynote.  Ben Evans and I presented on the State of Java - a summary of this last year from the point of view of our community and globally, and a view to next year.  I know we've had an incredible year as the LJC, it was really satisfying to be able to summarise this for everyone there, to present what we've achieved locally and globally.  And looking forward to the future, there's so much more we can do as individuals trying to improve our skills (especially with Java 8 due), as a London-focussed community (with our own events, our sister communities, and with Devoxx UK), and globally (with the JCP and OpenJDK).

Next, I was roped into a Java Performance panel, with the JClarity guys (Ben, Richard and John).  I was surprised to see that not many in the audience were working on low latency systems - in London you'll frequently find a room full of Java developers who are all working in finance on things that have specific performance requirements.  It was good that we had a this variety of developers, because it meant we covered a much broader range of subjects, and could discuss what to think about and where to get started when you're considering your non-functional requirements.

Immediately after that I was on another panel, with some of the same suspects, talking about the LJC's involvement in the Java Community Process and the Open JDK.  I really like these sessions because it's easy for us, who are dealing with these things at least on a weekly basis, to forget that most of our members aren't familiar with either of these two things.  What's encouraging though is that after just a short introduction to what they are and how we can impact them, most people want to be involved in some way.  The hack days are particularly appealing to developers (not surprising).  Although we've had a number of very successful hack days, we still need to work out a way to scale them - how do we attract more people?  How do we make the best use of their time?  In particular, we need to work out how to cater for people with different timetables (weekends vs evenings vs week days), and how to handle the split between beginners and those who have already been to at least one hack day.  I'm excited about what we've achieved so far with the hack days, but I think there's so much more that can be done.

You can't tell from this photo, but there were girls this year
Over lunch there was a series of lightning talks.  I really like the way the lightning talks are presented to everyone in the conference.  I like the variety of topics, and I like that it's fairly easy for a new speaker to give a 5 minute talk, with as little or as much preparation as they want.  The one I remember most was on software for elections from Alex Florescu - I thought that looked like an interesting (and difficult!) business domain, which needs novel solutions in order to get acceptance.

Next up, I gave an intro to NoSQL  From Devoxx, it was clear that while a lot of developers have heard of the NoSQL movement, and of databases like MongoDB, it's not clear to them why you'd chose these over traditional databases. Which is a relief to me, because that's exactly where I was three months ago.  So this was a really quick (30 minute) overview of the different flavours of NoSQL, what they're good for and why you might pick one over another.  Obviously there was a focus on MongoDB, since this is the one I know most about, but I also covered the strengths of some of the others.  I really enjoyed giving this session - the audience was perfect for the topic, the questions were intelligent and drove the direction of the discussion, and I had a number of positive comments from people who felt like they had learnt something.

I gave another session which was a recap of the JavaOne and Devoxx "Problem with Women" talk, but even shorter.  The fantastic thing about this was the energy from the people in the room - these guys like what they do and they're keen to tell other people how great it is to work as a developer.

Finally, I managed to actually attend a couple of talks too.  Barry led "Why is technical recruitment so broken?", and we had some interesting discussions around the problems employers and developers face, in trying to get the right people into the right roles.  Clearly there is no easy solution, and there's definitely a role for recruitment agents of all kinds in this space, but it would be awesome if we stop floundering around in the dark and actually be able to match the right people to the right jobs more easily.  In seems to me that there is a huge educational piece here: developers can find resources around how to write their CVs, how to stand out from the crowd, how to network to increase their chances of finding a good job, but they need to know to start looking for these resources.  Worse, though, is the problem of the employers - if you're a big company you have a non-technical HR department standing between the team needing a developer and the candidates themselves, and smaller companies don't have the time to invest in the hiring process, or going out and networking to meet people at things like LJC events.  It's a tough problem, and one I'm extremely interested in.  I'm hoping that the "Attracting Great People" track I'm running at QCon London will look at some of these issues, and give some advice from those who are doing a good job.

The last session was an exploration of all that is wrong with Agile, led by Ged Byrne.  It was an interesting discussion, the only disappointing thing about it was that everyone agreed with each other!  Certifications Are Meaningless; external Agile coaches and consultants aren't necessarily invested in improving your business; a formal Agile process is really defeating the point; and, most importantly, let's try to remember the original agile manifesto.

In summary, it was a really great day!  I enjoyed it as much as I enjoyed last year's, for many of the same reasons - we have a fantastic community, it's a great event for meeting people, it's brilliant for encouraging new speakers, and if you are speaking you get much better feedback than you do at the large events, because you can involve your audience directly and give them what they really want.  I can't believe how much I personally have achieved since my first solo talk at the LJC Open Conference last year, and I can't wait to see what the next year holds.

(More photos from Andrew Black)

Thursday, 22 November 2012

Summary of Devoxx 2012

Devoxx topped off a crazy two months of conferences. I've heard people talk about the conference season in the past, and been slightly (OK, very) jealous of all that jet-setting.  I'll admit, however, to a slight feeling of relief that my focus until Christmas is pretty much going to be coding.  I hope.

Neal Ford's When Geek Leaks
So, how was Devoxx?  Well for starters, the calibre of the speakers and talks was excellent.  I learnt things in every one I went to - either something I could put into practice at work, or something I could do to improve my own presentations.  My favourite was Neal Ford's When Geek Leaks - Neal is a great speaker, and this talk was entertaining and informative. I'm also currently reading his Presentation Patterns book, which is extremely useful.  Although obviously I give a bunch of presentations and have found some very handy tips in here, it's dead handy for everyone, even if you're just presenting to your boss or team at work.

The great thing about Devoxx is being able to meet all the European-based people in the Java space. People fight to get to JavaOne, but Devoxx is a lot easier if you're based over this side of the pond. It's also easy to run into people in either the exhibition area (where lunch is served, so everyone ends up there at some point), or the central corridor between the rooms (which everyone has to go through at some point).  It was really awesome to have so many people grab me either at the MongoDB booth or when I was sat at the desks in the corridor.  I really like that venue for a conference, the only downside is the seats are so comfortable, people fall asleep in the talks.  Even in our presentation (how rude).

I have a lot of personal highlights from Devoxx now I'm finally free to think about it:

  • Another re-run of The Problem With Women.  If anything, this went even better than when I ran it at JavaOne. What I really loved about the session is the sheer number of men who turned up.  it's tempting to assume they're there to heckle, but in fact their active participation in the subject proves to me that the men in this industry are very much on board with trying to address the gender balance.  As always, I have so much more to say on this subject, so I'll make a note to write a separate blog post.  In summary, although there are differences in the contributions from the audience in these sessions, there are common themes and a willingness to get involved and Do Something.
Agile++ with Israel Boza Rodriguez
  • The exclusive premier of the new Agile++ talk, co-presented with a colleague of mine from LMAX.  The aim of this presentation was to talk about where you go when your organisation starts with a great agile grounding - what problems might you face and how do you tackle them.  Bit confusing for me giving this talk since I was still in LMAX-mode, and I'm very grateful to 10gen for not only allowing me to present this, but actually promoting it for us as well. I'd love to do this session again, I'd like to work out how to without having a split personality as an LMAX person and a MongoDB person.

Not everything can go swimmingly, so I should probably make an apology for giving the Shortest Talk Ever on Wednesday.  It was supposed to be a 20 minute talk about the benefits of open sourcing your software, but it ended up being more like a lightning talk.  Lessons learned: 1) no matter how much you think you have to say about a subject, having the speaker notes is still very important (to me) and 2) a bit more preparation, updating the talk given my new role, would have been extremely beneficial - as it was, I cut a lot of the content on the fly and had nothing to replace it with.  Oh well, you live and learn.

I also had a new experience on Tuesday, being on the MongoDB booth in the exhibition space.  This was really educational too:
  • I'm glad I had a week of intensive MongoDB training the week before, I could actually answer all the technical questions thrown at me - yay me!  It's true that educating people is a really good way to learn stuff.
  • People are really interested in MongoDB. Many are using it already, but even more are wanting to learn about NoSQL in general, and Mongo specifically.  It was really awesome that Stephan gave a massive boost to Mongo's reputation, describing how the central data store for the conference technology was MongoDB running on a Raspberry Pi.  You don't get cooler than that.  Numerous other speakers gave very positive stories of using MongoDB too, so we had a lot of people stop by the stand to ask us what it was all about.
  • Although I was nervous of being on the stand after Ceri's experiences, I didn't notice anyone doubting my ability as a technical person despite being of the female persuasion   I only had one conversation where the (male) developer I was speaking to kept addressing his questions to the (non-technical) (male) sales person instead of me.  But that's fine, I just kept answering the questions, and maybe I've made a slight dent on his (clearly subconscious) assumption that women aren't techies.  I still think the best way to address problems like this is to keep persevering, keep being visible, and to not let your assumptions about what other people are thinking override your own confidence in your abilities.
And finally...

Robots seem to be cool again, and I, for one, welcome our new automated masters.  I was totally blown away by the choreographed dancing robotos on stage as a lead up to the keynote.  

I think the only way to top that for Devoxx UK is Robot Dancing Tyrannosaurus Rexes.  On caffeine.  Destroying Lego cities.

Tuesday, 20 November 2012

Brain Overload!

The moral of today's story - be careful what you wish for.

This is my brain

During the normal course of my life, it's filled with Stuff.

Early in November, 10gen ordered me to go to New York to learn about MongoDB (Oh No!  My Life Is So Hard!).  I was looking forward to shopping and taking photos of the devastation wrought by Sandy, but actually I spent the whole time drinking from the firehose of MongoDB information provided by my ridiculously smart, ridiculously well-informed colleagues.

(I didn't even buy shoes!  But I did buy a new winter coat, so there is some balance in the world).

24 hours after landing back in in London, I was on a train on my way to Antwerp for Devoxx.  There, I did three talks, including a new talk on Agile, co-presented with a colleague from LMAX (a teeny snippet of which can be seen in the video on the Devoxx home page).  Running from thing to thing, helping out at the 10gen stand and meeting new people and those I count as friends kept me pretty busy (did I mention My Life Is So Hard?).

...and now I'm at Skillsmatter Scala Exchange, writing a blog post instead of listening to the talks. Because I've got no more space in my brain for anything, let alone a new language I haven't studied at all (don't tell anyone).

Fortunately I'm not travelling again for the rest of the year, so I'm hoping to start doing some Actual Code some time soon.  I have one last conference, the LJC Open Conference this Saturday, which fortunately is on home ground.  If I can get away with it, I'll go and watch other people talk rather than perform myself.  For any LJC guys reading, you can submit talks in advance, or suggest topics you want to see.

(This blog post was brought to you by a person who had an iPad, a stylus, and a desire to procrastinate against doing important stuff like reporting her stolen bike to the insurance company)

Monday, 12 November 2012

Devoxx 2012

This week I'm at Devoxx for the whole week, and already I've achieved two things I didn't manage last year: I drank Belgian Beer and I've spent some time in Antwerp itself.

It's going to be another busy conference, I'm presenting three times (thankfully one is just a quickie):

When I'm not talking, you should be able to find me lurking around the MongoDB stand, or at the various after-conference events that involve alcohol.

Thursday, 8 November 2012

Java 8 - Introduction to Lambdas Article

This month's Java Magazine features an article by me, Ben Evans and Martijn Verburg about the new lambdas coming in Java 8.

The aim of the article is to give an overview to normal, human Java developers, who don't need to know the theory behind what they are or how they work under the covers, but want to know how to use them when they get the shiny new version of Java next year (or even get ahead of the curve and try them now).

Look inside >
Exploring Lambda Expressions for the Java Language and the JVM

Tuesday, 6 November 2012

NightHacking Tour: The LJC

On the same day Stephen Chin came to see me at the 10gen offices, we also ran a NightHacking session in the evening with the London Java Community.  Not many people turned up (maybe I need to work on my signage to the office?) but it was a great session. In fact, having less people meant we could all be involved.

Expect Raspberry Pis and JavaFX.

Wednesday, 31 October 2012

Interview and Hacking session with Stephen Chin

On Monday, Stephen Chin from Oracle visited me at the 10gen offices as part of his NightHacking tour.  In the video we talk about my sessions at JavaOne and the Agile presentation I'm giving at Devoxx, and I do some very basic hacking using the MongoDB Java driver, attempting to showcase gradle at the same time. It was a fun experience, even if it's scary being live-streamed and recorded!

Tuesday, 23 October 2012

NoSQL is a Stupid Name

So, I've finished my first full week in the new job and I've learnt lots of new stuff. Which is great, because that's usually why you change jobs.

I'm learning a lot about these new-fangled NoSQL database thingies. The LMAX architecture was based on keeping everything in memory and reducing the waits for IO - messages were journalled to disk, and reads and writes to the MySQL database were off the critical path. Therefore doing anything radical to the storage side of the architecture was just not high on the list of priorities.

Everything I knew about NoSQL I learnt from the various conferences I've been going to in the last year, and even then that's limited - without a business reason to pursue knowledge I know it'll just leak out of my brain, so I avoid sessions with no immediate applicability to me.

Let's summarise what I knew about NoSQL databases before last week:
  • They don't use SQL. Who knew? 
  • There are different flavours.  There's a graphy one and key-value things and... others...
  • They're "scalable" (yes, yes, it's web scale). 
  • Some/many/all(?) embrace the idea of eventual consistency 

I was suspicious of the hype surrounding NoSQL, partly because it's associated with the meaningless marketing term "Big Data" and partly because I'm a cynic that sneers at things that get too popular. Here's what I think when I hear the following terms:
  • Cloud - Fire your systems people and ditch your comms room!
  • Big Data - Parse Twitter in order to learn how to read your customer's minds!
  • NoSQL - Stop paying Oracle!
  • Functional - We couldn't get good enough at mainstream programming languages so we switched to something more difficult!

I don't know if it's healthy to be this cynical, but I'm too old to jump on every bandwagon that comes along.

Anyway. Back to the people who now pay my bills.

It's unfortunate that the lack of SQL is the thing that captured the imagination, rather than the lack of tables and a relational structure. SQL was never (in my mind) a particularly evil thing, it's a pretty good language for saying "I want this stuff from this place that fits these criteria", and that's something we're going to have to do at some point whatever the technology.

It's rather more important that it's the structure of the data that's different in NoSQL databases.

In a traditional relational databases you have tables, and relationships between those tables are achieved with foreign keys. I'm starting to think of these as something kind of grid-shaped with links between them:

Series of database tables and their relationships.  Honest.
(Yes, I'm experimenting again. This time with my shiny new iPad, a stylus and Penultimate. It's good for ad-hoc drawings, but lacks the precision of the graphics tablet and flexibility of GIMP).

At the very high level, it seems like there are four (ish) types of NoSQL databases:
  1. Column Family 
  2. Key/Value 
  3. Graph 
  4. Document 
Column Family
Column family databases feel to me, as a newbie to the field, similar to key/value, which I'll come on to. I've mostly heard Cassandra used as an example of this type of NoSQL database. I guess the way I think of this, and of course I could be wrong/over-simplifying, is a unique key linked to a set of key/values:

Which I'm translating into groups of key/value pairs, with a the ID as a sort of header:
Key/value pairs grouped by ID
You need the key in order to look up all the details about me. The way I hear it, it's great for writing data, but it's less flexible for ad-hoc queries.

These types of NoSQL database (e.g. Riak) are pretty much as schema-less as you get - just dump key-value pairs into them. To be honest, the best description I found was on dba.stackexchange.com, so I'm not going to re-write that with my (at this point) limited understanding.
Never ending lists of key/values
From what I've heard so far, both Key/Value and Column Family databases embrace eventual consistency. I don't know how much of that is a function of their data model and how much is decided by the individual products. For some people eventual consistency is deal-breaker, but in many cases it seems to me that it's just a matter of getting your head around this and designing your application appropriately.

I came across graph databases when I stumbled across Neo4j, chatting to some of the very smart guys there. A graph database lets you model you data as a series of nodes and relationships. And if I think about it, this is not a massive step from either relational models or object models. It doesn't just apply well to the social networking domain (where it's very easy to think in terms of users and their relationships), in actual fact lots of things we design could be modelled this way. Not having used it, I'm not sure just how much of a mental leap you need to take to start thinking that way, but it seems like it might be a good fit for many problems.
Graph of nodes with annotated relationships
I'd be interested in what the architectural trade-offs in using this model are.

Now MongoDB falls into category four, the document database. And as a NoSQL n00b, this is now the product and area I know most about, and am clearly going to be more excited about since 10gen are indoctrinating me in the MongoDB way.

Documents are a familiar structure for developers, especially if they've been working with JSON. So, a document might be:

To me, this looks like it maps onto to my domain-shaped Object Model more easily than a relational database, which always needs some sort of O-R mapping (whether you do this with hibernate or use Spring to do it yourself, you're still mapping tables into objects and vice versa). What I like about the document format is the nested sub-documents for data that belongs together. In relational databases you often end up denormalising for performance anyway, so why not just accept that up front and have it as part of the thing you're storing?

A document with sub-documents.    Think XML/JSON.
This does have a cost, of course - nothing is without trade-offs. Every time you request this document, you get the whole lot. You can't have the person without the address. So, you do need to understand the relationships (still) and whether you're usually going to want to get all that data at the same time or whether you might want to make two separate calls.

Which brings me on to another thing which is familiar from relational days - foreign keys. A field in your document can be the ID of another document, so you can follow the links through and retrieve other documents associated with the starting one. Again, there are trade-offs here - each link you follow is a different request to the database. These database requests can be very quick, but if you wanted this data every time, you'd probably want it embeded in your first document to save the additional call. I guess it's a latency vs throughput question really - a single query which returns a chunky document, or multiple queries that return smaller ones.

Documents can link to other documents.
So schema design is still important in document databases even if you don't have a relational schema. No new technology is an excuse to stop thinking about the problem you're trying to solve and understanding the tradeoffs in design.

One of the advantages, it seems, of something like MongoDB over some of the key/value databases is the ability to write ad-hoc queries and to tune for those queries. The data is structured (it's in a document) and it doesn't have to be in the same structure every time - not every document relating to a person needs all the fields that another person might have. But you can still query for people who have blue cars or people who live in London, or people who's surnames begin with G. If you find yourself doing the same query a number of times, you can add indexes to MongoDB the same way you would a relational database.

Semms like I'm getting into more of the nitty-gritty MongoDB details, so I'll stop there and leave that for another time.

In Summary
Classing a whole swathe of products as "NoSQL" is misleading and confusing.  The only thing they all share in common is that they are not traditional relational databases.  Other than that, some of them are as different from each other as they are from relational databases.  I haven't even mentioned caching technologies - these products have functionality which overlaps with NoSQL databases as well.  But even then, the purposes are somewhat different, and not even mutually exclusive.

As with anything, it's really important to understand the strengths and weaknesses of a technology, and the demands of your domain.  These different ways of organising data, and different products, are going to perform really well in certain circumstances, and pretty poorly when used in others.  Getting an understanding of what those strengths and weaknesses are is going to be important in making the correct product/architecture/design decisions.

None of this information is new, there's a lot of material on the web about the different types of NoSQL databases. I'm writing it more for my own benefit than anything else, my memory is notoriously shocking.  For more in-depth (and probably more accurate reading) there's:
  • Martin Fowler's NoSQL Distilled
  • ...and his introduction to the subject
  • Tim Berglund (@tlberglund) did a great overview of three types at JAX London last week.  There's a video of the same content (different conference) here.
  • http://nosql-database.org/ appears to list all the products that fall under the massive umbrella, but isn't the most usable of sites.
  • And yes, I used Wikipedia.  Which is probably where I went wrong...

Monday, 22 October 2012

Upcoming Events

Time for another ad-hoc update on what I'm up to:

I'm also going to be in New York for training from the 5th - 9th November, but I can't swear to my availability during that time - apparently training is going to take up the days, and the evenings I'm going to try and get a jump start on some actual code.

Wednesday, 17 October 2012

JAX London 2012

Seemed like a quiet conference this year.  Not really sure why, maybe it was the layout of the massive (and extremely dark) main room; maybe it was the awkward L-shape of the communal space; or maybe this year people were more interested in listening to the (really very good) sessions rather than participating or meeting other people.  Whatever the reason, it felt quiet and almost low-key.

Performance seemed pretty high on the agenda, as you'd expect from a London conference, with a number of things on offer:

  • A great keynote from Kirk Pepperdine and Martijn Verburg, covering a massive range of things to care about when thinking about performance on the first night
  • A high-level talk about Java Performance from yours truly (which I may run again for the LJC if there's interest, but it's more likely to be a one-off)
  • A deep dive into writing lock-free coding by Mike Barker
  • And a talk from Kirk exploring your GC logs.

It was great to see a number of LJC regulars presenting, especially as my own schedule has been so crazy I haven't seen many of them for a long time.  So I missed sessions from Bruce, John, Sandro, Russell, James & Richard, but I heard good things about the sessions and was really pleased to chat to all of them.

The highlight of the conference for me though was Brian Goetz's keynote and subsequent session on lambdas.  I've been looking into lambdas because I think it's a really interesting addition to the language and I've heard a lot of noise about them.  What I thought was most interesting about Brian's talks though was less the information on what they were and how to use them, and more the challenges that face language designers when they have a language which is used by 10 million developers and has been going for nearly 20 years.  Ouch.  It's amazing they get anything done, let alone something like lambdas which the language was never designed to support.

In keeping with the new job, I went to a few sessions on the Big Data Con - frankly an unfortunate name I feel.  Brendan's Mongo & JVM talk was useful, especially given that I might actually be presenting that at some point.  What I'd love to see though is a more interesting story around the Java driver.  It seems people believe the Java driver needs a little love.

The other interesting NoSql talk was from Tim Berglund's NoSql Smackdown, which was a really great way of highlighting that the NoSql databases are not all solving the same types of problems.  The room was packed and the questions were intelligent, so it seems there's still a lot of interest in this kind of introduction to the technology.

Lessons learned:
  1. Commuting through Victoria Station sucks.  I knew this last year but it's just got worse.
  2. The iPad + stylus combo is not as precise as the graphics tablet, so I'm probably going back to that for illustrations.  But I'd still love to do free-drawing with the iPad on the projector at some point.
  3. Not everyone can follow the deep-dive tech talks, but they still prefer them to introductory talks, maybe because they feel like they're learning something (well, that's my opinion).
I took practically no photos because I kept forgetting I had my camera.  I think it's the weird subterranean effect of the hotel basement.  Either that or I've turned into a conference zombie - not an unlikely suggestion.  And I've still got Devoxx round the corner...

Thursday, 11 October 2012

And for my next trick....

The time has come, and I'm moving on from LMAX.  I've had an incredible (nearly) four years working for one of the most radical finance firms in the world, during which time I feel I've learnt more than the rest of my work experience put together, and had the pleasure to work with some of the smartest and most interesting people I've ever met.

I've been invited to join 10gen and their MongoDB driver team, a challenge I am really looking forward to.  After years in finance and in the IT departments of other organisations, I'm finally working for a product firm, and an open source one.  I expect it will be very different from anything else I've been involved in.

I hope this means I will be blogging even more, and that I'll have opportunities to abuse my graphics tablet producing more ridiculous scrawlings.  I also hope this will give me an opportunity to meet more people as I travel around.

So, as if this were a goodbye e-mail to the company or an out-of-office reply, I should finish with: any further enquiries about the Disruptor should be addressed to the Google Groups list - there are people on there waaay smarter than me anyway.

Lots of shiny new goodies!

Wednesday, 10 October 2012

Introduction to the Disruptor Slides

I've produced a very cut down version of the presentation I've been giving at a lot of conferences, giving a high level overview to the Disruptor.  This serves as a quick intro to the concepts behind it.

My slides are usually pretty useless without me (or someone else) talking over them, so for more context don't forget there's always my original blog posts (the Magic Ring Buffer, Reading from it, Writing to it, Wiring it up), which are now pretty dated, and the Java Magazine article I wrote at the start of the year.

Friday, 5 October 2012

JavaOne: The Summary

So, JavaOne.

Taylor Street Cafe
I'm going to be controversial.  I think this was my favourite conference of this year.  I know that's not trendy, and that Oracle-bashing is still a popular pastime.  And I know I've also made a big deal about how much fun it is to meet people who program in different languages.  But there is something very special about being surrounded by thousands of people from all around the world who use the same technology as you, some facing the same problems, some solving very different issues.

Maybe it's because since I first spoke at JavaOne last year I've met a lot of people in this ecosystem - Oracle Java people, other conference organisers, Java User Group leaders, speakers and attendees from all sorts of places - and seeing many of them in one place is fun and makes you feel like you're "home".  I'd be sat in the Taylor St Cafe area and people would sit down and hang out with me.  I'd be hiding somewhere trying to write a presentation and people would say Hi.  I'd be separated from the other LJC guys while I grabbed a glass of water and someone would stop to chat.  It was awesome.  I even managed to get a tiny bit of work done between socialising.

Personally, I have learnt very valuable lessons:

  1. Doing two conferences back to back is exhausting.  If I do it ever again, I really need to optimise my travel between them (i.e. not fly from St Louis to London and then to San Francisco 48 hours later).
  2. Especially if I have two conferences back to back, but almost definitely as a rule, it's best to have the materials for presentations complete before the conference.  I probably would have enjoyed myself even more, and definitely had a chance to see a lot more sessions, if I hadn't had one presentation to finish.
  3. Presenting four sessions in one conference is extremely challenging.  Technically I only had two full-length presentations (the Disruptor presentation I've done at OSCON/GOTO/QCon etc and my Technical Approach to Women, which was more like a very structured BOF), a short 20-minute talk and a panel.  But I think one full-length presentation and a couple of other bits is probably a much more sane amount.  Especially given 1) and 2) above.
So I didn't get a chance to really see many sessions.  I'm sure the blogosphere will be full of good summaries of them, and they will be available for free via the schedule builder (audio and slides only).

There will be a bunch of other blog posts mentioning the inconvenience of having it in three hotels, the poor suitability of some of the rooms, the difficulty of sharing San Francisco with Oracle Open World, the mediocre food.  But you don't spend the money to fly halfway across the world to San Francisco for the crappy box lunches.  You fly here to meet - face-to-face - some of the people who created Java, those who are steering it now, and the community that continues to make it relevant and fun.

Highlights for me:
James Gosling talks about Robots!

I already mentioned the technical keynote in my summary of Sunday, but I forgot to talk about Dr Robert Ballard's section, which is crazy because it was so inspiring.  What I got out of that was how much fun technology can be, and how kids are really ready to be amazed and engaged with science and technology, provided you get them young enough.  I also really loved that the photos of all the scientists showed great diversity, something he seems to take very seriously.  His comment was "A child needs to see their face 20 years out to know they can play in the game. Don't sell science, sell scientists and engineers".  The point I took from that was that by focussing on "science" and "technology", we could be losing people - by showcasing the people, the talent, the passions, we are much more likely to engage children.  And I think that stands for adults as well.

A robot!
And this nicely fits the message I was trying to get across in my session on Wednesday (which I know I've already blogged about) - it's dead important to address the failure points when it comes to diversity, but I think we forget to push the positives - the reason we don't understand why some groups of people are under-represented in technology is because we all love being here, it's a great industry to work in.  I'd love to see our passions more widely showcased than simply at conferences where we're a self-selecting audience.

The LJC panel about our involvement in the Java Community Process
Not only was this a great JavaOne for me personally, it was a real triumph for the London Java Community.  Last year there were only two of us here, and Martijn was working hard to introduce me to the other JUG leaders and the people on the JCP committee that we were going to be working with over the next 12 months.  This year, there were five of us here, spreading the word about our work as a member of the Executive Committee of the Java Community Process (the Java standards body), primarily our Adopt a JSR program.  We also wanted to talk to a load of people about the Adopt OpenJDK program as well, we've found lots of developers are really keen to develop the language itself, Java at the fundamental level, and we really want to help bridge the gap between the guys who work on the OpenJDK project and the developers in the community.  But all our hard work over the last year, kicking off these programs and working with other user groups and Oracle to really harness the power of the community, has been recognised.  We've won not one, but two awards - woohoo!  Fame, glory, girls/boys, money etc await us!  Well, not quite... but it's certainly nice to be the "Award Winning London Java Community".  

The LJC in the Community Keynote
Our two shiny accolades are:
So, a really great JavaOne.  I'm not sure, if I'm honest, who reads my summaries of conferences - I know lots of people do read them, but I don't know if that's those who went to the conference or those who would have liked to have gone, or those who don't know what it's like at conferences.

But in case this is useful to anyone who is reading this, next year come to JavaOne if:
  1. You want to know what's coming up for Java the platform or Java the language
  2. You want to meet, or at least see presenting, the people who are actually making these changes
  3. You want to meet other Java developers from around the world - whether you want to find someone with the same problems as you, or want to see different issues that face people.
  4. You want to see the Power Of User Groups!
  5. You want to understand how decisions are made with regards to the future of Java
  6. You want to meet like-minded people
The Exhibitors Hall was like Vegas! But there was a buzz which was infectious
Oh there's millions more, and even if you only tick one of those reasons, I personally think it's a great way to get a better understanding of the language we use every day as developers.

And finally, some of my sessions will be available, audio and slides only, via the content catalog.  Look for the following:

  • UGF10467 - Benefits of Open Source
  • CON3732 - Concurrent Programming with the Disruptor
  • CON5130 - London Java Community: How to Change the World
  • CON11338 - The Problem with Women: A Technical Approach

Thursday, 4 October 2012

JavaOne: The Problem With Women - A Technical Approach

Yesterday dawned, with a sense of foreboding (actually it dawned with me coughing my lungs out, but we've heard enough about the sub-optimal state of my respiratory system this week).   On this day, I was giving the talk I was dreading when I got asked to do it.  It's the talk I actually put more work into than any of the other sessions I was presenting at this JavaOne.  It was the Women In IT talk.

It's timely, given that conference season has one again led to cries of sexism and discrimination.  So although I really hate banging on about the subject (you'd never believe it from my blog) it's still necessary to cover.

I feel, and have felt for a long time, that the way we're approaching the "problem" of the lack of women techies is just wrong.  Obviously painting stuff pink is just not going to cut it (I hope that's obvious).  I think the fundamental problem is that we keep thinking about women.  While that should be great for someone like me, it actually triggers a whole bunch of gender stereotyping in our poor human brains which prevents us seeing the big picture - the fact that we're not attractive as an industry for women suggests we're losing a whole heap of talent because of some sort of image problem.  We just don't see the other missing minorities, or we're not comfortable talking about them.  I mean, can you image running a session about attracting more black people into programming?  I suspect there would be uproar in singling out a minority based on something as arbitrary as skin colour.

To be fair, even before the session there was a tiny bit of controversy:

It is nice though to see guys (because indeed this was someone of the male persuasion) getting upset at the thought of someone taking a shot at the girls again.  I think it probably would have been a little more helpful to the session if they'd put my name on it...

Maybe the publicity helped, because there was a really decent turnout for the talk.  I'm terrible at estimating numbers, and of course I completely forgot to take a photo of my lovely audience.  But I'd say there were... 60? 80? people there?  Between 50 and 100 anyway, and seemed like a roughly even split of men and women, and there were people of different backgrounds.  Which is great, it's more women than you normally see at a conference, and more men than you usually see at an event talking about "women's issues".  I really love running sessions about this subject with guys there, I'm of the opinion that talking about this with just women is almost completely useless, and isolates us from the rest of our community.

I took the novel approach of actually trying to treat the problem the same way coders treat any problem: break it down logically.  So I had the problem, the requirements, a retrospective, and the aim was to come up with a list of tasks going forward.

Georges Saab from Oracle was great as our "Business Analyst" - not only did he outline the business value in increasing diversity in the workplace:
  1. Greater pool of talent to hire from
  2. Happier and more productive employees
  3. Greater retention rates
He also gave examples of how this is a bigger problem than just "Women in IT" - he spoke about being the outsider as an American who had relocated to Sweden, and how he benefitted from being in a country that recognises a father's rights when his daughter was born there.

At LMAX we're super-Agile (something we'll actually be talking about at Devoxx this year), so the logical thing to do is to have a retrospective.  The question was somewhat fluffy - tell me about working as a techie, specific points about being female not essential.  So as with all our retrospectives, we covered good points, bad points, questions and ideas.

<aside>Incidentally, loads of people there knew about Agile methods and many were using them at work. Does this mean that agile is now more-or-less the norm?  Does it mean that companies that encourage people to go to conferences are agile or agile-friendly companies?  Or does it mean that people who care about people (i.e. those that go to a session like this) are more drawn to Agile methods? </aside>

(Yes, I'm wearing trainers to present, for the very first time! Thanks to Cecilia Borg for taking the photo)

((Also, special super-thanks to Stephen Chin who saved my presentation by sneaking in with a flipchart, stand and pens literally seconds before I needed it))

Everyone in the audience came up with really great points about working as a techie.  The thing I found most interesting was that very little of it was gender-specific.


  • "Pink it and Shrink it" marketing campaigns, allegedly for women.
  • How do you get into the job?  Entry and career paths unclear
  • Micromanagement
  • The hours
  • Lack of mentoring/role models
  • Booth Babes (they are bad for women, but they are bad for men too - very demeaning to assume that guys as bright and successful as techies are drawn only to boobs)
  • Salary discrepancies
  • Brogrammers stereotype
  • Education pipeline – women doing "computery" subjects decreasing from about 13 years old and onwards (UK numbers)
  • Pressure to be visible when you're a woman/minority
  • You're seen as a woman first and a techie second
  • Time drain to keep current, 90% of what you do is learning new stuff not using skills you already had


  • Being different makes you stand out
  • The hours
  • The salary
  • Woman's perspective is a positive for the team (Later agreed that diverse teams generally were more interesting to work in)
  • We've seen an increase in the number of senior women
  • Balanced teams are more productive
  • There are lots of jobs in IT, always hiring
  • Flexibility and meritocracy
  • Women Are Exceptional (rare to get in as a girl so you're either really interested, or really good, or both)


  • I don't understand this, my CIO is a woman?
  • Is there a correlation between gamers and professional programmers?
  • Does the wider availability of technology (e.g. Facebook) lead to a wider appeal (of working in the industry) to people?
  • As parents should we be doing more to encourage our kids into technology?
  • Is the image of techies changing? 

We can replace the word "Woman" with person pretty much everywhere, and it becomes clear that we shouldn't be trying to work out the problems that face women, but instead be working harder to attract more awesome people into the job we love (I asked who in the room really hated the job, and one person half put his hand up.  So as techies, we generally like what we do), and to look after everyone who's here already as well.  So that lead on to the actions we could do to help this.


  • Look elsewhere for technical talent (e.g. people with craft skills are creative and practical)
  • We should be more actively networking (join your local JUG!)
  • Get them young - go to schools and show kids what we do
  • Challenge stereotypes - we're not geeks who live at home and code in our bedrooms, we're collaborative and creative individuals
  • We need more role models of all flavours
  • Flexible education - it should be cheaper to make "mistakes" - e.g. to switch degrees or to cross-train from other qualifications, we can't be limited by choices we made so young
  • Work experience to give kids/young people a taste of different jobs
  • Encourage / expect children to ask questions, more than just learning the school curriculum
  • Buy kids technology e.g. raspberry pi, arduino
  • Show our faces, we are all role models
  • Be vocal about our passions.  We love this job, let's tell people.

I felt extremely positive at the end of the session, I think guys saw some of the attitudes that affect women, and women saw that guys were not only sympathetic to our "plight", but that they suffer discrimination too.  Basically we're all in this together, and talking gender specifically is sometimes dividing us.

One observation that I loved was that one guy's wife wanted their daughter to do what he does because he loves his job, and she sees hers as a chore.

I also had a number of spin-off conversations later, as always happens when people are dead interested, and a really good point someone raised is that as techies we're frequently the odd one out, the outsider, in a group of "normal" people.  We're actually quite used to it and pretty much embrace it. So if anything we're an industry which will be more tolerant of your outsider-ness (as a woman, as someone who looks different) than more traditional jobs.  It's a thought, and an attitude we should perhaps publish more.

The three things I think we should do as individuals are:

1. Take The Plunge
Women in particularly, but all of you who don't think you can be That Person - start talking at conferences, start writing blogs, start a new user group if you haven't got one, go into schools.  Be that role model.

2. Don't Point Out Her Gender
I know the guys mean well, and women are guilty of this too, but don't highlight to a women at a conference/interview/meetup when you meet her for the first time that she's female.  She knows this. It's almost always said in a positive way ("Wow, it's great that you're here, we don't see many women in these parts"), and I know you mean it to be encouraging.  But it just highlights how different she is, not how awesome it is she's doing the same thing you're doing.

3. What We Do Is Awesome
We're here because we like what we do, we get paid for doing our hobbies.  Not many people can boast of that.  We need to get out there and tell people how much fun it is to be a techie.  Don't let the Hollywood geek stereotype be the only image people have of us.

I had a really good time, and I came out feeling very positive about my job, my industry, and the people who do this.  I'd love to run this session again if I get the opportunity.

EDIT: The slides and audio are available.  The content catalog is a little counter-intuitive to use, hopefully that link will take you to a page with this session title on - click on it and there's "media" on the pop up window.  This session doesn't lend itself well to audio because of the audience participation aspect but I do repeat most of the points and you get a feel for the session.

Tuesday, 2 October 2012

Tips for Presenters

...or, tips-for-Trisha-because-she-has-the-memory-of-a-goldfish.
  • Do not drink too much coffee beforehand.
  • Do not replace coffee with Diet Coke, it is not better...
  • Do not drink too much coffee and drink diet coke and forget to eat.
  • Check skirt length before prancing around on stage.
  • Check desktop background for public-display-appropriateness.
  • Close down applications that have popup notifications.  Do you really want hundreds of people seeing that tweet...?
  • Plug in your laptop power.  Re-typing your password every time the screen powers down is boring.
  • Remember your Mac-to-VGA dongle thingie.  Bring one even if you don't use a Mac - there might be a cute/friendly/senior/cool speaker who needs one, and you can help them.
  • Bring your slides/laptop.  Not that important, especially if you've put it on dropbox.

Monday, 1 October 2012

JavaOne: User Group Sunday

Well this is exciting!  JavaOne 2011 is the first conference I spoke at, so this the first time I've covered the same conference two years running.  I think.

It's very nice to be back at JavaOne.  Last year it was my first opportunity to meet so many people - the guys at Oracle who work really hard to make sure Java has its own identity; the JUG Leaders and Duchess folk; the JCP EC committee members; and loads of people who live and work in the area who I wouldn't normally get a chance to speak to in person.

This year I'm here with several other London Java Community people, and it's great to be a member of the Alumni, to have the privilege of showing other guys around and introducing people to each other.  It's nice to run into people I met here for the first time last year, some of whom I've had a chance to see at other events this year.

Today, Sunday, is an interesting day.  The focus is on community, so I get to hear what other JUGs are doing, some of their pain points, and learn some of the things they're doing that maybe we should think about.

The day started well, with Jim and Richard de-mystifying the business and technology terminology we're bound to come across at this conference.  8:15am is a really harsh time to have to do your first presentation, but it had a good turnout and was a great way to kick off the conference.

I followed this with a talk about why you would open source your secrets, a short presentation detailing the benefits to your business of opening up parts of your codebase.  It went better than expected, given my voice has all but disappeared due to a stupid cold and plane travel and jet lag (and noisy bars).  I had contingency plans on how to present via typing or drawing on my iPad, but in the end I managed even despite the microphone not being turned on.  Doh.

There were a series of presentations on how to make your JUG successful and how to run Adopt a JSR/OpenJDK programmes in your user group, before Ben and I had to dash off to the public EC meeting.  This was not as well-attended as last year, but it meant that I had a chance to talk to all the EC members, and to drink more free champagne than one really ought to in the afternoon.

Next on the packed schedule was a trip to yet another location (seriously, that's 4 different locations just on Sunday) for the keynotes.  Note: next time I say "it's not far, let's walk" in San Francisco, hit me with sticks.  That's the second time in as many days I've been hit with a vertical distance that was further than the horizontal.  At least this time I wasn't wheeling my luggage up the hill like I was on Friday.

The keynotes were definitely better than last year.  I really enjoyed how the technical keynote put the shiny new stuff into an everyday context - seeing JavaFX running on all the platforms, including embedded, and seeing lambdas used in anger, was really engaging.  In my mind, it's much more likely to get "real" developers using these things.  I particularly enjoyed the interplay between Mark Reinhold and Brian Goetz, it's great to see people like that so passionate about what they're doing, it really humanizes them and their projects.

The last trip of the day was back down the hill to one of the many parties scheduled this week.  Of course, it's not in every party that you get given an award, so this was particularly sweet - the London Java Community has been honoured with a Duke's Choice Award.  This is the first year a community has won a "Dukey", and it's amazing to be part of a group of people who are actively contributing to the language I work with daily, and to be recognised for this.  So yes, I was on stage getting an award again.  It's addictive.

So, a really great kick off to this year's JavaOne, and I'm back at the apartment well before my coach (well, Uber) turns into a pumpkin and resting my voice in time for my Disruptor presentation tomorrow.