Author Archives: danhaywood

Welcoming Oscar Bou as a new committer to Apache Isis

I’m delighted to announce that Oscar Bou has been voted in as a committer on Apache Isis, and also to as a member of the Isis PMC. The first gives Oscar the right to commit changes directly to Isis’ codebase, the second gives him the right to be involved in future votes.

If you’ve been following the Isis users and dev lists over the last few months, you can’t fail to have seen Oscar’s energetic involvement. Oscar came across Isis while building a similar framework in-house, and has since worked with his team to port much of their application – still in development – over to Isis. In so doing, Oscar has provided invaluable early testing and feedback for new features being implemented.

Oscar has ticked the boxes in terms of being a committer: using the mailing lists appropriately, raising JIRA tickets, provided patches to address specific issues, providing help to others in the community. But he’s gone beyond that in raising a number of insightful – sometimes challenging – questions regarding Isis’ design/responsibilities as a framework, and shown that he’s keen to address these issues and thus improve Isis as a product.

I’m looking forward to working with Oscar in the future; another great addition to Isis’ committers.

As a bit of tidying up, we have also voted for Jeroen van der Wal, and Maurizio Taverna, to be members of the Isis PMC. In fact, in many/most Apache projects, all committers are also PMC members, so it was something of an anomaly that we originally voted Jeroen and Maurizio as just committers.

Using buildreactor to monitor CI jobs

Following on from yesterday’s post (using travis-ci for github projects), I thought I’d use a Chrome plugin to monitor their status. The one I chose was buildreactor (itself hosted on github).

Like Travis-CI, buildreactor is also ridiculously easy to configure. Let me show you in pictures:



Once configured, the status is easily viewed (and buildreactor will also notify if a build fails): Read the rest of this entry

Enabling CI for github projects

I’ve noticed a couple of times on visiting miscellaneous github projects that there’s been a little logo indicating the state of the CI build. Hmm, thought I… I guess there’s some service out there that can be configured. Probably a bit of a pain to get going. Maybe one day, but not today, I thought.

But today I took a deeper look, and had a go at configuring CI using And it turns out I was wrong… it’s trivially easy to get going (for my Maven-based Java projects, at any rate).

Step 1: register at, with your github credentials. Travis needs them to find your repositories and to install its git commit hooks.

Step 2: per this doc, create a .travis.yml file, with the content:

language: java

Step 3: Read the rest of this entry

Deploying artifacts to Maven central repo

I have a bunch of open source github repos, mostly related to Apache Isis, and have been exploring how to deploy these artifacts up to Maven central repo. It’s a mostly straightforward process, but I hit a few bumps along the way so thought I’d capture them here.

First, my dev setup is a bit unusual: I run Windows 7 in a Parallels VM on top of an old MacBook Pro. The MBP has an SSD and 8Gb RAM, so the performance is good enough for me, and – even though I really dislike the MacOS UI, it is comforting to know that I have native Unix environment to jump back to.

In my Win7 VM, I use github’s fork of msysgit as my shell; in other words, Unix on top of Windows on top of Unix. Yeah, a bit weird, it works for me.

Anyway, back to the point. To deploy these repositories into Maven, Read the rest of this entry

Cucumber editors in Eclipse

Just been experimenting with Cucumber JVM, with a view to adding some new BDD tests into a project I’m working on. And so the obvious next step was to see if there are an integrations with Eclipse, my preferred IDE.

Turns out there are, helpfully summarised by some kind soul in this public spreadsheet. I tried out all the plugins listed there; for my money Roberto Lo Giacco‘s plugin is the current winner. There’s a handy page of screenshots, for example:

Screenshot of Natural plugin

What’s also interesting is that this plugin is implemented in XText. In Apache Isis we have thought about implementing a DSL encoding Isis’ programming conventions, and XText looks like a good candidate.

I’m scheduled to present (on Isis, of course) at the inaugural Medit-Symposium conference in Sicily in October, and one of the other sessions there is on XText. Given at what Roberto has made XText do for Cucumber, I’m looking forward to learning more there!

Restore NuGet packages from packages.config

Another in my occasional series of wrangling with NuGet within Visual Studio.

This one is to restore all packages from a packages.config file:

