Notes 8 performance – beware of realtime virus scanning

Over the last few weeks I have been spending some time at one particular customer site and besides looking at their Notes and Domino environment as such I’ve been trying to diagnose some performance issues they have been having with their Notes 8.0.2 installation. Users were experiencing client hangs and general seeing the spinning Vista wheel of death while the client was “busy”. After diagnosing and monitoring server and network load I was asked to look at the client installation since server and network load didn’t appear to be an issue.

I spent some time looking into the issue and with previous lessons in mind I asked about their virus scanning setup (Trend Micro). Notes data-directory was already omitted from scans which is part of the recommended best practices. After looking further into the matter I saw that the cache.ndk was relocated as part of a startup script to the users %TEMP% directory using the “Cache” notes.ini setting. This was also fine as the data-directory was kept on a network share.

The relocated cache was the cause however. Not the cache.ndk as such but the fact that the cache.ndk was now realtime virus scanned really slowed down the Notes client. The cache.ndk was now realtime scanned as it was moved out of the data-directory. Pushing out a new virus scan definition excluding %TEMP%cache.ndk really sped up the client.

So there it is – be aware of realtime scanning when it comes to Notes client performance.

Update: We also exluded the Java shared classes file from the scan. This file is placed in %TEMP%xpdplat by default.

A word about week numbers

Got a call from a customer the other day who could not understand that the week numbers that showed up in his Notes 8.x calendar was different from the ones on this printed wall calendar. The reason for this is that by default Notes 8 uses the operating system default for calculating week numbers. Here in Denmark we use the ISO 8601 standard which is a little bit different. It is my understanding that previous releases of Notes automatically used the ISO standard. I could be wrong though.

Thankfully the Notes developers know about these regional differences and there is an option to change the way week numbers are calculated. To change it open File/Preferences… and open the “Calendar and To Do/Regional Settings” page. On the bottom you’ll find a option to change between using the operating system default and using the ISO standard. There even is a way of doing custom week numbers if that’s needed.

So there you have it. For most the ISO standard is probably the way to go.

Results from LotusScript.doc v.2 survey

Some time back I asked you to complete a survey on how you use LotusScript.doc and I’m happy that 60 of you did. I’m very pleased by the results and for the sake of transparency I’m posting the results below. Now I’ll take a look at the results and ponder a little… 🙂
</p

1. Do you currently use LotusScript.doc v.1?
Yes = 66,7%
No = 33,3%

2. Which version of Domino Designer do you use?
8.5.1 beta = 18.3%
8.5.1 as soon as possible = 11.7%
8.5 1 = 6.7%
8.0.2 = 11.7%
8.0.1 = 3.3%
8.0 = 3.3%
7.0.x = 28.3%
6.5.x or older = 6.7%

3. Do you develop on multiple machines with different Domino Designer version?
Yes = 71.7%
No = 28.3%

4. Do you develop applications in collaboration with others?
Yes = 86.7%
No = 13.3%

5. Which of the below statements best characterizes the way you develop applications?
I write ALL my LotusScript code in script libraries = 23.3%
I write LotusScript code in the events and actions on forms and views (hardly ever use script libraries) = 1.7%
I write LotusScript where it makes sense (sometimes in script libraries, sometimes in forms/views) = 75.0%

6. Do you normally generate the documentation using LotusScript.doc scheduled on the server or manually on the client?
Scheduled on the server = 21.7%
Manually on the client = 78.3%

7. Please prioritize how you would prefer to read the documentation from LotusScript.doc (1 being the format you would like the most, 5 being the format you would like the least)

td.mfreqtop {font-weight: bold;}

HTML 50.9% 20.8% 11.3% 11.3% 5.7%
XHTML 17.1% 26.8% 19.5% 19.5% 17.1%
XML 13.0% 15.2% 32.6% 26.1% 15.2%
Notes rich text 8.3% 22.9% 22.9% 27.1% 18.8%
External application 8.3% 8.3% 8.3% 11.1% 63.9%
Plug-in for Domino Designer on Eclipse 22.4% 28.6% 22.4% 18.4% 8.2%

