Hosted By

Contact Me

Misc Links

OpenNTF BlogSphere LotusGeek CoComment Custom Button

Ads by Google

Welcome to keithstric.com!

I hope you find this site useful in some way or another. I strive to bring you all sorts of geeky information and solutions to your most frustrating of issues with the occasional rant on whatever topic, technical reviews and weblog. You'll also find many products that I've developed and make available for you to use however you like. So, grab a cup of coffee, sit down and visit for a while.

Blogsphere bugs...

11/30/2009 9:35 AM By Keith Strickland

I've been using the Blogsphere template since it first came out and haven't looked back. BlogSphere and the OpenNTF mail template are the templates that really opened the world's eyes to OpenNTF and the benefits of an OpenSource community for the Lotus faithful. However, since version 3.x of blogsphere there have been a couple of bugs that really bugged me. These bugs didn't really hurt the overall feel of Blogsphere but are really just little annoyances. Now what brought these bugs to my attention is that I'm currently redoing the look and layout of keithstric.com. This current look has been here for a couple of years now and I'm tired of images getting cut off because of the layout being too narrow. Also, because of the set width of the layout, on my big iMac screen I've got an awful lot of wasted realestate. What really inspired this was the new look of Chris Toohey's site. I think the layout and overall look of his site is great. Good work Chris! I hope you don't mind if I steal borrow some of your layout ideas?

The first one is the Download permalink on search results. Seems the TAG_BSPlinkURL function in the RenderEngine.Tags script library had a typo on line #13: "TAG_BSPlinkURL = cfgDoc.cfg_Basic_HomeURL(0) + "/download/" + blogDoc.PermaLink(0)" should read "TAG_BSPlinkURL = cfgDoc.cfg_Basic_HomeURL(0) + "/downloads/" + blogDoc.PermaLink(0)". While this really isn't that big of a deal, it was frustrating at times when looking for something.

Another bug, but not really a bug, but just had to do with the page template. In the search results, it didn't show the content of the post, just a Blogsphere tag, which to the average user doesn't really mean that much. But that tag doesn't exist, hence it only showing that tag and not the content of the found entry. The tag that was being used is "<$BSEntryBody$>". I changed that to use the "<$BSEntryHTML$>" tag instead.

Next up, and this one I can't seem to get to work at all, is the display of all the static pages. Just like with downloads, you should be able to display an excerpt of each static page in a blog like layout. This was returning an error for the comments rss which is something I'll get to in a minute. But, I never could get the static pages to display like I want, but that's certainly something on the agenda before the new layout goes live.

Last one, in the RenderEngineCommentsEntries function of the RenderEngine.RSS script library, line #9: "numofentries = configDoc.cfg_rss_RSSFeedEntries(0) * 5". The field cfg_rss_RSSFeedEntries doesn't exist, so this was causing an error to be returned. For some reason this error occured when you tried to navigate to the view containing the Static Pages. I just changed this to read: "numofentries = 50". Now, I know I shouldn't hard code this, I should just add a field to the configuration document for this, but I guess I'm just lazy and don't want to change too much in the template in order to make upgrading to the next version easier.

Please don't take these bugs as me bashing Blogsphere, I think it's a great product and I look forward to continuing to use it in the future. I just thought folks that are using blogsphere may be experiencing some of these same issues and would like to fix them. But while you can't see these fixes at this moment on keithstric.com, they will be implemented when the new layout goes live in a few days (I'm not very fast with tweaking CSS).


iNotes Frustration

10/20/2009 12:53 PM By Keith Strickland

One of my customers tasked me with what I thought would be a simple little addition to the iNotes mail template. He wanted to add a link to the iNotesOutline that opened in a new window to his company intranet. Sounds simple right? Think again. For the life of me I can't get this to work. I've tried all sorts of stuff to no avail. Here's what I've done so far:

  • Added an URL outline entry to the iNotesOutline with the URL to the intranet site (http://intranet.company.com) in the "Value" field of the outline entry properties
  • In the "Frame" field of the outline entry properties tried the following _blank, "_blank", target="_blank", "target=\"_blank\"" along with a few other variations

The results:
This tries to redirect the current window to a URL like "http://intranet.company.com&presetfields=s_viewlabel;company%20intranet,s_viewname;intranet.company.com&kic&unh=qr3mi4kevl6cnv50k2reecdm21c&f8/"

I've also tried:

  • Adding a new frame to the WebInteriorMailFS Frameset with a page that contains an HTML link
    • This frame doesn't show up on the web
  • Modifying the "Webmail Picker" page with an HTML link
    • This modification doesn't show up on the web

Now, all of this really returns no results towards the desired goal what-so-ever. It doesn't even break something else, which going by my luck of late, is odd. This task is really starting to use up quite a bit of time to resolve, more time than I am comfortable charging the client so that means it's becoming expensive also. I've done this before in other applications and from my understanding you define a frame that doesn't exist to the "Frame" field of the outline entry properties and that should open the URL in a new window, not the case here. Also, if I try and view the source of the frame which contains the iNotesOutline "Company Intranet" doesn't show up anywhere and I also believe this may be rendered by a JAR file but I'm not 100% certain of that.

So, is there anyone out there dear reader that may have a solution to this issue? I'm all out of options, have a lot of wasted time and money and not to mention the frustration of something that should seemingly be simple and quick to implement taking forever and still not working.


XPages experience and resources

07/19/2009 9:24 AM By Keith Strickland

I've recently started messing with XPages and I think I like it. Now there is a rather steep learning curve for XPages, especially if your web development hat is as dusty as mine. I even had to bust out the "Beginning JavaScript" book by Paul Wilton (which is an excellent JavaScript reference). But learning them is certainly doable, and quite fun (in a geek sort-of way). But this trek started with an OpenSource project I've been working on which I mentioned a little over a month ago. I want a web gui to go with the project so I figured it was the perfect excuse to delve into XPages head first.

My first impression with XPages seems to be pretty good, it's easily implemented, looks nice and easily compartmentalized (is that a word?). As I said above the learning curve is pretty steep and when using the @Functions it is easy to make a mistake, since those are now serverside JavaScript it is case sensitive. I've also noticed any bad habits you have with using LotusScript and @Formulas that those bad habits really come back to bite you as you try to use that knowledge in the XPages world. As for all the controls, it seems that everything I've needed has been there in some form or fashion. My biggest issue so far has been trying to figure out how to use a checkbox. In the notes client a checkbox is a multi-value field with each value being a checked checkbox, in XPages they are individual elements and a field with values already there doesn't seem to translate over, at least I haven't been able to figure out a way yet, but I'm sure it's there somewhere. Radio buttons are similar but a little easier to figure out.

But something that has provided A LOT of help is the excellent XPages tutorial over on Declan Lynch 's site. This is a great reasource to get you moving in the right direction. Thanks Declan! Interestingly enough though there is no mention of how to use Check Boxes or radio buttons in this tutorial or any of the other tuturials I've come across.

Some other resources I've found are listed below:

I guess the biggest complaint I've had with this process is the quirks of the 8.5 designer. The double-clicking to open a design element is killing me. Also, sometimes it takes 4 clicks to get a group of design elements (say XPages) to open and show the XPages in that group. I know that isn't a very good description of what I'm talking about. But hopefully the resource list above will get you on your way to starting XPages. I am by no means really knowledgeable enough to really speak about XPages in any way other than my experiences so far, but this trek should be something new and interesting and produce some really nice applications. Plus it seems that this is really the next logical step for Domino development.


Looks similar...

03/05/2009 11:22 AM By Keith Strickland

Was just looking around over on the LifeHacker website and found this article about Zoho Writer 2.0. Other than it appears to be competing with Google Docs I think it looks a lot like Lotus Notes 8.x. Kinda cool.

zohowriter20.jpg
zohowriter20-notes.jpg

NotesRichTextStyle.PassThruHTML = True issues...

02/03/2009 1:50 PM By Keith Strickland

I'm working on an application where I will have to build a document on the fly so I figured the best way is to do it inside of a rich text field and mark the contents of that field as Pass-Thru HTML so it will render as HTML in the Notes Client. However I've run into an issue getting my Rich Text style, specifically the PassThruHTML = True style, to work. I'm also using the NotesRichTextStyle.Bold = True property and it is called just before NotesRichTextStyle.PassThruHTML = True and it works fine, so I don't understand why the PassThruHTML isn't working. Are there special conditions for using this property that I didn't consider? No errors are being presented it's just the text in the Rich Text field isn't marked as Pass-Thru HTML. I am able to highlight the text and select the menu option Text\Pass-Thru HTML and it marks the text as Pass-Thru HTML as is expected, I just can't do it programmatically.

I've posted in the ND8 Forum with no responses (heck I even answered a couple of questions while perusing the forum) and I'm at an impasse. Surely this property works and it's probably me just missing something. I've read the help a couple of times and searched all of the forums with no luck.

So, I've put together a class (DomRTTable) that builds a table in a rich text field and then there are methods and functions for populating the table cells within the class. Now I'm not entirely sure I wrote this class but it's commented the way I commented my code before I found LotusScript.doc so I think I developed it, if not I apologize to whomever did and if you let me know I'll certainly give credit where credit is due. But back to the topic at hand. Now this class is proving to be quite handy with the exception of the issues I've described above, but seeing as how I don't have that much experience dealing with Rich Text I believe I may be in over my head.

But for those interested in messing with the class I've posted it in the Downloads section for your computing pleasure and hopefully someone can point me in the right direction for correcting the PassThruHTML issue. I posted the offending code in the "Read More" text.


Continue Reading...

How do you use Script Libraries

01/26/2009 8:58 PM By Keith Strickland

I've been working on this huge application that was written years ago and is full of hard coding of server/database names, email addresses, etc. These databases also usually have many script libraries that contain no functions, only sub-routines. These sub-routines do not return any values and mostly modify the values in a document somewhere. I really don't like this technique, I prefer to use functions that return a value, this way at least the function is kind-of reusable, even if it is only reusable within the specific application that it resides.

Now, to get around all the hard-coding I use a profile document whose sole purpose is for recording the path to the required application(s). I then developed a class with a few sub-classes which can be used within each of the applications to ease the maintenance burden of maintaining this application across multiple sites. This seems to be working fairly well it's just that there is a learning curve for using the classes. But this is kind-of off topic.

So, how do you prefer to use a script library, are they full of sub-routines which modify documents here and there or do you prefer to use functions which return a value? I understand that each has it's place, but to have 10 script libraries with 20 sub-routines within each library that is only called once seems like a waste of time, energy and space. What are your thoughts?


SnTT: Display inline HTML images in the Notes 8.0.1 client

01/07/2009 6:32 PM By Keith Strickland

I've been working on a reservations application for my employer and one of the requirements was for a picture to be provided of a resource and for that picture to show up in the reservation. Now that sounds like a simple enough request but unfortunately it's easier said than done, or so it seems. Now, the normal way to do this is to create a "Computed Text" area with a value containing an tag with the appropriate URL to the image. But, this doesn't really work, you get a red box with an X in it instead of the image. Also, whenever you open the document in edit mode the picture shows up. Also, if you right click the red box and select "Show Images" the picture shows up just fine. So, what's the deal?

I found this post in the Notes 8 forum which explains it quite nicely. It seems you have to include a Computed for Display field on your form named "$DelayedImagesOK" with a value of "OK". Once this field is present the images will show up all of the time without having to edit the document or select "Show Images" from a menu.

But I thought that was pretty cool, plus it kept me from having to figure out how to do it with MIME


Lotus Notes 8.0.1 and Composite Applications...

12/11/2008 2:40 PM By Keith Strickland

Over the past 24 hours I've been trying my hand at composite applications. Needless to say I haven't been making much headway. I've found several tutorials on them but the tutorials already have some of the wiring properties, code and property assignment to actions in the demo databases. Also, going through the tutorials, they don't explain why you do something a particular way. I'm the type of person who needs the why in order to learn something new.

I'm only starting to comprehend what's supposed to be in the wiring properties, kind-of, but I've still got a long way to go. I started down this road because of a project I'm currently working on. I thought combining all the databases that kind-of go together and rely on one another into a composite app. Plus it would be a good learning experience, especially with a real application instead of one I just toss together.

But, I was hoping that maybe someone could point me to some other resources that may help me understand the "why" of wiring properties and/or a visual layout of how things work for composite apps. I've already found quite a bit on them that has helped a lot (at least now I understand what a composite app is). But I still need something else to help guide me to composite app enlightenment.

Here are some of the sources I've found so far:


Initial Notes 8.0.1 impressions

12/11/2008 1:30 PM By Keith Strickland

My place of employement is starting to roll out Lotus Notes 8.0.1 standard. I've been using it now for a few weeks and thought I would post up my initial impressions and a quick review.
Likes

  • The UI is gorgeous, but we all knew that.
  • No problems with backward compatibility, so far
  • Composite apps, more on that later
  • The sidebar able to accept Google Widgets

Now, I know all of that is old news, as is Lotus Notes 8x and these are things most everyone likes. In the few weeks I've been using it I've encountered on a couple of issues and they were mostly my fault. But these are the things that I don't like about the Notes 8.0.1 client
Dislikes

  • The toolbar doesn't stay the way I put it, everything is in a different place everytime I start Notes 8 (See below screenshot)
  • Sometimes you have to play gently with it or it'll crash on you
  • That freakin' huge java console screen when the client crashes, it's bigger than my monitor
  • Some widgets I remove from the sidebar come back

Overall I'm really enjoying Notes 8. I mean the things above that I don't like don't happen that often, except the toolbar thing which is really annoying. Now, we just need the designer client to be in Eclipse which will be available for Notes 8.5, but until then I can live with this

Notes8Toolbar.jpg

Lotus Domino 8.0 on SuSE Linux 11

12/08/2008 12:57 PM By Keith Strickland

This weekend I installed Lotus Domino 8.0 on Open SuSE Linux 11. The install process went pretty flawlessly and no errors were encountered until I went to start the Domino Server, with the exception of a warning that SuSE 11 isn't supported, but I'll get to that in a second. My Linux box is a basic computer with a Pentium celeron processor running at 1.8 GHZ with 700 MB RAM and 3 disk drives totalling about 350 GB. This server is serving the roles of the home Lotus Domino server for documentation storage, testing, etc. It's also a web server running Apache for setting up and testing some of my customer's test sites and also a file server running Samba. All of this is behind my firewall and not accessible from the outside.

I've been without a test environment for quite some time now and I must say I'm happy to have it back. The internals of this server had been sitting under my desk forever, running but not really serving a purpose. It also just had 35GB of disk space that wasn't allocated very well so was pretty much useless. Now I had all the hardware from my old server that this website used to run on also sitting underneath my desk, but the processor fan stopped working on it and it basically overheated something on the board and/or the processors. So, I just took the best hardware from each machine and combined them into one. This was pretty painless with the exception of finding graphics drivers for the ATI graphics card that wouldn't lock up the machine. But I got to thinking that I really don't need a GUI so I just start the box at runlevel 3 which prevents it from loading X and gnome. So far I'm happy with the setup.

Now, even though I did receive a warning that SuSE 11 wasn't supported I proceeded along anyway. The setup routine ran flawlessly with no errors. I did a custom installation of Domino as since this is a stand alone server and I'm pretty much the only user I didn't need scheduler, replication, smtp and all that stuff (but we may revist SMTP for sending mail) so none of that was enabled. I also chose Remote Server as the configuration option and used the Remote Server Setup program from my Windows box, especially since the GUI was giving me issues. Once the installation was completed the listener service for the Remote Server Setup client started without hitch. I connected and setup the server to my liking. Once completed, the listener service stopped and I then attempted to start the Domino server. This is where I ran into issues. I tried starting the server from the notesdata directory with a command line like "/opt/ibm/lotus/notes/80010/linux/server", this immediately produced an error. The error was complaining that libnotes.so couldn't be found. I verified that libnotes.so was indeed present and that the permissions were properly assigned (root.root 755). So, I started searching the web. I didn't really get very far as I found a lot of people complaining about the error but no real solutions as how to fix it. After reading this post on Declan 's site I wandered around following links and found that I was using the wrong path to start the server So, to make a long story a little bit longer to start the server you should be running this command from within the notesdata directory "/opt/ibm/lotus/bin/server" this will start the server without the libnotes.so error. Hopefully this little gem of information will save someone some hair pulling.

Once I figured that out, things went pretty quickly. No problems were encountered and everything is now running as it should. I moved everything off of my windows box where I had Domino 8.0 beta 3 running onto the new linux box and I also moved all of my working files, icons, installations, etc. It's so nice to have a working, non-jerri-rigged test server again. I didn't realize just how handy a test server is until I did without one for awhile.


Freebie: Group Membership Lookups

11/19/2008 8:59 AM By Keith Strickland

Here's another freebie for you. A simple little app that doesn't even save any documents but provides a means to lookup users to see what groups they're a member of or to lookup groups to see who is a member of them. It'll use the Domino Directory on whatever server the database resides. Pretty simple really. But you can find it over in the downloads section.

Enjoy!


Handy freebie...

10/31/2008 11:46 AM By Keith Strickland

I've posted a little DB I developed for copying databases over in the downloads section. It works OK, especially for the price

Enjoy!


Lotus Notes perception in the workplace...

09/24/2008 10:15 AM By Keith Strickland

I can understand the all too often common perception that Notes is bad or out dated or insert your own complaint or whatever. I've recently moved to an organization that is a very large notes shop. Some of the apps are very old to say the least and badly written. I can and usually do spend hours trying to figure out where an element is getting it's sometimes 5 deep of computed values, value from. This makes the application slow and on top of that the UIs are terrible and there are hundreds of views in some of the apps, further contributing to the slowness.

As I've said before, the perception people have of Lotus Notes is a direct result of the apps they use within Lotus Notes. If they're using an app that is bloated, slow and ugly then they'll think Lotus Notes is bloated, slow and ugly. Even if we as Lotus Professionals know better.

This post over on Ed Brill's site and also over on Duffbert's site is what got me to thinking about this. These kinds of articles that are quoted on those sites are the reason why we as developers need to ensure that we produce quality applications that are functional, perform well, look good and function as a user expects it to function. We all need to continue being Lotus Notes evangelists as much as possible.

Lotus is a great tool that is flexible, powerful and I know of no other product that will allow you to develop with whatever technology you're most comfortable with (@Formula, LotusScript, VB Script, Java, Javascript, CSS, HTML, etc.). Heck, you can even use VB objects within a Notes application if you're so inclined. That's why we love it so, it'll do most anything you ask of it (within reason of course).


Field Class frustrations

08/01/2008 4:12 PM By Keith Strickland

After reading the Event Binding series over on Tim Tripcony 's website I found something useful for the DominoField Class that I wrote about a while back.

The idea was if I could get a handle on the Field class for a particular field I could run a postopen event of a document, collect all the fields as an instance of the DominoField class in the array and then define my own events or extend the built in events for each field on the document. I could then define some form of validation or have an event for each field on the form which would then make the DominoField class useful. Unfortunately I can't find any way of getting a handle to the field class, I guess I could go to each field on the document and in the entering event pass "Source" as a parameter of the DominoField class but that kind-of defeats the purpose.

Maybe some of you might have an idea of how to get around this, as it's very frustrating.


New Version of the ExcelData class

06/24/2008 11:32 AM By Keith Strickland

OK, I've made a few more updates to the ExcelData class and fixed a few bugs. You can find it over in the downloads section. I hope you find it useful.


Hidden NotesSession properties

05/08/2008 4:22 PM By Keith Strickland

I was poking around the OpenNTF Codebin today and found this little gem by Andrew Jones. I don't know if this has been around for awhile or not, but it's pretty handy none-the-less. I had been using this class, also from the OpenNTF code bin to perform this type of stuff, though I never could find anything to get the internet domain name. Now I can, which is cool...


Selling Lotus Notes within your organization

05/03/2008 10:10 AM By Keith Strickland

This is a followup to my answer over on Ed Brill's site. I wanted to write more about how I sold Lotus Notes solutions within the Government agency I work for and the role it's played.

When I arrived at my current position Lotus Notes didn't really have a very good name. It was seen as ugly and only email with the exception of training sign-up trackers, simple document repositories and other basic applications, nothing complex. There was a current Lotus Notes project that was started prior to my arrival for doing building assessments after a natural disaster that was prompted by the aftermath of Hurricane Katrina. While the application worked, it kind-of wasn't what it could be. I took on this application with the goals of a) Improving the overall way it looked b) Adding more notification capabilities c) Simplifiying the interface. With these goals in mind, version 2 of the application was a success and version 3 will be much better. The community liked it, the managment staff liked being notified of events and less hand-holding was required. While some of the people that used it aren't very technically savvy and still required some hand-holding the majority of people understood it and were able to use it.

