<< June 2009 | Home | August 2009 >>

DDE preferences and where they are stored

With the introduction of Domino Designer on Eclipse (DDE) the preferences is based on the Eclipse preference store and stored in the file system. To find them go to <notes>/data/workspace/.metadata/.plugins/org.eclipse.runtime/.settings and open the com.ibm.designer.domino.lscript.prefs file in an editor. Voila! There's your preferences...

Tags : ,

JavaAPI for Servertasks - Documented and Supported

It is very seldom that I feel so strongly about ideas in IdeaJam that I feel they are worth promoting further but this time I have to make an exception. I read a post on Bob Balfes blog about writing server addins and Domino server extensions as Eclipse plug-ins. How crazy and exciting would that be!! The possibility of developing truly cross platform extensions would be beyond words. And coming from a company that actually develop server tasks I can attest to the problems incurred by having to compile for Win32, Win64, AIX, Linux, Solaris, iSeries and zSeries. It's inzane!

So head on over to IdeaJam and wrote for it - please!!

JavaAPI for Servertasks - Documented and Supported (login required)

Tags : ,

Calendar-Driven News Feed and Routing Service

Found the Calendar-Driven News Feed and Routing Service on alphaWork and it looks interesting though it requires some infrastructure to try out ("For installation, user needs to deploy the BPEL process and other service modules to a process server such as IBM WebSphere Process Server on the server side; and Calendar, Map and UI modules to a Web server such as Tomcat on the client side.")

[Calendar-Driven News Feed and Routing Service is] an intelligent life assistant tool driven by Lotus Notes Calendar that provides various services that ease business life.

Calendar-Driven News Feed and Routing Service serves as your personal assistant tool to integrate the following services that ease everyday business life.

  • Google Map Service: When you have an appointment, it will draw a map of your destination, as well as a driving route.
  • News Service: It will retrieve various kinds of latest news based on RSS feeds. Weather Forecast Service: It will retrieve the weather information of your preferred cities.
  • Stock News Service: If you are interested in several stocks, it will retrieve real-time detailed information about the stocks such as the current price, then generate reports, and provide updates at intervals.
  • Notes Calendar Service: It will retrieve and display your daily calendar entries from Lotus Notes.

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... :-)

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)

Notes rich text8.3%22.9%22.9%27.1%18.8%
External application8.3%8.3%8.3%11.1%63.9%
Plug-in for Domino Designer on Eclipse22.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.

Tags : ,

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.


(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...

Tags : ,

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.

Tags : ,