TwitNotes – v. 1.0.7 is out

Just uploaded TwitNotes v. 1.0.7 to the update site. It’s just a small bug fix release that fixes some minor things:

  • Easier searching by responding to pressing the Enter key on the Search tab
  • Make sure all profile images are scaled to 48x48px to handle too large images (looking at you @marybethraven)
  • Attempt to fix wordwrap issue on Ubuntu – still working on that

Thanks to Brian Leonard from IBM for providing a widget descriptor to make installation a lot easier. Simply drag the link to your MyWidgets sidebar plug-in to install.

Developing plug-ins for Notes 8.0.x, Notes 8.5, Sametime 8.0.x and Sametime 7.5.x

I received an e-mail from Dirk Jebing on my blog post on deploying TwitNotes in Sametime and how I was having deployment problems due to an exception being thrown. This is a long time ago but Dirk now found the solution which actually turned out to be a close cousin to my Cross compiling sidebar plugins for Notes 8.0.x and Notes 8.5 post.


Hi Mikkel,

at least for my plugin I could solve this! The two steps I did (perhaps it may help you):
1) I realized that I build my plugin with sametime 8.01 SDK. So I changed that (that did not help at all)
2) In the sametime logs my eye fell on an UnsupportedClassVersionError. So I changed the compiler compliance level (which stood on 5.0) to 1.4, as it has been with Sametime SDK 7.5.1. And now it works!

Cya, Dirk

So the lesson is to always watch for the JDK level of the client you’re developing for…

Using EventAdmin for interprocess-communication

One of the tricks to really loosely coupling components in Eclipse is using an event broker to publish events and subscribe to events. You can roll your own which is easy enough (lets face it – it’s a listener interface and a list keeping track of listeners) but it adds a constraint among plug-ins. Another solution is to use the OSGi EventAdmin service.

EventAdmin uses a concept of hierarchical topics much like a messaging system (JMS) and is available from all plugins. You simply add a dependency on org.eclipse.osgi.services and you’re laughing.

This “Event Admin Service specification explained by Example” post has all the info you need to get started and if you ask nicely and there’s enough interest I might even share my EventAdmin test plugin with you… πŸ™‚

Target platform for Sametime 8.0.0/8.0.1 development

Some days ago I posted on developing drag’n’drop support for Notes 8.0.x and Notes 8.5 Standard clients (see “Show ‘n Tell Thursday: SWT drag’n’drop in Notes 8.0.x and Notes 8.5 (19 February 2009)“). When doing this and you have configured your Eclipse IDE to use Notes 8.5 as the target platform you will be missing the Sametime 8.0.0 libraries and hence some classes wont compile. This is easily solved by copying the necessary Sametime 8.0.0 libraries from a Notes 8.0.x install to a directory to your local machine and adding it to the target platform. Below you can see my target platform where I have the Notes 8.5 libraries and the Sametime 8.0.0 classes (third entry).

<img src="https://wp2.mm.heisterberg.dk/wp-content/uploads/2018/02/sametime800_sametime801_eclipsebuildpath.jpg" /S

Show ‘n Tell Thursday: SWT drag’n’drop in Notes 8.0.x and Notes 8.5 (19 February 2009)


This weeks SnTT post is about adding drag’n’drop of Lotus Sametime buddies in the Notes 8.0.x Standard and Notes 8.5 Standard client in SWT plug-ins. Unfortunately the Sametime API for dragging buddies around changed between Sametime 8.0.0 and Sametime 8.0.1 so you have to take this into account when developing drag’n’drop functionality that works across Notes 8.0.x and Notes 8.5. Read on…

As mentioned in my Drag’n’drop in SWT components post drag’n’drop uses a socalled Transfer classes to signal which types of data a drag source delivers and a drop target accepts. To allow Sametime buddies to dropped on your component you use PersonGroupTransfer class but this class changed package from Sametime 8.0.0 to Sametime 8.0.1… πŸ™

In Sametime 8.0.0 (Notes 8.0.x) the class is com.ibm.collaboration.realtime.people.PersonGroupTransfer and in Sametime 8.0.1 (Notes 8.5) the class is com.ibm.collaboration.realtime.people.PersonGroupTransfer (do not mind that the Sametime 8.0.0 class is in an “internal” package as it is exported from the plug-in). This means that if you develop a plug-in that needs to run on both Notes 8.0.x and Notes 8.5 you need to factor the drag’n’drop support out into two separate plug-ins and match based on perfect version numbers of the com.ibm.rcp.collaboration.realtime.people.impl plug-in.

