Thursday, 22 December 2011

Video: Why we shouldn't target women

If you have a Parleys subscription, you can watch the whole "Why we shouldn't target women" panel from Devoxx 2011 a month or so ago.  Watch me attempt to monopolise the whole panel as if it was my idea or something...

Wednesday, 21 December 2011

How to make your CV Not Suck

When you're applying for a job at LMAX, your CV (or résumé, for our American readers) usually comes through me and I decide whether to call you for a technical phone screen.

I'm going to let you into a secret.

I'm going to tell you the criteria I use when judging your CV.

Now, you could say this is a foolish thing for me to do, because now when you apply you'll be "cheating" and writing your CV to pass these guidelines.


LMAX isn't the only company that's going to judge your CV based on these criteria. I firmly believe that an increase in quality of the CVs in our industry can only be A Good Thing.  An increase in the quality of your CV is definitely A Good Thing for you.

Even more importantly, if I get CVs that do not pass these basic criteria, now I know you either don't read the LMAX blogs (shame on you), or you're not able to follow simple instructions (bodes poorly for your ability to learn within the company).

The thing that you have to keep in mind when you're writing your CV is that the reader really does spend less than a minute reading it.  It's not fair, true.  But it's the way humans are. I'm not in HR or recruitment, I have a proper job as a software developer, and I need to get back to that as soon as I can.  When I get CVs in batches of up to 12, as I regularly do, I'm not free to spend more than 10 minutes going through all of them.

The Easy Stuff
You must be able to spell
You really must.  There are things called Spell Checkers and they are amazing.  Some of these new-fangled pieces of software even show you your errors in this cool squiggly red underline in your document.

I'm reading your CV in Open Office, and if I see red squigglies under words that aren't technologies or acronyms I'm going to wonder how good your attention to detail is.

You must use capital letters in the appropriate places
It's traditional to start a sentence with a capital.  It's also traditional to use a capital "I" not "i" when referring to oneself.  We're not 14 years old, we're not writing an SMS to our mates.  We're applying for a proper job paying proper money.

Correct grammar is appreciated
Whether you're a native English-speaker or not, you need to get someone else who is a native English-speaker to check the prose in your CV to see if it scans correctly.  For me, it's not about being prejudiced against you because you're not a natural author, it's a) attention to detail again and b) your ability to make yourself understood.  If your sentence construction, choice of words or simple comma placement is off, I'll have to read that sentence a couple of times to parse it and it's going to trip me up and ruin my flow.  I want to get a good feel for you from reading your CV, so if I stumble a few times I'm not going to feel like I connected with you.

Harder and fluffier
I don't care which versions of Spring you've worked with
I know you need a checklist of technologies on your CV so it gets past the non-technical recruitment agents and get picked up via automated searches.  This is a bigger problem with our industry than one I want to tackle right now.  So I'll let you off having buzzword bingo on your CV.  However, your CV needs to be more than just a list of technologies you have used vaguely, or perhaps once read about.

It's useful to me if a) you put the technology check list in a single place on your CV, b) you give an indication of your level of proficiency in that technology (novice/competent/master) or length of time you've used it in a commercial environment, and c) you organise them in some useful fashion - preferably the ones that are appropriate to the job you're applying for near the top, or at least those you're happiest with at the top.  Alternatively put the checklist of technologies next to the role you used them in.

Often I will completely ignore this section because I'm more interested in your ability to learn and your passion for what you do.

I want to know about your passions
In the old days I used to fast forward to your hobbies and interests, but these days we're encouraged not to put those on the CV in case you're judged against them.  Which seems like political correctness gone crazy, but then when you think about it you can infer a lot about a person from their hobbies and interests, and therefore you could be pre-judging them based on some criteria that is not at all associated with their ability to do the job.  For example, if they have hobbies that take them all over England I might infer they have a car and can drive - OK, it's a dumb example, but you get the idea.

These days, given that I'm trying to find great team members to work with me at LMAX, I'm looking for things like: your blog; any contributions to open source software; your involvement in a Java User Group (or other extra-curricular activity).  I'm not going to discard you if you don't have any of these things, but if you do it's definitely extra brownie points for you.

I want to know if you worship at the altar of technology, or if you're business-value driven
Either of these things is fine - we need people who are very business-focussed and people who are rabid about technology, as well as all those in between, to build a good team.  Another axis of interest is people/process - are you passionate about people, about building a good team, about helping them to deliver?

Getting a feel for where you sit on these axes is not for me to discard you, but if you look like you're strongly in one of these camps and I feel like we need a team member to really push that area, then you stand a much better chance of getting a phone interview.

I'll get an indication of where you are by the way you talk about your roles and your achievements.  This does not help me:
Senior Developer on a web administration application.  Product was implemented using JavaScript, HTML, Spring, Hibernate, JMS, and MySQL.
This is much more useful:
I was part of a team of four developers implementing a web based administration application, commissioned to enable internal users to update the settings of our reporting tool.  This saved the support staff approximately 4 hours every week, as they no longer needed to manually update the database. We used agile techniques such as daily standups and weekly iterations in order to provide quick feedback to the business.
(I made both of those up, by the way, before anyone starts trying to sue me for stealing something off their CV).

Here I can see:
  1. The size of the team, and your ability to work in a team
  2. You understood the business need you were trying to fulfill
  3. You have worked in an agile environment and at least pay lip service to why you were working that way.
I don't really care about the specific technologies you used, the fact that you mentioned web-based and database gives me enough of a feel.

Sometimes prospective employers really do stalk you
Personally I think claims that prospective employers will check every facet of your web presence are somewhat over-exaggerated.  If I barely have 60 seconds to read your CV, I'm not going to check you out on Facebook, my life is too short.

However, if you claim to have written a book I will look it up on Amazon .  If you have a publication or example code, I will glance at those.  If you've worked for a company I've worked for in the past, I'll look you up on LinkedIn to see if we have any common connections (or worse, to see if I should remember you and simply don't).  I'll also use LinkedIn if your CV is not screaming yes or no, to see if there's an extra dimension in your profile which will tip me one way or the other.

So be aware of your web presence, particularly something that is aimed at your professional image like LinkedIn, and make sure it represents you the way you want it to.

In Conclusion
This post might be simply a good way to increase my own workload - every CV I get from now on may be an automatic pass, and then I have to call all of you before I can start weeding you out.

But I don't mind too much about that.  I get concerned sometimes that good people are not getting the interviews they deserve, not just at LMAX but across the industry, because they get almost no good CV advice.  Frequently the people who are the first to read CVs are agencies who are not technologists.  By all means, have words on there that will make your CV appear on their search results.  But you need to put something on there for me, a real developer, because strings of keywords tell me nothing about you.

If I can improve the quality of just one person's CV with this post, I'm happy.  If I have given you that first step towards that job you really want, then that's even better.

