Archive for February, 2006

24/2/2006: 6:45 am: Justin FreemanLotus Domino

This is our first Show’n Tell Thursday posting (what a great idea Mr. B Balaban and Mr. R Oliver!) and even though today is actually Friday, it’s better to be late than never! So here goes.

Show-n-tell ThursdaySince our office entirely moved to a Linux desktop environment, we ceased using the Lotus Notes client for email as it does not run natively under Linux (well, not yet at least…).

Instead we use the Mozilla Thunderbird Email (just a standard SMTP, IMAP, POP3 mail client) using SMTP/IMAP and SSL to send/retrieve email. The switch has been almost completely painless, with a few minor gotchas:

  1. Notes Mail has a unique feature whereby you can have a single email document in many Folders. This is not possible using IMAP.
  2. Moving email documents between Folders causes the document to be deleted from the database and recreated.
  3. Notes Mail uses Views for “All Documents”, “Sent” and “Drafts”. Using a IMAP client these are Folders and must be created separately. Which means that when you open your IMAP-enabled email using Lotus Notes you will have a “Sent” View as well as a “Sent” Folder.

Depending on your level of sophistication on using Lotus Notes these may or may not be major problems. For us these were really minor.

After using IMAP email for a few weeks, we noticed that all of the IMAP sent email appeared differently in the Lotus Notes mail client:

  • First of all, the email was being displayed in our new “Sent” Folder but was not being displayed in the “Sent” View.
  • Secondly, the “Who” column displayed the name of the Sender, not the recipient of the email. Which meant for me, that all of my sent email was addressed to “Justin Freeman”. Totally bizarre.

Some investigation revealed that the problem was caused by Domino stamping all IMAP sent email with a DeliveredDate field, which had the same value as the PostedDate.

Therefore, you would think that simply removing the DeliveredDate field from the IMAP sent email would solve the problem. Yes, this approach works when you know where the IMAP sent documents are all located, ie. the “Sent” Folder. Deleting the DeliveredDate field causes the document to be displayed in the “Sent” View and also display the correct value for “Who”.

But what happens when those documents are not in a known folder, how do you locate those? You need to search the Email database and locate all the IMAP documents, not a simple task.

So to identify a document created by a IMAP email client connecting directly to your Domino server, the following rules are used:

Document must not have the following fields set. As these indicate that the document was routed too, not created directly in the database.

  • Received
  • RouteServers

For Mozilla Thunderbird, document must have the following fields set:

  • DeliveredDate
  • PostedDate
  • $SMTPNotFromNotes
  • User_Agent

For Microsoft Outlook, document must have the following fields set:

  • DeliveredDate
  • PostedDate
  • $SMTPNotFromNotes
  • $Mailer

If the document meets the above criteria, then (I believe) it is a document created by a IMAP client. And the DeliveredDate can be removed.

You can then wrap this logic up into a simple scheduled Notes Agent that parses your email on a daily basis, fixing all of the IMAP sent email so that they display correctly within Lotus Notes. See below for an example.

Function to identify IMAP created documents

Function localImapSentDocument(docTarget As notesdocument) As Integer
'This function determines whether or not the target document was sent directly from a local IMAP client
'When this is performed Domino automatically assigns a delivereddate value which then interferes with the display of the "Who" column in the Inbox
localImapSentDocument = False
If Not docTarget.HasItem("Received") And Not docTarget.HasItem("RouteServers") And docTarget.HasItem("DeliveredDate") And docTarget.HasItem("PostedDate") And docTarget.HasItem("$SMTPNotFromNotes") then
'Check for email sent by Mozilla Thunderbird or Microsoft Outlook client
If docTarget.HasItem("User_Agent") or docTarget.HasItem("$Mailer") Then
localImapSentDocument = True
End If
End If
End Function

Example Agent code

Note: our internal system execution and error logging has been commented out:

