<< December 2012 | Home | February 2013 >>

Slides from BP209 - In The Land Of The Social Apps The API Is King

Below is the slide deck from Ryan and my session at IBM Connect 2013 earlier today.

BP209 from Ryan Baxter

swtIbmWrapper (Not found in java.library.path)

When I'm doing proff-of-concept code for SWT based plugins for Notes I often times simply use a popup Shell constructed from Eclipse. This is much easier and faster than using a full Notes launch for this kind of stuff. After moving to IBM Notes 9 I had an issue with this approach and would see stacktraces like the below when trying to launch my shells.

23-01-2013 09:21:20 OS loadIBMSwtWrapperLibrary
WARNING: 
Throwable occurred: java.lang.UnsatisfiedLinkError: swtIbmWrapper (Not found in java.library.path)
	at java.lang.ClassLoader.loadLibraryWithPath(ClassLoader.java:1018)
	at java.lang.ClassLoader.loadLibraryWithClassLoader(ClassLoader.java:982)
	at java.lang.System.loadLibrary(System.java:506)
	at org.eclipse.swt.internal.win32.OS.loadIBMSwtWrapperLibrary(OS.java:6977)
	at org.eclipse.swt.internal.win32.OS.(OS.java:6993)
	at java.lang.J9VMInternals.initializeImpl(Native Method)
	at java.lang.J9VMInternals.initialize(J9VMInternals.java:200)
	at org.eclipse.swt.widgets.Display.(Display.java:139)
	at java.lang.J9VMInternals.initializeImpl(Native Method)
	at java.lang.J9VMInternals.initialize(J9VMInternals.java:200)
	at test_paint.BaseTest.run(BaseTest.java:17)
	at test_paint.Main.main(Main.java:17)
Exception in thread "main" java.lang.UnsatisfiedLinkError: org/eclipse/swt/internal/win32/OS.VtblCallWrapped(II)I
	at org.eclipse.swt.internal.win32.OS.VtblCall(OS.java:6997)
	at org.eclipse.swt.widgets.Display.init(Display.java:2828)
	at org.eclipse.swt.graphics.Device.(Device.java:138)
	at org.eclipse.swt.widgets.Display.(Display.java:490)
	at org.eclipse.swt.widgets.Display.(Display.java:481)
	at test_paint.BaseTest.run(BaseTest.java:17)
	at test_paint.Main.main(Main.java:17)
