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

Saturday, September 08, 2007

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

Monday, August 27, 2007

mylivesearch.com -- trawl the web

I received the much awaited mylivesearch.com beta release invite few minutes before.

Here is a screen shot

The real-time search is obviously slower than the Google search and also not ranked. Filtering by website feature is pretty helpful.

UPDATE: I just observed everytime you search for something mylivesearch hits the website explicitly. I confirmed this using my web analytics (StatCounter -- used for this blog) to test.

Sunday, August 19, 2007

Google Reader Helper for Firefox

Google Reader is one of the most popular web services and I personally use it everyday. One of the features that I miss using a RSS reader is the ability to view comments. In this post I would share a simple hack to help with this issue and to more importantly serve as a proof-of-concept for possibilities around web application extensions. It is written on a framework called Chickenfoot for Firefox that I recently stumbled upon.

What is Chickenfoot?

Chickenfoot for Firefox is itself a Firefox extension that puts programming environment in the browser's sidebar that allows you to write scripts to manipulate the web pages. Chickenfoot is a superset of JavaScript and puts the user in control of writing quick extensions to web pages. There is a detailed quick start tutorial of Chickenfoot here and the extension can be installed from here.

Google Reader Hack

While reading a post in Google Reader there will be only one expanded view of the post which lives under the <div> with id='current-entry'. This hack leverages this to identify the post that user is currently reading and loads that page in another tab automatically. If you're interested in quickly checking/leaving a comment for the post, then you can switch to the other tab and do so immediately without having to click and wait for it to load.

Once you have installed Chickenfoot, download the script here and open Google Reader on Firefox and start the script. If you're familiar with JavaScript then it should be self-explanatory.

Conclusion

Chickenfoot programming paradigm could be used to enhance web experience for user's convenience. Also the intersection of Chickenfoot with concepts like Programming Collective Intelligence will fuel greater innovation by allowing user to be more in control of the experience.

Resources

Chickenfoot For Firefox

Chickenfoot Blog

Google Reader Helper Script

Technorati tags: , ,

Sunday, August 12, 2007

Caching: Memcached and Terracotta

Applications are generally built with an expected user base but soon might be overwhelmed due to business demand. This is especially particularly true in the context of consumer facing applications. Caching is one of the most important aspect to improve application performance by storing object in Cache (memory) reducing database load.

Caching in a clustered environment requires a Distributed Caching solution which can support failover scenarios and data reliability. In this post I would like to explore the capabilities of Memcached and Terracotta as distributed caching solutions.

Memcached is a high-performance distributed object caching system with client APIs for Perl, PHP, Python, Ruby and Java. Here are some of its capabilities and limitations (using Java client API):

  • Requires objects to be Serializable
  • Object Identity is NOT preserved
  • Supports cache expiration
  • Does NOT handle failover scenarios
  • For a given object selects a server from a pool of cache server based on hash of the key
  • Easy to configure (through SockIOPool class)

Terracotta is an open-source Java based clustering solution for JVM. Distributed Caching can be achieved using Terracotta by using a java.util.HashMap or open-source caching solutions like EHCache, OSCache and JBoss TreeCache.

  • Preserves Object identity
  • Manages memory efficiently through Virtual Heap
  • Declarative requirement for lock support
  • Simple configuration file with Eclipse Tool support
  • Good documentation, support and active development
  • Due to the nature of its implementation certain classes are not Portable and hence cannot be used
  • Hard to determine which third-party classes are portable
  • Does NOT require classes to be serializable
  • Easy to configure and get started!
Technorati tags: ,

Thursday, August 09, 2007

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

Wednesday, August 08, 2007

Kudos for AOL local

I stumbled upon a feature on AOL Local Search which I felt is really innovative. Lets say you search for "pizza" near a particular address and then you drag the map, it automatically searches and plots businesses relevant to the search in the current focus of the map.

Saturday, June 30, 2007

iPhone innovations

Now that iPhone is finally released and is now time to watch for new iPhone apps.

Morfik , Backbase and Aptana have released AJAX based development tool (platform) for building iPhone applications. There is also an impressive list of iPhone applications here

Tags: technology apple iphone