Sunday, 4 December 2011

Video of our JAX London session

At JAX London Mike and I presented "Understanding the Disruptor - A Beginner's Guide to Hardcore Concurrency".  This is the session we initially previewed to the London Java Community a few weeks earlier.  The content is the same, but the feel of the presentation was quite different to us - the venue for the LJC event was more intimate, and it was easier to interact with the audience.  At JAX, we were up on stage, which was pretty cool actually, but meant that it felt more like a lecture and it was less easy to connect with the audience.

We received some really great feedback on this presentation, and it was brilliant to see a lot of the speakers from JAX there watching us.

Interview by the Oracle Technology Network at Devoxx

Tori Wieldt from the Oracle Technology Network interviewed me at Devoxx.  Because I was there to be on the Why We Shouldn't Target Women panel, the interview is just another platform for me to air my views on this subject again.

Yes, I am actually wearing pink....

Monday, 28 November 2011

London Java Community Open Conference

Saturday was, hopefully, my last conference of the year.  My lucky readers should start to see some posts which are not simply me gushing about another opportunity to hang out with awesome people and learn about interesting "stuff".

Who wants to propose a session?
In many ways the London Java Community Open Conference was my favourite one so far, and not just because it's near home and I helped to organise it.  One of the awesome things about both Java One and Devoxx was the opportunity to travel, to see new places and to meet people you might not meet in London.  The scale, and the opportunities to meet key players in the Java world, were the things I probably appreciated the most from both of those conferences.  And you can tell from my posts I really enjoyed them.

But the LJC conference was probably perfect as my last one for 2011:
"How do you spell 'lightning'?"
  • Being on home turf with awesome people who have really helped drag me kicking and screaming into the conference scene really brought home to me what an amazing year this has been.  This time last year, I felt I barely had the credentials to be a behind-the-scenes organiser for the LJC, and I didn't attend last year's conference because I wasn't sure how much I would get out of it.  This year, I'm at the conference giving two sessions, having made my international début already.
  • With 120 people you feel like you can talk to everyone at some point if you want to.  I don't think I managed that, but I probably chatted in one way or another with maybe half the attendees.  The great thing about this is you see the wide variety of things people are working on - the technologies, the business problems, the team and company sizes, the methodologies. It's eye-opening and quite exciting.
  • It seemed that a small, open conference like this drives content based on relevance.  We had no vendor pitches, although John was contractually obliged to mention Atlassian at least once every half hour (but as they paid for the beer, this was only fair).  People vote with their feet, and attend the sessions that they will get the most out of.  I liked this format a lot.
  • I presented alone for the first time, not hiding behind Mike or Martin.  I found this surprisingly liberating.  I love working with those guys, but without them providing a safety net I actually found my confidence increasing as I realised I was perfectly capable of answering things I would probably have let them field.
  • My second session was more workshop-like, and I wanted the audience to guide what we covered.  I thought it went really well, I loved letting the audience guide it, and I enjoyed giving it.
  • I was honoured (and terrified) to be asked to be part of a Meet the Experts panel with people who actually know what they're talking about.  I was very very pleased to get away with not being asked any questions about being a girl or the length of my skirt.  We had a great discussion around writing high performance code, about different technologies and their applicability, and about the future of Java and JVM-based languages.
  • I loved the venue.  The rooms were a nice range of sizes, all with projectors of course, but also whiteboard space and flip charts.  It looked like a 1960s version of the future - all shiny white surfaces and curving lines.  But it felt like a space to create and innovate in.
  • Mike's Hacking the Open JDK session in the morning was excellent.  Again, this was another example of a workshop format working really well.  He gave some good background to compilers in general, and a good walk through of some of the code that's there at the moment.  He was happy to share stuff he'd learnt the hard way, and it made me want to get more involved in that side of things.
  • The food was awesome.

Clearly people haven't had enough coffee yet.
My sessions were User's Guides to the Disruptor - a beginner's and a more advanced one.  The beginner's was an updated summary of the Disruptor stuff already covered in this blog - the ring buffer, writing to and reading from it, and configuration.  The second session covered  more advanced ideas: you don't need a ring buffer any more; cache lines and false sharing; worker pools; aggregate event handlers. This session was a lot less prepared and more collaborative, and I loved giving it.  Maybe that's my teacher-genetics coming out.

The aim of both sessions was to give people an idea of how to actually use the Disruptor - developers are definitely interested in how and why it works, but we've been evangelising a lot and now there are very sensible questions being asked about how to get it to do various things.  I'd like to run some more of these sessions in future, and to add more material to the blog.

And finally, a proper meal before more beer.
Back to the conference.  Were there any downsides?  Personally I had none.  If I had to suggest an improvement for next year, it's that we would like to see more novice speakers presenting.  The LJC has always been about nurturing this talent, and a small conference like this one with a friendly audience, many of whom you may already know, is a great place to practice.  The lightning talks showed the great variety (and abilities) of our members, it would be nice to expand this to full sessions.  As I found, filling a 30 minute session is not anywhere near as hard as you think!

I'm really looking forward to next year's LJC conference, and I'm totally buzzing from the positive vibe from this year's.
The LJC Associates modelling their lovely new t-shirts.  Mine fits!

Sunday, 20 November 2011

Why We Shouldn't Target Women

I'm back from Devoxx, having had lots of food for thought.  In particular, my panel on Why We Shouldn't Target Women generated a lot of discussion and I'm still trying to process it all.

Martijn Verburg; Regina ten Bruggencate; Trisha Gee; Antonio Goncalves; Claude Falguière; Kim Ross 
The panel went really well, we got decent interaction from the audience, and of course my fellow panel members were awesome.  I managed to restrain myself from using the opportunity as my own personal soap box and allowed other people to speak occasionally.  Sadly the only male on the panel stole the show somewhat, so Antonio won't be invited in future... Actually in seriousness, it was great to have a guy on the panel to present his point of view.  It was interesting that he's a father, highlighting that parenting issues are not the same as women's issues, and conflating those two concerns hurts both genders. But Antonio's hair is far too shiny and pretty and he's funnier than I am, so I'm not standing next to him again.

I'd love to make a note of all the issues discussed during the hour, but I'll be honest, I was too busy trying not to fall over in my girly six-inch stiletto boots to remember anything that happened.  The video will hopefully be available on Parleys some time in the future, so I will link to it when it's there if it's not too horribly embarrassing.

Someone let me have the microphone again...
One question that came up more than once throughout the week was: IT/programming is not the only industry with a lack of women, why should we care?  Maybe it's just natural?

I think we need to be very careful before writing off such an imbalance as "natural".  We need to make sure first that we aren't discriminating against groups, consciously or through some unnoticed system bias.    And for me, the thing is that we notice that women aren't well represented in technical roles, but we don't necessarily notice the other groups of people who might be being put off for similar (or maybe totally different) reasons.  We can't so easily tell if gays, jews, parents, shy people, folks from poor backgrounds or any other less distinguishable sets of people are finding it hard to make it as a programmer.

