Viktor Krantz

Jun 192007
 

The fourth Lotus Quickr template demo is posted. This time it is QProject, which contains enhancements to the tasks and notifications in Lotus Quickr, introduces a concept of overall and cross-project status, and implements an enhanced AJAX Gantt chart for viewing tasks and their relationships to other tasks. Relationships? Yes, with QProject you can declare task predecessors and dependencies! One to one, one to many, however you like. The major features include the ability to set these dependencies, visualize them through the Gantt chart, receive consolidated overdue task notifications, and (my favorite) automatically push out dates when a predecessor is completed late. Not that this ever happens, but…

The 16.5-minute demo can be seen here: QProject demo

Enjoy

Jun 192007
 

Lotus Quickr will ship June 29, 2007. Only 10 days from today. Here’s the release. The 4th and 5th bullet are what we at SNAPPS been working with for the last months.

# # #

IBM Lotus Quickr 8 Expedites Team Collaboration

Open, intuitive standards-based Web 2.0 tool eases users into a more collaborative work style
with comprehensive Lotus and Microsoft integration


Armonk, NY…June 19, 2007…IBM (NYSE: IBM) today announces the June 29th
availability of IBM Lotus® Quickr 8 software, an open standards-based team collaboration tool that helps teams inside and outside the company firewall easily and effectively work together across geographies, working styles and operating systems.

Lotus Quickr provides a rich set of team collaboration capabilities, including blogs, wikis and team space templates supporting a variety of business processes to get a collaboration project up and running quickly. Already an enterprise-ready team collaboration offering supporting both Microsoft and Lotus software environments, Lotus Quickr interoperability will be further expanded with a connector to Microsoft Outlook software currently expected to be released in a beta program for Lotus customers this summer.

Easy to use and install with an intuitive Web 2.0 interface, Lotus Quickr software provides an easy way to share a wide range of business documents and access libraries through plug-ins called “connectors”. These connectors let end users work in their familiar desktop applications without impacting their work patterns – and access Lotus Quickr content directly from IBM Lotus Notes, IBM Lotus Sametime, Microsoft Windows Explorer and Microsoft Office software.

Through a beta testing program conducted since early 2007, IBM has taken feedback from dozens of customers and partners to improve Lotus Quickr 8 to meet the needs of the connected workplace. The result is a clean and user-friendly interface designed to ease users into a more collaborative work style and increase visibility of materials and contributors.

“IBM has developed an extremely competitive content and collaboration product with the ability to be extended and customized to meet specific business and industry needs,” said Daniel Lieber, president of Innovative Ideas Unlimited, Inc. “The Lotus Quickr interface is clean, consistent, and straight-forward. We found it to be very efficient for working with collaborative content and accomplishing tasks in a personal, workgroup, departmental, or enterprise environment.”

“Lotus Quickr integrates key Web 2.0 capabilities, such as blogs & wikis that expand the type of collaboration possible, and it provides a breadth of integration across everyday applications from Microsoft & Lotus delivering ease of access to content,” said Ken Bisconti, Lotus vice president of messaging and collaboration software. “This flexible tool bridges gaps in working styles and technical savvy — appealing both to workers embracing Web 2.0 internet content tools such as blogs and wikis along with those who are more comfortable accessing content from the familiar Microsoft Windows Explorer interface.”