8. What is your preferred comment style?
LotusScript.doc style (LotusScript’ified javadoc syntax) = 69.0%
%REM section style = 31.0%

9. Do you prefer to write your documentation inside or outside the class/sub/function?
Outside = 46.7%
Inside = 53.3%

10. Would you use a solution that allowed you to incrementally build/update the documentation as you save design elements?
Yes = 85.0%
No = 15.0%

JSF in XPages

Karsten Lehmann just commented on the blog that he’s currently writing a blog series about leveraging the JSF (Java Server Pages) features in XPages. You can find it on his blog.If you’re doing XPages there may be some gems there.

Notes / Eclipse / Lotus Expeditor mapping

Developing plug-ins for Lotus Notes or Expeditor can be complicated enough but you also have to look out for platform differences and the difference in capabilities between different Notes/Expeditor/Eclipse versions. To make this easier for myself I’ve started compiling a Notes version to Eclipse version to Expeditor version mapping table (Notes / Eclipse / Lotus Expeditor mapping).

If you know one of the missing versions please let me know so the table may be complete and be a good reference for us all.

A serious blow for AppDev on Notes – the proof of entitlement for Lotus Sametime is seriously screwed up!

As you probably know you are entitled to a Lotus Sametime Entry license when you have a “Lotus Notes for Collaboration” license. This is really great and a real selling point for Notes since Sametime is a “first class citizen” in the Notes 8.x client as it provides you with awareness throughout the client and in custom applications including sidebar plug-ins. It also allows for awareness in web pages using either Sametime Links (stlinks) or the newer and much better Sametime webapi (as used in Lotus Connections 2.x).

So now comes the problem – have you ever read the PoE or Proff of Entitlement for Lotus Sametime as it pertains to the Lotus Notes for Collaboration license? Probably not. Read below and weep!! (or read the full document – the text for “IBM Lotus Notes for Collaboration” is on page 2 of that document)

“A valid POE for the IBM Lotus Notes for Collaboration does not include the right to:
1. … (omitted for brevity)
2. … (omitted for brevity)
3. Enable or use IBM Lotus Sametime Limited capabilities beyond the default settings in the Program as provided to You, or as established by policy within IBM Lotus Sametime server, including without limitation: Lotus Sametime Connect client, IBM Lotus Sametime Web conferencing capabilities, access from a mobile device, use of IBM Lotus Sametime Gateway, voice chat, video chat, file transfer, geographic location awareness, IBM Lotus Sametime toolkits or APIs, or plug-ins and applications built using the IBM Lotus Sametime unique APIs available in the IBM Lotus Sametime toolkits, with the exception of the chat logging service provider interface.

A POE for IBM Lotus Notes for Collaboration includes all rights granted hereunder for IBM Lotus iNotes for Collaboration.”

So this is lawyer speak and quite convoluted but in essence it says that a Lotus Notes for Collaboration licensed user may

  • use Sametime for chat and awareness using the default settings on the server (meaning no custom business card or photo)
  • not use file transfer
  • not use any Lotus Sametime API besides the chat logging API

The first two are IMO hopeless restrictions but the last one is really, really, really, really bad! It’s beyond words actually. It means that you as a developer must require that a user has a Sametime Standard license in order to use Sametime awareness in your own applications. To be fair it could be that this is only the case for sidebar applications and SWT based composite application components and doesn’t pertain to forms/views (though you could argue that they use an API as well). Another thing that this entails is that you may not use Sametime awareness in Lotus Connections as it uses a API to do the awareness (Sametime webapi). I just checked the PoE for Lotus Connections and no further Sametime entitlement is extended there.

So what does this mean for me as an application developer? Well it means that the sidebar applications I’m developing have to distinguish between Sametime users and make sure that Sametime functionality is only exposed to Sametime Standard license holders. How do I do that? Not sure as I don’t know of an API which tells me which Sametime license the current user has. Oh – and it has to be a Notes API as I otherwise technically violate the license agreement on behalf of the user.

Who came up with this? What sense does it make to provide less functionality in API than in the UI? I really don’t get it. If I had anything to say at all the restriction on API’s in the client should be lifted. It is these API’s that makes the platform strong and feel coherent since applications running on the platform can leverage the platform.

