Website Extension Paradigms – Commenting Systems

Website Extension Paradigms are primarily ways of extending functionality of a website by a service of a third-party provider.  This trend has emerged in recent years and is growing rapidly with the explosion of websites offering API support (Click to learn more about API).  This opens the door for innovation in business model by combining data from various APIs in interesting ways, in what are called Mashups.   

ProgrammableWeb.com reports that Social, Internet, Telephony, Reference and Government have added more than 2000 APIs in 2011.  Most of these APIs allows you to make a limited number of calls for free and charge for higher usage.  With proliferation of technologies like Apache Hadoop it is now possible for companies to analyze, process and extract intelligence like never before (thanks to companies like Pentaho, Cloudera and Hortonworks).  Companies can now leverage this intelligence and sell it through their APIs.

By Website Extension Paradigms I mean:

  • Extending a website’s functionality by utilizing third-party software and services.  For example, a commenting system.
  • Another form of extension is to host your service on a third-party domain and extend their functionality (Think Facebook Apps).
  • Mashups


I am planning to write a series of blog posts where I will explore different services and platforms that are used in this context.  In this post I will focus on various commenting systems that are in the market today and as a publisher you can use this as a guide in choosing a commenting system for your site/blog.

Some important criterias to consider while choosing a commenting system:

* Real Time comments
* Comment Moderation with multiple moderators if you need
* Anti-spam
* Search Engine crawl-ability
* Social Integration
* Notifications on new comments and replies
* JavaScript librarie(s) that the product uses and make sure there are no conflicts

Disqus: http://www.disqus.com/

Realtime comments – Both posting and updating
Inline media embedding – Youtube, Flickr etc
Fully compatible with mobile websites for commenting while on the go.
Comment Storage: Stored in Disqus and can optionally be synced with your blog provider
Akismet: Protection from web spam
Notification: Subscribe via RSS or email
Like button support for both the page and individual comments
Reactions – Pull mentions of your page on Twitter back into the Disqus conversation on your own site
Comment sorting options include popular now, best rating, newest first, oldest first, etc.
Used By: CNN, Time, Fox News etc.

Echo: http://aboutecho.com/products/real-time-comments.html

Realtime comments – All comment streams are updated without need for manual refresh
Top Commenters – Moderators can mark users as Top Commenters and those comments will automatically bubble up
A cloud service called Echo StreamServer which stores all comments.  They can be retrieved as Activity Streams
PostRank – Intelligent comment ranking algorithm
Integration with Social Networks
Multiple Sort Orders – Like most recent, most popular comments
White Label Solution – Fully customizable look and feel
Analytics – Get insights.  Slice data by article, data source and date ranges
Integrates easily wherever JavaScript is supported
Subscribe via RSS or email

DiscussIt: http://www.pnyxe.com/DiscussIt-comment-system

Author Reputation
Search engine indexing
Automatic SPAM and profanity filters
Automatically inherits your web design
Inserting polls into posts
Integration with popular social networks
Free version available and has most features with Ads

InstaComments: http://www.instacomment.com/

Fully hosted, no download needed
Inserting polls into posts
Data migration from existing system
Comment Ranking
Author reputation
Different versions are available at different price ranges with varying features
Integrates well on Blogger, WordPress, Tumblr, WordPress, Weebly and more
Full moderation over posts

Intense Debate: http://www.intensedebate.com/

Owned by Automattic (Strong WordPress support)
Comment Threading – Reply directly to specific comments with nested replies
Email Notifications – Respond to moderate comments via email
Subscribe via RSS
Guest Commenting – No Account or Sign up necessary
Integrates with Facebook Connect, Twitter, Gravatar, etc.
Trackbacks and Linkbacks are synced
Widgets for comment stats, most popular posts, etc.

Livefyre: http://www.livefyre.com/

Social User Tagging:  Tag Facebook and Twitter friends from inside the comment box
Allow users to Sign In using their Social Networking credentials which includes Facebook, Twitter, Google, LinkedIn and also OpenID
Users can share their comments in their favorite social networking sites
Real-time interaction with comment bubbles, new listener count.
Search engine crawlable
Follow conversations through email
Allows comment ratings
Linkback – Lets the other Livefyre bloggers leave link to their latest post
Integration with Blogger, Drupal, etc. is on their development plan

Facebook Comments: http://developers.facebook.com/docs/reference/plugins/comments/

Part of Social Plugins
Must be associated with a Facebook Application
Look and feel cannot be customized
Optionally post on your Facebook News Feed
No integration to other social networks
Used by Techcrunch

