Wednesday, January 24, 2007

Lotusphere 2007 - Day 4

Just one more day then my brain can quit crying.

BP308 Leverage DXL and OOP to build powerful tools

Mikkel Heisterberg showed a demo of creating an image resource via DXL, and also embedding a picture from the file system into a NotesRichText field. It was pretty slick, and the most important thing I learned was that with image resources there are control blocks in the Base64 encoding. Mikkel said he blogged about this and there are some comments from Ben Langhinrichs that explains why it is that way, so head over there and check it out if you're interested.

He also spent some time going through is excellent lsdoc application, which is like Javadoc for LotusScript. This was a bit esoteric, and oddly enough it mostly focused on applying design patterns to Notes development. I would have liked to have seen more code, but I can download that myself so it's not such a bad thing.

BP403 Moving Domino to Linux

This was mostly fairly high-level linux admin info, which was helpful to me because so far I've just dabbled in linux and Googled to learn stuff. Actually having a living breathing person explain it was a good thing. The key takeaways:
  • Compiling your own linux kernel is a good thing. It optimizes the build for the current hardware. If you download a prebuilt kernel it's completely generic.

  • chown notes:notes /local/notesdata/* - This sets the owner and group for all items in the Notes data directory to the notes account.

  • chmod 664 -R /local/notesdata/* - This sets the proper permissions on everything in the Notes data directory.

  • ps -af - shows all running processes and what spawned it

  • The Domino cache is not case sensitive, but Linux is. If you have a file in your /domino/html directory called FILE.txt and you access it with the URL http://server/file.txt, you will get a 404. However, if you do load it properly by going to http://server/FILE.txt, any later references to file.txt will resolve. Obviously this can get ugly in the case of you having a bookmark to the correct URL and someone else typing in all lower case. They call to say it doesn't work, you open it, and then it works for them. Later when the cache has emptied, it no longer works for them, they call, and the insanity repeats.

  • You have to install Domino as root, but you can't run Domino as root. If you use su to switch to your notes account then try to load Domino you will get an error about Display permissions. The moral of this story is that after installing Domino, log off and log back on as your notes user before starting Domino.

AD301 - Calendar and Scheduling 101 - Integrating Notes C&S into your apps

Read the slides. That's what the presenter did. And that's all I'm going to say.

Lunch

Over lunch I had an extremely interesting conversation with one of the hardware people working in IBM Research, and following that another very enlightening conversation with one of the Sametime developers. The gist of the conversation I was having with both gentlemen was this use case: A user pulls up his Sametime contact list, selects someone, and does click to call. Using SIP, I hand that call off to my PBX, and redirect it to my IP hardphone. Basically all I'm doing is using Sametime as an electronic phone directory. This is doable today using a Sametime conference server and about $40K worth of add-ons from Avaya, Cisco or Nortel. The reason it's so heavy is the Sametime client doesn't include any client-side SIP interface.

There is a light at the end of this tunnel! A client-side SIP interface will be added when Sametime 7.5.1 ships later this year. I wish I had caught the names of the two gentlemen I spoke with, I'd like to publicly thank both of them for embodying the spirit of "It revolves around you". If I find out who they are I'll give them a shout out.

Meet the Developers Lab

In Rocky Oliver's presentation about writing maintainable code he referenced a specific use case where he had to use a work around, and he said the underlying problem was fixed. I have run into the same issue, and in my own experience it is not fixed. I posted this previously, but here's the scenario:

You have a NotesDocumentCollection, and you step through it thusly:

Set doc = dc.GetFirstDocument
Do Until doc Is Nothing
...
Set doc = dc.GetNextDocument(doc)
Loop

I'm sure we've all done this, and there's no problem for most applications. The problem is this leaves very document in the cache, which purges itself periodically. For very large document collections that iterate rapidly it can load so many documents between purge intervals that it can severely degrade performance and potentially even crash the server.

This is what Rocky said was fixed in 7.0.2, so I took the time to stop by the Developer lab and asked Andre Guirard. According to Andre there has been no change in this behaviour. It is still recommended that you use Delete inside the loop when you're dealing with large NotesDocumentCollections. Personally I always put it into every NotesDocumentCollection loop. It doesn't hurt anything, and in the off chance you have a larger than expected collection it won't degrade server performance when you process it.

UPDATE: I spoke with Rocky briefly before the SpeedGeeking event, and he said he would discuss this in more depth with Andre. Hopefully I can get to the bottom of this and put it to rest once and for all.

BP204 - Integrating OpenOffice.org

Every day so far there's been one session that made my brain whimper. First it was Paul Calhoun's Java jumpstart, then it was Andre Guirard's New and Next in Domino Designer, then it was Nathan and Chris' Interface Matters... today, that award goes to John Head and Alan Bell for the stunningly brilliant work they did integrating OpenOffice.org and the forthcoming IBM Productivity Editors into Notes applications. The samples and slides are available from the blogs, but here's the idea in a nutshell:
  • You can control OpenOffice.org through COM automation, much like you would Word or Excel.
  • OpenOffice.org is much, much simpler to work with and Alan is providing free LotusScript classes that will handle all the heavy lifting for you. That's the biggest part of the battle!
  • The code you write to work with Notes and OpenOffice.org will port over to the IBM Productivity Editors, with a major caveat. The current version of OpenOffice.org is 2.1 IBM used version 1.1 for the Productivity Editors. So, as long as you don't do anything that won't work in 1.1, it'll work in the Productivity Editors.
And why would you care about any of this? I'm glad you asked!
  • Many businesses export Notes data to Excel to create graphs. You can very, very easily build the whole thing on the fly for users. Also, you can easily copy NotesRichText formatting to OpenOffice.org components. No more using DXL exports or stepping through Rich Text CD records!!
  • You can also do dynamic mail merges. A user checks of a few customer records in your CRM, clicks a button, and it dynamically generates "thank you for your business" documents. No mucking about with NotesRichText!!
  • And, you can just pass a set of arguments to the OpenOffice.org objects and they'll generate a PDF from any document.
  • Finally, OpenOffice.org is free, stable and available for Windows, Mac and Linux platforms. It is very feature rich and compares favorably with MS Office. One serious limitation is the inability to convert MS Office macros, which is honestly what prevents us from using it.
OpenOffice.org is seriously cool, and worth looking at. Since Writer, Calc and Impress are coming bundled with Notes 8 it can really keep your users in a single environment for everything.

Down time

I finally had enough. I just couldn't do another session. Exhaustion and fatigue are setting in. Next up... SpeedGeeking at 5:45, which I'll blog about separately.

1 comment: