Oddjob 1.5 Released

Finally after 3 years I’ve cut version 1.5 of Oddjob. Despite it being 3 years this release contains only two major new features, and both are only half implemented. Where did those years go?

I had another child. I’ve had a few already, so I know it won’t be long before I can’t complete with a Play Station. Thus I’m limiting Oddjob time to my train ride into the city. There has also been three new contracts. Each one required mastering some new technologies, and Oddjob time has been sacrificed. And I’ve been learning Scala but that’s another story…

Sorry, enough about my 3 years, what about Oddjob’s?

Far too long was spent migrating to Ivy. I didn’t want to move to Maven because Oddjob has some strange module dependecies. For instance the main project produces oddjob.jar and oj-tools.jar, and oddjob tests depend on oj-tools and oj-tools depend on oddjob, and you just can’t do that in Maven. Once I’d ‘got’ Ivy, it coped with this really well. It just took so many months to really ‘get’ Ivy…

Re-writing the Web UI was by contrast, very pleasant, despite taking over a year of commutes. First there was the ‘what to use?’ question. My previous JSF experience was painful and has put me off silver bullet server side frameworks – Wicket, Tapestry, etc. Furthermore, the client server pendulum has swung back to thick clients which IMHO is where it should be. The paradigm of server serves machine readable protocol and clients do with it what they will seems much more sensible than serving HTML. Decision made – A RESTful server. Jersey or Resteasy? Resteasy, though I can’t remember why. What to use on the client? Well Javascript obviously! But I needed a little help. JQuery seemed well thought out and easy to be up and running with compared to the more complex frameworks like Angular and React. And indeed JQuery worked out really well.

I was pretty much done with only a few bugs that were proving difficult to fix. They always turned out to be property that didn’t exist or something else that the compiler would have caught in Java. It was very frustrating so I Googled something like ‘Type Safe JavaScript’ and of course found TypeScript. So I re-wrote the entire thing in TypeScript, and puff, those pesky bugs just disappeared.

The new UI doesn’t actually provide any new functionality over the last JSF front end and it still needs lots of work but it’s at a good place for a first release. given that UI’s are not my strong point, I’m quite proud of it. Here’s a picture:

Oddjob Browser View

The other big new feature is the introduction of Tasks which are parameterised Job executions. This is well documented here in the User Guide  so I won’t say more, as I’m keen to start on Oddjob 1.6. What will be in it? Well definately some more web stuff. Probably a bit of functional funkyness, and who knows – maybe even some Scala.