This application started the ball rolling of more awareness of what Notes is capable of. This application also had a sister application for managing building contacts. Some of the assessors would go to a building, have a contact number to call to gain access to the building but when they called that number, the phone inside the building was ringing. This was unacceptable and a new application was started to manage all the contacts for a building. The building manager, elevator contractors, janitorial contractors, etc. This proved to be invaluable and improved the response times by providing people the information they needed when they needed it. With the release of this application it really opened management's eyes about what was possible and that maybe Notes should have a bigger role in disaster response tools for keeping track of tasks, who is assigned tasks, who needs to be contacted to complete a task and communication between people in the field and people back in the office space. Since then a couple of other disaster response applications have been developed and are looking to be nationally used within the agency I work for.

Now, with all the applications I develop I try and come up with a nice color scheme and get inspiration from people such as Chris Blatnick , Nathan Freeman and Martin Vereecken for simple, elegant user interfaces. I can't stress enough how important a nice interface is. It really does affect the way that Notes is portrayed within an organization. If you can't provide nice UIs and include features that can at least compete on some level with your .NET applications, people won't even think twice about waiting for .NET developers to become available to work on their particular problem.

Fast forward to today. Now, if a project has a tight deadline or has been waiting for .NET developers to become available for a long time, it's now considered acceptable to at least ask if it's a fit for Lotus Notes. If it truly is a problem that Lotus Notes can solve I'll say so and sell it passionately. If it's not a problem that Lotus Notes can solve then I'll say so for that too and defend it. I'm not a "Notes can do that" guy if Notes isn't the most logical solution to a certain problem. Some applications NEED a relational database behind it. While notes can be a solution for most any problem if addressed properly, it really isn't for everything. With this in mind, if the customer wants an application to only be web based then it'll usually (9 times out of 10 anyways) be a .NET application. If the customer really isn't sure of what they want, it'll usually end up being a Notes application, with this the .NET developers and myself have come to a mutual respect. They get to do what they love and I get to do what I love, win/win.

I wrote this to show that a single person can make a difference in how Notes is perceived within an organization and how often it is looked at to solve a particular business problem. If someone is a "Notes can do that" person no matter what the problem might be, you probably won't be taken very seriously within your organization and get a lot of eye rolls. If you are passionate, yet still are willing to say, "maybe Notes isn't the best solution" when it's really not the best solution people will have much more respect for you and Notes which in turn will bring more people to your doorstep seeking a solution. To go along with this you have to be able to at least show what the product is capable of, provide nice UIs, include "added value" features such as charting capabilities, inclusion of reporting features (we use SQL Server 2005 Reporting Services with LEI pumping data to SQL Server), inclusion of other .NET applications embedded within Notes (via a Microsoft Web Browser control) when it makes sense and they compliment each other. Do all of these things and anything else that will shed a positive light on Lotus products and yourself, avoid taking on project that will show the weaknesses of Lotus Notes and yourself, and you'll always come out ahead.


SnTT: DominoField class

05/02/2008 2:08 PM By Keith Strickland
QuickImage

I know it's been awhile since I've written, but today I've been working on an extender class for a Notes Field. Now, I'm still relatively new to creating classes and all this might not really be all that good, not sure really. But this class is called the DominoField class and adds some properties which I think would be useful. If you can think of anything that I'm missing, got obviously wrong or you think would be cool, let me know and I'll add it.

Now looking at this I don't think I'm actually extending the Notes field class. I think this is just a way to capture more information about a field. I couldn't find any documentation on extending a base Lotus Notes class but I am still looking. I tried inheiriting from the Field class but it never would compile and would actually crash my client, so you may not be able to inherit from an included base class. Then again, it could be that I just didn't know what I was doing

But some of the properties we've got here are:

  • fieldLabel - This allows you to define a label for the field for friendly validation, or whenever you need to present a field name to the end user
  • fieldModifier - This will store who the last person to modify the document was. If the value of the field has changed it will display the current user, else it'll show the last entry in the NotesDocument.Authors property
  • fieldName - This will return the name of the field
  • fieldValue - This will return the current value of the field
  • oldValue - This will return the value of the field when the DominoField class was initialized
Like I said, I don't think this is really extending the Field class but adding some useful functionality none-the-less. You can find the .lss file over in the downloads section, enjoy


Cool Feature - Input Enabled

04/04/2008 10:27 AM By Keith Strickland

OK, I just found a cool feature. Now this may have been around for a while and I just wasn't aware of it . But one of the Events of a field is called "Input Enabled". Here you can put a formula that evaluates to "0" (False) or "1" (True). If the value evaluates out to "0" then an end user will not be allowed to change the value of the field. In the past I just made it "appear" that the field wasn't editable or I hid it and showed a computed for display field instead or whatever means I could think of to hide the fact that it was still editable. While this worked it wasn't very elegant.

Now, if you look at the help file on "Input Enabled" you will notice that it says this event is for an "Native OS Style" field and doesn't mention any other "style" of field. Well, it works on any style field, not just "Native OS Style". With a Native OS Style field it actually greys out the field, but with a Notes style field you just can't change the value. This is cool


Post Title - Blogsphere Bug resolved

04/02/2008 7:16 PM By Keith Strickland

OK, I posted a discussion post over on OpenNTF in the BlogSphere project about the Post title not showing up in Google Analytics. This happened after I upgraded to the 3.0.1 B8a version of BlogSphere and I moved my Google Analytics code over to the Configuration document. Well last night I got to thinking about where in the header the title tag showed up. So I got to looking and the title tag was at the very bottom of the head tag (hope that makes sense). I modified the RenderEngine.Blog lotusscript library, RenderEngineBlogHTMLHeader function. I moved this code up above all the script tags:

If permaLinkDoc Is Nothing Then
    RenderedText = RenderedText + ""+configDoc.cfg_basic_BlogName(0)+"" + Chr(13)
Else
    RenderedText = RenderedText + ""+configDoc.cfg_basic_BlogName(0)+" :: "+PermalinkDoc.EntryTitle(0) + PermalinkDoc.AlbumName(0) + PermalinkDoc.PhotoTitle(0) +"" + Chr(13)
End If

This seems to have corrected the problem and all the visits from today are now showing the post title.


@Thisvalue and @Thisname

04/01/2008 9:05 PM By Keith Strickland

Since I've started wearing a developer hat instead of an administrator hat I've gotten to the point of how did we ever manage without @Thisvalue and @Thisname. Those two @Formulas make it easy for validation, computed for display fields whose only purpose is to make a page more readable among other things. Heck, for those computed for display fields you can even copy/paste the exact same formula all around. For example, you have 2 fields called FirstName and LastName, you then have 2 computed for display fields called dspFirstName and dspLastName. For the computed for display fields they can have the exact same formula of:
@GetField(@RightBack(@ThisName;3))
This will just display the values of the FirstName and LastName fields and not have the OS Style fields look like they can be edited. Simple huh?

While I know this post is kind-of trivial, but it's something I've come to depend on and use in a variety of situations. Now if only we could get some @Formula functions to use


SnTT: Flash charts in Lotus Notes

03/07/2008 12:06 PM By Keith Strickland

This week I've been working on getting amCharts to work in a dashboard I'm working on. I was pointed to amCharts and the inkling of how to accomplish this by the sample database from the LotusPhere 2008 session BP210: Reports, Charts and Graphs in IBM Lotus Notes over on Julian Robichaux 's site. In this SnTT, I want to show you another way to implement this functionality into your applications. It gives your applications a nice professional look and keeps the customer's boss happy with nice pretty charts.

charting.jpg

The dashboard is a form with a drop down box to pick the information you want to see and then a "Go" button to go out and get the pertinent numbers, create/update an XML file/document and then display 2 charts in a Microsoft Web Browser control embedded on the form. One chart is a bar chart with the hard numbers and the other is a pie chart which shows the percentages the numbers represent. The idea here was that I would display this information in a nice looking dialog box. However I couldn't get this to work. I spoke with Nathan Freeman because I knew he had worked with the Microsoft Web Browser control quite a few times and he informed me in a dialog box that the auto-run did not work for ole objects. I attempted to get it to work by using the PostOpen event to no avail. So, I ended up just displaying it as a normal form.

But to get this to work here's the path I followed, I'll also post a demo database in case my ramblings turn into just that, rambling...


Continue Reading...

Lotus Notes Help Systems and Bleed Yellow Sametime Community

03/02/2008 12:42 PM By Keith Strickland

I've been working on a help system for an application that I'm developing and I must say I find it kinda neat. I've never done a help system before, I generally just write up a user procedures document and post that in the "Using This Database" object along with some "Getting Started" procedures. I got the idea from Kevin Pettitt 's SuperNTF hosted over on OpenNTF. This is a cool product that shows some the better techniques for accomplishing things which you may have never thought of.

While implementing this I ran into a snag. Whenever you click a help button or press F1 it would take you to the correct document and then navigate away from the document to correspond to the "On Open" property in the View Properties for the "Contents" view of the help system. After trying to figure out how to fix it for awhile, I finally broke down and found Kevin on the Bleed Yellow sametime community and asked for some help, which he promptly pointed me in the right direction, Thanks Kevin!.

I think the Bleed Yellow sametime community provided by Lotus911 is a great resource when you hit a roadblock. You can speak with some of the most forward thinkers in the industry which can also lead to interesting discussion on how to do something better or differently. Not to mention if the author for a product you're using is there you can discuss the product or any issues you may be experiencing with the product. Way cool Lotus911.


News, Rambling and updates

02/13/2008 8:21 AM By Keith Strickland

I know I haven't written in a while, it's been hectic here. But I do have some news about Lotus Symphony . I picked up the latest copy of CPU Magazine and in the Bleeding Edge Software review section there was Lotus Symphony. I thought that was pretty cool

On to something else... In my previous post I talked about a bug with BlogSphere v3.0.1 B8a in the downloads section that attachments weren't showing up. Well it turns out that my page template was missing the crucial tag to include the attachments Thanks to Kevin Pettitt who pointed me in the right direction as I had been digging through the code. I also updated the Class-ExcelData.lss file that I attached to my previous post in the downloads section with the newer version.

In other personal news, I finally came up with a UI that I was talking about in this post. I ended up dropping the horizontal navigation as the customer didn't care for the initial mock up of this, which I guess as far as notes applications go is pretty new (I may be wrong). But they did like the ideas of bringing contextual data into a form (layers) so you don't have to navigate away from what you're working on to see a pertinent piece of information (Embedded Frameset). I would like to thank everyone that replied to my plea for help in that post.

So, until next time....


ExcelData class update and BlogSphere v3.0.1 B8a bug

02/03/2008 10:42 AM By Keith Strickland

I was looking at this post over on developerWorks and went looking for the URL to my ExcelData class only to find out that in the downloads section, all the download documents didn't contain their attachments So, I submitted another bug over on OpenNTF.

But, I've made some changes to my ExcelData class to include some more features and functionality. I also fixed a few bugs that I've encountered over the last few months. But I'm going to try and post the LSS here in this post, whether or not it'll work I dunno, but we'll see.

Hmmm, ok that didn't work too good, so, I'll just post all the code in the "Read More" link, sorry it isn't formatted all pretty, but that makes it too large

OK, this is getting ridiculus, let's try another way....how about a link to Class-ExcelData.lss


UI Design

01/26/2008 12:19 PM By Keith Strickland

I've started a new application at work. I've been trying to come up with a UI for the application but everything I come up with is boring and is starting to look like my other applications. I've been trying to get some inspiration from Chris Blatnick 's site and Nathan Freeman 's site to no avail. Though I will be using many of the techniques that they have discussed no matter how the application looks. I've also been looking at some other web sites trying to come up with some ideas. Maybe I've hit an imagination slump (like I had that much imagination to begin with )? Maybe it was the lack of attending Lotusphere this year, which is usually a great source of inspiration?

I want something new and fresh, as this application is going to be very large by my standards (probably very small by some) and will have a lot of visibility within the organization and will put a positive (I hope) light on Lotus Notes. I've been very vocal at this place of employment preaching about the capabilities, rapid deployment and that Lotus Notes applications don't have to be simple, but can be robust, complex applications using a variety of technologies, capable of whatever is asked of it (Lotus Notes Evangelist). While we don't have the most recent version (we're just starting to move to R7), I still try to put modern ideas and designs into production, no matter how simple of a task is required.

I've come up with a basic navigation structure using a horizontal menu (thanks Chris) that I think will work for me and also it will require a couple of places with an embedded frameset (thanks Nathan). While these are, at the moment, merly ideas on certain pieces of the application I still haven't come up with a color palette or what I want the application to look like. Now I'm sure some of you think the logic should come first and then the UI, but I've always started with the UI and then incorporated the logic to minimize my time in changing the logic to accomodate the UI, and that seems to work for me.

