• Home
  • Posts
  • Presentations
  • Resources

Posts

August 7, 2011

Dissecting the Disruptor: Demystifying Memory Barriers

My recent slow-down in posting is because I’ve been trying to write a post explaining memory barriers and their applicability in the Disruptor. The problem is, no matter how much I read and no matter how many times I ask the ever-patient Martin and Mike questions trying to clarify some point, I just don’t intuitively grasp the subject. I guess I don’t have the deep background knowledge required to fully understand.

So, rather than make an idiot of myself trying to explain something I don’t really get, I’m going to try and cover, at an abstract / massive-simplification level, what I do understand in the area. Martin has written a post going into memory barriers in some detail, so hopefully I can get away with skimming the subject.

July 22, 2011

Dissecting the Disruptor: Why it's so fast (part two) - Magic cache line padding

We mention the phrase Mechanical Sympathy quite a lot, in fact it’s even Martin’s blog title. It’s about understanding how the underlying hardware operates and programming in a way that works with that, not against it.

We get a number of comments and questions about the mysterious cache line padding in the RingBuffer, and I referred to it in the last post. Since this lends itself to pretty pictures, it’s the next thing I thought I would tackle.

July 16, 2011

Dissecting the Disruptor: Why it's so fast (part one) - Locks Are Bad

Martin Fowler has written a really good article describing not only the Disruptor, but also how it fits into the architecture at LMAX. This gives some of the context that has been missing so far, but the most frequently asked question is still “What is the Disruptor?”.

I’m working up to answering that. I’m currently on question number two: “Why is it so fast?”.

July 12, 2011

In answer to one of the search terms which led to my blog...

…“what do female programmers look like”: Well, sometimes… If there are any girl programmers out there who are interested in being part of a montage showing who we are, I’d be dead (see what I did there…?) interested in putting us all on one page. And not just because I’m narcissistic. Although that helps.
July 10, 2011

Dissecting the Disruptor: Wiring up the dependencies

So now I’ve covered the ring buffer itself, reading from it and writing to it.

Logically the next thing to do is to wire everything up together.

I talked about multiple producers - they have the producer barrier to keep them in order and under control. I’ve talked about consumers in a simple situation. Multiple consumers can get a little more involved. We’ve done some clever stuff to allow the consumers to be dependent on each other and the ring buffer. Like a lot of applications, we have a pipeline of things that need to happen before we can actually get on with the business logic - for example, we need to make sure the messages have been journalled to disk before we can do anything.

The Disruptor paper and the performance tests cover some basic configurations that you might want. I’m going to go over the most interesting one, mostly because I needed the practice with the graphics tablet.

July 4, 2011

Dissecting the Disruptor: Writing to the ring buffer

This is the missing piece in the end-to-end view of the Disruptor. Brace yourselves, it’s quite long. But I decided to keep it in a single blog so you could have the context in one place.

The important areas are: not wrapping the ring; informing the consumers; batching for producers; and how multiple producers work.

June 28, 2011

Dissecting the Disruptor: How do I read from the ring buffer?

The next in the series of understanding the Disruptor pattern developed at LMAX.

After the last post we all understand ring buffers and how awesome they are. Unfortunately for you, I have not said anything about how to actually populate them or read from them when you’re using the Disruptor.

June 22, 2011

Dissecting the Disruptor: What's so special about a ring buffer?

Recently we open sourced the LMAX Disruptor, the key to what makes our exchange so fast. Why did we open source it? Well, we’ve realised that conventional wisdom around high performance programming is… a bit wrong. We’ve come up with a better, faster way to share data between threads, and it would be selfish not to share it with the world. Plus it makes us look dead clever.

On the site you can download a technical article explaining what the Disruptor is and why it’s so clever and fast. I even get a writing credit on it, which is gratifying when all I really did is insert commas and re-phrase sentences I didn’t understand.

However, I find the whole thing a bit much to digest all at once, so I’m going to explain it in smaller pieces, as suits my NADD audience.

First up - the ring buffer. Initially I was under the impression the Disruptor was just the ring buffer. But I’ve come to realise that while this data structure is at the heart of the pattern, the clever bit about the Disruptor is controlling access to it.

June 20, 2011

