Sep 252008
 

After almost three weeks I finally got back home to my family last night and it was great to see my kids and wife again. Three weeks is a really long time to be away. But wow what a three weeks it was. First a very successful Collaboration University in Chicago and then repeated in London the week after. I had three sessions on Themes, Dojo & JSON and Tags & Categories inside Quickr. I got positive reactions on all of them but maybe mostly on the Tags & Categories session. More on that in a later posting.

After CU I flew over to Västerås, Sweden to visit my family over there. 5 days of visiting with my father and mother and siblings was just great. In only a few days I managed to eat both moose, Swedish craw fish and Swedish roe deer. All superbly prepared by my sister and sister-in-law. The chanterelle sauce that we had with the roe deer was unbelievable.

Monday evening I left Sweden and flew back to London where Carl Tyler picked my up at the airport and I got to spend a couple of nights with his parents outside London. Tuesday we went to Oxford where we walked around for a few hours looking at the old universities there. Very nice. Thank you Carl (and Carl’s parents) for a couple of wonderful days.

It is great to be out on these speaker engagements and visit friends you only see a few times a year but boy is it nice to back home with family again.

Sep 052008
 

Collaboration University 2008 - Chicago & London

So I’m off to Collaboration University after the last few weeks being very hectic. Wrapping up a few customer projects needed to be finished before it all starts and of course the CU slides and demo code as well. I’m out for almost 3 weeks straight this time, first Chicago and then off to London for the repeated event there.

The last few days I get to back to the old country (Sweden) and visit with my family there. I’m also visiting with a couple of old friends preparing for our football trip to New York in October-November. More on that later.

I have three sessions at CU this year:

  • Quickr Custom Themes: What a Difference a Version Makes!
  • Leveraging the Dojo Toolkit, JavaScript, and JSON in Quickr
  • Tags and Categories in Quickr: How to Add, Use and Present

I’m really looking forward to Collaboration University this year. Record attendance and great locations are going to make a great conference.

CU there.

Aug 212008
 

This year we are producing a few pre-conference session movies for Collaboration University to get you up to speed for the 3 days packed with intense training. From Rob Novak’s blog:

Our approach the past two years has been to quickly get the basics out of the way on the first day then progress rapidly into meatier stuff by afternoon. Even so, we’d get a few complaints from those who have more experience, because they already knew all the morning content. That worked “OK”, but this year with the delivery of these early sessions outside the confines of the three onsite days, we’ve found a great solution. Those who need and want the basics get them – and can attend all of these sessions on their own time – and those who don’t are not missing anything because we’re starting the conference at a higher level.

As an example, Carl Tyler put together this 5-minute segment of his pre-conference video on Installing and Configuring Eclipse for Sametime Plug-in Development. It is the prerequisite session for his live session on creating Sametime plug-ins (makes sense), and in the full session you can follow along and prepare your own machine to be ready to use those live materials. Enjoy!

Aug 152008
 

From Rob Novak’s blog:

The SNAPPS Quickr Templates at QuickrTemplates.com have been updated with various fixes and a new feature I’ll describe here. But first, a note on versions.

We elected to match version numbers with Quickr when 8.1 shipped, so 90 days ago when they were posted, our versions revved to 8.1. Now we also have fixes to the templates unrelated to the Quickr version number or hotfix level, so have taken our versioning out two decimal points – the new version is 8.1.0.1. If we have another release before IBM revs to 8.1.1 (or whatever’s next), our version will be 8.1.0.2. Clear? Good.

Enjoy!

Aug 132008
 

We have updated the agenda and speaker pages for Collaboration University, both in Chicago and London. It’s all done in a very “Web 2.0” fashion by combining Domino, JavaScript, JSON and the Dojo Toolkit. Dynamic link, using Dojo Tooltip, to the speaker with photo.

CU Agenda - with Carl Tyler

Go over to Collaboration University and click on Sessions and Speakers pages and roll over things, change days, play around – it’s a very cool data-driven Domino application.

Jul 292008
 

Today's tutorial: Dojo Tag Cloud Widget using dojo.data store

