Skip to content

Category Archives: Work

(Mobile) Weapons of Choice

Like any other code-worrier, I have a ton of applications on my (i)Phone, ranging from “things that look shiny but are useless”, through “things that I use once a year”, up to “indispensable and every-day”. Out of interest I’ve tried to work out what apps are the once that fall into the latter category, apps […]


It’s rather annoying that in 2015 the ORM (Object-Relational-Mapping) problem is still tedious to deal with. While in general terms it is a solved problem – JPA and Hibernate and similar frameworks do the heavy lifting of doing the SQL queries for you and getting stuff in and out of the JDBC transport objects – […]

Doing More With Less (Part 1 of N)

In recent weeks I have been massively overhauling the monitoring and alerting infrastructure. Most of the low-level box checks are easily handled by CloudWatch, and some of the more sophisticated trip-wires can be handled by looking for patterns in our logs, collated by LogStash and exported to Loggly. In either case, I have trip wires […]

Roads untravelled

My mind has turned to reflection on the jobs I wish I had pursued in my youth, possibly because it is Monday morning. Foremost is probably ‘carpenter’. I did not know I should have been a carpenter until my father, a carpenter and cabinetmaker, had passed away, and I was far too old to begin […]

A Certain Quality

Java is not the best of languages. There are plenty of languages better for particular niches or uses, and it’s littered with annoyances and prone to abuses. So are C, COBOL and Fortran. But it’s good enough almost always, and the environment that has grown up around it has made it a useful language for […]

Java 7 JDK on Mac OS X

This is one of the things that Apple should be kicked in the shin for. There is no excuse for continuing to completely foul up Java installation on Mac OS X If you are like me, and trying to figure out how to get the Java 7 JDK installed on the latest build, here is […]

On Testing

I really should do a write-up about the CI and code quality infrastructure that I’ve set up, as in recent months it’s really started to pay off for the considerable effort it’s cost. But that’s not what’s on my mind today. Rather I am struck by how easy it is to really stuff up unit […]

Deserialising Lists in Jersey Part II

or “Type Erasure is not your friend” The solution I outlined in my previous has one big drawback (well, two, actually): it does not work. The trouble is that the approach I suggested of having a common generic function to invoke the request with a GenericType resulted in the nested type being erased at run […]

Deserialising Lists with Jersey

I very much like the way in which Jackson and Jersey interact to make building a RESTful interface with objects transported as JSON really, really simple. As an example, if we have on the server side a class like this: then consuming the service is joyfully simple (note that this is a slightly fudged about […]

When Typography Goes Bad

So I’ve just spent a very confused 15 minutes trying to figure out why something that cannot possibly go wrong was breaking. I’m working to get DynamoDBLocal up and running. It all looks very simple: download the tar ball, unpack it, and execute the Java invocation: java –Djava.library.path=. -jar DynamoDBLocal.jar Hmm. That’s odd: Error: Could […]