Dev of the Week: Dr. Richard Warburton
The Performance Zone is presented by AppDynamics. Scalability and better performance are constant concerns for the developer and operations manager. Try AppDynamics' fully-featured performance tool for Java, .NET, PHP, & Node.js.
- Testing Java 8 in 3 Easy Steps
- Slab: Guaranteed Heap Alignment on the JVM
- Garbage Collection in Java (Parts 1, 2, 3)
Thanks for talking to us! What have you been working on lately?
As soon as there were early prototype implementations out there some of us in the London Java Community started running hackdays on the topic and getting developers to try it out as part of the Adopt-a-JSR program. We concluded that while there were some advanced topics that people found hard to understand the basic concepts could be easily grasped if you knew how to introduce them to developers. So that's why I decided to write a book on the subject. I also help out with the London Java Community and their associated programs for getting more developer driven standards through Adopt-a-JSR and their JCP Executive Committee seat.
Professionally I'm working at jClarity - where we're building out a next generation Application Performance Monitoring product for the JVM. This has been pretty fun to work on for a couple of reasons. Firstly we're trying to figure out what the 'answers' are to their performance problems. So instead of just graphing data we've built up a diagnosis algorithm for different performance problems that people encounter which has involved some statistical analysis and machine learning combined with writing profiling tools.
You write frequently about Java Garbage Collection -- could you tell me a little bit about why this topic interests you?
Performance tuning your Garbage Collector seems to be such a misunderstood area in terms of performance tuning. I've talked to a lot of people about undertaking GC tuning on their application and you often hear that they feel there are limited benefits or that they would rather just rewrite their code. Now there's a time and a place for approaches like a rewrite but you can get pretty far by GC tuning.
So I concluded that there was a lack of understanding around the issue: developers view GC as a black hole that they don't understand and therefore don't touch. I've started looking into GC Algorithms, but I hope to have enough time to cover monitoring and tuning at some stage as well - which are the really important things for developers to know about.
Are there any particular developer tools or resources you couldn't live without?
I'm tempted to say linux, but I know I've used both mac and windows before so that wouldn't really be true.
I don't think there's anything developer wise I couldn't live without. A lot of tools I think are quite contextual. For example I use eclipse for writing Java code but I always keep my vim skills sharp in case I'm working with things like python or ruby. I'm also constantly trying out new tools to see if they are an improvement or a negative, so whatever I'm using at the moment tends to evolve over time.
Resources wise I tend to get a lot of information from aggregator sites such as reddit, hacker news or dzone.
Do you have a favorite open source project (or projects) that you've
contributed to recently?
Over the last couple of years I've helped out a bit on the threeten project, which is implementing a better date and time library for Java 8. I've also worked on a number of interesting toy projects which I have scattered over github, including:
- Slab - a library of contiguously allocated off-heap Pojos
- Multi-Inherit - a library that implements multiple inheritance in Java without compiler, ide or vm changes.
- answers.js - the initial implementation of some statistical analysis and machine learning algorithms in html+js so its easy to just test these things out by just visiting a website.
Do you follow any blogs or Twitter feeds that you would recommend to developers?
I used to read "The Old New Thing" by Raymond Chen a lot. His 'psychic debugging' blog posts were awesome. Unfortunately he seems to write those less regularly. In the Java space I think that Peter Lawrey's Blog and Martin Thompson's blog are both great. The Java Specialists' newsletter by Heinz Kabutz has some good puzzlers in as well. I also read Martin Fowler's blog, but I imagine nearly everyone does now anyway.
As to twitter there's lots of people to follow, but you should really follow my work colleague @johno_oliver. He was forced to get a twitter account because it's a requirement for submitting a talk to JavaOne this year and we're always trying to get him to tweet more!
Did you have a coding first love -- a particular program, gadget, game, or language that set you on the path to life as a developer?
The first language I learned to program in was actually Visual Basic, but I really wouldn't say this caused me to be a developer! Nothing particularly jumps out.
Check out Richard's blog, http://insightfullogic.com/ and Twitter @RichardWarburto