Hi Peter! Thanks for talking to us. What have you been working on lately?
I have been developing a simple low latency demonstration program (low micro-seconds latency). It is a skeleton actor pattern based processing engine with derivatives trading in mind. It records every input and output event/request/message for auditing, restart, deterministic testing. The overhead of the framework adds less than 10 micro-seconds latency 99.9% of the time and produces next to no garbage (less than one byte per message).
What do you think were some of the most important developments in the Java world in the last year or so?
A significant development which many developers might have missed, that Java 7 is now the only free supported JDK available from Oracle. A large number of systems still use older versions like Java 6 and Java 5.0, in part because the software they use doesn't support Java 7. This will become an increasing problem for software providers as I expect Oracle will be releasing new versions and retiring older versions faster than Java has seen for a long time.
Are there any particular developer tools or resources you couldn't live without?
I think every developer should know how to use an IDE, the debugger in the IDE and a performance profiler. A large number of issues, bugs and performance issues on stack overflow can be solved by using these tools.
Static code analysis can be useful if your IDE helps you fix the issues, otherwise they can go unresolved for the life of the project.
Do you have any favorite open source projects you've contributed to recently?
The main open source project I work on is my own Java Chronicle. There is a lot of interest in this project, partly because it performs and works differently to most libraries. It is based on systems designed for hedge funds and exchanges, a niche area for Java development.
Do you follow any blogs or Twitter feeds that you would recommend to developers?
I follow Mechanical Sympathy which is interesting if you want really low level design discussions.
You conduct Java performance training -- could you tell us a little bit about that?
The training is based on years of designing low latency and high throughput trading system for hedge funds and financial institutions. Many Java developers are so used to developing applications using existing libraries that they have little options if none of the libraries available are suitable from a performance point of view. The purpose of the training is to teach developers the techniques they would need to develop applications which will performance as fast, or faster than anyone would need.
Most of the interest has been around on-site team training where I provide some consulting based on the systems they have and their plans for the future. I focus on the techniques they would need to make that happen. I am convinced training should be immediately useful.
Anything else you'd like to mention?
A common question I get is: how to get work on high performance systems?
My answer is to look at their current systems and see if they can improve it's performance. I usually set a target of 10 times the current latency and throughput. To start with, you have measure the performance of your system. Next look at a critical system which you believe could be faster and would benefit from being faster. Improve this component with tuning and some re-writing. This will give you the experience to work on higher performance systems the next time. As you repeat this process you can step up to working on higher performance systems.