Friday, September 29, 2006

iSeries to Red Hat move - rooms and resources gotcha

When I migrated my Domino Directory administration server from iSeries to Red Hat users started reporting seemingly random problems with room and resource reservations. Some reservations worked while others didn't. It wasn't a big deal, but it was one of those annoying things people would mention every week or so.

I finally dug into it and what I found was very interesting. In the logs for my server I kept seeing errors about a file RSVP.nsf not being found. I checked and careful scrutinity showed my reservations database is called rsvp.nsf. When I looked at the room and resource documents in the Mail-In Databases section of Domino Administrator some were listed with the database filename RSVP.nsf. I don't know how this happened, there isn't anywhere to enter the filename when you create a new resource. Apparently Linux is case-sensitive with regards to reservations while the iSeries is not. I changed everything to point to rsvp.nsf and it all works now.

One more "gotcha" to add to the list: check all filename references for proper casing after migrating to Linux.

Thursday, September 28, 2006

Sametime 7.5 Limited Use?

Sametime 7.5 was released on Wednesday, September 13th. It's now Thursday, September 28th. Fifteen days later there is still no Sametime 7.5 Limited Use. The 7.0 Limited Use version was posted at the same time as the full version so I'm not sure what's going on. Does anyone know?

Monday, September 25, 2006

Am I too lost to be saved?

I have been participating in another thread over on Ed Brill's blog and I started out writing a rebuttal of Alan's list (comment 44) of new features that have been released for Domino Designer. As I formulated my response I had an epiphany. I appreciate the elegance of the framework delivered in Notes and Domino. I appreciate Domino's server architecture, even if I'm a bit mystified and sometimes frustrated by it.

I hate Domino Designer with a passion. I loathe coming to work because I know I'll have to use Designer. I truly feel it is the worst piece of software I have ever used in my 15 year development career. I was ready to quit my job after Lotusphere but an e-mail exchange with some IBM'ers convinced me to hold out some hope that Hannover would make the development process significantly better. I now realize there is no hope of it getting better until a post-Hannover release. What I have today is what I will have for at least another year.

I know a few months ago I said I enjoy working with Notes and Domino, and that is still true. However, for me the face of that is Domino Designer, and staring into that hideous visage every day is becoming increasingly difficult. I'm not sure where this leaves me, besides really frustrated and jaded. I think I'm just burned out.

The reality is I have bills to pay and my skillset is 100% Notes and Domino, so the likelihood of me making any significant changes anytime soon is slim. I'll continue working with Notes and Domino while I formulate an exit strategy, and will continue participating in the online community. Who knows, maybe I'll start liking Notes development again. Right now my enthusiasm is at an all-time low.

Thursday, September 21, 2006

SNTT - Doing a multi-user install of Lotus Notes 7.01 on Windows Terminal Services 2003 - Part 1

Throughout Notes' long history there has been pretty much one way to do multi-user installs: create separate Location documents for each user that points to their own bookmarks.nsf and ID files and the users change locations to log in as the different users.

That worked fine when it was essentially a shared terminal, with people working different shifts. Then along came Windows Terminal Services (WTS). Since you have numerous people all logged in at once this approach doesn't work. To address this scenario, IBM published a RedBook describing a new process. In a nutshell, you install Notes to the server and put the data directory on the user's home directory, which is typically mapped as H:. Next you create a shortcut to nlnotes.exe and set it to start in the user's home directory, such as H:\Lotus\Notes\Data. This works, but every time you upgrade you have to be careful to copy over all the new files, replacing the old ones, and bookmark.nsf in particular could be a pain to handle.

In my organization we used the old method on our WTS servers when we were on R5, and then migrated our 80 users to R6 and did another upgrade to 6.5. Each time we did the upgrade manually and three people spent most of a weekend at work copying files and validating the install for every user. It was pretty painful and not something we wanted to repeat. There are ways to create scripts to make it easier, but it's still a time-consuming and error-prone process.