So I though it was time to post another Dojo widget tutorial. This time I have written a widget for displaying a tag cloud. Even though you could use it for any kind of links, the most common use is obviously tags from your blog or other website. The TagCloud widget is using dojo.data and any kind of store to display the tags. Let’s jump into some code shall we. In the bottom of this tutorial you will find links for downloading all the code.

First we need to add our core Dojo and dependencies to our JavaScript in the head of our HTML page.

[code=”xhtml”]
[/code]

You can see that we added the ItemFileReadStore, after that we have the topic of the tutorial: mydojo.TagCloud and last we added the dojo.parser so that we can create our widgets by HTML markup. You can see that the name space for my widget is mydojo.TagCloud. That means that I’ve created a folder named mydojo in the same folder as the dojo, dijit and dojox folders.
Now we add the dojo.data store and the markup HTML for our Tag Cloud widget inside our body.

[code=”xhtml”]

[/code]

You can see what it looks like in example 1.

The link above will give you the default TagCloud widget. If you look at the code, through Firebug naturally, you’ll see that it is made up of a DIV element with an unordered list, UL, inside. The list has all the tags from our dojo store with different sizes. Larger for tags with more values.

Most people want a tag cloud to look like a tag cloud though 😆 For that we need to add some style to our code inside the head tag.

[code=”css”]

[/code]

See example 2.

As you can see in the style classes above we declared a font and width inside a class named “TagCloud”. That class is always added to the div tag that the widget creates. That default class name can be changed and you can also add other classes that I will explain later. We also declared that any UL tag inside “TagCloud” will not have any margin or padding. That is because the browser automatically adds some margin and padding to unordered lists and we don’t want that for our tag cloud. Last in our style sheet we add the definition of our list item, LI. We want it to display inline and not be in a list format.

Lets add some more style to our tag cloud before I explain what attributes we can pass in to our widget. We add some more attributes to our existing classes and add two more rules.

[code=”css”]

[/code]

View it in example 3.

Tag Cloud Widget Attributes

There are a number of attributes we can pass in to change behavior and/or functionality of our widget. If we open up our widget JavaScript file we will see a number of variables at the top. You can actually change all of those by just adding attributes to our widget HTML code. They are documented inline in the code but lets look at a few of them.

[code=”javascript”]//sizeDifference: Boolean
//If we should show larger font for more tags
sizeDifference: true,

//fontMaxSize: Integer
//The size of the largest tag in percent
fontMaxSize: 200,

//fontMinSize: Integer
//The size of the smallest tag in percent
fontMinSize: 100,[/code]

So we can choose not to have a difference in size on the tags. How would we add that? Let’s look at the example below.

[code=”xhtml”]

[/code]

See what it looks like in example 4.

We have just added the sizeDifference attribute with a value of false to our widget code. Other then that it is the same code as example 3 above.

We can also choose to have bigger difference in size on tags. As you can see I’ve added the fontMaxSize attribute to our widget DIV tag.

[code=”xhtml”]

[/code]

Really large fonts in example 5.

I mentioned earlier that you can also add more style sheet classes besides the default class “TagCloud” to your widget. By adding the normal “class” attribute to our DIV tag. Classes will be appended after the “TagCloud” class. The default class can also be changed by changing the “baseClass” attribute.

What happens when the user clicks the tag? Well, since I don’t know what should happen because it depends entirely on what your tags represent and also on what kind of server the code sit on. In this blog, based on WordPress, the tag when clicked would take you to a url that look like:

[code=”javascript”]/index.php/tag/the_tag[/code]

So how do we do that? Well, one of the variables/attributes in our TagCloud widget is “clickFunction” with a default value of “tagItemClicked”. So you can add JavaScript funtion named “tagItemClicked” or pass in a new value to “clickFunction”. I’m going to show you the first way. Let’s add the following code to our JavaScript in the head of our HTML page.

[code=”javascript”]function tagItemClicked(sTag){
alert(“You clicked on ” + sTag);
}[/code]

See example 6.