Sub Initialize
'Dim syslog As New mylog(cAgent)
'sysLog.FunctionLocationA="Initialise"
'sysLog.FunctionDescription="Removes the delivereddate from imap documents"
'syslog.LogGeneral ("Starting")
On Error Goto errHdlr
Dim ns As New notessession
Dim dbCurrent As notesdatabase
Set dbCurrent = ns.currentdatabase
Dim colEmail As notesdocumentcollection
Set colEmail = dbCurrent.UnprocessedDocuments
Dim docEmail As NotesDocument
Set docEmail = colEmail.GetFirstDocument
Do While Not(docEmail Is Nothing)
'Check if this is a local IMAP document
If localImapSentDocument(docEmail) Then
'If so then remove the DeliveredDate
Call docEmail.RemoveItem("DeliveredDate")
Call docEmail.Save(True,False)
'syslog.LogGeneral ("Updated: " + docEmail.subject(0) + "; UNID: " + docEmail.UniversalID)
End If
Set docEmail = colEmail.GetnextDocument(docEmail)
Loop
'syslog.LogGeneral ("Completed")
Exit Sub
errhdlr:
'sysLog.ProcessError Err, Error$, PROCESSERROR_LOG
Exit Sub
End Sub

Technorati tags: ,

21/2/2006: 1:07 pm: AlexIT General

How do you make a web page stretch to fill the height of a browser window? A lot of sites are arranged with a header, footer, and a space for content in between. This site is a good example. These look fine when there is plenty of content on each page, but when a page has very little content then it ends up looking squashed at the top of your browser window. Here’s a simplified example of what I mean. I’ve tried a number of ways of using CSS to stretch the page, the two most viable being:

  1. Set the min-height of the page to 100% of the browser window. This would be a good option if it actually worked. It works ok in firefox and opera, as long as you use ‘position: absolute; bottom: 0;’ for the footer to push it down, but in konqueror and IE it doesn’t work at all.
  2. Put a div or background image underneath the page that is set to ‘height: 100%’. This works, but it doesn’t move the footer down, so it just looks silly.

There just doesn’t seem to be a good way of having this work in all browsers using only CSS. I wanted it to work though, so I did what every frustrated web developer does, and used javascript. My solution looks at the height of the browser window, and the size of the content, and then stretches an invisible div within the content to change the size of the content.

In the html just above my footer I added:

<div id='spacer'></div>

Then in css I added:

#spacer {
    padding: 0;
    margin: 0;
    height: 1px; /* don't set to 0 or moz and konq have problems */
}

And finally the javascript:

function elem(id) {
    if (document.getElementById != null) {
        return document.getElementById(id);
    }
    if (document.all != null) {
        return document.all[id];
    }
    if (document.layers != null) {
        return document.layers[id];
    }
    return null;
}

function height(id) {
    var e = elem(id);
    if (e) {
        return parseInt(e.offsetHeight);
    }
    return 0;
}

function windowHeight() {
    var height = 0;
    if( typeof( window.innerHeight ) == 'number' ) {
	//Non-IE
	height = window.innerHeight;
    } else if( document.documentElement && document.documentElement.clientHeight ) {
	//IE 6+ in 'standards compliant mode'
	height = document.documentElement.clientHeight;
    } else if( document.body && document.body.clientHeight ) {
	//IE 4 compatible
	height = document.body.clientHeight;                                                                                                                   }
    return parseInt(height);
}

function stretchPage() {
    var spacer = elem('spacer');
    var newheight = windowHeight() - (height('page') - height('spacer'));
    if (newheight < 1) newheight = 1; // set to 1 because there are bugs in moz and konq when setting height to 0
    spacer.style.height = newheight + 'px';
}

window.onload = stretchPage;
window.onresize = stretchPage;

With all of these put together you have a page which will grow to fill the height of your window in firefox, konqueror, opera, and IE, provided javascript is enabled.

18/2/2006: 4:28 pm: Justin FreemanThe Good Life

Here’s a photo of a big Red Kangaroo relaxing in the afternoon heat. He was totally oblivious to the crowd of people around him and obviously didn’t have a care in the world.

Great Red Kangaroo chilling out in the afternoon heat

From Whiteman Park in Perth, Western Australia. Photo courtesy of my brother in law.

And no, the Roo is not dead.

17/2/2006: 5:30 am: Justin FreemanLotus Domino

Found these demos on the IBM website which I thought were an excellent insight into where Workpace is now and the direction that Lotus Notes will follow in the very near “Hannover future” (2007 timeframe). Exciting times ahead!

IBM Workplace Managed Client delivers fully integrated, server-managed collaboration to the end user’s desktop. It provides flexibility and portability of client-side applications, combined with server-side control and cost savings traditionally associated with Web-based computing.

Workplace Managed Client

IBM Workplace Managed Client Demonstration

IBM Workplace Designer provides developers with an easy-to-use, yet powerful tool to build applications for the IBM Workplace environment.

Workplace Designer

  1. Creating an application
  2. Working with Views & the Schema Editor
  3. Deploying an Application
