Notes and Domino

European XPages Workshop

Back in May when the first public beta of Notes Domino 8.5 was released I was less than happy with it. Well for the last couple of days I’ve been at the European version of the XPages workshop along with 30 or so other people at IBM Dublin.

The format for the couple of days was to work through creating an example application which uses some of the new XPages functionality. So we’ve just finished and I am sat back in the hotel catching up on emails and missed work, but I wanted to post a few first impressions.

Firstly, the workshop itself was very well organised, I don’t think any of us knew what to expect but when you have the kind of people involved like Maureen Leland, Philippe Riand and Eamon Muldoon it’s going to be interesting whatever happens. The sample application we were developing was very simple in nature but it did lead to some “eureka” moments for me. (It’s important to note that these are my impressions, not official IBM words!)

The decision to not include the LotusScript and Java editors in 8.5 is still a bad one but it’s a lot clearer to me why it was made now. We have just spent two days working on a web app that looks *great* out of the box, and although it would be possible in current versions it would require a lot of coding different design elements to work together. But with an XPage you just have to write Javascript in the XPage design element itself, there is no requirement to write agents. Obviously I have been thinking about XPage enabling IdeaJam and I genuinely think that it can be done using just XPages as opposed to the huge array of forms, pages, views and agents that would be required to get it working currently.

There are still a lot of the benefits of Eclipse that can be made use of that maybe haven’t been pushed as much as they might be…

– The search facility in Eclipse really works well for looking across design elements for instances of code (very similar in functionality to the way I use TeamStudio Configurator), a very useful addition.
– Likewise the compare with feature (although it’s only useful for fully DXL compliant design elements) this could prove to be a great boon for the developer.
– There’s a new “Edit with DXL” menu option which could well increase the use of DXL, which in turn (we can only hope) will improve the round tripping ability of DXL so that in the fullness of time we might be able to think about using SubVersion and other tools which “normal” Eclipse developers take for granted.

We got some great tips about how to develop an XPage, it’s a massive change for the old school Domino developer, but after a while it begins to make sense with some really neat little bits and pieces. For example you can link together client side and server side JavaScript so that simple decision making can be given to the browser while serious business logic remains on the server where it should be. The use of CSS and themes should offer realy flexibility in the look and feel of an app.

Wow that was all a real stream of conciousness posting. As I spend more time on XPages over the next weeks and months I hope to post some useful tips and examples.

If you’re a Domino developer I would definitely recommend downloading the latest beta, it’s a lot more stable and usable than the last one. And get going on learning XPages, they are the way of the future for Domino web development, you need to be learning this stuff. And best of all… it’s actually fun to use 🙂

Web Service Tips

I know you’re not meant to apologise for going quiet on a blog, but things have definitely been quiet around here recently. It’s only good news from my point of view, work has really taken off over the last few weeks.

For the last week I have been mostly designing and implementing some pretty complex WS-I compliant web services to be hosted on a 7.0.2 Domino server. This is harder (and surprisingly more fun) than it sounds as Domino’s web services implementation in 7 is pretty outdated these days. Basically there are a few things I would point you at to get you started…

Julian’s article about web services is a great starting point for complex web services, but because it’s a couple of years old now it only takes you so far.

Then you need to have a look at this article about web services in Domino 8 which offers quite a lot of ND 7 specific content, especially about manually editing WSDL files to make them WS-I compliant. To be honest I found this to be a case of trial and error, there are a *lot* of obscure rules which have to be complied with, especially if you’re passing arrays or Base64 encoded data (both of which, of course, I am doing).

The actual writing of the services is pretty simple, they’re basically just agents, but then next challenge is doing some load testing. Enter Soap UI a free tool which provides some great tools. It allows you to consume your new service very easily which is cool for testing. But then the really useful tool is a load testing implementation which allows you to really stress test your service to see what happens when you’re running 500 requests a second against it. Believe me it’s not pretty! So now I have to spend some time making the services really bullet proof in terms of error handling and performance.

I may be a little odd, but I really enjoy doing this sort of work. And luckily, for the moment, I’m able to spend almost all of my time writing code. Long may it last!

