I’m a certified Lotus Connections 2.5 Administrator


It’s official – I’m certified! How cool is that?! The certification exam was quite hard and the questions range from Websphere Application Server administration questions to administering the individual features to configuring security to deployment scenarios. There’s a huge deal of things you need to know and the infocenter was my friend throughout preparing for the exam. Don’t bother taking the exam if you haven’t worked with the product for a while and put in the hours preparing.

I must admit that this is my first ever Lotus certification as I’ve never had the need before. While studying for this exam my view on certification has changed a bit. Before taking this exam I heard all the stories about certification and how it was about know exact UI wording etc. This exam was nothing like that. The question was very valid and made you think quite a lot and base your answer in your knowledge of the product. An exam as it should be. Another benefit is that I’ve read about areas of the product I otherwise wouldn’t have and I’ve discovered quite some stuff that I need to implement or configure at customers. All very nice.

Trying a move to the Mac

This week I’ll be trying a move to the Mac as Per Henrik Lausten (@perlausten) was kind enough to lend me his Macbook Pro until Thursday. I’ve had it for a couple of hours now and it’s already becoming easier. One of my pet pives is keyboard navigation which is something I really want and need. I’m a keyboard kind of guy so being able to navigate applications using the keyboard is going to one of the deciding factors. Finding links like this sure makes it easier but the judge is still out.

I’ll post more as I progress through the week.

Managing my calendar workwise and personally – this is how I’m trying to do it

So I have an iPhone and work with calendars on a daily basis so I’m constantly looking for new ways to work with them. For a long time I have been pondering the separation of calendar usage between my work and private life. Ideally they should be separate but viewable together. Up to now I haven’t really found a solution that worked and have been using my Notes calendar for everything using it both from my Notes client and my portable device (aka cellphone). The main problem with that was that there was no easy way to allow my wife, family or others to peek into my calendar on an adhoc basis. I know there’s stuff like Tungle but lets face it – it’s still in beta and it will be some time before it’s Wife certified… πŸ™‚

As of yesterday I think I have the solution though.

Part of Notes 8 is how easy it is to federate calendars into the product calendar by adding either iCal, Google calendars or the like into the calendar using calendar overlays (much has been written about that so Google away if you need more info). I have been perfectly happy with my current setup (using my Notes calendar and Lotus Traveler for everything) up to now but using an iPhone finally pushed me over the edge. The reason? Well there is no way to mark an appointment on the iPhone as private. It does however have the concept of multiple calendars. Whether that’s a shortcoming in the iPhone I’ll leave up to you.

However much I like my colleagues I don’t think they necessarily should have the possibility to see, or be burdened with, what I’m doing on my own time so not being able to mark appointments from the iPhone as private has been an issue for me. When I created appointments on my iPhone (during my weekly calendar sync with my paper-calendar using wife) I had to remember to edit the appointments afterwards in Notes and set the private flag which was cumbersome and a hassle. Plus forgetting it made me ripe for ridicule from my colleagues when they saw what my wife made me agree to!

Yesterday I decided to do something about it and investigated it again. I moved my private calendar to my Google calendar after discussing it on Twitter with members of the community incl. Per Henrik Lausten (who is also my new McDaddy and Mac pusher). Now I’m using CalDAV to federate/sync my Google calendar to my iPhone. My Notes calendar is already there using Lotus Traveler and appointments are easily distinguishable as work appointments are in red and private appointments are in blue. In my Notes calendar I simply use a calendar overlay to display my private calendar alongside my work calendar using the same color scheme. My private calendar is even available offline by checking a box – does it get any sweeter? For me it’s as near to perfect as seems possible now.

I want to thank the community on Twitter for pointing me in the right direction. If you want to see how to configure CalDAV on your iPhone I suggest ‘How to Sync Google Calendar With iPhone Calendar‘ as an easy way to get started. Happy Friday!

Doing Java plugins? Then you need to checkout this OpenNTF.org project

Props goes out to the Java UI Team (Ryan Baxter, Adam Geheb, Stanton Sievers) for publishing the Java UI API Exerciser plugin showing how to use the Java UI API for the Notes client. If you’re doing Java plugins for the Notes client you definitely want to check it out. Installation is also very easy because it’s signed and as such also serves as a showcase on how plugin deployment works when it’s fully transparent.

More info can be found on the catalog entry.

Notes 8 Utility plugins


From time to time I come across some functionality I think should be part of the Notes client but isn’t. If it’s really a big pain point for me and I can implement it myself I do so as a Notes plugin. I’ve implemented a number of such plugins over time but few have ever been published. Since I get requests for similar functionality from time to time I decided to create a page and publish the functionality there as I find the time and dig out the code and polish it of. I envision the list growing over time so do come back! πŸ™‚

If you got suggestions let me know.

Further reading: Notes 8 Utilities

Actually showing the password prompt when developing Java for Notes

If you’re developing console applications in Java that access Notes resources and you’re testing them in Eclipse you have experienced the following. You run your application to test it from Eclipse. It accesses a Notes resource and you haven’t granted 3rd party applications access in the Security settings so it causes Notes to ask you for the password – only the Console view doesn’t accept input… Bummer! πŸ™

Fortunately there’s a solution to this which I’ll show below.

Disclaimer: I can in no way take credit for this tip as I didn’t discover it. The credit goes to Karsten Lehmann who posted it in the Design Partner forum.

The solution is not to make the password prompt go to the Console view but pop up a password entry dialog instead. The way to do this is to initialize the Swing UI framework before running your application as I do below (see code in bold).