Friday, June 22, 2007

Click-n-Save Web Page as PDF

I stumbled upon a service called Save as PDF from PDF Online. Here is a browser button hack which allows you to convert the current web page. Just drag-n-drop this link into your web browser:

Monday, June 11, 2007

Safari - Windows ready!

Apple today released Safari for Windows!   The beta version of the  fastest browser is now available for download.

My favorite feature is the privacy friendly single-click Private Browsing.   I checked out the developer resources to find resources for plugin development in Windows environment but unable to find as yet :(

Friday, June 01, 2007

Instant Translation

I stumbled upon Google Translation Browser Buttons:

http://www.google.com/translate_buttons?hl=en

Just drag your frequently used translation requirement buttons into your browser bookmarks bar!

Thursday, May 31, 2007

Mashup Mela!

PopFly - Microsoft's mashup maker was released few weeks back. I received the beta invite and was good playing around with it. PopFly is built on SliverLight and the interface is quite intutive with cool drag-n-drop features for creating mashups.

Today Google released its Mashup Editor as limited beta. I'm on the line for invite :)

Ofcourse Yahoo Pipe pioneered this Mela originally!

Tags: technology microsoft google popfly pipes

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

Monday, April 30, 2007

Light up with Silverlight

SilverLight is the new name for what was called WPF/E, Microsoft's cross-browser, cross-platform rendering runtime for delivering rich interactive media experiences. At Mix 07 the manifestation of Software + Service strategy came to light through the announcement of SliverLight Streaming service. The service is essentially a companion for SilverLight and provides developers with storage and hosting infrastructure.

The SliverLight Live Dev page points to several resources and REST based API for accessing the service itself. There are also references of tools to perform media transcoding. That said SilverLight and the companion service has opened up several possibilities by allowing an efficient time to market and a worry free infrastructure. A transcoding service with an API will be a great add-on and will eliminate the need for users (devs) to maintain inftrastructure for transcoding.

tags: , ,

Saturday, March 24, 2007

Scribd - the documents

Scribd - the documents avatar of YouTube is a YCombinator startup. I'm impressed by the navigational site design and of course the document renderer. This startup reminds me of one of the open source project called e-sharepoint which was built with the same vision but never saw completion. I had contributed for e-sharepoint as a developer almost two years back.

I built a Google Co-op Search for searching e-books on Scribd and here is the link for it:

http://google.com/coop/cse?cx=007158556442307674881%3Acirvbqaziqu

Some of the features that I would love to see in Scribd includes:
  • Quote on a selected text and link to it from comments (dynamic highlighting)
  • Facilitate more user discussions by improving comments feature
  • Allow users to recommend similar/related documents
  • Allow Pin-n-Publish of reading list in RSS

Technorati Tags: technology, startup, scribd, google

Saturday, March 17, 2007

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.

Sunday, March 04, 2007

Modular software using AOP

The adoption of Aspect Oriented Programming paradigm in enterprise software is rapid. It is interesting to look at various applications of AOP in enterprise architecture:
  • Apply design patterns as modules
  • Application security architecture
  • Transaction, Logging, Stats, etc.
  • Enforce architectural design standard for application development by leveraging AOP tool support
  • JVM Clustering

AOP allows modularization of application and provides manageability and loose coupling from a software architecture perspective. From a product perspective, it allows to easily plug in features by allowing various implementation of aspects to be plugged-in quite easily.

Resources:

AOP Software Design Using UML
AspectJ Tools
Spring AOP
JBoss AOP
Clustering JVM using Terrocotta and AOP

Technorati tags: , , , ,

Saturday, February 24, 2007

OpenID Adoption

As we know OpenID is an open, decentralized, free framework for user-centric identity. The goal is to have the user remember one user name and password and login to any site which supports the protocol. It is light-weight and supports SSO.

In the past few days there has been a lot of traction to OpenID adoption with the announcement for its support from the giants AOL, Microsoft and Digg. So if you have an AOL account then your open id is http://openid.aol.com/username and you can login to any website that supports OpenID. With the growing number of startups the adoption rate for OpenID is poised to grow rapidly.

User Resources

To start using OpenID you will need to obtain one. If you already have an AOL account you could use that if you like. Or you can obtain one from http://www.myopenid.com/. For a quick overview of OpenID here is a video.

Developer Resources

From a developer perspective for you to support OpenID either as client or server there are several resources available as noted below:

OpenID Enabled - OpenID community
OpenID Client/Server Libraries - C#, Java, Perl, C++, PHP, Ruby, ColdFusion
BotBouncer - A CAPTCHA service for OpenID

I was looking at OpenID4Java API - Consumer side and is pretty straight forward.

OpenID and CardSpace

Here is a post explaining how these two complementary technologies can work together. Its interesting.

tags: , , ,

Friday, February 23, 2007

Google server down


Google Server is currently down! I have never encountered this one before so wanted to blog!

Saturday, February 10, 2007

Yahoo! Pipes -Dynamic Translation for Feeds!


This week's major release and screaming is all about Yahoo! Pipes. Of course I'm excited about it too. Yahoo! Pipes is an interactive feed aggregator/manipulator.

I just built my first Pipe - a translation pipe for German version of Reddit using the Babel Fish module. One could clone this and use this for any feed translation from any language. Click here to access the Pipe!

I expected this kind of service for a while and there could be a new/similar service to create Widgets/Gadgets in a similar fashion. Apple Dashboard, Google Gadget IDE, Visual Studio Gadget API provide this on a proprietary platform but more generic ones will emerge.

Friday, February 02, 2007

Dig-the-digg: Friend Finder!

Digg is one of the busiest social bookmarking site where people are sharing their interests by registering their vote on the links. To me this seems to be an interesting way to meet new people. Few days back I was inspired by the idea of how the intersection of similar diggs of a person with another person could be a way to meet new friends. Let say I digg on a set of links and if there is another user who diggs on the same links that I digg on then he/she could be my potential friend, its not really necessary the other users diggs on all the links that I digg but a reasonable digg rate could be considered.

I wrote a little crawler to crawl on my diggs and found some interesting results. One could try this manually too and here is how:

1. Goto one of your Diggs and click on "Who Dugg or Blogged this?"
2. Click on each user to see their Diggs and find a user whose diggs you like
3. Subscribe to his/her Digg Feed (RSS)
4. Now, even if you're not an actively digging you will not miss out on interesting links

Saturday, January 20, 2007

Video Hyperlinking

Today, I stumbled upon Video Hyperlink demo from Microsoft adLabs. I find this to be a very important step in online video though this innovation seems to be natural progression.


I feel the emergence of technology with the ability to instrument code (possibly through plugins) to customize players during playback will be seen. In other words, player runtime will have a programmable context within player component to execute some code during playback. I think Adobe Flex framework provides this today and Scott Guthrie of Microsoft gave some hint of video based techonology being part of XAML might be shown during Mix 07. Also, quite naturally the need for metadata at a frame level either with inherent support in video format or through external DAM systems. For example, Canto Video Suite allows video metadata annotation at a frame level.

IBM alphaWorks has a tool which allows MPEG-7 video sequences to be annotated.
Lets wait and watch the digital excitement!

Friday, January 05, 2007

Go Green - the tech way!

Importance of going Green and reducing fuel consumption has never been more important considering geo-political reasons and the sheer limitation of oil resources. These are some tips on how technology can be used:

  • Shop Online - Avoid a car ride to bookstore. You get slick deals too!
  • Pay your bills online
  • Sign up for electronic statements instead of paper statements for credit card, bank, etc.
  • Look for a book online in Google Books, Text Archive, etc.
  • Get your TimeSelect or ePaper online subscription avoid buying real newspaper
  • Avoid face-to-face meetings by using online conference tools like WebEx, Microsoft Live Communicator
  • Use mapping tools to find most efficient route : MapQuest, Google Maps , Live Local
  • Use Power off / Hibernate features of your OS. There are some many "choices" for this..

I believe technology is bringing significant impact in reducing fuel consumption. I believe with the spread of social awareness for conserving energy, we will see new and innovative patterns in generation/delivery/consumption of energy

Update: YahooMaps with Live Traffic and Yahoo! Autos - Green Center!

Disqus for techtalk