Dec 172010
 

In the early years of the internet when it was still in its infancy and yet to capture the imagination of a significant section of the society, it was mostly used as a one way content distribution system. Websites were static and their content created by a small team so a larger group of users could access, but not modify it. However over time, the Internet evolved and slowly democratized itself. The content creation was passed more and more to users, and buzzwords like Social media, blogging, tweeting were born. Web 2.0 had finally arrived, and how!!

Wikipedia, Facebook, Twitter, LinkedIn, WordPress were some of the great new tools which empowered users to eliminate geographical boundaries and connect in ways hitherto unimaginable. Blogging really took off in the first half of this decade. Suddenly, the common man had a voice, he could express dissent, criticism or his views of the world today. Previously what was restricted to a lazy chat between friends could be put forth to the whole world and this essentially changed media as we know it. But blogging hit a roadblock few years back, even though the number of blogs was large, it still weren’t quite the hit that Social media exponents were hoping for. One reason for that could have been the significant amount of time which needed to be invested to write a decent blog post. One needed to jot down his thoughts, organize them, articulate it nicely and edit it well enough to make the post crisp and enjoyable to the reader. The effort needed to do all this made regular blogging out of reach for many web users. Change however, was just around the corner.

On a fateful day in 2006, Twitter was launched. Initially called the SMS of the Internet, Twitter’s 140 character limit became a empowering tool rather than an impediment to content creation. Blogging Microblogging was far more easier and the medium exploded. From 400,000 tweets per quarter in 2007, it reached 50 million tweets per day in February this  year. Given Twitter’s unprecedented success, it was inevitable that the enterprise looked at it to be used as a collaboration tool on the Intranet. And thus, Enterprise Microblogging was born. I had the opportunity of being a part of two such social networks in my current and previous organizations (powered by Yammer and Socialcast) from their infancy to  relative maturity.  I’m no social media expert but I jotted down some of my random observations from a user’s perspective.

Growth Cycle:-

Like many software products and technologies, a user’s perception of Enterprise Microblogging also follows the hype cycle.

Most new users sign up to Microblogging via an invite from their colleagues. Those who dont have much experience in using twitter are usually bewildered by this new tool. Expectations are high thanks to that over-enthusiastic colleague who promised the world for signing up. But disillusionment quickly sets in, for many users there is too much of wildly varying content to make any sense out of. They send out a couple of messages, maybe like a few posts but thats just about it.  Not many users are patient enough to ride out the disillusionment phase to actually start deriving value out of the system. The user retention is quite low in enterprise networks and according to my rough estimates only about 30-40% users are active in the system.

The Champion

Though social networks are touted to grow horizontally without the need of any central direction, I have observed the opposite in Enterprise Microblogging. People adapt to the network much faster if there is someone who quickly welcomes new users, understands their interests and introduces them to like minded people, routes queries to individuals/groups who can answer them faster. Maybe in a mature network, this function could be taken over by a group of power users. But those that are still growing, require an individual who can be the champion. In my previous organization I observed the quality of the network content going down considerably when the champion scaled down his participation and no one else took over.

Signal to Noise ratio

Image courtesy http://www.socialresearchmethods.net

The public timeline/ Home Stream is the holy grail of user experience in any social network. Facebook took this serious enough to patent its NewsFeed feature to decide which friends’ updates appear on your news feed.  If our close friends updates appear on the news feed, then the chance of responding becomes much higher. In the absence of a personal connection on microblogging sites, this translates into users whose updates would be interesting to us. It could be determined by similarity in content, common connections etc. Nothing would confuse a new user more than completely random content which is not in the least bit appealing.

Groups, Communities and Networks

Continuing with my previous point about the Signal to Noise ratio, the content in the Home Stream is often too amorphous to be of interest to a newbie. Here is where Groups or Communities help in the Microblogging network. When like minded people come together, the content they create is more likely to be homogeneous and easier for a person to relate too. In Yammer I saw that some groups had more posts and replies than the general stream itself. Socialcast also has a great feature which allows users to tag the post to a group in the comment even if the original author misses to do so. This is where power users and the Champion can contribute to the network by making sure all content is properly categorized according to the groups in which it belongs.

Will Microblogging kill email?

Microblogging has as much chance of killing email as Google docs has of replacing MS Office. Regardless of the merits or demerits of the two platforms, the adoption of one at the cost of the other requires a fundamental shift in the thinking of the users – not too dissimilar from the time when typewriters gave way to computers. Whether users will be willing to make that quantum leap and ditch email entirely, only time will tell. However it is not deniable that Microblogging would eventually reduce the amount of email being sent in the organization. Organization wide updates which are cascaded to a large group of users would be far easier through social media than conventional email.

