Collaboration University, Chicago and London here I come

Collaboration University 2008 - Chicago & London

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.

Collaboration University Studios

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!

SNAPPS Quickr Templates updated

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!

Collaboration University Agenda and Speakers

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

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.

Dojo Tag Cloud Widget

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

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.

<script type="text/javascript" src="/dojo111/dojo/dojo.js"
djConfig="isDebug: false, parseOnLoad: true, usePlainJson: true"></script>
<script>
dojo.require("dojo.data.ItemFileReadStore");
dojo.require("mydojo.TagCloud");
dojo.require("dojo.parser");    // scan page for widgets and instantiate them
</script>

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.

<body>
<div dojoType="dojo.data.ItemFileReadStore" jsId="cloudStore" url="tagcloud.json" /></div>
<div dojoType="mydojo.TagCloud" store="cloudStore"></div>
<body>

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 :lol: For that we need to add some style to our code inside the head tag.

<style type="text/css">
.TagCloud {
font-family:Arial, sans-serif;
font-size:0.8em;
width:350px;
}
.TagCloud ul {
padding: 0pt;
margin: 0pt;
}
.TagCloud li {
display:inline;
}
</style>

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.

<style type="text/css">
.TagCloud {
font-family:Arial, sans-serif;
font-size:0.8em;
width:350px;
padding: 2px;
border:1px solid #666666;
background-color:#EEEEEE;
}
.TagCloud ul {
padding: 0pt;
margin: 0pt;
text-align:center;
}
.TagCloud li {
display:inline;
white-space:nowrap;
line-height:1.7em;
}
.TagCloud a:link, .TagCloud a:visited {
color:#FF0000;
text-decoration:none;
}
.TagCloud a:hover {
color:#666666;
text-decoration:underline;
}
</style>

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.

//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,

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.

<div dojoType="mydojo.TagCloud" store="cloudStore" sizeDifference="false"></div>

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.

<div dojoType="mydojo.TagCloud" store="cloudStore" fontMaxSize="400"></div>

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:

/index.php/tag/the_tag

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.

function tagItemClicked(sTag){
alert("You clicked on " + sTag);
}

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.

function tagItemClicked(sTag){
location.href = '/index.php/tag/' + sTag;
}

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. :cry: 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.

{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}
]}

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…

{items:[
{word:"ajax", number:15},
{word:"beth", number:2},
{word:"calendar entries", special:"calendar-entries", number:2},
...
{word:"xhr", number:3}
]}

…we would change our HTML markup to:

<div dojoType="mydojo.TagCloud" store="cloudStore" tagAttr="word" slugAttr="special" countAttr="number"></div>

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.

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();
});

Then in our body we would add the following HTML.

<body>
<div id="tagCloudDiv"></div>
</body>

JavaScript version example 8.

I hope you enjoyed this tutorial and I would love to read your comments. Here you can download the Dojo Tag Cloud Widget (180). Happy coding.  :roll:

SNAPPS is growing

Julian Robichaux is joining SNAPPS

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. :lol:

Happy birthday Rob

Liz & Rob Novak

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.

Collaboration University 2008

cu_grads_185.jpgCollaboration 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.

Want to learn more about the Dojo Toolkit?

Dojo ToolkitSitePen, 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! Smile

Find your Twitter friends’ friends with Twubble

TwubbleI ran across Twubble today. If you like/can’t live without Twitter this is a great tool/website to find your Twitter friends’ friends. It’s written by Bob Lee that works at Google.

If you use Twitter, Twubble can look at your existing friends’ friends and recommend new people for you to follow. It’s a stupid simple idea, but I think the execution and fun factor have won people over.

I wrote Twubble in a couple nights of hacking in bed after the kid went to sleep. I used the latest Google Web Toolkit milestone which supports Java 5 (flawlessly from my experience). I was writing Javascript code (server and client side) for years before I ever got into Java, but I have to say, you’d be crazy to write AJAX apps any other way than GWT nowadays.

Try it out. It’s amazing how many friends you can find by having this tool examining your friends.

Pages (8): [1] 2 3 4 » ... Last »