Key benefits of Lotus Quickr include:

  • Web 2.0 features that enhance usability: IBM has incorporated Web 2.0 technologies such as AJAX (Asynchronous JavaScript and XML) into Lotus Quickr to deliver an intuitive, integrated and high performing graphical Web-based user interface. This interface includes dynamic action menus that can be accessed through a right click, and easy drag and drop features to seamlessly move documents into team spaces. Lotus Quickr provides the ability to publish and consume Atom-based news feeds, publish team blogs, use the built-in wiki technology for creating content, and to assign tags and permalinks to content. It is easily customizable and extensible without requiring programming skills.
  • Support for open standards, providing customer choice of vendor: Customers are free to mix and match products as they desire. Lotus Quickr integrates with Microsoft Office 2003 and 2007, Microsoft Windows Explorer on Windows XP and Windows Vista, IBM Lotus Notes 7 and 8 (with planned support for Lotus Notes 6.5) and Lotus Sametime 7.5. Lotus Quickr supports Microsoft Internet Explorer, Firefox, and Safari browsers, providing Web access from Windows, Linux, and Macintosh desktops. In addition, IBM currently plans to release a beta version of a Lotus Quickr connector for Microsoft Outlook this summer. IBM also currently plans to release migration and coexistence tools that will allow users to access content in existing Microsoft SharePoint and Exchange public folders via Lotus Quickr’s web 2.0-style collaborative user interface, or to migrate that content out of Microsoft repositories into Lotus Quickr, where it can be easily accessed and widely shared.
  • Easy-to-use features that can be rolled out across enterprise: Many past efforts to create project spaces have been either difficult to use or were not enterprise-ready. Lotus Quickr makes it easy for any team member to get up and running with easy instructions on how to get started, a clean and simple user interface, tutorial style wizards that guide the user. Lotus Quickr also features helpful pop-ups that remind the user when they can opt to place a document inside a shared place rather than send it as an attachment to others.
  • User-driven enhancements that reduce information overload and errors that come with sharing documents among team members through email: When documents are sent from a single user to a group for feedback, the process of tracking edits and changes over email can be inefficient and prone to error. Lotus Quickr allows check in and check out of documents to prevent simultaneous editing and versioning to track changes. In addition, wiki technolology provides an in-place Web editing option with history so a user can revert back to an earlier version of a page. The wiki and library views support posting comments about documents that are viewable in a pop-up screen by rolling the mouse over a document.
  • Business application templates that provide immediate out-of-the-box value and support of common business processes: Lotus Quickr includes business templates, such as a meeting place, project management, image repository, dynamic surveys and more. All templates are customizable, allowing users to easily change the look and feel and add pre-built components, such as a team blog, a project calendar, or an announcement page.
  • Future enhancements to Lotus Quickr include integration with IBM’s enterprise content management (ECM) systems. Customers will be able to use Lotus Quickr to collaborate on content and seamlessly leverage the world-class capabilities of IBM FileNet P8 and IBM DB2 Content Manager software to manage that content.

Lotus Quickr Pricing and availability: Prices will be announced at the time of availability on June 29. For more information, visit: ibm.com/lotus/quickrIBM, the IBM logo, DB2, Lotus, Notes, Quickr and Sametime are trademarks of IBM Corporation in the United States, other countries, or both. Microsoft and Windows are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries.
FileNet is a registered trademark of FileNet Corporation, in the United States, other countries, or both.

Microsoft and Windows are trademarks of Microsoft Corporation in the United States, other countries, or both.
Linux is a registered trademark of Linus Torvalds in the United States, other countries, or both.

Other company product or service names may be trademarks or service marks of others.

The information above is based on IBM’s current product plans and strategy, which are subject to change by IBM without notice.

Jun 152007
 

Today I added a really cool plug-in for my blog. Instant podcast for all my post entries. It is all done by a free service from Odiogo. It adds this image, , at the bottom of each of my posts. When clicked it will read the contents of the post to you. Super cool. It does take a little time for Odiogo’s servers to parse the text and to create the mp3, but if you click on any of the posts below this one it should work. UPDATE: This post can now be heard as well. You can also go to a podcast page with all the latest posts by clicking here .

Enjoy

Jun 142007
 

Rob Novak has uploaded our third Lotus Quickr template. This time you’re introduced to QSurvey.

In my third demo, you’ll be introduced to QSurvey, a component that allows you to create surveys, lets users take them, and provides two methods of generating survey reports. I’m loving this one myself, because having been in the Lotus world for nearly 15 years now, surveys have been in demand and really hard to do. There have been and may still be some third party products for this. I’ve even built it myself, many years ago. There was much pain in the days when it was nearly impossible to assemble fields onto forms without being a trained developer, and have it look good on the web.