So, I guess I'm requesting your help on providing some inspiration. Maybe a site that has been a good source of ideas for you or a UI you particularly like, or whatever. I just need to get out of this slump so that I can stop wasting my time redesigning this same initial form over and over.


Following LotusPhere 2008 virtually

01/21/2008 9:53 AM By Keith Strickland

Trying to follow the Opening General Session (OGS) virtually this morning. I've found a couple of people live blogging

I was looking for a webcast but can't seem to find one. If anyone has a link to a webcast that would be great!


Do you Bleed Yellow?

01/19/2008 9:38 AM By Keith Strickland

Looks like Lotus911 has a hit on their hands with the Bleed Yellow website which went live yesterday. I know I'm late on catching this and you've already read about it on other blogs. But poking around a little bit within the site it's very cool. You can search profiles for tags, blog, browse and share dogears (links), create and join communities and participate in activities. Very cool indeed and it appears to be built on Lotus Connections.


LotusScript.doc and Design Catalog

01/16/2008 9:15 AM By Keith Strickland

I know I haven't posted anything in a while and I apologize about that, and with LotusPhere coming up there is a lot of excitment here in the Lotus Community. Unfortunately I won't be attending this year, but hopefully next year I'll be back.

I've recently started looking for ways to document and manage the functions and classes I use in almost every application I develop. I came across LotusScript.doc which does create some very nice documentation which is viewable on the web. I've been using MindJet Mindmanager to document my classes as it spits out a fairly nice outline with all the examples and everything (you can see an example here). But with LotusScript.doc it actually serves 2 purposes. It forces me to comment my code, yes I try but I'm not always diligent about putting in usable comments and it takes those comments and creates pretty decent documentation thus saving me time. Granted it isn't as pretty as a Mindmanager MindMap, but it does spit out very useful documentation.

I've also been looking for some kind of version control software for Lotus Notes and haven't really been that diligent in the pursuit, but came across Design Catalog by Tim Tripcony over on OpenNTF. Now I've just started messing around with it and am trying to get my head around exactly how it works and how it can help me keep a tally on the different versions of applications and design elements.

Another app that I've found is Code Library by Marko Bonaci. I actually found this app a couple of months ago and started using it here in the office. It's a great place to store re-usable functions and such so you can share it with other team members. It's more manual than Design Catalog but works none-the-less, you just have to stay on top of it when something changes.

I think these 3 tools are great for attempting to keep track of your code and provides a means for you to keep track of documentation, code and version control (though the jury is still out on this one). Now whether or not I'm diligent enough to keep up with them, that's another story that only time will tell. I hope everyone enjoys LotusPhere, wish I could join you.


Idea Jam idea thoughts...

12/23/2007 1:20 PM By Keith Strickland

I was looking at Idea Jam this afternoon and came across this idea posted by Adibabu Kancharla. While I didn't promote the idea I did find a humorous comment, here's a quote from it:

And then AmigaOS 4.0 is just around the corner and will show once again to the whole IT industry how things should be done, for the next 20 years again.

Now I did a little (read very little) bit of research about AmigaOS 4.0 and found these screenshots of AmigaOS 4.0. Looking at these shots, it looks like early Linux, I say early from about 5 or 6 years ago. Then, yes this look was very new and fresh, but not so much so now.

As for the idea itself, there are several websites which show different techniques for accomplishing rounded corners which have served me well this past year in quite a few applications. Rounded corners give your application a clean modern look in my opinion. Now that's not to say that everyone shares that opinion:

Rounded courners are obsolete, it was just a fashion trend. If you see anywhere rounded corners you can say "omg this site is so 1980!" :)

But the gist of the comments in the above linked idea is that it's not a good idea, that this sort of functionality should not be included in the client but instead for the client to have more CSS support, with which I agree. CSS support in the client would make it so much easier for our notes applications to match the corporate colors, logos and styles present within any organization. I can't speak much for web development as I don't get to do very much of that in my current position, but what little web development I do, I make extensive use of CSS.

Maybe I'm just rambling, but I found the discussion intriguing none the less


Microsoft Web Browser control

12/22/2007 9:56 AM By Keith Strickland

Like I posted earlier I've been messing with the Microsoft Web Browser control in a notes form displaying and allowing to interact with SQL Server 2005 Reporting Services. Even though I couldn't get Google Charts to work I am however able to get Reporting Services to work. Now, designing the report is a bit of a chore as I'm not really that familiar with Visual Studio or SQL Server Enterprise Manager. I say that I'm starting to venture over to the dark side messing with this stuff

But here is a screenshot of an application that will be the first one to use the reporting services within Lotus Notes.

HRTS_reporting.jpg

Microsoft Web Browser woes...

12/18/2007 7:08 PM By Keith Strickland

Today I started playing around with the Microsoft Web Browser control. I had the idea that I should be able to display Google Charts based on selections in a view or field values on a form. The problem is that when I navigate to a chart in Google Charts I get a javascript error. However, the exact same URL works in Internet Explorer and Firefox. Since I've just started playing around with kind of functionality I'm not sure what version of IE is being used, I'm assuming that it's whatever version you have installed on your machine, but I may be wrong. But since leaving the office I think it may be a permissions issue, I guess I'll need to check my ECL and see what kind of permissions can be tweaked there for Javascript.

But I got this idea from a couple of places. At the office we're starting to use SQL Server 2005 Reporting Services, which is pretty cool, it allows you to do ad-hoc reports from a SQL database via a web interface. So, another thought is that I could embed the reporting services in the Microsoft Web Browser control, which would be pretty cool also. I've yet to try that approach, but theoretically it should be possible, but since I've not been able to embed the charts I may not be able to embed something so complex.

If I ever get this to work I'll post a SnTT on what I'm doing, but with my initial attempts it's not looking promising.


Embedded categorized web views...

12/11/2007 12:06 PM By Keith Strickland

Today I encountered an issue where I'm using a $$ViewTemplate form to display a displayed as HTML, categorized view. I have a readers field on the form that is being displayed in the view with a Role in the Readers field. Theoretically the only documents that should be visible in this view are the documents which the role the current user has is in the readers field. However, blank categories were showing up as blank entries in the view and the real content was pushed off the page. So, when you visited this view on the web it appeared that the view was empty, but it wasn't. I went searching on developerWorks and found this forum post stating to put a column in front of the categorized column with a value of "". That's a pretty easy workaround.

Now, I had done the obvious of checking the checkbox in the view properties "Don't show empty categories" and unchecking "Collapse on database open", but it still didn't work. This kind of stuff is really frustrating , while I did find the solution fairly quickly, I think this sort of thing should just work, I shouldn't have to jump through hoops to get it to work.

Also, another gripe... There were several posts that stated the same problem with replies that stated to do a search, one of them there were 4 replies all saying to do a search. Now I understand and agree that yes, they should have done a search. But, if you're working on R6,7 or whatever and you search in that particular forum, you won't find your answer which was posted in the R4 & 5 forum. (hmmm Idea Jam idea???) so those answers were pretty useless. Why not just don't reply if that's what you have to say, heck if you're going to take the time to post that reply, why not just send the person to the appropriate thread, as searching can sometimes be a long tedious process for someone who doesn't have a lot of time.

