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.
Contact Information
Blogger, podcaster, writer, and geek Chris Toohey covers topics from application development to the latest must-have-gadgets.
Latest Updates

More on Mailer...
More on Junction Lite...
More on Remote Console...

More on Controller API Utility...
Products & Applications
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.
Architecture: The "Report Profile"
02/23/2006 08:44:41 PM by Chris Toohey
While I feel it's important to provide real-time information to your application users, large databases that handle several thousand transactions per day, and more accurately, the reporting of or data interaction with said transactions can make even the most streamlined application slow with embarrassingly sluggish response times. In these cases, for those applications that exceed the "logical" document count for a Domino database (I'd say 200,000+ documents for a single database) I typically recommend the implementation of transaction profiles - the utilization of an architecture which I'll attempt to explain in the following article.
I've seen countless applications that tend to become sluggish just as it's finally being utilized to it's potential - and it's often the architecture reflecting the lack of understanding that while @dblookups and @dbcolumns are great for simple applications, they can prove disastrous for high-transaction databases.
While I don't consider myself a load-and-utilization expert, even I can see that there's going to be an issue with running an @dblookup on a view that contains 200,000 documents every time a form or document is opened simply to show the user the current document count or to return a subset of data from the database. It's for situations like this that I recommend the following:
Create an agent called "app/statreporter|statreporter". Below I've included some very basic Lotuscript that illustrates what you might include in such an agent.
Sub Initialize
Dim s As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim reportview As NotesView
Dim reportdoc As NotesDocument
Dim coll As NotesDocumentCollection
Set db=s.CurrentDatabase
Set view = db.GetView("report")
'Check for a Report Profile, if none, create one
Set reportview=db.GetView("reportprofile")
Set reportdoc=reportview.GetFirstDocument
If (reportdoc Is Nothing) Then
Set reportdoc = db.createdocument
Call reportdoc.ReplaceItemValue("Form","reportcount")
End If
'Collect document counts from a particular view
Set view = db.GetView("ExampleView1")
Call reportdoc.ReplaceItemValue("Totalfrom1",view.EntryCount)
'Collect document counts from a subset of documents in another view
Set view = db.GetView("ExampleView2")
Set coll = view.GetAllDocumentsByKey("subsetkey")
Call reportdoc.ReplaceItemValue("Totalfrom2", coll.Count)
'Collect information from an external database - securely!
Dim dblu As NotesDatabase
Dim doclu As NotesDocument
Dim lutrigger As String
Dim count As Long
lutrigger = "lookupkey"
Set dblu = New NotesDatabase( db.server, "OutsideDatabase" )
Set view = dblu.GetView("stats")
Set coll = view.GetAllDocumentsByKey(lutrigger, True)
count = 0
Set doclu = coll.GetFirstDocument
Do While Not(doclu Is Nothing)
count = count + doclu.ExampleField1(0)
Set doclu = coll.GetNextDocument(doclu)
Loop
Call reportdoc.ReplaceItemValue("ExampleOutsideCollection",count)
'Save the Report Profile for further usage
Call reportdoc.Save(True,False,True)
End Sub
provided by Julian Robichaux at nsftools.com.
From the above code, you can see that I'm creating or modifying a single document, updating run-time information on whichever lookups I will need for my applications and returning the results in their own field - all to which I can now use a @DBLookup to a single document to gather the information that I require for my particular application.
Additionally, I am not only looking up information in the current database (as seen in my first two examples), but also in a separate database. As such, utilizing this approach can even lend to a tighter security infrastructure for your application servers, not to mention alleviated the need to jump from database to database.
Now, instead of having to traverse view after view to gather information, I can simply lookup the catalogged content in my Report Profile. The only thing left to do is set the expectation that this information can be on a 30 minute delay, in case you have a user that decides to perform a function that would generate a new entry to-be-catalogged in the "profile report" and performs another function, which should reflect a requirement to have the latest information.
I have a work-around for just this situation, which will be published in part 2 of this series.
Technorati tags: Show-n-Tell Thursday


