Getting a book to Lotusphere 2010

Recently Chris Toohey held a contest/giveaway where the price was his review copy of the “Lotus Notes Domino 8: Upgrader’s Guide: What’s new in the latest Lotus Notes Domino Platform” book – courtesy of Packt Publishing. I have also received a review copy of the same book – and I admit: I never got to write my review of the book (but read the book with great interest). So I offered Chris my review copy as well so that his contest/giveaway could have two winners. The lucky winners are Chuckalicious and John James. Chris has already sent his review copy to Chuckalicious and I am going to send my review copy to John James.

Since I live in Denmark and John James lives in Canada the cost of sending the book equals the price of buying the eBook itself – so I thought that I would find alternative ways of sending the book to John James.

So, what better way to get the book to John James than by the help of the community? So the book will be transported to Lotusphere and then onwards to John James by the help of Bo Falkenberg and Marie Scott. I will give my review copy of the book to Bo who will bring it from Denmark to Orlando, Florida for the Lotusphere 2010 conference where Marie Scott will take over and bring the book home from Lotusphere in order to finally deliver it to John James!

Enjoy the book, John! 🙂

Update January 28: John has received my review copy thanks to Bo Falkenberg and Marie Scott.

Getting Things Done (GTD)

I have recently read David Allens Getting Things Done with great interest and immediately saw the benefits from following the GTD method. A top priority for me was to find a suitable GTD tool that works across Windows, Mac and iPhone in order to be able to collect and capture my ideas and actions no matter where I am. I looked at the following tools:

Let me share my thoughts on these before I tell you what system I have started to use.

Text file with synchronization using tools like Dropbox:
This tool option involves updating a simple text file and then storing the file using Dropbox. In this way I can access the text file across my computers and my iPhone. But a text file does not make it easy to follow the GTD system since it is difficult to do the weekly review and restructure actions and projects.

GTD for Lotus Notes:
There are several GTD systems for Lotus Notes. I know of the eProductivity suite by Eric Mack (but have not tried it) and the GTD standalone template by fellow IBMer Brett Philp. I have tried the GTD template by Brett Philp (downloaded from an internal IBM site – I’m not able to find it on the internet no more) and it is a very useful Lotus Notes application for GTD. However, in order to satisfy my need of cross system support I would need a Domino server that I can access from both work and home – across several computers, and I do not have access to such a Domino server. Furthermore, the application does not offer iPhone support.

Remember The Milk:
Remember The Milk is an online task management system that offers web access across systems and iPhone support. So it looks like a very promising tool for GTD. The free version offers an iPhone web interface. Access to the tool from a native iPhone app is only possible as a paid user. Using Remember The Milk for GTD requires that you use the tool in a not so logical way, as far as I can see from the blog post on “Advanced GTD with Remember The Milk“.

Toodledo:
Toodledo is similar to Remember The Milk in being an online task management system that offers web access across systems and also iPhone support in form of a free native iPhone app. From the Toodledo GTD discussion forum and from the Toodledo GTD overview page it is clear that Toodledo was created with GTD in mind.

Conclusion:
As you might have guessed from my walkthrough above, I have started to use Toodledo as my GTD tool for my implementation of Getting Things Done.  I use the web interface when at one of my laptops – and use the iPhone app when on the road. I use a setup in Toodledo inspired by Toodledo user Proximo which he has shared in the Toodledo GTD forum. This setup makes it easy for me to mark actions as next actions (by giving a task a star) and makes it easy to get an overview of my work and home next actions (by using saved searches).

Besides using Toodledo I have achieved inbox zero (at work and at home) and keep track of mail actions in Toodledo and by moving mails to either actions, waiting for, and someday/maybe folders.

What GTD system do you use?

Speaking at the September Lotus Technical Information and Education community meeting

I am on the agenda for the September Lotus Technical Information and Education community meeting at September 29. I will be speaking about my experiences with the Lotus community, with blogging and with creating content for the Lotus Notes and Domino wiki. Please feel free to comment if you have anything in particular that you would like me to talk about.

The community meeting is hosted by Joyce Davis and Chris Toohey. At the meeting Carlos Casas from The Rock Team will also share his story – and Niklas Heidloff from IBM and Ludwig Nastansky from PAVONE AG will introduce the OpenNTF Alliance.

Are you joining the meeting?

By the way: you can join the Lotus Technical Information and Education community on Lotus Greenhouse if you are interested. The community runs on Lotus Connections 2.5.

New Apple MacBook Pro

I now own a Mac! More specifically I have bought an Apple MacBook Pro with the following specifications:

  • Model: MB985
  • 15.4″ display, 1440×900 pixels
  • 2.66 GHz Intel Core 2 Duo processor P8800 1066 MHz
  • 4GB memory (DDR3 1067 MHz)
  • 320GB 5400-rpm hard drive
  • NVIDIA GeForce 9600M GT graphics processor with 256MB GDDR3 memory
  • NVIDIA GeForce 9400M graphics processor (yes, it has two graphics processors!)
  • OS: Mac OS X 10.5.8

I bought a Mac because I would like to explore iPhone programming – and this requires a Mac in order to run the necessary tools for iPhone development (i.e. Xcode).

I must confess that so far I am really enjoying the Mac experience! Am I slowly turning into a Mac fanboy?

Great resources on XPages

