Notes and Domino

Defeated

Well I had to admit defeat with my web services problem. I tried a few more things this morning which occcurred to me overnight but no luck. So instead I am going to do the work in a JBoss application. What’s especially galling is that it took a grand total of ten minutes to build and deploy a test client for the web services using MyEclipse and JBoss. It’s pretty much unforgivable that Domino can’t do this stuff out of the box. I am guessing it will work in ND8 but unfortunately that’s just too late for me.

The perils of web services

I’ve spent a large portion of the weekend and all of today trying to consume an XFire web service which returns an array of complex objects. Not too difficult I hear you say. Well you’d be wrong, very wrong. Even with the wonderful Stubby I have not been able to get it to work (it’s a documented limitation in the Stubby About document) due to the following error…

org.xml.sax.SAXException Source code of org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize

The problem is down to the version of Axis which is used by Domino. More recent versions are able to deserialize the XML returned by the web service but the version in Domino 7 doesn’t understand arrays of complex object returned by a web service. I’ve tried everything I can think of, including an abortive attempt to replace the version of Axis used by my local server. So I am now looking for ideas from you the community, the only other alternative left for me would be to write a JBoss application and have it talk to Domino which I’d really rather not do.

Ytria Tools

A few weeks ago I posted about useful software and mentioned that I had heard good things about Ytria but had not been able to get their tools to work myself. Well within a day I had been contacted by the guys at Ytria who wanted to help me get it to work. In the end the problem turned out to be the fact that I run an old version of Teamstudio CIAO. Their technical support couldn’t have been more helpful.

Anyway, I thought I should play with the tools for a while before commenting further but now I have to say I am very impressed. Of the five tools I am trialling, I won’t use three very often (designPropEZ, actionBarEZ and viewEZ) but when it comes to releasing an application, to audit and making sure there is consistency they will be hugely useful. They allow you to bulk update the designs of all or a selection of design elements in a database using common settings. I think probably if you’re a Notes developer (I do almost exclusively web development) that these would become required during day to day work.

signEZ will be superb for our release manager who we send our templates to before they go live. Whereas in the Admin client in Notes you have a simple “Sign” button, Ytria give you an incredible set of signing tools using your own or some other ID. It will certainly improve their life of switching IDs all day.

But to be honest the single best tool, and by far the most feature rich is ScanEZ. In the simplest terms this is the old classic Notespeek on steroids. But as well as being able to read notes, it allows you to update them. Looking at design elements it tells you everything about every field on a form such as data type, formula and so on. The thing which has proved most useful to me is when you are looking at individual documents. As well as seeing all of the fields on a document (which you can find by any number of methods such as by UNID, formula, view or formula) you can actually edit them as well. But beyond that you can compare documents side by side. This has been and will continue to be an absolute lifesaver for me.

Each of the tools can be downloaded and tried for free and work in reduced, read-only mode for ever. Now they do cost to buy but I think most serious developers will be able to justify them to their managers. Certainly ScanEZ is worth it’s weight in gold for me and I’ll be recommending it to my clients.

Dreaming in Code

I just finished reading Dreaming in Code by Scott Rosenberg, a book which follows an open source development project led by Mitch Kapor to create a Lotus Agenda style application for the modern computer. It’s a definite recommendation from me, with a good look at why software development projects often go wrong.

But that’s not the point of this post. The book follows the development of Chandler, and app written in Python to act as a free form multi-platform PIM tool. I’ve downloaded and played around with and apart from being very “beta” like it’s very nice. However, when reading the book, for almost every feature that the team was trying to work out how to produce I kept finding myself thinking “I know how to do that in Notes” or “I can already do that in Notes and Domino”. Yet another example, to my eyes at least, that we continue to under estimate exactly how powerful Notes and Domino are. Maybe distinctly unfashionable but very powerful. Have a read of the book and see what you think. Even if you don’t agree with me it’s a useful read for anyone who is involved in the computer industry or even just those who have to use a computer during their daily lives.

Using iText for PDF generation

