Saturday, July 05, 2008

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

Sunday, June 22, 2008

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.

Sunday, May 04, 2008

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

Friday, April 25, 2008

AB Meta: Whats is this thing? but what is that?

AdaptiveBlue announced AB Meta specification in an effort for web pages to expose data about "things" in a standardized way. In this post I will briefly outline in simple terms what this means and propose some conceptual extensions that could provide possibilities for more use-cases.

The purpose of AB Meta specification is to enable web pages (that talk about "thing") to expose their attributes in a standardized way so that programs can understand. For example consider this page from amazon.com: Click Here. It is the landing page for the book titled "Programming Collective Intelligence". Taking a closer look at the source of the page today the following META tags can be found:

<meta name="description" content="Amazon.com: Programming Collective Intelligence:
Building Smart Web 2.0 Applications: Toby Segaran : Books"
/>
<meta name="keywords" content="Toby Segaran ,Programming Collective Intelligence:
Building Smart Web 2.0 Applications,O'Reilly Media, Inc.,
0596529325,Computer Programming,Machine Learning,Computers,Computers -
General Information,Computers - Languages / Programming,Computer Books:
Languages,Artificial Intelligence - General,Programming - General,Computers / Artificial Intelligence,
Computers / Languages / Programming,Computers / Programming / General,Computers/Artificial Intelligence -
General,Data processing,Economic aspects,Information technology,Knowledge management,
Social aspects,Programming - Algorithms,Programming Languages - Python,Internet programming,Web site development"
/>
As you can see the META tag provides metadata about the book in a unstructured way, so for instance bn.com might provide in a different format (or not at all). This is the problem that AB Meta is solves.

AB Meta proposes to leverage META tag and use a standardized format to describe a "thing". A "thing" could be a book, music, cycle, car, movie, etc. This post from their blog provides a good introduction with examples. In a AB Meta enabled amazon.com the meta tags could look like this:

meta name="'object.type'" content="'book'"
meta name="'book.name'" content="Programming Collective Intelligence"
meta name="'book.author'" content="Toby Segaran"
meta name="'book.isbn'" content="0596529325"

etc..

Extensions

Here are few extensions (new attributes) which I believe would worth considering:

OBJECT_TYPE.unique_attr:

The purpose of this attribute is to specify which of the listed attributes universally identify this object uniquely. For books it could be book.isbn and so

book.unique_attr='book.isbn'

Given the growing trend for open data I believe this extension will open up lot of new possibilities.

OBJECT_TYPE.context_attr:

Pages could use this attribute to optionally specify under which context they are talking about the object. For example a user search based on author_name could return a list of books in this case the context is author.

book.context_attr='book.author'

OBJECT_TYPE.ATTRIBUTE_uri:

This is an optional tag that pages can use to publish an URI that talks more about the value of a given attribute. For example for the author of a book it could refer to his wiki page, home page, etc. :

book.author_uri='http://kiwitobes.com/'

Though this might not be very frequently used it is useful tool to present contextual data.

So this answers, what is that?

Conclusion

There is no doubt that the initiative will definitely provide a standardized way for the publishers to expose meaningful contextual data. However the ultimate success of the initiative lies in the adoption by the community. Here the community primarily being online product vendors and services.
I certainly as always welcome any thoughts/comments on the attributes on their implementation.

Sunday, December 16, 2007

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

Disqus for techtalk