If you click a tag it will alert the tag. Not very useful so let’s change it a little to make it work on my blog.
[code=”javascript”]function tagItemClicked(sTag){
location.href = ‘/index.php/tag/’ + sTag;
}[/code]

Updated to example 7.

Two other very important variables that we can change in our widget are the names of the item value names in our data.store. Default are “name”, “slug” and “count” and you can obviously keep those. Many times however you might not have the luxury over what your Ajax (XHR) call will return, or you just don’t like mine. 😥 In that case you can change them by adding the attributes “tagAttr”, “slugAttr” and “countAttr”.

Below is the JSON i’ve been calling with the ItemFileReadStore in all our examples so far.

[code=”javascript”]{items:[
{name:”ajax”, count:15},
{name:”beth”, count:2},
{name:”blog”, count:4},
{name:”calendar”, count:3},
{name:”calendar entries”, slug:”calendar-entries”, count:2},
{name:”Collaboration University”, slug:”collaboration-university”, count:14},
{name:”cu-2007″, count:11},
{name:”demo”, count:6},
{name:”dojo”, count:31},
{name:”domino”, count:20},
{name:”family”, count:9},
{name:”google”, count:2},
{name:”ibm”, count:5},
{name:”lotusphere”, count:11},
{name:”lotus quickr”, slug:”lotus-quickr”, count:27},
{name:”movies”, count:2},
{name:”podcast”, count:3},
{name:”snapps”, count:30},
{name:”templates”, count:17},
{name:”tutorial”, count:11},
{name:”widget”, count:4},
{name:”xhr”, count:3}
]}[/code]

As you can see it uses the default “name” and “count” attributes for each item. If however that would be changed to “word”, “special” and “number” everywhere…

[code=”javascript”]{items:[
{word:”ajax”, number:15},
{word:”beth”, number:2},
{word:”calendar entries”, special:”calendar-entries”, number:2},

{word:”xhr”, number:3}
]}[/code]

…we would change our HTML markup to:

[code=”xhtml”]

[/code]

What is the “slug” attribute you might ask. When a tag need a different call than it’s name you can add the slug attribute. If none is there it will just use the name attribute instead. In the example above the tag “calendar entries” has a slug of “calendar-entries” that way we can display one way but still link to the right URL.

Calling our widget with JavaScript

What if we wanted to do all this by JavaScript instead? Well Dojo widgets have this build in so all we have to do is code our HTML page a little different.

We can delete the reference to “dojo.parser” in our SCRIPT since we no longer are parsing HTML markup and we would add the following JavaScript.

[code=”javascript”]function createTagCloud() {
var oStore = new dojo.data.ItemFileReadStore({
url:”tagcloud.json”
});
var oCloudDiv = dojo.byId(‘tagCloudDiv’);
var oCloud = new mydojo.TagCloud({
store: oStore
},oCloudDiv);
}

dojo.addOnLoad(function(){
createTagCloud();
});[/code]

Then in our body we would add the following HTML.

[code=”xhtml”]

[/code]

JavaScript version example 8.