Enter multi-user setup. With a multi-user installation the program and template files are stored in a location accessible to all users. But each user's personal files, such as names.nsf, bookmarks.nsf and their ID, are stored in C:\Documents and Settings\[username]\Application Data\Local Settings\Lotus\Notes\Data. Each user runs the Notes setup and it creates the files they need. When you do an upgrade, you just run setup the same as you would for a single-user install and you're done.

Getting a multi-user install to work on WTS the first time does take some effort. It also requires some manual tweaking, which I discovered after I ran the install, double-clicked the icon and nothing happened. Well the splash screen popped up, then went away, so I guess something happened. I went digging on Notes.Net and found this post by Christopher E. Stevens, which describes how to make it work. The instructions provided were for Notes 6.0 and Windows 2000, but I'm working with Windows Server 2003 and the steps are slightly different so I'll document them here.

The following instructions assume you used all the default paths for installing Windows and Notes. If you changed any of those, adjust them accordingly below.

Install Notes.
  1. Insert the Notes client CD and select the option to Install Notes 7.01. It must be the regular Notes client CD, the CD that has Designer and Administrator on it will not work. I don't know if the download from Passport Advantage will work or not, I ordered the CD to get the InstallShield Tuner so I just used it.
  2. The regular WTS software installation dialog will pop up in the background, ignore it for now.
  3. Treat this as a regular install until you get to the prompt asking whether this is for the current user or all users. Select all users, then continue through a regular install.
  4. When finished close the WTS software installation dialogs.
  5. Do not launch Notes yet!
Create the base notes.ini
  1. Open C:\Windows\notes.ini in Notepad.
  2. Select everything in the file and delete it.
  3. Paste in the following:
    SharedDataDirectory=C:\Documents and Settings\All Users\Application Data\Lotus\Notes\Data\Shared
  4. Save and close the file.
  5. Move (not copy) the file you just edited to C:\Documents and Settings\All Users\Application Data\Lotus\Notes\Data. It is critical that there not be a copy of notes.ini in your C:\Windows directory so be sure to double-check that it's gone before proceeding.
Edit the Registry
  1. Open the Registry editor and navigate to HKLM\Software\Lotus\Notes.
  2. Double-click the DataPath key and delete its value.
  3. Double-click the Multiuser key and change its value from 0 to 1
  4. Navigate down to HKLM\Software\Lotus\Notes\7.0
  5. Repeat steps 2 and 3. Take care not to delete the actual DataPath keys, just their values. Also note these are under the HKEY_LOCAL_MACHINE hive. You will find similar keys in HKCU, so be sure you are changing the appropriate ones.
That's the end of the first part of this tutorial, which gets you to the point you can start adding users. The next step is to figure out how to automate the process of moving users from a regular single user install to a multi-user install. I'm working on that one myself and will post a follow-up when I have it documented.

I would like to thank Christopher E. Stevens for the Notes.Net posting I reference above. Without that I would still be scratching my head.


Wednesday, September 20, 2006

done with the bickering

Debate is a healthy part of any relationship. I have participated in a number of debates brewing in the Domino blogosphere:

  • Websphere vs. Domino
  • Workplace vs. Notes
  • Java vs. LotusScript
These are internally focused within the community and the debates generate a lot of good input from all sides. It is generally a healthy discussion that is passionate but not heated and even though it doesn't necessarily resolve anything, it is good to see.

However, some people use the platform of debate as a platform for attacking. Even more ridiculously, many of these same people formed the basis of their attack from second-hand information rather than personal experience. A common tactic of this group is to use convenient half-truths and hypocrisy to land their blows. In surveying the Microsoft blogosphere I can't find anyone who routinely attacks IBM, Lotus, Notes or Domino. By contrast I read a number of Notes and Domino blogs that have at least one article a month bashing Microsoft or Exchange.