But I think after this little rant (sorry, it wasn't supposed to turn out that way) I am going to post an Idea Jam idea to combine all the forums as a lot of the answers in R4,5,6,7 are still relevant today. Rant Off


IBM is contributing composite applications tools to OpenNTF

11/20/2007 8:16 AM By Keith Strickland

I just read this over on Ed Brill's site. I think this is great news!. That post also states

This is but the first contribution in this effort.

Could this be an IBM movement of supporting and recognizing the contributions of all the great applications hosted over at OpenNTF? I hope so. Also, it could be that some of the developers for Lotus Products could start posting stuff that never quite makes it into their products? I really don't know, but I can't wait to find out.


SnTT: Build a Java String array from a view column

09/27/2007 4:02 PM By Keith Strickland

OK, more Java stuff today. Since I've been messing with Java I've found the need to build several arrays from the values of a view column. I assume it's probably common practice to build views just for lookups of keywords, to populate drop down boxes, etc. The problem is that the Notes Java classes don't provide something like @DbColumn which would be nice, but understandable that it's not there (at least that I know of). But I came up with this Java method and it seems to fit the bill whenever I need this sort of information.

Click the Read More link to see the code...


Continue Reading...

My co-authored article on IBM developerWorks

09/26/2007 8:48 AM By Keith Strickland

My first ever published article now appears on IBM developerWorks. It's called BlammoSplat: Build a community Web site of Open Laszlo animations, Part 1. This is a big deal for me as it's my first article (of I hope many) and it's something I've worked on almost nightly for the past month along with Nicholas Chase who wrote the Java, XML and done all the OpenLaszlo stuff.

BlammoSplat-DWHome.jpg

BlammoSplat-part1.jpg

I also participated in the developerWorks podcast with Scott Laningham (also my first time doing a podcast) who was graceful and done an excellent job of making me feel more at ease with the situation, as I was pretty....what's the word....in a full blown panic about the podcast, as like any geek, I don't function very well in a social/community environment. The podcast isn't available yet but should be shortly.

So overall I think a pretty eventful day yesterday.

Keith

IBM Joins OpenOffice.org Community

09/12/2007 9:42 AM By Keith Strickland

I found this tidbit on Lockergnome this morning. I think this is great news to hear that IBM is getting more and more involved in the Opensource community. But is that really a surprise for the company that has embraced sites like OpenNTF that they are getting MORE involved in OpenSource? I don't think it's that big of a surprise, but it is nice to see IBM get back in the Office Suite arena. I believe it's even more noble that they will be sharing some of the usability enhancements and initial code developed for Lotus Notes in order to improve the OpenOffice.org Office Suite which hopefully will take some market share away from Micro$oft.

If you're so inclined, you can see the text of the press release here.

Keith

SnTT: Java Method for building a checkbox dialog

09/10/2007 11:25 AM By Keith Strickland

Like I said earlier, I've been messing with Java more and more here lately, mainly to build graphs using JFree Chart. In just about every statistics report I'm doing I provide a checkbox for the user to select what data they want to display. So, I've built a Java Method/Function whatever you want to call it, that will simplify the task of putting a JCheckboxes in a JPanel with an instruction label and footer text with OK and Cancel buttons (See Screenshot).

constCheckBox-Java.jpg

The idea here is to build an array of strings, determine a window title, label text and if needed footer text and pass that to the method which will then loop through the array and build the JPanel according to the information you pass. you can see the example here. The constCheckBox method will then spit out a dialog which should look something like the one above. One of the stipulations of this thing is that the "chkBoxes" variable (from the sample code) has to be declared as a global variable something like "JCheckBox chkBoxes[];" above the notes main section.

OK, so I can't post the code , it's too big to post all the HTML for the formatting and stuff . So, it's available over in the downloads section

So hopefully this will be of use to someone other than myself. I know I didn't go into much explanation of the actual code I think I mainly posted it as a reference to myself to see how to do this sort of thing in the future as I imagine this kind of functionality is used quite often. I kinda like this Java stuff, it's starting to make more sense .

Keith

Delving into Java a little bit more....

08/24/2007 2:40 PM By Keith Strickland

This week I've been delving more into Java to determine what benefits it will provide me on the Lotus Notes development side. I've wrote about doing this a few times in the past but never really pursued it. I think I haven't pursued it becauase there really isn't a lot so far that I can do with Java that I can't do with LotusScript and plust I haven't really had a need for Java until a couple of weeks ago. But I would like to start using it more to widen the possibilities a little. I wrote about a Java agent to lookup the sAMAccountName in active directory a couple of weeks ago which was a good start at using Java a little bit more. Also today I dug out the sample database and slides from the LotusPhere 2006 Java Jumpstart session presented by Julian Robichaux and Thomas Duff to come up with some statistics reporting for an application that was wanting a couple of charts. I think this just goes to show what kind of information gets put out at sessions like these especially being that it is still very relevant today.

I've been using the Eclipse IDE with the Domiclipse plug-in. I really like this setup but when you start having to use Java Libraries it doesn't bring that import over into Domino. It includes an import statement in the code, but that doesn't work, you've got to click the "Edit Project" button in Domino Designer and point it to the Java Library. That's really no biggie but for someone just starting that's kind-of confusing.

So hopefully I will start to find more uses for Java in my day to day duties as so far I really like coding it. But the biggest problem is I don't know yet just when it "should" be used and when it "shouldn't" be used. Also, I'm not sure of my capabilities of adding useful features to the applications I develop using Java. Such as... Can you do ABC with this new application? I can't do it with LotusScript but can I do it with Java??? I don't know, but we'll find out I guess.

So, I know I've been rambling on now, so hopefully I'll start progressing more and more with Java and it'll become a useful part of my developer toolbox. I look forward to learning more about it.

Keith

Administrator stubborness >:-(

08/14/2007 10:20 AM By Keith Strickland

I'm currently in a battle of egos I think. The Administrators want control of their address book. I can totally understand this as I've been a Lotus Notes/Domino administrator for about the past 9 or 10 years, so I get it. But when it comes to group management the administrators need to swallow their pride a little bit. Here's the situation. Currently only the main office administrators are allowed to create and delete groups and also add/remove members to those groups. I understand that they should be the ones creating/deleting groups in the domino directory. But to add/remove members also? This results in application owners having to call the helpdesk, get a ticket opened and routed to the wrong people to complete the job and then an email sent to the main office to have someone added to a group. But before the person is added to the group investigation needs to happen to make sure that the person requesting that someone be added to a group is authorized to make that request. Between all the pitfalls it could take days to get someone added to a group due to mis-routing tickets and mis-communication, unacceptable!

I proposed creating groups for applications and then allowing the application owner and someone they see fit being the Owner of the application's groups and then they (the owners) can add/remove people from the groups as they see fit. It is after all the application owner's data, not the administrators, that the owner is granting access to. The powers that be don't think that basically any end users should be able to modify anything in the Domino Directory, including groups. I understand this mentality, but in a large organization this starts to get out of hand and requires the hiring of another administrator whose main duty is managing group membership, again, unacceptable and not to mention boring for the new vic guy off the street administrator!

Maybe I'm being overzealous about this issue, maybe I'm not. But I don't think customers should have to wait for someone that don't know anything about their data to grant access to that data. I looked for a best practices document out on the web but couldn't find anything specifically naming group management, maybe someone knows of a good resource for this?

Rant Off...
Keith

SnTT: ExcelData Class update

08/13/2007 10:37 AM By Keith Strickland

Instead of storing the ExcelData Class in 2 static pages, I've exported it to an LSS file. You can find it over in the Latest Downloads section. I've added some more functionality to it and hopefully it'll be useful to someone other than myself. There is some funkyness in the constructor for determining the filename being used, but it does work. I've also included some documentation on the class that was created using Mindjet Mindmanager 5.0.

I know this is a pretty lame SnTT but, it's been awhile since I posted one and figured it was time I posted something.

Keith

lsxldap bug and Java Agent

08/01/2007 9:23 AM By Keith Strickland

OK, I posted earlier about a bug I've encountered with lsxldap. I never did find a way to get lsxldap to login and I've never gotten around to trying it on my home system. So, I broke down and wrote a Java agent to do my lookup. I gathered code from several sources and modified it and got it working. The biggest problem I encountered was trying to catch an InvalidAttributeValueException within a try/catch block. But instead of me rambling on with this as some of it I have no clue what it really does, here's the code I ended up with, hopefully someone will find a use for this...


Continue Reading...

lsxldap bug....

07/26/2007 9:24 PM By Keith Strickland

I've started messing around with lsxldap at work again. I'm using it to lookup Usernames in Active Directory. I've done a how to on using lsxldap to do LDAP directory lookups before. But the problem is that at my current place of employment, they don't allow anonymous lookups to Active Directory. I can understand this, but it sure is a pain. So, I now have to login to do directory lookups. At first I think no problem, lsxldap supports logging in or binding to the LDAP server. While this is certainly part of lsxldap the problem I'm having is that I set the LDAPSession.DN and then the LDAPSession.Password. When I set the password it changes the value of LDAPSession.DN. So I try setting the password first and then the DN, well that changes the password. It's very frustrating and I was planning on trying to duplicate it here at home but forgot all about it and now it's late. I'll keep you posted on this issue.

In place of lsxldap I'm attempting to use Java to do my lookup, here I have 2 problems....1. I'm not a Java developer, I can do basic stuff but with a deadline looming it's difficult and 2. I didn't have a Java environment setup and I don't have time to install and configure Eclipse. I'll spend some more time with this tomorrow, but it's very frustrating as I figured using lsxldap I could have a solution in a matter of minutes, it's now on day 2 trying to get this simple lookup done.

If anyone can help me out with a Java agent that would be great.

Keith

Lotus Notes on Ubuntu Linux

07/15/2007 2:54 PM By Keith Strickland
QuickImage

I've started experimenting with Ubuntu Linux as an everyday platform for doing my day to day chores. I must say I'm very impressed so far with Ubuntu. I've also installed the Beryl window manager which works beautifully and looks great. All of the packages I've installed have been very painless, including Wine. In my previous experiences, installation of Wine and getting it to function have been very painful. Not so with Ubuntu, it all worked flawlessly and I had Lotus Notes up and running within about 15 minutes after installing Wine.

I installed Ubuntu along side Windows in a dual boot configuration, which also was pretty painless. I used the Linux System Rescue CD to resize my Windows partition. Once I got into setting up my Linux Partitions I figured out I didn't need to use the System Rescue CD, which was fine. The most difficult part of all of this was backing up my music, documents, pictures, etc. in Windows before installing Ubuntu. I was using the Sonic MyDVD. This was painful also, I ended up creating about 5 DVD coasters because the project wouldn't finish for some reason or another.

So far I'm pleased with Ubuntu, everything has just worked, not to mention using Beryl I get all the eye candy and more of Vista. I'm able to do most everything I do in Windows, including updating my iPod, with the exception of the few games I like to play. I haven't really tried them yet, but I'm assuming that they won't work, if they do then I really have no reason to keep Windows. Hopefully my games will work and I can ditch Micro$oft.

Keith

SNTT: Notes Client Breadcrumbs...

06/04/2007 10:28 AM By Keith Strickland
QuickImage

I've been doing a lot of work recently where the customer wants everything to stay within one window. For example, user clicks the All documents view and the view contents show in the right side frame, the user then opens a document and it is displayed in the right side frame. Now this is where the problem comes in, when we close the document how do we know where we just came from? So now you either have to do some magic I couldn't find documented anywhere or set an environment variable each time a navigation change is made so you know where to go back to. With more than just a few navigation choices this can get out of hand real quick, especially taking into consideration any embedded views on documents and the like. So, trying to come up with a solution to this dilemma I remembered bread crumbs being all the rage quite a while ago to be included in the navigation structure of web sites/pages. I know there were quite a few heated debates on what the bread crumb should contain, should it contain the shortest path to the content you're currently looking at, or, should it contain the path you took to get to the content you're currently looking at? Without rehashing old debates, it's much easier to populate an environment variable with the path the user took to get to where they're currently at within the notes client.

So how do we include bread crumbs in our notes applications? First we need to determine how the bread crumbs are to function...

  1. Bread crumbs should be populated in an environment variable (This is the only way I know to do this, please let me know if there is a better way)
  2. Environment Variable should be formatted like "Home-Choice1-Choice2-Choice3". We must format it like this because you can not include a text list with @SetEnvironment.
    If you use a text list for value, only the first value in the list is used; the rest are ignored.
  3. Anytime a "Close" button is clicked (to close a document or whatever) you should go back to the last visited location
  4. Anytime the Home choice is opened all the bread crumbs should be cleared, so the environment variable would only contain "Home"
  5. Bread crumbs can appear as a selection of different hotspots, but this may require a very complex hide/when for all the different locations in a table of some sort which I'm not going to cover in this SNTT.
So, with this criteria we can start to imagine how to put this type of thing together.

But on to how we can do this. Go ahead and create your navigation and basic design structures (pages, outlines, framesets, etc). I'm using a 3 frame frameset, with the top frame being the banner, left frame being named "Nav" and right frame being named "View". Next we'll be setting up the environment variable to be populated when we open a document, view or document containing an embedded view. So, determine which views are going to be a part of your navigation, with the exception of your "Home" view and modify the QueryOpenDocument, PostOpen and Target Frame (Double Click) events. I'm using 3 views in my navigation which will be accessed via an embedded outline on a page. The views are vForm1, vForm2 and HomeView. There are 2 other views also called (embeddedView) and (All Documents) which are used as an embedded view in a form and for document lookups.

BreadCrumb Demo.gif

Continue Reading...

Changes for OpenNTF

05/29/2007 2:01 PM By Keith Strickland

I just read this post from Bruce Elgort that he is leaving OpenNTF and passing the baton over to Vince Schuurman. Bruce, you've done an awesome job with OpenNTF and we all hate to see you go, whatever your next project they are very lucky to get you as a spokesperson, I hope you get as much success and satisfaction out of your next venture. Vince, you have some large shoes to fill but I'm sure you can take OpenNTF on to the next level.

Keith

SnTT: Highlight the active field - Part Deux

04/27/2007 9:31 AM By Keith Strickland
QuickImage

This is a follow-up post to my SnTT post I did this past Tuesday. Nathan Freeman made this comment which directed me to a better way to do this. Nathan says...

The first thing I'd wanna try is using a pair of nested tables, with both borders turned entirely off, but with the inner table having an outside border of 2px all the way around. Then set the outer table to use a background IMAGE, where the image is computed. Then you just need two small GIFs that Notes can stretch to fit.

Now, I had to read Nathan's comment about a 1/2 dozen times before I understood what he was saying but once I opened up designer it was quite obvious. The only difference is I didn't use 2 images, I set a 1px border on the inside table and had the outside table use a computed background image only when the field within had focus. In the interest of brevity I will only post the differences between this technique and the one I posted about the other day.

So, start with creating a 1 column, 1 row, fit with margins table (Outside table). Then create another table inside this one with the same properties (Inside Table). Once this is done, modify the Outside table properties 2nd tab like below. You'll also want to hide the lines in the outside table which are above and below the inside table or you'll get a BIG orange border on the top and bottom of the inside table when the field is in focus:
FieldHighlightOutTableProp2.jpg

Now modify the 3rd tab properties and define a computed background image for the table:
FieldHighlightOutTableProp3.jpg

Here is the formula I used @If(Highlight = "FirstName";"SunnyHighLightBackground.gif";""). Notice I don't have a background image if the Highlight field doesn't equal FirstName? This is one of the places I didn't do exactly like Nathan said. I tried it, but didn't like the large 2px border when the field wasn't in focus.
FieldHighlightOutTableProp3Fomula.jpg

On the 4th tab I kept the 2px outside top and bottom borders so everything is still spaced nicely.

Now, on the Inside table, set the following table properties.Here is another place I strayed from Nathan's advice. I'm using a 1px border here with a lighter color than the background image above. This actually works pretty well since the colors are pretty close to one another you don't notice this border when the field is in focus and the background image is being displayed.
FieldHighlightInTableProp2.jpg

Again I set the background color of the Inside table to white to match the field's background color.
FieldHighlightInTableProp3.jpg

And on the 4th tab of the Inside Table properties box set the outside border to 2px all the way around
FieldHighlightInTableProp4.jpg

And that's it for the table properties. Now, onto the field...


Continue Reading...

SnTT: Highlight the active field

04/23/2007 4:08 PM By Keith Strickland
QuickImage UPDATE: Removed the Entering event code from the Highlighted field, not required for this technique

I haven't done a Show-n-Tell Thursday Tuesday in a couple of weeks so I figured it time to do one. Earlier this week I was browsing the web and came across a website (Sorry, can't figure out which one it was) where the field that the cursor is currently in, that field had a blue highlighting around the border of the field. I thought that was pretty cool and figured we should be able to emulate the same thing in a Notes form. Now, whether or not this particular tip works on the web, I don't know, but theoretically it should, but I haven't tried it.

When I first started trying to do this I was thinking I could use an technique from Chris Blatnick on making programmable tables, but since the border style of a table is for the entire table this wouldn't work. So I had to come up with something else.

To get an idea of what I'm talking about here take a look at the screenshot below. Notice how the Middle Initial field has a darker, wider border than the other fields? Well that is the active field where my cursor currently resides. Now as I move through the fields, whichever field my cursor is in will have that bigger, brighter border.
Highlighted-Field.jpg
For some of the more talented folks out there with photoshop or something similar you could make a border image that glows or something like that.

Now to do this really isn't that difficult. We just have to add 2 1 column, 1 row tables with a right side margin so the table doesn't stretch all the way over to the right side border and 2 fields for each editable field that you want the highlighted border around and then a hidden control field. You could also use an environment variable in the notes.ini file to accomplish this which may be faster. I used a field called HighLight. We'll start with the table. Create a 1 column, 1 row table that fits with margins and change the following:

On the 2nd Tab make the "Cell Border Style" Solid and pick a color
Field-Highlight-TableProp1.jpg

On the 3rd Tab pick a color for the background. I would suggest using the same color as your field background, in my case white
Field-Highlight-TableProp2.jpg

On the 4th tab make the Border Style "Solid" and pick your color. If you're the talented type with photoshop make it "Image" and point it to your border image. Also, give yourself a top and bottom outside border to keep the spacing nice
Field-Highlight-TableProp3.jpg

Finally on the 5th tab setup your right side margin. In my case I set it to .550"
Field-Highlight-TableProp4.jpg

Next is to put your field in the table we just created. Make a new field that is "Native OS Style" and set the width to 100 "Fit to Window%". I named this field "Middle"
Field-Highlight-FieldProp1.jpg

On the 2nd field properties tab, give the field a border of "None" and uncheck "Allow multiple lines" (this will not allow the users to press 'Enter' while in the field)
Field-Highlight-FieldProp2.jpg

Set the Text Properties of the table to the following to hide the field:
Field-Highlight-TextProp1.jpg


Continue Reading...

LCLSX, SQL Server and DXL, oh my…

03/22/2007 11:27 PM By Keith Strickland

I’ve been messing around quite a bit here lately with LCLSX, getting data out of a MS SQL Server DB and exporting it to an XML file that will then be imported into a Lotus Notes database. Now I know you’re asking why I don’t just import it right into the documents themselves? Well, that’s a good question, I certainly could do that, it would probably be much more efficient. I’m trying to get some experience with XML/DXL and see what all is involved with getting this sort of routine to work. I think that once I get a handle on it we can find more uses for XML data, be it with Lotus Domino or some other platform. We have a lot of projects going on where we’re moving data back and forth between platforms and XML is a common interface between all these different platforms.

Now I also think that learning to better utilize XML that it will open up Lotus Notes applications to being a little more friendly with ad-hoc reporting. I’m sure you’re familiar with someone wanting a report with all sorts of choices and what not. We figured up what it takes to do that in Lotus Notes and it’s however many choices squared, so, if someone wants 4 different choices you’ll have to create 16 different views. This can get out of hand really quickly. Now, I’m sure that there is some third party software out there that will allow ad-hoc reporting with data stored in Lotus Notes/Domino, but we’re not big on spending 10s of thousands of dollars on these solutions. We’ve tried integrating Crystal Reports into using a Lotus Notes database but weren’t able to get NotesSQL to work reliably, it works on one machine but not another that’s supposedly configured the exact same way, not to mention that you need Lotus Notes credentials which are kind of difficult to get at my place of employment, especially for a server.

Now I may just be rambling here and not knowing what I’m talking about, but I think it’s worth looking into, especially since I’m tired of creating un-necessary views which just hurt the performance of my nice applications. I’ll keep messing with this and report back. Until then…

Keith


Lotus Domino 8 - Beta 2

03/13/2007 5:59 PM By Keith Strickland

Today I was experimenting with Lotus Domino 8 and found something I think is a pretty big deal. When you upgrade Domino 7 to Domino 8 you can customize what is installed, one of the choices is Lotus Domino as a Windows Service. This was installed on the R7 version. The problem I ran into is that it gets removed from the Windows Services list, so the LotusDomino (data1) service is not present. I don’t know if this being an upgrade or a partitioned server makes a difference or not, but the service certainly did get removed. I’ll check out the Notes/Domino 8 Public Beta Forum and see if anything has been posted there yet. If not, I’ll post this.

Keith


Excel Class Updates

03/12/2007 12:31 PM By Keith Strickland

I’ve made some updates to the Excel Class that I posted earlier. I’ve been using this class for the last couple of weeks and it works pretty good with the exception of trying to include the text of a Rich Text field. Seems to error out at around 37 records. I can’t really figure out why, unless there is something like an attachment or whatever in the Rich Text field that it’s having issues with. But then again, seems that anytime you want to mess with Rich Text fields that you’ve gotta jump through hoops to get it to work reliably.

You can see the class here. A couple of the functions were stolen uh leeched uh borrowed from a Class posted in the OpenNTF Code Bin by Christian Gorni. Also of notable mention is some code that Ben Langhinrichs helped out with in a notes.net Lotus Developer Domain IBM developerWorks forum post.

I hope someone finds this class useful and if you have any ideas for stuff to add please let me know and I’ll try and add it. Just remember that LotusScript OOP, well actually OOP in general, is new to me and I’m still learning (as is probably evident in this code )

Keith


SnTT: An Excel Class

02/13/2007 7:19 PM By Keith Strickland

Here’s a Show-n-Tell Thursday for an Excel class that I’ve been messing around with. When I started it I really didn’t know what I was doing, I still don’t fully know if I know what I’m doing or not <img src="http://www.keithstric.com/A55BAC/keithstric.nsf/emoticons/KSTD-76UQW9/$File/22.gif"> . But, I really needed an excuse to start messing around with some Object Oriented Programming in LotusScript since I attended a lot of sessions at LotusPhere concerning it. So, I busted out the old class I started a few months ago. I’m really not going to explain all this as it’s really, really simple. So, keep reading to see the code, oh yeah, please forgive the AWFUL formatting, I used the lsToHTML tool over at Julian’s website, but it seems the version of Wordpress I’m running really don’t like it that much, so, it looks bad, but don’t let that leave you with a sour taste in your mouth for Julian’s tool, it just doesn’t work for this version of Wordpress…

OK, I gave up on posting the code inside this post, so, I just put it in it’s own html file here.

, ,


LotusPhere 2007 wrapping up….

01/25/2007 4:30 PM By Keith Strickland

Well, I just left Julian’s and Rob McDonagh’s LotusPhere2007 session on Error Trapping. They talked extensively about OpenLog, which looks like version 1.5 will be available soon, cool! I’ll just re-iterate what they put out in the session, if you’re not using OpenLog, you should be. It’s very robust, configurable can do notifications of events or errors. Version 1.5 is only going to improve as you’ll be able to trap web errors and the DB will have an RSS feed which you can subscribe to instead of notifications coming in the form of an email. Which is way cool.

Last night’s party was to say the least, all wet. if you ever get the chance to visit Disney’s Animal Kingdom there are some good shows. I caught the It’s tough to be bug show, which is a 3D movie/animatronic show. The 3D effects are OUTSTANDING! Some of the bugs you would swear are right in front of you. I also saw the Lion King celebration show, which was pretty good. It’s a musical and we all got to hear Declan’s version of the sound a wart hog makes. Good stuff. Some decent food was also there along with drinks, which by the way was all free, very cool. I did not ride the Mount Everest ride as the line was very long and i just didn’t feel very roller-coasterish last night.

Oh, last night’s speed geeking session was pretty cool. I don’t think it was meant to teach you anything as it’s hard to teach something in 5 minutes, but, quite a few of the speakers did get your mind working, which I think is what the purpose was to begin with. A lot of the stuff I’ve seen this year for LotusPhere has done exactly that. I plan on delving into OOP LotusScript a little more diligently as I think it will make me a better developer. The biggest problem is that even though I’ve changed jobs I still don’t have any peers to look over my code, so I’m still isolated from that sort of interactivity.

I think this year’s LotusPhere was excellent. A lot of good material was presented and some cool new features and products were announced for Notes 8, which I’m looking forward to the public beta. So, until next year…

Keith


Wrapping up the day…

01/24/2007 8:18 PM By Keith Strickland

OK, Here’s a run down of today’s LotusPhere2007 sessions. The calendaring and Scheduling session was, to say the least, HORRENDOUS! I don’t remember the guys name, but he seemed very nervous and extremely DRY, I apologize to the guy, but I ended up having to leave as I was nodding off. I imagine the content he put out was relevant but I couldn’t take it anymore.

My next session was yet another of Bill’s sessions, it was the Devblast - 30 LotusScript Tips. Bill put out a lot of good information and keeps my mind on how I can start writing better code going forward and fix the code I’ve written in the past. I spoke with Bill about the best way to start cleaning up my existing code and start moving it towards an object oriented structure, which I think will be rather difficult, I just need to start chopping it up into logical partitions and go from there, or at least split it up into functions.

My next session will be yet another session of Bill’s (geesh, how much can the guy talk, just kidding Bill , you really should publish a book with this information as it’s GREAT information) which I’m rather looking forward to and that’s “Leveraging the Power of Object Oriented Programming in LotusScript”. Listening to Bill speak of this really keeps reminding me of just how good of an idea this is, I wish I had known better when I wrote the User Administration Utility as it’s got the makings of turning into a really horrendous app to maintain, simply because all of the processing is lumped into one agent, pretty much in the Initialize event of the agent. So I think this is where I’ll start delving into OOP, as it has the possibility of being looked at by many people and those people can point out the things I screwed up that get by me.

After this we’ve got Speed Geeking, which should be entertaining at least and then the party. Hope to see you there, if it’s not raining.

Keith


Kinda slow this morning…

01/24/2007 3:10 PM By Keith Strickland

I guess with the combination of long days and short nights at LotusPhere2007 I’m starting to wear a little thin. I can’t seem to get going this morning. My first session of the day is at 11:15 in the Dolphin. I have spoken to the developers about the NotesRegistration Class, SwitchToID method. The scenario is this…

  1. Create a button to detach an ID file from a document to the local drive and then switch to that ID file
  2. Do not include a password in the SwitchToiD method
  3. You are prompted for the password to the ID you were just prompted for (as would be expected)
  4. Press cancel and it locks up your Lotus Notes Client

The developers did in fact confirm that it was a bug, but, there seems to be some confusion on who’s bug it is… Security’s or whoever is in charge of the NotesRegistration class. I’ve been bringing this bug up since 2003 and it’s never been fixed. In the mean time, I guess we’ll just have to live with it.

Later today we have Speed Geeking, this should be an interesting topic (sorry don’t have a link to point you to), seems you go around a room of workstations and the people there show you in 5 minutes some cool things you can do with a lotus solution. It should prove to be unmanaged chaos if you ask me, but we’ll see, I’m looking forward to this session.

Keith


More sessions…

01/24/2007 4:12 AM By Keith Strickland

OK, I attended Nathan Freeman’s and Chris Blatnick’s LotusPhere2007 session and I must say it was awesome. They put forth many techniques for improving your UI and ways of developing an application, beginning with the UI then the backend, which is a pretty interesting idea and I’ve kinda-sorta been following that recipe to some extent. The problem being that my customers really don’t seem to care what the UI looks like, as long as it works. But me on the other hand, I like the UI to look at least OK, I admit I’m no where as talented when it comes to UI design as these 2 guys.

After that session I attended the OpenNTF Birds of a Feather session. Some good discussion was initiated concerning the future of OpenNTF, application ideas, requests for help, volunteers for help, documentation and similar to IBM’s Blue Washing having a Bruce Washing for released applications on OpenNTF. I kind-of like that idea, as long as it doesn’t really limit the templates being put on OpenNTF. I think this would be a good thing for mediocre developers with projects (aka Me ). Discussion of including components for Notes 8 was also a  topic, which I’m not sure if anything was decided or not.

Last of the night I got a bite to eat and went to catch a bus that had already stopped running. There were about 40 or so people in the same predicament, so, we had take a cab back to the hotel. That was a real hassle as we all thought the buses ran until 9:00pm, guess not . Tomorrow will be another busy day which I look forward to and also the Wednesday night party. Hope to see you there…

Keith


Advanced Object Oriented Programming for LotusScript

01/23/2007 7:09 PM By Keith Strickland

I just got out of Bill’s LotusPhere2007 for Advanced Object Oriented Programming and I must say, as always, that bill has a way of inspiring mediocre developers to improved their code writing abilities to make things easier. This session was very informative and also Bill provided a downloadable database with examples, while I haven’t went and downloaded it yet I will. Bill put everything in a very easy to understand method. While I don’t have that much experience programming OOP, especially with LotusScript, I do plan on giving it a go and I think this is something that would certainly benefit me to learn. During the session I had to keep writing down ideas that popped up as Bill was presenting. I think this is the sign of an exceptional speaker, someone who will get your mind working and realising ways to implement this and it would be much better than what you currently have (hope that makes sense).

So, now I’m gonna spend some time down in the product show case and maybe some of the labs. I do plan on bringing up to the developers my issues with the SwitchToID method of the NotesRegistration class.

Keith


The Great Code Giveaway - Web 2.0

01/23/2007 3:23 PM By Keith Strickland

I attended the Great Code Giveway - Web 2.0 LotusPhere2007 session this morning and this session covered a lot of cool, practical uses for some of the AJAX type toolkits which are running about the web like wild fire. They even showed an IDE which runs completely in the browser. To me it kinda looked a lot like Eclipse, but cool none-the-less. They also made available a demo database with all the code they demonstrated. Way cool when presenters do this, you can take this stuff away and get ideas, most of the time just plug it into your app and it works, which is a developers motto I guess, why write what you can steal leech borrow.

I’m now waiting on Bill’s session of Advanced Object Oriented Programming for LotusScript. I imagine this will be way over my head as I haven’t really delved into OOP that much, just look at the User Administration Utility. My first experience with OOP was last year following the Java Jumpstart, which I have tried to continue to use Java when it makes sense, but not really so much. Hopefully I’ll get something out of this session that I can use to start cleaning up the User Administration Utility as I use a lot of globals (pain in the butt) and some of the code is duplicated (bigger pain in the butt). I’ll write later about this session.

Keith


Desiging a world class user experience for IBM Lotus Notes

01/22/2007 10:37 PM By Keith Strickland

Mary Beth Raven’s LotusPhere2007 session was a very informative session. She talked about the techniques they used to come up with the user interface for Lotus Notes 8. The steps she laid out for how they come up with the UI they came up with was very interesting and I think can be used for developing any application, not just an entire product line used by millions of people. If you get a chance once the session slides are posted you should download this session and take a look at the steps they used. Very informative stuff indeed and makes the brain cogs work a little overtime in how this technique can help you.

That’s it for today. I must say it’s been a very busy day and more is promised tomorrow. So, until then…

Keith


Creating Maintainable Lotus Notes & Domino applications - Writing readable code

01/22/2007 8:34 PM By Keith Strickland

I just left Rocky’s LotusPhere2007 session of Creating Maintainable Lotus Notes & Domino applications - Writing readable code. Rocky put out a great deal of information on how to organize things within your code to make it more readable and easier for the next person to come along behind you and understand what you were trying to accomplish with a piece of code. He also outlined his techniques for doing this, including naming conventions for all the different elements found in a lotus notes database. Very cool stuff.

I’m currently sitting in Mary Beth Raven’s session, Desiging a world class user experience for IBM Lotus Notes which I’ll comment on later. So, until then…

Keith


Worst practices & the General Session

01/22/2007 5:25 PM By Keith Strickland

OK, I’m currently in the worst practices session and so far Bill and Paul are hilarious. They put out some awesome tips and hilarious worst practices, including one I submitted, which by the way I’m not saying which one it was, but it was one of the admin ones. Overall this was a very enjoyable session and once again folks in the blogosphere I think make the best speakers, especially for the first sessions of LotusPhere, I think they set the bar way high for all the other speakers to jump to. I of course am referencing the Worst Practices I just attended and Julian’s session last year with the Java Jumpstart.

The General Opening Session had Neil Armstrong as a speaker, which he was very entertaining and he compared some of his experiences as a test pilot and astronaut to being an IT technician which proved to be pretty funny and relevant I think. Also, Lotus Quickr was announced which appears that it will replace Quick Place and be quite the replacement. I’m not sure I like the name though, it’s either very brilliant or very gay, not sure which just yet. But it appears Lotus Quickr will be a document management tool and also used to share and store content. You can choose which content to be public and it’s all going to be made available to others via RSS and Atom feeds. Best of all, the personal edition will be free to everyone who has a lotus notes license. The standard edition will be free to all who have a license for Quick Place. Also some very cool demos of Lotus Notes 8 were shown, which by the way I can’t wait to take for a test drive in one of the hands on sessions and learn more about activity centric computing. Also of note is that during the demos Ron showed that there will be a lot of cross product line functionality available to use SameTime, Connections, Websphere 6.0 and Lotus Notes 8 within Microsoft Office documents. Way cool.

LotusPhere2007 attracted more than 7000 attendees this year, which is a larger turn out than last year, I forgot the exact number they announced, but that’s really cool to see that the market is growing, and with Lotus Notes 8, Quicker, and also another product I think was called Connections is certain to draw more customers to the Lotus Side of the house. So far LotusPhere2007 is shaping up to be a great. Now it’s off to lunch and then the product show case.


More sessions after lunch…

01/22/2007 2:47 AM By Keith Strickland

OK, my second LotusPhere2007 session today was the Javascript and Ajax jumpstart. This was a great session by Scott Good. Scott put out a ton of information on JavaScript and using AJAX in your applications to improve performance, especially in views. This was my first introduction to XML, so, I guess my next session was a good followup to this one.

My last session of the day was XML + IBM Lotus Domino = DXL by Mac Guidera. This too was a good session. A ton of information that was a little over my head but a lot of good resources were put out which will probably give me a better understanding. There were good demos in both sessions which I will have to download and check out a little more in-depth.

The party was alright, not really my thing. I talked to a few people had a couple of drinks and then made my way over to Wyland Galleries. There I found quite the deal on a Jim Warren to add to my collection of Wyland featured artists. Of course I will have to clear it with the accountant of the family but I think I’m going to get it.

So, tomorrow we’ve got the General Opening Session which will probably show some of Lotus Notes 8, I also plan on visiting some of the booths in the product show case, do some of the hands on stuff and I’m looking forward to Bill Buchanan’s session on Worst Practices. So, till tomorrow, see you then.

Keith


JMP206 - Enterprise Integration: Moving your data around where you need it

01/21/2007 5:06 PM By Keith Strickland

This was my first LotusPhere2007 jumpstart this morning. It was a very informative session, all-be-it a little dry. I think this session has convinced me that we need LEI at my current place of employment. I have been getting data from MS SQL using the LSXLC via scheduled agents. While this works, it would be a lot nicer to use LEI, especially the virutal documents portion of the product. I currently get several documents from MS SQL only to populate drop down lists, virtual documents would work a lot nicer and improve the performance of the application. The speaker also showed virtual attachments which I also think would be extremely useful and also help improve performance of my notes applications.

While the session mostly focused on LEI the speaker also covered virtual fields using DECS, which comes with Lotus Domino. While I have used this feature on a couple of things, I think LEI would still fit what I’m trying to accomplish (updating a database of names when names are added, deleted and updated in the domino directory) much better and with more control and logging of the results.

Other topics while I’m posting, I found out the wireless adapter on this notebook was never configured properly, no driver is installed. So, while I’m writing this post I’m also downloading the driver for my wireless adapter. I thought I had checked everything before I left but I guess I was mistaken. Also, I found out last night that registration was open until 9:00pm, so I was able to register after all and still get back to the hotel at a decent hour and get some sleep in preparation for the week.

So, until next session, enjoy LotusPhere.

Keith


Obligatory Where I’ll be at LotusPhere

01/17/2007 3:20 PM By Keith Strickland

OK, I guess I’ll join ranks and let everyone know how to find me at LotusPhere2007. I’ll be arriving Saturday but it won’t be in time for the Bloggers party and staying at the Disney Sports Hotel, I know. Sunday will be full day of Jump Starts…

  • JMP402 - Introduction to SOA and Web Services
  • JMP206 - Enterprise Integration
  • JMP301 - JavaScript and AJAX Jumpstart
  • JMP302 - XML + IBM Lotus Domino = DXL

Monday:

  • BP104 - Worst Practices in IBM Lotus Domino Environments - Learning from the Mistakes of others
  • BP202 - IBM Lotus Domino and PHP, Let’s All Work Together
  • AD502 - Creating Maintainable IBM Lotus Notes and Domino Applications - Writing Readable Code
  • ID102 - Designing a World-Class User Experience for IBM Lotus Notes
  • BP302 - Best Practices for Delivering IBM Lotus Domino Applications to Wireless Devices

Tuesday:

  • BOF202 - Designers Unite: Developing Innovative Interfaces in IBM Lotus Notes
  • BP311 - The Great Code Giveaway - Web 2.0 Edition
  • ID401 - Activity Centric Computing - Getting Work Done
  • ID308 - IBM Lotus QuickPlace Rocks! The Future of Collaborative Document Management and Team Collaboration
  • BP101 - Designing the User Experience: Why Your Interface Matters
  • BOF507 - OpenNTF - An Open Source Community

Wednesday

  • BOF205 - Dynamic Interfaces with SML
  • AD305 - Application Development with IBM Lotus Domino and IBM DB2 Integration
  • AD510 - How to Deploy IBM Lotus Domino Applications to Mobile Phones
  • AD301 - Calendering and Scheduling 101: How to Use IBM Lotus Notes and Domino Calendar and Scheduling in your Applications
  • AD505 - DevBlast - 30 LotusScript Tips
  • AD507 - Leverating the Power of Object Oriented Progrmming in LotusScript

Thursday

  • BP312 - Trap and Manage Your Errors Easily, Efficiently and Reliably
  • Fly Home late afternoon

And that’s about it, I do plan on attending the Wednesday and Sunday night parties along with JamFest 2007 and maybe some others. I look forward to meeting everyone there.

Keith


LotusPhere 2007, I’ll be there…

01/09/2007 7:00 PM By Keith Strickland

It’s now official, I will be attending LotusPhere this year. However, since it was drawn out until the last minute I did not get a very good Hotel, not to mention, according to all the Hotels listed on the LotusPhere website there were no rooms to be had. So, I’m not in the Dolphin this year and will have to ride the bus back and forth.

I’ve downloaded the LotusPhere Sessions database and started putting my calendar together for the week also. From looking at the sessions database there is going to be a lot of very good content put out this year. There is also a link to download and install the LotusPhere Sessions DB on your BlackBerry. That’s cool and I did take advantage of that. Last year I did quite a bit of walking on the first day, according to my el-cheapo pedometer I clocked 7 miles. I don’t know if I will end up beating that this year or not, but I have a feeling I will.
I leave on Saturday afternoon to get to the hotel in time to check-in and make my way to the Dolphin and get my badge and goodies. For the increase in the attendee fees hopefully that money will go to a nice goody bag or at least more eats, drinks, etc. between sessions.

I look forward to seeing everyone there.

Keith


SnTT: Making a Back button for the Notes Client

12/05/2006 8:15 PM By Keith Strickland

I’m working on a database to track who clicks buttons which are sent out via e-mail. I’ve got a frameset with 3 frames. One frame has the header at the top, the left side frame contains the views and the right side frame contains the documents in the views and we’re also opening documents in this frame. The problem is when you close an opened document it closes the whole database, no good. So, we need a back button to go back to the view which we came from, which is the topic for this week’s Show-n-Tell Thursday. I searched high and low for the solution here and couldn’t find one anywhere. I finally decided to write the view name to a field when the document opens and then use the @Command([OpenView];ViewName) command. This kinda worked, however using the NotesView.QueryOpenDocument event to populate the field caused the document to open in it’s own window, so not such a good solution. I then populated the field from the NotesDocument.ParentView property during the NotesDocument.PostOpen event. This was however not working and leaving the field blank, but when I clicked the back button I went back to the view from where I came. This gave me an idea, let’s try @Command([OpenView];”") and see what happens. This works, it takes me back to the view from where I came from. Cool. So, after a half day trying to figure this out, here’s what I came up with for my back button:

@Do(@SetTargetFrame("Content"); @Command([OpenView];""))

This seems to have worked just fine from a document, however I don’t know if it’ll work for anything else. I hope someone gets some use out of this.

Keith


SnTT: Using the Log Analysis tool

11/22/2006 7:34 PM By Keith Strickland

I haven’t been posting very often of late and while I haven’t been posting I have come up with some good post ideas. Of course I finished the 2 part series of moving users within the hierarchy and today I bring you a Show-n-Tell Thursday post about using the Log Analysis tool within the Notes Administrator client. If you’ve ever started looking for a particular event within the log, say a certain failure that happened on 11/21/2006 but you don’t know what time it happened, then the log analysis tool is for you. With this tool it is easy to find a particular event when you don’t know what time it happened. Heck, if you’re patient you don’t even need to know what day it happened.

  1. Lets start by opening up the Notes Administrator client and pick the server whose log you want to search
  2. Navigate to the Server tab\Analysis tab and choose Miscellaneous Events
  3. Now expand the Tools\Analyze toolbar over on the right of your Administrator client and pick Log
  4. Pick the beginning and ending date(s) and times(s)
  5. Pick what your wanting to search for. You can choose words to search for a phrase or one of the other items
  6. Once you’re done specifying the search criteria click OK and it’ll start searching
  7. When the search is complete you can see everything it found listed by date/time

Animated Log Analysis

Now, if you ever want to go back over those results they are saved and you can get to them by clicking the Log Analysis Results view in the log from the Administration Client. This makes it easy to come up with a list of things to investigate and correct which is always a good thing, especially during down time like the upcoming holidays.

Log Analysis Results

You can even save your query. When you pick your search criteria and before you click OK, click the Queries tab over on the left of the dialog, check the “Save this query as” checkbox and give it a name. This way you can come back and just run the saved query instead of having to re-invent the wheel on that complex query you made. Pretty cool.

Log Analysis Save Query

I hope you find this tip useful and I’ll try to keep them coming, I’ve gotta catch up from slacking off here lately

Keith


AdminP Class - Completing the MoveUserInHierarchy

11/21/2006 2:37 PM By Keith Strickland

A while back I promised to do a Show-n-Tell Thursday article about the MoveUserInHierarchyComplete method which is part of the NotesAdministrationProcess class of LotusScript. Well, I finally broke down and finished it. This method will allow you to create your own agent to complete the move of people in-mass to another certifier, which if you’ve ever looked at tools to do this you know that they are very costly. So, when this method is used in conjunction with this method you have yourself a very nice solution for moving people, it’s just up to you to create yourself a view to categorize people the way you want them to make moving them easier.

So, let’s get on with it shall we? This is actually a little less complicated that using the MoveUserInHierarchy method. But first we need to set some properties of the NotesAdministrationProcess.

  1. UseCertificateAuthority = True/False - We need to define if we’re using the Certificate Authority or not. I spoke about this in the previous SnTT post.
  2. CertificateAuthorityOrg = /New/Certifier/US - This should be the new certificate the user is being moved to
  3. CertifierFile = c:\path\to\new\certifier\cert.id - If you’re not using the Certficate Authority then you’ll have to tell AdminP where your cert.id file is
  4. CertifierPassword = secret - If you’re not using the Certificate Authority then you’ll have to define the password for cert.id

That is all the preliminary adminP properties that we’ll need for this request. Next we’ll have to get the NoteID (not the UNID) of the original request. You can do that any way you like. Me personally, I loop through all the requests for whatever person I’m moving to determine which one is the original. The action for the request should read “Move Person’s Name in Hierarchy” and the ProxyAction field should = “6″.

Now, all that’s left since we’ve set our preliminary properties and gotten the NoteID of the original request is to call the complete move like this:
compMoveNoteID = adminP.MoveUserInHierarchyComplete(noteID)

And that is all there is to it, pretty simple huh? I’ll try and get some code out here that I use to do this from the User Administration Utility.

Keith

Here’s some of that code I promised…




Dim ses As New NotesSession
Dim db As NotesDatabase
Dim adminDB As NotesDatabase
Dim adminView As NotesView
Dim adminDocCol As NotesdocumentCollection
Dim adminDoc As NotesDocument
Dim adminP As NotesAdministrationProcess
Dim noteID As String
Dim compNoteID As String
Dim j As Integer‘Get all the databases, views and document collections
set db = ses.CurrentDatabase
Set adminP = ses.CreateAdministrationProcess(db.Server)
Set adminDB = New NotesDatabase(db.Server,“admin4.nsf”)
Set adminView = adminDB.GetView(“All Requests by Name”)

‘Get the Note ID of the request in the admin4 database. This only works if there isn’t an already processed request.
Set adminDocCol = adminView.GetAllDocumentsByKey(“John Doe/old/cert/US”)
‘Loop through all the adminp requests for the user and get the proper request
For j = 1 To adminDocCol.Count
Set adminDoc = adminDocCol.GetNthDocument(j)
If adminDoc.ProxyAction(0) = “6″ Then
noteID = adminDoc.NoteID
End If
Next

‘Complete the move
If certValues(22) = “Yes” Then
adminp.UseCertificateAuthority = True
adminp.CertificateAuthorityOrg = “/new/cert/US”
Else
adminp.UseCertificateAuthority = False
adminp.CertifierFile = “c:\path\to\new\cert.id”
adminp.CertifierPassword = “secret”
End If

compNoteID = adminP.MoveUserInHierarchyComplete(noteID)

This LotusScript was converted to HTML using the ls2html routine,
provided by Julian Robichaux at nsftools.com.


Continue Reading...

Product usability in relation to Lotus Notes applications…

11/16/2006 3:04 PM By Keith Strickland

I recently read an article concerning product usability. In that article (sorry, don’t have a link) it discussed studies of different products and how people reacted while using the product. For example, on a gas pump, before you could pump your gas you had to key in your zip code and press enter. The only problem was that the instructions never mentioned that you had to press enter, so, people would key in their zip code several times without hitting enter, get frustrated and leave without getting the gas that they initially pulled into the station for. In that article, it also spoke of the things to look at when creating a new product. Is it easy to use? Does it cause frustration or stress? Does it work the way you would expect it to work without carefully reading the instructions?

After some thought I came to the conclusion that we should be using these same theories and concepts when developing our applications. On an application I inherited, I had the opportunity to watch some of the users complete the main form of the application. This is an application that runs locally as when the user fills the form out they are usually in a place with no network coverage, once they complete this form they connect their blackberry to a tablet pc, connect to the corporate network and replicate their changes.

The problem with the form is that there is a button that says “Send Assessment”, now once the user completes the form they instictively click this button thinking it will send the form to the server. Not so, and this ends up being a point of frustration for the user. The fact is that the “Send Assessment” button doesn’t do anything except run validation routines and save the form. Also, clicking the save button does the exact same thing. So, why
the two different ways of doing the same thing with one way being a source of frustration for the user? Some suggested that clicking the “Send Assessment” button should also replicate. The problem with this is that the user’s blackberry isn’t currently connected, so it would not replicate and cause errors along with more frustration and probably anger. After some discussion this “Send Assessment” button will be going away. It’s existence is impracticle and a source of frustration for the users.

But back to the product usability stuff I started with… I think we as developers are sometimes isolated from actually watching users use our applications. When we are testing our own applications we are biased, we check the functionality that we have just been working on and this leads us to miss things that would stand out to a normal user. As with product usability a lot of testing and research go into getting a product to market to ensure that it has the best chance possible to succeed. I think we need to do what we’ve been doing when testing an application plus actually WATCH people use our application to judge their reactions, how they think it should work, how using the application makes them feel, not just the basic functionality, which will have an effect on the previously listed items. I think following these types of guidelines will help us make better user interfaces and applications that work more intuitivley (sp?) and not just the way we as Lotus professionals have gotten used to Lotus applications looking, feeling and working and have come to the conclusion, or bad habit, that that’s just the way a Lotus application works.

Keith


Workspace and Bookmarks frustration

11/01/2006 2:36 AM By Keith Strickland

I’ve recently been tasked with adding bookmarks to the workspace and/or a folder on the far left of the Lotus Notes window with links to people’s old archive files. I’ve come to the conclusion that Lotus must not have intended us as developers to mess with this. But the flow should go something like this:

  1. In LotusScript I need to get all the user’s current archive filenames from their home directory
  2. Add bookmarks for the archive files that are being moved to an archive server to the user’s bookmark bar on the far left of the Lotus Notes window

Now, the problems I’m running into are this:

  1. Formula language provides a means for adding bookmarks to the bookmark bar with an @command but doesn’t provide a means to get all the filenames from the user’s home directory
  2. LotusScript provides a means for getting the filenames but doesn’t provide a way to place bookmarks in the bookmark bar in a particular location

So, I’ve come to the following {hopeful} solution. Create a database to record the filenames/replica IDs in for each user. Do a @DbLookup to that database to get those replica IDs and loop through the replica IDs and add the bookmarks. This will require the user to click 2 buttons in order to accomplish the desired result. Hopefully that won’t be that big of an issue but it still isn’t very elegant but if it works and is within the required time frame then so be it.

As I do more and more development work I find that the code I’m writing is getting simpler and simpler, which I think is a good thing and makes more time to provide an elegant solution instead of a clunky one, which makes everyone happy and keeps a good light on Lotus Notes as a whole.

Keith


Cool UI Resources

09/24/2006 4:12 PM By Keith Strickland

At my new job I’ve inherited an application that has a butt ugly interface. It’s applications like these that spur websites like Lotus Notes Sucks. Now I’ve read through a lot of that website and I must say that there is a lot of sense and lessons to be had from this website, but that’s another post for another day.

But back to that ugly application. I am just itching to redesign the UI for that application, it was developed last year and in my eyes was just thrown together and the UI was not thought out at all. While doing some research on UIs and looking for ideas to leach uh steal uh get inspiration from I came across Interface Matters which is an excellent site that talks about User Interface Design and has an awesome article on using layers to create a cascading menu. Now I was directed to this website by Nathan Freeman and an article Nathan did on Layers. Go check out the UI Nathan came up with, it’s awesome and shows the versatility of Lotus Notes when someone with imagination, skill and a lot of creativity can create when they put their mind to it. I also came across Mary Beth Raven’s site which at first glance appears to have a lot of useful information and idea generating content on her experiences designing the Notes Hannover UI. I haven’t gotten a chance to read much on her blog yet but upon first glance I’m sure it will be informative. She has also been working with the Lotus Nots Sucks website to help improve the UI for Lotus Notes in general.

More to the point about badly designed UIs giving lotus notes a bad rap, I found this quote over on Interface matters in this article and I think it hits the nail on the head about a bad interface:

the polished apps will win the approval of the masses as long as they actually work. A Notes app may be better suited for the job, but if it doesn’t look good, it may be discounted as amateur or at least not suitable for the enterprise.

Now this statement I think is true no matter the application, not just specific to notes, but notes has always been a not-so-eyepleasing application with a lot of publicity stating that the UI isn’t the greatest or rather eye-candy challenged.

So hopefully by pointing out some of these excellent resources it will give you the insipiration to take a second look at the UIs you develop and realise that the UIs you develop and distribute will help put either a positive or negative perception of lotus notes as a whole.

Keith


Hi, I’m Notes…

09/19/2006 9:08 PM By Keith Strickland

Thomas Duff (aka Duffbert) has started some posts with more posts, which stemmed from the Hi, I’m a Mac and I’m a PC commercials. Pretty funny and quite accurate. Go check it out and wish Thomas a “Get Well Soon” from me while you’re there.

Keith


Cool resource by Alan Lepofsky

08/22/2006 1:51 PM By Keith Strickland

Alan posted this article today which contains some cool resources for Lotus Notes development. I visited this link which shows how to do several things with the NotesAdministrationProcess class of LotusScript (which by the way I posted about yesterday). I haven’t had a chance to throughly read that article yet, but I’m hoping that something about getting the Note ID of the AdminP request is mentioned there as I haven’t been able to successfully get the Note ID of the request to date (maybe it’s something I’m doing wrong). But give Alan’s post a read and the article about the NotesAdministrationProcess class certainly looks promising, so check it out.

Keith

,


AdminP Class - Moving a user to a new Certifier

08/21/2006 6:52 PM By Keith Strickland

I’m kinda new to the Show-n-Tell Thursday crowd and figured my first one should be pretty useful, albeit late. I can’t promise to have one out every Thursday, but I’ll try and do as many as possible. Today I’m writing about using the NotesAdministrationProcess and the MoveUserInHierarchyRequest method. This method will submit a “Move Person’s Name in Hierarchy | 6″ AdminP request. This method also has a followup method that must be run in order to complete the “Move” request which is the MoveUserInHierachyComplete method.

Now, the equivalent of this is to do a rename, choose move user and once the move request is complete, go into the admin4.nsf database and complete the move there. This requires you to do each user one at a time. But with some determination you can write your own script using the 2 methods above and move several people at a time. This beats spending hundreds of dollars for each user in the address book on a third party solution. As a matter of fact this is how I came up with this post. While at LotusPhere 2006 I looked at several tools to move many users at once to a different certifier. All of the tools I found were very expensive with the least expensive being about $200 per user in the address book, not pretty and not popular with the company bean counters. With a little bit of effort and admin privledges the spending of that money can be avoided.
Now, let’s get on with it. This post will be in 2 separate posts, the first one (this one) will cover the MoveUserInHierarchyRequest. This method is pretty straight forward but does require some attention. First off, we need to define some properties of the NotesAdministrationProcess.

  • UseCertificateAuthority = True/False - We need to define if we’re using a Certificate Authority or not. If you’re not, I highly recommend it as it’s a very simple and elegant way to handle user registrations and it makes things much easier on your administrators.
  • CertifierFile = c:\path\to\cert.id - If you’re not using the Certificate Authority then you’ll have to tell AdminP where your cert.id file is.
  • CertifierPassword = secret - If you’re not using the Certificate Authority then you’ll have to define the password for cert.id.
  • CertificateAuthorityOrg = /Existing/Certifier/US - This should be the user that is being moved existing certifier.

And that is all the preliminary adminP properties that will need to be set. Next off is to call the method and pass along some certain values in order to complete the request. So, here we go with that…
noteID = adminP.MoveUserInHierarchyRequest(”John Doe/Existing/Certifier/US”,”/New/Certifier/US”,False) - The False is whether or not to allow a primary name change for the user

Now, this should return the Note ID of the request in admin4.nsf. However I haven’t been able to get this to work, even by trying to go directly to admin4.nsf, lookup the request and get it that way. Getting the Note ID manually seems that the request hasn’t shown up in the view yet. Maybe I’m missing something somewhere but it seems that all of the adminP requests in the NotesAdministrationProcess class are “supposed” to return a Note ID, but none do, which makes it impossible to write code that will ensure that the request was submitted properly. Maybe someone knows something about this?

Now, you should be able to go to the admin4.nsf database and see your request in your preferred view. It’ll be of type “Move Person’s Name in Hierarchy” with an alias of “6″. You should also see a request in the “Name Move Requests” view of admin4.nsf

Now there are 2 ways to complete the move.

  1. Do it the “Lotus Preferred” way by manually going into admin4.nsf and completing the move
  2. Write an agent that uses the MoveUserInHierarchyComplete method, we’ll discuss this next week.

So, I hope this at least makes you aware that this functionality is available as of version R6 of Lotus Notes/Domino and that with a little effort there is no need on spending thousands of dollars on a third party solution just to move users to a different certifier.

Keith

OK, I’ve added some code to this. I hope you find this useful:

dim ses as New NotesSession
dim serverName as NotesName
dim userNotName as NotesName
dim admin4 as NotesDatabase
dim adminDocCol as NotesDocumentCollection
dim j as integer
dim adminp as NotesAdministrationProcess
dim adminpNoteID as String
dim newCertName as String
dim flag as Variant
dim adminDoc as NotesDocument
dim adminView as NotesView

‘Check if a request has already been submitted and is awaiting completion
Set serverName = New NotesName(db.Server)
Set userNotName = New NotesName(“John Doe/old/cert/US”)

‘get the adminp database and see if a request has already been submitted.
Set admin4 = New NotesDatabase(serverName.Abbreviated,“admin4.nsf”)
Set adminView = admin4.GetView(“All Requests by Name”)
Set adminDocCol = adminView.GetAllDocumentsByKey(userNotName.Abbreviated)
For j = 1 To adminDocCol.Count
Set adminDoc = adminDocCol.GetNthDocument(j)
If adminDoc.ProxyAction(0) = “6″ Then ‘a request has already been submitted.
flag = Messagebox(“A request of this type is currently awaiting completion for “ + userNotName.Abbreviated + “.”,0+48+0+0,“Already Requested”)
Exit Sub
End If
Next

’setup the admin process on this server
Set adminp = ses.CreateAdministrationProcess(serverName.Abbreviated)

‘do the request
‘Determine if the CA Process is being used. If not, detach the cert.id file. If so, then use the appropriate properties
If using a certificate authority Then
adminp.UseCertificateAuthority = True
Else
adminp.UseCertificateAuthority = False
adminp.CertifierFile = “c:\path\to\old\cert.id”
adminp.CertifierPassword = “secret”
End If

adminp.CertificateAuthorityOrg = “/old/cert/US”
newCertName = “/new/cert/US”

adminpNoteID = adminp.MoveUserInHierarchyRequest(“John Doe/old/cert/US”,newCertName,False)

This LotusScript was converted to HTML using the ls2html routine,
provided by Julian Robichaux at nsftools.com.


Install of Lotus Notes via SMS

12/15/2005 6:02 PM By Keith Strickland

At my place of employement we recently built and pushed an install of Lotus Notes R6.5.4 to the masses. This push was a total nightmare, 5% of the machines failed. Now the folks that are in charge of SMS stated that this is a good ratio. 5% failure is a good ratio? Not in my book. Before the advent of SMS I would develop a “package” for general use, I would basically take a blank machine with our standard corporate image on it, take a snapshot of the machine, install Lotus Notes and then take another snapshot of the machine. This was the portion for a new install. For an upgrade I would do the same thing except have a machine with an older version of Lotus Notes on it and then upgrade it and do the snapshot. I used the Wise installer to do this. Once the snapshots were completed I would modify the script that gets produced to ensure that the correct thing got done on the machine depending on if Lotus Notes was found, where it was, etc. I did this for several years and I had gotten pretty good with it. I didn’t have any means of calculating the success/failure rate, but this is what the helpdesk would use to install Lotus Notes and also all the field techs. I didn’t get very many calls saying it didn’t work.

Now, using SMS the people which build the package inform me that to build a Lotus Notes installer is very difficult. They do this for a living, why is it so difficult? I look at the package working files and they are Wise Installer files that have not been compiled yet. This really shouldn’t be this difficult, Wise has built into it everything you need in order to locate Lotus Notes and do an upgrade. You basically just use the Installer from Lotus to do this and it’s already built in.

But back to the push, we saw many different issues. On my machine I had Lotus Notes installed at C:\lotus\notes, well SMS found that, uninstalled it and installed R6.5.4 into C:\Program Files\lotus\notes. Doing this lost my desktop, ID file and bookmarks. It also got rid of my designer client and admin client. We also saw others that did this, along with one user where everything was moved to C:\lotuslnotes\lotus\notes with no data directory among others. When we tested the SMS package we tested with approx. 30 machines with different scenarios on them, you know, Lotus Notes R4 installed in C:\Notes, R5 installed in C:\lotus\notes and C:\Notes, Lotus Notes not installed, Lotus Notes R6 installed in c:\some\where\else. All these different scenarios were tested, I guess there were probably 6 or 7 different ones and they all performed as expected with the exception of the one machine which had 2 versions of Lotus Notes on it. This was acceptable as not that many people have 2 different versions of Lotus Notes installed.

With 5% of the total machines failing you think at least one of the test machines would have failed with some of the same symptoms as the ones that failed in production. Not so I guess. So now, in order to keep from having this headache the next time around we are going to start playing around with Smart Upgrade. However, I’m not totally sure how Smart Upgrade will function for someone that has User rights to their machine with full rights to the Notes directory. I’m assuming that since everyone has full rights to the notes directory that the Smart Upgrade will work. I had it working at one point in time but we never utilized it. So this should at least prove interesting at least. Get to do some R&D work, play around with some of the advanced features of Domino and learn more about distributing the client on a large scale all automatically. Should prove interesting.

Keith


Agent Testing

12/07/2005 12:14 AM By Keith Strickland

I’ve been working on version 1.4 of the User Administration Utility and wrote an agent to automatically delete users who haven’t used their ID in however many days which is selectable via a radio button. Well, I had selected 30 days for testing purposes but haven’t worked on the agent in a little over 3 weeks. Well, I look today as I was working on the documentation for the project and all my test IDs were gone. I hadn’t used them since they were created so it had been a little over 30 days. So, needless to say that the agent does work as it should. Now, I just have to decide if that’s a good thing or not.

Keith


Lotus Podcasts

12/02/2005 4:31 PM By Keith Strickland

Julian Robichaux and Bruce Elgort have put together a podcast which addresses various topics with Lotus Notes/Domino. I think this is a great idea. Today I started playing with podcasts and just stumbled across the Taking Notes podcast in iTunes. I subscribed and will start listening. I’m especially interested in the Web Services stuff.

I went to the Taking Notes Website and browsed around there. I also made a request for an interview with Jake Howett. I have learned so much from Jake just from him putting his findings and techniques on the web. I think that an interview with Jake would be very informative.

I look forward to these podcasts and will continue to subscribe.

Keith


New Lotus Notes Bug

11/16/2005 8:49 PM By Keith Strickland

I think I uncovered a bug in Lotus Notes today. I was working with a way to track user activity when I found it doing a full text search for a username with a middle initial. Here’s the scenario:

  • In a full text indexed database that has a form containing a username (i.e. John A. Doe/Acme) open the search bar
  • Search for John A. Doe
    • This should not return any documents
  • Now modify your search and search for John A.Doe (Notice, no space between the middle initial and last name)
    • This should return the document for John A. Doe

Now, the middle initial field must contain a period for this to work, or not work as is the case. Lotus support was able to duplicate this issue and an SPR was opened. This issue may have already been reported but they couldn’t find anything about it. I was able to duplicate this issue on R5, R6 and R7 servers with the R6 and R7 client.

This came about because of an agent I have been working on that searches activity.nsf for the username in abbreviated format to determine if someone has used any of our servers. If they haven’t used our servers for x number of days then we delete them. But anyways, I found it odd that I’ve never come across this as I work with usernames every day.

Now, I did find a workaround, it isn’t pretty but it does work. Within the username I replace “. ” with “.”. This seems to work so I can go forward. But it’s kind of frustrating that Lotus provides us with a LotusScript class to work with names and now I have to modify it’s output in order to use it. But, so is life.

Hopefully this will be addressed in a later version of Lotus Notes.


ID Management Article

11/11/2005 5:31 PM By Keith Strickland

I’ve written a short article on Lotus Notes ID Management in the Tech Documents section. Give it a read and let me know what you think.

ID Maintenance Guidelines

Keith


Hacking Domino

11/11/2005 2:04 PM By Keith Strickland

Jake Howett posted this blog about hacking Domino. I find Jake’s post disturbing as I’ve always touted Domino as being one of the most secure application and mail platforms on the planet. I also found the post very interesting and I plan to test this today or this weekend to see if the technique actually works. Also, I think we should be able to use the method and servlet that Jake speaks about to ensure our applications are secure.

Keith


IBM Developer Works

11/09/2005 8:47 PM By Keith Strickland

I was looking at the IBM Developer Works today and the forum. I posted awhile back about me getting a new pc. Well today I was messing around with getting my Lotus Notes Client setup on the machine and I remembered that you can access the Forums and such with your notes client. So, I tried it and only had reader access. I submitted my safe.id and got the e-mail back saying I was registered and could participate in the forums and such. Well, 6 hours later and I still only have reader access. Guess I’ll wait it out till next week to see if I can get into it with something other than reader access.

While there I saw that you can publish some of the content on your website via RSS. I have setup a couple of pages which I think might be of interest to the readers of keithstric.com. You can see it in the Tech Documents section in the Lotus Developer Works Feeds category.

Keith


Update on MIME mail

11/08/2005 4:35 PM By Keith Strickland

I was browsing CodeStore and came across a set of articles regarding sending MIME e-mail and thought it might be of interest. Jake wrote 3 articles and a sample database regarding the use of MIME to send HTML e-mail. Knowing the quality of work that Jake does and how much he has taught me in the past I’m sure it’s well worth a read. Check out these articles…

Sending HTML mail via SMTP part 1
Sending HTML mail via SMTP part 2
Sending HTML mail via SMTP part 3

Keith


Lotus Domino and IMAP

11/02/2005 7:42 PM By Keith Strickland

I was just messing around today with a test system I have here at the house loaded with Domino 7. While delving into the server document I noticed that there is an IMAP tab in the Internet Protocols tab. I enabled the IMAP port, started IMAP and was able to connect to that server with Thunderbird. Now, I’m sure none of the “Notes” functionality is there, like being able to send document links and such, but I thought this was really cool. Theorhetically I guess you could have Apache running with PHP and Squirrelmail and access your Domino mail this way. Now why you would do that and not use the iNotes functionality I don’t know, but it’s certainly interesting.

While messing around I did notice it’s not the fastest IMAP server in the world. But it does work. I was able to copy messages from my normal mail account into the Domino mail file with no issues, other than speed. None of the formating was lost and all the “From” e-mail addresses kept their value and also links inside the messages still work. So, I think this would be an excellent way to migrate from IMAP mail to Domino mail. Really cool.

As long as I’ve been messing with Lotus Notes / Domino I still find stuff I never knew before.

Keith

Update 11/03/2005 - One of the things I’ve noticed is that there isn’t a Sent Items or a Sent folder. I guess in Notes, the Sent view is not a folder, but a view. So I take back what I said about using this type of functionality to migrate mail, who would want to loose all their sent mail? But I guess all in all you could still use it for most of the move, just not that folder. What’s not to say that there could be some other method of getting this folder moved.


Just rambling…

11/02/2005 12:54 PM By Keith Strickland

I hope everyone had a Happy Halloween. I really enjoy seeing all the kids dressed up as pirates, princesses, vampires, vampiresses and every other thing of the imagination, they’re so cute. Now we’re all left with taking down the halloween decorations and getting ready for the Christmas decorations.

At work I’ve been messing around with sending MIME encoded emails. It’s interesting but confusing. I tried setting headers to match basically a plain text message but also include the header for HTML e-mails. It works for the most part but it’s a lot of trial and error. I assume I’ll get it working sooner or later (probably later rather than sooner ). But the problem is 2 headers, Content-Type: multipart/mixed and Content-Type: multipart/alternative. I need to have both but I can’t seem to get it to work. Without multipart/mixed you can’t have an attachment, without multipart/alternative you can’t do HTML e-mail. I need to do both. So I don’t know, I’ll have to do more research and see what I can find. I’m thinking you have to define child headers for each type.

I’ve also been playing with the Principal field. This field will allow you to change the “From” address in a programmatically generated email. It kind-of works but without a person document in the domino directory for who you set the e-mail to be from, it adds a lot of canonical stuff which I can’t figure out where it gets it from to the “From” address and is also sent “On Belhalf” of the agent or script signer. I’m thinking here I have to set some of the “INET” fields in order to get around this, I’m not sure. Heck, I can’t even find where those “INET” fields are defined as to what their names need to be. If anyone knows that would be great info.

Well I guess that’s enough for now. I’ll keep you updated on what I find out about the MIME encoded e-mails. If I get it working I’ll even post some code.

Keith


Directory Assistance findings…

09/14/2005 9:07 PM By Keith Strickland

OK, I’ve posted here and here about my trials with getting AD Authentication to work using Directory Assistance.

We had an AD service account created for all the servers which this service will be available on. The initial service account contained a $ in the Distinguished Name. Well after much testing we came to the conclusion that Domino doesn’t like the $. We took the $ out of the Distinguished name.

Also, in the AD object for the service account the servers or host names which are allowed to login is usually defined. This seemed to cause a problem as Domino didn’t like that either, so we had to take that out where any machine can login using the service account credentials. In my eyes, this is unacceptable and needs to be addressed. I think this may be another good question to ask at LotusPhere.

Once those 2 issues were addressed we were able to bind to the AD domain controller without using SSL. So this is good. We then turned on SSL and encountered a couple of issues mainly with my configuration. The biggest issue was with the field “Verify server name with remote server’s certificate”. We had this enabled and this caused problems. I think that the problem here is the fact that the host name defined in internally issued certificates contains a number used to track the certificate request and not the actual host name. I disabled this and all was well and functioned properly.

So, quite a few frustrating issues when you don’t have access to both sides to make changes, look at logs, etc and have to incorporate a few different groups of people to get things done. But, as promised, here are the field values I used in the Directory Assistance document:

Basics Tab

  • Domain type: LDAP
  • Domain name: AD Domain
  • Comapny name: My Company name
  • Search order: 4
  • Make this domain available to: Notes Clients & Internet Authentication/Authorization
  • Group Authorization: No
  • Enabled: Yes

Naming Contexts (Rules) Tab

  • N.C.1: */ */ */ */ */ * Yes Yes

LDAP Tab

  • Hostname: server1;server2;server3;server4 - Must be seperated by a ;
  • Credential: CN=Lotus,OU=whatever,OU=Domain Users,DC=ad,DC=company,DC=com - This must be a fully distinguished name
  • Password: secret
  • Base DN for search: OU=Domain Users,DC=ad,DC=company,DC=com
  • Channel encryption: SSL
  • Port: 636
  • Accept expired SSL certificates: Yes
  • SSL protocol version: Negotiated
  • Verify server name with remote server’s certificate: Disabled
  • Timeout: 60 seconds
  • Maximum number of entries returned: 100
  • Dereference alias on search: Never - Now I’m not sure exactly what this is, anyone know?
  • Preferred mail format: Internet Mail Address
  • Attribute to be used as Notes Distinguished Name: samaccountname
  • Type of search filter to use: Custom
  • Mail Filter:Blank
  • Authentication Filter: (|(sAMAccountName=%*)(cn=%*)(|(&(sn=%a)(given name=%z))(&(sn=%z)(givenname=%a)))) - This was taken from the Lotus Support site for an issue I was having. It seems to work
  • Authorization Filter : (|(objectclass=group)(Member=%*))(&(objectclass=goupOfUniqueNames) (UniqueMember=%*))(&(objectclass=groupOfNames)(Member=%*))) - This too was taken from the Lotus Support site

Now, Ive included some discussion in italics to the right of the field in order to provide a few answers as to how I came about these settings. I hope this helps someone out.

Keith


Geekfest continues…

09/09/2005 1:11 PM By Keith Strickland

Well, after installing our keyfiles on the servers for SSL the servers were throwing errors complaining about it couldn’t read the keyfile (SSL Error: Keyring File access error). I turned on the notes.ini option (SSL_TRACE_KEYFILEREAD=1) to give a little more information about what was happening (Sorry I don’t have that output as it’s just written to the console). I looked up the resulting errors on the Lotus Support Site and found an entry stating that the permissions were wrong on the keyfile. I looked at the keyfile and it was owned by me with read, read/write permissions and no one else. I would change the ownership to be owned by the server, but Domino would change it back. So, after some more investigation we changed the ownership to be owned by the Administrators group and that seemed to fix the issue.

After fixing the SSL Keyfile permissions we still couldn’t login using our Active Directory login credentials. Well I found out that only a few of our domain controllers use SSL and that I would have to get a DNS entry created with a round robin configuration to only use the servers with SSL. So hopefully after that is done we’ll be able to get this whole thing working.

As for the Directory Assistance (DA) configuration. The place in the DA document where you define your login credentials. This is kinda bogus as you have to use your distinguished name (i.e. CN=Keith Strickland,OU=ITS,OU=Domain Users,DC=ad,DC=company,DC=com). Now I don’t know about your company but in the company I work this changes quite often. So when the LDAP Schema changes it will break DA. I did some investigation and this is a Domino requirement, not an Active Directory requirement. I think this needs to change so that you can just define the sAMAccountName and be done with it. Maybe this would be a good question to ask at LotusPhere.

Once I get this all working and I’m sure my configuration is correct, I’ll post it here.

Keith


Directory Assistance Geekfest…

09/06/2005 11:52 PM By Keith Strickland

OK, I’ve started setting up Directory Assitance to authenticate to Active Directory today at work. What a hassle. It’s not very straight forward and I can’t get SSL to work. It works fine without SSL. So, I’m thinking I screwed up installing my certificate or something, even though the server doesn’t throw any errors complaining about the certificate. The only error that the server throws is “Error attempting to access the directory servername:636. “no available alternatives” LDAP server is not available.”. So, looking on the Lotus Support page, it says that I probably have the authentication credentials wrong in the Directory Assistance document. But, if that was the case how come it works without SSL and we require authentication to access and do lookups in Active Directory?

But this should be interesting once I get it to work. Thank goodness we have a test machine that no one cares if it gets bounced, because I tell ya, that machine was bounced about 2 dozen times today. After all that I’m convinced that it doesn’t even make a difference sometimes when I changed the configuration. I think it caches the information and don’t even loose it during a restart. I may be wrong, but I don’t think I am.

Once I get SSL working with it I’ll post the configuration options I used, of course it won’t contain any company information. But hopefully someone will be able to get some use out of it.

Keith


LotusPhere 2006, Here I come!

08/22/2005 8:04 PM By Keith Strickland

I just finished registering for LotusPhere 2006 . I’m a little confused about the schedule tho. So, does everything now start on Sunday and finish up on Thursday ? If so, guess I need to arrive Saturday night. That’s kind-of a bummer as I enjoy going out with my family on Saturday night, but I guess you gotta do what you gotta do.

Hope to see you all at LotusPhere 2006. I’m looking forward to it.

Keith


CA Process Errors - Solved

08/03/2005 6:44 PM By Keith Strickland

I posted about this a while back. The end of the post was about a DECS error the user gets when they try and access a server. This issue revolves around the fact that the new user was created via an agent written in LotusScript and run a few times each hour.

So, to see the main issue to this error, as it isn’t client side, you must look in the admin4.nsf AdminP Database. Navigate to the Certificate Requests view. You will see that the request to certify the user was rejected. If you include code in your script to output the error number, this produces a 4005 error. So, you have signed the agent and you have admin rights to the server and you are listed as a Registration Authority. So, everything should work, right? Wrong. The solution here is to ensure the server that this script is running on is also listed as a Registration Authority. Once this is done, all the errors magically go away.

So, I hope this helps someone else who may or may not have this same issue.

Keith


View QueryClose event

08/02/2005 2:50 PM By Keith Strickland

I’ve recently been working on modifying the Microsoft Office Library template provided by Lotus. One of the requirements was that a view needed to be created that would only show unread documents. At first I was really overthinking this. So, after this post to the Lotus Developerworks R6 Forum I was given a partial solution. That solution was to use @Command([ViewShowOnlyUnread]) in the PostOpen and QueryClose events of the view. The only problem with this is I then got an error (”Cannot Execute the specified command”) when leaving the view. So I made this post to the forum which pointed me more in the right direction.

What I ended up doing was in the PostOpen event of the view I added this formula:
@Command([ViewShowOnlyUnread])

This formula is like a toggle switch. If you don’t run it again, every view the user looks at will only contain unread documents. So, you have to run the command again in order for the contents of the other views to be correct. So, in the QueryClose event of the view I added this formula:
@SetTargetFrame(”");
@Command([OpenView];”NotRead”);
@UpdateFormulaContext;
@Command([ViewShowOnlyUnread])

This worked like a charm. So again, many thanks to the folks that helped out with this. Now, on to the next task of this little project which is to kinda fix the review process.

Keith


CA Process User Errors

05/10/2005 4:45 PM By Keith Strickland

We’ve recently encountered an issue while using the CA Process. In our organization we use a database which automatically registers new users via a request they fill out on the web. Well those requests are showing rejected by the Certificate Authority in the admin4.nsf database Certificate Requests view. The agent which registers people is signed by me. The CA Admin Server is the same server which these requests come in on. So, I can’t figure out why they are being rejected.

It seems since this request is being generated with an agent that it’s coming from the server. But since the server is the CA Registration Server the request shouldn’t be rejected if the request is from the CA Registration Server, should it?

But since the request is rejected, the user get’s their ID file and tries to use it. Once they try and open a database on the server they are presented with a DECs error. If they don’t get that error they are notified that their certificate hasn’t been signed by the Registration Authority. So, either way, the user can’t use their new ID file.

I will do some more research on this and keep you informed of the outcome and fix for this issue.

Keith

Update 05/16/05: - The error above occurs because adminP has not yet run. The CA Process submits an AdminP request to Recertify User. Once this runs, the above error will not appear. However, the DECS error appears because the request was rejected by the Certificate Authority. I have not found a way around this yet, but will keep digging until I find the cause.


More undocumented properties

02/07/2005 7:19 PM By Keith Strickland

I’ve found a couple other undocumented properties of the NotesRegistration class for LotusScript.

  • UseCertificateProcess - Use with the NotesRegistration class reg.UseCertificateProcess = True

    This property allows you to use the CA Process to register users

  • CertifierName - Use with the NotesRegistration class reg.CertifierName = “/sales/Acme/US”

    This property tells the CA Process which certifier to use

Now these may be documented in later versions of the “Yellow Books”, but I have the R6.0 version of the “Yellow Books” that I’m using and those properties are not in there.

I’m writing about this because we are looking at using the CA Process to register users at work. Using the CA Process, which is a server task, offers many benefits:

  • Central location for issuing Web and Client x509 certificates
  • You don’t have to have access to the Certifier ID files and passwords
  • Simplifies the Internet certificate request process by providing a web based certificate request database

I set this up on a test server and it was pretty painless and straight forward following the help. The only issues I have using this is that AdminP must run before the registered user can use their new ID file. While this really isn’t that big of a complaint, if however the user gets their ID file before adminp runs they will attempt to use the new ID only to be informed they can’t use it yet. I guess the way around this would be to issue a “tell adminp process new” command on the server to hurry things along, but lets face it, that’s a pain to do, unless of course you can automate it in script, which is easy enough.

Support for this process will be included in version 1.2 of the User Administration Utility which was pretty easy to incorporate, just about 15 minutes total.

I guess only time will tell, but I think this will be a positive thing at work and for the User Administration Utility.

Keith


Blogs to read for LotusPhere

01/27/2005 9:56 AM By Keith Strickland

Well I’ve been trying to keep up with all the blogs this week. This way I can at least imagine that I was a part of LotusPhere .

But onto the blogs.

  • Dec has posted a lot of stuff on his blog along with some pictures.
  • Rocky has some good posts on his site also and some good pictures, seems everyone is “turned on” over there .
  • Tom also has quite a few posts with some good stuff there
  • Keith Nolen also has quite a few posts and thoughts

So, that’s all I’ve seen so far. I’m sure there are others out there as well. The Lotus developerWorks has some coverage of LotusPhere 2005 also. So, it appears that I’ve still got a lot of reading to do to catch up on things.

Keith


LotusPhere 2005

01/24/2005 7:49 AM By Keith Strickland

Well LotusPhere 2005 started yesterday and I will not be attending yet again. My current employer did however send one team member to LotusPhere this year and I gave him a bunch of stuff to investigate. Hopefully he’ll get some answers on some of it.

My wife and I talked about me going and we just foot the bill but, after adding up all the expenses we just can’t do it, or rather, I won’t do it. I would rather the family go on a family vacation or something with that money.

Hopefully I’ll be able to attend next year.

Keith


NotesRegistration Class - Undocumented Properties

01/15/2005 8:58 AM By Keith Strickland

This week I discovered some undocumented properties of the NotesRegistration Class. I was searching the Notes/Domino 6 Forum on the Lotus DeveloperWorks website to figure out if there is any way to modify the ACL of a mail database during the registration process. Well, it seems that there are some undocumented properties of the NotesRegistration class. These are:

  • MailTemplateName - You can define a filename here of the template you want to use when creating a mail database during the registration process.
  • MailOwnerAccess - You can define the type of access the user get’s to their mail file. You define it by a number such as:
    • Manager - 0
    • Designer - 1
    • Editor - 2
    • Author - 3
    • Reader - 4
    • Depositor - 5
    • No Access - 6
  • MailACLManager - This property will allow you to define a Person who will have manager access to the mail file. Now you can’t define a group here because it marks the entry as a person and not just blank. This is kinda bogus really as how many organizations just use 1 person as an administrator. Not to mention what happens when/if that person leaves.

Now these prove really useful. I’m sure there are others, I found this by looking at the wqsRegisterUser$UserL3 agent in the webadmin.nsf database. Here in the declarations section if you scroll down you find where they used these properties. This fact was pointed out by Thomas Gumz in this post in the forum.

In a previous User Registration Utility I created for the company I currently work at I made some scripts that do what these properties do, but since I was really just starting with learning LotusScript these scripts are very large, convoluted and error prone. So now I can do what once took me a page or two in scripting in one line of code. That’s cool! So, of course I had to include these in the registration process of the User Administration Utility and this will be in version 1.1 which should be released in a couple of weeks.

So all in all I think these undocumented properties are awesome. Lotus, you really should document this sort of thing as it will save some people a whole lot of time and effort. It also makes me wonder just how many undocumented properties and methods are out there for other LotusScript classes.

Keith


‘Documents treated as HTML cannot be edited’ - HELP

11/29/2004 2:14 PM By Keith Strickland

OK, this is really driving me crazy and the IBM Developerworks web site is down so I can’t post a question. Here’s the situation:

Domino Server 6.0.2, Designer 6.0.2. I’ve created 2 forms with the same name. One is hidden from Notes (for web display) and the other is hidden from the Web (for notes client display). The one hidden from Notes is the one giving me the problem. I’ve coded all the elements using HTML but added Notes fields in the appropriate places. I’m able to create a new document with this form. However, if I want to edit the form I get the following error “Documents treated as HTML cannot be edited”. Below are some screen shots of the Form Properties.



However, I really do need to have “Generate HTML for all fields” checked so that hidden fields are accessible. I’ve put in a Javascript workaround for this. Kinda tacky but it works.

So, if anyone can provide me with a little insight as to where else I might check to fix this, PPPLLLEEEAAASSSE let me know, I’m loosing my mind.

Keith

Update: I was finally able to post a question over on the IBM Developerworks R6 forum yesterday concerning this issue. Stan Rogers was able to help me out on that one. Thanks Stan!


This page has expired - Domino Error

09/22/2004 10:28 AM By Keith Strickland

I’ve recently had to revisit a couple of issues which occurred when we upgraded our servers to R6. There are 2 errors which are related to one another and both have the same solution.

The first is the “This page has expired” and the second happens when you fill out a form, press submit and for whatever reason you try and go back to the form by pressing the back button on your browser all the information you entered on the form is now gone and you have to do it again.

This second issue is very frustrating as there are still a lot of applications out there that use validation of a field like:

@if(a != b;@Failure(”the value of a should be b”);@Success;

In this case the user would have to click the back button to go back to the form and fix field a. I’ve found a couple of solutions to address this.The first and probably easiest solution is:

  • Create a Computed For Display field on the form. It can be named whatever you like.
  • Make the default value of the field:

    @SetHTTPHeader(”Expires”;”0″)

This should correct the problem. The only thing is, if you have a mixed environment of R5 and R6 clients with all the servers running R6 then the developers who use the R5 client can’t do the above procedure because @SetHTTPHeader was not added until R6. So these folks have 2 options. Create an Internet Site document and add a rule to handle it or try this:

  • Create a Computed For Display field and name it whatever you like.
  • For the default value use

    “@SetHTTPHeader(’Expires’;@Adjust(@Now([ServerTime]);0;0;1;0;0;0))”

    Be sure to leave the double quotes as shown above.

  • Thanks to Steve Lacey for this solution

OK, you can also create an Internet Site document and add a rule to address this issue. Here is what the rule should look like:

  • Open the Internet Site document for the site you are wishing to add the rule for.
  • Click the “Web Site” button and select the “Create Rule” option
  • Fill out the resulting form as follows:
    • Description: Put in a description for the rule
    • Type of Rule: Select “HTTP Response Headers”
    • Incoming URL Pattern: /* (Or whatever pattern you require)
    • HTTP Response Codes: 200, 206
    • Expires Header:
      • Always add header (override application’s header)
      • Specify as Number of Days
      • Expires after 5 days
    • Custom Headers:
      • Name: cache-control
      • Value: public
      • Override: checked

  • Save and Close the form
  • Restart HTTP

And that’s it. You should now be able to Fill out a form, fail validation, click the back button and the form with all the values will be there using any of these solutions.

So, until next time.

Keith


HELP!!! Lotus Notes & Private Views

07/19/2004 6:19 PM By Keith Strickland

If anyone has any experience with private views I could really use your help…

I’m working with a customer who has an application which is used by Web clients and Lotus Notes clients. The people who use the Notes client are the backend people who approve, disapprove and push the request which was submitted from the web. These people use private views extensively to monitor what they are working on.

The problem is that their private views keep disappearing. The private views are stored in their desktop.dsk (R5 still), not on the server. They can create the views again with the same name (dunno if this is a limitation or not, I’m not very experienced with private views). So, I just can’t figure out why these views keep getting deleted, just go away or what. I’ve asked the user’s if they are deleting the icon off their desktop and they say they aren’t.

The application is on an active/active OS cluster with Domino clustering enabled. The servers are running Windows 2000 Advanced Server and Lotus Domino R6.5. So any insight anyone could add would be great!

Thanks,

Keith


New How-To “Using lsxldap for Directory Lookups”

05/11/2004 6:16 PM By Keith Strickland

I’ve posted the new How-To today. It’s called “Using lsxldap for Directory Lookups”. I know, it’s not administrative, but hey, gotta keep ya’ll guessing as to what I’ll write about next.

Keith


New How-To

04/08/2004 1:00 PM By Keith Strickland

I’ve published another How-To. You can get to it here or via the link on the How-To menu over there on the left.

This How-To covers using Apache as a Front-End to Domino. This will allow you to use PHP applications or pure HTML pages on your website without having to hack the Domino HTTP task or the Domino application to get PHP or some other type of application to work in Domino. This should prove to be a very useful setup and keep you from running Apache on a port other than 80. I know it’s just the reverse as you’re running Domino on a port other than 80 but let’s face it, there are more PHP or Javascript type applications out there that perform very useful functions than there are OpenSource Domino applications. Now I know you are saying, well what about openNTF? Yes, openNTF is an awesome service and yes the list of OpenSource Domino applications are growing quite rapidly due to openNTF. But what if I need an app to monitor my hardware via the web, or use a web cam for security purposes or use a mail system other than Notes / Domino. Then the answer is another PHP or similar application. So, this is why this How-To will be useful. So, until some other time, enjoy the new article and I’ll try to keep them rolling.

Keith


Error Trapping in LotusScript

02/23/2004 12:02 PM By Keith Strickland

I’ve been working on the User Administration Util to add error trapping to the application. Now I admit I haven’t done that in the past which made debugging an effort in futility. I started on the enlightened path of error trapping due in part to this blog on Ben Poole’s site. I actually used the sample provided in that article:

lblErrs:
Messagebox “An error has occurred. The error was ‘” & Error$ &_
“‘ code number, ” & Err & “.”, 0, “Error!”
Exit Sub

After having spent some time with this now, I love it. When an error occurs in a scheduled agent it prints the error in the server log, which makes debugging a whole lot easier. No more print “got here” statements, or attempting to get the remote debugger to work (sometimes it does, sometimes it doesn’t, more often than not, it doesn’t). Also, if you’re using the notes client you get the error in a pop-up instead of the infamous “Object variable not set” error. So thanks Ben for writing such a good article and inspiring a mediocre developer to improve his code.

Keith


Lotus Domino 6.5 Wins!

02/04/2004 12:10 PM By Keith Strickland

In this article on the PC Magazine website it states:

In addition to Lotus’s unmatched collection of collaboration features and customizability, setting up our test installation of Domino was a far less headache-inducing prospect than setting up Exchange. Add to this a superior security record and strategy, and Domino is the clear winner of our Editors’ Choice.

Of course we all already know this. The article did go on to say that they give Exchange an honorable mention:

Still, we’re so impressed with the client interface you get from Microsoft—especially with the enhancements in the 2003 version—that we deem Exchange worthy of honorable mention. Though its groupware options are limited compared with those included in Domino and its setup is more involved, it certainly beats Lotus for client usability.

This is kind of confusing to me as you can setup Outlook to read your mail on a Domino server, so you really don’t loose anything with the client interface. Also, with the lack of groupware options and the cost of Exchange compared to Domino why would anyone want the hassles of using Exchange. But you also loose a lot of the e-mail functionality of Notes like sending document and database links, being able to program a button in an e-mail to perform various tasks and all the other Lotus Notes functionality (I’m speculating here, you may have some this functionality if you use Outlook to read your Lotus Domino mail). So in my opinion the tradeoff of client interface over client functionality doesn’t add up, I would much rather keep the functionality of the Notes Client to read / interact with my e-mail than to have a “pretty” interface. Of course I have a somewhat biased opinion here, but hey, this is my blog, website and domain so I’m entitled .

Keith


Lotus Notes R6.5

11/25/2003 12:16 PM By Keith Strickland

Got my first look at Lotus Notes R6.5 today. Played around with the Workplace a little bit. From an administrators point of view don’t know if the Workplace will fit my needs as I have many tabs and icons on my Workspace. Seems that the Workplace is kind of limited when it comes to many icons. At Sprint we don’t use Notes Mail so, it really doesn’t fit the bill. Now, from the view of a user, I could see the Workplace replacing the Workspace. But with the limited ability to have easy access many databases I’m still unsure if it will replace my Workspace. Only time will tell.

Keith


Location Documents and Policy Documents

11/16/2003 12:17 PM By Keith Strickland

I found a posting on LDD about adding a field to a policy document and it will change a corresponding field in the user’s location document. This can come in very handy for the few fields which are not in the policy document but need to be manipulated on a mass basis. For example, to enable local replication in the location document. The fields in the policy document which correspond to fields in the location document follow the following naming convention LocAll + FieldName. So, to enable replication for the people who are a member of the selected policy, add a field to the policy document with the following name LocAllReplicationEnabled. Now, whenever you check the checkbox to enable replication in the policy document it will enable replication for the user’s which are a member of that policy.

That’s some pretty neat stuff if you ask me, makes for a very robust and customizable (being the key word nowadays) product. Great Job Lotus!!

Keith

Oh yeah, forgot to mention that I found a couple other sites that have linked to me and so I put them in the blog roll. I tried to find a way to contact the owners but no link was provided on their site. So, here are the links to their sites http://www.mikesspot.com and http://www.a-b-l-o-g.com. Enjoy!


Lotus Domino R6

02/02/2003 12:19 PM By Keith Strickland

I’ve installed Lotus Domino R6 on this server. You can see a demo of the default discussion database here. I’ll start playing with the ND6 Designer and see what kind of content I can come up with.

I’ve found these databases (blogsphere and domBulletin) that has sort of convinced me of going back to Domino. The biggest issue is that Domino is kind of a resource hog compared to Apache, PHP and mySQL. Dunno, more thought will have to be put into this migration.


Subscribe to keithstric.com

OpenNTF

Disclaimer

The opinions and ideas posted on keithstric.com are not necessarily the opinions and ideas of my employer. The solutions, techniques and code provided here are not guaranteed or warranted in any way and are free for you to use at your own risk.