The XPages Portable Command Guide and why it’s important


I was among the people who was fortunate enough be be sent a review copy of the new “XPages Portable Command Guide” book that has just been published. While this review has been a long time in the making I wanted to get it out there never the less. You should first read the review Tim Tripcony wrote (“XPages Portable Command Guide is a book every Domino administrator should read“) as it is spot on and very good and accurate. The thing about XPages that many developers and administrators forget – or simply doesn’t know – is that it is running on a completely rewritten HTTP stack on the Domino server. It was even refactored recently to be based on OSGi technology to make it even better and more easily extensible. The XPages runtime is more like a traditional J2EE server (like Websphere Application Server) than a traditional Domino server. This means that the runtime is very configurable but out of the box it is configured to be a jack of all trades. You can change it though and you probably should if you run business critical applications of it.

For me the most important part of the book is the part about the xsp.properties file that is the main configuration file for the XPages runtime. The file is central to how an XPages application function and it’s crucial that it is configured and tuned correctly for the needs of the application. While having to do this kind of configuration by hand is prone to errors and that IBM really should provide better tooling for it doesn’t change its central role for XPages. It is therefore very important that you as a developer or administrator know how to edit it. For the developer you need to be able to configure the application so it functions at peak efficiency and as an administrator you need to know enough to throttle your developers to not configuration the applications to as to note starve one another for resources.

The important part about XPages is that where many of the settings for traditional Domino web applications are server settings many, if not all, of the xsp.properties settings can be thought as of deployment settings as well as server settings. As Tim writes – “There are plenty of settings that can be defined in this file that only the developer should care about, but many of them you don’t want the developer to decide. Trust me, if you leave it to me, I’m typically going to max out the RAM consumption in an attempt to provide lightning fast response times. But it’s your server. You should be overriding me on that decision… as long as it’s still in keeping with the end users’ business needs, of course.”

So if you do any work with XPages I therefore highly recommend you get a copy of this book. Get it as an e-book though as it’s a reference and IMHO a paper copy doesn’t make any sense. Most of the API calls you can also find good documentation on online but the xsp.properties part is lacking online and it’s critical to know about and understand if you want to get the maximum from the XPages runtime.

Instapaper – found the feed for Liked

I’m a giant fan of Instapaper and use it all the time to track stuff to read and actually read it when offline in a plane or whenever I have a few minutes. It’s great. I like to share articles I like using twitter but I just found out there is a RSS feed to liked articles as well. My feed for liked articles is also available so feel free to track it if you’re interested in what I like on Java, JavaScript, XPages or appdev in general. Feel free to follow the feed if you like.

The Java native2ascii tool (also important for you XPages geeks)

To prepare for our upcoming trip to Tokyo I’ve been working on a Japanese translation of our OnTime Group Calendar 2011 client for Notes based on Java plugins. The internationalization engine (i18n) was already in place so it was merely a matter of doing the translation (thanks to Google Translate and friends) and then adding language files to our API. In that process one becomes very thankful of UTF-8 and the fact that Java works natively in UTF-8.

Please note that the approach discussed in this post translates (excuse the pun) directly to making translation files for XPages as well.

Using the Japanese translation the GUI looks like the below screen shot (cropped of course).



(click the image for a large version)

The funny thing about most non-Latin languages is that even though you have the translations it’s hard to impossible to write the characters yourself. And once you have the words getting them into the language files which are mere property files. Take the weekdays in Japanese as an example:

月曜日
火曜日
水曜日
木曜日
金曜日
土曜日
日曜日

Because we’re running the OnTime Group Calendar out of Notes and because Notes is fully double-byte compatible we could actually just add the Japanese characters directly to the translation document. Instead however we opted to use the Java way that is the native2ascii tool.

The native2ascii tool is shipped with the JDK and lets you translate a file containing native characters to their UTF-8 equivalent escape sequences. So having my Japanese characters in japanese_source.txt and wanting to store the result in japanese_result.txt I simply ran the following command:

native2ascii -encoding UTF8 japanese_source.txt japanese_result.txt

The encoding parameter specifies the character encoding of the source file (here japanese_source.txt). The result is something like this:

u6708u66dcu65e5
u706bu66dcu65e5
u6c34u66dcu65e5
u6728u66dcu65e5
u91d1u66dcu65e5
u571fu66dcu65e5
u65e5u66dcu65e5

Chose escape sequences go directly into the language property file and when read into a Java property file they are automatically translated into Japanese. Sweet!

Embedded Experiences demo – you want to see this!

As I wrote in my Lotusphere 2012 one-liners post after Lotusphere OpenSocial and Embedded Experiences is *the* technology to watch coming out of IBM Lotus. At Lotusphere 2012 Ryan Baxter and Stanton Sievers from IBM gave a Show’n’tell session (SHOW115) which I think really should be an eye opener to a lot of people as to why this embedded experiences “thing” is important. I’ve been bashing Ryan to make a recording of the session and it’s finally here.

Video of demo: Embedded Experiences Demo – N/D Social Edition – Connections Next

Code from demo: Demo code

If you want more embedded experiences go watch the video from the Social App Throwdown from Lotusphere for inspiration as to what’s possible.

Going to AusLUG


I’m happy to say that I once more will be joining the AusLUG crew downunder for the Australian Lotus Usergruoup on March 29-30 in Melbourne, Australia. I have been wanting to go all along but we had to make sure it was possible before I started getting my hopes up. So I’m very happy to say that everything has fallen into place and that I’ll be on site for AusLUG 2012! So thrilled.