The solution was to add the DLL-directory (I'm on Windows) for the org.eclipse.osgi plugin to the native libraries location in my launch configuration. My Notes client is installed in C:\Notes9 so the full path for Notes 9 Beta is "C:\Notes9\Data\workspace\.config\org.eclipse.osgi\bundles\1200\1\.cp". Adding that in the build path dialog for org.eclipse.osgi solved the issue.

Tags : ,

OnTime at IBM Connect 2013 - Like to win one of 4 iPad minis

OnTime is of course present at IBM Connect 2013 and we will be there in a variety of ways. We are sending 4 people so if you want to talk to us about anything from technology, to sales, to vision you should be good to go. Besides me being there and presenting a session (BP209 on Monday afternoon at 3.45pm) we are in the showcase demoing all our group calendaring goodness as well. We have an extremely cool line-up of products and will be demoing our new UIs namely the reintroduced Team-At-A-Glance sidebar plugin for IBM Notes and our new web UI which will knock your socks of. If you haven't seen it be sure to stop by the booth or talk to one of us.

During Connect we will be giving a number of iPad minis away and the rules are simple. Simply Like our page on Facebook (www.facebook.com/ontimesuite) to join the fun and then watch Facebook.com/ontimesuite daily during Connect 2013 for extra chances to win. Each way we will post an OnTime related question on Facebook and the first one to come to the booth with the answer will win an iPad mini - there is a iPad up for grasps every day of Connect 2013!! So easy and should be all kinds of fun. Be sure to join in.

So why not head over and Like us right away!?

Ved du nok om IBM Websphere Application Server?

Nedenstående er fra IBM Danmark og klart et kig værd hvis du/I overvejer IBM Connections og/eller IBM Sametime eller andre Websphere baserede produkter.

"Denne dag gennemgår vi de helt fundamentale begreber og ser nærmere på, hvorledes WebSphere Application Server danner fundament for henholdsvis IBM Connections, IBM Sametime og IBM WebSphere Portal. Vi kigger også lidt nærmere på arkitekturen bagved og ser også på de mere driftsmæssige aspekter. Så emnerne for dagen er teknikken, arkitekturen, drift, fejlhåndtering med mere.

Det bliver en spændende dag, hvor vores lokale specialister øser ud af deres viden!

Tilmelding: Tilmeld dig ved at sende en mail til lotusdk@dk.ibm.com - deltagerantallet er begrænset, så først til mølle princippet er gældende."

"Declaratively" binding events when using innerHTML

Yesterday I was editing some JavaScript code that used innerHTML to insert HTML into the Document Object Model (DOM). Given it's not the best and even fastest way to accomplish the task the code was written this way so it was what I had to work with. That is I had code like this:

// build HTML into string
var htmlResult = "<div id="someElement">";
htmlResult += <a href="javascript:void(0)" id="myLink">Click me!</a>";
htmlResult += "</div>";
...
...

// insert HTML into DOM
dojo.byId("target").innerHTML = htmlResult;
One major shortcoming of this approach is that that it is hard to hook up JavaScript events using dojo and similar frameworks as they require the target element of the event to be in the DOM at the time of the wiring. No declarative approach I know of there. To solve it I opted for a simple - although a bit kludgy approach where I simply save the event methods for later and apply once the DOM has been constructed. Easy. Like this: var htmlResult = "<div id="someElement"><a href="javascript:void(0)" id="myLink">Click me!</a></div>"; dojo.byId("target").innerHTML = htmlResult;
// define holder for onclick functions
var onclickFunctions = {};

// build HTML into string
var htmlResult = "<div id="someElement">";
htmlResult += <a href="javascript:void(0)" id="myLink">Click me!</a>";
htmlResult += "</div>";
...
...
// define onclick functions for ids
onclickFunctions["myLink"] = function() {
   console.log("Do stuff...");
}
...
...
// add html to DOM
dojo.byId("target").innerHTML = htmlResult;

// hook up event handlers
dojo.forEach(Object.keys(onclickFunctions, function(id) {
   try {
      var elem = dojo.byId(id);
      if (elem) elem.onclick = onclickFunctions[id];
   } catch (e) {}
});
Kludgy I know but it gets the job done.

Happy to see this fixed for Notes 9

" When a user or delegated user creates a contact within the mail file, the contact is later archived. The ProtectFromArchive, $NoPurge and ExcludeFromView fields are not being saved to the document when contacts are created in the mail file. These fields are generated on contacts in the local names.nsf Contacts lists. Resolving the problem This problem was reported to IBM Development in SPR PBAO7NKL2X and is resolved in 8.5.4 (aka version 9)."

Technote 1621998: Personal Contacts are Archived when the mail file is archived

List of some of the noticeable Notes 9 enhancements

The below list outlines what I find the most interesting about the Notes 8.5.4 release.

  • See messages in your Inbox grouped by date
  • Abbreviated dates The Mail views now show abbreviated, simplified dates according to the following changes:
    • If the date falls on the current day, then the date column will only show the time, for example: "4:50 PM"
    • Yesterday's date will have "Yesterday" plus the time
    • If the date falls on a prior day within the past year, then the month and day will be shown with the time, for example: "May 12 3:50 PM"
    • If the date falls on a day in a previous year, then the traditional date/time is show, for example "5/12/2011 3:15 PM"
    • If, for some reason, there is a future date in the Mail view, due to OS settings, it will be displayed the way that the "May 12 3:50 PM" example is shown above.
  • Scroll through One Month view in Calendar. Instead of viewing only one entire month at a time, now you can scroll through the One Month view of the calendar 1 week at a time. Keyboard access:
    • Scroll backward one month. - PgUp
    • Scroll forward one month. - PgDn
    • Scroll backward one week. Ctrl+PgUp
    • Scroll forward one week - Ctrl+PgDn
  • New Weekly Planner in Calendar. 8.5.4 includes a new Calendar view called Weekly Planner. The Weekly Planner shows the days of the week in a two-column format as shown below, which is similar to the Weekly view in the Notes Basic Client. You can scroll within a day to see more entries.
  • Calendar and Scheduling APIs for C SDK
    The Notes and Domino calendar and scheduling API enables application developers to create, modify, read, delete, or take calendar actions on calendar entries and meeting notices in a Domino mail file. The API encapsulates the complexities of Notes/Domino calendar data, including repeating meetings and notice creation, by utilizing the standardized iCalendar data format.
    A preliminary version of the API for the C SDK is included in CD2. Future Java & LotusScript APIs, as well as a REST calendar service may be built on top of this C functionality, but are not included in CD2. Specifics of the calendar functionality contained in the C SDK are documented in the calendarapi.h header file.
  • Social Edition: New Widgets and Live Text support for iNotes
  • Open Mail, Calendar, Contacts, or homepage in one click

Tags :

IBM Notes antivirus scanning recommendation technote

In a technote titled Notes Client Jar files that can be Excluded from Anti Virus scanning (technote 1620953) IBM provides some guidance for setting up client side virus scanning for IBM Notes. The steps are very catch-all-like but at least there is information available.