Programming Firefox: Building Rich Internet Applications with XUL