I hope you enjoyed this tutorial and I would love to read your comments. Here you can download the [download#1]. Happy coding.  🙄

Jul 282008
 

Julian Robichaux is joining SNAPPS

For the first time in 5 years SNAPPS have hired a new member to our team. I’m thrilled to announce that Julian Robichaux is joining SNAPPS as a Senior Developer (or whatever he wants his title to be). Julian, who you know from six years of blogging at nsftools.com, the Taking Notes Podcast, and various speaking engagements at Lotusphere, The VIEW, ILUG, and others, brings 12 years of Notes & Domino experience to SNAPPS. Julian has provided companies and clients with a number of “out of the box” solutions, knows all the relevant programming languages and toolkits, and has extensive experience with relational database integration.

He spent a couple of days here in Overland Park with the team last week to make sure we were a good fit and let me say, I know it will be. Julian and I have met just briefly before at various conferences but I have followed his blog and the TNP’s closely. He will continue to work from his office in Georgia but will come in to the office every so often. He will be joining us for Collaboration University in September and will continue to speak at various events, just under the SNAPPS name now.

So Julian, I’m very excited about working with you and I know that SNAPPS will benefit from your knowledge and expertise. Hey, we might have some fun too. 😆

Jul 212008
 

Liz & Rob Novak

Today is SNAPPS president Rob Novak’s birthday. Rocky Oliver created a post where you can write a limerick for him.

Here is my contribution:

A man named Rob was a vegetarian
He was eaten for lunch by a librarian
Said the woman, “Hello!
You’d be tastier, for sure
If you had been salted and septuagenarian!”

Happy birthday Rob.

May 282008
 

Collaboration University opened it’s new website today with a brand new fresh look. Registration also opened for the event. This year we will be in Chicago and London. This event is a deep focus on Lotus Quickr, Lotus Sametime and new this time Lotus Connections focused on on integration and APIs.
From Rob Novak’s site:

In Chicago we’ll be at the IBM Innovation Center, located on the Chicago River a few blocks from Michigan Avenue. I have visited the building twice this year, and folks it is a great place to have the size and type of conference we produce. In two weeks I’ll be in London visiting our venue there, IBM South Bank. Just a few blocks from Waterloo station, Marriott County Hall, the London Eye, and accessible from all over central London. Our dates (both start on a Monday and run through Wednesday)

Chicago: September 8-10, 2008
London: September 15-17, 2008

This year we are also trying a brand new workshop concept

For our workshops this year (Wednesday afternoon post-con), we’re trying something different. We’re going to give you a month’s experience in 3 hours! The workshop will focus on Quickr Domino development and administration. Developers will go to one room and work on an application – with significant help – for 90 minutes, while the admins will start with a “bare bones” install of Quickr and apply best practices security settings, modify LDAP, configure notes.ini and qpconfig.xml, and set up MSSO. Next, each developer will pair up with an admin to deploy the application and test it. If that’s not real-life enough, your resident business client (me) will request a critical change in the application so everyone – developers and admins alike – can learn what choices you have to make when deploying changes to a production Quickr environment.

Visit collaborationuniversity.com and look around and register early for discounts. We also have a discount for past Alumni this year.

Apr 252008
 

SitePen, the primary contributer to Dojo, wrote today about “FREE Top 10 and 100% FREE Dojo FREE Resource List!“. Worth noticing is the last and final one, Dojo QuickStart Guide. A new good tutorial to get up to speed with Dojo.

From SitePen’s blog by Dylan Schiemann:

  1. Dojo API Viewer. A full-featured API documentation tool, generated from source code comments and documentation. Features include simple navigation, complete listings of an object’s fields, clear definitions of a field’s type, clear ancestry paths on a field, function parameters, source and examples.
  2. The Dojo Book. An online culmination of extensive examples and detailed explanations about all things Dojo, authored by dozens of Dojo community members.
  3. The Dojo Forums. A community support resource for your learning and research efforts, without thousands of answers to Dojo questions.
  4. The #dojo IRC channel on irc.freenode.net is the place to chat live with contributors and users of Dojo.
  5. Dojo Campus. An up and coming site that contains a collection of articles and demos about Dojo, as well as a feature-explorer showing off the capabilities of Dojo.
  6. Dojo Community Blogs. Popular Dojo blogs include the official Dojo blog, Planet Dojo, SitePen blog, and Ajaxian’s Dojo category.
  7. Dojo Trac. View open and recently fixed tickets, and easily browse the Dojo source tree using Dojo’s Trac instance. Because of Dojo’s very open nature, every code commit, ticket request, and comment can be viewed through Trac.
  8. Dojo Key Links. A reviewed collection of current and up to date tutorials, demos, and articles about Dojo.
  9. Dojo Presentations. SlideShare hosts a variety of conference slides from recent Dojo presentations.
  10. SitePen’s Dojo QuickStart Guide. This is our brand new, concise, easy-to-follow tutorial for getting up to speed quickly with the Dojo Toolkit.

All these links/tips are great if you want to learn more about the Dojo Toolkit. Enjoy!