Posts

Being someone who’s interested in Open Source and very focused on performance, I’ve been looking at the Java & the JVM and wondering about what I would most like to see added. IMHO one of the fundamental missing pieces is support for complex stack allocated types. This is not a new idea. C# calls them structs. In C, C++ and Go stack & heap allocation is orthogonal to the definition of the type. An implementation for Java is described by John Rose (some time ago) on his blog.
2011-07-20
3 min read
In an earlier blog I was trying to describe my take on some of the key ideas behind the disruptor pattern. In this one I’ll focus on a tiny detail. One of many scattered around the disruptor code base, as an example of the low level you get to when writing low latency code. and here it is - To calculate the index in the ring buffer backing array (an int obviously) from the sequence (a long), the ring buffer performs a mod operation using the bitwise AND operator (and making sure the size ie.
2011-07-12
3 min read
The Disruptor pattern was developed at LMAX to solve the problem of exchanging information between different processing stages, and do it much faster than traditional approaches. Knowing that “there is no such thing as a free lunch”, most of the questions we get try to focus on the how and where is the trade off? In the next few blogs I’d like to give my take on it and where I think the “magic” is.
2011-07-07
2 min read
The Disruptor, the design pattern at the core of the financial exchange I’m helping build at LMAX has been open sourced. If you’ve seen the presentation that Martin Thompson and I gave at QCon or the one I did for the LJC @Skillsmatter, this is the ring-buffer based code that we’ve been banging on about for a while. What is the Disruptor? At its simplest, it’s an alternative to a queue, but can also can be thought of as a simple actor-like concurrency framework.
2011-06-22
1 min read
Finally got annoyed enough to try and track down why this feature stopped working in IDEA10… Its there - its just disabled by default. In Settings -> Intentions-> Declaration - > Create Field for Parameter … set to enabled. It is still limited to just one parameter at a time, but better than nothing.
2011-06-19
1 min read
Why static analysis? Because compilers are not enough. - Many times we want to test contracts and conventions in the code which compilers cannot test and on a large scale project - manual review is impossible (and like javadoc does not stand the test of time and maintenance). What do we mean by contracts and conventions? Well - Really we’re talking about anything we want to enforce in the code and is not enforced by the compiler.
2011-04-26
3 min read
InfoQ have published the video of Martin and my talk from QCon. A couple of quick apologies, I haven’t done many videoed talks and I completely forgot the repeat the questions during the Q&A session. Martin and I were alternating between each of the slides, so watching the video might make you a little bit sea-sick.
2010-12-17
1 min read
Slides from the talk that Martin Thompson and I gave at QCon San Francisco are now available on-line.
2010-11-14
1 min read
Now something more meaty: configuring Solaris 10 to use Fedora Directory Server as an LDAP source of users, groups and authentication. This information is sourced from the FDS Project and Sun documentation. In order for PAM authentication to work, the Solaris 10 server needs to be recently patched. I’m not sure which patch it is specifically, but patch level 138889-07 (from ‘uname -a’) will be enough. Create Fedora Directory Server profile This step should only need to be done once per FDS cluster, multiple Solaris 10 machines can use the same profile.
2009-05-09
8 min read