11/2/2006: 6:49 am: Justin FreemanLotus Domino

This UK Guardian article derides Notes Client user interface for the counter-intuitive features: menus, smart icons, user prompts, layout etc. And quite frankly, I’d have to agree completely with this sentiment. The Notes user interface *is not intuitive* and is *hard to learn*. The Notes client uses concepts and metaphors simply not comparable in any other Windows application, presents a multitude of menus and options which overwhelms new users. The Notes client is a very unique and overly complex Dinosaur.

From UK Guardian:
http://technology.guardian.co.uk/weekly/story/0,,1705106,00.html

Dave Delay, who worked on Notes from 1996 to 2002, points out that it is one of the few products Microsoft has tried - and failed - to wipe out. “People dislike Notes because their expectations don’t jive with the intent of the product. At its core, Notes is a runtime environment for collaborative applications, but when people complain about Notes, they are usually not talking about core Notes. They are talking about the Notes Mail and Calendar applications” (http://tinyurl.com/9v94z).

Delay’s remarks brought one sharp user retort, who observed that “Notes’s backend functionality has no bearing on us 100m or so end-users. As far as we are concerned the GUI is the system. And boyo… is the GUI client a heap of ill-conceived, non-intuitive rubbish.”

There is also an interesting post-article discussion on the author’s blog, where he received 60+ comments.

So is it all doom and gloom for the Notes client? Up until recently I would have certainly thought so. But wait… change is coming with the next major release of the Lotus Notes client, code named “Hannover” or Lotus Notes 8 which is due 2nd half of 2007. Check out the picture below for a preview (click for a larger image)…

The Hannover announcements have been a refreshing change of direction in the user interface strategy. It appears that IBM/Lotus have indeed heard their consumers complaints about the Notes client usability and they are committed to doing something positive about it. Hannover should address these issues and propel Lotus Notes into the 21st century. Here are some of the features I am looking forward to in the upcoming “Hannover” release of Lotus Notes:

  1. A reworked and user centric user interface
  2. Based on the Eclipse framework
  3. Extensible via Eclipse third party plug-ins
  4. Native platform support for Windows and IMHO more importantly Linux (yes there will be a Mac OS X version too)
  5. Domino server based provisioning (what this really means is that the Notes client can be downloaded / updated directly from the Domino server on demand - or something like that)
  6. Portalised application interface and new Portal features integrated into the Domino server
  7. An improved Notes Designer (developer) and Notes Administrator clients
  8. New and exciting application widgets

The Notes community and Notes end users *want* Hannover to succeed and I believe the future is very bright indeed.

Other Hannover useful links:

  1. Highlights from LotusSphere 2006 which includes more details and pictures of Hannover
  2. Hannover Home Page
  3. Hannover dicussion via Ed Brill
  4. Hannover FAQ
3/2/2006: 8:09 pm: Justin FreemanFree & Open Source Software

A number of people have contacted me this week to support the idea of a BLUG. Which has answered my initial question, is there a real need for such a group? The answer is a resounding “YES!”.

I’ve also got a small collection of biz-cards from the talk on Monday (I’ll be emailing you guys!).

So please continue to support this concept by posting your comments, feedback and idea against the BLUG entry. Spread the word to your colleagues and friends.

Once there is sufficient numbers we’ll schedule a meeting and get things rolling.

2/2/2006: 6:11 am: Justin FreemanFree & Open Source Software

We are currently on the look out for audio transcription software or similar for Linux. We have a customer who is in the process of moving to Linux on the desktop and this is currently a “bump in the road”.

On Windows, the customer uses Sony dictaphones which record audio in a proprietary format (not MP3, AAC or anything I’ve seen before). With the move to Linux the Sony’s were going to be replaced with MP3/OGG recorders. Unfortunately, these Sony devices *also* come with very user friendly software to aid in the transcribing of the audio into text.

Customer requires the following features (which Sony software provides):

  • slowing speech whilst retaining pitch levels
  • bookmarking timeline
  • fast forward/reverse 15 secs
  • skipping to the next long pause
  • simply user interface
  • has hot-keys for all the major functions
  • and of course, be designed specifically to allow someone to transcribe hours of audio

We were considering writting a UI and back-end script to control XMMS as one possible solution. But I thought before we headed down that path, it was worth sending out the call to the community.

So if you know of some good audio transcription software for Linux please comment on this entry with details. Would like to know about both FOSS and commercial solutions for Linux.

Thanks!