function Restore-Packages() {
  $proj = get-project
  get-package -project $ | % {
    Write-Host $;
    uninstall-package -projectname $ -id $ -version $_.version -RemoveDependencies -force ;
    install-package -projectname $ -id $ -version $_.version

To use, first edit the packages.config as you require. Then, in the Package Manager Console in VS (in the ‘default project’ dropdown set correctly), just type:



Remapping right-alt key in Parallels when running Windows

I bought a MacBook Pro a few years back. I didn’t really like it… I miss keyboard accelerators (not shortcuts) that the Unix and Windows UI have. Also, I do a lot of work with clients that use Windows, so I kinda need access to it. So my Mac went into the cupboard, unloved.

Then the Windows laptop I was using died… its SSD blew up and seemingly took the motherboard with it. Whatever, it didn’t work and I wasn’t going to fix it.

So I got that MacBook back out of the cupboard, installed an SSD and some more RAM, and set about running Windows in a VM instead Read the rest of this entry

Eclipse Tips: More refactorings (and a bit of common sense).

In this next video in my series of using Eclipse effectively, I show how how to use Eclipse’s quick-fix refactoring (and a little common sense) to restructure some hairy code into something rather more palatable.

Welcoming Maurizio Taverna as a new committer to Apache Isis

I’m delighted to announce that Maurizio Taverna has been voted in as a committer on Apache Isis.

Maurizio came across Isis at the beginning of the year, and since then has been working rapidly and enthusiastically to develop a new viewer using DHTMLX. Although (because of licensing restrictions) this codebase cannot be donated to Isis, it’s a substantial and impressive piece of work. If you’ve not seen it yet, there’s an online demo here and the code is on github.

Maurizio has also demonstrated the viewer as an app running on Google App Engine (the demo above is running on GAE). To do this he has identified and addressed several improvements; these have been fed back to a few changes to the JDO objectstore component, as well as new documentation on our website.

Maurizio has also had several ideas to help publicise and promote Isis, including a series of animated interviews (a draft of the first of which can be seen here).

I’d personally like to thank Maurizio for all his hard work so far, and to say that I’m very much looking forward to working with him and gaining from his experience in the future.

Updating a NuGet package across all projects in Visual Studio

A little while back I did a couple of posts how to force a reinstall of all references in a Visual Studio from the NuGet packages.config.

A similar requirement is to update a package to its latest version, across all projects. Here’s how:

Read the rest of this entry

The DSL of the DHTMLX viewer for Isis

In my last post and previously to that I’ve publicised the work that Mylaensys (Madytyoo and chums) have been building a new viewer for Isis based on the DHTMLX javascript library. One of the most noteworthy things about this viewer is its support for a domain-specific language to describe the layout of the widgets in the UI.

Mylaensys have now blogged about the internal design of this DSL (exploiting Madytyoo’s experience early in his career building compilers). It makes for interesting reading.

Or, if you want to just play with the DSL yourself, go to the sample application running on Google App Engine. The link to change the DSL (and update the layout dynamically) is top right of the screen.

Go play with the DHTMLX viewer for Apache Isis

Mylaensys (Madytyoo and chums) have just blogged about their viewer for Apache Isis based on the DHTMLX Javascript widget library.

The post provides a bunch of tech details along points to a simple example you can play with running on Google App Engine. Here’s a quick screenshot:


Apart from looking rather pleasant, what’s notable about this viewer is the fact that it supports a DSL allowing the UI to be easily customized. Thanks must go to Marcius Brandão and colleagues for their prior work on a Naked Objects view language (and as implemented in their NO framework, Entities) for originall developing this idea.

Anyway, do check this new viewer out; I’ll pass on any feedback I get to Mylaensys.

Eclipse Tips: using the Source menu

Everyone knows – or at least suspects – that most of the Eclipse goodies live under the Refactoring menu. However, there’s also a lot of goodness under the Source menu too.

In this quick tip, I’m using another example from my little Java TDD course, demonstrating how to quickly write an immutable value type using a bunch of those Source menu items.

Eclipse Tips: Quick Fix to generate code

Here’s another in my nascent series of quick tips for Eclipse. This one shows how you can use Eclipse’s quick fix feature (ctrl+1) to quickly generate code.

To demonstrate it, I’ve actually used one of the exercises from my little Java TDD course, so if you watch it you’ll learn a little about Hamcrest matchers, too :-)

Eclipse Tips: Extract Local Variable

When I teach my little Java TDD course, I quite often do live coding demos …especially if we’re running behind schedule and I want to catch up; I’ll skip an exercise and work through the solution. And one of the remarks I often get at the end is “thanks for the course, but what I also found useful was learning about how to use Eclipse effectively”.

Well, I guess I have used Eclipse for over 10 years now, so I suppose I am reasonably familiar with it. So I thought I’d show some of these tips by way of a series of screencasts.

The first one in the series is nice and simple: the “Extract Local Variable” refactoring, and its corollary, “Inline Variable”; something I use an awful lot when working on Apache Isis codebase. You’ll find it just below…

Marrying DHTMLX with Apache Isis

Mylaensys have just publicised on their blog the fact that they are working on an integration between DHTMLX and Apache Isis.

They previously have integrated DHTMLX and Spring Framework (DHTMLX Spring Link), so they have a proven track record… and I’ve been impressed how quickly they’ve produced some early prototypes.

So if the idea of rapidly building domain-driven apps with a customizable UI appeals, then keep an eye on their progress. The Isis mailing lists would be a good place to subscribe :-)

Articles on SD Journal

I’ve just written a couple of articles on Apache Isis, published by the Software Developers Journal. You can download the journal for free here.

The first article is a general introduction to Apache Isis, while the second looks in detail at Isis’ RESTful APIs.

To download the journal, you do need to register, but it won’t cost you anything other than your email address.

Apache Isis Core 1.1.0, Isis Shiro Security 1.1.0, Isis Wicket Viewer 1.1.0

A few days ago we (that is to say, the Apache Isis team) pushed out a new point release of Apache Isis Core (v1.1.0), along with two of its components Isis Shiro Security (v1.1.0) and the Isis Wicket Viewer (v1.1.0). The Quickstart Archetype that combines Wicket, Shiro, Restful and JDO also got an update (v1.0.2).

New and notable features in this release are: Read the rest of this entry

Using Google Guava’s Ordering API

We’ve been playing a bit more with Google’s Guava library – what a great library! The most recent thing we used it for was to sort out the comparators for our domain objects. Here’s how. Read the rest of this entry

Apache Isis now has Shiro integration for security

Hot on the heels of Isis’ first release as an Apache top-level project, we’ve now released a new security component that integrates with Apache Shiro.

At the same time, we’ve updated our Maven archetype (that combines Wicket, Restful and JDO) to incorporate this new Shiro security component. Read the rest of this entry


Get every new post delivered to your Inbox.

Join 292 other followers