Latest Updates

Products & Applications

Showtime
My Blackberry Enterprise Server Push Utility for the Lotus Notes Client, allows you to create Jobs for individual Channel, Message, and Browser Content Pushes, as well as allows you to delete Pushed Channel Icons from defined recipient devices.

Time Tracker
The idea is simple. At the start of your day - upon completion of your first task - create an entry highlighting what you did and whether you feel it was an efficient or inefficient use of your time. Based on several requests, you can also select the priority, apply categories, or even align your time against a project.

For Lotus Notes Client v8.0 and above, you can use the Time Tracker Widget to make this process even easier!

Zephyr
My Configuration-based Rich Text Mail Merge and Emailing Utility, Zephyr allows you to create rich, data-driven emails to support automated workflow - all via Microsoft Word Mail Merge-like architecture. Dear <firstname> allows you to personalize each email message not only to the individual recipient, but also to the individual application workflow event!

xCopy
xCopy is a simple configurable xCopy client for the Lotus Notes client. By creating and defining xCopy Profiles, you can batch process your file backup or remote upload jobs. With the addition of the xCopy sidebar widget, you can easily kick-off these jobs, and modify both the xCopy Profiles and xCopy itself.

Community & Resources

Lotus Technical Information & Education Community

The Lotus Technical Information & Education community is comprised of IBM, business partner, and customer subject matter experts who use product wikis, published articles, white papers, community blogs and the latest in social media to build and share high quality technical content.

OpenNTF.org - Open Source Community for Lotus Notes Domino

OpenNTF is devoted to enabling groups of individuals all over the world to collaborate on IBM Lotus Notes/Domino applications and release them as open source.

developerWorks Lotus : Wikis

Share your deployment experiences and best practices in our wikis and help IBM to create scenarios for successful deployments. Contribute to the community by collaborating on shared content and leverage the shared knowledge from that community.

Welcome to dominoGuru.com!

Focused on being the go-to resource for the IBM Lotus Notes Domino developer, dominoGuru.com delivers introductory-level best practices and advanced development deep dives for the IT professional, book and gadget reviews, and technical weblog, and more!

Lotus Domino NotesDocument Auto-Save for Web Browser Applications - Article and Download

09/03/2009 07:52:53 AM by Chris Toohey

This tutorial will showcase a simple NotesDocument auto-save engine for an example NotesDatabase using the Domino CRUD API. The desired user experience will have the user's non-submitted NotesDocument auto-save after an admin-defined interval. To ensure a seamless user experience, I will continually - via a JavaScript timer - submit the "uidoc" via HTTP POST through AJAX to the Domino CRUD API to create (or update) a "temp" NotesDocument. We will create a custom response message to the HTTP POST and return the "temp" NotesDocument Unique ID (UNID), which we will use to update the "uidoc" HTML Form Processing Agent.

What's this all about? This is my NotesDocument Auto-Save engine for Domino Web Applications, which is an online demo turned Lotus Domino Designer Wiki article turned downloadable example application. Check out a quick video I put together to showcase just how simple it is to provide your users with such a valued feature:

For those of you - like me - who prefer to download an example application:

NotesDocument Auto-Save Example Domino Web Application Download

And now you have no excuse! Go add this feature into your existing Lotus Domino Web Applications, and never again get a call from a frustrated user who just lost 6 hours of editing a NotesDocument via a Web Browser when your Domino session authentication times out after 30 minutes...

YouTube: Lotus Notes/Domino Web Development - Permalinks vs. NotesDocument UNIDs

04/04/2009 07:43:01 PM by Chris Toohey

Just a quick video showing you the potential issues with NotesDocument UNID-based URLs and how you can easily create your own "permalink" functionality in your Lotus Notes/Domino Web Applications!

(Check out the HD version)

Feedback on the last video was awesome, so feel free to drop me a comment here or on the YouTube page with thoughts, suggestions, or requests!

XPage Goodies

02/28/2009 07:24:11 PM by Chris Toohey

Was going through YouTube this evening when I came across the following screencast - by Jo Grant - showing us how we can quickly add NotesData-driven XHTML via Repeat Controls

XPages are absolutely amazing and have converted this "roll your own and stay the hell away from Domino RAD" die-hard.