For example, a Google search on Ed Brill's blog shows 3660 posts containing "Lotus OR Domino". The same search of his site for "Microsoft OR Exchange" returns 3640 results. Granted this does include both main topics as well as responses, but it is still pretty incredible that it is as close as it is. I read blogs of IBM'ers to get more information on what Domino can do for me but this shows I'm hearing about Microsoft and Exchange as often as I am Lotus or Domino.

Ed isn't alone in his bashing of Microsoft and I don't mean to single him out, he's just the most visible. I could name half a dozen more bloggers of note in the Domino arena who routinely attack Microsoft. Interestingly enough, I can't find anyone associated with Microsoft who ever does the same with regards to Notes or Domino.

Peter de Haas does write about IBM fairly frequently, but his postings are more about integration pieces between Microsoft products and Notes and Domino, with very few focused on competitive situations and he rarely says anything negative about Domino. Alan Lepofsky is one of the few Domino bloggers who takes a similar approach. Even when he does tread into the area of criticizing Microsoft, Alan's approach is fair, insightful and based on hands-on experience.

I think I'm writing all this because I'm disappointed. I have been hoping that the Domino blogosphere would at least reduce the attacks to focus on Hannover and Domino Next. With Exchange 2007 and Vista coming closer to release, though, it seems that the Domino community would rather pull Microsoft down than focus on keeping IBM on track. We've been letting IBM slide with little in the way of substantive updates for a very long time. If you aren't outraged you haven't been paying attention.

Does anyone want to take the high road with me?

Monday, September 18, 2006

Migrating Windows XP 64 to a new drive

Due to budget constraints when I built my new computer I used the old 60GB EIDE drive I had. Recently I upgraded to a new 320GB Seagate ST3320620AS SATA2 drive. This is pretty state of the art and uses perpendicular storage technology. Previously whenever I have done anything like this I just reinstalled OS and all the software, then migrated over all the data. The last time it took me a few days to get everything working properly but I decided that since this was a newly built PC I could save myself some time and frustration by just moving everything from the old drive to the new one. I've never done this on a home computer before, or on a 64-bit OS, and it proved to be more difficult than I would have thought.

I use Ghost all the time at work, so I brought home some Ghost floppy disks. Then I realized I don't have a floppy drive in my case. No problem, I thought, I'll just open the case and connect a floppy drive to the motherboard. After rounding up the drive and cable and cracking open the case I realized my power supply doesn't even have a floppy drive power connector! Okay, so I'll go old school and boot from a CD, do a diskcopy, then update the partition tables. I couldn't get Nero 7 Ultra Edition to include extra files on a bootable CD, so no joy there. Many CD coasters, numerous software downloads and lots of Google searching later I stumbled across Acronis True Image Home.

I installed the 15 day trial version of True Image Home and ran the drive migration wizard. It was simply a matter of selecting my old drive, selecting the new one, and clicking OK. It automatically adjusted the boot partition on the new drive to take up the entire newer drive but you can do manual adjustments if you choose. You can also choose what you want it to do with the old drive. You can leave it alone, which is what I did, or have it repartition it for you.

After going through the wizard the computer rebooted, displayed the Windows XP boot screen, then started the migration in a strange CLI-looking window
. I wandered off and about half an hour later when I came back the computer was shut down. I tried turning it on and it would just shut back off. Before I started I wondered what would happen since my EIDE drive still thought it was the boot drive and now the new SATA drive also had the same idea. With the computer off I opened the case, disconnected the old EIDE drive, started the computer and it booted from the SATA drive!

I'm one of those bad, bad people who don't do backups of my home computer so I don't have a need for Acronis True Image Home. If I did do backups, though, this is the product I would use. I do highly recommend it for doing migrations. It was incredibly simple considering everything else I tried. It all runs directly from the hard drive so you don't have to worry about making floppies or burning CD's, and other than the boot drive confusion it was pretty much idiot proof.