We can see the figures for females.  In the UK in 2008:
  • 44.7% of people taking ICT (Information and Communications Technology) at GCSE (age 14-16) are girls.  As in many other subjects these days, the girls get better results than the boys.
  • 38.6% of kids taking ICT at A Level (16-18) are girls.  Only 9.6% of Computing students are girls. Again, girls outperform the boys in both subjects.
  • 19.4% of those studying Computer Science at university are women.  This is down from 24% in 2003.
  • Through a not-very-scientific poll of the members of the London Java Community, it looks like approximately 15% of techies in industry are women.  Interestingly, some companies have a much higher proportion than others, but I think that's something to explore another time.
The thing that worries me about these figures are a) the "pipeline" hints at a drop-off in interest in the subject, not a lack of ability, since the girls are doing well tech subjects but choose not to pursue them and b) the numbers are declining in some areas, specifically university applications.  I've read studies that show the percentage of those in technical jobs who are women has been steadily declining since the 80s, but it's difficult to get specific figures, especially as I'm particularly interested in programming / technical roles rather than just the percentage of women "in IT".

If the numbers are declining, that seems like a smell to me.  Not only do we have some sort of image problem which puts people like those who have two X chromosomes off from entering our industry, we're driving them away when they get here.  And I don't believe that's because women find they're not good at it.

Other industries have been successful at attracting a higher proportion of women - for example, in 1950, only 15% of accountants were women.  By 1985 half of all accounting majors were women, and by 1990 the majority of the workforce was female.  It would be nice to think we could learn something from our friends in the Maths world.  After all, the skills are not dissimilar.  But they have a slight advantage over us - in many countries all children are required to study maths until age 16.  However, there are very few 16-year-olds who have any programming experience at all.  Either we need to accept that we're going to have to hire kids with other degrees and train them to be programmers, or we're going to have to do some serious outreach to interest kids in programming and technology long before they start to make their exam choices.  In the UK, they need to choose their GCSE subjects at 14, which means we probably need to be targeting kids as young as 10 or 11.  That's not inconceivable, when you think about it - how many of us were programming in BASIC aged eight or nine?  Could we not teach kids to write an iPhone app or a Facebook app instead?  I was very pleased to hear someone in our audience was teaching their daughter to program.  At an even younger age, the least you can do is buy your kids Lego - I'm sure that exercises the right parts of the brain.

The point is, that I don't think we can conclude that it's "natural" for girls to not be interested in programming.  The first programmer was a woman, and during the war and even into the '60s many programmers were women.  I think that if we can work with schools to provide some tutoring in computing at a younger age we might be able to attract kids who wouldn't have thought about programming as a career choice before.  Some of these may be women, some will not.  That's fine, diversity is our ultimate goal.

Which leads me onto another point - special treatment of women.  I've said it before I'm sure - I think singling out women to attempt to increase their numbers does more harm than good, for a number of reasons: 
  1. It makes women think that there must be something wrong in our industry if women need to be treated differently, or mentored differently, or need additional training to get by. Or it makes us think that we really aren't as good as our male counterparts because we're being given special treatment.
  2. It builds up resentment amongst our male colleagues, so they soon begin to wonder if we're doing our job because we're good at it, or if we got there because we got lots more help, or because we're there to tick some sort of box
  3. It's not solving the problem of lack of overall diversity - where are the programs for people who went to the wrong schools, for those who didn't think about programming as a career, for a million other special interest groups that exist out there?
Some of the ideas that imply special treatment are things like: all women events (you should know by now how I feel about those); free entry to conferences for women; higher pay for women at certain companies.  Although I would benefit from all of these things, I hate them.  I feel like I'm being compensated for this terrible affliction of being born female.

So, what can we do?
  • Reach out to those you want speaking at your conferences.  This might include women, it might include people from other "minorities", or it might just be awesome people that you want there making your conference look good.  
  • Use these people for marketing and role models - it is indeed possible that if you have some female faces on your conference site and posters, you might attract more women attendees.  Actually, if you have more women role models you might attract more men, but hey, it's all about diversity.
  • Buy your kids Lego and teach them programming.
  • Treat women in your company like people the same as anyone else.  We were asked about how to deal with a younger female boss.  Kim's answer was perfect: "Like an older, male boss".
  • Get involved in mentoring programmes, not just for women but for people of all ages - kids at school, undergraduates, or people who are already in the industry and want to take that next step, for example to speaking at conferences or writing or leading teams or becoming CTO.
Since the panel I've been pointed, numerous times, to this excellent article which talks about racism, sexism, and meritocracies.  I particularly like the line "Explicit diversity programs have the solution exactly backwards".  Well worth a read.

Wednesday, 16 November 2011

Devoxx: The story so far

Stephan wearing the Brazilian flag at the opening keynote
  • European conferences are different (and cool) because you get to hear even more languages spoken than you usually do in London (apparently the most diverse city in the world for spoken languages).  I think the idea of a Paris Devoxx with 75% of the talks in French is brilliant - I'm always banging on about diversity, we shouldn't expect developers to learn in English only.
  • Really great to meet up with some of the people I met at Java One and am starting to feel more a part of the global community.
  • Seems to me there are slightly more women here than at the other conferences I've been to, and not just because Regina and I pulled together four women for a panel on women technologists.  And once again, a lot of guys asking why this is, because they want things to change.
  • A highlight was seeing my namesake, AutoTrish, up on a cinema-sized screen in front of hundreds of people at Dave Farley's Continuous Delivery presentation.
  • Building on from my twitter revelation at JAX London, I've found twitter very useful here for messaging people I want to meet up with, but also for chatting to new people and making new friends.  It's not quite as intimate as JAX London though because there are billions more people here, so the chances of actually bumping into the twitter friends is much lower.
  • Have had lots of interesting conversations with people about the Open JDK, which I guess is the logical extension of the interesting conversations I had about the JCP In San Francisco.
  • A community event like this is different to an event like Java One, because a single organisation isn't calling the shots.  It's interesting (and great) that Oracle and Google can both be here talking about the cool stuff they're up to.
The Diabolical Developer
Conferences are clearly something that appeal to me - I love meeting people and chatting about interesting and (sometimes) intelligent things; I love learning stuff and indexing it away, possibly for future references; I love hanging out with people like the LJC guys (Ben, Martijn and John); I love kicking around ideas of what more we can do at LMAX with our lot (Mike, Dave, Dali).

Dave's Continuous Delivery
I'm really looking forward to my panel this afternoon, I'm going to be ranting about how we target women for tech jobs.  Should be fun.

Nice 'tash!
Shameless plug: Mike and Dali are raising money for men's health with their rather awesome 'tashes.  It took guts to stand up on stage and present with that handlebar, please give a penny or two:

Tuesday, 15 November 2011

JAX London - I learn stuff and meet people

A couple of weeks ago, I was at JAX London along with a number of the London Java Community regulars (Martijn/Ben/John/Sandro/Simon/Zoe I'm looking at you....)

My purpose for attending was largely to present the Hardcore Concurrency for Beginners talk that Mike and I debuted at an LJC event a few weeks back. Almost as important was catching up with the aforementioned LJCers and meeting with as many people as would talk to me. After the disappointment of the sessions at Java One, sitting in a room being talked at was quite low down on my list of priorities. Sometimes it's nice to be wrong.

The sessions at JAX were of a very high standard, and I learnt something from every one. I was pleasantly surprised by the calibre of international speakers that were there, and the sessions seemed to be pitched right for me personally, which was nice.

  • I'm going to cover these first because I like to end on a high note.  Firstly, although I was interested in the Open JDK session at the community night, it was really on way too late (and after too much beer - i.e. more than none) to get the most out of it.
  • It's a bit of a shame that our session was the last presentation on the final day, by that time people's brains are fried and we didn't get as many questions, or as much interaction, as we usually would.  Maybe that's because everyone understood and agreed with us.  But we did get great feedback so I could be scraping the barrel for things to complain about.
The following sections outline the main takeaway points for me.

Software Craftsmanship / Design
Sandro did a great job emphasising that Software Craftsmanship is about professionalism, not beauty.  We should be doing the right thing because we want to, because it makes everyone's lives easier in the long run, and because it is the right thing to do, not because some process dictates that we do it.  The other thing that really struck me was how having a craftsman's mindset leads to us taking ownership of our career and investing in it.  He also challenged us to stop being miserable and negative.  If we're happy, we'll attract more (presumably happy) people into our circle.

Jason Gorman's Slow and Dirty presentation showed that ignoring quality slows down delivery not just in the long run, in terms of maintainability, but also in the short run - a TDD exercise of approximately 30 minutes took less time to get right when done in a test driven fashion, despite that fact that we all still think writing tests takes too much time. He pointed out that Twitter and Facebook are statistical aberrations - not every startup can afford to assume they will be bought out of their scalability problems. There was lots of interesting stuff here about quality, which was pretty inspiring at the time but in retrospect, as a team that already does Test Driven Development almost to the extreme, I wonder what's next for us to improve our quality even further.
Simon Ritter's keynote stated that code should be a joy to read, not simply easy to read, and Adam Bien's presentation talking about simplifying code: thinking about design, and not getting bogged down in unnecessary design patterns in order to implement something simple.

Concurrency / Parallelism / Performance
Russel Winder's session around message passing had me thinking. It was particularly interesting to see him say things that are possibly the opposite of what we (the LMAX/Disruptor types) are preaching. For example, that programmers shouldn't care about the low-level details; that we should be using models (i.e. abstraction) to deal with parallelism; that you should let the JVM deal with thread management. However, I think he's fundamentally coming from the same place as us: "concurrency" in the past was not a good model, it was designed for old hardware that was trying to run multiple processes on a single core. With multi-core systems you need to be running code in parallel instead.

Dan Hardiker's performance testing presentation was another one that reinforced that testing first, finding what the real performance is, profiling and then targeted experimentation are all fundamental to getting good performance. There was a lot of good advice to how to write good performance tests too.
Another point from Simon Ritter's keynote reiterated that the performance free lunch was over, and we need to get better at writing parallel code.

Both the Open JDK session and Ben and Martijn's "Spring cleaning your code base with Java 7" had me attempting to do things with my mac I never intended to do (i.e. write code). Thanks to Ben and Martijn's patience, I finally got IntelliJ playing nicely on the mac with Java 7, which was a challenge but I'm pretty pleased I've achieved it. The Open JDK one was not as successful for me personally, but I got a good feel for the process of building it (i.e. it's hard and it takes a very long time).

Other great stuff:
  • The keynote by James Governor from Redmonk was really thought-provoking.  So thought-provoking I wrote no notes and can't remember any of it.
  • As last time, the Community night was really great.  I met new people and I hung out with some old favourites.  Dear God I must stop drinking with those guys. Hotel bars are particularly awful for losing track of time.
  • I heard about the Java 7+ features enough times from various people to be able to give an overview of the release plan to my geek friends in the pub on Friday (hey, they asked).
  • I learnt how to use twitter to bridge that gap between me and other attendees, and made new friends without having to do the scary thing of approaching strangers.
  • The lunches we rather good.
  • Going to a conference 20 minutes from home is a bonus.  Nice to meet other London devs as well as the European ones too.
  • To me, it seems as if the relevance of the JCP is starting to seep out into the real(er) world.
  • The tables for laptops at the front of the rooms was an awesome idea.  For a start, it encouraged people to get into the room early to get one of those seats.
I had a great time at the conference, I learnt stuff and met people, which is all I really want.

For once, the photos aren't mine. Images courtesy of JAX London.

Wednesday, 9 November 2011

A NYSE Product Manager and an LMAX Developer walk into a low latency trading seminar...

"What... exactly... were you guys looking to get out of today's event? Because..."

"Because we're girls?"

"Um... yes..."

Kim impetuously opts for The Truth: "We're here to meet men."

Our interrogator looks round dubiously.

"No, really, why are you here?"

Phew.  My reputation is intact1

Kim eloquently describes what her situation is as Product Manager and the criteria she's measuring third party products against.  I explain how LMAX aims to be the fastest retail exchange in the world, and therefore low latency is a tiny bit important to us.  I talk about how we created The Disruptor on our path to achieve that goal.  The guys gathered around us look a little... shell-shocked.

I'm exaggerating for Dramatic Effect.  Before anyone starts getting upset about the only two girls at the event who weren't staff or hospitality being singled out, you have to give the guys credit.  They approached us, engaged us in conversation, and had a very serious question about what we were after, and was there anything the vendor could do to either improve their offering or to make their sales pitch more appealing.

And don't get me wrong - it's brilliant being different in a situation like that, if people are brave / foolish / drunk enough to talk to you.  It beats the hell out of sitting in a corner trying to get up the nerve to speak to Strangers (been there, done that).

But it is quite a contrast, even from the Java events (JAX London, Java One).  There, I was in a select group of people of the female persuasion.  But I was also part of a community, and treated as A Developer.  At very specialised events (low latency, high performance in particular) diversity is almost non-existent.  You can count the number of women on one hand (if you can see any at all) and even the developers wear suits (poor bastards).  However it would probably be better if you could hide your surprise at hearing technical terminology coming out of a woman's mouth.

But... I kinda like it.  Yes, I'm an alien.  Yes, I'm special.  But if it means you make the extra effort to speak to me, I can live with that.

1 "Extra extra, read all about it! Blogger And International Conference Speaker Only Does It To Meet Boys!"  Not quite Jordan Stalks Rugby Ace For Sperm Donor.  Which I really did see this morning.

EDIT: oh yes, and of course I forgot to plug my panel at Devoxx next week: "Why we shouldn't target women"

Sunday, 6 November 2011

More videos from Java One 2011

It must be time for me to move on from talking about Java One, it has dominated my blog of late.  But also I want to talk about JAX London from this week.

But before I move on, it's probably worth rounding off with the last two resources from the conference.

1) Martin Thompson and I are interviewed about the Disruptor winning the Duke Award (we come in halfway through):

2) I'm interviewed by Duchess about life, the universe and everything (well, the London Java Community, the JCP, the LMAX Disruptor and Duke Award, and women programmers).


Friday, 28 October 2011

On The Similarities Between Girls And Aliens

I discovered, through the power of the search words that lead to my blog, that there was an incident at JavaOne that once again opens the can of worms that is Sexism In IT.

This Makes Me Sad.  I had a really positive experience at JavaOne.  In fact, I would say it was the one conference I've been to in the last 12 months where I felt like my gender wasn't a problem - I even got away with wearing hotpants (tweed is business-casual, right??) without being mistaken for anything other than a developer.

I know incidents like this cause a lot of tension, and I want to explore why.  Get ready for some gross generalisations: women get upset because they feel they're being marginalised or treated differently; men get upset because they think we're being over-sensitive, especially when the cause is something unintentional.  I sometimes wonder, as I'm sure other people do, if perhaps picking up every incident harms our cause more than advancing it.  But then I feel that the unconscious stuff is exactly the stuff that needs to be pointed out - if you don't realise you're causing a problem, you can't change your behaviour.

So what I wanted to do was... well, what I wanted to do was not rant about gender (again) and be a good little non-gendered programmer.  But then I thought that spreading a bit of understanding might be A Good Thing.  After all, we're all about continuous improvement, right?

I'm sure many people have been one of a minority at some point in their lives (brace yourselves for a litany of stereotyping) - the only man at their daughter's dance recital; the only white guy on a basketball team; the only straight guy in a gay bar (accidents happen!); the only girl on the development team... Speaking for myself, in those situations I'm not actually looking for things which prove that I'm Not One Of Them. I'm sub-consciously seeking reassurance that I'm not an alien, a freak of nature, the odd one out.

I've been in mostly male environments for the last 16 years - this is the norm for me, it's my life.  It freaks me out if I'm surrounded by women actually.  What's jarring and uncomfortable is when the difference of your gender becomes apparent: when all the t-shirts are boy-shaped and boy-sized; when someone makes a joke about "women"; when someone addresses the room with "Gentlemen" - or worse, they try and make up for it: "Gentlemen.  Oh, and Ladies.  Well, Lady <nervous smile>".  Thanks, that doesn't make me feel like an outsider at all.

Something else that really highlights the difference in genders is when you have plenty of women at the conference... but they're not the attendees.  They're manning the booths (marketing/sales or just plain hired "help"), they're taking tickets, they're dishing out the lunches.  In these cases, it becomes normal to assume that "girl" = "staff".  Not guest.  Not equal.

TradeTech was one of the worst examples of this that I've experienced.  Those (wo)manning the booths had been chosen for their aesthetics not their knowledge.  There was even entertainment consisting of scantily clad stilt-walkers - at a financial conference!  I made the mistake of turning up in a skirt - for those who know my dress sense, it was not one of my arse-length ones, it was just above my knees - and everyone assumed I was selling something. I had a job to persuade them that I had actually paid for my ticket.

So.  What am I trying to get at?
  • We're not trying to make you uncomfortable when we point out tiny accidental possibly maybe sexist or sexist-seeming comments/incidents.  We're trying to stamp out behaviour that can subconsciously be pushing women (or other minorities/groups) out of our industry.  We like it here, we want to stay, and we want others to join us.
  • It's very easy to alienate people who are not 100% comfortable in your environment.  Every time I see t-shirts in boys size only I'm reminded I'm Not One Of You.
...and what can we do?
  • Well, the t-shirts is an easy one.  So easy, and so stupid, you might not think it's worthwhile.  Especially as people like me don't even want your free t-shirt.  But I want to feel like you wanted me to want it.  Please stock some skinny-fit tees in multiple sizes, and stock smalls and mediums of the normal shape.  There are guys who would like this too.  Even if you can't get rid of your skinny tees, it will do wonders for your image.
  • Never assume your audience is all male.  Never even assume it's "mostly" male.  If your sister/girlfriend/mother/daughter might frown at something you're saying, don't say it.  You'll look like an idiot.  You can assume your audience is all technical, and joke about managers, or is all Java, and take the mickey out of C#.  Don't draw arbitrary battle lines based on gender/race/origin - any jokes should make all the audience feel included, not like specific individuals are excluded.
  • There's already been a lot said elsewhere about encouraging women speakers at events.  I'm totally behind this, but it's a fine line because I'm also totally against positive discrimination.  For the purposes of this blog, I would just say make sure you have some women on your speakers list, in the same way you would probably ensure you have a Java 7 talk, or a talk on the shiniest new technology, or other miscellaneous checkboxes you need to tick in order to make your conference a success.
  • Not sure what to suggest around many of the girls there being staff... I guess something simple like clear uniforms would stop people assuming female delegates are there to hand out lunch.  And making sure that your staff/helpers/organisers are of both genders too.
If you're interested in this whole topic, or want to tell me I'm wrong to my face, come along my panel at Devoxx - Why We Shouldn't Target Women.

Friday, 21 October 2011

Mike and I debut our new Disruptor presentation

Last Tuesday Mike and I unveiled our brand shiny new presentation: Understanding the Disruptor, a Beginner's Guide to Hardcore Concurrency.  This was a preview of the talk we'll be doing at JAX London on the 2nd November.

A video of the session is available, as are the slides.  I promise not to say "so" anywhere near as many times when I repeat my performance at JAX (is there anything more painful than watching yourself on video?).

I thought the session went really really well.  We got some great questions at the end, we had an audience that was engaged, and I was dead pleased we didn't lose anyone with the assembly language.  We had some very valuable feedback afterwards too.

