Installing and Configuring Domino 10.1 on CentOS 7

Category IBM Domino CentOS Linux Admin Articles Technical

Just in time for Engage!

Although sadly I won't be there

Since the official release of IBM Domino 10.0.1, I have been "chomping at the bit" wanting to release a set of instructions on how to install it on a Linux machine.

Domino 10 is by far the easiest and most hassle-free version I have ever installed on a Linux machine.

I have written an instructional document entitled Installing and Configuring Domino 10.0.1 on CentOS 7 Enterprise Linux. I hope it helps alleviate some of the fear and confusion with regards to using Linux as your Domino server platform. The document is aimed at YellowHeads (having some experience with Domino installations on Windows) who are thinking about stepping into the world of Linux. Even though it is aimed specifically at CentOS 7, the instructions should work for any RHEL or Debian-based (with some changes to handle DEB vs. RPM) linux version -although I must point out that the only supported Linux distributions are RHEL 7 and SLES 12.

Hope this helps!



Installing and Configuring IBM Domino 9 Social Edition on CentOS 6 Enterprise Linux

QuickImage Category IBM Domino CentOS Linux Admin Articles Technical Show-n-Tell Thursday

I realize it is been a while since I posted, I'm hoping this blast of content will make up for my absence.

Since the official release of IBM Notes and Domino 9.0 Social Edition a few weeks ago, I have been "chomping at the bit" wanting to release a set of instructions / videos on how to install it on a Linux machine.

During the beta program I had the opportunity to "play" with it quite a bit, and let me tell you this release is exceptionally good. It is also by far the easiest and most hassle-free version I have ever installed on a Linux machine -but there are still a few gotchas and watch-outs to be wary of.

I have written an instructional document entitled Installing and Configuring IBM Domino 9 Social Edition on CentOS 6 Enterprise Linux. I hope it helps alleviate some of the fear and confusion with regards to using Linux as your Domino server platform. The document is aimed at YellowHeads (having some experience with Domino installations on Windows) who are thinking about stepping into the world of Linux. The document is focused on 64 bit Linux, but calls out differences from 32 bit installations where necessary. Even though it is aimed specifically at CentOS 6, the instructions should work for any RHEL or Debian-based (with some changes to handle DEB vs. RPM) linux version -although I must point out that the only supported Linux distributions are RHEL 6 and SUSE 11.

I have also cut a series of 9 videos wherein I walk through the instructions step-by step and demonstrate how easy it really is to perform the installation. They are available on my YouTube channel, although I'm hoping I can talk David Leedy into including them on Notes In 9.

Hope this helps!



Disk Inventory X

Category Technical Tools Reviews Mac

Ok, here is a real quick review

I have been using Disk Inventory X for about 6 months now, and I couldn't imagine not having it in my tool kit.

If you are a Mac user and do anything more complicated or technical than surf facebook, then you should go get this tool.

I don't always recommend a product, but when I do you should pay attention

Hope this helps!



Learning XPages: A little bit of scope...

QuickImage Category XPages Scope Lotus Technical Serialization

I have publised a new blogpost on Learning XPages. It is A little bit of scope will never. Never, ever, ever erase, and is my attempt to explain some scope and serialization issues.




Curses! Foiled again!

QuickImage Category Bitching Technical Announcements Lotus XPages

Well yesterday's announcement has turned out to be a bit of a flop. It seems that my new blog site is not yet accessible.

"We are aware of the issue and hope to have it resolved promptly."

Sigh. I'll post again once it is online. Thanks for your patience.



Movement on the Nested Subforms Front

QuickImage Category Announcements Lotus Technical

A while back I bitched about how Using Nested Subforms can Crash Designer and my frustrations about IBM not bothering to do anything about it.

I'm happy to announce that this is no longer the case. A PMR has been opened, and while there isn't yet a solution, IBM has some top men working on it right now. I'm feeling much better about Big Blue.

Now I need to come up with something else for ASK101: Ask the Developers.


*Special thanks to Dan O'Connor, David Brown, and Amod Deshpande!


Using Nested Subforms can Crash Designer

QuickImage Category Bitching Lotus Technical

While trying to help me figure out a PIA problem with DDE yesterday, one of my co-workers found this on IBM's site: IBM LO58909.

Yes, you read it correctly. Using nested subforms can crash DDE. Wow. I don't know about you, but to me, this is a big deal. If you think it is a big deal to IBM, and that perhaps they have top men working on it right now, you are sadly mistaken:

Problem conclusion
A programming error was found but will not be corrected. It will be a permanent restriction.

Very interesting. This isn't a big enough deal for IBM to bother fixing. It is their product after all, and they do have limited resources. If they're not going to fix this bug then there must be a simple work around, right? Wrong again:

Local Fix
Do not use nested subforms.


Whaaaat? They can't be serious, can they? Do not use nested subforms.
Wow.......I am just....stunned.

Perhaps I'm wrong. Perhaps this just isn't that big of a deal. Perhaps I'm just overreacting. Perhaps I'm the only developer out there who uses nested subforms on a regular basis. Perhaps using this technique is a newbie mistake. I've only been a Notes developer for 16 years -weaning myself from nested subforms must be something that just comes with experience.

Effectively ceasing all maintenance development on thousands of production applications can't be that big of a deal, right?


    For those of you who do use nested subforms, I offer the following options:

  1. Freeze the design of all your existing applications. Do not use nested subforms for all future development. Tell your users that their existing applications must remain as they are, and that no future enhancements will occur. Your users will probably complain, but who cares what users want?
  2. Migrate everything to XPages. XPages rock and are awesome! Everything else ever created sucks and should be replaced anyway. Start planning your migration now. Your users will love the new UI, and I will appreciate your consulting dollars. --Seriously though: if you are considering migrating to XPages then do yourself a favor and find out how we can help.
  3. Do not use nested subforms. This means changing your current development patterns, re-working all templates for future development, and completely re-developing any existing applications you have. I realize this is not going to be popular and may cost hundreds of thousands of dollars, but it is the IBM recommended Local Fix.
  4. Use computed subforms. Yes this is a PIA and involves very similar effort to the previous option, but it avoids a complete re-design of pretty much every form and subform in your arsenal. Instead of actually embedding the nested subform(s), use a computed subform formula. The up side of this is that DDE won't crash. The down side is that your application will now run slower than before, but who cares about performance?
  5. Downgrade to an older version of DDE. I do almost all of my development in VMs, and very rarely need to "bust out DDE" on my main work environment. So I can use the latest / greatest Notes Client for my non-development work, and then fire up a VM with version of Notes installed appropriate for that development engagement. This allows me to effectively support any client who might still be using older (even really older) versions of Notes. Replication and design refresh still work just fine. The only real down side with this solution is the licensing costs for the various clients and OS installations for all of the VMs. This solution -while not optimum, will work. Unless of course you want to work on an NSF that uses both XPages and Nested Subforms. In that case you're screwed.



Why XPINC sucks

QuickImage Category Bitching Technical Lotus XPages

Wherein I explain what IBM needs to do to make XPINC live up to it's potential

Read this before you go any further. I'll wait.....

Now allow me to make one thing perfectly clear:

thick clients are not going away.

There has been a whole lot of fuss over the last 18 months about "social", "cloud" and "web based" solutions. XPages technology (which is extremely powerful and cool) seems to have been caught up with a lot of this hyperbole, which is a shame because it generates an unhelpful association with these other things.

XPages are web based -but only because CSS, JavaScript, HTML, and other required client delivery and presentation technologies are bundled and integrated into web browsers. The server is like a honey badger; very badass and doesn't care about the client. It processes GET, PUT, and POST requests -nothing more. I'm not trying to minimize the awesome power of XPages here, the processing stuff that goes on and the things you can do are absolutely incredible. But with regard to communication with the client it is an HTTP processing server -period.

Getting back to my point about thick clients, they are going to be around for a long time. The primary reason for this is the same reason they evolved in the first place -local data access. The pro thin client, pro cloud marketing crowd just don't seem to grasp that "always connected" is a myth. There are a bunch of other ancillary reasons for the thick client to stay around (security, encryption, processing speed, etc), but the most important one is local data access.

When the wire breaks or the cloud goes away, people still need to get things done.

Which brings us to XPINC. A critically important business need for running XPages in the Notes Client seems to have been forgotten: getting work done -even when disconnected. Accessing an XPages application on a Domino server somewhere from your Notes Client is fine and dandy, but what about when you don't have access to the server? The Notes Client has it's own internal XPages server (a GREAT start BTW); but until the Notes Client / Local XPages server combination is fully capable it is really nothing more than a fun playground.

In Sean's blog post (you did read it, right?) he talks about the troubles with opening an XPage from another database. The real crux of the problem isn't so much how you get the data as it is accessing the database itself. There is the rub. We need to be able to define RULES for accessing other databases -how to find it, where to find it, and under what conditions should we even look for it.

Dynamic determination of remote data sources is the single greatest XPINC miss

Until we we can programmatically determine at run-time what data sources to use, and where to find them XPINC will languish in the realm of "could-have-been" computer stuff -a world occupied by the likes of the NeXT computer, OS/2, and Second Life.

I'm not trying to belittle the work done so far. XPINC really has come a long way and is getting better with each release -but it is not good enough yet. I want to encourage IBM to keep pushing, keep making this better; because I really want to use XPINC. My backlog of potential projects waiting for a fully functional, fully featured XPINC implementation is huge. It is large enough to keep me billable for many, many years. But until such an implementation is delivered this backlog will remain nothing more than "potential".

Potential doesn't pay the bills.


Installing Traveler on CentOS 6 - Part V

QuickImage Category Technical Linux Domino Traveler Admin

Part V - Installing Traveler

This is the 5th and final part of my series on installing IBM Lotus Domino and IBM Lotus Traveler on CentOS 6. In this video I walk you through the actual installation of IBM Lotus Traveler on your previously configured IBM Lotus Domino Server running on CentOS 6 Linux.

The installation and testing is so simple that this video really is sort of an anticlimactic finish to this series. The point being that with regard to installing Traveler, IBM has done it right and made something that jfw.



Installing Traveler on CentOS 6 - Part IV

QuickImage Category Show-n-Tell Thursday Technical Linux Domino Traveler Admin

Part IV - Post Installation Configuration and Troubleshooting

This is Part IV in my series on installing IBM Lotus Domino and IBM Lotus Traveler on CentOS 6.

In this set of videos I cover initial configuration and troubleshoot a couple of issues with the Domino on Linux installation. Topics include:

  • Post Installation (Initial) Configuration of the Domino Server
  • Gnome Desktop Launcher Icon
  • Starting the Domino server for the first time
  • Correcting the File Handles Issue
  • Using gedit (the Linux Graphical text Editor)
  • Troubleshooting Linux Bindsock SMTP Port 25 issues
  • Accessing your Domino HTTP server using localhost

The next post in this series will cover the actual installation of IBM Lotus Traveler.

Part IV A - Domino Post Installation Configuration

Part IV B - Correcting the File Handles Issue

Part IV C - Troubleshooting Bindsock Port 25 Conflicts


Installing Traveler on CentOS 6 - Part III

QuickImage Category Linux Domino Traveler Technical

Part III - Installing Domino

This is Part III of my series on installing IBM Lotus Domino and IBM Lotus Traveler on CentOS 6. In this video I walk you through the actual installation of your Domino Server software.

The next post in this series will cover post-installtion Domino Server configuration.


Installing Traveler on CentOS 6 - Part II

QuickImage Category Linux Domino Traveler Technical

Part II - Preparing for Domino

This is the second chapter of my series on installing installing IBM Lotus Domino and IBM Lotus Traveler on CentOS 6.

In this set of videos I go over steps necessary to prepare your CentOS 6 machine for installing IBM Lotus Domino. Topics include:

  • Creating the installation and operation directories
  • Use of the tar command to inspect and extract archive content
  • User Accounts and Context
  • Group and User creation
  • Changing Passwords
  • Switching between user accounts

The next post in this series will cover the actual installation of IBM Lotus Domino 8.5.2.

Part IIA - Preparing for Domino

Part IIB - Preparing for Domino

Part IIC - Preparing for Domino

Part IID - Preparing for Domino


Using undocumented properties / methods / @Functions in Lotus Notes and Domino

QuickImage Category Technical Lotus

There are a ton of undocumented - aka "unsupported" tools available for the Notes / Domino developer. Some of these do some very useful things. Most of this functionality can be reproduced using documented (and therefore supported) methods, but not without some hard work.

The advantage of using these undocumented features is that the code is already written and usually works fine. The disadvantage is that the behavior of these features can change or be somewhat unpredictable. It is a tradeoff -stability and support vs. ease of development.