It’s a bit cumbersome but it works fine.

LS2J rules!

I know it has limitations and that it has issues but today it worked like a charm. I was asked to write a library in LotusScript to resolve groups and nested groups from Active Directory into an array of users. It had to be cross platform which ruled out COM and ActiveX controls even if I had been able to find any.

The solution was of cause to write the code in Java using JNDI (Java Naming and Directory Interface) and then write a thin wrapper class in LotusScript using LS2J (LotusScript to Java bridge supplied with Notes out-of-the-box). Now I have a cross-platform solution that has no external dependencies. Beautiful!

So learn Java already! πŸ™‚

Tip for improving Notes startup time from Eclipse

On Tuesday I was contacted by a fellow Yellow-head concerning my Lotusphere 2009 demos and the startup time of Notes from Eclipse. The demos had nothing to do with it – the issue was with his Eclipse setup and was easy to fix.

He was experiencing that it took minutes to launch Notes from Eclipse which made development very frustrating and time consuming. He was using Eclipse configured through Lotus Expeditor Toolkit which made me take special notice as this could be a general problem and something many may/will experience.

After discussing his setup for a while I thought a little about it to tried and think of what could slow down Notes startup. One of the first things I could think of was that he might (inadvertently) be clearing his Eclipse workspace very time he launched Notes. This operation is time consuming and it turned out to be the case. After correcting this he was down to launch times in order of seconds which is also what I experience.

The Eclipse workspace contains all your Eclipse settings as well as a persistent registry of the plug-ins installed on the platform as well as their dependencies. This dependency graph takes a while to put together as it requires reading through all the plug-in manifests and trying to resolve the dependencies specified there. So as you can imagine clearing the workspace before each launch of Notes will take unnecessarily long. If no plug-ins are added to the core platform it doesn’t make any sense to recalculate this dependency graph.

To make sure you don’t clear your workspace when launching Notes from Eclipse do as follows:

  1. Open the launch configuration settings (select “RunRun Configurations…” from the menus)
  2. Select your Notes launch configuration (probably named “Notes” or similar)
  3. On the “Main”-tab take a look at the “Workspace Data”-section at the top. Make sure there isn’t a checkmark in the “Clear” ckecbox. If there is, remove it and apply the changes.

That’s all there is to it.

Quick survey: What would it take to get you started with Java in Notes?

Update: Let’s focus on Java development for Notes – not necessarily plug-ins but simply what would it take to get started with Java – the programming language as that is the first obstacle.

I’m running across quite a lot of people who would like to do sidebar plug-ins and general plug-in development for the Notes 8 platform but who are lacking the Java skills required. Many times they haven’t actually taken the time to learn Java at all since the IDE support in Domino Designer is so poor. Based on this I started thinking about how to get Notes developers started developing in Java. So…

What would it take for you to get started with Java in Notes?

  1. Up-to-date editor in Domino Designer – I wont use anything else!
  2. If it is made easy to develop, test and debug in Eclipse I can live with manually having to move the code to Notes for production use.
  3. It’s not the tool support which is the problem – it’s the lack of time, documentation, API’s, management support or this other thing (please state reason)
  4. I’m not at all interested in Java – I want to develop plug-ins using a scripting language.
  5. Other (please state reason)

Please post your response as a comment and a little explanation if you chose “Other”. If you chose option 2 I might just have a solution for you… πŸ™‚

Thanks.

LotusScript.doc v2 – required Java heap changes

Strong: Just to clarify – LotusScript.doc v2 isn’t out yet. It is out in a very, very limited prebeta 1 (one person besides me) in preparation for a more general beta process hopefully in the very near future. See this post for a clarification on the progress.

As you might know LotusScript.doc v2 is written in Java instead of LotusScript. This means that you have to make some minor changes to your Notes client to make it work. One of the settings you need to change is the size of the Java heap that is the amount of memory allocated to Java objects.

To change that you need to set the JavaMaxHeapSize notes.ini parameter as described in the Lotus Notes and Domino wiki. Although the wiki describes the setting as only being applicable to Domino servers it works just as fine for my test Notes client (8.0.2 Standard in this case). To change the setting add the following to your notes.ini (do check whether it is already set):

JavaMaxHeapSize=384MB