DXL round-tripping joy

Yesterday I posted about some problems I was having with DXL round-tripping to edit a form design. Well Nathan got in contact with me after that and gave me some good ideas on how to debug the problem. But one thing he said really rang the alarm bells: “DXL is at it’s flakiest when dealing with lots of passthru HTML and Javascript hotspots”. Of course all of our forms in IdeaJam use a lot of passthru HTML, so I decided to go back to the old R4 style of developing, if your form isn’t working, junk it and start again. Lo and behold, once I had rebuilt the forn being far more careful about what got the passthru HTML flag against it, my DXL changes worked properly.

So two lessons learned here, firstly, treat DXL as you used to treat hide formulae in tables in the olden days… very delicately. And secondly, make sure that Nathan’s around to help when you have a problem!

DXL round-tripping woes

I’ve spent the better part of today working on adding new features for the next released of IdeaJam. Most of the feature requests we are getting are in the form of extra configuration, one of which was to be able to control the number of rows shown on view pages. Most of this is pretty simply done using the &count url parameter, but there are a couple of places where I had to get a little more serious. Basically we have an embedded view in a couple of forms, and there is no programatic way of getting at the “Lines to display” property (that I know of). No problem, thought I, I’ll just go and edit the form design with DXL whenever an administrator wants to change the number of rows. It’s not ideal but we can live with that. And indeed it is pretty easy to get at the DXL and edit the embedded view property (kudos for Ben’s post from 2004 for getting me going there!).

So all fine and dandy then? Well no, whenever I update the form design like this I get three random line breaks inserted above the embedded view. When I open the form with Designer they are not there and as soon as I resave it they go again. But what it means is that my lovely new feature will have to go on the back burner until we get proper round tripping of DXL. So if you haven’t already, please vote for Rocky’s idea in the absence of anyone else to beat up on:


Let IBM know what we want from the new Designer client

I am not on the Design Partner program and so have no direct contact with the Lotus development team. So the next best thing I can do is post an idea in the new 8.5 IdeaJam site that I hope will get a lot of votes and show how people feel about the code editors in the new Designer client:


Domino Designer 8.5 first impressions – Oh Dear

Like the rest of the Domino Community I’m sure, I spent yesterday morning downloading the new beta software for Notes and Domino 8.5. This release has been a long time coming, developers are pretty much the last area of the Notes community to have been dealt with trying to bring Domino up to date, and web developers especially. As things stand currently, the skill of developing a Domino app for the web comes from knowing all of the hacks to make the Domino server do what you want it to. The hope with 8.5 is that we get an up to date development environment that makes using today’s development techniques possible.

I haven’t yet had time to install the server (although Paul did on the live ILUG box), so my initial impressions are using the 8.5 client against an 8.0.1 server. I will come back to this once I’ve had more time to play, but with ILUG coming up next week it won’t be for a couple of weeks now.

This is just stream of conciousness stuff from the notes I was taking as I went along…

– I like the new start up process where you get the password prompt a lot earlier on in the proceedings, even if it is not faster, perception is reality for many users.
– The Designer client looks nice on my high resolution screen (1900*1200), there is good use of the screen real estate, not sure how it will look on smaller screens but that is a common problem with Eclipse.
– When frames get resized, design element trees (if that’s what they’re called) get closed, but I’m assuming this is due to beta code.
– The agent editor is still using the classic C interface, not a new Eclipse script editor even for Java, I wonder why this is? Hopefully it just wasn’t fully baked by the time of the first beta.
– Where is the LotusScript class browser that we were promised?
– Context sensitive toolbars don’t seem to be set up correctly, for example when I’m designing a form I don’t get the toolbars for controlling tables or inserting new fields, what’s worse is that it’s not immediately obvious how to actually make the toolbars show up.
– Editing fields etc on a form is still controlled with the properties dialog, I thought the point of switching to Eclipse would be that we could use the different views to edit properties.
– Why has help moved out of the NSF and into the Eclipse format? Seems crazy to me when Notes is a perfect client for this sort of document database. Apart from anything else, I have just had to wait 30 minutes for the help database to be indexed with the Eclipse help tool so that I can search about XPages.
– I’m not going to comment on XPages until I’ve spent some time on them