I personally never use undocumented features; but sometimes the temptation to do so is very difficult to resist. I'm curious. Do you use undocumented properties / methods / @Formula?

Read more for a list of undocumented properties / methods / @Formula that I've gleaned (references sites listed below) from around the intertubes. If you have one that is not on the list (or need to correct something) please let me know.



Coach Outlet now blocked

QuickImage Category Comment Spam Fun Technical

Hmmm. looks like some asshole has been busy comment spamming my site, and a few other yellow bleeders as well.

IP Address:


What to do when you're screwed

Category Fun Technical

So I was working on a project (can't give the details) today, and ran into a weird problem with NotesDatabase.UnprocessedDocuments. Specifically with regard to processing the selected documents in a view, when said view is embedded in a page.

After figuratively banging my head against the wall trying to noggin up a solution, I remembered we recently hired some dude who supposedly knows a few things about Lotus Notes and Domino. So I gave him a ping, to see if he really did in fact have any clue.

I'm happy to say that not only did he come up with a solution (sorry, it is covered by NDA so I can't tell you what it is, but trust me -it is both elegant and workable), he did so in less time than it has taken me to type this blog entry.

Thanks Chris! Glad you're on board.


New for 8.5.2: Lotus Notes Preloader

Category Technical Lotus LS 2008

Ok I admit it, I'm a bit behind the 8.5.2 Gold Release Bandwagon. I've played about a bit with the DP releases (and kept my mouth shut like I'm supposed to); but I haven't actually had the chance to install / play with the Gold release until this morning.

Somebody finally gets it!

Something really cool about this release is the Lotus Notes Preloader, and the fact that during install you are asked whether or not you want to Launch parts of Notes when the operating system starts to enable faster Notes startup.

Many other applications / tools / suites have, for years now, preloaded portions of themselves into memory at OS startup in order to allow themselves to launch quickly when the user needs them. The fact that IBM is just now doing this for Notes is very cool -but is in itself not really (at least IMHO) that big of a deal.

In case you missed it, allow me to point out the very important thing:


Simple fix for Slow running M6400 Precision Workstation

Category Technical

My primary machine I use for development is a Dell Precision M6400 Workstation, with a QX9300 Quad Core processor, 8Gig of RAM, dual 7200 RPM HDDs, and a 1920 x 1200 RGB LED display. This setup allows me to run multiple VMs within which I have setup various Domino Server and Notes Designer client environments. Doing things this way allows me to have "clean" setups for different projects -I can change from Notes Client 7 LotusScript development to banging out some Java in the latest Eclipse Designer Beta and go back to a knock out some @Formula in R5 (for old customers who refuse to migrate) with nothing more than a mouse click alt-Tab combination. This machine is an absolute monster. All this power does come with a thorn -my battery life is a joke. 45 - 55 minutes max is all I get out of a (high end 9 cell) battery. This machine is a power vampire.

It also tends to run a bit warm. However lately it has began to run excessively hot, so I called Dell and they sent out a technician yesterday to replace the main system board, processor, both side boards, heat sinks, and cooling fan. I brought the laptop upstairs for him to work on (I don't like letting strangers into my office), and provided him with a portable Dell 90 watt power supply to use. After swapping out the hardware, he did a quick "does a browser work" test and called it good. I noted that my VMs wouldn't start up, but figured (correctly) that the problem was due to needing to flash the BIOS & change some settings.

Image Expected
Core 1
Core 2
Core 3
Core 4
Speed 2.53 GHz 1.23 GHz 1.23 GHz 1.23 GHz 1.23 GHz
System Bus 1066 MHz 824 MHz 824 MHz 824 MHz 824 MHz

After he left, I noticed that my Windows Experience Index needed to be updated, so I ran that. Much to my horror my processor & memory indices were now showing 4.1 (previously 7.2) out of 7.9. I downloaded and installed the Intel® Processor Identification Utility. Running the utility revealed that my bad-boy QX9300 2.53 GHz Quad Core, 1066MHz FSB, 12 MB L2 Cache processor was running at 1.23 GHz. This didn't really concern me that much, as the processor is designed to automatically adjust it's speed based on workload. What really concerned me was the fact that my bus speed was 824MHz, just under 80% of what it was supposed to be. The FSB speed also effects memory access, which means that my entire system was now pig-slow compared to what it was supposed to be.

You could say I was a bit put out, but that would be a bit of an understatement. I was significantly more than that. I was livid. I knew it was too late to call Dell back (24x7 support is only true for "consumer level" issues -this was way beyond that). The support group I needed to speak with wouldn't be back in until 8AM EDT. So I shut the laptop down and carried it back downstairs to my office where I hooked it back into my "normal" work environment (external keyboard, mouse & speakers, 210 watt power supply, additional HD monitor, etc).

At precisely 8:01am this morning I called Dell support. While wading through the myriad of automated phone questions (Turing Test: machines don't loose their temper and scream at automated systems) I decided to run the test again so I would have the numbers in front of me when a human finally came on the line.

Image Expected
Core 1
Core 2
Core 3
Core 4
Speed 2.53 GHz 2.51 GHz 2.51 GHz 2.51 GHz 2.51 GHz
System Bus 1066 MHz 1065 MHz 1065 MHz 1065 MHz 1065 MHz

To my absolute amazement, my machine was now running the way it should be. 2.51Ghz per core, with a 1065MHz FSB speed. Now this was much more like what it should be. I hung up the phone before I embarrassed myself, and began noodling this conundrum. What had changed between last night's frozen molasses and this morning's greased lightning? I hadn't installed or updated anything, no additional software was running, all VMs were shut down. I thought perhaps the network cable (vs. last evening's wireless) and tested that, but nothing. Quite the puzzler.

Eventually I figured out what you've already guessed (assuming you've paid attention to the clues I've given).


Control Break on M6400 Precision

QuickImage Category Technical

Those of you using a Dell Precision Workstation and needing to hit CTRL BREAK to stop an action may have noticed that there is no BREAK key labeled on the keyboard. The correct key combination is:

CTRL + Fn (Function) + F12 (pause)

Hope this helps!


Domino 8.5.1 on OpenSUSE Parts 8.5.1A and 8.5.1B (Domino Setup)

QuickImage Category Show-n-Tell Thursday Technical Lotus Admin Linux

Finally Finished!

It's been a long road getting here, but we're now done (just in time for Lotusphere 2010).

Here's the last set in my series of "how to" videos on Setting up Lotus Domino 8.5.1 on OpenSUSE 11.1 (64 bit) in VirtualBox 3.0.8 on Microsoft Windows 7 (64 bit). These are parts 8.5.1A and 8.5.1B, Domino Setup. This set covers the setup / configuration of the Domino Server. Enjoy!

Part 8.5.1A - Domino Setup

Part 8.5.1B - Domino Setup


Multiple Monitors, Missing Admin or Designer Clients, and notes.ini mojo

QuickImage Category Technical notes.ini Designer Admin Help

One of the nice features about the multiple-client design (first introduced in R5) of Lotus Notes is that each client "remembers" where you last left it. When you close any of the "special" Notes Clients (Admin, Designer, or Help); the next time you launch that client it will appear in the same window location and with the same size that you closed it. This is nice, because it allows you to set up your working environment in a manner best suited to you. However, as with most cool UI things, the Law of Unintended Consequences applies. Now, to be fair, Notes isn't the only application that suffers from this problem -other windows applications have very similar issues. But this post is about Lotus Notes.

If you, like me, use multiple monitors then you've probably set up your Notes environment with different clients on different monitors. My laptop has an absolutely incredible 17" LED display (1920 x 1200), and this is where I normally run my Designer client. I use a secondary 19" wide-screen monitor, and that is where I normally position my normal Notes, Admin, and Help Clients. This works well for me, and helps me to operate at peak efficiency. That is, until I take my laptop elsewhere (such as a client's office, or coffee shop, or whatever). If I launch my Admin or Help client they start just fine, and I can see that they are running by checking the task bar or the task manager, but they are nowhere to be found. They are in fact running, but because of their "remember where I was" feature, they render in a non accessible area of my UI. My Designer client doesn't suffer from this issue because I normally keep it positioned on my laptop monitor.

The culprit (and the fix) can be found in your notes.ini file. It is the XXXXWINDOWSIZEWIN parameter; where XXXX is replaced by ADMIN, HELP, or DESIGN. This parameter specifies the position and size of the particular client:
XXXXWINDOWSIZEWIN= TopLeft_Xpos, TopLeft_Ypos, Pixels_Width, Pixels_Height In windows, the X-Y coordinates are a little but funky. On the primary monitor, 0,0 is the top left pixel. Numbers increase going from top left to bottom right. The X-Y coordinates for additional monitors are controlled by the operating system, and based on the physical positioning of those monitors relative to the primary monitor. When configuring your system for spanning the display across multiple monitors you specify this positional relationship.

In my office my secondary monitor is set up physically above my laptop. This means that it's X-Y coordinates start with 0,0 at the bottom left, with X coords increasing and Y coords decreasing (going negative) going to top right. Which means that for me, the TopLeft_Ypos value for my ADMINWINDOWSIZEWIN and HELPWINDOWSIZEWIN notes.ini parameters will always be a negative number. Your coordinates will depend on how you have your monitors set up. The downside of this is that my Admin and Help clients are rendering in a negative Y coordinate space, which does not exist when I'm only using my laptop display. The solution is simple, if a bit of a hassle.

  1. Close all Notes Clients
  2. Open notes.ini in an editor
  3. Change (or delete) the offending XXXXWINDOWSIZEWIN parameters
  4. Save and close notes.ini
  5. Launch Notes

Yes, it would be nice if Windows could/would auto detect and correct this issue. But until (if ever) this happens, at least this PIA solution will work.



Domino 8.5.1 on OpenSUSE Parts 8A - 8C (Installing Domino)

QuickImage Category Show-n-Tell Thursday Technical Lotus Admin Linux

Welcome to my first SNTT post of 2010. I sincerly hope you all (all three of you) have a great New Year.

Here's the next set in my series of "how to" videos on Setting up Lotus Domino 8.5.1 on OpenSUSE 11.1 (64 bit) in VirtualBox 3.0.8 on Microsoft Windows 7 (64 bit). These are parts 8A - 8C, Installing Domino. This set covers the actual installation of the Domino Server (finally). Enjoy!

Part 8A - Installing Domino

Part 8B - Installing Domino

Part 8C - Installing Domino


Domino 8.5.1 on OpenSUSE Parts 7A - 7D (Preparing for Domino)

QuickImage Category Show-n-Tell Thursday Technical Lotus Admin Linux

Happy SNTT! and Merry Christmas!

Here's the next set in my series of "how to" videos on Setting up Lotus Domino 8.5.1 on OpenSUSE 11.1 (64 bit) in VirtualBox 3.0.8 on Microsoft Windows 7 (64 bit). These are parts 7D - 7D, Preparing for Domino. This set covers the final steps necessary prior to installing the Domino Server. Enjoy!

Part 7A - Preparing for Domino

Part 7B - Preparing for Domino

Part 7C - Preparing for Domino

Part 7D - Preparing for Domino


Domino 8.5.1 on OpenSUSE Parts 6A - 6E (Network Bridge and Shared Folders)

QuickImage Category Show-n-Tell Thursday Technical Lotus Admin Linux

Happy SNTT! Yes, I realize it's only Tuesday, but I'm going to be very busy for the rest of the week, so I figured I'd give you this one a bit early.

Here's the next set in my series of "how to" videos on Setting up Lotus Domino 8.5.1 on OpenSUSE 11.1 (64 bit) in VirtualBox 3.0.8 on Microsoft Windows 7 (64 bit). These are parts 6A - 6E, Network Bridge and Shared Folders. This allows you to connect to your guest OS from outside the guest OS, either from your Host OS or (if you choose to enable it) from another machine entirely. Additionally, I show you how to set up shared folders so your Host OS and Guest OS(es) can quickly and easily share files betwixt them. Enjoy!

Part 6A - Network Bridge and Shared Folders

Part 6B - Network Bridge and Shared Folders

Part 6C - Network Bridge and Shared Folders

Part 6D - Network Bridge and Shared Folders

Part 6E - Network Bridge and Shared Folders


Domino 8.5.1 on OpenSUSE Parts 5A - 5D

QuickImage Category Show-n-Tell Thursday Technical Lotus Admin Linux

Happy SNTT! Here's the next set in my series of "how to" videos on Setting up Lotus Domino 8.5.1 on OpenSUSE 11.1 (64 bit) in VirtualBox 3.0.8 on Microsoft Windows 7 (64 bit). These are parts 5A - 5D, VirtualBox Guest Additions. VirtualBox Guest Additions are installed AFTER installing the Guest O/S -they allow for a nice, clean, tight integration between the Host and Guest O/S. Enjoy!

Part 5A - VirtualBox Guest Additions

Part 5B - VirtualBox Guest Additions

Part 5C - VirtualBox Guest Additions

Part 5D - VirtualBox Guest Additions


Installing Sametime Connect on 64bit Windows 7

Category Technical Lotus
Use setup.exe not setup.msi

Ok gang, here's a quick tip that should save you loads of time. When installing IBM Lotus Sametime Connect on 64bit Windows 7, make sure you launch the correct installer. If your instincts tell you to launch setup.msi, they are lying to you. Don't waste your time. Directly launching setup.msi on 64bit Windows 7 will cause the installer to fail (telling you it was interrupted) halfway through the installation. Use setup.exe instead. Yes, setup.exe will eventually call setup.msi -but it will do so without failing and your installation will succeed.

Trust me, I've been down this road several times.



Domino 8.5.1 on OpenSUSE Parts 4A - 4D

QuickImage Category Show-n-Tell Thursday Technical Lotus Admin Linux

Happy SNTT! Here's the next set in my series of "how to" videos on Setting up Lotus Domino 8.5.1 on OpenSUSE 11.1 (64 bit) in VirtualBox 3.0.8 on Microsoft Windows 7 (64 bit). These are parts 4A - 4D, Installing OpenSUSE. Don't worry, it's not that difficult. I had to break this into 4 parts (A-D) simply because of the YouTube time limit for video segments. Enjoy!

Part 4A - Installing OpenSUSE

Part 4B - Installing OpenSUSE

Part 4C - Installing OpenSUSE

Part 4D - Installing OpenSUSE


Domino 8.5.1 on OpenSUSE Parts 1 - 3

QuickImage Category Show-n-Tell Thursday Technical Lotus Admin

I know it's not Thursday, but yesterday was a National Holiday here in the US, so I'm posting this SNTT topic today instead.

I've started putting together a series of "how to" videos on Setting up Lotus Domino 8.5.1 on OpenSUSE 11.1 (64 bit) in VirtualBox 3.0.8 on Microsoft Windows 7 (64 bit). I'm sure that a lot of those in our Yellow Bubble have no need of this help because they're uber admins; but I figured the developer types (you know who you are) might find these useful. These are the steps that can be followed to get a dev/test server up an running on a laptop.


Part 1 - Introduction

Part 2 - Installing VirtualBox

Part 3 - Configuring the Virtual Machine


Kill All Profile Documents

QuickImage Category Show-n-Tell Thursday Technical LotusScript

Back off monkey-boy, I know it's not Thursday! Consider this a day late SNTT

This morning I found myself once again writing this agent. I've needed it several times in the past, but it was always such a quick one-off type of thing I never bothered throwing it in a reusable library. I posted it here so I can always find it again. I also figured somebody else might find it useful. If you like it, use it. If you don't like it, write your own.

Anyway, here's the code:

Option Public
Option Explicit
Use "enhLogClass"
' * Agent: KillAllProfileDocs
' * @author: Devin S. Olson
' * @created: 06 November 2009
' * @licence: WTFPL Version 2
' **/

Sub Initialize()
' * Purges all documents in the current database.
' **/
Dim nses As New NotesSession
Dim ndb As NotesDatabase
Dim collection As NotesDocumentCollection
Dim profile As NotesDocument
Dim result As Boolean

On Error Goto ErrorTrap

enhLogSetLogStackExceptions True
Set ndb = nses.CurrentDatabase
Set collection = ndb.GetProfileDocCollection()
Set profile = collection.GetFirstDocument()
While Not (profile Is Nothing)
enhLogAction ||, |Preparing to purge Profile Document with UNID: | & profile.UniversalID
enhLogAllDocItems profile
Set profile = collection.GetNextDocument(profile)
Wend ' Not (profile Is Nothing)

enhLogAction ||, |Purging | & Cstr(collection.count) & | Profile Documents|
Call collection.RemoveAll(True)

' success!
result = True

enhLogMethodResult ||, Cstr(result)
Exit Sub
On Error Goto 0
enhLogException ||, ||
result = False
Resume ExitPoint
End Sub ' Initialize



Yet another worthless error dialog

Category WTF Technical Lotus Bitching

<bitch type="driveby" reason="errorDialog" >

Phonegrid error

So I'm working in designer, and changed the properties of a table cell. It previously had a graphic image assigned as the background, which I replaced with a graduated color change. Upon saving, I received this incredibly helpful error message.

Good thing it explained what the problem was and what to do about it, otherwise I might have been confused.




BSOD: It was just a matter of time

Category Technical Bitching
Windows 7 64bit BSOD

All good things must come to an end. My streak of ZERO problems with Windows 7 on my new Dell Precision Workstation is now over. It was good while it lasted though.

Music to reboot by: Astro Zombies by the Misfits.



Michelle Frank NOT NUDE!!

Category Fun YellowDay Lotus Technical

Just in case you missed it, Nathan posted this yesterday

Summary: Nathan demos the latest daily build of Lotus+911's eMediTouch Lotus Notes project.

Regarding the title of this post: The original graphics showed a nude patient. Shortly after the original demo video was posted, some wanker decided it contained inappropriate sexual content and flagged it. This required "over 18" acknowledgement to access the video. Which sucked, because I know people in the medical field who, because of the over 18 flag, could not access the video from work.


LC Connectors Documentation

QuickImage Category Technical Lotus Bitching
Just in case anybody was unaware, the Documentation for LC Connectors sucks. Remember the documentation for NotesFX, and how terrible it was? It is worlds better than that which is available for LC Connectors.

I would be extremely happy if I could find a concise list of properties and methods for the various LC objects. That which is in Designer help is almost (not quite) worthless. Yes, I'm aware of the IBM Redbook. Constantin Florea did an exemplary job in researching ans writing it. However, the book is 8 years old, and the information I'm seeking is not included.


Notes 8 Slow Starting

QuickImage Category Lotus Technical Reviews

@All the claims of 8 taking forever to start: I used to have these problems myself (90+ seconds in some cases).

I can't (yet) give the details or reasons why; but my Notes Client now starts in about 5 seconds, and so will yours. Be patient



My First Web Poll

QuickImage Category Lotus Technical Blogs Fun

It appears the shitstorm from earlier this week has abated. Thankfully I've been so heads down, crazy-ass busy that I've avoided most of it. Although I did get a bit huffy and up on my high horse on facebook the other night. If you are still nursing some hurt feelings or pent up anger just relax a bit. Follow Obama's example and share a beer (or tequila) with the people with whom you've been fighting.

Anyway, I was having loads of fun setting up a new server earlier this morning, and thought I should share. If you look over to the right you'll see a new web poll. This is my first web poll using Blogsphere, I'm trusting Declan entirely on this one.



Something missing from something else

Category Technical Reviews

As many of you are probably aware, I'm using a not-yet-released IDE for development testing, and am running it on Windows 7 RC (64 bit).

So far, I've found it to be much more stable than the previous Gold Release version. As with any "test" version of software, there are some issues, but on the whole this version is shaping up nicely.



QuickImage Category Technical News and Events

Nathan blogged about this the other day. If you haven't taken the time to watch the feature length video, DO IT NOW.

Google Wave = Paradigm shift


Ghostin' the Machine?

QuickImage Category Technical Bitching
Chat ID: <redacted>
Problem : Product Functionality Question

Norton Support: You are being transferred to Norton Support.
Norton Support: Welcome to Norton Support, my name is <redacted> Can I please have a minute to go through the information you have provided?
Devin: yes.
Norton Support: Please don’t follow this now – but just in case we get disconnected for any reason, you can follow these instructions to reconnect to me. You'll need to do this within a couple of minutes of being disconnected:
Can you please make a note of these instructions.
1) Open up Internet Explorer and then go to www.norton.com/connectme
2) Enter the [Connection Code] <redacted>
3) Click on [Submit]