Knowledge Management Tool?

Knowledge Management in today’s organizations are not restricted to churning out thousands of documents and then taking pride in number of documents we have in our knowledge repository. To be of any real value, the more useful resources must be separated from the ordinary Copy-paste jobs from the internet. Microblogging provides us a measurable mechanism to gauge the response of the community towards any particular content posted in the form of the replies / likes it receives. Documents which elicit larger response are more likely to be of use. Also since its all text based, all of the content is indexable and searchable from various other point of access like Intranet Portals, Sharepoint sites etc.

Democratizing the Organization

Even though almost all the higher management if any company works with an open-door policy, in practice the direct communication between employees engaged in actual operations and the management team is quite rare, and mostly in scenarios with set agenda and little room for a free discussion. Microblogging gives every employee the chance to put forth his direct questions to the management team. Frank opinions and suggestions can be given on the strategy of the company.

Tagging and Trending

This one’s a no-brainer. Hashtags allow us to categorize information according to topic and makes it easily searchable later. Trends give us a picture of the so called hot topics being discussed at the very moment. However though trends are suited for a large user base like Twitter, microblogging networks have far less users and this feature isn’t used that much.

Feb 122010
 

Google Chrome recently opened up their extensions API. Though Chrome had supported extensions quite early on in its lifecycle, the API was still a work in progress and one needed to open Chrome in the developer mode to play around. A few weeks back, Chrome announced that extensions are now enabled in normal mode as well.

So I decided to poke around the API and write a simple extension. Though it doesnt compare to FireFox yet with much of the browser still not accessible, but I am sure future versions will bring much better customization capability. The extension I wrote is very simple and just displays the latest trending topics from twitter. The source can be downloaded here and the packaged version here.

Lets see the anatomy of a Chrome Extension. An Extension consists of three main parts

  • Manifest
  • UI
  • All your other files like scripts, stylesheets, images, etc

The manifest is a json file which contains the metadata about your extension. Details like Title, Author etc

{
  "name": "Twitter Trends",
  "version": "1.0",
  "description": "Displays Current Trending Topics",
  "icons": { "128": "icon.png" },
  "browser_action": {
    "default_title": "Twitter Trends",
    "default_icon": "icon.png",
    "popup": "Background.html"
  },
  "permissions": [
    "tabs",
    "http://twitter.trends.free.fr/*"
  ]
}

As you can see, it contains basic details like name, version, icon etc. The popup attribute tells us the page to open when the browser button is clicked. As you can see I have specified a normal HTML page here. A popup extension is nothing but a simple HTML page opened when the toolbar button is clicked. Another interesting part is the permissions section. Here we can specify what all websites the extension can make AJAX calls to retrieve data. Since it matches based on wildcards, a * denotes all possible subdirectories under the website.

Now the HTML part. Since its a normal HTML page, you can include references to scripts, images, style sheets etc. The extension directory works as the root and all paths must be relative to it. Since its a simple page, I included all the scripts and styling information in a single page.

First the styling information. Always helps to keep this separate.

  body {
  font-family: helvetica, arial, sans-serif;
  font-size: 12px;
  overflow: hidden;
  background-color:#ddeef6;
  }
 
  #title
  {
      font-size:14px;
      overflow:hidden;
  }
 
  #mainDiv
  {
      min-width:175px;
      margin-top:5px;
  }
 
  .topicDisplayClass
  {
      display:block;
     min-height:2.2em;
     cursor:pointer;
  }
 
  .linkClass
  {
      color:#2276bb;
      text-decoration:none;
      vertical-align:middle;
      padding-left:2px;
  }
 
  .topicDisplayClass:Hover
  {
      background-color:#edfeff;
  }

Next the javascript. This is the most important part of the extension. What we do here is retrieve the RSS feed for the trending topics and parse it as an xmlDocument. After iterating thorough this xml, a span element is dynamically created for each item and it is appended into our main content holder. This main function call is delayed using the setTimeout function. We do this in order to let the user see the popup and see some progress which data is being fetched. Writing this in the onload event would make the user wait for the whole process to complete before seeing the popup.

/* Developer  : Ganesh Ranganathan
* Date       : 02/12/2010
* Description: This is a Google Chrome Extension created to display
            latest trending topics on twitter. */
 
//Global variables: the xmlHttpRequest and Feed URL
var _req;
var _feedURL = 'http://twitter.trends.free.fr/feed/';
 
