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.
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!
Blackberry Widget API and SDK - What You Should Know!
10/12/2009 09:17:26 AM by Chris Toohey
I've gotten a few questions about just what the Blackberry Widget API and SDK are... specifically, not only what is it? but also what do I need to know?. Well, less than 24 hours after getting started... I'm happy to report that Blackberry development has never been so easy.
See, before the Blackberry Widget API and SDK, you needed to know a lot of things that most web application developers may only be slightly familiar with. You had to know Java. You had to know WSDL. You should have a firm grasp on WAP. You needed to know how to write web applications for mobile browsers - and when compared to the mobile browser on devices like the iPhone/iPod Touch... well, it was frustrating to say the least.
And then came the Blackberry Widget API and SDK... which sounds really interesting, but most people I know don't get that excited when I talk about Blackberry Application Development. Most people I know are busy working on their own platforms, and the thought of needing to learn yet-another-technology to support what some may consider a nice to have customer base for the majority of their projects.
I know that I've moved "I need this on the Blackberry" to the nice to have column on countless occasions myself - both due to the time it would take to create a local Blackberry client for the project application and (to be honest) my lack of expertise in Java mobile device development and the Blackberry application development platform itself.
See, I'm more of a web application developer. I use HTML, XML, CSS, and JavaScript to interact with web technologies - mostly IBM Lotus Domino - to build feature-rich web applications.
And I'm happy to report that the Blackberry Widget API and SDK is designed for me: a web application developer.
Using any HTML, CSS, JavaScript, and XML editor, you can create a feature-rich web application... that uses the Blackberry Widget API to allow complete interaction with the device.
Want to get information from the Blackberry device like the PIN, IMEI, or interact with the device Calendar?
Just can use these JavaScript functions:
// Display the device model
function displayModel() {
var model = blackberry.system.model;
alert("The model of this device is " + model);
}
// Display the PIN of the device
function displayPin() {
var pin = blackberry.identity.PIN;
alert("Your PIN is " + pin);
}
function displayIMEI() {
var imei = blackberry.identity.IMEI;
alert("Your IMEI is " + IMEI);
}
// Launch the calendar with today's date
function launchCalendar(){
// Get today's date
var today = new Date();
alert("Today is " + today.toString());
// Launch Calendar App with today's date
var calendarArgs = new blackberry.invoke.CalendarArguments(today);
calendarArgs.view = blackberry.invoke.CalendarArguments.VIEW_DAY;
blackberry.invoke.invoke(blackberry.invoke.APP_CALENDAR, calendarArgs);
}
And this HTML to call the JavaScript:
<html>
<head>
<title>Widget API Basic Sample</title>
<link rel="stylesheet" type="text/css" href="simple.css"></link>
<script type="text/javascript" src="actions.js"></script>
</head>
<body>
<div>
<p>Widget API Basic Sample</p>
</div>
<div>
<input type="button" value="What is the model of my device?" onclick="displayModel()" />
</div>
<div>
<input type="button" value="What is my PIN?" onclick="displayPin()" />
</div>
<div>
<input type="button" value="What is my IMEI?" onclick="displayIMEI()" />
</div>
<div>
<input type="button" value="What do I have planned today?" onclick="launchCalendar()" />
</div>
</body>
</html>
Yep - it's really that simple! You just write JavaScript functions that interact with the Blackberry Widget API. And you write HTML and CSS to makeup the UI for your application. Yeah, it's pretty simple stuff.
... but you probably think that we're missing something here -- and I am: you need to take your web application - every HTML, CSS, JavaScript, and XML resource - and zip them up into a single file. You then use the Blackberry Widget Packager to create your Blackberry Device Application installation files:
Via command prompt, issue the following commands:
C:\>cd c:\program files\research in motion\blackberry widget packager
C:\Program Files\Research In Motion\BlackBerry Widget Packager>bbwp.exe web/helloworld.zip
[INFO] Parsing option parameters
[INFO] Parsing bbwp.properties
[INFO] Validating zip archive
[INFO] Widget packaging starts...
[INFO] Populating source codes...
[INFO] Start compiling and building...
[INFO] Generating output files...
[INFO] Widget packaging is done.
C:\Program Files\Research In Motion\BlackBerry Widget Packager>
From there, you simply install the now self-contained COD file onto your device the same way you would any other Blackberry Device application, and you're done!
You can install your new applications for testing via the Blackberry Device Emulator or - with a few more steps that I haven't actually gotten to yet - install it on your own Blackberry devices.
The good news? We've got not only API documentation, but some pretty slick examples of how we can better use the Blackberry Widget API to interact with not only local applications and offline data stores, but also interact with web/SaaS/Cloud services.
I'm eager to deep-dive into the integration of a few Lotus Notes Client applications that I've worked on/am working on and the Blackberry Widget API. A good one that comes to mind: a mobile device application for tracking effecient, prioritized time against various customers, projects.
Before that of course, I really need to play around...
RIM releases Blackberry Widget API and SDK v1.0 Beta!
10/09/2009 04:53:16 PM by Chris Toohey
RIM just made it much easier to develop feature-rich and hardware-integrated applications for their Blackberry devices by releasing the BlackBerry Widget SDK 1.0 Beta 1.
With the advent of Blackberry Widgets, web developers can leverage local hardware and device software functionality - such as accessing messaging, calendaring and other PIM capabilities as well as phone, GPS, and extended storage card space. To ensure that web developers can hit the ground running, the official SDK page comes complete with sample code and development tutorials.
From the Widget SDK 1.0 page:
The BlackBerry Widget Packager 1.0 Beta 1 is a new tool that allows web developers to package up their web assets into BlackBerry Widgets (small, discrete, standalone web applications that use HTML, CSS and JavaScript). A BlackBerry Widget looks, behaves and has the same security mechanisms as a native BlackBerry application. BlackBerry Widgets can be installed on a BlackBerry smartphone like any native application and can be extended to use device-specific information and data using the BlackBerry Widget APIs.
This is a great opportunity for RIM and the Blackberry itself; I see it bringing not only new developers to the platform, but changing the way we develop "fat clients" for the platform. One of the included examples even showcases the use of Gears/SQLite for offline/local storage of - what could be - Cloud/SaaS content!
And now I know how I'm spending my weekend! I'll be downloading the new Blackberry Widget SDK, configuring Eclipse, and building out some Widgets! Of course, post-Hello World, I plan on ripping into integration with IBM Lotus Domino and Widget-enabling some of the standard template Lotus Notes/Domino applications like Discussion Databases, Document Libraries, Domino Blog, etc.
Of course, if my last weekend exchange with setting up an SDK in Eclipse was any indication, I doubt I'll hit the end of Hello World before Monday morning!
Need to web-enable some Lotus Notes client applications and don't have Domino 8.5 for XPages? (or how I learned to future-proof my development techniques)
07/23/2009 12:55:27 PM by Chris Toohey
Author's Note: Let me start by saying that there is no total-future proofing solution for development on any platform. Things change, which we should all consider a really great thing or we'd be writing plug-ins for Microsoft Bob...
I was contacted recently by someone who is not what they would themselves consider a Domino Web Developer as much as they are a seasoned Lotus Notes Developer, who has a pretty immediate need to create Web Browser client front-ends for several production Lotus Notes Client applications.
The customer environment is not currently running Lotus Domino 8.5, so leveraging XPages to create a client-specific UI just isn't in the cards.
See, as both Domino Web Developers and Lotus Notes Developers we're living in some really interesting times. XPages - for the most part - herald the return to Domino Web RAD, allowing even those developers unfamiliar with the more advanced web development techniques and technologies (ie., JavaScript Libraries for rich UI experiences) a relatively simple WYSIWYG development experience.
We're also living in times where IT projects are often back-burner'd unless you can really justify a quanifiable return on investment.
Luckily, between XPages brining RAD back into Domino Web Application Development and DAOS - when implementing properly - drastically decreasing back-up times and working in-line with most corporate data retention policies, a relatively easy upgrade to Domino 8.5 isn't that hard to get through the uprights.
Of course, there are still those shops who just cannot upgrade their environments or those who prefer to not implement v1.0 features into their environment and therefor are waiting for Domino 8.5.1 to go Gold Release.
So, regardless of the why, there are some Notes Shops that just can't upgrade.
Does that mean that their customers/users should suffer? NO!
So, I thought I'd take a few minutes to discuss some strategies that I use to best future-proof my code to ensure that it's inline with the features and functionality that DDE and 8.5.n can deliver.
UI/Data/Business Logic Separation
Yes, I know - I've preached that sermon time and time again, but this is really the first step in future-proofing your applications.
I'll give you a real-world example here. Let's say you have a simple tracking NotesApplication, which is designed to allow a user to create a NotesDocument that tracks a given asset, and the NotesDocument is assigned a unique incremental key for tracking purposes.
Most developers would put some QueryOpen or QuerySave event, or a UI NotesDocument call to grab the next available number in the system. Simple stuff right?
Well, what if you need to write a Web Browser client UI for this form? What about a Mobile Browser client UI? What if I wanted to automate the creation of these assets from another system?
If you develop your business logic into the UI, you will need to re-develop it into every UI your customer/user audience demands. Not very RAD if you ask me...
Instead, I normally create a business logic engine that will allow me to submit the NotesDocument, and all applied logic is rendered against the submitted NotesDocument.
Consider this: if I decide to create a Lotus Notes client Wizard for the creation of these NotesDocuments, instead of dealing with ComputeWithForm nightmares and resaving the NotesDocument or something otherwise equally undesirable, I can just as easily submit a single NotesDocument or an entire NotesDocumentCollection to my business logic handlers. This makes the process of creating alternate UIs and alternate client UIs infinitely more simple.
Ok, I'll beat the dead horse here a little bit more:
Pretend I'm writing a JavaScript function to create a prompt message to the user:
function msg() {
alert("This is a message.");
}
Now, as silly as this sounds, what if I needed a prompt with a different message? What if I needed multi-language support for the application? Using the above approach, I'd need to create JavaScript function after function after function.
function msg(msgbody) {
alert(msgbody);
}
Sure, this is a simple change, but it's simple to further my point: using more dynamic architecture when designing the application - such as complete separation of User Interface, Data, and Business Logic - allows you to more easily deliver the solution that your customers/users demand!
Don't use RAD
Huh?! I hear you say. RAD is specific to the version of the given technology that you're using. Consider the way Domino Design Elements - designed for Web Browser clients via Domino RAD-techniques - rendered in Lotus Domino R5. Consider how they're rendering today. Now keep in mind that HTML 5, CSS 3, and various other influences are just around the corner...
Allowing the product to do the work for you is nice, but you quickly lose control over what's delivered to the Web Browser clients of your customers/users. When that happens... you're about a heartbeat away from saying "Sorry, Domino doesn't do that...".
Once you abandon RAD techniques and take complete control over what's delivered to the client - regardless of that client - you'll understand that it's all just markup in the end.
You're only limitations then are what the client can handle - be it the Lotus Notes, Web Browser, Mobile Browser, or any other client types.
So, how does this make your applications future-proof? Well, since you have complete control over what's being rendered to the given client... you don't have to worry about a patch fix breaking undocumented functionality that you were relying on to deliver the cobbled-together feature that your customers have grown dependant upon. You don't have to worry about upgrading systems, keeping your technology investments up to date.
... and quite frankly, if you are totally in control over what's rendered to the Web Browser client (for example), changes are the application will be done right and you can focus more of your time on new and exciting features instead of wrestling with RAD-generated content and trying to cobble together a hack that will deliver what you need.
And there you have it - albeit preachy - two tried and true ways to future proof your application development efforts.
If you're interested, and as soon as I get some time in my schedule, I'll work on getting a few examples put together of client-agnostic Business Logic engines and how you can use them in your day-to-day projects.
re: Top 10 Reasons I Left Lotus Notes for Google Apps
07/23/2009 12:01:51 AM by Chris Toohey
David Hoff - a once happy Lotus product user - has gone the route of Google Apps and details his feelings via Top 10 list in his most recent post: Top 10 Reasons I Left Lotus Notes for Google Apps.
Now, if you can get past the Letterman-esc delivery, there are some things that David brings up that we as Lotus subject matter experts should certainly make ourselves aware of:
-
Getting it right from go!
We've all been there, whether you're a consultant or a new employee: you connect into a Domino environment that appears to have been setup by a sadist who actually put those same monkeys in the room with all of those typewriters, but has this time instead equipped them with server hardware and Lotus Domino installation media.
I can not tell you how many customer complaints I hear daily whose root cause could be traced back to poor systems architecture, half-baked configurations, or untamed code running amok.
And at the end of the day, it's the customer that loses here.
-
Speed
David's point on a "less than 5 seconds" click-to-launch was the major thing that jumped out at me. The customer wants things now. Enterprise customers need things 5 minutes ago. The demand for having a lightening-fast rich usage experience is something that we application developers should strive to achieve regardless of platform, and it's something that I don't think we really put much emphasis on in our efforts.
-
Geeks are getting lazy.
Do you remember when it was fun to upgrade an entire network? You'd spend time sneakernet'ing the entire company and a weekend high on pizzza and your own l33tn3ss upgrading this or implementing that.
Now I have 4 kids playing 3 different sports and I can't tell you the last time I took a vacation day that was an actual vacation day. It's not that we're gotten lazy, it's just that we have so many things on our plates right now. Which is why cloud services are so appealing. It's tomorrow's outsourcing today.
And it's my experience that business units love cloud services, particulary for 2 reasons:
- They get to play geek, which has become the cool thing to do.
- You can often get cloud services and SaaS under a departmental cost budget instead of going for capital investment.
As for the rest of the list, from Xs to Java, I'm not going to bother with that - the latest release of the Lotus Notes client combined with the innovations with the Lotus Domino server environment are making all of those moot points as far as I'm concerned...
I prefer to focus on the good that can come from such an article.
I have often said that the standard Mail Template - which is an amazing application, don't get me wrong - is very much a kitchen sink application. You have email, calendaring, and tasking capabilities wherein the majority of customers just use email.
Would a Email and Calendaring & Scheduling-only template work here? Help cut down on the overhead and make those 5 second launch times appear slow by comparison?
What can we do today for Notes shops to get best-practice setups for Lotus products to ensure that we're at least not tripping over the small stuff?
What killer apps do we need to be focusing on in our community instead of pimping our own products or agendas (or having all-out pissing contests) that can ensure that we're meeting the enterprise requirements of today while also focusing on the customer expectations for UI and functionality?
I think a huge part of this goes back to working with the vendor (in this case IBM) to coordinate such efforts. Some of that is being done today (by people like Joyce Davis and the efforts from the Lotus Technical Information and Education Team/Lotus Advocates teams), but what else can we be working on - right now - to improve things for the customer?
Google Gears vs. DOLS for offline rich Web Browser-based applications
07/22/2009 03:14:37 PM by Chris Toohey
Not that I'm the first to bring up this subject - a simple Google search for Google Gears vs DOLS returns a few really great articles and blog topics... but I have to wonder myself...
What's the best approach for a Lotus Notes-based application that you're looking to to extend to the Web Browser client that you want to also allow functional offline access? My gut tells me that there will be more web developers using Google Gears, and thus more published examples on how I can get the job done. Hell, just searching for DOLS on google brings mixed results while searching for Google Gears... Well, you get the idea.
I'll leave this up to you, Constant Reader: Google Gears vs. DOLS for a functional offline application? You decide!
The application in question? Well, I'm thinking about implementing this on my untitled Project Management and Tasking Application which I'll get started on as soon as the CMS is finished this week.