Devin: thank you.
Norton Support: May I confirm that the issue you are encountering is you have some Questions related to the product?
Devin: yes.
Devin: I've never used the Norton Ghost, and wanted to make sure I understand what it is capable of doing prior to purchasing.
Norton Support: Thank you for confirming your details. Please make a note of this case no. <redacted> for your future reference.This case number will include the details of today's chat.
Devin: I've used many other Symantec products though.
Devin: Thank you.
Norton Support: Okay Please Go Ahead with your Question
Devin: I have purchased a new laptop, that came preloaded with Windows Vista (64 bit).
Devin: The laptop has a single 5400 RPM 80Gig drive.
Devin: I would like to replace the Hard Drive with a bigger, faster (320G, 7200 RPM) drive.
Norton Support: Okay
Devin: My hope is that I can use Ghost to take a "picture" of the current hard drive, then remove the drive and replace it with the new drive, and then use Ghost to replace the "picture" on the new drive.
Devin: Is this possible?
Norton Support: Yes It is possible
Norton Support: You can use Ghost 14 to do this
Devin: I have access to a network (Windows 2000) file server upon which I can write the data.
Devin: nice.
Norton Support: Use the Option copy my hard drive to do this
Devin: I guess my biggest question is how do I put the image on the new drive, when I can't boot up (because there is no OS on the machine once I remove the old drive)
Devin: Is there some form of "bootable runtime" with Ghost 14? Or do I have to figure out a different way to boot the machine?
Norton Support: You can copy the hard drive if the computer is working fine
Norton Support: Else you wont be able to do it
Devin: The computer currently works perfectly.
Norton Support: Then You can copy the Hrad drive it will work fine
Devin: I just don't understand how I can push the image to the new drive.
Norton Support: Please install the product on the computer download the user manual from the Help menu there you will have all the instructions and details about how the product works v
Norton Support: It basically copies everything from the old drive including the Operating system
Devin: Does the version that is included in Norton 360 do this, or do I need to purchase Norton Ghost as a standalone product?
Norton Support: No Only Ghost can do this for you
Devin: ok, no problem.
Norton Support: Is there anything else I can assist you with today?
Devin: So once I copy the image from the old drive to the network drive, and than I shut down the machine, and install the new drive, do I boot up to the Norton Ghost CD?
Norton Support: Can I place you on hold, while I check some details for you?
Devin: Yes, absolutely.
Norton Support: Thanks for holding.
Norton Support: The copy cant be taken to a Network drive
Devin: ok.
Devin: hmmm.
Norton Support: You should have a External hard drive to directly copy the content from Souce drive to destination
Devin: where do I write the copy to?
Devin: oh, like a usb drive?
Norton Support: Yes
Devin: (not a thumb drive, but one of those big ones)
Devin: ok.
Norton Support: Its should be a USB drive
Devin: So once I copy it to the external drive, then replace the old hdd with the new hdd, do I then boot up using the Norton Ghost cd?
Norton Support: No if you connect the New drive it will boot on its own
Devin: ?? - but the new drive would be empty. There would be no O/S.
Norton Support: Please read what I have already Typed in
Norton Support: After you make the copy it will boot
Devin: Please, that doesn't make sense to me.
Devin: Here are the steps as I understand them:
Devin: 1) attach USB Drive to machine
Devin: 2) Use Norton Ghost to write image of internal HDD to USB Drive.
Devin: 3) Remove internal HDD and replace with new blank, HDD
Devin: 4) Turn on machine.
Devin: - how does machine boot? Does it boot using the external USB drive?
Norton Support: After you copy the drive its No longer a Blank drive
Norton Support: Its contains Everything the Main drive has
Devin: Wait a minute. Are you really telling me that I should take my new blank INTERNAL laptop HDD, and connect it via USB to my laptop and write the image of my current internal HDD to it?
Norton Support: Yes
Devin: Umm, Is there somebody else I can chat with who understands the difference between external USB and internal SATA?
Norton Support: I can Help you with it
Norton Support: What Do you want to Know
Devin: Ok. I really don't mean to sound rude,
Devin: but it is impossible to connect an internal SATA HDD to an external USB connector. The two interfaces are entirely different.
Norton Support: Can I can you ?
Devin: I can use a third external USB drive as an intermediary to hold the drive image,
Devin: but I don't understand how I can get the image from the USB drive onto the new internal HDD.
Devin: If I can boot to the Norton Ghost CD, and then use Ghost to pull the image from the external USB HDD and write it to the new internal drive, that would be great,
Devin: but from what I'm beginning to suspect, that is not possible.
Devin: Is it?
- - -

