<< January 2009 | Home | March 2009 >>

How dynamic are your Notes sidebar plugins?

If you thought that the MyWidgets sidebar plug-in is doing some kind of dark magic to dynamically add sidebar plug-ins then think again. The purpose of my latest exploration into the World of Eclipse was to find out how I could do the same stuff. It wasn't easy and took a while but it proved to be easier than I thought (once I knew how of cause). The plug-in I did is rather simple but shows how to dynamically add sidebar plug-ins and associate actions with it much like MyWidgets. If you want to see how it works check out the Flash movie. Now this has amazing possibilities...

As always - this isn't your ol' Notes client... :-)

Thinking about improvements to TwitNotes - do you have any suggestions?

While I'm getting more and more absorbed into the twitterverse I'm also thinking about new ways to extend TwitNotes to make it even more useful in my day-to-day twittering. The search capability I added that hooks into Twitter search is nice but making searches persistent would be nice. By persistent I mean to have the option of having Twitter searches in separate, created-on-the-fly, sidebar plugins for easier reference. It might well be that it makes just as much sense to follow a hashtag as to follow your friends and your timeline. Also having separate access to your replies would be nice.

If you have comments and/or suggestions about improvements please drop me a comment or send me a direct message via Twitter. You can also simply reply to me.

Google Apps Update: February 24 Outage Postmortem

Following Ed Brills "VNUNet: What if Google Mail had been your corporate IT system?" post following the Google mail outage the other day I found it interesting, as a paying Google mail customer (for my private e-mail accounts), that I received an e-mail from Google during the night.

"Dear Google Apps customer,
Between approximately 9AM to 12PM GMT / 1AM to 4AM PST on Tuesday, February 24, 2009, some Google Apps mail users were unable to access their accounts. The actual outage period varied by user because the recovery process was executed in stages. No data was lost during this time. The root cause of the problem was a software bug that caused an unexpected service disruption during the course of a routine maintenance event. The root cause of this unexpected service disruption has been found and fixed.
<snip />
We will be extending a full 15-day SLA credit to all affected Google Apps Premier customers for the month of February. This credit will be applied to customer accounts automatically so there's no action needed on the part of administrators."

The e-mail goes on but at least they recognize that something went wrong...

Tags : ,

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

Tags : , ,

How marvelous!

Here's a TED Talk video with Benjamin Zander our gifted and exciting Lotusphere 2009 Closing Session speaker. How Marvelous! ;-)

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

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.

Drag'n'drop in SWT components

Those who went to my Lotusphere session already know this but doing drag'n'drop in SWT is actually quite easy. All you need to do is define a drag source and/or a drop target. The former is only required if a control in users should be able to drag data from a control in your code. The latter is required if you would like users to be able to drop stuff onto your component.

When setting up a drag source or a drop target you specify the control the source/target controls and the types of data you can provide/accept. These types are called Transfer types and are subclasses of the org.eclipse.ui.dnd.Transfer class.

Transfer types that might come handy - the class names should be pretty self-explanatory:

  • org.eclipse.swt.dnd.URLTransfer.getInstance()
  • org.eclipse.swt.dnd.FileTransfer.getInstance()
  • org.eclipse.swt.dnd.TextTransfer.getInstance()

Making a JFace viewer a drop target is simple passing in the underlying control:

DropTarget dropTarget = new DropTarget(viewer.getControl(), 

Once the drop target has been created you set the transfer types:

final Transfer[] dropTransferTypes = new Transfer[] {
The last thing you need is to add an instance of DropTargetListener or use a subclass of DropTargetAdapter as I do here:
dropTarget.addDropListener(new DropTargetAdapter() {

Creating a drag source is analogous.

Tags : , ,

The stuff you need to test plug-in deployment in Notes 8

While testing the plug-in deployment features of Lotus Notes 8.x I needed some plug-ins to actually install. They needed to be small, not to have any dependencies on the platform as such as well as having a manageable, and known, dependency graph. Also I needed multiple versions to test installing different versions, upgrading and uninstalling. For this specific purpose I wrote a couple of very, very, very simple sidebar plug-ins (very simple - they just display the version of the plug-in) to play around with.

I now have two plug-ins packaged into two features - Feature 1 and Feature 2. Feature 1 depends on (a specific version of) Feature 2 which in turn doesn't depend on anything else than the platform (Eclipse core). This means that I can test installing different versions of Feature 1 and verify that Feature 2 is also updated accordingly.

I have made these features publicly available so if you need something similar read on.

Feature dependencies

The below table shows the dependencies between the two test features provided. The table should be read so that Feature 1 v. 1.0.1 depends on Feature 2 v. 2.0.0 and Feature 1 v. 1.1.1 depends on Feature 2 v. 2.0.2.

Feature 2 version
Feature 1 version2.
1.0.2 X 
1.1.0 X 
1.1.1  X

Installing the features

You can test installation of the features in one of two ways. Either use an update site I provide or use the widget descriptors to install using a widget catalog or the My Widgets sidebar plug-in.

To use the update site point your Update Manager at http://update.lekkimworld.com/testplugins/site.xml and make sure that, when you install, untick the "Only show the latest version of a feature per update site" when selecting features.

Failure to do so will result in your only being able to see Feature 1 v. 1.1.1 and Feature 2 v. 2.0.2. Unticking the box will allow you to select any combination of features you would want to test.

To use the widget descriptors right-click and save the below widget descriptors to your system and use them directly by dragging them onto the My Widgets sidebar plug-in or import them into a widget catalog.

SOA is dead - long live its offspring mashups, BPM, SaaS...

Was tuned in to this blog post ("SOA is Dead; Long Live Services" by Anne Thomas Manes) by a very interesting interview about the post on ITConversations. The podcast is definitely worth a listen and quite interesting. Quoting from the blog post:
"SOA met its demise on January 1, 2009, when it was wiped out by the catastrophic impact of the economic recession. SOA is survived by its offspring: mashups, BPM, SaaS, Cloud Computing, and all other architectural approaches that depend on "services"."

Sounds like something you realized without knowing it? The interview is very interesting and addresses, among other things, why SOA and governance is a concept and not something you buy. The podcast runs about 44 minutes and may be streamed or downloaded as MP3.

Tags : ,

planetlotus.org evolution

planetlotus.org tracked 192 Lotus blogs after Lotusphere 2008. I just checked again and we're now up to 329 - wow!

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

IBM software available in the Amazon Cloud

Today I received an e-mail from Amazon Web Services (AWS) stating that IBM and Amazon has partnered up to provide IBM (and Lotus) software in the Amazon EC2 (Elastic Compute Cloud). How cool is that!?

We are excited to announce that IBM and Amazon Web Services have teamed up to provide you with the ability to build and run a range of IBM applications using the Amazon Elastic Compute Cloud (Amazon EC2) service. This relationship will enable you to bring your own IBM licenses to Amazon EC2, utilize IBM's "Development" AMIs, or leverage the "Production" Amazon EC2 running IBM service. The initial list of IBM environments that will be available includes: IBM DB2, IBM Informix, WebSphere sMash, IBM Lotus Web Content Management, and IBM WebSphere Portal Server.

More info on the AWS partner page.

Tags : ,

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 "Run\Run 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.

Coupon code for hostjava.net

Looking for Java hosting (e.g. JBoss or Tomcat)? I yes then please let me know via e-mail or Twitter direct message as I have a 25$ coupon for hostjava.net.

Tags :

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


Eclipse and Java for Total Beginners

I'm all for developers learning Java so see "Eclipse and Java for Total Beginners".

...at least make a rule that all background agents are developed in Java. If you never get started on the journey you never reach the destination...

Tags : ,

SWT visual designer

Up to now I have been doing all my Notes 8.5 sidebar UI development manually and coding the UI by hand which is and has been fine. Now getting a WYSIWYG editor is becoming increasingly important both for quick development, demos and for education situations. I went searching for one and found SWT Designer from Instantiations. The editor looks very, very nice (take a look at the demos) and being priced at 239 USD also very competitive from a price standpoint.

My search continues for alternatives but this looks very attractive.

Tags : , ,

Lotusphere 2009: Seriously - last post about my demos!!!

My brain must have been taken out with the fever as I have only uploaded compressed versions of the update site and not the actual Eclipse projects. I have now uploaded importable Eclipse projects and you can download them from the session page.

Notes 8.5/Eclipse variables

After upgrading to Notes 8.5 GOLD I had to reconfigure my Eclipse IDE for Notes 8.5 as previously described (Configure Eclipse 3.4 for Notes 8.5). For this I needed the new install_id and rcp.base_version and thought I would share.

rcp.home=<Notes binary diretory>\framework

Upgraded to Notes 8.5 GOLD

With Lotusphere 2009 and my session done I upgraded to Notes 8.5 yesterday from the beta version I have been using so far. Upgrade was uneventful and my Notes client is working fine today and my demos today went just fine. Only issue I have is launching Notes from Eclipse. When upgrading from previous beta versions I just had to update the JVM config, the install_id and the rcp_version in my Eclipse launch configuration but after upgrading to Notes 8.5 GOLD I'm getting strange JAAS errors (Eclipse not being able to locate the NOTES LoginContext configuration). I will have to look into this tomorrow when I'm in the office or simply change my Eclipse configuraion to use the Lotus Expeditor toolkit 6.2 instead of my own configuration.

Lotusphere 2009: Badge stickers

I got back from the US yesterday and hung my Lotusphere 2009 badge in my office with the rest of them and again got surprised by the number of stickers I managed to attain. Blogger, exhibitor/sponsor, speaker, press/analyst, bdday and of cause the Danish flag... :-) Wow! The press/analyst I got because it was the only one I didn't have (besides the IBM ones).

Notes videos

This is way cool as announced by Ed. It will be interesting to see how the service is priced.

"The fastest, most affordable way to learn Notes! Containing more than 1000 short video clips, the IBM Multimedia Library for Lotus Notes will quickly teach your employees the essential skills they need to be successful with Lotus Notes. New employees will learn key tasks, like archiving and calendaring, and seasoned employees will learn new features and productivity tips. "What's New" tutorials teach valuable skills and benefits of new features. This is the ultimate training solution for end users, administrative assistants, mobile users and tech support teams.