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

Personal Syndication Platform using Google Spreadsheets

I recently stumbled upon Google Spreadsheet’s worksheet syndication publishing feature. Basically you can publish your spreadsheet as a RSS/ATOM public feed. Also using Spreadsheet GData Client API it is possible to add new entries to your spreadhseet. Leveraging these abilities the possibility of using Google Spreadsheet as a Personal RSS platform seems very straight forward.

Basically one can create a worksheet and set the publishing option to output RSS (or ATOM or any format of your choice) and select an appropriate publishing frequency. Once this is done whatever you add to your worksheet is available for anyone who subscribes. Also there is an option to customize and publish a select range of cells and not an entire sheet.

Now it is possible for Clickables (Google Gadget that I developed few months back) to use spreadsheets and provide persistence bookmarking of shared links. Also, integration with Yahoo Pipes! can bring about a lot of data mashup feeds.

Follow

Get every new post delivered to your Inbox.