It was at that point in the conversation that Norton Support called me on the telephone (listed on my support profile). It took a while to get an answer out of him (theoretically it is possible), but I'm still not entirely certain it will work. Considering I don't have the answer in writing, I'm not sure if it really is possible.

So, do any of my readers (all three of you) know if this will work? It seems that it should, but I really don't want to drop $50 on a "seems" situation.



Javascript isArray(): How to determine if an object is an array

QuickImage Category Show-n-Tell Thursday Technical Javascript SSJS

Javascript is an incredibly powerful language. Much of this power is derived from Javascript's incredible extensibility, and extremely loose (some would say nonexistent) data typing. Variables can be switched from strings to objects to simple types to ...well, whatever you want. Functions can be objects, objects can be functions, variables can be functions, etc. This can turn developers into Djinn, giving us phenomenal cosmic powers; without necessarily being bound to an itty-bitty living space.

All this power does come with a cost though, which is mostly measured in bottles of Excedrin. Sometimes doing things that seem very simple and safe on the surface lead us to forget the Cthuluean Terrors hiding in the darkness below.

Arrays are one of these things. They seem simple; but the potential nastiness they contain can drive you mad.

Rule 1: An array is an object as an enumerated list of variables.

Memorize that. All arrays are objects. All arrays are enumerated lists.... of variables. Variables can be anything (strings, numbers, objects, functions, arrays....).

Rule 2: Javascript Arrays are not Associative.

An Associative Array is a list of variables which is indexed by keys. These keys can be numbers, strings, or other objects. The critical difference here is that a Javascript array is enumerated by number, and an associative array is indexed by anything. Because Javascript is so extensible, and because all Javascript arrays are themselves objects, it is very easy to construct something that appears to be and associative array:


New Poll: As a Lotus Developer, the form of training you would PREFER to use is?

Category Lotus Technical

Sonia Malik created a linked in poll asking what form of training Lotus developers are most likely to use. It is available here: http://polls.linkedin.com/poll-results/33249/ijnxz.

I am more interested in what form of training Lotus developers would prefer to use; so I created my own poll: http://polls.linkedin.com/poll-results/34457/tvwfa.

Comparing the results of the two should prove interesting.



MS Word reports out of disk space when saving a document.

Category Technical Bitching

So I've just completed updating a fairly important document, and I want to save it. No good. MS Word won't save the document, and insists that I've run out of disk space.

Mind you, I'm attempting to save the document to my U:\ drive, which is mapped to my user folder on a network server. Now, I'm not entirely certain of the amount of free space on that folder, but I'm pretty certain it is somewhere around 200 Gig. I figured there must be some wacky network stuff going on, so I decided to save the file to my local C: drive (C:\temp\Working.doc, if you really care about specifics) Also, the MS Word document is a mere 7 pages long.

MS Word, in response to this attempt, refused to save the document. MS Word is insisting that I've run out of space on my C: drive as well. Now, I realize some of you probably think that 15+ Gig of free space might seem a bit meager, but it should be more than enough to save this document.

MS Word &#^)(!! sucks, it is a %%@*# steaming &&$#()$ pile of ^@@)$*( ##^@&$, and should be &%%#* @#$# rabbit food *&%^*( @#$%$ whiteboard %^#$%#^$ $$#$%^&^% @#$%(*76 developers #@@#$%^&%!!!

Whew. Sorry about the rant, but some things just need to be said. BTW, is anybody else frustrated by the slowness, lagging, and occasional freezes of the 8.5 Gold Client?



Export any view to MS Excel

QuickImage Category Announcements Technical Lotus

I've posted another project on OpenNTF. It works in R6 and above. Let me know how you like it.

If you are running R5, we can help.



When Web Services go Bad

Category Technical Fun

Some people might consider this a failure

I like to think of it as having successfully discovered the 32,768th way to not make a light bulb.

If I've piqued your interest, click the image for details. Make special note of the processor load on the bottom right, and the remaining HDD space on the bottom left.

On a (somewhat) related note: I think I am now as much a fan of VirtualBox as Bill is of iSeries. I may not fully grok all the details of virtualization, but this event was corrected by 2 mouse clicks (Machine | Reset). If this had been running on a "real" (non-virtual) box, it would have required physically cycling the power -which is a tad difficult when the machine is not in the same physical location as you are.

On another (somewhat) related note: please allow me to reiterate the importance of remembering the difference between a LotusScript Integer (a signed 2-byte integer with an inclusive range of -32,768 to 32,767), and a Java int (a signed 4-byte integer with an inclusive range of -2,147,483,648 to 2,147,483,647 ). If you're not careful, this difference can allow a WebService to sneak up and bitch-slap your server. Expecting thirty two THOUSAND and getting two BILLION does tend to muck things up.



Public Release: azlw Enhanced Log Version 2.01 Now available

QuickImage Category News and Events Technical Lotus

After completing a significant revamp of my Enhanced Log Class; I have decided to release it to the public under the University of Illinois/NCSA Open Source License. This essentially means you can use it in whatever form you choose (you can even resell it or include it in your code that you resell), as long as you include the appropriate credit. It's pretty simple: just don't be a jerk and claim you wrote the code.

For those of you who are using version 1 (v1.0, v1.01, or v1.0.2), please be aware that METHOD SIGNATURES HAVE CHANGED. This means you can't simply drop this in as an upgrade and expect it to work. I'm sorry for the hassle, but the EnhancedLog object now FULLY extends the NotesLog object; the signature changes were necessary to maintain proper compatibility with the NotesLog object.

At this point, only the LotusScript code is included. Due to the significant method signature changes, the Java code is not yet ready, and is not included in this release. I expect to have it (version 2.0.2) ready soon (before Lotusphere).

As always, it is available in the downloads area.


How I get an Empty NotesDocumentCollection

QuickImage Category Show-n-Tell Thursday Technical

Tomorrow is Thanksgiving here in the US, so I figured I'd post this one a day early. I also posted this as a response to Andre Guirard's Lotus Domino Designer wiki post: Create an empty NotesDocumentCollection. I've reposted it here primarily so that I can format it in a manner more pleasing to my eye. (I'm weird that way). Enjoy:

Public Function getEmptyDocumentCollection(source As NotesDatabase) As NotesDocumentCollection
%REM This function intentionally has NO ERROR TRAPPING. Errors must be handled by the calling code.
' * Creates an empty NotesDocumentCollection from the source database.
' *
' * @param source NotesDatabase from within which to create the empty document collection.
' * @return NotesDocumentCollection containing zero documents.
' */

Dim result As NotesDocumentCollection

Set result = source.GetProfileDocCollection("*INVALID*")
While (result.Count > 0)
Call result.DeleteDocument(result.GetFirstDocument())
Wend ' (result.Count > 0)

Set getEmptyDocumentCollection = result

End Function ' getEmptyDocumentCollection


If Анатолий Евгеньевич Карпов* were a Notes Developer

QuickImage Category Technical

Nathan has had me working on some very cool stuff this week. I can't tell you what it is (yet); but trust me when I say.....wow.

This morning, we (the development team at Lotus+911) have been having a discussion about the potential technologies / capabilities of this stuff, and my head just exploded. The technology is that amazing.

If you stop by our booth at Lotusphere 2009, your head will do the same. See you there.


* Anatoly Yevgenyevich Karpov -a true genius and one of the greatest chess players of all time


ActiveWorkspace Redux: Bugfix posted

Category Show-n-Tell Thursday Technical

Don McNally was kind enough to point out a bug in my ActiveWorkspace Prototype

Actually, he did more than that. He took the time to read the logs and figure out exactly what was causing the problem. He pinged me this morning to let me know about it; and to tell me exactly where to find the bug. I have corrected the code, and reposted the ActiveWorkspace Prototype to the downloads area. Thanks Don!

ACL Notes: Default would normally be Author access with the ability to create new documents. (Currently set to Manager). Database Managers need the [Admin] role.

Collaboration works!



Comment Spam

QuickImage Category Technical Bitching

I've started getting an inordinate amount of comment spam (100's per day). The spam filter stuff is operational, but I'm still seeing a whole lot coming through. Most of it has been showing up on older postings. so I've configured the blog to disallow new comments on any blog post over 60 days old. I'm not sure if the spam is from bots or actual humans, but I've had enough.

