Notes 7.0.1 upgrade woe – background image now tiling

We have a custom application with numerous forms where each form has a small background image that doesn’t tile and hence should sit up in the upper left corner as shown below.


After upgrading to Notes 7.0.1 the image now tiles and hence the form looks a little different. Nothing has changed in the application and the application works perfectly on Notes 7.0 and Notes 6.5.4.

The funny thing is that the issue is consistant across the same set of documents but not all documents displayed through the form seems to be “infected”. The documents in the database are initially copied from user mail databases. During the copy process all fields except the Body and MIME related fields are removed and some new fields are added.

After messing a little around I think it has to do with small differences in the initial MIME to CD conversion at the SMTP server task. It issue seems to be sender specific. Strange…

We have halted the rest of our Notes 7.0.1 deployment.

Update: Seems like I’m not alone in my Notes 7.0.1 problems. I see that Bruce, Vince and Chris also had problems…

No need to wait for Bob to open source his Domino Session PoolManager

In response to “Lessons in Domino, Java, Eclipse and Tomcat” at wissel.net:

Take a look at BurnPC where there is an example of using Jakarta Commons Pool to manage the pool side of things. Jakarta Commons Pool is the base for all pools (incl. the database connection pool) used in Tomcat and is rock solid. The only thing to do is to write the code for the Domino Session part of things which the site also has an example of. You might consider going that way.

The session pool is probably only applicable for remote Corba sessions since there will be some threading issues (due to the use of NotesThread initialization/termination) with the local session which will be difficult (but not impossible) to handle. If you want to use local session I can recommend a servlet filter/ThreadLocal approach (as described here).

Anyone diggin’ Mozart?

The 9 symphonies available for download are:

  • Symphony no. 41
  • Symphony no. 34
  • Symphony no. 40
  • Symphony no. 23
  • Symphony no. 15
  • Symphony no. 36
  • Symphony no. 39
  • Symphony no. 17 (available from February 9th)
  • Symphony no. 35 (available from February 10th)

The symphonies are available in two qualities – 192 kbit/sec and 256Kbit/sec for those where the sound REALLY matters. Two of the symphonies (no. 34 and 36) are also available in MP3-Surround-Sound format.

While the pages are in Danish the download page (which is pretty self-explainatory) can be found here and the podcast feed is here. If you have specific portions you would like to have translated let me know by adding a comment and I’ll be happy to help.

Replication gone terribly wrong… :-)

Sometimes Notes produces some quite interesting dialog boxes – maybe they should really be considered Easter Eggs. They sure make me laugh and lighten up the day.

P.S.: It did take me quite a lot of time to place all 1.328.506.228 databases in the replication queue. But hey – that’s my Tuesday. Good thing it’s billable time…

Beware of those runtime dependencies

Okay, well maybe it wasn’t as “suddenly” – changes had been made to the system. Big changes. The active Tomcat instance had ben upgraded from version 4.1.30 to 5.5.12 which apparently changes some runtime dependencies for Realms. One might have guessed since it’s a jump of two major versions (first 5.0.x and then 5.5.x).

The Realm I created extended org.apache.catalina.realm.RealmBase and used the protected debug variable to control debug information written to the (console) log. After spending a fair amount of time debugging the (more or less) cryptic error the solution to the error caused to be one of those “Doh!”-moments.

The error stacktrace in catalina.out was as follows:

Feb 7, 2006 4:32:35 PM org.apache.catalina.connector.CoyoteAdapter service
SEVERE: An exception or error occurred in the container during the request processing
java.lang.NoSuchFieldError: debug
        at dk.acme.guide.login.LdapDbRealm.getConnection(LdapDbRealm.java:324)
        at dk.acme.guide.login.LdapDbRealm.authenticate(LdapDbRealm.java:161)
        at org.apache.catalina.authenticator.FormAuthenticator.authenticate(FormAuthenticator.java:256)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:416)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
        at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:199)
        at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:282)
        at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:744)
        at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:674)
        at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:866)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
        at java.lang.Thread.run(Thread.java:534)

The Tomcat 5.5.12 source have moved to Jakarta commons logging for all the core classes and hence the debug variable of the org.apache.catalina.realm.RealmBase class had been removed from the source. Since I had not recompiled against the Tomcat 5.5.x source (which one could say is my fault) I hadn’t caught the problem. Changing my code to use commons logging (the log variable) and recompiling against the Tomcat 5.5.x source the problem was solved and i was happy campers once more.

Lessons learned:

  • Beware of dependencies calculated at runtime.
  • Always recompile custom code against the third-party source it depends on when doing major version upgrades.
  • Think McFly, think!!

Note: As an aside the basic way to develop and deploy a Realm in Tomcat 5.5.x is still the same as in Tomcat 4.1.x.

Use SnagIt! as a COM server

Talk about redesigning for reusability: Using SnagIt! as a COM server. One thing is developing it as a COM component, another is exposing and documenting the API.

If you are not familiar with SnagIt! it is a screen capture application for Windows and it is so cool – by far the best screen capture application I have ever used and purchased. If you find yourself doing a lot a screen capturing for documentation etc. I really recommend it.

Some thoughts on the evaluation forms at Lotusphere 2006

Below is my comment to Rockys post. If you have comments to the below lets keep the thread over at Rockys blog.


Rocky,

in the wake of the various blogging presenters have been making their evaluation results public, I have been thinking a little about the evaluation forms at Lotusphere. Of cause I don't know how the other scores look so take the below with a grain of salt...

Although I agree that many of the presentations and the presenters were in fact excellent I think the evaluation form lacks options and that it shines through in the published scores. I really think that question 1 ("How would you rate the quality and relevance of the information in the session/BOF?") and question 3 ("How would you rate the quality and effectiveness of the speaker(s)/facilitator(s)?") lacks a fourth option where one could indicate that the speaker wasn't really doing a good job.

While I recognize that given too many options it is sometimes difficult to choose the correct answer, I still think that only giving people options for positive feedback doesn't really suffice. I know one have the option of commenting on specific sessions and giving ones opinion in prose I still think that it twists the results of the evaluation if I have to give at least a "Fair" evaluation. Sometimes a "Dissapointing" or similar option would be nice. At the end of the day, to get an overall picture of the event, you would have to look at the overall picture of the response and here comments don't really get through unless I, as the one responding, can couple it with a score of "Disapointing" or similar.

Another option would be to go the other way and to restrict the number of options from 3 ("Excellent", "Good", "Fair") to 2 ("Above expectations", "Below expectations"). Only having two options would really make people make a choice. I recognize that it also makes the responses less fine grained.

I'm not really educated in making feedback forms or in statistics but i think it could be worth looking into whether the evalutation forms tell you what you want to know. Given that a person is more likely to publish his/her evalution if they are all good, I think that an overall score of 95% "Excellent" is a problem. The score should probably be as in school where the majority of presenters would receive a "Good" score and a minority receive an "Excellent" score (the famous "Camel"/"Bell" curve). Otherwise it devaluates the "Excellent" score.

Just some thoughts.

Firefox 1.5.0.1 released

Here’s what’s new in Firefox 1.5.0.1 (here is a complete list of fixes):

  • Improved stability.
  • Improved support for Mac OS X.
  • International Domain Name support for Iceland (.is) is now enabled.
  • Fixes for several memory leaks.
  • Several security enhancements.

Note: I had to manually uninstall and reinstall the Venkman JavaScript debugger in order for me to make it work under 1.5.0.1.