So from being really psyched about the appdev perspective in Notes as it pertains to Sametime and how Sametime could be used throughout the client I’m now really bummed out. From a customer standpoint it’s going to be difficult to tell them that many of the demos that IBM do require a Sametime Standard license. And then we have our own applications where we have to informing and making sure they understand what they may use based on the license they hold.

Sigh….

(As always I could be wrong about this but I have just been through IBM Lotus here in Denmark which says I have understood the PoE correctly so I’m probably right.)

Why you should develop with the same version as your users use

Got a call from a customer running Notes 7 today. He told me that they were no longer able to search using the “Fill out example form” without getting an error message (“The linked document cannot be found in the view”). After looking into the matter and looking for the obvious first (ie. no default view in the database) I looked more carefully at the Fill Out Example Form dialog and saw some interesting entries in the form dropdown as shown below.

That’s right. Our new psudo-design elements (build.properties, plugin.xml, WEB-INF/faces-config.xml, .classpath, .project) generated by DDE (Domino Designer on Eclipse) shows up as forms in the search dialog and even worse as forms you can use to search with. Now I know it’s impossible to make future-proff software but on that’s not good. Nothing Lotus can do about it though.

So what’s the morale? Well be sure you know what effects using a newer Designer client may have on your users before using it. You have been warned…

LotusScript.doc v.2 survey

So it’s been a while since I last wrote about LotusScript.doc v.2 but rest asssured that the project isn’t dead. Not by a long shot. I have picked up developing LotusScript.doc v.2 again and the code is actually 99% done. I’m currently putting the final touches to the code for a public beta release.

Part of the goals for v.2 is getting ready for Domino Designer on Eclipse (DDE) and making sure that v.2 supports application development as DDE provides for it. Part of this is getting an overview of how you guys use the application. For this I have created a survey I would like you to fill in.

Thank you in advance.

Click Here to take survey

Custom plug-in builds in Eclipse

Just had an interesting issue where I needed to make sure my Eclipse plug-in had the latest version of a jar-file I build in another Java project. Normally including a jar-file in a plug-in project is easy enough but when doing that you’re normally using a static jar-file that doesn’t change. I needed my plug-in to use the latest jar from the other Java project whenever the plug-in was built. Hmmm….

After some searching around and some hints via Twitter I found the solution and it was very easy as Eclipse already include the plumbing for this (from Eclipse 3.2). The solution was to contribute custom build steps to the build.xml that the PDE in Eclipse auto-generates. It’s way easier than it sounds.

The only changes I needed to make to my plug-in project was to:

  • Add “customBuildCallbacks=customBuildCallbacks.xml” to the build.properties
  • Add a customBuildCallbacks.xml Ant file to my plug-in project (the one that needed the newest jar) with a single target called “pre.gather.bin.parts”
  • Write “code” for the target that replaces the jar-file in my plug-in project with the one from my Java project
  • Build the plug-in via my update site

For full details refer to Plug-in Development Environment Guide/Tasks/PDE Build Advanced Topics/Feature and Plug-in custom build steps in the online help.

Sametime business card data cache

The Sametime client has a cache of the information it has fetched from the business card (aka blackbox) system on a per user basis. This is both the textual data and the image data. In case your Sametime client displays stale data you can do one of two things:

  1. Right-click the contact and select “Refresh Person Info”. This will make Sametime refetch the data from the Sametime server.
  2. Clear the cache from disk.

In some cases option 1 wont work although it’s far far the easiest. I have seen this when changing the person image format (e.g. from jpg til gif). In this case you may need to clear the cache from disk.

So where is this cache? Well if you open the “workspace.metadata.pluginscom.ibm.collaboration.realtime.people.implPersonCache” directory beneath your Notes data directory you’ll see a directory per Sametime community you’re connected to. In each of these directories you’ll find

  • an .index file containing a list of the known users
  • an XML file per user with person info
  • a picture, if any, of the user

If you want to purge the cache for a community you can close the Notes client, clear the contents of the .index file (you may be able to delete the file altogether but I haven’t tried) and delete the xml and image files. When you restart Notes and hover over a Sametime contact the client will refetch the business card data.

Easy.