As well as our presentation, there were three great lightning talks:
    Somay Nakhal on Java Thread States - Somay gave a nice overview of thread lifecycles with code and some great diagrams.  I liked how he made this more applicable to the real world than the sort of book examples you get.

    Ged Byrne on the shiny new LJC Book Club - Ged reminded us how great it is to read an actual, paper book.  How committing to reading page by page forces you to learn in a different way to jumping around internet references that might not give you the context you need.  I thought this was a great presentation with humour, and I liked the way he challenged us to "expand our minds".  Although the actual book he was reviewing was Oracle Coherence 3.5, I've decided I need to read Beautiful Software, which Ged quoted at the end of the talk.

    Peter Lawrey on Common Java Misconceptions - A session which plays well with what we're trying to preach when we talk about Tackling Folklore.  He covered a few topics that are assumed to be "truth".  For example, dealing with garbage collection is not a mandatory part of writing Java - you could write GC-friendly code for a start.  Also it's naive to assume the JDK is written in an efficient way, anyone who's actually dug around it for a while will realise that newer, more efficient methods of programming have not been applied to all areas of the (massive) existing code base.  I think it's great to have people out there talking about this stuff, it's too easy to make assumptions and take things for granted.  The most important thing he said: "If you're told something, don't just believe it - test it yourself first".
All of us (me, Mike and the lightning talk presenters) got such a great response it has encouraged us at the LJC to try and push for more real developers presenting their experiences.  We have a lot of great presentations from vendors, but what's more applicable to Java guys and girls across the board is other developers sharing the problems they're trying to solve and how they go about that process.

I'm very much looking forward to presenting this again at JAX.

Wednesday, 12 October 2011

JavaOne 2011: Roundup

Having been back in London for a few days I've had some time to digest the madness that was last week.

My lasting impression of JavaOne is almost entirely positive.  Granted, it was my first major conference, so maybe I'm just not jaded yet.  But let me tell you what I loved about it (yes, I did cover some of these in my last post):
  • First and foremost, the people.  I don't remember meeting a single grumpy person. Everyone I spoke to was there to get the most out of the experience, regardless of how many times they'd been previously.  In my experience, techies are not conditioned to be socially comfortable, yet introductions were made and the conversations flowed easily.
  • Of course it wasn't just the attendees who were friendly, the staff and organisers were approachable and helpful, and it was nice to have people hanging around to direct you.
  • One of the (few) advantages of having the event over multiple hotels was the outdoor space between them.  It's unfortunate that it rained,  but I really liked being able to hang around outside.  I especially liked that they had provided power points for your laptop, so you didn't have to be cooped up indoors to update your blog.  I also thought that having to walk between the venues was good exercise, given I didn't make it to the gym last week. However I can see why people want to move the event back to one central location.
  • I personally found the sessions less useful than the networking.  I mostly attended the high-performance / concurrency sessions, but I probably should have been to ones about things I didn't know (e.g. other JVM languages).  My favourite session was Martijn's Diabolical Developer session, but then I'm a fan of stand-up comedy.  
  • Another favourite was the Java Posse live podcast.  I'm ashamed to admit that I've never listened to one before (my excuse: I don't listen to podcasts at all because I don't have a long commute to work, which would be the ideal time).  I thought it was great how everyone felt like a part of the Java Posse and not a passive audience.
  • I really felt that Oracle was trying its best to invoke the spirit of community.  Maybe that's because when I wasn't in sessions or having random conversations, I was in Java User Group or Java Community Process events.  It seems pretty clear to me that the inclusion of SouJava and the London Java Community in the JCP EC has shaken things up a bit.  But then, I would say that - I'm biased.  But the vibe I was getting across the whole conference was that having the community involved in this key decision-making organisation is a step forward.  I would even go so far as to claim that it inspired a number of other players to seriously consider getting on board rather than complaining from the sidelines.
  • On a related note, I really enjoyed the final keynote on community. To me, that was an indication that Oracle takes our participation very seriously.  I liked that it was split into a lot of different interviews and panels, all quite short, which showcased the variety of the Java platform community.  I came out of that feeling pretty warm and fluffy about the future of our technology, and proud to be an active part of it.
Stuff I was not so bothered about:
  • Vendor keynotes.  Pretty dull to be honest.  I understand why they had them but after the first one I didn't turn up to any more.
  • The other bad points I already mentioned in the last post.