function main() {
    //Call the loading method after a slight delay to allow
    //Chrome to load the extension body. Else it looks ugly with
    //the pressed button waiting for the feed to load.
    setTimeout("delayedCall()", 20);
 
}
 
function delayedCall() {
    //No browser compatibility code Yay!!!
    _req = new XMLHttpRequest();
    //Hooking up the readystate changed event handler.
    _req.onreadystatechange = function() {
        if (_req.readyState == 4 && _req.status == 200) {
            //Come here only if all data is loaded.
            var doc = _req.responseText;
            var parser = new DOMParser();
            //Parsing the Data into the XML dom for manipulation
            var xmlDoc = parser.parseFromString(doc, "text/xml");
            var mainDiv = document.getElementById('mainDiv');
            mainDiv.innerHTML = "";
            //Getting all the items
            var items = xmlDoc.getElementsByTagName('item');
 
            for (var i = 0; i < items.length; i++) {
                //Iterating through all the items and getting the title
                //and link. The description isnt a big deal in this feed.
                var title = items[i].getElementsByTagName('title');
                var link = items[i].getElementsByTagName('link');
                //Create an anchor and a span
                var spanNode = document.createElement('span');
                var linkNode = document.createElement('a');
                //Set Link to span
                linkNode.setAttribute('href', link);
                linkNode.innerText = title[0].childNodes[0].nodeValue;
                linkNode.className = 'linkClass';
                spanNode.appendChild(linkNode);
                spanNode.className = 'topicDisplayClass';
                var str = link[0].childNodes[0].nodeValue
                //Hooking the click event handler to the span
                //It calls the chrome tabs API to open the clikced
                //URL in a new tab
                spanNode.addEventListener("click",new Function("clickHandler('"+str+"')"),false);
                mainDiv.appendChild(spanNode);
            }
        }
    }
 
    //Without these two the AJAX request would never get sent.
    _req.open("GET", _feedURL, true);
    _req.send(null);
}
function clickHandler(str) {
    chrome.tabs.create({ url: str });
}

The markup is largely simple. Just the main content holder which contains a progress bar which is displayed to user while we load the data. Once that is done, the progress bar is replaced with the span nodes containing the trending topics.

<span id="title">Trending Topics</span>
<div id="mainDiv">
<!-- A Progress Bar to show the user something is being done -->
<img src="ajax-loader.gif" alt="" width="175px" /></div>

Now the manifest, html and image files need to be in a single folder. After that go to Chrome and click the customize dropdown button, and select Extensions. In the extensions page, select Load Unpacked Extension and select the folder where the extension files reside.

Once the extension is loaded, it shows as unpacked and you can do all the testing here by reloading it everytime any changes are done.

After testing, we can choose the pack option to package the extension for download. A .crx file would be generated which can be distributed for download. Below are some screenshots of the extension we just created.

Data is loading

Nov 202009
 

Here’s how. Download the wordpress plugin Twitter Tools here. Unzip and copy the folder to your wordpress blog’s wp-content/plugins folder using any FTP Client (I use FileZilla) . Once done, you should see the list of plugins in your WordPress Admin page (To see click on Plugins -> Installed ) . There Activate all the twitter tools plugins you want to use.

pluginSettings

Once Activated , go the Twitter tools settings page and enable your blogs to posted to your twitter account. You need to give your twitter username and password. You can also click on “Test Login” to make sure your login works.

twittersettings

Also you can give the prefix for the tweet. By default it is New Blog Post. Also set it to On by default which is the next option. And thats it, all your blogs would be posted as tweets to your twitter page. You can configure it the other way round as well, i.e. all your tweets would appear as  blog posts. A weekly/ monthly digest can also be configured. Quite useful, I must say.

Oct 222009
 

After a long wait twitter has finally announed that it will start supporting sending of updates to mobiles phones on the Airtel network. Read their blog entry here.

twitter-pic

 

Twitter did provide support for mobile phones in India in the past but for some reason had discontinued it. Maybe it was the cost.

New twitter users can message SIGNUP to 53000 to recieve instructions on how to setup their devices on airtel. If you are an existing user, message START to 53000 to start the service. Please note that you would have to send a verification code provided by twitter to 53000 to get your device verified. Once this is done, any messages sent to 53000 would appear on your twitter page instantly!!

Each message to 53000 costs Re 1 as of now. Though I am not getting updates from twitter, but the updates I send are being reflected. If you are not an Airtel customer, don’t worry, there is already talk going on of getting the other operators on the bandwagon in another 2-3 weeks.