A chance to see some of my actual code (even if it is C#)

Remember I posted about having to write .NET? Well, the code and the tutorial are available for you, my lucky readers, to rip to pieces view. I am not the only person responsible for this code though, so be kind.
June 14, 2011

Vote for the LJC

I nominated LMAX for a couple of JAX Innovation Awards, but unfortunately we did not get shortlisted :( However, the London Java Community did! So if you have a second please vote for the LJC for Top Java Ambassador
June 12, 2011

STAC London Summit

On Wednesday I tagged along to the STAC London Summit to provide backup for Mike, who was on the “The Future of Messaging Middleware” panel.

The panel consisted of two messaging providers, one hardware (Solace Systems) and one software (29West/Informatica), and two “users”, Citihub and LMAX. Obviously both providers were arguing that theirs was the best solution. But what I found interesting is that I came away with the impression that everyone was really on the same side - everyone wants to use or to provide the best system, but there are different approaches. Which one you adopt is likely to be influenced by how your team work and the hardware you have (or can obtain).

May 30, 2011

My first public appearance

I’m finally moving up from working behind the scenes to actually doing a (short) presentation for the LJC. I’m going to be giving a lightning talk on Wednesday at the AWS Elastic Beanstalk event, on the JCP - what it is and what our election to the executive committee means. Ben and Martin’s post gives a little more background on the subject. Another LMAX LJC member Mike will also be giving a lightning talk, on Project Coin.
May 23, 2011

Getting around a bit

I’m honoured to now be listed on three aggregated blog feeds: The new and somewhat embryonic blogs.lmax.com. The London Java Community Aggrity. ThoughtWorks Alumni, along with a whole host of distinguished names. The pressure’s on to try and write useful stuff. Oh OK, I’ll settle for “entertaining”.
May 20, 2011

Why Java developers hate .NET

I have been struggling with .NET. Actually, I have been fighting pitched battles with it.

All I want to do is take our existing Java client example code and write an equivalent in C#. Easy, right?

Trisha’s Guide to Converting Java to C#

Turns out writing the actual C# is relatively straightforward. Putting to one side the question of writing optimal code (these are very basic samples after all), to get the examples to compile and run was a simple process:

May 16, 2011

The London Java Community elected to the JCP SE/EE Executive Committee

As an associate member of the London Java Community (LJC), I’m very pleased with the news that we won an Open seat on the Java SE/EE executive committee. The results show that we got an astonishing 47.5% of the vote - if an MP got voted in with that percentage the newspapers would probably be using the word “landslide”. It’s quite exciting to be one of the two user groups involved.
April 26, 2011

Cyclist tribes

Living and working in central London, you quickly learn that the fastest way around town is to cycle.

My extensive research into this activity has shown there are a number of different cycling tribes. Of course, I have split them into the two groups that are most appropriate to me: 1) slower than me and 2) faster than me. You can probably tell what sort of a cyclist I am by my attitude to the two groups.

April 18, 2011

TradeTech 2011 - Not like a developer conference

I attended TradeTech last week, an annual event about Equities and Derivatives trading. I assumed from the title that there would be a reasonable focus on technology, but I found it was more “Trade” and less “Tech”.

April 12, 2011

CSS for Developers: Horizontal and Vertical Centring

First, an apology. I will be using the British spelling for “centre”, because, well, I’m British. But it gets really confusing because you have to use the American spelling in the code. And doesn’t “Centring” just look wrong?

April 4, 2011

How to show your employees how much you hate them

Due to a combination of my restlessness, my consulting experience, and employers that insist on moving offices frequently, I’ve had the dubious honour of working in a variety of environments.

Today I will teach you, the employer, how to show your staff just how much you hate them.

February 14, 2011

For those who might want to make the leap from Developer to Architect

The last two weeks, actual work has conspired to keep me away from the blog. How rude. I miss “the beach” already.

It seems only fair to summarise the lessons I have learnt whilst masquerading as an architect on a short consulting stint with Marc McNeill. Simon Brown at Coding the Architecture is much better at talking about this stuff than I am, but I need to update the blog with something!

January 28, 2011

CSS for Developers: Cross Browser Table Border Behaviour

One of the aims of this series is to highlight some stupid gotchas in support for CSS in the different browsers.

Today’s gotcha is table borders.

Yes, yes, I said don’t use tables. What I means is, don’t use tables for layout. But you can use tables for, you know, tabular data. Like, for examples, lists of instruments and their bid and ask prices.

But you should know that even when you use strict mode, Internet Explorer has slightly… eccentric… rendering behaviour for tables. Actually to be specific, it’s IE7 only.