I also highly recommend the Seagate ST3320620AS drive. Be aware that it comes set up for SATA1 by default and you have to remove a tiny and difficult to reach jumper to enable SATA2. This is shown on a sticker on the top of the drive, but looking at the label is akin to reading instructions and who does that? The drive is amazingly fast and is the quietest drive I've ever worked with. Even running a defrag it's barely audible. I chose the Antec Aria case because is is extremely quiet and now that my hard drive is nearly silent I'm a very happy camper.

[Note that Acronis also offers Migrate Easy. Be aware that it does not support XP64. If you install Migrate Easy on a 32-bit OS it you can create a bootable CD, but you cannot do a disk to disk migration using the trial version's bootable CD. The full version does support that, and will allow you to migrate XP 64. Since I didn't have a 32-bit OS to install on I used the trial version of True Image Home instead.]

Friday, September 15, 2006

For all the code monkeys out there

I'm a proud code monkey, and my friend Adam recently turned me on to an awesome song called Code Monkey by Jonathan Coulton. It's released under the Creative Commons license but if you like it please toss the guy $1 through his donation link.

Thursday, September 14, 2006

Technorati frustrations

Ed Brill posted recently about his blog taking a while to update in Technorati. I just checked, and the last Show-n-Tell Thursday entry Technorati shows for me was on Thursday, August 23rd. I posted a new SNTT entry this past Tuesday, September 12th, and pinged Technorati of the update. It's still not shown, but other postings from as recently as an hour ago are. I will continue to use Technorati tags but this doesn't lessen my frustrations over their seemingly haphazard method of polling for updates.

Tuesday, September 12, 2006

SNTT - Letting a user reorder documents from a listbox

I've been working on a project tracker to help me get organized. It's got a lot of nifty bells and whistles, but one thing that was critical was giving my boss the ability to easily reprioritize projects. Getting this implemented proved to be a bit of a challenge so I thought I would share the technique.

The idea I came up with was to provide a dialog that shows all the projects with a priority assigned. The user can select a project, then click an up button to increase the project's priority, or a down arrow to decrease the priority. There are a few caveats to getting this to work:
  1. Setting the default value on a listbox requires computing the default value from a field.
  2. Since you are changing the information you want to put on the underlying documents you have to be careful that you give yourself some way to relate the new information to the existing documents
Here is the dialog the user sees:

The numbers are the project priorities and the text is the project title. The up and down arrows are used to move things around. Here's what the design looks like:

[Sidebar: Lotus Notes cannot produce a graphical button. The up and down arrow buttons were created in VB5 then copied out of a print screen and pasted in. The code referenced below is in the default hotspot on each picture.]

  • Projects - Text, multivalue, computed, Default Value is @ThisValue
  • ProjectUNIDS - Text, multivalue, computed, Default Value is @ThisValue
  • SelectedProject - Text, computed, Default Value is @ThisValue
  • lstProjects - Listbox, editable, use formula for choices, formula is Projects. Default Value is SelectedProject.
The Projects field contains all the project priorities and their titles. The ProjectUNIDs field contains all the UNIDs for the Project documents, which is how I address the second caveat above. To put this together I create the Project Priority document in LotusScript, populate the Projects, ProjectUNIDs and SelectedProject fields in code, then display the document using the NotesUIWorkspace.DialogBox method. Here is the code I use to display the dialog:
Sub Click(Source As Button)
Dim nUIWS As NotesUIWorkspace
Dim nSession As NotesSession
Dim nDB As NotesDatabase
Dim nVW As NotesView
Dim nDC As NotesDocumentCollection
Dim nDoc As NotesDocument

Dim sProjects As String
Dim sUNIDs As String

Set nSession = New NotesSession
Set nDB = nSession.CurrentDatabase
Set nVW = nDB.GetView("(Projects)")