Recession, Transparency and Social Computing

As banks and other major institutions are getting bailed out by the government, one thing that stands out is the need for transparency/accountability. Obama administration is trying to do its part by initiatives such as recovery.gov to provide greater transparency in government.   When it comes to businesses, the major challenge of policy makers (and leaders) is to conceive a framework that can balance transparency against exposing legitimate business strategies.  As more and more business reshape their organizational structure into networked hierarchies from their traditional hierarchies, people at various levels of the organization will have greater opportunity to contribute towards business goals.  If businesses don’t independently transform themselves into this new organizational structure they will be forced to do so through layoffs.  For example, I was talking to a friend of mine who works as a developer in an investment bank and according to him if you’re not hands-on then you’re out.  I know that this is not the case couple of years back, it used to be highly hierarchical organizational structure there. 

The new organizational structure provides for a way to drive innovation by tapping into the collective intelligence of the organization.   At every level of the organization there is business intelligence that can help shape business strategy or reduce costs.   If applications in enterprise are built with an intent to tap into these social capabilities it will drive innovation.  It is up to the policy makers, regulators and business leaders to choose and drive these initiatives.

Personal Screening Framework

In any conversation, active listening is one of the most important communication skill to have. If we are not listening then we are digesting information passively without getting the real message.  It also helps us to develop real empathy for people.   In order to listen actively its necessary to develop the tools and skills that will help us. In this post I will outline a framework that will help in understanding people’s strength quickly in a technology environment.

Each quadrant in the above picture shows a skill necessary in a technology business environment.   During a conversation it is useful to use this framework for listening and understanding what the other person’s true strengths/interests.  Also, this will help you build purposeful conversation in areas of mutual interest and importance. This framework can be easily extended or morphed to different settings.   For example one might not want to use this framework in a dating setting :)

A question to ask ourselves would be, What other settings do I encounter?  What tools can I develop for them?

Tech Tip #1: Signing up Users

I’m planning to write a series of posts under “Tech Tip”. The purpose of these posts are to share ideas/tips around how companies can leverage technology approaches in their solutions to gain competitive advantage. I also intend to provide technology implementation details as applicable.

One of the major goals for a startup is to motivate users to sign up for their service and eventually to sustain the user base. There are a bunch of startups coming up everyday and from an user its quite overwhelming for them to remember credentials for all of them. As Joshua Porter puts it in his Usage Lifecycle, the challenge here is to Sign-up an unaware/interested user. Even early adopters who might be interested in trying your service may not be motivated. But we can solve this problem by leveraging authentication technology possibilities.

It is very likely that your interested user will have one of Hotmail/Yahoo/Facebook/Google/OpenID account.

By providing your users to authenticate using these services will definitely increase the probability of an enthusiastic user to sign up. These services have libraries and documentation in their respective developer web site.

Clickpass

Clickpass is a startup providing single sign-on service that requires no effort from the end-user but provides the convenience for your site to authenticate using Google, Facebook, Hotmail and Yahoo accounts. They provide extensive developer documentation and can be found here. TechCrunch also has coverage about this service. However there are also views like these that you need to be aware of before making your decision.

OAuth

OAuth is an open initiative for an open protocol to allow secure third-party website authentication . Its starting to gain traction and worth keeping an eye on their blog.

Resources

Live ID Web Authentication System
Yahoo BBauth
Google Account Authentication API

Evaluating AJAX Framework

Today building a new web application involves the essential step of evaluating AJAX frameworks and select an appropriate one. In this post I will detail the various criteria that should be considered while making a decision.

Adoption Criteria

This criteria is important for IT managers (or EA strategy) to decide if it would even be necessary for the development team to take a look and evaluate.

  • Licensing Model: Under what license(s) is this product offered? How would that affect your organization?
  • Cost: How much does the framework cost (upfront)? Also consider cost of development tools, support, consulting? How many free updates are there? If the framework is free, is there a PRO version? If so what are the benefits and cost?
  • Frequency of Releases: What is the frequency of releases/updates? Is it adequate? This shows how active the framework is among the community?
  • Technology Maturity: How long has the framework been around? How stable are the releases? What is the philosophy on backward computability? What is the product road map?
  • Talent Pool: Is there talent pool available for this framework? What is the expected learning curve? Input from the developmental team is certainly helpful here.

Development Criteria