The implementation here in Lotus Quickr is fairly elegant, as we store all the survey questions as JSON, all the answers as JSON, and simply reassemble it all for the live reports. What I like about QSurvey is how easy it is to use…I can create a survey quickly with a question “wizard”, enable it, and let people take it for either a defined period of time or disable it myself. And of course, there are options for securing the survey, deciding who can see result reports, and choosing whether to allow anonymous access.

Click the link to check out the QSurvey Demo.

Jun 062007
 

There are many articles out there explaining what JSON is and where to use it, including a very good article written by Scott Good titled JSON and Domino.

What I’m going to try to explain in this tutorial is why associative arrays are our best friend when coding with JSON and Ajax. We have all seen how JSON is starting to dominate the Ajax calls. Face it, XML is so 2006. But let’s jump to the code shall we?

Normal Arrays

We made an Ajax call to our table, or view if we live in the Lotus Domino world, using our favorite way (mine is using the Dojo toolkit) and we now have an array of objects that we need to iterate through. Let’s see an example of what the array might look like.

var aArray = [
{unid: "111AAABBBCCCDDD111", first: "Rob", last: "Novak", phone: "(555) 111-1111", zipcode: "11111"},
{unid: "222AAABBBCCCDDD222", first: "Troy", last: "Reimer", phone: "(555) 222-2222", zipcode: "22222"},
{unid: "333AAABBBCCCDDD333", first: "Jerald", last: "Mahurin", phone: "(555) 333-3333", zipcode: "33333"}
];

If all we want to do is write the array out to the browser this is fine, we just use a normal for loop.

var sHTML = '<table border=1>';
for (var i = 0; i < aArray.length; i++){
sHTML += '<tr>';
sHTML += '<td>' + aArray[i].unid + '</td>';
sHTML += '<td>' + aArray[i].first + '</td>';
sHTML += '<td>' + aArray[i].last + '</td>';
sHTML += '<td>' + aArray[i].phone + '</td>';
sHTML += '<td>' + aArray[i].zipcode + '</td>';
sHTML += '</tr>';
}
sHTML += '</table>';
document.write(sHTML);

Output:

111AAABBBCCCDDD111 Rob Novak (555) 111-1111 11111
222AAABBBCCCDDD222 Troy Reimer (555) 222-2222 22222
333AAABBBCCCDDD333 Jerald Mahurin (555) 333-3333 33333

But what if we have a little bit more complex example. (Stay with me.) What if we had a way of updating user meta data from this document or form and later call code on the server to actually update the record or document in the back-end.

So we have created JavaScript that when a row is clicked, fields are populated with data from the array so the user can update them. The end user clicks a button and our array should be updated with the new meta data. We also want to add a property of “updated” with a value of true (boolean) if it is changed so that we later only pass in those documents that have changed to our back-end code (agent if Lotus Domino).

So in our scenario we have updated one of the records and call a function to update the array. With a normal array this would be done like this.

function updateUserMetaData(sUnid, sFirst, sLast, sPhone, sZip){
for (var i = 0; i < aArray.length; i++){
if(aArray[i].unid == sUnid){
aArray[i].first = sFirst;
aArray[i].last = sLast;
aArray[i].phone = sPhone;
aArray[i].zipcode = sZip;
aArray[i].updated = true;
break;
}
}
}

This works but if we have hundreds or thousands of records in the array it can take a long time. We have to iterate over all the values in our array to find the one with the right “unid”. Even though we are using a break statement when we have found our record it can still take a long time. Associative arrays to the rescue.

Associative Arrays

In JavaScript we have something called objects. They are a mapping from property names to values. Objects are an associative array with one caveat: since property names are strings, only string keys are allowed. That doesn’t matter to us.

We write an object literal as { property1: value1, property2: value2, ... }

Let’s rewrite our code to create an object instead of the array above.