XPages is the impressive new feature in Lotus Notes and Domino 8.5 for web application development – and will be extended to the Notes client in 8.5.1. Did you know that XPages is built upon JSF and the Dojo toolkit?

For great resources and tutorials on XPages make sure to visit and learn from:

Update July 24: more great resources on XPages:

  • Karsten Lehmann shares some very interesting articles on the Mindoo blog on the backend part of XPages  – focusing on the subjects of Java, Servlets and JavaServer Faces (as pointed out by Patrick Kwinten in the comments to this post and by Mikkel Heisterberg in his blog post on JSF in XPages)
  • YouAtNotes has established the YouAtNotes XPages Wiki with tips and tricks on XPages development

Best practices for mobile web applications

I have been looking for recommendations and best practices for developing mobile web applications and found the following resources useful if you are developing mobile web applications for mobile devices in general:

And one more thing: don’t forget the iPhone development guidelines if you are developing mobile web applications specifically for the iPhone.

Free WebSphere Application Server 7.0 for Developers

Websphere Application Server 7.0 for Developers has just been released. It is a free download for development purposes – making it possible to develop and test on your desktop using a runtime environment that is identical to the production runtime environment your applications will eventually run on.

Thanks to Davanum Srinivas for the heads up on Twitter.

How to create a LTPA session cookie for Lotus Domino using F5 BIG-IP

I have previously blogged about how to create a LTPA session cookie for Lotus Domino and now I am finally able to present the code for creating this LTPA cookie that can be implemented on the F5 BIG-IP platform using the F5 iRules Control Language (which builds upon the Tcl scripting language). I created the code by going through a Java library for creating a LTPA cooke created by Miha Vitorovič.

The F5 iRule code is available for you to download – you just need to add the code necessary to do authentication of the user. Check F5 DevCentral for examples on this – for instance this iRule example that does reverse proxy with basic SSO.

Update: Based on this blog post I have created an article on this in the Lotus Notes & Domino wiki per request from Joyce Davis.

The following shows the actual code:

when RULE_INIT {
 set cookie_name "LtpaToken"           # Don't change this
 set ltpa_version "\x00\x01\x02\x03"   # Don't change this
 set ltpa_secret "b64encodedsecretkey" # Set this to the LTPA secrey key from your Lotus Domino LTPA configuration
 set ltpa_timeout "1800"               # Set this to the timeout value from your Lotus Domino LTPA configuration
}

when HTTP_REQUEST {
 #
 # Do your usual F5 HTTP authentication here
 #

 # Initial values
 set creation_time_temp [clock seconds]
 set creation_time [format %X $creation_time_temp]
 set expr_time_temp [expr { $creation_time_temp + $::ltpa_timeout}]
 set expr_time [format %X $expr_time_temp]
 set username [HTTP::username]
 set ltpa_secret_decode [b64decode $::ltpa_secret]

 # First part of token
 set cookie_data_raw {}
 append cookie_data_raw $::ltpa_version
 append cookie_data_raw $creation_time
 append cookie_data_raw $expr_time
 append cookie_data_raw $username
 append cookie_data_raw $ltpa_secret_decode

 # SHA1 of first part of token
 set sha_cookie_raw [sha1 $cookie_data_raw]

 # Final not yet encoded token
 set ltpa_token_raw {}
 append ltpa_token_raw $::ltpa_version
 append ltpa_token_raw $creation_time
 append ltpa_token_raw $expr_time
 append ltpa_token_raw $username
 append ltpa_token_raw $sha_cookie_raw

 # Final Base64 encoded token
 set ltpa_token_final [b64encode $ltpa_token_raw]

 # Insert the cookie
 HTTP::cookie insert name $::cookie_name value $ltpa_token_final
 }

 # Remove Authorization HTTP header to avoid using basic authentication
 if { [HTTP::header exists "Authorization"] } {
 HTTP::header remove "Authorization"
 }
}

How to create your own LTPA session cookie

Lotus Domino uses LTPA as the authentication technology for single sign-on. LTPA involves creating a session cookie that can be used to achieve single sign-on across several servers.

LTPA can also be used in combination with a reverse proxy to authenticate users at the reverse proxy and then be able to forward the authenticated user to backend Lotus Domino servers. The reverse proxy will then have to send a LTPA session cookie along with the HTTP request to the Lotus Domino server. The Tivoli Access Manager Webseal reverse proxy can do just that and supports LTPA.

However, if you use a product that does not support LTPA, then you have to create the LTPA cookie yourself. Daniel Lehtihet has provided the details on how to create a LTPA session cookie in the Domino Experts forum – and Miha Vitorovič from NIL Data Communications has extended this to create a Java library with all the necessary code. In short, a LTPA session cookie consists of the following (with some SHA-1 and Base64 magic on top):

  • LTPA token version
  • Creation time
  • Expiration time
  • User name
  • Domino server secret

I am currently on a project where we plan to use a F5 BIG-Ip application delivery controller to (among many things) authenticate and load balance HTTP requests against backend Lotus Domino servers. The solution will involve forwarding an authenticated user to the Lotus Domino server and this is where this post on creating your own LTPA session cookie comes into play. I plan to use the F5 iRules control language to create a LTPA session cookie when a user has been authenticated and then send this LTPA session cookie along with the HTTP requests to the Lotus Domino server.