Need a more basic ramp-up on this amazing new technology available to Domino Web Application Developers using IBM Lotus Notes/Domino 8.5? Check out the absolute must-see Learning XPages series from Declan Sciolla-Lynch, who takes us from hello world-style baby steps to some pretty quick RAD techniques that you can use today to build richer user experiences for your Domino Web Applications.

Creating Form Design Element Sidebar Widgets

07/11/2008 11:27:38 AM by Chris Toohey

Here's a 52 second Jing videocast showing how you can add a Lotus Notes Form as a Sidebar Widget. Once you check that out... you may be interested in what went into the design of said Form Design Element.

I'll use SOTU v0.2 as my example here, so if you haven't already, go download it so you can play along at home...

So first, I created a pretty simple Form Design Element named "sidebar_remotecommand":

sidebar_remotecommand Form Design Element in Domino Designer

Pretty simple stuff. SaveOptions prevents the Form from being saved back to the database, and my Process button looks like this:

Sub Click(Source As Button)

Dim s As New NotesSession
Dim w As New NotesUIWorkspace
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim uidoc As NotesUIDocument
Dim vw As NotesView
Dim scol As NotesDocumentCollection
Dim sdoc As NotesDocument

Set db = s.CurrentDatabase
Set uidoc = w.CurrentDocument
Set doc = uidoc.Document
Set vw = db.GetView("servers")

Forall server In doc.GetItemValue("servername")

Set scol = vw.GetAllDocumentsByKey(server, True)
Set sdoc = scol.GetFirstDocument

Call genResponse(sdoc, Cstr(server), doc.GetItemValue("command")(0))

End Forall

Call uidoc.FieldSetText("servername", "")
Call uidoc.FieldSetText("command", "")
Call uidoc.Refresh

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

... yeah, that's about it. I blank out the fields and refresh the UI so that the "reports" from the processed remote console requests are displayed directly in the widget.

This is an EXTREMELY powerful combination of current subject expertise and this new entry-point into our applications - I'm now running around like a madman creating RAD widgets for all of our applications without the need to ramp-up on Java Sidebar Application development.

So here's what I have so far...

08/23/2007 08:54:46 PM by Chris Toohey

So here it is - my surrender challenge to the community: Get this database to show a subset of the documents it can load in it's "embedded view". The real challenge - even if you get this working - do it so there are no modifications to the target views in question.

A given user should be able to simply point the database to a view and let their configuration handle the rest. You'll see what I mean when you take a look at the database. The database, you'll see, uses an embedded frameset hack that I, Chris Toohey, soley came up with - work of genius ain't it?!

Using Nathan's hack-foolery, I'm able to load a frameset into my form and feed it values - in a way. In order for this to work, you need to create environment variables and tell the frameset to calculate the frame contents based on that. I've made this one pretty flexible actually, done by only slightly modifying the code logic (see below) to build this example that Nathan first discussed on his blog. At the very least, you'll get a pretty slick (clean up the UI by ALL means...) representation of just how cool and flexible Nathan's solution is... but that's only one of the reasons I am publishing it...

Computed Frame Contents

Back to that challenge, get a categorized view to load just a single category in this framework. Sounds simple enough. Just so you don't go all half-cocked trying to implement the @SetViewInfo, both Nathan, Derik, and I have tried just about everything that we can think of with it - from putting it in the PostOpen event of the view to trying to send an F6 to focus the call in the "target frame" back when I was trying to accomplish this soley with a frameset refresh... but don't let that throw you off from trying.

The person who gets this will have bragging rights and the first round on me down at Lotusphere this year.

I should note that Tommy Valand got it with the frameset-only implementation - by basically closing/opening a frameset wherein you've passed the computed parameters and using the PostOpen event of the target View elements. Seeing what he's done, I'm not surprised he was able to do it, but I both don't want that "chattiness" on the UI client and the requirement to modify the target Views - this solution, which I'll post out to everyone for download once we get the kinks worked out, will act as a Dashboard application (keepin' the CIOs happy!) that you can allow your users to configure personalized to their needs. It should be pretty slick once it's done, and it'll be Open Source under the Creative Commons licensing... whatever that means - you'll be able to download it - rip it apart - and use the hell out of it!

Viewlinks Database Download