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
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.
YellowCake 2.0: RESTful MVC Web Services for IBM Lotus Notes Domino Apps
02/21/2010 12:15:00 PM by Chris Toohey

Now that we have RESTful Web Services that we can run with to support IBM Lotus Notes Domino Application NotesData CRUD (Create, Read, Update, Delete)... we might as well push the envelope and create a complete MVC (Model-View-Controller) proxy!
I recently found a need for YellowCake - my never-released (in version 1.0) NotesData CRUD proxy - so I thought it would be an excellent time to put some serious development effort into YellowCake 2.0. This recent need was a multi-developer effort to create a series of Mobile Device Clients for the IBM Lotus Product Wikis. The original intention was simply to add integration hooks into the new IBM Lotus Notes Domino XPage-based Wiki Template. Fairly straight forward really: you need to add additional functionality to an application in Lotus Notes Domino, you crack open Domino Designer.
Upon further discussion however, the idea that we didn't want to have to modify the target NotesDatabase Applications gained attention. See, with the crack open Domino Designer approach with any IBM supported Template - such as the Mail Template (or in this case the XPage Wiki Template) - you are creating that potential maintenance nightmare... or at the very least an individual one-off via your customization.
And sure, there are plenty of ways to work around that from a Design Element inheritance architecture... but once you modify a released Template upgrades are either a chore or simply can't be done.
Enter the idea for a NotesData CRUD Proxy! Instead of modifying the target NotesDatabase (or the NotesDatabase design/Template), you're going to create a custom API via -- in this case -- an XPage XAgent HTTP Request Consumer that will Create, Read, Update, and Delete NotesData from the target NotesDatabase. At least... that's the idea.
So where does YellowCake, MVC, and REST come into play??
Well, that's where the fun begins!
YellowCake was designed with configuration in mind. You could configure your target NotesDatabase based on a supplied key. You could configure how the NotesData was returned to the requesting client. You could configure the NotesData which was posted to given NotesItems. You could control -- via this configuration -- the NotesData Model, the rendered View, and the business logic Controller. Epic Win!
The major PITA quite frankly was the need to define every interaction via key. Now that I've found a way to support RESTful Web Services via XPages though... that won't be a problem!
... see, let's say I call the following YellowCake URL via the GET Method:
http://server/yellowcake.nsf/api?open&key=abc123&uid=def567&action=GET
Same functionality as before: I would run the equivalent of an @DBLookup to the NotesDatabase defined within the Application Profile for the key abc123, grabbing the NotesDocument def567. The action segment of the QueryString would denote the GET Method. Sure, for reading/returning NotesData or even Creating/Updating NotesData... this was a no-brainer and didn't require the action parameter, but what about Deletes?
With the advent of RESTful Web Services, I can now pull the intended action from the Method and perform my action based on that...
So now my URL would look like this:
http://server/yellowcake.nsf/api?open&key=abc123&uid=def567
The Method Verb - GET, POST, PUT, or DELETE - on the above URL would be captured by the listener XPage XAgent and look to the business logic defined in the configuration-based Controller to do... well, whatever it is you told it to do.
See, not relying on the target NotesDatabase (which could reside on a non-HTTP-accessible Domino Server since we're communicating via NRPC) to render or perform the function intended allows us to completely change how we create IBM Lotus Notes Domino Applications. You'll no longer need Views in your NotesDatabases, as the rendered NotesData is processed and cached via XPage and SSJS. You'll no longer use clunky WebQuerySave events to fire off NotesData-based workflow, as only the NotesData you need will be written back to the target NotesDocument!
OK - there's a lot more to cover here, and I can feel myself babbling on and not making much sense unless you could see an example of what I'm getting at... so I think that's the next step:
I will be moving forward with a Proof of Concept for a RESTful Web Services implementation of MVC NotesData Proxy for IBM Lotus Notes Domino Web Applications.
In other words, I'll be working on YellowCake 2.0! ;-)






I'm interested.
So, instead of views you are building the data and caching columns values yourself? Wouldn't it be better to create views in the target database (programatically)?
@John:
Don't think Views for NotesData, but a JSON stream or NotesData as raw markup.
See, YellowCake is designed to allow you to take NotesData (and the CRUD management of that NotesData) to any User Interface/front-end technology.
As far as Views go - consider this:
Let's take 1,000,000 NotesDocuments in a NotesDatabase. Creating a UI-rendered View for that NotesDatabase would be a UX nightmare! Now, I'm not saying that we use
db.searchto grab the contents at runtime or anything (as that's just as much a nightmare), but there's absolutely nothing stopping you from leveraging the Report Profile Meta-Indexing architecture that I've discussed in the past to create a walkable JSON NotesData store without impacting the feature fuctionality (or design) of the target NotesDatabase!... and that's what I'm doing with YellowCake 2.0.
Also even view data needs to be wrapped and delivered in pieces.
I want the first 20 entries, now give me the next 20 to add on, or pulled from multiple database such as give me all my entries across 20 wikis.
Will this be able to host a mobile website (MVI) or just be the middle-ware?