import javax.swing.SwingUtilities;
import lotus.domino.Session;
import lotus.domino.Database;
import lotus.domino.DocumentCollection;
import lotus.domino.NotesFactory;
import lotus.domino.NotesThread;

public class Main {

  public static void main(String[] args) {
    try {
      SwingUtilities.invokeLater(new Runnable() {
        public void run() {}
      });

      NotesThread.sinitThread();
      s s = NotesFactory.creates();
      System.out.println("Name: " + s.getUserName());
      Database db = s.getDatabase("server1/Example", "names.nsf");
      DocumentCollection dc = db.getAllDocuments();
      System.out.println("Docs: " + dc.getCount());

    } catch (Throwable t) {
      t.printStackTrace();
    } finally {
      NotesThread.stermThread();
    }
  }
}

Developing Java plugins and applications for Notes on 64 bit

I just upgraded my Thinkpad from Windows Vista 32 bit to Windows 7 64 bit and besides being amazed at the speed improvements (thanks to moving of Windows Vista) I needed to think about how I develop Java for Notes in general. When moving to 64 bits there are some things you need to consider if, and only if, you install the 64 bit version of the Java Development Kit (JDK) as I did. You need to consider stuff for two reasons which I’ll address in turn.

Please note: This blog post will focus on 64 bits Windows 7 as that’s what I’m running now but I suspect it will apply to other Notes platforms such as Windows Vista, Linux and Mac as well. I’m not using Lotus Expeditor Toolkit so I can’t confirm the following is but a wise man told me that XPD Toolkit doesn’t support 64 bit JDK’s so in that case you need this as well as my “Configure Eclipse 3.4 for Notes 8.5.1”-guide as well.

Notes is a 32 bit application

Say you install a 64 bit JDK and try to run an application that access Notes using local address (NRPC; a client or server installed on the same machine) such as the following:

import lotus.domino.Session;
import lotus.domino.Database;
import lotus.domino.DocumentCollection;
import lotus.domino.NotesFactory;
import lotus.domino.NotesThread;

public class Main {
  public static void main(String[] args) {
      NotesThread.sinitThread();
      Session s = NotesFactory.createSession();
      System.out.println("Name: " + s.getUserName());
      Database db = s.getDatabase("server1/Example", "names.nsf");
      DocumentCollection dc = db.getAllDocuments();
      System.out.println("Docs: " + dc.getCount());

    } catch (Throwable t) {
      t.printStackTrace();
    } finally {
      NotesThread.stermThread();
    }
  }
}

The code will compile fine but when you run it you’ll see a message like the following (plus a stacktrace):

java.lang.UnsatisfiedLinkError: C:Notes8nlsxbe.dll:
   Can't load IA 32-bit .dll on a AMD 64-bit platform

The problem is, as the message explains, that you cannot load a 32 bit DLL (remember Notes is a 32 bit application) into a 64 bit Java Virtual Machine (JVM). The solution is to install a 32 bit JDK instead and run the application using this JDK. Remember that it is perfectly valid and possible to install multiple JDK’s on a single machine and it fact that’s what I’m doing.

Developing plugins for Notes 8+

Developing plugins for Notes 8+ on 64 bit Windows is also somewhat different from doing it on a 32 bit Windows system. Of course you need Eclipse but here’s the first difference – you need to use a 64 bit version of Eclipse if you’re using a 64 bit JDK. The reason is that Eclipse uses SWT (Standard Widget Toolkit) for the user interface widgets. The reason SWT looks so nice on any supported platform is because it wraps the native, C-code, platform widgets. So remember that and grab a 64 bit Eclipse. Once that’s installed and working with your 64 bit JDK configure Eclipse as you normally would but with a small difference that will cause your code not to compile (my Eclipse complained about not be able to resolve org.eclipse.swt.widgets.Shell).

As you may know, you specify the bundles you depend on when developing your plugin and in turn you also specify which environment you run in. This is how Eclipse knows which versions to the bundles to put on the class path but since you’re running 64 bit Windows and Notes is 32 bits it will be a problem. The fix is however very easy to implement and only means tweaking the target platform setup to explicitly set the architecture you’re running on to “x86” and not “x86_64” which is the default if you’re on a 64 bit JVM. Where to set this differs a little between Eclipse 3.4 and Eclipse 3.5 but the concept is the same.

  1. Open the target platform setup
  2. Edit the “Environment” settings
  3. Set the architecture to “x86”

Once this is done the workspace will be rebuilt and everything should work just fine. Mine did anyway… πŸ™‚

Back to our standalone Java application

If you need to run a Java application that accesses Notes locally from within an Eclipse instance (lets face it – who writes Java code without an IDE these days?) you also need to use a 32 bit JVM although you very well may be running 64 bit Eclipse in a 64 bit JVM. The JVM used to execute an application from within Eclipse is the JVM you setup in the build path. To set it simply right-click the project, choose Build Path -< Configure Build Path… and replace/edit the JVM library used.

Conclusion

I hope the above is clear – if not let me know using the comment system. I’ll soon be blogging about using Eclipse 3.5 for your Eclipse development instead of the current version 3.4. Stay tuned.

Three mugs

While installing Windows 7 on my main laptop today I cleaned out my office a little. Part of the stuff I found was these three mugs from times past. From left to right: yellow Lotus Notes mug, OS/2 mug from the OS/2 Warp days and of course my IBM e-business mug. Makes the mind wander… πŸ™‚