Set nDoc = nVW.GetFirstDocument
Do Until nDoc Is Nothing
sProjects = sProjects & "~" & nDoc.ColumnValues(0) & " - " & nDoc.ColumnValues(1)
sUNIDs = sUNIDs & "~" & nDoc.ColumnValues(2)
Set nDoc = nVW.GetNextDocument(nDoc)
sProjects = Mid$(sProjects, 2)
sUNIDs = Mid$(sUNIDs, 2)

Set nDoc = nDB.CreateDocument
Call nDoc.ReplaceItemValue("Form", "(Prioritize Projects)")
Call nDoc.ReplaceItemValue("Projects", Split(sProjects, "~"))
Call nDoc.ReplaceItemValue("ProjectUNIDs", Split(sUNIDs, "~"))
Call nDoc.ReplaceItemValue("SelectedProject", nDoc.Projects(0))

Set nUIWS = New NotesUIWorkspace
If nUIWS.DialogBox("(Prioritize Projects)", True, True, False, False, False, False, "Prioritize Projects", nDoc, True, False, True) Then
The remainder of the code deals with reordering the priorities and may be discussed later if readers want to see it. It is beyond the scope of this posting, but I don't mind sharing so ask if you would like to see that, too.

To Move an item up or down we have to do a few things:
  1. Get the currently selected element and extract its priority
  2. Get the next or previous element and extract its priority
  3. Swap the two priorities
  4. Swap the UNID's so you can apply the priorities to the correct documents
  5. Re-select the item with the new priority
Here is the code for the Up button:

selproject := lstProjects;
@If(selproject = "";@Return("");"");

index := @Member(selproject;Projects);
@If(index = 1;@Return("");"");

selpriority := @TextToNumber(@Left(selproject; "-"));
prevproject := Projects[index - 1];

FIELD Projects := @Replace(Projects;selproject; @Text(selpriority - 1) + " - " + @Trim(@Right(selproject;"-")));
FIELD Projects := @Replace(Projects;prevproject; @Text(selpriority) + " - " + @Trim(@Right(prevproject;"-")));
FIELD Projects := @Sort(Projects);

selunid := ProjectUNIDs[index];
prevunid := ProjectUNIDs[index - 1];
FIELD ProjectUNIDs := @Replace(ProjectUNIDs;prevunid; "¥" + selunid);
FIELD ProjectUNIDs := @Replace(ProjectUNIDs;selunid; prevunid);
FIELD ProjectUNIDs := @Replace(ProjectUNIDs; "¥" + selunid; selunid);


FIELD SelectedProject := @Text(selpriority - 1) + " - " + @Trim(@Right(selproject;"-"));
FIELD lstProjects := SelectedProject;

And for the down button:

selproject := lstProjects;
@If(selproject = "";@Return("");"");

index := @Member(selproject;Projects);
@If(index = @Count(Projects);@Return("");"");

selpriority := @TextToNumber(@Left(selproject; "-"));

FIELD Projects := @Replace(Projects;selproject; @Text(selpriority + 1) + " - " + @Trim(@Right(selproject;"-")));
FIELD Projects := @Replace(Projects;Projects[index + 1]; @Text(selpriority) + " - " + @Trim(@Right(Projects[index + 1];"-")));
FIELD Projects := @Sort(Projects);

selunid := ProjectUNIDs[index];
nextunid := ProjectUNIDs[index + 1];
FIELD ProjectUNIDs := @Replace(ProjectUNIDs;nextunid; "¥" + selunid);
FIELD ProjectUNIDs := @Replace(ProjectUNIDs;selunid; nextunid);
FIELD ProjectUNIDs := @Replace(ProjectUNIDs; "¥" + selunid; selunid);


FIELD SelectedProject := @Text(selpriority +1) + " - " + @Trim(@Right(selproject;"-"));
FIELD lstProjects := SelectedProject;

And that's really all there is to it. Once you click OK control returns to the LotusScript action button, which then steps through the UNID's and applyies the new priorities to the documents. Hopefully you can see how simple it is to reorder items in a listbox and how this can be applied to allow documents to be reordered.