All new comments are now moderated. This will lead to some delay before your comment gets posted (especially when I'm travelling or at a customer site). I have additionally enabled some special logging code; which may cause a slight drop in responsiveness on the site.


Notes Client Active Workspace Prototype Available

Category Show-n-Tell Thursday Technical

Considering some of the discussions going on about enhancing / changing the Notes Client workspace, I am publishing this Active Workspace Prototype.

Right now it only works on Windows machines. It makes use of the Microsoft Web Browser control as the primary workspace component. The code is free to use as you see fit. If you like it, cool. If you hate it, I'm sorry. If you decide to use it in something, feel free to do so (just give credit where credit is due). Right now there is no about document (or any documentation whatsoever), and I realize the icons are pretty lacking.

As my buddy Nathan says, "it's probably not worth the effort needed to get this JUST RIGHT -- this mechanism has it's own annoying little quirks like Workspace and Bookmarks both do."
However, it also has some pretty cool capabilities. Test out the "Generate PIM ActiveLinks" and the "Generate ActiveLinks from Bookmarks" agents, and play with the drag and drop stuff.

ACL Notes: Default would normally be Author access with the ability to create new documents. (Currently set to Manager). Database Managers need the [Admin] role.

Special thanks to Chris Toohey for turning me on to the control, and Julian Robichaux for his very nice Java Progress Bar.

Prototype Zip file is available here.



Domino 8.5 Beta 2 Woes

QuickImage Category Technical Lotus Bitching

Here's a little taste of some of my weekend fun: (while trying to get Domino 8.5 Beta 2 to run on Fedora Linux)

SECTION TITLE subcomponent dump routine
NULL ===============================
1TISIGINFO Dump Event "gpf" (00002000) received
1TIDATETIME Date: 2008/10/04 at 10:32:12
1TIFILENAME Javacore filename: /tmp/javacore.20081004.103152.12952.0003.txt
NULL ------------------------------------------------------------------------
0SECTION GPINFO subcomponent dump routine
NULL ================================
2XHOSLEVEL OS Level : Linux
2XHCPUS Processors -
3XHCPUARCH Architecture : x86
3XHNUMCPUS How Many : 1
3XHNUMASUP NUMA is either not supported or has been disabled by user
1XHEXCPCODE J9Generic_Signal_Number: 00000010
1XHEXCPCODE Signal_Number: 00000004
1XHEXCPCODE Error_Value: 00000000
1XHEXCPCODE Signal_Code: 00000002
1XHEXCPCODE Handler1: B7F5615D
1XHEXCPCODE Handler2: B7F355C8
2XHREGISTER EFlags: 00010256
2XHREGISTER CS: 00000073
1XHEXCPMODULE Inside compiled method: com/ibm/as400/ui/framework/XMLPanelDefinition.introspectMethod.(Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;)V
1XHFLAGS VM flags:0998F768
NULL ------------------------------------------------------------------------
0SECTION ENVINFO subcomponent dump routine
NULL =================================
1CIJAVAVERSION J2RE 6.0 IBM J9 2.4 Linux x86-32 build jvmxi3260-20080415_18762
1CIVMVERSION VM build 20080415_018762_lHdSMr
1CIJITVERSION JIT enabled, AOT enabled - r9_20080415_1520
1CIRUNNINGAS Running as a standalone JVM
1CICMDLINE ./java -ss512k -Xoss5M -cp jhall.jar:cfgdomserver.jar:Notes.jar lotus.domino.setup.WizardManagerDomino -data /local/notesdata
1CIJAVAHOMEDIR Java Home Dir: /opt/ibm/lotus/notes/85000/linux/jvm
1CIJAVADLLDIR Java DLL Dir: /opt/ibm/lotus/notes/85000/linux/jvm/bin
1CISYSCP Sys Classpath: /opt/ibm/lotus/notes/85000/linux/jvm/lib/vm.jar;/opt/ibm/lotus/notes/85000/linux/jvm/lib/annotation.jar;/opt/ibm/lotus/notes/85000/linux/jvm/lib/beans.jar;/opt/ibm/lotus/notes/85000/linux/jvm/lib/java.util.jar;/opt/ibm/lotus/notes/85000/linux/jvm/lib/jndi.jar;/opt/ibm/lotus/notes/85000/linux/jvm/lib/logging.jar;/opt/ibm/lotus/notes/85000/linux/jvm/lib/security.jar;/opt/ibm/lotus/notes/85000/linux/jvm/lib/sql.jar;/opt/ibm/lotus/notes/85000/linux/jvm/lib/ibmorb.jar;/opt/ibm/lotus/notes/85000/linux/jvm/lib/ibmorbapi.jar;/opt/ibm/lotus/notes/85000/linux/jvm/lib/ibmcfw.jar;/opt/ibm/lotus/notes/85000/linux/jvm/lib/rt.jar;/opt/ibm/lotus/notes/85000/linux/jvm/lib/charsets.jar;/opt/ibm/lotus/notes/85000/linux/jvm/lib/resources.jar;/opt/ibm/lotus/notes/85000/linux/jvm/lib/ibmpkcs.jar;/opt/ibm/lotus/notes/85000/linux/jvm/lib/ibmcertpathfw.jar;/opt/ibm/lotus/notes/85000/linux/jvm/lib/ibmjgssfw.jar;/opt/ibm/lotus/notes/85000/linux/jvm/lib/ibmjssefw.jar;/opt/ibm/lotus/notes/85000/linux/jvm/lib/ibmsaslfw.jar;/opt/ibm/lotus/notes/85000/linux/jvm/lib/ibmjcefw.jar;/opt/ibm/lotus/notes/85000/linux/jvm/lib/ibmjgssprovider.jar;/opt/ibm/lotus/notes/85000/linux/jvm/lib/ibmjsseprovider2.jar;/opt/ibm/lotus/notes/85000/linux/jvm/lib/ibmcertpathprovider.jar;/opt/ibm/lotus/notes/85000/linux/jvm/lib/ibmxmlcrypto.jar;/opt/ibm/lotus/notes/85000/linux/jvm/lib/management-agent.jar;/opt/ibm/lotus/notes/85000/linux/jvm/lib/xml.jar;/opt/ibm/lotus/notes/85000/linux/jvm/lib/jlm.jar;/opt/ibm/lotus/notes/85000/linux/jvm/lib/javascript.jar;
2CIUSERARG -Xjcl:jclscar_24
2CIUSERARG -Dcom.ibm.oti.vm.bootstrap.library.path=/opt/ibm/lotus/notes/85000/linux/jvm/lib/i386
2CIUSERARG -Dsun.boot.library.path=/opt/ibm/lotus/notes/85000/linux/jvm/lib/i386
2CIUSERARG -Djava.library.path=/opt/ibm/lotus/notes/85000/linux/jvm/lib/i386:/opt/ibm/lotus/notes/latest/linux:/opt/ibm/lotus/notes/latest/linux/jvm/bin:/opt/ibm/lotus/notes/latest/linux/jvm/bin/classic:/usr/lib
2CIUSERARG -Djava.home=/opt/ibm/lotus/notes/85000/linux/jvm
2CIUSERARG -Djava.ext.dirs=/opt/ibm/lotus/notes/85000/linux/jvm/lib/ext
2CIUSERARG -Duser.dir=/opt/ibm/lotus/notes/85000/linux
2CIUSERARG _j2se_j9=71168 0xB7FD0880
2CIUSERARG -Djava.class.path=.
2CIUSERARG -Djava.class.path=jhall.jar:cfgdomserver.jar:Notes.jar
2CIUSERARG -Dsun.java.command=lotus.domino.setup.WizardManagerDomino -data /local/notesdata
2CIUSERARG -Dsun.java.launcher=SUN_STANDARD
2CIUSERARG -Dsun.java.launcher.pid=12952
2CIUSERARG _port_library 0xB7FD2C40
1CIJVMMI JVM Monitoring Interface (JVMMI)
NULL ------------------------
2CIJVMMIOFF [not available]
NULL ------------------------------------------------------------------------
0SECTION MEMINFO subcomponent dump routine
NULL =================================
1STHEAPFREE Bytes of Heap Space Free: 264D20
1STHEAPALLOC Bytes of Heap Space Allocated: EB9E00
1STSEGTYPE Internal Memory
NULL segment start alloc end type bytes
1STSEGMENT 095BB38C A62A0060 A62A0060 A62B0060 01000040 10000
1STSEGMENT 0906129C A7912498 A7912498 A7922498 01000040 10000
1STSEGMENT 090611DC A7902490 A7902490 A7912490 01000040 10000
1STSEGMENT 0906117C A79E2500 A79E2500 A79F2500 01000040 10000
1STSEGMENT 09103524 A79824D0 A79824D0 A79924D0 01000040 10000
1STSEGMENT A79F2704 A62E2098 A62E2098 A62F2098 01000040 10000
1STSEGMENT 09103824 A79B24E8 A79B24E8 A79C24E8 01000040 10000
1STSEGMENT A6DF852C A62B0068 A62B0068 A62C0068 01000040 10000
1STSEGMENT 0986E2CC A6210020 A6210020 A6220020 01000040 10000
1STSEGMENT 09D26FFC A77A89E0 A77A89E0 A77B89E0 01000040 10000
1STSEGMENT 09D271DC 0A0B4760 0A0B4760 0A0C4760 01000040 10000
1STSEGMENT 095BB56C 0A054718 0A054718 0A064718 01000040 10000
1STSEGMENT 09D2711C A77D8E10 A77D8E10 A77E8E10 01000040 10000
1STSEGMENT 09D2717C A6600018 A6600018 A6610018 01000040 10000
1STSEGMENT 091034C4 A77789D0 A77789D0 A77889D0 01000040 10000
1STSEGMENT 09D26EDC 09EFB5B8 09EFB5B8 09F0B5B8 01000040 10000
1STSEGMENT 090612FC 09E73550 09E73550 09E83550 01000040 10000
1STSEGMENT 09103584 09B58DE0 09B58DE0 09B68DE0 01000040 10000
1STSEGMENT 0906141C 09D934A8 09D934A8 09DA34A8 01000040 10000
1STSEGMENT 095BB62C 09C00840 09C00840 09C10840 01000040 10000
1STSEGMENT 0986E3EC 09AC8DA0 09AC8DA0 09AD8DA0 01000040 10000
1STSEGMENT 0986E14C 09B70E08 09B70E08 09B80E08 01000040 10000
1STSEGMENT 095BB5CC 09AD8DA8 09AD8DA8 09AE8DA8 01000040 10000
1STSEGMENT 090613BC 09AA8D90 09AA8D90 09AB8D90 01000040 10000
1STSEGMENT 095BB50C 099D0D20 099D0D20 099E0D20 01000040 10000
1STSEGMENT 095BB3EC 096A87C8 096A87C8 096B87C8 01000040 10000
1STSEGMENT 0906147C 096D7028 096D7028 096E7028 01000040 10000
1STSEGMENT 0906135C 0957EF80 0957EF80 0958EF80 01000040 10000
1STSEGMENT 09103764 0919E908 0919E908 091AE908 01000040 10000
1STSEGMENT 091035E4 092F2AB0 092F2AB0 09302AB0 01000040 10000
1STSEGMENT 0906123C 0918E900 0918E900 0919E900 01000040 10000
1STSEGMENT 0906111C 0909D378 0909D378 090AD378 01000040 10000
1STSEGTYPE Object Memory
NULL segment start alloc end type bytes
1STSEGMENT 09063C04 AFACF000 B0988E00 B0988E00 00000009 EB9E00
NULL segment start alloc end type bytes
1STSEGMENT 0909A3F4 A7880000 A7900000 A7900000 00000068 80000
1STSEGMENT 0909A394 A6380000 A6400000 A6400000 00000068 80000
1STSEGMENT 0909A334 AF845000 AF8C5000 AF8C5000 00000068 80000
NULL segment start alloc end type bytes
1STSEGMENT 0909BDA4 A7B47000 A7B613D8 A7BC7000 00000068 80000
1STSEGMENT 0909BD44 AF7C4008 AF843FB0 AF844008 00000048 80000
3STHSTTYPE 14:26:32:637663000 GMT j9mm.134 - Allocation failure end: newspace=0/0 oldspace=5160792/15441408 loa=0/0
3STHSTTYPE 14:26:32:637652000 GMT j9mm.139 - Reference count end: weak=344 soft=325 phantom=1 threshold=10 maxThreshold=32
3STHSTTYPE 14:26:32:637562000 GMT j9mm.91 - GlobalGC end: workstackoverflow=0 overflowcount=0 weakrefs=344 soft=325 threshold=10 phantom=1 finalizers=215 newspace=0/0 oldspace=5160824/15441408 loa=0/0
3STHSTTYPE 14:26:32:636993000 GMT j9mm.90 - GlobalGC collect complete
3STHSTTYPE 14:26:32:634534000 GMT j9mm.94 - Class unloading end: classloadersunloaded=0 classesunloaded=0
3STHSTTYPE 14:26:32:633538000 GMT j9mm.60 - Class unloading start
3STHSTTYPE 14:26:32:633527000 GMT j9mm.57 - Sweep end
3STHSTTYPE 14:26:32:627517000 GMT j9mm.56 - Sweep start
3STHSTTYPE 14:26:32:627505000 GMT j9mm.55 - Mark end
3STHSTTYPE 14:26:32:495675000 GMT j9mm.54 - Mark start
3STHSTTYPE 14:26:32:495368000 GMT j9mm.52 - GlobalGC start: weakrefs=484 soft=326 phantom=2 finalizers=216 globalcount=20 scavengecount=0
3STHSTTYPE 14:26:32:495313000 GMT j9mm.135 - Exclusive access: exclusiveaccessms=0.043 meanexclusiveaccessms=0.043 threads=0 lastthreadtid=0x09A20E00 beatenbyotherthread=0
3STHSTTYPE 14:26:32:495299000 GMT j9mm.138 - Reference count start: weak=484 soft=326 phantom=2 threshold=10 maxThreshold=32
3STHSTTYPE 14:26:32:495287000 GMT j9mm.133 - Allocation failure start: newspace=0/0 oldspace=0/14392832 loa=0/0 requestedbytes=32
3STHSTTYPE 14:26:27:665640000 GMT j9mm.134 - Allocation failure end: newspace=0/0 oldspace=4544768/14392832 loa=0/0
3STHSTTYPE 14:26:27:665627000 GMT j9mm.139 - Reference count end: weak=323 soft=293 phantom=2 threshold=10 maxThreshold=32
3STHSTTYPE 14:26:27:665531000 GMT j9mm.91 - GlobalGC end: workstackoverflow=0 overflowcount=0 weakrefs=323 soft=293 threshold=10 phantom=2 finalizers=208 newspace=0/0 oldspace=4545496/14392832 loa=0/0
3STHSTTYPE 14:26:27:665500000 GMT j9mm.90 - GlobalGC collect complete
3STHSTTYPE 14:26:27:663186000 GMT j9mm.57 - Sweep end
3STHSTTYPE 14:26:27:657606000 GMT j9mm.56 - Sweep start
3STHSTTYPE 14:26:27:657594000 GMT j9mm.55 - Mark end
3STHSTTYPE 14:26:27:533515000 GMT j9mm.54 - Mark start
3STHSTTYPE 14:26:27:531451000 GMT j9mm.52 - GlobalGC start: weakrefs=410 soft=295 phantom=4 finalizers=209 globalcount=19 scavengecount=0
3STHSTTYPE 14:26:27:531394000 GMT j9mm.135 - Exclusive access: exclusiveaccessms=0.042 meanexclusiveaccessms=0.042 threads=0 lastthreadtid=0x09061C00 beatenbyotherthread=0
3STHSTTYPE 14:26:27:531381000 GMT j9mm.138 - Reference count start: weak=410 soft=295 phantom=4 threshold=10 maxThreshold=32
3STHSTTYPE 14:26:27:531368000 GMT j9mm.133 - Allocation failure start: newspace=0/0 oldspace=0/14392832 loa=0/0 requestedbytes=48
3STHSTTYPE 14:26:24:632487000 GMT j9mm.134 - Allocation failure end: newspace=0/0 oldspace=4872224/14392832 loa=0/0
3STHSTTYPE 14:26:24:632475000 GMT j9mm.139 - Reference count end: weak=290 soft=239 phantom=4 threshold=10 maxThreshold=32
3STHSTTYPE 14:26:24:632376000 GMT j9mm.91 - GlobalGC end: workstackoverflow=0 overflowcount=0 weakrefs=290 soft=239 threshold=10 phantom=4 finalizers=196 newspace=0/0 oldspace=4872952/14392832 loa=0/0
3STHSTTYPE 14:26:24:631814000 GMT j9mm.90 - GlobalGC collect complete
3STHSTTYPE 14:26:24:626731000 GMT j9mm.57 - Sweep end
3STHSTTYPE 14:26:24:621608000 GMT j9mm.56 - Sweep start
3STHSTTYPE 14:26:24:621597000 GMT j9mm.55 - Mark end

It continues like this for another 4,000+ lines.

The installation went fine. This happens during the initial setup / config, right at the point where it asks what the HOSTNAME for the server should be. I can't really blame the software in this situation. The hardware I'm attempting to install on is waaaaaaaaaaayyyyyy out of spec. I am curious though; what exactly is a NUMA is (line 13); and why isn't it supported? Shouldn't I have received at least one Sandecker objection if/when I disabled it?

I'm pretty sure the problem is (lack of) memory related. I've ordered some more, it should arrive by next weekend. With luck, that shoud be all I need to get this thing up and running.



Stack Overflow: None of Us is as Dumb as All of Us

QuickImage Category Technical User Groups

Jeff Atwood, Joel Spolsky, Geoff Dalgas and Jarrod Dixon have put together a Q&A site for programmers. stackoverflow plans on being different (ie: pertinent and useful) than most other such resource sites. This seems like a pretty lofty goal, but with a pedigree like this, it is not unreasonable.

Even though stackoverflow reminds me of something else, I'm fairly certain that this idea is entirely coincedental....



Unhelpful Error Message

QuickImage Category Lotus Technical Bitching

Quick Quiz

When an error occurs, you should:

  • a) Notify the user what has happened, explain what has been done automatically as a result of the error, and give the user some instruction about what to do (or who to contact) because of the error.
  • b) Notify the user with a cryptic, useless, and perhaps scary message.
  • c) Do nothing whatsoever and hope nobody notices.