var oObject = {
"111AAABBBCCCDDD111": {first: "Rob", last: "Novak", phone: "(555) 111-1111", zipcode: "11111"},
"222AAABBBCCCDDD222": {first: "Troy", last: "Reimer", phone: "(555) 222-2222", zipcode: "22222"},
"333AAABBBCCCDDD333": {first: "Jerald", last: "Mahurin", phone: "(555) 333-3333", zipcode: "33333"}
};

Can you see the difference? Not much difference in the text but a huge difference in what we can do.

First we can’t use a normal for loop to write our table any more. We need to use a for(in) loop.

var sHTML = '<table border=1>';
for (var unid in oObject){
sHTML += '<tr>';
sHTML += '<td>' + unid + '</td>';
sHTML += '<td>' + oObject[unid].first + '</td>';
sHTML += '<td>' + oObject[unid].last + '</td>';
sHTML += '<td>' + oObject[unid].phone + '</td>';
sHTML += '<td>' + oObject[unid].zipcode + '</td>';
sHTML += '</tr>';
}
sHTML += '</table>';
document.write(sHTML);

The output is exactly the same as above so we haven’t gained any value there. The big difference is in our function to update our meta data.

function updateUserMetaData(sUnid, sFirst, sLast, sPhone, sZip){
oObject[sUnid].first = sFirst;
oObject[sUnid].last = sLast;
oObject[sUnid].phone = sPhone;
oObject[sUnid].zipcode = sZip;
oObject[sUnid].updated = true;
}

As you can see we no longer need to iterate through an array to find our record. Since it is an object we can just update the property values directly.

Conclusion

In search for fast JavaScript code, associative arrays will help many times. It may seem a little difficult to code to begin with but after a while it actually makes much more sense. Object oriented programmers will find it easier.

Exactly one year ago from today, June 6th 2006, James Mc Parlane declared JavaScript Array and Object.prototype Awareness Day. Read that article. It will help you code better associative arrays (objects) in JavaScript.

Jun 052007
 

I’ve created some Google maps mashups to help our delegates of Collaboration University get around and become more familiar with the venues.

You can check out Kansas City and London here. If you have Google Earth you can also open these mashups inside there by clicking on the following links: Kansas City and London.

Jun 042007
 

Several people have commented and emailed me wanting some sort of forum where I can post updates to code, examples and tutorials and where you can post your code variations, updates and ask questions to me and others.

So I have created eKrantz.com Forums where you can register and ask questions and write your comments about Dojo Calendar and Lotus Quickr code and tutorials. So go there now and register so we can get some good discussions going.

May 302007
 

At Rob Novak’s and my session, BP311 — The Great Code Giveaway — Web 2.0 edition, at Lotusphere 2007 we had this slide at the beginning of our session.

We were having a little fun with the just announced name change of Lotus QuickPlace to Lotus Quickr. So we changed our names to Robr and Viktr. Jonas Israelsson captured the slide with his camera. You can see all his photos from Lotusphere 2007 by clicking here.

Today I was at my registrar to update one of my other domains and I just happened to remember that slide and our “name changes”. I looked Viktr.com up and to my surprise it was available so I bought it right away. It is pointing to eKrantz.com but maybe I should start using it instead. What do you think?

May 212007
 

Many of you have requested that I publish the sample database I used for the Faster Ajax with Domino and JSON speed test. I posted the article back in March and I should have done this a long time ago.

All documents/notes has been deleted from the Domino database to save some space and bandwidth on my server. If you want to run the tests yourself on your server you need Firebug so it can calculate the time it took for the XHR (XMLHttpRequest) to run. If you just want to check out the code, feel free to do so.

All code are in two Domino Pages: TestJSON and TestXML

  • Download [download#4#nohits] and put it on your server.
  • Open it up in Notes.
  • Create a few dummy documents by selecting Create/TestForm.
  • Copy & Paste the dummy documents many times so that you have a lot of them.
  • Browse to: your_server_and_directory/XML_JSON.nsf/TestXML?OpenPage for the XML version.
  • Browse to: your_server_and_directory/XML_JSON.nsf/TestJSON?OpenPage for the JSON version.

Enjoy