All code was converted to HTML using the ls2html routine,
provided by Julian Robichaux at


Monday, September 11, 2006

My first Windows XP 64-bit computer

I've always built my own computers, and in 2001 I put together an Athlon 1.1Ghz machine on an FIC AD11 motherboard. I put in a geForce 4 TI-4400 256MB video card and 512MB ECC PC2100 RAM. It has served me very well for the past five years. However I need more memory but can't find compatible modules, the fan on the video card died a few months ago and can't be replaced, and the 400W power supply is extremely loud and getting on my nerves. I also need a DVD drive but my current case is out of 5.25" bays. So I decided it was time to upgrade. This time I considered some pre-built computers, but to get the features I wanted was going to cost me over $1,200 and still not be exactly what I wanted:

Must haves:
  • Quiet
  • PCI-E 16X
  • DDR2 support
  • DVD±RW
  • Upgradeable
Nice to haves:
  • Small form factor
  • Built-in card reader
  • LightScribe DVD
  • 64-bit
  • Stylish
Based on that criteria, here's the component list I selected. I got all this for about $550:
  • Antec Aria case
  • Asus M2NPV-VM motherboard
  • Sony DWQ-120A 16X Super All-Write DVD±RW
  • AMD Athlon 64 3500+ (Orleans)
  • 2GB DDR2-533 RAM
  • Windows XP Professional 64-bit
That's everything on my wish list except the LightScribe, which I honestly forgot about when I was selecting the components. I'm not sorry I got the Sony, it works perfectly and is fast and quiet. Whenever I decide that writing on my CD's and DVD's with a Sharpie isn't good enough I'll spend $40 on a new drive. Many small form factor cases, such as nearly everything by Shuttle, are not very upgradeable. You're stuck with the motherboard that comes in the case. The Antec Aria supports any micro-ATX board, so you can put whatever you want in it.

The Asus M2NPV-VM has 4 SATA2 ports, the most I found on any micro-ATX motherboard, and has pretty much everything built in: geForce graphics, gigabit Ethernet, 7.1 audio, support for up to DDR2-800, and support for Athlon FX2 CPU's. I started out mid-level and now I have a lot of headroom to upgrade into.

I purchased everything here except the Antec Aria case from They have fair prices, an excellent selection, and are extremely easy to do business with. I have been ordering from them for years and never had any problems. The Aria is an older case and relatively hard to find. I got mine from eBay for about $60, not including shipping.

Friday, September 01, 2006


While I'm getting started with DXL, I wanted to see if I could start a discussion about where DXL ends and CSS begins. I understand that DXL can do a lot more than just update design elements, but shouldn't style be the purview of CSS? Jeff Eisen recently blogged about changing UI elements in Hannover with CSS. Mary Beth Raven picked this up and gave a little more information about how themes might be implemented in Hannover.

So what do you think? Is DXL really viable long-term for UI updating, or should we hold out for CSS? I'll still continue with my DXL UI Skinner, since it will apply to R7 and ND6/6.5, but I would be interested to see if anyone has insight or even an opinion on where this is headed.

about that DXL UI Skinner

A while back I posted a list of side projects I was working on. Well, none of them have really progressed much since that time. With a three day weekend upon me I decided it might be time to fire things up. So I'm gonna start working on that DXL UI Skinner, and I'll be blogging about my progress over the weekend.

It would be remiss of me if I did not mention the influence of two luminaries in the Domino blogosphere. First up is Rocky Oliver. His Lotusphere 2006 presentation and the accompanying sample database are what started me thinking about DXL. I also want to thank Ben Poole, who made me aware of his Simple DXL processing sample.

With all this work already done this should be a piece of cake! :-)

P.S. As I was collecting all the links for this post I came across another reference from Ben Poole. This concept has some legs, so I'm even more stoked about getting to work on it. Some of the comments have me a little concerned, but I'll do what I can.