header background

LMAX Exchange blog - FX industry thought leadership

All the latest business and technology views and insights on the FX industry from LMAX Exchange management and staff

header background
  • Round trip fuzz tests

    Some cute round trip test tricks
    In the last post, we looked at layering our deserialization code to keep things simple. This time, we’ll enjoy the delightful testing benefits this effort yields.

    Round trip tests
    We can do a round trip test whenever we pair an interface with some IO in the following fashion:

    code{white-space: pre;}

    Some cute round trip test tricks
    In the last post, we looked at layering our deserialization code to keep things simple. This time, we’ll enjoy the delightful testing benefits this effort yields…

  • You might not need to make your serialization layer generic

    …indeed, your life might get simpler if you don’t.
    This post will talk through two examples where clever serialization would have been an option, but stupid alternatives actually turned out to be preferable.
    Example 1: An LMAX deployment …

  • Monitoring without polling

    We have recently added an extra (optional) call back to the disruptor library. This post will walk through one of our motivations for doing this: monitoring.
    Before we start – what are we monitoring, and why?
    At LMAX, the vast majority of our a…

  • Looking for heap distress

    ​​​​​Recently at LMAX Exchange we’ve had a couple of services suffer from memory leaks.
    In both cases, we noticed the problem much later than we’d like. One stricken application started to apply backpressure on (really rather important) u…

  • A performance mystery (part two)

    In part one, we discovered that our multicast receipt thread was being stalled by page faults.
    In part two, we’ll dig down into the causes of those page faults, and with some help from our friends at Informatica, get to the bottom of things.
    Sy…

  • A performance mystery (part one)

    We recently fixed a long standing performance issue at LMAX.
    The path we followed to fixing it was sufficiently windy to merit a couple of posts.
    In this first post we’ll define our issue and then attempt to figure out its cause.
    Problem Ident…

  • Variance expression in functional programming

    This time we’re going to explore how functional programs express
    variance. We’ll consider the same case as we did for TDA – getting a
    stored value from a Map, and storing a new value in a Map.

    Retrieval

    lookup :: Ord k =>…

  • Variance expression in tell don’t ask programs

    This time we’re going to explore how tell don’t ask (TDA) programs
    express variance, and hopefully come across an interesting corollary
    of our TDA definition.

    We’ll consider two ubiquitous operations: getting and storing a value

  • Declaring unit test bankruptcy

    I have recently started a major stream of work centered on a
    particular application in the LMAX stack. This application has had
    plenty of features added to it over the last few years, but nothing
    has really required an overhaul.

    Our work, however…

  • iOS First Impressions

    Events have conspired against me and I find myself writing an iOS
    app. Off the back of some relatively complete android work, I was
    interested to see how the platform compared.

    First steps

    After the gigantic pain of upgrading a dual boot Leopar…

Previous Posts

Sign up for Global FX Insights, the daily market commentary from LMAX Exchange

Your information will not be distributed or shared with third parties