This criteria is will help the developers assess the framework viability.

  • UI Components: Does the toolkit offer rich set of mature components? What is the future road map for new components? Are the components customizable?
  • Programming Model: What kind of programming paradigm is supported? Is it strongly typed or dynamic? Is the model familiar to developers? If not what is the learning curve?
  • Web Framework Integration: Are there web frameworks that provide some out-of-the-box support? Are there any conflicts (or challenges) in using this toolkit with web framework?
  • Documentation Quality: Is there adequate good documentation available? Are there books available? If so what are the reviews?
  • Browser Support: What browsers and versions are supported by the toolkit? What is the road map? Are the supported browsers sufficient for the requirements? What does the community say about this?
  • IDE Support: Is there IDE support? How much do they cost? How do they fit in with currently used IDE?
  • i18n: Is there support for multiple languages?
  • Utilities: Frameworks provide utilities like Browser Manager(Back/Forward Button Support), Drag-n-Drop, Java-to-JavaScript Serialization (for example, DWR). Depending on specifics of the requirements this criteria should be considered.

Maintenance Criteria

This criteria helps to evaluate and foresee any maintenance challenges that may be encountered.

  • Community Support: What is the size of the community using the product? How active and responsive are the online forums? Is the blog updated frequently?
  • Hosting: Is there hosting support for the framework JS files? For example, Yahoo UI provides hosting support
  • Profiling: Is there built-in profiling support? If no are there any external tools that can help? Are there browser related constraints in them?
  • Beta Components: The frameworks tend to offer lot of Beta components. For these components its worthy to look at their known issues and assess the risk.

Conclusion

Analyzing and evaluating the frameworks using the above mentioned criteria will help make an informed decision and thereby will help avoid potential future issues. During the evaluation if a framework is missing a particular feature or component and is available in another toolkit you should look to ensure that there would be no integration issues and will peacefully co-exist. Please feel free to suggest perspective for improving the evaluation process.

Jaxer – An innovative paradigm

Jaxer is an open-source web application development framework providing an consistent Javascript based programming model between the cloud (server) and client. In this post I will provide an architectural overview of this technology and provide a conceptual mobile strategy that this framework can be used for.

Architectural Overview

The core of Jaxer is written in C/C++ and is powered by the same Mozilla engine that powers Firefox 3. There is a wrapper Javascript framework which can be easily extended by developers if needed.

Jaxer provides a plugin as post-processor to the web server and receives an static HTML as input. The core framework is responsible for parsing the input, executing scripts (server-side) and generating proxies.

The framework allows the developer to mark Javascript functions to be executed in the server using – runat=”server” attribute in the script tag. There is also runat=”server-proxy” where when the client calls are redirected to be executed in the server, the framework is responsible for injecting the methods.

From the server-side code there is also access to the Jaxer library and hence access to session, file system, database, network sockets, etc.

Thanks to Aptana for the image.

Mobile in Minutes

Here I would like to outline an use-case which will enable web properties to quickly create a mobile flavored output using Jaxer. This is intended to be a proof-of-concept and an example for the possibilities enabled by this framework. Lets say you have an existing simple web application and want to enable mobile flavored version modifying the existing application. This solution levereges the server-side processing of Jaxer to identify elements of interest from the HTML and renders a modified output.

Here the idea is to annotate on the HTML elements of the original output. It could be id=”mobile-????”. This step is just to identify elements of interest and construct a modified html. Here is a brief code snippet which should provide some direction and simply by injecting this script and marking ids mobile should do the job. This is no way intended to be a full-fledged implementation but to give a direction and server as a proof-of-concept:

var k = document.getElementById(“b”);
var m = document.createElement(“body”);
var e = document.getElementsByTagName(“a”);
m.innerHTML = ‘Mobile rendering: ‘;
for ( var i = 0 ; i < style=”font-style: italic;”>
{

var l = e[i];
if (l.id == ‘mobile’) {
m.innerHTML = m.innerHTML + ‘ ‘ + l + ‘ +”;
}
}

k.innerHTML = m.innerHTML;

Infrastructural Support
Jaxer can “peacefully” co-exists with your open source technology stack. Jaxer can work with your existing Apache installation and have IIS support in their roadmap. Presently MySQL database is supported but definitely this is an area for improvement. There is also support Tomcat based deployment model and out-of-box support for running in EC2.

Conclusion

Emerging programming models such as Jaxer provide possibilities for more innovative web application extensions. This form of web extensions is extremely useful in enterprise and consumer environments to try-out in a plugin in on-demand.

Technorati Tags: ,

Gearing up for Privacy

The issue of Privacy is one of the major concerns in the web today. The most common of such concerns centered around the user data having to live in the cloud with the potential for it to be exposed, stolen or misused by external elements (including the service provider). In this post I share my thoughts on how some of the emerging technologies can help address some of the concerns.

Emerging technologies such as Google Gears, Microsoft Sync Framework and Microsoft Volta provide programming paradigms around online/offline synchronization and an execution context. As you may already know Google Gears opens the possibility of the synchronizing content with browser plugin to provide seamless offline experience of online content. For example services like Google Reader and Zoho Writer leverage this today in their offerings. Microsoft Sync Framework opens the possibility of data synchronization across any device and data format. While Microsoft Volta promises to decoratively allow developers to execute content both online and offline.

As stated earlier the concern of the user data having to live in the cloud can be eliminated by architecting applications to load data locally. The web essentially becoming a platform for software delivery while data may be securely stored locally. The user has the choice of storing data in a medium of his choice, for example in USB drive or local hard-drive or just online. Technology support for encryption capabilities to securely store content should be just a matter of time.

Also the service providers wanting to provide data-sensitive contextual user services/experience may leverage paradigms provided by Volta. This will ensure that any user concerns around Privacy are addressed as well.

As the concept of web as a platform continues to grow so will the user’s concern of Privacy and data security. Emergence of technologies and their application in creative ways may help address such inevitable concerns.

UPDATE:

Related:
Google Gears Enabled Sites

Auto-translate Resource Bundles using Google Translate

Internationalization is one of the common requirements in web applications. One of the challenges faced by a team is the non-availability of translated resource bundles during development (mostly due to logistical reasons). But it is important to test various scenarios during the application development.

In this post I will present a simple idea which utilizes Google Translate to auto-generate translated Java Resource Bundles for the language of choice. Just send a HTTP GET request with the text to be translated to Google Translate URL and read the translated text by parsing the response. In order to translate an entire resource bundle just pass a source bundle (For example, English) and read each property and write to target language resource bundle file.

Here is the URL for translating “welcome” from English to Spanish http://www.google.com/translate_t?langpair=en|es&text=welcome

Here is a snippet of Java code which utilizes Apache Commons HttpClient library :

String url = “http://www.google.com/translate_t? langpair=en|es&text=”;
String text = “welcome”;

HttpClient client = new HttpClient();
GetMethod getMethod = new GetMethod(url + text);

client.executeMethod(getMethod);
String xml = getMethod.getResponseBodyAsString();
xml = xml.substring(xml.lastIndexOf(“<div id=result_box dir=ltr>”));
String translated_text = xml.substring(27, xml.indexOf(“</div>”));
System.out.println(translated_text);

Technorati tags: , , ,

Data Services in Spring

In today’s web applications the need for returning model data from controllers in XML/JSON format is quite common. Mostly these requirements are met by writing custom code in controllers. In this post I will present technical approach that would enable your applications to return data model in XML/JSON or data format of your choice to the web tier using Spring MVC without modifying your applications.

Basically the idea is to return XML(or JSON, etc) whenever we encounter a request to the controller with parameter returnData=XML. This can be accomplished by writing a HandlerInterceptorAdapter with postHandle method to do the following:

void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)
{

if ( request.getParamter(“returnData”) != null && request.getParamter(“returnData”)=”XML” )
{

// add a XML Serializer to the model
// Find the model object names and add the list to model attribute “xmlModules”
// Set the view name to “xmlView”

}

}

In your xmlView (JSP or Velocity Template) for each attribute in xmlModules use the XML Serializer to generate XML and render it. There are few applications for this approach:

1. Enable front-end to readily use AJAX for existing controllers
2. Use this as a strategy to get a debug view of model data during development
3. Based on some additional key use this to get debug view from production for troubleshooting purpose

Resources:

1. XStream for XML Serialization

Tags: java spring ajax

Google Gears: Gears to switch

Yesterday Google unvieled the newest development paradigm for developing offline web applications. David Berlind says Google Gears vies to be defacto tech for offline webapps and could very well be!

I’m very excited and impressed by reading through the developer documentation and demonstrations. The architecture employs a switch based on a installed browser plugin and decide whether to retrieve the data from server or from a local database installed on the client.

I played around with the demo’s a bit and it seems that the browser database seems to be specific to the browser. For instance if you browse a particular site using Firefox and create local copy and then open IE for offline browsing it wont be available offline. I’m curious to research more and see if developers can actually take advantage of the API and bring offline sync support to multiple browsers. Overall I am impressed and excited about the technology.

Also there is a offline version of Google Reader released recently.

UPDATE: Google Developer Day — Google Gears Intro Video

Tags: technology, google, gears

Follow

Get every new post delivered to your Inbox.