-
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…