Personal highlights:
  • Picking up the Duke's Choice Award (video - note: only seems to work in Firefox for me) for the Disruptor. Yeah yeah, I'll shut up about it at some point, let me have my moment of glory.
  • Co-presenting a session on the Disruptor with Martin.  He invited me to stand up with him when we realised I could go to the event, and I was terrified of the thought.  So I did it.
  • Meeting and being interviewed by the JDuchess ladies.  The video doesn't seem to be available, so maybe I was rubbish, but it was a cool thing for me all the same.
  • Talking about the Disruptor for the Java Spotlight Podcast and the Oracle news guys (again, I can't find the content for this yet).
I had a really brilliant time, and would love to repeat the experience again as soon as possible!

Tuesday, 4 October 2011

JavaOne: Initial Observations

So I've been at JavaOne for the better part of three days, it's time to record some of my observations so far:

  • The wireless access is rubbish.
  • <Gross generalisation> technical people are not natural public speakers.  Makes me feel better about the presentations I'm going to be giving (see A Beginner's Guide to Hardcore Concurrency).
  • The sessions are less useful than getting out and chatting.  I've had a really excellent time, I've met: people from other Java User Groups; the Duchess girls; other Duke Award winners; the Azul guys; guys (well, girls) from O'Reilly books; JCP members and many random and awesome people.
  • Everyone thinks that Large is an acceptable default t-shirt size (it's not).  Vendors - if you're really serious about appealing to The Other Gender you need to stock XS, if not actual skinny tees.
  • If you're running a conference, you should probably have your projection screens above the height of the audience members' heads
  • People at JavaOne are dead friendly.  I've ended up in a lot of conversations just by virtue of standing alone for longer than 30 seconds.  It is noticeably easier to talk to people here than at the conferences I've been attending in London.  Not sure if that's a location thing or a domain thing.
  • Socialising in London is great practice for this sort of event.  I am capable of taking advantage of free drink and still maintaining a conversation and staying upright in 6 inch heels.
  • I miss American breakfasts.  I've been gorging myself on pancakes, biscuits and gravy, and eggs benedict.  I'll be calling my personal trainer as soon as I return.
  • Haven't seen anything to contradict my view that San Francisco is not the Brit's typical view of California - the weather is rubbish.  London has been hotter and sunnier this week.
  • Sharing an apartment with your CTO is not as weird as you might think.  Especially if you relegate him to the closet (no, that's not a euphemism).
  • It's difficult to remember to Tweet or blog when you're totally engrossed in conversations with people.
Here's a photo of me representing LMAX as I pick up the Duke Award we won for the Disruptor:

 (Thanks to Martijn for taking the photo).

I was grabbed for an interview which should be available (un-edited - erk!) on at some point, I'll post it when it's available (if it's not rubbish).

Tuesday, 27 September 2011

JavaOne 2011

So, I'm off to JavaOne next week!

This is an unexpected and very pleasant surprise.  I'll be there with Martin (of the Disruptor fame), and Martijn (that's not going to get confusing at all).  Martin will be talking about the Disruptor on Thursday, and Martijn is busy talking about... everything.  Most importantly for the LJC he's representing us in our shiny new JCP Executive Committee role.

I'm really looking forward to meeting pretty much anyone and everyone who'll talk to me.  It's the first international conference I've been to and I'm hoping to meet people I wouldn't normally get a chance to see in London.  It's also really cool to be able to represent both LMAX and the London Java Community. Hopefully it won't lead to some sort of split personality syndrome.

Almost more excitingly, I'll be doing a spot of shopping in New York on the way there and back. Because, well, it would be rude to fly over to the States and not drop in on my old home.

Maybe I'll get a chance to catch up with some of you in one of those amazing cities...?

Friday, 23 September 2011

First public appearance caught on video

Remember a while back I talked about my first public appearance?

Well, I chased down the video, because I'm masochistic, and here it is for you all to enjoy.  Pleasingly my mannerisms are slightly less of a camp man trapped in a woman's body, which was my impression the last time I saw myself presenting.  It helps that YouTube has made the video so dark you can't see me.

Slides are available for all to enjoy.

Special thanks to Playfish for hosting the event - as always, their hospitality was awesome.  The fact that they didn't serve wine is probably a Good Thing.

Tuesday, 20 September 2011

Are you an awesome developer?

We are hiring!

If you think we're doing something interesting, or if you think you can help us do our thing even better, come join us.  Your boss will be the dude who wrote Continuous Delivery, you'll get a chance to experience what Danny calls meta-Agile (or Agile Agile), and you'll really start to care about Domain-Driven Design.

Ideally we're after Java people, but at the heart of it we want people who are dead passionate about development.

Apply via the Stack Overflow Careers advert (you get extra brownie points if you mention my blog).

Saturday, 17 September 2011

What my hangovers can teach you about Agile

As a survival trait for living and working in the cites1 of London, I have a set of rituals to avoid hangovers. If you are not a single person living in a city like London, you might not understand how vital this is. Most networking, particularly in the financial services industry, is done in the presence of alcohol.

So preventing the inevitable hangover is quite important to the other part of the job – the actual working bit. I'll let you into a secret and tell you my nightly ritual:
  • Floss and clean teeth (OK I'll admit, I barely floss when I'm sober let alone drunk)
  • Cleanse/tone/moisturise (I'm a rubbish girl, this is a very recent ritual for me)
  • Apply cuticle cream
  • Do my calf stretches
  • Drink 500ml of water
  • Eat something, even if it's a dirty McDonalds (quarter pounder with cheese, no pickle no onion).
Prior to all this is the additional requirement “don't drink more than a bottle and a half of wine”. Everyone has their limits, lots of practice means I know full well what mine are.

This actually works for me. I won't claim to feel capable of being quite as high performance as the code I'm working on, but I won't feel like killing myself, and I will make it to the gym before work and do a whole day of productive coding.

If you were trying to solve a similar problem (“no debilitating hangovers”), you might try and follow my rituals. But you might decide that drinking the water was going to mean you had to go to the loo in the night, and strike that off the list. You might be on a diet, so you don't have the food, thinking the alcohol is calories enough for the night. And you'll follow everything else religiously, but still have hangovers.

Or you might ignore the alcohol intake guidelines, thinking the stuff that you do at home to repair the damage should be enough, and drink 12 pints of margaritas. Or you might be the sort of person who can only get away with drinking a couple of glasses of wine / pints of beer, and follow my rules perfectly, but still feel like dying the next day.

And when this happens you'll look at my rituals and think "What a waste of time! This person has no idea what they're talking about", and throw the whole lot out of the window and go back to doing waterfall development (oh wait, I'm getting ahead of myself).

Or you'll do the bits that actually prevent the hangover (the water, the food, restricting alchol) and go around telling the interweb I have no idea what I'm talking about because the other stuff is a waste of time.

The key point here is that this works for me. It's foolish of me to tell the world this will fix all their problems, and pointless for others to copy it without realising why they're doing it.

For example – why on Earth is “apply cuticle cream” on there? It doesn't actually fix the problem of dehydration due to excessive alcohol intake. But it's important to me, because I need to make the time to do the whole ritual to get my brain into the right place for sleep. It's also dead important for my subconscious – alcohol is basically abuse of my body, the beauty part of the regime is to remind my brain that its important to take care of myself too. It doesn't fix the immediate issue of hangover the next day, but it aims to prevent future problems of drowning my sorrows in alcohol. It's an important part of my Long Term Plan – these rituals need to be worked into the daily steps to lead eventually to World Domination.

And calf stretches? Well, I'm injured, have had shin splints for a million years. If I want to run the Royal Parks Half Marathon in October, I need to stretch 3 times a day. Doesn't matter if I'm drunk or not, it's not an excuse. The half marathon is a very important longer-term goal. But you don't need to do it. Well, unless you have the same issue.

The important thing is that all of these rituals are tied to a goal.  But they're not the same goal:
  • Floss and clean teeth. GOAL – don't get told off by the dentist. Don't require fillings - costs money and not great for overall health.
  • Cleanse/tone/moisturise. GOAL – prepare subconscious for sleep and remind brain that body needs love.
  • Apply cuticle cream. GOAL – prepare subconscious for sleep and remind brain that body needs love.
  • Do my calf stretches GOAL – Royal Parks Half Marathon
  • Drink 500ml of water GOAL – prevent Debilitating Hangover
  • Eat something, even if it's a dirty McDonalds GOAL – prevent Debilitating Hangover.
The thing here is that if I didn't do the stuff to aim towards longer-term goals, I might be more inclined to drink more out of boredom or despair, I might have worse hangovers in the future.

To paraphrase Eddie Izzard “...and that's like our Lord Jesus the agile process...”. Agile, in whatever form you take it (actually all processes) is supposed to enable you as a team / organisation to work better. Whichever cult you follow, there are practices designed to work for you to make you more productive. But you do have to continuously improve, gather and act on feedback, and, most importantly, to know why you're doing what you're doing. Otherwise it's just cargo cultism – you look like you're doing everything, but the results just don't arrive. I've worked for a scrum-but company – they had the cards, short iterations, invested customers.  But no single product owner, they never acted on the results of retrospectives, and most importantly the team didn't own the work they'd signed up to. They also had a project manager who told people what they were doing. This doesn't answer the question. This is drinking 12 pints of scrumpy and doing "cleanse/tone/moisturise", and wondering why it still hurts.

You have to understand the problem. You can't blindly follow the stuff that you fancy, the stuff you find easy. If it's easy, it's probably something you were already doing.  If you picked up agile to make a change to deliver more/better/faster, there is going to be some pain. Because if what you were doing before was working, you'd carry on doing it. So improvement is going to be hard. At first.

The key is to stick with it, to check progress, to continuously improve. To find what works for you.

1 Random fact of the day: London is actually two cities, the City of London and the City of Westminster.  But you probably already knew that.

Sunday, 4 September 2011

Effective Sketches

On Thursday I was at Simon Brown's Effective Sketches session at Skillsmatter.  Just because my pictures are pretty awesome doesn't mean there's no opportunity for continuous learning.

The points Simon made in the session really made sense to me, and I wish I could have had something like that as a primer when they taught us UML at university.  Without the context of what the diagrams were supposed to mean, to convey, all the boxes and lines made no sense to me back then.  I'm still not a fan of large chunks of UML because I think the convention sometimes gets in the way of real meaning.

My take-away points were:
  • Don't try and squidge everything onto a single diagram.  The reason lots of different flavours of architecture diagrams exist (e.g. logical view, infrastructure view, etc) is because you have different audiences for each of the diagrams and different things that are important when you're looking at it from one particular angle.
  • One diagram you particularly need, especially if you are producing a stack of documentation for a system (e.g. you're a consultant presenting findings to the client) is a really succinct, summary view of what the system is actually trying to achieve.
  • If you're not going to use UML, you should at least agree on consistency and some conventions - for example, does the direction of an arrow represent data flow or dependency?
  • UML tools make it easier to represent different views of a data model and retain consistency.  One diagram is less likely to contradict a different view if your sketching tool points this mistake out to you.
  • Yes, your code should be self-documenting.  But you can't give the code to your business customers or expect your hardware guys to figure out your requirements from it.  To pass knowledge around the business it's more efficient to have diagrams representing the shared understanding of the domain.
  • Architecture diagrams should show the intent and the vision of the system.
I also used my laptop to take notes for the first time.  In the past I've preferred not to use a laptop, because a) I like pencil and paper and it allows me to doodle and b) the temptation to read my e-mail or check facebook is not something I want to succumb to.  But using Evernote really worked for me, I could annotate the slides with my notes, and it made converting my notes into this post a lot easier.

PS it has not escaped me that this is one post without a diagram.  The irony is not lost on me.

Tuesday, 30 August 2011

Disruptor 2.0 - All Change Please

Martin recently announced version 2.0 of the Disruptor - basically there have been so many changes since we first open-sourced it that it's time to mark that officially.  His post goes over all the changes, the aim of this article is to attempt to translate my previous blog posts into new-world-speak, since it's going to take a long time to re-write each of them all over again. Now I see the disadvantage of hand-drawing everything.

In the old world

This is an example of a configuration of the Disruptor (specifically a diamond configuration).  If none of this means anything to you, feel free to go back and refresh yourself on all the (now outdated) Disruptor details.

The most obvious changes over the last few weeks have been:
  1. Updated naming convention
  2. Integrating the producer barrier into the ring buffer
  3. Adding the Disruptor wizard into the main code base.
The New World Order

You'll see the fundamentals are pretty much the same.  It's simpler, because the ProducerBarrier is no longer an entity in its own right - its replacement is the PublishPort interface, which is implemented by the RingBuffer itself.

Similarly the name DependencyBarrier instead of ConsumerBarrier clarifies the job of this object; Publisher (instead of Producer) and EventProcessor instead of Consumer also more accurately represent what these things do.  There was always a little confusion over the name Consumer, since consumers never actually consumed anything from the ring buffer. It was simply a term that we hoped would make sense to those who were used to queue implementations.

Not shown on the diagram is the name change of the items in the RingBuffer - in the old world, we called this Entry, now they're an Event, hence EventProcessor at the other end.

The aim of this wholesale rename has not been to completely discredit all my old blogs so I can continue blogging about the Disruptor ad infinitum. This is far from what I want - I have other, more fluffy, things to write about.  The aim of the rename is to make it easier to understand how the Disruptor works and how to use it. Although we use the Disruptor for event processing, when we open sourced it we wanted it to look like a general purpose solution, so the naming convention tried to represent that.  But in fact the event processing model does seem more intuitive.

No more tedious wiring
Now the Disruptor wizard is part of the Disruptor itself, my whole post on wiring is pretty pointless - which is good, actually, because it was a little involved.

These days, if you want to create the diamond pattern (for example the FizzBuzz performance test), it's a lot simpler:
DisruptorWizard dw = new DisruptorWizard<FizzBuzzEvent>(
FizzBuzzEventHandler fizzHandler = 
                         new FizzBuzzEventHandler(FIZZ);
FizzBuzzEventHandler buzzHandler = 
                         new FizzBuzzEventHandler(BUZZ);
FizzBuzzEventHandler fizzBuzzHandler = 
                         new FizzBuzzEventHandler(FIZZ_BUZZ);

dw.handleEventsWith(fizzHandler, buzzHandler)

RingBuffer ringBuffer = dw.start();
Note there is a Wiki page on the Disruptor Wizard.

Other changes: performance improvements
As Martin mentions in his post, he's managed to significantly improve the performance (even more!) of the Disruptor in 2.0.

The short version of this is that there is a shiny new class, Sequence, which both takes care of the cache line padding, and removes the need for memory barriers.  The cache line padding is now done slightly differently because, bless Java 7's little cotton socks, it managed to "optimise" our old technique away.

I'll leave you to read the details over there, in this post I just wanted to give a quick summary of the changes and explain why my old diagrams may no longer be correct.

Saturday, 13 August 2011

What I Did On My Holidays

And now, a post for my long-neglected, less technical readers.

I took a week off in July to try and avoid that Oh My God I Missed Summer Again feeling. Granted, it's easy to get that in the UK even if you're not stuck in an office the entire time.

Really this is just an excuse to post some photos on the blog.

Hopped on the bike and explored from Kensington to Westminster.

Felt distinctly smug when I grabbed my lunch from Victoria amongst all the less fortunate people who had to go back to their offices.
Decided to dose up on Culture, and went to the National Gallery.  Last time I was there I was eight years old, and I distinctly remember admiring the frames more than the art.

The rather marvellous Artfinder makes up for the fact that you can't take photos inside the gallery - I can share most of the pieces that struck me when I was there.

Finally got around to embarking on one of the walks in Secret London.  I chose to do the City, from St Paul's, covering Bank, Monument and Liverpool St.

It was fascinating. I've worked in a lot of places round there, socialise there regularly, and have explored a number of the nooks and crannies.  But I was astounded at how many places I had never seen, alleys I had no idea existed, and gardens hidden away between modern office blocks.

Highly recommended.

My parents dropped by and I racked my brain for a different way to explore this massive, old city.  And it came to me: using the artery of the city - the river.  So we took a boat to Greenwich.

Where they were filming Batman.

And I didn't know until after we'd left.


The sun finally makes an appearance. I was going to write a blog post, but I refuse to be indoors on a sunny day if I can get outside for some Vitamin D production (and I hadn't bought my new shiny then).

Sat in the park, sunbathed.

Brilliant day.

Brilliant week.