I’m even more thrilled to say that I’ll be speaking as well. The first session is on Thursday at 2pm where I’ll be giving my “Easy as Pie – Creating Widgets for IBM Connections” session to get you up to speed on developing widgets for IBM Connections. On Friday at 8.30am I’ll be on stage again presenting my “Plug yourself in and your applications will never be the same! (An introduction to plugin development for Notes and Sametime)”. I really hope to see you all for both sessions on topics I think are extremely important to you as a developer.

This year the OnTime team will consist of myself and my manager Jens overgaard Dinesen (@jensovergaard) as we will both be making the trip to Melbourne. On our way (because what isn’t on ones way when going to Oz) we’re stopping for two days in Tokyo to meet with IBM and potential partners for OnTime in Japan. We’re very excited about this trip and hope everything will pan out. We will not be in until Thursday morning at 7am but will be there all of Thursday, Friday and Saturday and looking forward to meeting everyone there.

See ya!

From the drafts pile – Noticeable enhancements for Notes 8.5.3

Found a couple of posts in my drafts pile that I never got posted and that are really past their time. I though I would just post them to get them out there. Treat accordingly.

  • Live Text recognized in MIME emails
    Live Text strings are now recognized in MIME e-mails. This has been an anticipated enhancement for several releases, and is now available
  • Open a Web page widget in an external browser or named embedded browser
    When creating a Web page widget, you can specify that the widget open in an external browser or a named embedded browser.
  • Integrated Windows Authentication (IWA) for Eclipse-based clients, including Lotus Notes
    This code drop introduces Integrated Windows Authentication (IWA) for supplied and third-party Eclipse-based client applications, enabling SPNEGO authentication for integrated Notes application clients. This includes Notes and its embedded Eclipse-based features such as Widgets and Live Text, Feeds, Lotus Connections, and Composite Applications as well as embedded Sametime and embedded Symphony. It also includes adjunct products that are based on Eclipse but not embedded within Notes, such as IBM WebSphere Portal with SiteMinder and stand-alone Lotus Connections 3.0 with SiteMinder.

Creating a keystore for plugin signing the easy way

Previously when creating keystores for plugin signing I’ve used a lot of dark magic, crying at the moon and a custom tool I wrote called KeystoreUtil to convert between different formats. The other day I was doing a consulting gig on plugin signing and came up with an easier way just using iKeyman and the Java tooling. I created a presentation with the various commands and screenshots and put it on Slideshare.

Hope it will help someone.

Creating a keystore for plugin signing the easy way [slideshare id=11917844&w=425&h=355&fb=0&mw=0&mh=0&sc=no]

View more PowerPoint from lekkim

BLUG 2012

I totally forgot to mention this…

I happy to say that I’m going back to BLUG again this year presenting on one of my favorite topics that is widget development for IBM Connections (Easy as Pie – Creating Widgets for IBM Connections). I’m presenting on Friday at 12.30. The overall conference agenda looks very good and I’m looking forward to going back to Antwerp to present, network, learn and talk about OnTime.

The OnTime crew will of course also be available to talk about OnTime Group Calendar and OnTime Meeting Manager and all the various interfaces.

I’ll fly in on Wednesday afternoon and will probably be sampling the local brews that night – see you there.

Bookmark to IBM Connections bookmarks from iOS

Bookmarks (aka Dogear) in IBM Connections is great and IBM provides a nifty bookmarklet to allow easy bookmarking from your browser. I couldn’t however make this bookmarklet work in Safari on iOS so I decided to look into it. And I’m happpy to say I got it to working with some inspiration from the Instapaper bookmarklet. The way it works for me now is that I have the bookmark bar visible on my iPhone and iPad and when I need to bookmark I use the bookmarklet which redirects to the IBM Connections bookmark page and back to the original page once done. Super easy and it works great.

Here is how to make it work.

  1. Open Safari and make a bookmark to a random page but be sure to place it in the bookmark bar (the bookmark bar can be made visible all the time in Safari options).
  2. Edit that bookmark and change the title to something that makes sense (I use “IV Dogear”).
  3. Clear the location field and paste in the JavaScript code from below replacing the hostname (lc.intravision.dk) with a hostname applicable to you.
  4. Save the bookmark and start bookmarking.

pre.wrap {
white-space: pre-wrap; /* css-3 */
white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */
white-space: -pre-wrap; /* Opera 4-6 */
white-space: -o-pre-wrap; /* Opera 7 */
word-wrap: break-word; /* Internet Explorer 5.5+ */
}

javascript:function%20abcdefg()%7Bvar%20h='http://lc.intravision.dk/dogear';var%20d=document;var%20b=d.body;var%20e=encodeURIComponent;var%20u=h+'/bookmarklet/post?url='+e(location.href)+'&title='+e(d.title);location.href=u+'&inframe=true&ver=';%7D;abcdefg();void(0);

DNUG 2011 video of yours truly – Plug yourself in and your apps will never be the same!

The kind people from DNUG was kind enough to tape my presentation in November and send me a link to the video. Sides being extremely weird to see one self on video I thought someone might enjoy it – so here it is. Further down is the presentation on Slideshare from BLUG.

Link to video.

Plug yourself in and your app will never be the same (1 hr edition) [slideshare id=7857007&w=425&h=355&fb=0&mw=0&mh=0&sc=no]

View more presentations from lekkim