January 27, 2011

My Experiences with Android Development

Because I was missing coding, and because my friend and I had an awesome phone app idea at the weekend, I thought I’d try my hand at developing an Android application this week.

I want to give a quick overview of my preliminary thoughts on getting started on this endeavour.

Background: I’ve got more than 10 years Java experience, but any UI for the applications I’ve worked on was always a web UI. I am completely new to mobile app development.

January 25, 2011

CSS for Developers: Column Layout Using CSS

This is a continuation of my series of CSS hints / tips / cheats for developers (and other technical-but-not-UI people).

The screenshots are in Chrome on a Mac. The originals were on Firefox on Ubuntu so I can tell you the behaviour is identical.

January 24, 2011

On Changing The Image Of Programmers

Gah!! This is exactly what I was talking about - it’s pink, it mentions shoes, and it’s about as patronising as you can get.

Would the chart be different if your possible outcomes were Bill Gates, Steve Jobs, Mark Zuckerberg, and Linus Torvalds? I bet for a start it wouldn’t mention Jimmy Choos or choice of handbags. And it probably wouldn’t be in baby blue either.

January 21, 2011

GWT: Why VerticalPanel is Evil

At LMAX we adopted Google Web Toolkit pretty early on. One of the motivations for using it was so we only had to worry about recruiting Java guys, and then we could all work on every part of the application including the web UI. Sure, you can learn a bunch of different skills if you want to, but it reduced context-switching and kept the skill set we were hiring for to a nice short list.
January 20, 2011

On How Not To Target Girl Geeks

(First, let me say this post contains opinion, stereotyping and sweeping generalisations. But that’s sort of the point. Also I don’t pretend for one moment to speak for all girl programmers, I can only speak for myself)

When I first started this blog, I wanted to just post “proper” technical information. I wanted to prove that there are girls out there doing “real” programming.

I specifically didn’t want to talk about my gender. I wanted to prove by silence that gender is incidental to what I do.

But, it doesn’t really work that way, does it?

Firstly because one of the first things I get asked by guys when I meet them in this industry is “why aren’t there more girl programmers?” (that’s after they ask “do you work in HR?” followed by “are you a real programmer?” - I’m not joking, this happened this week).

January 19, 2011

CSS for Developers: The Joy of Floats

As promised, the Long Awaited Follow-Up to CSS for Developers Part One! Well, long-awaited if you’re as afflicted with NADD as I am.

Quick recap - the aim of this series is to provide a quick and easy how-to around the magic that is CSS. It’s primarily aimed at developers, although I would hope it’s comprehensible to a range of tech-savvy people.

January 18, 2011

FogBugs and Kiln World Tour

Last Thursday I was fortunate enough to get a place on the FogBugz and Kiln World Tour. I booked it before I moved jobs, and I’ll be honest I had no real interest in the software. I’ve been reading Joel’s books and blogs since my friend Brent bought me Joel on Software and made me read it (he had the foresight to know I’d want to hang on to his copy if he’d lent it to me!). I wanted to see the man in the flesh and hear what he had to say about his software. Because really, do we honestly need yet another bug-tracking / project-management tool?

January 17, 2011

CSS for Developers: Horizontal Layout Using CSS

I’m a Java Developer. But I’m also a Web Developer. Web Developers have been so badly maligned over the last decade or so that I always feel wary (and sometimes slightly ashamed) admitting this. There’s some sort of assumption that Web Developers (and Front End Developers) aren’t real programmers. Similarly, “real” developers don’t like to be tainted by coming into contact with that nasty “front end stuff” in case someone mistakes them for a designer.

Trust me, no-one is going to mistake a Java Developer for a designer. For a start, when designers wear geeky glasses it’s ironic. Or chic. Or something.

But developers will be forced to do something around the front end at some point in their lives. Even if it’s because they’re sick of manually kicking off some process and want to give the users a big red button to press instead.

October 31, 2010

Live at Last

We went live with ‘real’ customers this week just gone. It’s the culmination of nearly two years work for me personally, and three years for our company. It’s really nice to be live at last, and to have our name out there. It might (in fact, should) change the focus of our work. Without paying customers it’s much more difficult to prioritise work based on what they might need or want.
  • ««
  • «
  • 1
  • 2
  • 3
  •  … 
  • 5
  • 6
  • 7
  • 8
  • »
  • »»
© Trisha Gee 2020