Over the last year or so I’ve done a lot of arseing around with FOP PDF generation. It’s really very powerful, but with great power comes great fannying around with complex XSLT (that’s what Peter Parker’s uncle said wasn’t it?). If you’re doing serious PDF work with multiple templates or complicated logic built into the documents then FOP’s your guy. But I’m doing some more simple documents at the moment for which FOP seems like the proverbial sledgehammer, so I decided to take a look at iText. This is an open source Java library which allows you to create PDF documents in double quick time. It’s actually pretty powerful in it’s own right with support for watermarks, PDF joining, complex table structures etc. I’m just not sure you’d want to go this route for serious reports where you’ll effectively be tieing UI design into code. That’s your call in the end anyway. I’m just here to tell you that this stuff works out of the box with Notes and Domino.

Vince Di Mascio has done the heavy lifting here with a sample Java agent which will generate a simple PDF document. Check it out if you need to produce any sort of documents from your app.

Lotus Connections

I’ve spent a while checking out the new Lotus Connections site for Business Partners. The content’s still a bit light on the ground but overall it’s a great idea with, potentially the perfect community involved. It’s in every partner’s interest to fill in their profile and get involved in a new way of expanding your network.

If you’re a partner it’s well worth an hour of your time to check it out.

Release Hell

I was involved in the release if an updated Domino / Sametime application today and it wasn’t any fun. Basically I had updated an existing application to be more AJAX-y , it has hooks into Sametime which required us to roll out Sametime 7.5 to all of the application’s users. This didn’t go well. Sametime 7.5 is great if you install it as a local administrator of a Windows machine, but if you require an administrator to come around and do the install for you (which we had to do to 30 desks from 7am this morning) there is little help. We left a drop sheet at each desk saying what the user’s “community” setting should be but you can’t expect users to type fully qualifies domain names, so lots of problems there. But as far we could ascertain there is no way to do a pre-configured silent install. I hope this is not the case for the Notes 8 client when it rolls out.

The rest of the problems today were down to a lack of planning on our part. We have two machines which are used in the reception of the building by people who walk in to book appointments, they both run IE in kiosk mode in conjunction with touchscreens and Sametime Links. A person books an appointment and an instant message is sent to the person involved that they have someone waiting for them, a text message is sent to the person waiting when their meeting starts. All very cool. The lesson learned is that you need to have the Sun JVM installed to use the ST Links JS file, otherwise the web pages will simply not work.

In the end we got everything working but what should have taken an hour ended up taking 4 hours, which included us taking quite a lot of jip from the people coming in and trying to book appointments. Oh well, a couple of pints after work sorted that, but I have a new-found respect for people who do desktop support. It’s really not something I want to get involved in again any time soon.

Sametime Question

I’ve never done any development for Sametime before, but I am having to make some changes to an application at the moment. It basically allows people to walk into the building reception and book an appointment, the individual being booked gets sent a message telling them that someone is waiting. It’s all very neat and everything but the problem I’m having is finding all the Sametime developers documentation? I’ve got the JavaDoc and PDFs from the Sametime downloads but they are just basic APIs, no descriptions of how the code actually works.

The code I’ve inherited is using AnnouncementService.sendAnnouncement, I need to change the message to include, in Notes terms, a link hotspot, or a URL link. I’ve tried everything I can think of to make the string which is being announced into HTML but nothing seems to work. So over to you Sametime gurus, where is the documentation and is what I’m trying to do even possible? I found an old Red Book written by (amongst others Carl Tyler and Rob Novak) which implies what I’m trying to do is only available through the web interface rather than the Connect client, but that’s not explicitly stated.

Open In Designer Tip

I know it’s silly but the single biggest annoyance for me in the new Notes 8 client is the missing option to “Open in Designer” when you right click a database tab. It’s just muscle memory in the end and I’m sure I’ll get over it but until I do I’ve created a Smart Icon which has this simple formula in:

@Command( [DesignForms] )

I think it’s pretty obvious what it does but I had forgotten about this particular @Command so thought it may prove useful to other people with a similar problem.