It seems to me that somebody should have caught this during testing. Grumble.



What's so special about Chris Miller, and does he really use AutoSave?

QuickImage Category Fun Technical Lotus

Just doing some final prepping today, and got this question. Which was immediately followed by a case of the giggles.

I have no idea why the thought of Chris Miller using AutoSave strikes me as funny, it just does. Call my attention gone.



YellowDay Skins

Category Lotus Technical YellowDay

Celebrate Yellowday with this desktop skin for use with the Marvel Client Skinning Edition for Notes! (Thanks go to Nathan for his awesome Yellowday graphic)



Warm Fuzzies

QuickImage Category Technical Lotus BleedYellow

Back in April I Marvel Client Skinning Edition for Notes.

It's been several months since I published them, and haven't really given them much thought. I've actually been using a different set of skins on my own desktop. This week, while at a client's site, I walked by an employee's cubicle and happened to glance in. He uses my BleedYellow skin!

Oh, happy day.



Comments fixed

Category Technical

Bruce was kind enough to let me know that my comments were broken. They are now fixed.

Back to work


Lotus Notes, Microsoft Web Browser Controls, Mapped Network Drives, and You.

QuickImage Category Show-n-Tell Thursday Technical

I know it is a day early for a SNTT post. If that really bothers you, come back tomorrow. I'll wait.

This post was inspired by two posts pointed out to me by Nathan, and a few phone calls with the Domino Guru himself, Mr. Chris Toohey. This is also an example of how well our community can collaborate to find a solution to a thorny problem.

The first post, Embedded Windows Explorer/File Browser for remotely-stored file resources in the Lotus Notes Client UIM, gives a basic explanation about the business need for using some form of an embedded file browser. The second, Sorting Hat - Embedded File Browser in the Lotus Notes Client UI - Flash Preview, gives a really good demonstation of the cutting / pasting & drag and drop capabilities available when using an embedded file browser.

I immediately got in touch with Chris, because this is something I can use right now, to solve business problems today. However, putting this to use is not really as simple as it should be.

The core of the solution relies on using an embedded control within a form. The embedded control has the official name of "Microsoft Web Browser"; with a class name of "Shell.Explorer.2". The primary purpose of the control is to allow a developer to embed a web browser control into an application. Savvy Domino developers (such as Tommy Valand, Tim Tripcony, or Nathan Freeman) will quickly realize that such a control should be able to pull double duty as an embedded file browser. And it can, (with a little bit of tweaking).

The control will, by default, work perfectly for local system files. The problem however, it that we need to use it to access mapped drives / network shares. Microsoft sees this as a security problem, and the February 2005 security hotfixes (and subsequent service packs) include security changes which effect embedded Microsoft Web Browser controls when interacting with mapped drives / network shares. The purpose of these changes is to disable drag-drop and cut-paste operations for such embedded controls. However, these security changes are not design or code changes; but rather changes to configuration settings. (Which, IMHO, is how it should be).

If you search the web for documentation on how to set the control to work with mapped drives, you will (as did I) find a whole bunch of solutions which involve custom log in scripts, registry changes, and even some (really scary) VB code samples which make real-time, undocumented changes to the registry. This is absolutely unacceptable to me.

Here is a fun idea! Tell a customer (while keeping a straight face) that in order to provide them with the functionality they want you are going to need code which can run with unrestricted access on all of their employees desktops which will modify the registry settings in real time. With no back out capability. And no documentation. Oh, I'm sure there are some folks who see this as a reasonable solution, but I'm not one of them.

So I set about the task of testing every single custom security configuration setting option (with restarts between tests) in order to find out what the settings need to be.

I'm happy to say, I figured it out.


ILUG 2008

QuickImage Category Lotus Technical

The Irish Lotus User Group Conference starts next Wednesday

Unfortunately, with schedules and finances being what they are; I will not be attending.

The Agenda and Speakers List looks awesome. This looks like it is going be the best technical conference for Lotus folks anywhere in the world this year.

If you are attending, make sure to thank the folks who set it up (you know who they are) properly (such as with a pint of Smithwick's and a shot of Bushmills). Don't forget to visit the sponsors as well; without their help this great conference would not be.



Never had it, never will get it.

QuickImage Category Bitching Technical

If you're curious about whether or not I tweet; I do not.

Twitter is the White Noise of the modern, technology centered lifestyle; and has almost zero signal. Some people like it; good for them. Some people like having their testicles pierced with hot needles.

Enjoy your tweets and twattles, have fun with your endless prattle about nothing. Eventually you'll tire of it and realize how much you miss meaningful, contextual conversation with other adults. One can only play Patti-Cake for so long before recognizing they are no longer a child.



Dell appreciates your business

QuickImage Category Bitching Technical
9:32:33 AM System You are now being connected to an agent. Thank you for using Dell Chat
9:32:33 AM System Connected with Priya_140538
9:32:38 AM Priya_140538 Thank you for contacting Dell Technical Support. My name is Priya and my rep ID number is 01140538. How may I assist you today?
9:33:53 AM Devin Olson Hello Priya. I've been having some intermittent problems with my Broadcom 10/100 integrated network adapter on my Inspiron 9300
9:34:13 AM Priya_140538 Hello Devin.
9:34:23 AM Priya_140538 Please be assured that I will look into this matter, and provide the best possible resolution.
9:34:29 AM Priya_140538 Please give me 2 to 3 minutes to pull up your account information.
9:34:31 AM Priya_140538 We will not face any connectivity issues in our interaction. However, in case the chat still gets disconnected, we will call you back to ensure that the issue is completely resolved. Please provide me with the best number and time to reach you?
9:34:32 AM Devin Olson Is there some form of Diagnostics I can run on the card to test the hardware?
9:34:34 AM Devin Olson ok.
9:35:29 AM Devin Olson xxx-xxx-xxxx. I'm in the US Eastern Time Zone, anytime between 6AM and 9PM is fine.
9:35:43 AM Priya_140538 Thank you for the information.
9:35:48 AM Priya_140538 Yes, we can surely run a test to check the hardware. However, we need to know the exact issue first.
9:35:48 AM Priya_140538 As per the records with me you have an Inspiron 9300, with Windows XP Professional installed as an operating system on it. Am I correct?
9:37:56 AM Devin Olson Since I purchased the machine, I've replaced the original hard disk with a larger capacity (80G); and added a dual boot OS. It is now SuSe Linux 10.3 / Windows XP Professional. The issues I'm having are currently in Windows XP.

This is where I screwed up. I should have simlply answered "Yes"

9:38:12 AM Priya_140538 Okay.
9:38:37 AM Devin Olson I have not tested to see if the problems show up in when booted in Linux, that is not my primary working O/S.
9:39:23 AM Priya_140538 I see.
9:39:38 AM Priya_140538 May I know what exactly is the issue that you are facing with the network card?
9:41:49 AM Devin Olson It is intermittently dropping my network connection. This morning I could not get an IP address from my DHCP server. The lights on the Router blink very, very rapidly when plugged in, but no connection appears. When I plug the network cable from the router into another computer (Dimension 8400 Desktop), it works just fine.
9:42:08 AM Priya_140538 Thank you for the information.
9:42:12 AM Priya_140538 Are you using the same system to chat with us, with which you are facing the issue?
9:42:19 AM Devin Olson I have set up my wireless on the laptop in order to work.
9:42:26 AM Devin Olson Yes, I'm working on the laptop at the moment.
9:43:18 AM Devin Olson Currently the wireless NIC on the Inspiron is showing an ---

At this point, the NIC started chattering (flooding my network with corrupt packets) so much that the router started to flip out. I disconnected the network cable from the laptop and everything started working correctly. I then started a follow-up chat session with Dell Support:

9:43:19 AM System The session has ended!


Simple Solution for Web service is unable to create LotusScript object.

QuickImage Category Show-n-Tell Thursday Technical

Wherein I present the solution to an R7 conundrum

After a flurry of Yellow Bleeder chats and phone calls following yesterdays post, the true issue, and it's solution, have become apparent.

The issue is An LotusScript Class cannot be directly surfaced through an R7 Web Service running on a server. The class can however, be surfaced when the web service is running on a client machine.

This subtle difference is an important one, in that it can sneak up on an unwary developer and bring his or her work to a grinding halt. The reason is fairly simple. When you create a Web Service, you must define the Port Type class for the Web Service. The Port Type class is used as the basis for the WSDL generated by the service. If the method signatures of the Port Type class are changed in any way, the WSDL must be re-generated in order to incorporate the change(s).

When a developer is working on a Notes / Domino Web Service, the developer is using the Notes Designer client. When testing the Web Service on the local machine, the Designer Client will automatically regenerate the WSDL for the Web Service.

When testing the Web Service on a server, this regeneration never occurs. Which means that the Web Service attempting to surface a Port Type class defined in a LotusScript library breaks, without throwing any internal errors (ouch). The only error information available is passed back to the invoking client (the code attempting to connect to the Web Service), and is similar to this:

Web service SimpleEcho is unable to create LotusScript object for SimpleEcho datatype in method ECHO

Luckily, the solution is ridiculously simple.


Help Needed: Web service is unable to create LotusScript object.

QuickImage Category Lotus Technical

I feel like I'm missing something really simple, but I can't seem to figure this out.

Web service is unable to create LotusScript object.

LotusScript Class defined in Script Library cannot be created by a web service when running on a server.

Updated: Solution here!


Taking Notes #79 -Bleed Yellow

QuickImage Category BleedYellow Technical Lotus

The Taking Notes Podcast: Episode 79 is out. Bruce and Julian talk to Chris and Nathan about BleedYellow.com.

If you haven't had the chance to do so; it's worth listening to. Check it out.



Mail and Mail alone

QuickImage Category Technical BleedYellow

If you haven't already done so, head over to Mary Beth Raven's blog and read this thread. Go ahead, I'll wait.

I posted a response there, but I've got a bit of a rabbit trail started, and didn't want to hijack her topic.

For those of you who are unfamiliar with how DWA works, allow me to explain.

No, there is too much. Let me sum up. Buttercup is marry' Humperdinck in a little less than half an hour. So all we have to do is get in, break up the wedding, steal the princess, make our escape...

If you've seen The Princess Bride, you know what a great film it was. And you also know that there is a whole lot more going on than you'll notice the first time you watch it. You have to watch it several times, paying strict attention, to figure out all that is going on. Therein is the essence of my problem with DWA. There is too much. Yes, it is very cool, yes, it works well, yes, I like the interface. But there is too much stuffed into a single nsf.

The decision to add contacts to the mail file in order to make DWA work was an extremely bad one. I know that the developers and architects had to agonize over this decision, I know it was probably a very tough call, and I realize that people a lot smarter than I thought this was the right thing to do. They were wrong. Adding contacts information to the mail file caused myriads of unintended consequences, many of which we still have to deal with. Contacts information should never have been added to the mail file. Personal NABs (remember those) should have been used instead. Yes, using two databases instead of one would have caused an initial greater footprint, this difference would have been minuscule. The benefits of having mail in a separate database as contacts far outweigh any perceived rewards. It seems the decision makers forgot a very important rule: It is better to do one thing well than many things poorly. This was a bad decision.

Adding RSS feeds to the mail file is the inevitable heir to a lineage of poor design decisions.

What do I mean by poor lineage? Getting back to the decision to add contacts, that wasn't the first bad decision regarding the mail. I believe calendar & schedule information (appointments, meetings, to-dos, etc) should never have been added to the mail file either. Before you start spitting venom; please hear me out:

Notes/Domino is GREAT at replication. Notes/Domino is GREAT at linking multiple databases into a single application. A user's Mail application could, and should, consist of email, calendar and contact databases. (BTW - why oh why are single databases now referred to as "Applications" in 8? In Notes/Domino, an Application consists of one or more related databases used to perform a specific task.). Keeping these as distinct and separate databases would greatly reduce the bloat and overhead of the current mail file design. It would also make managing the three distinct, yet very much related, types of data (mail, calendar, contact) much easier. Notes/Domino developers (those of us in the field who use the product) have been developing multiple database applications since at least R3 (I started with R3, so I can't speak with authority about prior versions). These three types of data should never have been included in a single database.