Of course this is just first impression stuff, so I hope things get better, but overall I am really rather disappointed. This is a huge and one time only opportunity to make Notes and Domino a kick ass application development platform for the next ten years but what I am seeing so far looks rushed (for nothing other than some seemingly self imposed deadline) and worse than that, badly thought through. Why, for example, would you continue to provide the crappy Java editor that we’ve had to deal with (or ignore in my case) for the last ten years when you have the market leading Java editor right there in the same application framework? It simply boggles my mind that this decision has been made.

Let me make this clear, I love Notes and Domino, it has provided my living for the last 13 years and I had hoped that it would continue to do so for another 10 or more years. I want the new release to be a great success, because if it is then it makes my living easier to earn. But if this is the way that things are going then I am seriously going to have to consider where I invest my time in future. Some of these design decisions are simply wrong.

New Name Picker

It’s funny how certain pages on a site become orders of magnitude more popular than all of the others. Well for me, the most visited page on this site is, without doubt, my simple little name picker which I knocked up in a couple of days back in August 2005. Since then I’ve had a steady stream of email from people asking questions or just being nice about it and thanking me. And it’s that which really makes blogging fun.

Today, to make things even nicer, I got an email from Scott Jenkins who has not only been using the name picker, but has added to it and improved it enourmously. So I heartily recommend heading over to Scott’s site and checking it out. And I’d like to be first to offer thanks to Scott, hopefully he’ll see the same sort of feedback that I got all those years ago.

HTTP Server Crash and some .ini settings

One of the apps I am working on at the moment has been causing the 7.0.2 server on which it runs to crash. The problem we were having was that there was no consistency to how the server crashed, it was always nHTTP with a PANIC: Insufficient memory, but it was never the same piece of code that was running when it happened. So we went through all of the usual debugging processes for several days but just couldn’t find anything wrong (even though there blatantly is, this is a developer owning up here you admins!).

Well I haven’t dealt with IBM support for quite a while, but we were running out of ideas and decided to open a PMR more out of desperation than anything. In the past I would have expected them to come back and say that we are running non standard settings (which we are) please reset everything and come back to us then. To my great surprise I had an email from them this morning saying that they’e analysed my NSD files and here are three different things we can try to prevent the error from happening again. So far they are looking good. So for future reference, it’s definitely worth checking out the following .ini settings.

MEM_EnablePreAlloc=1 (see TN 1267928 for details)
HTTPUseNotesMemory=0
INotesUseNotesMemory=0

Update: I had a couple of people ask for the Fatal thread, so here you go…

############################################################
### FATAL THREAD 61/64 [ nhttp: 1ac8: 0ba4]
### FP=0x5290fe40, PC=0x60177011, SP=0x5290f6cc
### stkbase=52910000, total stksize=262144, used stksize=2356
### EAX=0x01cf0648, EBX=0x6018a8c0, ECX=0x016b0000, EDX=0x016b0000
### ESI=0x5290fcd4, EDI=0x00000000, CS=0x0000001b, SS=0x00000023
### DS=0x00000023, ES=0x00000023, FS=0x0000003b, GS=0x00000000 Flags=0x00010206
Exception code: c0000005 (ACCESS_VIOLATION)
############################################################
@[ 1] 0x60177011 nnotes._Panic@4+417 (60ae0917)
@[ 2] 0x6017708c nnotes._Halt@4+28 (107)
@[ 3] 0x601022f5 nnotes._AccessAllProtected@0+85 ()
@[ 4] 0x6004541e nnotes._AccessAll@8+46 (1,1)
@[ 5] 0x60046473 nnotes._ProcessGlobalEvent@4+19 (1be2790)
@[ 6] 0x60046387 nnotes._OSProcessShouldQuit@0+39 ()
[ 7] 0x77e64829 KERNEL32 ()
Invalid stack frame detected: Invalid frame pointer (BP): 0

Notes on The Wire

I’m not a viewer of The Wire but a Java programmer friend was watching Season 5 Episode 5 and spotted this in the background…
Lotus Notes on the Wire