One of the most important rules when developing an application is to keep it as simple as possible, and not over-complicate things. Have you looked at the design of the mail template recently? It is hugely complicated. Please don't take this as a personal attack on the template developers; it isn't. This design train is already moving too fast, and they are so busy trying to keep it from crashing that they can't see it's on the wrong track. Or perhaps they can see, but just don't have the ability to change it. The only thing I'm sure of is that I'm tired of train analogies.

The mail file is way too bloated as it is. Adding RSS to it is, as my buddy Nathan said, a HORRIFIC idea.

I'd like to see the Mail application split up into multiple related databases. Perhaps a composite application, perhaps not. If IBM / Lotus can't (or won't) do such a thing, perhaps this could be the next OpenNTF killer app.


PS - I've crossposted this entry to my BleedYellow blog as well

Update: I've added this to idea jam.


Showing IBM Lotus Notes 8 On Linux Demo In Firefox On Suse Linux with Lotus Notes 8 on another Compiz Cube before Lotusphere. Whew! That's a mouthful.

QuickImage Category Technical Show-n-Tell Thursday BleedYellow LS 2008

Sorry about the poor audio quality. And the jiggly camera. Yes, I know the video quality is absolutely terrible.

But you gotta admit, it's still pretty cool.

BTW - My primary work environment (except for Notes Development -I'm still waiting for a Designer client) is now Notes 8 on Linux.

See y'all at Lotusphere!



Upgraded to V3

QuickImage Category Technical BleedYellow

I know the site looks really different. I just upgraded to Blogsphere V3 and haven't had the chance to customize my Skins, Templates, or CSS. The nice thing about the upgrade is that even though it looks a bit clunky, at least it isn't a screwed up as it was in MSIE.

Please bear with me, it's been a fairly busy week.



RSS Feed URL Change

QuickImage Category Technical

As part of the changeover to the new host, the RSS feed URL for my blog has changed. The new URL is:

Please update your feed readers. I plan on keeping the old URL functional for the next week or so; after that it will be removed from the server.



6 Distros in 4 days

QuickImage Category Technical Bitching

I really wanted to start using Linux; but this is getting silly. Perhaps I'll try again in a few months when Fedora 8, Suse 10.3, and Ubuntu 7.10 are ready.

Just for the record, I've tried Fedora, Suse, Ubuntu, Edubuntu, Knoppix, and Xubuntu. All of them install on my particular hardware, but none of them will recognize the hardware controlled RAID array after installation (GRUB Loader error 25).



Help needed with CGI Fields: HTTPS and SERVER_PROTOCOL

QuickImage Category Technical

I have several CFD fields on a form; two of which are returning unexpected (incorrect??) values:

  • HTTPS, formula = HTTPS

The HTTPS field is returning the value "OFF", and the SERVER_PROTOCOL field is returning the value "HTTP/1.1"; regardless of whether or not I access the nsf using http or https.

I need to determine the entire URL of the form, does anybody know how to get the CORRECT protocol? Is this perhaps a bug in the server, am I misunderstanding the purpose of these CGI fields, or perhaps do I have my server configured incorrectly?

Note: This particular form is a $$ViewTemplate form, however I am getting the same results on normal forms and existing documents as well.

Excerpt from my log (in WQO agent) as follows (host names changed of course):


Removing fields from a document without changing timestamp or last author

QuickImage Category Technical

Technical question for all:

I'm working on an existing Domino application with some 94,000+ documents. The main form includes a standard web header subform, on which there is a COMPUTED (not computed for display) field called "Query_String_Decoded".

(Note: I also posted this on LDD.)

This field is populated with the CGI value of QUERY_STRING_DECODED when either:

  • the document is created for the first time:

  • or the document is edited:

and then it is saved when the document is saved.

Which means, of course, that it is stored on the document. This is causing all kinds of difficulties when attempting work with the document in Read Mode:


because it takes precedence over the actual Query_String_Decoded value.

I have rectified the design issue, but I'm still left with 94,000+ documents with this field stored on the document. I can put together an agent that will remove the offending field from the documents without any problem; except that the timestamp and last author ($Revisions and $UpdatedBy) fields will also be changed by my agent -which is something I don't want.

Does anybody know of some way for me (perhaps something like using a NotesDocumentCollection.StampAll method) to do this easily, or am I essentially screwed?

Thanks all,



Comment Blocking

Category Technical

It would seem that some folks have tried to comment recently; and have been redirected to http://english.spampoison.com/. This is not intentional. I just recently upgraded my Blogsphere template -I don't know if that is why the redirection has occurred.

If you have been blocked recently, would you mind dropping me an email to let me know?




Driver Reset Tool

QuickImage Category Technical

The other day I opined regarding the dichotomy of my feelings towards Dell; based on a meme triggered by Joel Spolsky. Today I'm going to expand on this by pointing out something really, really cool.

I fired up my main workstation this morning (a Dell Dimension 8400); only to discover that I had no network connectivity. A quick glance at the network gigabit switch confirmed this: the status indicator LED for this workstation was dark. I checked the cable connection on the back of the switch; it was just fine. I then checked the cable connection at the back of the computer. The cable was plugged in, but there the LED on the NIC was dark also.

"Well that sucks." I said to myself. Then I did my best Pooh impersonation.



Notes 7 Error

QuickImage Category Technical

Gotta love the new Notes 7 error message. Granted, it's not nearly as cool as the RBOD, but this is still pretty interesting. It definitely beats the old Dr. Watson so many of us are familiar with. In case you can't see the included picture, the new Notes 7 Error message reads as follows:

Lotus Notes 7

An error has occurred in a Lotus Notes application.

Data about the error is being collected for your company's help desk for use in error analysis.

The Lotus Notes application will close when data collection is complete. Please wait.

Very nice indeed.



Help Request: R7 LotusScript interpreter change?

QuickImage Category Technical

The following function is culled directly from my standard Utilities script library. I have been using this function, without error, since release 5 (Possibly 4.6, but I'm not sure). I recently upgraded from release 6.0.3 directly to 7 -which means that I don't know if this problem exists in 6.5.

The purpose of the function, in case you can't figure it out from the function name or in-code comments (ALWAYS COMMENT YOUR CODE), is to add a Variant to a Variant Array. A Variant Array is defined here as an array of variants, as opposed to a dynamic array. The code makes use of LotusScript's ability to handle dynamic arrays to resize the original array. Here is the code:

Function AddToVariantArray ( varSource As Variant, varElement As Variant ) As Variant
   This function will add the passed in element (varElement) to the end of the
   passed in variant array ( varSource ) and return the resultant variant.

   Dim varOut () As Variant
   Dim intPos As Integer

   On Error Goto ErrorTrap

   If IsArrayEmpty(varSource) Then
      Redim varOut (0) As Variant
      Redim varOut (Lbound(varSource) To Ubound(varSource) + 1 ) As Variant
      For intPos = Lbound(varSource) To Ubound(varSource)
         varOut(intPos) = varSource(intPos)
      Next ' i
   End If ' Isempty ( varSource )

   varOut(Ubound(varOut)) = varElement

   AddToVariantArray = varOut
   Exit Function
   Redim varOut(0)
   varOut(0) = ""
   objUtilitiesInfo.AddError Err(), Error(), "AddToVariantArray"
   Resume ExitPoint
End Function ' AddToVariantArray


Google Search Results differ between browsers

Category Technical

I was playing with search results with Google, and I entered the following search term:

Lotus Notes Fiscal Year Formula

Firefox and Netscape both gave the same results (at least for the first page -I didn't bother checking additional pages), but Microsoft Internet Explorer came up with really different results. For MSIE, I did check additional pages, and my site didn't show up in the first 21 pages of results -after that, I gave up.

Below are some links that will display screen shots (sized down a bit) so you can see my results. All shots were taken from the same machine, on the same network connection, within 1 minute of each other. Note: The links will open in new windows.

So, can anybody give me an idea as to why this would occur? I figured that Google's search algorithms were pretty much platform/browser agnostic, but it appears that they are not.



Detecting Browser Plugins

QuickImage Category Technical

I've been working on some code to autodetect browser plugins, and let me tell you this is a gigantic pain in the rear. Modern, standards-compliant browsers aren't that difficult; but figuring out plugins on Microsoft Internet Explorer is about as much fun as having major dental work. Come to think of it, at least with dental work you get Nitrous Oxide and gonzo pain killers. Not so with MSIE.

I have just about figured it out and gotten it working (I'll post the solution later). For the masochists among you, here is a challenge: Write some client-side code (no ASP, Domino, or CGI magic allowed), that will detect and report to the user all of the plugins installed in their browser. In addition, make your code such that it will redirect the user to a new page if their browser doesn't have the correct "required" plugins or plugin versions. Now make this code run in MSIE 5+, Firefox 1+, and Netscape 4.6+.

If you succeed, give yourself a big pat on the back, because you will have accomplished something great.

Alternatively, you can just sit there with a worm on your tongue and wait for me to finish testing and post the stuff I'm working on now. It is very nearly finished, I just have a few "bugs" (like the PANIC: STOP) to work out.



Email Obfuscation

QuickImage Category Technical

Email harvesting "spiders" normally use a form of pattern matching algorithm to suck email addresses off of web pages. One of the ways that folks attempt to avoid this is by obfuscating their email addresses. I'm sure you've all seen something like this before, people will post their email address in a manner similar to this: devin dot olson AT this lighthouse dot com (replace the word this and the space with "az").

While this does work in that it foils the harvesters, it has always seemed a little bit silly and unprofessional to me. So, I did a little thinking and came up with a solution that is pretty simple to implement, yet has the air of elegance. It is elegant in that it is ridiculously simple to do.

Spiders & harvesters rarely stay on a page more than a second or so, and don't like to consume or run Javascript. So, the solution I came up with was to simply obfuscate the email address on the source html page in such a manner that the spider wouldn't recognize it, and then use Javascript to turn it into something readable, printable, and usable (such as with a mailto: href) to the user. As long as the Javascript delays activating until after the spider has left the page, then, I figured, this should be no problem.


Excluding non-current Fiscal Year documents from Notes Views

QuickImage Category Technical

This should be my final post on this subject.

In my first entry, I introduced some of the problems with Fiscal Year calculations, particularly within Notes Views. In my second posting, I showed you the code I put together to dynamically calculate Fiscal Year information within a view. In this entry, I'm going to explain how to create a view that only shows documents for the Current Fiscal Year, and won't need to be "adjusted" by the developer every year. As with my previous two posts, this uses nothing more than some creative @Formula code.

Sound fun? Let's get started


Fiscal Year Fun, continued.

QuickImage Category Technical

This entry continues my thoughts regarding Lotus Notes, view selections, view column values, programmatic view column names & referencing their values, and dynamically determining fiscal year information. If you haven't read my introductory posting, it is available here.

As I promised in my previous post; I'm going to give you the solution; but first I want to discuss some more gory development details.


Fiscal Year Fun

QuickImage Category Technical

Perhaps a more appropriate title for this entry would be something like

Lotus Notes, view selections, view column values, programmatic view column names & referencing their values, and dynamically determining fiscal year information.

A buddy of mine called me last week; he needed my help with some Fiscal Year calculations. "No problem", I said, "all you need to do is use the @Adjust formula and....."; at which point I realized that fiscal year calculations aren't that easy.

I've been in this business a long time, and I've developed (in whole or as a contributing team member) lots of Notes / Domino applications for lots of customers. When I say "lots of" customers, I mean hundreds. When I say "lots of" applications, I mean possibly thousands. In all that time, I've done a bunch of FY calculations. (When I say "bunch", I mean I have no idea.) The problem is, I never created a standard Fiscal Year algorithm. I always cobbled the FY stuff together, along with hard coding the dates, in a manner that was unique to the application. I know, that's a bad thing to do, but I'm going to rectify that now.


Enhancements to Spanky's Daily Beer Quote

Category Technical

I finally got the scrolling beer background working in the Daily Quote block. It has been working fine on the main Spanky's Daily Beer Quote for quite some time now (thanks to a bit of originally written by Roy Sinclair -available at The JavasSript Source.) Until today, I haven't been able to (ok, I haven't really taken the time to do it) get it working in the actual Daily Quote block.


Hyperthreading & Dell

QuickImage Category Technical
After reading some of the information regarding the Intel Hyperthreading Security risk, I find it refreshing that Dell (and probably others) has introduced new systems with Dual Core processors.

Too bad I spent all of my money on Doctors, otherwise I'd be considering buying this.



Free software

QuickImage Category Technical

Beta Testers Needed

I'm getting ready to release a file synchronization utility, and I need some folks to Beta test it for me. It is for Windows only (Win98 - WinXP).


@Command([FileSave]) not saving

Category Technical

I have an action button on a form that is only visible in edit mode. The button is labeled "Save & Close". The code under the button is:

@If(@Command([FileSave]); @Command([FileCloseWindow]); "");

I have used this code many, many times before, and have never had a problem with it. If the document successfully saves, then the form closes. If the save is unsuccessful, the window doesn't close. Simple right?

What is currently happening is that the window is simply closing. The edits are not saved. The users of the application have Author access to the database, and have a role assigned to them. This role ("[CourseEditors]") is explicitly listed in an Authors field on the form. If the user makes an edit and clicks smarticon save button, or manually selects "File|Save", then the changes are saved. If the user makes an edit and then hits the escape key or the "x" on the window tab, the document simply closes without a "Do you want to save your edits" message.

I have run Fixup and Compact on the database, with no luck. I have made a new copy of the datbase, with no luck. I have changed the code under the Save & Close action button from the formula to the following script (also with no luck):

Sub Click(Source As Button)
Dim nuiwsp As New NotesUIWorkspace
Dim nuidoc As NotesUIDocument
On Error Goto ErrorTrap
Set nuidoc = nuiwsp.CurrentDocument
Call nuidoc.Refresh()
Call nuidoc.Save()
Call nuidoc.Close()
Exit Sub
Resume Exitpoint
End Sub

When I turned the debugger on and stepped through the code, no error occurred. The "Call nuidoc.Save()" line appeared to have processed, but the changes were not saved.

When I test this using MY id, it works as expected. I have Manager access to the database, and have the same roles as the normal users.

Any ideas? I've been working on this for close to 30 hours and my brain is getting fried.

I have also posted this question on the ldd forum.



StringListBig Class

QuickImage Category Technical

If you took a look at yesterday's post on the StringList Class, you might be asking yourself why even bother with this class, considering that LotusScript has the very cool built in List object. Given the choice, I would personally prefer to use the List object myself (and I normally do).

However, I created this class due to a need found when attempting to port some LotusScript code to Visual Basic, which doesn't have a List class. Did I mention lately that Visual Basic Sucks? (Ok, it really doens't suck that bad, but the Visual Studio IDE.....better stop myself from going into rant mode, need to keep that blood pressure under control..)

Anyway, back to the task at hand. After I created this class, I realized that it was a perfect foundation for something that has been swimming around in the back of my mind for a while; a big array. Or, in this case, a big string list.

The LotusScript List class and LotusScript arrays are theoretically limited to 65,536 elements (range of integer, -32,768 to 32,767). The actual number of usable elements is constrained a bit by other factors. From the notes help:

...Determined by memory available for data, and by the storage size of each element of the array, which varies with the array data type. For example, a Long one-dimensional fixed array declared in type scope can have 16,128 elements. (The total storage size available for fixed-size data in module scope is 64K bytes, and a Long element requires 4 bytes for storage.)

While this seems like a lot of entries, there have been times where I have come close to needing more. So far, I have been able to find other ways to handle this, but there are always possibilities. That being said, I have created the next "evolution" of the StringList class. This is the StringListBig class. It is essentially nothing more than a 256 (byte range) element array StringLists (which is itself a 256 element array of strings) with some wrapper functionality tacked on. This gives a real (not just theoretical) maximum potential size of 65,536 (256 * 256) elements. Enjoy the code:


StringList Class

QuickImage Category Technical

The other day I posted some code for a class I was working on: Class StringList. I have added some additional functionality, and cleaned up the class a bit. Here is the new StringList Class:


Strip HTML using Lotus @Formula

QuickImage Category Technical

After I finished my LotusScript version, I decided to look into doing the same thing using the @Formula language. I did another check on Google, and found some code by Dave Mehan. I'm not going to rip on his code, because it is really good, but it doesn't really fit what I wanted to do.

Something I forgot to point out in my LotusScript posting is that it will conditionally strip out Orphan tags ("<" & ">"). I wanted this capability for the @Formula version as well, and you'll notice I am setting a variable (vStripOrphans) to @True in the code. (You could pull the value for this from a field, an ini value, or any other way your heart desires.)

So, I started by applying the same logic as my LotusScript version, and came up with the following. I have commented it pretty heavily, so it shouldn't need much explaining; however, you might notice that I have nested an @DoWhile inside an @Transform; which I think is pretty cool (pats self on back). You'll also notice I tend to break up my code into multiple lines -this is intentional and helps me to "see" the logic. Enjoy:


Strip HTML using LotusScript

QuickImage Category Technical

I needed a LotusScript routine to strip HTML out of some text I was importing from an ODBC data store. I did a quick Google search, and came up with a pretty nice start posted by Colin Williams. It wasn't "generic" enough for me, so I did a little work on it and came up with the following function and helper functions. Enjoy:


Visual Basic Hell

QuickImage Category Technical

<rant mode="on">
Been busy converting some LotusScript code into a stand-alone Visual Basic app. I will never make another disparaging comment about the Lotus Designer IDE. So it doesn't have a class browser. Big deal, there are ways around that little problem. It is easy to use, and getting help (whether context-sensitive or just by hitting Alt-H-H) is a breeze. Have any of you ever attempted anything more complex than "hello world" using the Visual Studio IDE?

I cannot even begin to describe how bad the VS IDE sucks. It is beyond all comprehension. It is the galaxy eating, thought devouring, happiness destroying monster black hole of suckage. Given a choice between using the Visual Studio IDE and having my balls pounded flat with a wooden mallet, I might just consider the latter.

P.S. Did I mention that Visual Studio Sucks?


A full day's work

Category Technical

C:\Lotus\Notes\Data> dir sync*.*

Volume in drive C has no label.
Volume Serial number is DC44-899D

Directory of C:\Lotus\Notes\Data

03/21/2005 04:17 PM  405,212 synchtest.nsf
03/21/2005 04:26 PM    4,527 synchlog_20050321-1626.log
03/21/2005 04:29 PM    5,132 synchlog_20050321-1629.log
03/21/2005 04:34 PM    6,059 synchlog_20050321-1634.log
     4 File(s)       420,930 bytes
     0 Dir(s) 63,917,338,624 bytes free

C:\Lotus\Notes\Data> del sync*.*

ARRRRGGGGHHHH!!!! (as realization sets in)

!!! was I just that stupid? yep, I sure was. (I should have typed in "del sync*.log").

Did I have a backup? Heh, do you think I would be typing this now if I did? Yes, this is an NTFS partition, and NO, I can't load any "file recovery" tools onto it, as there are currently none on the "allowed" list here at work. 

Time to go home and cry.



I love this feeling even more.

Category Technical

Well, I finally got the first draft of this finished and shipped off for review. Once everything is approved, I can let y'all know what I've been working on lately. Stay tuned...



Working like crazy

QuickImage Category Technical
click, click, click, web-HUV NO ACCESS, click, click, click, HUV Image Set, click, click, click, copy, paste, test, click, click, click, snakeshow.bmp, click, click, click, File>Tools>Debug LotusScript click, click, click.......


Pot Calls Kettle Black?

Category Technical

Hmmm, methinks Tom doth complain a bit too much. (Link) Could it be that he was simply tired and missed the other problem? Or am I just being a nitpicky git?



Forcing users to act like developers

QuickImage Category Technical

How many of you take the time to build a decent and easily navigable UI into your applications? I ask this because I've recently noticed quite a few applications that require the user to select File > Database > Goto... and then pick the view they want. This isn't for some weird esoteric rarely accessed view, but is one that the user(s) need every time the access the database.



I love this feeling

Category Technical

Although I don't have a name for it, there is a feeling that comes over me when I "get" a new project. To clarify, when I am working on something new and or exciting, or something that is just plain cool, I get this feeling that starts way down in my gut and pushes up through me, until it feels like I'm going to burst with excitement.

I think all hackers (true hackers, not the cracker scumbags) get this feeling as well. Whether you're a coder, wirehead, carpenter, welder, or artist; you've probably had this feeling or something like it before. The closest analogy that comes to mind right now (at 4 am) is the feeling you had the day before your high school prom: you knew that something really cool was going to happen, you knew that if you did everything right it would be awesome, yet you also knew that if you screwed up it would suck a lot. And you really weren't sure how things were going to turn out.


Referers will no longer be shown

Category Technical

I'm following Rocky's lead here. I've had it with referral spammers, and I won't show them anymore.

So there. pttthhhpp!



Creating your own @formula extensions

Category Technical

Ben Langhinrichs has posted a great writeup on how to go about creating your own @Formula extenstions. Go read it now, I can wait.

<plug> I had the opportunity to meet Ben at a Penumbra Group reception during Lotusphere last year. He is not only a brilliant hacker, but also a disarmingly decent fellow. If you are in need of a seriously powerful rich text tool, check out his Midas Rich Text LSX. </plug>



Quotable Quote - January 3rd, 2005

Category Technical

"I've found that people who are great at something are not so much convinced of their own greatness as mystified at why everyone else seems so incompetent."
-Paul Graham, from Great Hackers, July 2004.


Advice for CS Students

Category Technical

Joel Spolsky has published an essay aimed at Computer Science College Students. If you are CS student or IT worker, go read it now.



No More Hijacking

Category Technical

Every once in a while I experience a moment of self-realization whereby a fragment of truth comes shining through like a beacon in the night. The darkness and fog is burned away by the blazing glory of the morning sun...

Ok, enough poetry. I call these experiences "DUH!" moments. Most developers / engineers / tinkerers / chefs have these moments. An example of this would be when you first realized that perhaps this:


Sorting Names

QuickImage Category Technical

Ben demonstrates some interesting sorting routines and asks for suggestions in this post.

I was originally going to respond there, but I realized that I had already done something similar, and wanted to expound a bit on the topic, so here we go.


Ben throws down the gauntlet

Category Technical

In response to a very cool topic over at Rocky's site, Ben Langhinrichs issues developer's challenge using the very cool @Transform function.

Who will prevail?  Will Rocky accept the challenge?  Will an "open contest" come out of this meager beginning?  Will the Penumbra Group sponsor such a contest?  If so, will it become a yearly tradition?  Where are we headed, and what's with this handbasket?

These and many more questions may or may not be answered at Lotusphere 2005



Easiest Install Ever

QuickImage Category Technical

So, I installed Linux on my old Dimension last night. I booted the machine using the bootable DVD that came in the book, answered a few setup questions (root password, which packages to include, etc) and in two shakes (well, closer to three) of a monkey's tail I had Fedora Core 1 up and running.


Hotmail Joins Storage Race

Category Technical

Interesting (OLD) story over at eWeek:


I finally got the official notice from Hotmail staff about the storage increase 2 days ago. (Perhaps not too) coincedentally, I have been getting continual "Server Too Busy" errors when trying to access my Hotmail account for the last 2 days also. Sort of makes me go "Hmmmmm."



Bye bye Domino, hello LAMP?

Category Technical

We are migrating completely away from the Lotus Domino Platform.

The decision has been made, and no amount of gnashing of teeth or tearing of clothes will help.

Rumor has it that we are going to be migrating to a LAMP platform


@Sort and the [CustomSort]

QuickImage Category Technical

I received an email from a friend asking for my help today. He needed a custom Sort Algorithm. I immediately switched into Ultra Script Lord mode, and banged out a quick solution.


Wowsers! A Tag Cloud!

Techie Stuff