<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2200063935719624739</id><updated>2011-04-22T05:21:11.500+05:30</updated><category term='google app engine'/><category term='Google Ajax Feed API'/><category term='javascript'/><category term='tool'/><category term='tutorial'/><category term='firebug'/><category term='adrenaline rush'/><category term='Web 2.0'/><category term='Ajax'/><category term='Google'/><category term='amazon webservices'/><category term='ajaxkarma'/><category term='PHP'/><category term='firefox'/><category term='Drupal'/><category term='gspace'/><category term='addons'/><category term='dojo'/><category term='twitter'/><category term='Social media'/><category term='CMS'/><category term='dijit'/><category term='video'/><category term='Frienfeed'/><category term='Google Gears'/><category term='RSS/Atom'/><category term='Yahoo'/><category term='gmail'/><title type='text'>Web 2.0 To My Liking</title><subtitle type='html'>Web 2.0 Through My eyes !!</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://ajaxkarma.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2200063935719624739/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://ajaxkarma.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Dipen Chaudhary</name><uri>http://www.blogger.com/profile/01702383506060460029</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>18</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2200063935719624739.post-7896487818822040028</id><published>2008-07-11T12:26:00.005+05:30</published><updated>2008-07-11T13:09:49.543+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='addons'/><category scheme='http://www.blogger.com/atom/ns#' term='gmail'/><category scheme='http://www.blogger.com/atom/ns#' term='gspace'/><title type='text'>Gspace firefox extension - Gmail as your storage device</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://addons.mozilla.org/img/app-icons/firefox.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px;" src="https://addons.mozilla.org/img/app-icons/firefox.png" alt="" border="0" /&gt;&lt;/a&gt;After series of wild click stream,I found myself on firefox addons page and like every time I was wondering/gaping at the versatility of the firefox platform. The plugins architecture, means to build those et al.Anyways I found &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/1593"&gt;Gspace&lt;/a&gt; which helps you convert your gmail account into a online file system,now I knew of such utilities on windows but I seldom use windows and hence moved on.Being able to do so from a browser truly is Web 2.0 and pwnage of Desktop as platform.You'll need to install the add on like any other add on and restart your firefox upon which you see the status pop up window icon in the status bar. You can register your gmail accounts with Gspace from manage accounts and create directories (This does not actually create a directory on gmail server, rather its a internal way to simulate filesystem using subject field of the emails). After dealing with account registration you move on to Tools-&gt;Gspace which should open a new Window (can also be reached by typing chrome://gspace/content/gspaceWindow.xul on ff2) here you can upload files to the simulated directories which after complete transfer appear in your gmail account as a mail from yourself, Its best to filter these mails and apply a label to it.&lt;br /&gt; Other cool features include ability to stream music from your gmail account right into browser using the google flash player, also you can view photos. This you choose in File Transfer Mode in tools-&gt;Gspace.&lt;br /&gt;&lt;br /&gt;Tips And Tricks:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Do not upload more than 500 files a day, may result in temporary ban from google, which can be upto 24 hrs&lt;/li&gt;&lt;li&gt;Its best to create a new gmail account to keep all your files at one place, also in case you DO suffer a ban, it doesn't block your daily mails and primary gmail id&lt;/li&gt;&lt;li&gt;I have already mentioned filtering Gspace Mails eh ?&lt;/li&gt;&lt;li&gt;Do not even try to store files weighing more than 20 megs, you are wasting your bandwidth, google bounce mails with attachment over 20 mbs&lt;/li&gt;&lt;li&gt;Share account with trusted friends to save network resources (like in case of music)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Disclaimer : Its not supported/endoresed by google but a individual innovative hack and hence do mind the 24 hrs block and check your daily transfer to google.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2200063935719624739-7896487818822040028?l=ajaxkarma.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajaxkarma.blogspot.com/feeds/7896487818822040028/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2200063935719624739&amp;postID=7896487818822040028' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2200063935719624739/posts/default/7896487818822040028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2200063935719624739/posts/default/7896487818822040028'/><link rel='alternate' type='text/html' href='http://ajaxkarma.blogspot.com/2008/07/gspace-firefox-extension-gmail-as-your.html' title='Gspace firefox extension - Gmail as your storage device'/><author><name>Dipen Chaudhary</name><uri>http://www.blogger.com/profile/01702383506060460029</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2200063935719624739.post-407390702027032371</id><published>2008-07-10T13:10:00.001+05:30</published><updated>2008-07-11T15:31:40.181+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='amazon webservices'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='google app engine'/><title type='text'>Google Appengine</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://code.google.com/appengine/images/appengine_lowres.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px;" src="http://code.google.com/appengine/images/appengine_lowres.jpg" alt="" border="0" /&gt;&lt;/a&gt;Google launched a application engine for web application developers to take advantage of the "Google" Infrastructure. This would mean that application programmers can now write engaging applications without worrying about hosting, responsiveness and all other maintenance related issues, Ah but there is a catch!! you qualify as a developer if you can read and write python, which is a interesting and fun to learn language but it also means that you are supposed to throw all that PHP, Perl, Java experience in trash and come unto Lord's feet. Appengine comes preloaded with django 0.96 which is a powerful python web framework quite popular for its clean implementation of MVC, but you can also upload and use a different framework best suited for your application. Appengine comes with a admin panel for each application where it shows many statistics about data transfer, url's visited, popular url's etc. Google Appengine is an attempt to answer Amazon's EC2 and S3 if at all its an attempt to answer anything. Amazon webservices on the contrary are not free but support any framework/language, where S3 is more like a data grid independent of EC2.&lt;br /&gt;Some Facts and Figures About Google Appengine:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;3 Apps per developer&lt;/li&gt;&lt;li&gt;limit of 1000 files each being maximum of 1 mb although limit on overall application storage is 500 megs :P&lt;/li&gt;&lt;li&gt;In and out Data transfer of 10,000 megs each per day&lt;br /&gt;&lt;/li&gt;&lt;li&gt;2000 e mails per day&lt;/li&gt;&lt;li&gt;650,000 Http Requests per day&lt;br /&gt;&lt;/li&gt;&lt;li&gt;CPU limit of 200,000,000 Mega Cycles per day&lt;br /&gt;&lt;/li&gt;&lt;li&gt;GQL (read SQL for Google data store) is used which do not use joins, hence is the structure of Big Table (Google Technology to store data in database) but you can do all you would want to do with joins and also get the performance which SQL joins suck out of your applications.&lt;/li&gt;&lt;li&gt;User System is based only on Google Accounts, which means if someone needs to access a user specific feature, then he/she needs to authenticate with his/her google account.&lt;/li&gt;&lt;li&gt;Type of Content hosted/served is bounded by &lt;a href="http://code.google.com/appengine/terms.html"&gt;Terms of Service&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Not all python libraries are supported, A full list can be found out &lt;a href="http://code.google.com/appengine/kb/libraries.html"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt; So all get started &lt;img class="emoticon" src="http://wolverinex02.googlepages.com/icon_mrgreen.gif" alt="mrgreen" title="mrgreen" height="15" width="15" /&gt; . Well not all, but those of you who can talk python &lt;img class="emoticon" src="http://wolverinex02.googlepages.com/icon_razz.gif" alt="razz" title="razz" height="15" width="15" /&gt;. There has been demand in past that google provide hosting on its reliable and bleeding edge infrastructure, but this was not what we expected &lt;img class="emoticon" src="http://wolverinex02.googlepages.com/icon_neutral.gif" alt="neutral" title="neutral" height="15" width="15" /&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2200063935719624739-407390702027032371?l=ajaxkarma.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajaxkarma.blogspot.com/feeds/407390702027032371/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2200063935719624739&amp;postID=407390702027032371' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2200063935719624739/posts/default/407390702027032371'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2200063935719624739/posts/default/407390702027032371'/><link rel='alternate' type='text/html' href='http://ajaxkarma.blogspot.com/2008/07/google-appengine.html' title='Google Appengine'/><author><name>Dipen Chaudhary</name><uri>http://www.blogger.com/profile/01702383506060460029</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2200063935719624739.post-8156222278790994354</id><published>2008-02-13T20:46:00.003+05:30</published><updated>2008-02-13T21:17:21.286+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='Drupal'/><category scheme='http://www.blogger.com/atom/ns#' term='CMS'/><category scheme='http://www.blogger.com/atom/ns#' term='adrenaline rush'/><title type='text'>Drupal 6.0 is a beast</title><content type='html'>Drupal 6.0 was released an hour ago today and Damn !! its a beast ... Drupal 6.0 improves on theming part, allowing you to start with a HTML template of ur choice.There is a new theme developer module to assist you in theming, I have no doubt 7 will bring MVC completely and we can finally get rid of PHP and my colleague (Designer) would stop yelling for me :). Drupal 6 is super funkier with Drag and Drop menu's,book pages and lotsa jQuery.Performance and optimization is noteworthy and interesting to watch for, I am particularly looking forward to Batch API.Action triggers,one click install,security,performance,AJAX are some buzz words which will describe drupal 6. &lt;br /&gt;Oh I am gonna drink to Drupal 6.0 and my time in irc's ... And post drinking will install D6 and play a little.More on Drupal 6 soon as I am lucky enough to taste it as part of my job.&lt;br /&gt; &lt;br /&gt;BTW for a comprehensive and more authentic gene story of drupal 6 read &lt;a href="http://drupal.org/drupal-6.0"&gt; Drupal 6 released &lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2200063935719624739-8156222278790994354?l=ajaxkarma.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajaxkarma.blogspot.com/feeds/8156222278790994354/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2200063935719624739&amp;postID=8156222278790994354' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2200063935719624739/posts/default/8156222278790994354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2200063935719624739/posts/default/8156222278790994354'/><link rel='alternate' type='text/html' href='http://ajaxkarma.blogspot.com/2008/02/drupal-60-is-beast.html' title='Drupal 6.0 is a beast'/><author><name>Dipen Chaudhary</name><uri>http://www.blogger.com/profile/01702383506060460029</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2200063935719624739.post-2078984103122238910</id><published>2008-02-12T15:37:00.004+05:30</published><updated>2008-02-13T18:48:07.199+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Frienfeed'/><category scheme='http://www.blogger.com/atom/ns#' term='Google Ajax Feed API'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='Web 2.0'/><title type='text'>Friendfeed -- Another webapp with a promise</title><content type='html'>&lt;a href="http://friendfeed.com"&gt;Friend Feed&lt;/a&gt; is a web 2.0 aggregator which tracks your activities on social media sites,blogs and present as a single feed, You can also track what &lt;a href="http://friendfeed.com/public"&gt;people&lt;/a&gt; are doing on web 2.0, subscribe to your friend's feed &lt;br /&gt;and then his activities start showing up on friend feed, although you always have option to see your own isolated field at My feed.Friendfeed also have a concept of imaginary friend which you can create if you know username/id of that person on any of the services supported by friendfeed. John resig is my imaginary friend as I know his twitter username :) (Oh, yeh I am digging him lately). Friend feed create a unique url for that imaginary friend in web 2.0 space.&lt;br /&gt;&lt;br /&gt;27 services are supported by Friend feed currently&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_F3CdE129KpU/R7Lqjg-vMlI/AAAAAAAAADY/K0cgr7f5xHM/s1600-h/friendfeed-services.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_F3CdE129KpU/R7Lqjg-vMlI/AAAAAAAAADY/K0cgr7f5xHM/s320/friendfeed-services.JPG" border="0" alt=""id="BLOGGER_PHOTO_ID_5166449618416775762" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You also can share links from friend feed page via share link widget, I normally use it to share blog links I find interesting so that appears on my blog via the friendfeed widget, which reminded me of the widget friendfeed provides to put on your website/blog so that people who read your content know whats going on with you, read your changing Gtalk messages or track you on twitter or know of your music taste on last.fm. &lt;br /&gt;&lt;br /&gt;Friendfeed is started by 4 ex-googlers with gmail,gmap,Google reader fame and that shows the potential it has, there was a buzz in blogosphere of kevin fox ( Gmail UI designer) joining friendfeed ( Actually he has joined Friendfeed ) and thats awesome for its UI prospects. I wonder how silicon valley startups are managed, with 4 ex googlers as co founders and Gmail UI designer with them .. Thats like so much Line of Code per square feet .. I will be tracking friendfeed and its development and for the mean time you can be &lt;a href="http://friendfeed.com/dipen"&gt;friends&lt;/a&gt; with me on friendfeed.&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;Type rest of the post here&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2200063935719624739-2078984103122238910?l=ajaxkarma.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajaxkarma.blogspot.com/feeds/2078984103122238910/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2200063935719624739&amp;postID=2078984103122238910' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2200063935719624739/posts/default/2078984103122238910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2200063935719624739/posts/default/2078984103122238910'/><link rel='alternate' type='text/html' href='http://ajaxkarma.blogspot.com/2008/02/friend-feed-is-web-2.html' title='Friendfeed -- Another webapp with a promise'/><author><name>Dipen Chaudhary</name><uri>http://www.blogger.com/profile/01702383506060460029</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_F3CdE129KpU/R7Lqjg-vMlI/AAAAAAAAADY/K0cgr7f5xHM/s72-c/friendfeed-services.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2200063935719624739.post-7151304223629551065</id><published>2008-02-10T07:55:00.000+05:30</published><updated>2008-02-10T08:23:28.595+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Social media'/><category scheme='http://www.blogger.com/atom/ns#' term='twitter'/><category scheme='http://www.blogger.com/atom/ns#' term='Web 2.0'/><title type='text'>Twitter -- My current fav web 2.0 app</title><content type='html'>I've been hearing twitter/twitter for long time now, but never cared much about it as I am already fed up of orkut, facebook from social media point of view ( just interested in its developer framework now !!). So, yeh why bother myself with another blah application which forces me to login, interact ( I am antisocial, if you have not noticed ) and then login back to follow up or worse get a shit load of garbage in my e mail. I was listenin to pantera, readin this Jquery book and surfing ( Alt + tab :P ) when I came across john resig's post about how he is hooked to twitter and how he was dejected to social networks (kind of same emotions more or less, only mine r pretty much aggressive) So, I decided to check it out and Damn!! its one of the most intelligent, convenient application I have seen.  &lt;br /&gt;Few Things that impressed me straight away were :&lt;br /&gt;&gt; Clean And Simple design with lots of decent AJAX/Javascript ( not gaudy and jumping )&lt;br /&gt;&gt; The event notification is just fundooo !!&lt;br /&gt;&gt; The XMPP support for notification on gtalk, jabber &lt;br /&gt;&gt; I dont have to login into twitter, I can set my status/microblog from gtalk&lt;br /&gt;&gt; Or even my phone (only that its 3rs/sms :( )&lt;br /&gt;&gt; Most amazing thing is twitter tracking .. I can track keywords in twitter universe via gtalk .. It doesnt give me daily digest of web alerts ... Something google should pick up from twitter, and stop sending me those e mails but notify me on IM (or atleast gimme a option )&lt;br /&gt;&lt;br /&gt;What I will like to see in Twitter Or atleast I dont know how to make it work :&lt;br /&gt;&gt; reply to track keywords via gtalk .. that way I make frens based on my dynamic interests and not going to a community and fan club which i join once and forget abt next day..&lt;br /&gt;&gt; More IM protocols supported, partner with yahoo prolly and release a plugin or something ..&lt;br /&gt;&gt; I don't feel the need of firefox plugin for twitter although a quick search show many .. Gtalk is much more convenient&lt;br /&gt;&gt; I still can't figure out a way to reply to twitter updates of ppl I am following, I wanted to ask john resign about his new book and give him some tips maybe [:P]&lt;br /&gt;&gt; Twitter framework is ready to increase its SNS activities as I mentioned before I could meet people with my changing interest via twitter tracker ..&lt;br /&gt;&lt;br /&gt;All in All a great app ... &lt;br /&gt;&lt;br /&gt;&lt;a href="http://twitter.com/dipenchaudhary"&gt;Follow m&lt;/a&gt;e on twitter :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2200063935719624739-7151304223629551065?l=ajaxkarma.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajaxkarma.blogspot.com/feeds/7151304223629551065/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2200063935719624739&amp;postID=7151304223629551065' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2200063935719624739/posts/default/7151304223629551065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2200063935719624739/posts/default/7151304223629551065'/><link rel='alternate' type='text/html' href='http://ajaxkarma.blogspot.com/2008/02/twitter-my-current-fav-web-20-app.html' title='Twitter -- My current fav web 2.0 app'/><author><name>Dipen Chaudhary</name><uri>http://www.blogger.com/profile/01702383506060460029</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2200063935719624739.post-1154063454743284524</id><published>2007-09-18T12:36:00.000+05:30</published><updated>2007-09-18T12:46:19.175+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Yahoo'/><category scheme='http://www.blogger.com/atom/ns#' term='Web 2.0'/><title type='text'>Yahoo Acquires Zimbra</title><content type='html'>Zimbra, one of the trade mark applications of web 2.0 paradigm is taken .. According to zimbra.com yahoo has bought zimbra for $350m .. neat eh ?&lt;br /&gt;&lt;blockquote&gt;We are excited to announce today that Yahoo! is acquiring Zimbra to extend its email leadership to the University, Business and ISP markets.. In order to focus on this effort, the Zimbra team will report to the communications group where we will remain fully committed to the community and to our customers and partners while leveraging opportunities to enhance their current experience.&lt;/blockquote&gt;&lt;br /&gt;Well it maybe a great step to regain ground in mail section, which it is loosing to gmail, Also I think its a measure to counter gmail for enterprises market, Google is doing good with Google apps and yahoo needed to counter that and zimbra might actually pull that off. Zimbra is an open source framework which allows developers and enterprises to integrate their services with zimbra services, Organizations have integrated zimbra with ERP and Inventory systems.. Ask me "How open source ppl earn money" And I might have an answer for you this time :)..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2200063935719624739-1154063454743284524?l=ajaxkarma.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajaxkarma.blogspot.com/feeds/1154063454743284524/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2200063935719624739&amp;postID=1154063454743284524' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2200063935719624739/posts/default/1154063454743284524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2200063935719624739/posts/default/1154063454743284524'/><link rel='alternate' type='text/html' href='http://ajaxkarma.blogspot.com/2007/09/yahoo-acquires-zimbra.html' title='Yahoo Acquires Zimbra'/><author><name>Dipen Chaudhary</name><uri>http://www.blogger.com/profile/01702383506060460029</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2200063935719624739.post-2561751150129482222</id><published>2007-08-26T20:09:00.000+05:30</published><updated>2007-09-17T00:53:06.998+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><category scheme='http://www.blogger.com/atom/ns#' term='firebug'/><title type='text'>FireBug -- The Wonder Tool</title><content type='html'>For the ajaxkarma devotees [:P]:&lt;br /&gt;" Firebug has been around for quite some time now and just because it is mentioned for the first time here, doesn't make it a new in the market beta tool "&lt;br /&gt;For quite sometime I have been planning to write a short tutorial on how to debug javascript and basically "how to be a javascript developer and still be non suicidal", Javascript can really get to your nerves and haunt you at nights with malformed pop ups .. But then its like friction "A necessary evil" you cant make any ajax request or display creamy web widgets without javascript .. For the optimism I have in me ,I am gonna cut short the gloomy airs around JS. Joe Hewitt like a mesiah came to our rescue and made this wonder tool firebug .. Firebug is a javascript, CSS, HTML analyzer which reports almost everything you can imagine about a web page. &lt;br /&gt;This 250kb extension to firefox is better than any debugger, profiler tool you would have worked on your IDE's. It allows you to change DOM in real time allowing you to see changes live, and so CSS and other property you can think of, It contains a script engine to test javascript before incorporating into your page. As I ramble on, I am realizing that nothing I say would aptly describe this tool, So you need to hear it from the man himself, Watch this excellent video which explains the ins and outs of FireBug.&lt;br /&gt;&lt;br /&gt;&lt;embed src='http://us.i1.yimg.com/cosmos.bcst.yahoo.com/player/media/swf/FLVVideoSolo.swf' flashvars='id=1755924&amp;emailUrl=http%3A%2F%2Fvideo.yahoo.com%2Futil%2Fmail%3Fei%3DUTF-8%26vid%3D111597&amp;imUrl=http%253A%252F%252Fvideo.yahoo.com%252Fvideo%252Fplay%253Fei%253DUTF-8%2526vid%253D111597&amp;imTitle=Joe%2BHewitt%253A%2B%2526quot%253BWelcome%2Bto%2BFirebug%2B1.0%2526quot%253B&amp;searchUrl=http://video.yahoo.com/search/video?p=&amp;profileUrl=http://video.yahoo.com/video/profile?yid=&amp;creatorValue=ZXJpY21pcmFnbGlh&amp;vid=111597' type='application/x-shockwave-flash' width='425' height='350'&gt;&lt;/embed&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2200063935719624739-2561751150129482222?l=ajaxkarma.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajaxkarma.blogspot.com/feeds/2561751150129482222/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2200063935719624739&amp;postID=2561751150129482222' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2200063935719624739/posts/default/2561751150129482222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2200063935719624739/posts/default/2561751150129482222'/><link rel='alternate' type='text/html' href='http://ajaxkarma.blogspot.com/2007/08/firebug-wonder-tool.html' title='FireBug -- The Wonder Tool'/><author><name>Dipen Chaudhary</name><uri>http://www.blogger.com/profile/01702383506060460029</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2200063935719624739.post-7827466678071920193</id><published>2007-08-16T19:45:00.000+05:30</published><updated>2007-09-16T20:09:06.852+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ajaxkarma'/><title type='text'>And We Are Back</title><content type='html'>Ok, I have used backspace some 20 times trying to figure out something funny to write after my trip to caves in guatemala [:)] (have been reading a lot about xibalba and stuff), So yeh I am back again with some changes, I plan to keep this blog as a journal of web 2.0 related activities which i find interesting and worth mentioning. I am planning to have a separate web site for the tutorials and the knowledge base of web 2.0 for which i pledge to work [:P] I do I do .. No kidding !!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2200063935719624739-7827466678071920193?l=ajaxkarma.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajaxkarma.blogspot.com/feeds/7827466678071920193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2200063935719624739&amp;postID=7827466678071920193' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2200063935719624739/posts/default/7827466678071920193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2200063935719624739/posts/default/7827466678071920193'/><link rel='alternate' type='text/html' href='http://ajaxkarma.blogspot.com/2007/08/and-we-are-back.html' title='And We Are Back'/><author><name>Dipen Chaudhary</name><uri>http://www.blogger.com/profile/01702383506060460029</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2200063935719624739.post-7646565295757676535</id><published>2007-07-01T21:17:00.000+05:30</published><updated>2007-08-05T02:51:41.824+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='Web 2.0'/><title type='text'>An Interesting study of Digital Text</title><content type='html'>We Sure have advanced a lot !! Application is faster than the speed of thought and really its hard to predict the face of web and the way we communicate.&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://www.youtube.com/v/NLlGopyXT_g" width="425" height="350" type="application/x-shockwave-flash" wmode="transparent"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe style="width:300px;height:35px;" frameborder="0" src="http://www.posthive.com/app/ratingDisplay.php?bI=bc57e42f082ebbdb1979f7a2b5bd32de&amp;pU=&lt;?php the_permalink()?&gt;&amp;pT=&lt;![CDATA[&lt;?php the_title()?&gt;]]&gt;&amp;pB=&lt;![CDATA[&lt;?php the_excerpt()?&gt;]]&gt;&amp;pD=&lt;?php the_time('Y-m-d H:i:s')?&gt;"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2200063935719624739-7646565295757676535?l=ajaxkarma.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajaxkarma.blogspot.com/feeds/7646565295757676535/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2200063935719624739&amp;postID=7646565295757676535' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2200063935719624739/posts/default/7646565295757676535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2200063935719624739/posts/default/7646565295757676535'/><link rel='alternate' type='text/html' href='http://ajaxkarma.blogspot.com/2007/07/interesting-study-of-digital-text.html' title='An Interesting study of Digital Text'/><author><name>Dipen Chaudhary</name><uri>http://www.blogger.com/profile/01702383506060460029</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2200063935719624739.post-4970790731586506240</id><published>2007-06-28T21:16:00.000+05:30</published><updated>2007-06-28T21:27:55.043+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><title type='text'>Dojo 0.9 Beta scheduled for today</title><content type='html'>Love Dojo ? Well you have a reason to jump off the roof (in ur swimming pool of course) and get back to ur work stations to adapt your skills to a very different but lightning fast version of dojo. Yes today is the beta launch day of dojo 0.9 and dojo guys have worked very hard on saving your Kb's and CPU cycles. Well those of you who thought that dojo is hard to learn, will be buying food for ever hungry dojo hackers!! 0.9 book is not finished and is a work in progress but those of you who need a porting guide, can smile a little as &lt;a href="http://dojotoolkit.org/book/dojo-porting-guide-0-4-x-0-9"&gt;porting guide&lt;/a&gt; is presentable and if you are a quick learner then sufficient.&lt;br /&gt;So get ready with your local test site !!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2200063935719624739-4970790731586506240?l=ajaxkarma.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajaxkarma.blogspot.com/feeds/4970790731586506240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2200063935719624739&amp;postID=4970790731586506240' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2200063935719624739/posts/default/4970790731586506240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2200063935719624739/posts/default/4970790731586506240'/><link rel='alternate' type='text/html' href='http://ajaxkarma.blogspot.com/2007/06/dojo-09-beta-scheduled-for-today.html' title='Dojo 0.9 Beta scheduled for today'/><author><name>Dipen Chaudhary</name><uri>http://www.blogger.com/profile/01702383506060460029</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2200063935719624739.post-7908909864421896791</id><published>2007-06-09T14:20:00.000+05:30</published><updated>2007-06-09T14:48:44.669+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Gears'/><category scheme='http://www.blogger.com/atom/ns#' term='Web 2.0'/><title type='text'>Remember The Milk -- The Bob Story</title><content type='html'>Google loves to surprise both its user and developer community, &lt;a href="http://code.google.com/events/developerday/"&gt;gd7&lt;/a&gt; delivered more than expectation when it came to powering the developer with ammunition. With gd7 came Google gears, Mapplets and Mashup editor (very much in Beta). One of the early adapters of Google gears is &lt;a href="http://www.rememberthemilk.com/"&gt;Remember the Milk&lt;/a&gt; (&lt;a href="http://www.flickr.com/photos/emilyboyd/481219872/in/set-72157600167653834/"&gt;Bob the monkey&lt;/a&gt;) website. They have a impressive UI and their integration with google services look very sturdy, remember the milk is an impressive example of web 2.0 which brings a fanktacular UI  and reliable functionality.   &lt;br /&gt;Remember The milk is  a web application which helps  you manage your TODO list in a fun way,It notify of your events and tasks via IM, e mail etc ...  &lt;a href="http://www.rememberthemilk.com/"&gt;Do check it out&lt;/a&gt; !! Maybe it acts as a panacea to your procrastination problem ...&lt;br /&gt;Great Work BoB !!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2200063935719624739-7908909864421896791?l=ajaxkarma.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2200063935719624739/posts/default/7908909864421896791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2200063935719624739/posts/default/7908909864421896791'/><link rel='alternate' type='text/html' href='http://ajaxkarma.blogspot.com/2007/06/remember-milk-bob-story.html' title='Remember The Milk -- The Bob Story'/><author><name>Dipen Chaudhary</name><uri>http://www.blogger.com/profile/01702383506060460029</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-2200063935719624739.post-6191119881935426821</id><published>2007-06-04T02:19:00.000+05:30</published><updated>2007-06-04T02:39:10.458+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Google Gears'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><title type='text'>Google Gears and Dojo Offline</title><content type='html'>Google launched &lt;a href="http://code.google.com/apis/gears/index.html"&gt;Google gears&lt;/a&gt; which helps a developer to make its web application work offline, Google Gears is a set of API which works in tandem with a Local Server, Database  and a Worker Pool to enable a web application to work offline. Dojo launched a simillar kind of toolkit called &lt;a href="http://dojotoolkit.org/offline"&gt;Dojo Offline&lt;/a&gt; about a month ago, Its time to watch out performance of both the developer toolkits, though Google has the Big G factor to it .. I am particularly impressed by &lt;a href="http://dojotoolkit.org/"&gt;dojo toolkit&lt;/a&gt; which AJAXify your web app in a click of a thumb and also gives you a very rich web 2.0 UI with really sweet widgets to cutify your website. Dojo Offline has this edge of being open source and hassle free IP issues which makes it a better contender to provide a complete solution to the offline paradigm. Its two of my favorites competing and I am gonna be hurt anyway. If I get time to work on google gears (which I have to manage with my placements coming), I will publish some tutorials and examples on ajaxkarma, so keep looking !!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2200063935719624739-6191119881935426821?l=ajaxkarma.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajaxkarma.blogspot.com/feeds/6191119881935426821/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2200063935719624739&amp;postID=6191119881935426821' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2200063935719624739/posts/default/6191119881935426821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2200063935719624739/posts/default/6191119881935426821'/><link rel='alternate' type='text/html' href='http://ajaxkarma.blogspot.com/2007/06/google-gears.html' title='Google Gears and Dojo Offline'/><author><name>Dipen Chaudhary</name><uri>http://www.blogger.com/profile/01702383506060460029</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2200063935719624739.post-859439664826933455</id><published>2007-05-26T00:44:00.000+05:30</published><updated>2007-06-28T23:09:45.817+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='dijit'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><title type='text'>Dijit Form Widgets Tutorial -- TextBox, CheckBox, Button</title><content type='html'>Lets quickly see these simple Dijit Form Elements, so that we will have more time to invest on fancier one's.&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;BOOTSTRAPPING:&lt;/span&gt;&lt;br /&gt;BootStrapping is still done with good old dojo.js by sourcing this script file in our environment. It does all the work at the background to give u the dojo object.&lt;br /&gt;&lt;span style="color: rgb(51, 0, 51);"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&amp;lt;script type="text/javascript" src="www_root/js/dojo/dojo.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;&lt;br /&gt;This you will need in any dojo enabled page and dojo.js contain the most important and frequently functions.&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;DOJO REQUIRES:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;To make dijit work You will need to import corresponding Widget Script File in your environment. To parse the widgets you need a parser JS file which can be obtained by&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;dojo.require   ("dijit.util.parser");&lt;/span&gt;&lt;br /&gt;This is needed in almost all markup based widget creation, where you create widgets by calling them in html tags.&lt;br /&gt;&lt;span id="fullpost"&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;GETTING STARTED WITH TEXTBOX, CHECKBOX AND BUTTONS:&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;To make Textbox, checkbox or Button work you will have to dojo require the appropriate JS file in your environment..&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Lets see how to define a TextBox in a input tag ... &lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&amp;lt;input dojoType="dijit.form.Textbox" type=text name="name"&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;You can set following properties:&lt;br /&gt;&lt;br /&gt;trim : Removes leading and trailing whitespace if true.  Default is false.&lt;br /&gt;ProperCase: Converts the first character of each word to uppercase if true.&lt;br /&gt;upperCase : Converts all characters to uppercase if true.  Default is false.&lt;br /&gt;lowerCase:&lt;br /&gt;Size: Size of the text Box&lt;br /&gt;&lt;br /&gt;Following event handlers work as in normal textbox:&lt;br /&gt;&lt;br /&gt;onfocus&lt;br /&gt;onblur&lt;br /&gt;onkeyup&lt;br /&gt;&lt;br /&gt;Lets see how to use above info ...&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&amp;lt;input dojoType="dijit.form.Textbox" type=text name="name" trim="true" propercase="true"&amp;gt;&lt;br /&gt;&lt;br /&gt;Similarly the obove eventhandlers can be used to call appropriate functions..&lt;br /&gt;&lt;br /&gt;Some Functions of TextBox object are&lt;br /&gt;getTextValue&lt;br /&gt;getValue&lt;br /&gt;setTextValue&lt;br /&gt;setValue&lt;br /&gt;&lt;br /&gt;Note: You can acess these functions when you create TextBox programatically&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Making a TextBox Programatically :&lt;/span&gt;&lt;br /&gt;function create_textbox()&lt;br /&gt;{&lt;br /&gt;var parameters = {&lt;br /&gt;    name:"email",&lt;br /&gt;    trim:"true",&lt;br /&gt;    propercase:"true"&lt;br /&gt;    };&lt;br /&gt;&lt;br /&gt;var text = new dijit.form.Textbox(parameters,dojo.byId("hello"));&lt;br /&gt;text.setTextValue("Value set by setTextValue");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&amp;lt;form &amp;gt;&lt;br /&gt;&amp;lt;button dojoType="dijit.form.Button  " onClick="create_textbox"&amp;gt; Textbox Programatically&lt;br /&gt;&amp;lt;/button&amp;gt;&lt;br /&gt;&amp;lt;/form&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;div id="hello"&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;  BUTTON:&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Button is a very rich widget of dijit in terms of looks, functionality and flexibility, As button is used very often in pages the versatility is very much appreciated by developers.&lt;br /&gt;Types of Button We can create are :&lt;br /&gt;1&amp;gt; Normal Cickable Button&lt;br /&gt;2&amp;gt; Drop Down Button ( Using DropDownButton  and Menu Widget)&lt;br /&gt;3&amp;gt;Combo Button (Using ComboButton and Menu Widget)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Normal Cickable Button:&lt;/span&gt;&lt;br /&gt;We can create a Paser based mark up button as follow:&lt;br /&gt;&lt;br /&gt;We need to dojo require the Button Js file by&lt;br /&gt;dojo.require("dijit.form.Button ");&lt;br /&gt;&lt;br /&gt;&amp;lt;button dojoType=" dijit.form.Button" onClick="create_textbox"&amp;gt;&lt;br /&gt;Click Me!&lt;br /&gt;&amp;lt;/button&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;  &lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  Other Attributes of Button are :&lt;/span&gt;&lt;br /&gt;Caption: Set caption on button&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;Function Available to Override:&lt;/span&gt;&lt;br /&gt;setCaption: set the caption on button&lt;br /&gt;buttonClick: internal handling of button click&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;CallBack Funtion: &lt;/span&gt;&lt;br /&gt;onClick: Called When button is Clicked&lt;br /&gt;&lt;br /&gt;You can have image on button by using &amp;lt;img&amp;gt; tag before closing the button or input tag.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Creating Normal Clickable Button Programatically: &lt;/span&gt;&lt;br /&gt;function create_button()&lt;br /&gt;{&lt;br /&gt;var parameters = {&lt;br /&gt;    caption:"I m programatically created. Please Click Me",&lt;br /&gt;    onClick:"call"&lt;br /&gt;    };&lt;br /&gt;&lt;br /&gt;var but =  new dijit.form.Button(parameters,dojo.byId("hello"));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;You can call it as callBack handler on onClick or any other way you choose to.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Drop Down Button:&lt;/span&gt;&lt;br /&gt;Drop Down Buttons are rendered with the help of Menu Widget and as the Drop Down Button class is in the same JS file as Button  class therefore we dont need explicit  dojo.require for it. It will come with dojo.require("dijit.form.Button").&lt;br /&gt;&lt;br /&gt;Lets see how to create a Drop Down Button quickly ..&lt;br /&gt;&lt;br /&gt;&amp;lt;button dojoType="dijit.form.DropDownButton" menuId='FileMenu'&amp;gt;&lt;br /&gt;File &amp;lt;/button&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;div dojoType="dijit.PopupMenu" id="FileMenu" toggle="fade" toggleDuration="500" style="display: none;"&amp;gt;&lt;br /&gt;&amp;lt;div dojoType=" dijit.MenuItem" caption="New" accelKey="Ctrl+N" onClick="new" &amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;div dojoType="dijit.MenuItem"  caption="Open" accelKey="Ctrl+o" onClick="loadFile"&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;div dojoType="dijit.MenuItem"  caption="Save" accelKey="Ctrl+s  onClick="send"&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&lt;br /&gt;dijit.PopMenu and dijit.MenuItem are sourced into environment by  dojo.require("dijit.Menu");&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Combo Button:&lt;/span&gt;&lt;br /&gt;&amp;lt;button dojoType="dijit.form.ComboButton" menuId='FileMenu' onClick=file&amp;gt;&lt;br /&gt;File &amp;lt;/button&amp;gt;&lt;br /&gt;&lt;br /&gt;and PopMenu can be defined as above in drop down Menu ..&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;span style="font-weight: bold;"&gt;CHECKBOX:&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Checkboxes can be used simillarly, we need  dojo.require("dijit.form.Checkbox")&lt;br /&gt;They have the same properties as normal Html Checkboxes like&lt;br /&gt;&lt;br /&gt;value&lt;br /&gt;checked&lt;br /&gt;&lt;br /&gt;&amp;lt;input dojoType="dijit.form.Checkbox" type="checkbox" name="vote" checked="true" value="on" onClick=alert( this.value)&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Other Callback Handlers are:&lt;br /&gt;&lt;br /&gt;onChecked&lt;br /&gt;mouseOver&lt;br /&gt;mouseOut&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;RadioButtons:&lt;/span&gt;&lt;br /&gt;&amp;lt;input dojoType=" dijit.form.RadioButton" type="radio" name="album" checked="true"  value="snm" onClick=alert(this.value)&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;input dojoType="dijit.form.RadioButton" type="radio" name="album" value="load"  onClick=alert( this.value)&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;input dojoType="dijit.form.RadioButton" type="radio" name="album"  value="master of puppets" onClick=alert(this.value)&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 51, 51); font-weight: bold;"&gt; Closing:&lt;/span&gt;&lt;br /&gt;Whew !! Well I have covered almost all aspects of these widgets in accordance to nightly build of 23 May !! We will next see other form elements which are unique to dojo like InlineEditbox, &lt;br /&gt;dateTextBox, CurrencyTextBox, Autocompleter etc ... Keep Checking this blog !!&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2200063935719624739-859439664826933455?l=ajaxkarma.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajaxkarma.blogspot.com/feeds/859439664826933455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2200063935719624739&amp;postID=859439664826933455' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2200063935719624739/posts/default/859439664826933455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2200063935719624739/posts/default/859439664826933455'/><link rel='alternate' type='text/html' href='http://ajaxkarma.blogspot.com/2007/05/dijit-form-widgets-tutorial-textbox.html' title='Dijit Form Widgets Tutorial -- TextBox, CheckBox, Button'/><author><name>Dipen Chaudhary</name><uri>http://www.blogger.com/profile/01702383506060460029</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2200063935719624739.post-3041300633131263449</id><published>2007-05-25T07:22:00.000+05:30</published><updated>2007-05-25T07:46:24.658+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='dijit'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><title type='text'>Dojo 0.9 M2 is out !!</title><content type='html'>Well Many of You already know that Dojo is on its way of a major release which is gonna affect our knowledge of applying dojo in our solutions. Dojo 0.9 Milestone 2 release is out and can be obtained from &lt;a href="http://download.dojotoolkit.org/experimental/dojo-0.9M2.tar.gz"&gt;here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Dojo Widget has its own new Name and will be called "Dijit" officially, Dojo core is slimmer and faster as per &lt;a href="http://www.sitepen.com/blog/2007/05/13/dojo-update-m2/"&gt;Alex Russel&lt;/a&gt; . I downloaded 24th May's nightly build and started looking in it and ran some tests, which were impressive and convincing for the widgets supported till now by dijit. I will start writing on small How To's here to show the usage of Dijit widget which is easier to understand and less clumsier than the overall bash of dojo 0.4 .&lt;br /&gt;&lt;br /&gt;I will first cover form widgets of dijit and ways to use them in your pages and then we can move on to more fancy one like Editor and Tree's or we can mix the order, It all depend on the mood and time constraints.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2200063935719624739-3041300633131263449?l=ajaxkarma.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajaxkarma.blogspot.com/feeds/3041300633131263449/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2200063935719624739&amp;postID=3041300633131263449' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2200063935719624739/posts/default/3041300633131263449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2200063935719624739/posts/default/3041300633131263449'/><link rel='alternate' type='text/html' href='http://ajaxkarma.blogspot.com/2007/05/dojo-09-m2-is-out.html' title='Dojo 0.9 M2 is out !!'/><author><name>Dipen Chaudhary</name><uri>http://www.blogger.com/profile/01702383506060460029</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2200063935719624739.post-5834827872298622199</id><published>2007-05-14T17:50:00.001+05:30</published><updated>2007-05-25T07:48:47.938+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='RSS/Atom'/><category scheme='http://www.blogger.com/atom/ns#' term='Google Ajax Feed API'/><title type='text'>FeedControl update to Google AJAX Feed API</title><content type='html'>&lt;a href="http://googleajaxsearchapi.blogspot.com/"&gt;FeedControl&lt;/a&gt; was added recently by google to AJAX feed API which works like GSearchControl in Google AJAX Search API. This class makes it easier to add multiple feeds and to draw them up by basic predefined google CSS which can be overidden as needed.&lt;br /&gt;&lt;br /&gt;FeedControl constructor doesnt take any argument and has three methods associated with it&lt;br /&gt;&lt;ol&gt;&lt;li&gt;addFeed(url,title)&lt;/li&gt;&lt;li&gt;draw(element,options)&lt;/li&gt;&lt;li&gt;setNumEntries(num)&lt;/li&gt;&lt;li&gt;setLinkTarget(Target)&lt;/li&gt;&lt;/ol&gt;There are already very good examples given by google AJAX API group which covers almost all methods and options of this new class. I specially liked to see the &lt;a href="http://www.google.com/uds/samples/feedapidocs/tabbed.html"&gt;tabbed&lt;/a&gt; feed drawoption one, which looked very fancy and can be used effectively in creating neat and clean mashups.&lt;br /&gt;&lt;br /&gt;Please look at the &lt;a href="http://code.google.com/apis/ajaxfeeds/documentation/reference.html#FeedControl"&gt;reference&lt;/a&gt; of this class to find out more on these methods but I will give a brief introduction of these methods although they dont require much explaination.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;addFeed(url,title) : to add a new feed to your feedcontrol object and the second argument is used to give it a label which is displayed accordingly by the CSS attached to it.&lt;br /&gt;&lt;br /&gt;draw(element,options): To load the feed and draw on the page, It takes the DOM element as its argument which will act as the container of the feed and also it takes a optional second argument which can instruct of other options of drawing, currently there is one option called DrawMode which can take two value&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;code&gt;google.feeds.FeedControl.DRAW_MODE_TABBED&lt;br /&gt;&lt;/code&gt;&lt;code&gt;google.feeds.FeedControl.DRAW_MODE_LINEAR&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;setNumEntries(num): Num of entries to be pulled when draw is called.&lt;br /&gt;&lt;br /&gt;setLinkTarget(target): where should the link open when clicked. Default is the same window, Pl check the documentation for possible values.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;ADVANTAGES:&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&lt;br /&gt;few advantages that can be observed by addition of feedControl in feed API are:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&gt;Simpler programming model&lt;br /&gt;&gt;Drawing is done by the API itself, which can be controlled by overidding the CSS&lt;br /&gt;&gt;Title now contains the link to the entry too :)&lt;br /&gt;&gt;Default &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;CSS&lt;/span&gt; which can be used where no sophisticated layout is needed.&lt;br /&gt;&lt;br /&gt;3 Examples are given by the Google team, which can be accessed from &lt;a href="http://googleajaxsearchapi.blogspot.com/2007/05/ajax-feed-api-update.html"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2200063935719624739-5834827872298622199?l=ajaxkarma.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajaxkarma.blogspot.com/feeds/5834827872298622199/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2200063935719624739&amp;postID=5834827872298622199' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2200063935719624739/posts/default/5834827872298622199'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2200063935719624739/posts/default/5834827872298622199'/><link rel='alternate' type='text/html' href='http://ajaxkarma.blogspot.com/2007/05/feedcontrol-update-to-google-ajax-feed_14.html' title='FeedControl update to Google AJAX Feed API'/><author><name>Dipen Chaudhary</name><uri>http://www.blogger.com/profile/01702383506060460029</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2200063935719624739.post-4814679918579877214</id><published>2007-05-04T21:48:00.001+05:30</published><updated>2007-05-25T07:48:19.631+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='RSS/Atom'/><category scheme='http://www.blogger.com/atom/ns#' term='Google Ajax Feed API'/><title type='text'>Programming Mashups using Google Ajax Feeds API -- Part 2 of 2</title><content type='html'>&lt;span style="font-size:130%;"&gt;&lt;span style="color: rgb(153, 153, 0);"&gt;Deviating from default:&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;&lt;span style="font-size:85%;"&gt;In the previous part we learned how to pull a feed into a mashup using bare bones of the AJAX feed  API.In this part we will see what customization is possible in the API and how !!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Things That can be changed:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;Number of entries in default pulling is 4, this can be changed &lt;/li&gt;&lt;li&gt;Result format by default is JSON, this can be changed to XML&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="color: rgb(153, 153, 0);"&gt;Changing Number Of Entries:&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-size:85%;" &gt;This can be changed by calling setNumEntries method of feed object. the argument of this methods is number of entries you wanna pull in each result object. This is a important method and would come in handy in almost all mashup programming.&lt;br /&gt;&lt;br /&gt;feed.setNumEntries(7);&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;This method should be called before calling load.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 0);"&gt;&lt;span style="font-size:130%;"&gt;Changing Result Format:&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);font-size:85%;" &gt;Like Number of entries this can also be changed by calling a method on the feed object, Method of interest in this regard is setResultFormat(format). Format can take one of the three values &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;1&amp;gt; google.feeds.Feed.JSON_FORMAT (default)&lt;br /&gt;2&amp;gt; google.feeds.Feed.XML_FORMAT&lt;br /&gt;3&amp;gt; google.feeds.Feed.MIXED_FORMAT&lt;br /&gt;&lt;br /&gt;feed.setResultFormat(google.feeds.Feed.XML_FORMAT)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt; &lt;span style="color: rgb(153, 153, 0);"&gt;Example Mashup:&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;span style="font-size:85%;"&gt;In this example we will try to use all the concepts learned till now, This will contain a mashup of 2 feeds, one pulled as JSON and other pulled as XML. More of number of entries will also be different in both the feeds. This should suffice the usage of all API's present in the armour.&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;Function to pull a feed with result in JSON format:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;function pull_json(feed_url,container_id,num_entries)&lt;br /&gt;  {&lt;br /&gt; var feed = new  google.feeds.Feed(feed_url);&lt;br /&gt; feed.setNumEntries(num_entries);&lt;br /&gt;       feed.load(function(result) {&lt;br /&gt;         if (!result.error) {&lt;br /&gt;           var feed_container = document.getElementById(container_id);&lt;br /&gt;            for (var i = 0; i &amp;lt;= result.feed.entries.length; i++) { &lt;br /&gt;             var entry = result.feed.entries[i];&lt;br /&gt;             var div = document.createElement("div");&lt;br /&gt;             var link =  document.createElement("a");&lt;br /&gt;             link.href=entry.link;&lt;br /&gt;             link.innerHTML=entry.title;&lt;br /&gt; div.appendChild(link);&lt;br /&gt;             div.appendChild(document.createElement("br"));&lt;br /&gt;             div.appendChild(document.createTextNode(entry.contentSnippet));&lt;br /&gt;             feed_container.appendChild(div);&lt;br /&gt;           }&lt;br /&gt; }&lt;br /&gt; });&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt; Function to pull a feed with result in XML Format:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; function pull_xml(url,container_id,entries)&lt;/span&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;var feed = new google.feeds.Feed(url);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;feed.setNumEntries(entries);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;feed.setResultFormat(google.feeds.Feed.XML_FORMAT);&lt;/span&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;&lt;br /&gt;feed.load(function(result) {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;var feed_container = document.getElementById(container_id);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;  if (!result.error) {&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;var items = result.xmlDocument.getElementsByTagName("item");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;     for (var i = 0; i &amp;lt; items.length; i++) {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;var titleElement = items[i].getElementsByTagName("title")[0];&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;var title = titleElement.firstChild.nodeValue;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;br /&gt;var linkElements = items[i].getElementsByTagName("link")[0];&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;      var link_url = linkElements.firstChild.nodeValue;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;br /&gt;var descElements = items[i].getElementsByTagName("description")[0];&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;      var desc = descElements.firstChild.nodeValue;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;br /&gt;var div =  document.createElement("div");&lt;/span&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;br /&gt;var link = document.createElement("a");&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;       link.href=link_url;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;   &lt;br /&gt;link.innerHTML=title&lt;/span&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;      div.appendChild (link);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;div.appendChild(document.createElement("br"));&lt;/span&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;&lt;br /&gt;div.appendChild(document.createTextNode(desc));&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;      feed_container.appendChild(div);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;     }&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 153);"&gt;});&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153);"&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Full Source with minimal layout can be found &lt;a href="http://dipen.phpnet.us/workspace/feed.txt"&gt;here&lt;/a&gt;&lt;br /&gt;Sample Demo Of above mashup can be viewed &lt;a href="http://dipen.phpnet.us/workspace/src2.htm"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 102, 0);"&gt; &lt;span style="font-size:130%;"&gt;Conclusion:&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;Mashup programming is made easy by Google AJAX Feed API, and we learned how !! This 2 article series covered the API with examples and I will soon put a cool sample mashup using google AJAX API as soon as I get time. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2200063935719624739-4814679918579877214?l=ajaxkarma.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajaxkarma.blogspot.com/feeds/4814679918579877214/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2200063935719624739&amp;postID=4814679918579877214' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2200063935719624739/posts/default/4814679918579877214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2200063935719624739/posts/default/4814679918579877214'/><link rel='alternate' type='text/html' href='http://ajaxkarma.blogspot.com/2007/05/programming-mashups-using-google-ajax.html' title='Programming Mashups using Google Ajax Feeds API -- Part 2 of 2'/><author><name>Dipen Chaudhary</name><uri>http://www.blogger.com/profile/01702383506060460029</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2200063935719624739.post-6940940497131187671</id><published>2007-04-26T20:21:00.001+05:30</published><updated>2007-05-29T14:41:51.963+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='RSS/Atom'/><category scheme='http://www.blogger.com/atom/ns#' term='Google Ajax Feed API'/><title type='text'>Programming Mashups using Google Ajax Feeds -- Part 1 of 2</title><content type='html'>&lt;span style="color: rgb(0, 0, 0);font-size:100%;" &gt;&lt;span style="font-weight: bold; color: rgb(153, 153, 0);"&gt;Mashups&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;Mashups are information rich portals which pull data from different sources and present at one logical accessible place like a website. Mashups can be ideally created from  feeds which follow RSS/Atom Specification. RSS/Atom is a XML stream or file which can be parsed by a SAX or DOM parser to obtain the content desirable for your site.&lt;br /&gt;&lt;span style="color: rgb(153, 153, 0);"&gt;&lt;span style="font-weight: bold; color: rgb(153, 153, 0);"&gt;   Google AJAX Feed API:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;Google some days ago launched AJAX feed API which does all the dirty work behind the scenes for you to retrieve feeds and make the data available in JSON or XML format in a feed object. This object can be iterated over to extract information and display on your web site. You can pull more than one feed and place in different containers governed by your CSS style, Hence giving birth to a mashup.&lt;span style="color: rgb(153, 153, 0);"&gt;&lt;br /&gt;&lt;span style="color: rgb(153, 153, 0); font-weight: bold;"&gt;Preliminaries of AJAX Feed API:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;The API has only one public class called google.feeds.Feed, Constructor of this class take the feed url as parameter. The object returned contains the feed information and elements in the field. The default format for the feed content is JSON but it can be set to XML as we will see later. We associate a callback function to handle the XmlHttpResponse with feed object by calling load function which takes a callback function as the argument.&lt;br /&gt;&lt;br /&gt;To summarise preliminaries of AJAX Feed API:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul style="color: rgb(0, 0, 0);"&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Feed Object is created by passing the feed url as parameter to the feed class.&lt;/span&gt;&lt;/li&gt;  &lt;li&gt;&lt;span style="font-size:100%;"&gt;CallBack Function is Associated with feed by calling google.feeds.Feed.load(callback())&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Data Format can be shifted between JSON and XML, by default its JSON.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="color: rgb(0, 0, 0);font-size:100%;" &gt;  Example: Retrieving Google News Using AJAX Feed API:&lt;br /&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;Lets do some pulling with the Feed API. In this example we will pull data from &lt;a href="http://news.google.com/" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;  google news&lt;/a&gt;&lt;br /&gt;and display it on our portal, This is a bare bone skeleton example that should get you started on using the Feed API. Designers should apply their creativity to layout data from different feeds to attract users. We Will use the default JSON format to represent data but that is implicit to the feed object.&lt;br /&gt;&lt;br /&gt;Here is the Code To get You started:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;head&amp;gt;&lt;/span&gt; &lt;span style="color: rgb(51, 51, 153);"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;&amp;lt;!-- This is the place where you call the google API source file by&lt;br /&gt;      supplying your API Key after ?Key= &lt;/span&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    Do not forget to Close the script tag --&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&amp;lt;script type="text/javascript" src="&lt;a href="http://www.google.com/jsapi?key=ABQIAAAAIlVpscxKLRriIWMDjrycOBSRbwO2k9aFbTLGnQn8fBW-r2UKpxRAwqVEhdJyW5ajFJ64-Ri8xeSGlw" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt; http://www.google.com/jsapi?key="Key_u_got_from_google"&lt;/a&gt;&lt;/span&gt; &lt;span style="color: rgb(51, 51, 153);"&gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&amp;lt;!-- Local Logic to Instantiate feed Object and use it to pull data --&amp;gt; &lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 153);"&gt; &amp;lt;script type="text/javascript"&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);font-size:100%;" &gt; &lt;span style="color: rgb(51, 51, 51);"&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;//  This is Google AJAX  API function which says that you&lt;br /&gt;&lt;/span&gt;  &lt;span style="color: rgb(255, 0, 0);"&gt;// that you are loading the feed API and the version of the API is 1&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);font-size:100%;" &gt; &lt;span style="color: rgb(51, 51, 51);"&gt; &lt;span style="color: rgb(51, 51, 153);"&gt;    google.load("feeds", "1");       &lt;span style="color: rgb(255, 0, 0);"&gt;  &lt;/span&gt;  &lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);font-size:100%;" &gt;&lt;span style="color: rgb(51, 51, 51);"&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; &lt;/span&gt;&lt;/span&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;// Function that needs to be called when the AJAX request returns &lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);font-size:100%;" &gt;&lt;span style="color: rgb(51, 51, 51);"&gt; &lt;span style="color: rgb(51, 51, 153);"&gt;   &lt;br /&gt;function newsInit() {       &lt;span style="color: rgb(255, 0, 0);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt; &lt;span style="color: rgb(0, 0, 153);"&gt;var feedurl &lt;/span&gt; = &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);font-size:100%;" &gt;&lt;span style="color: rgb(51, 51, 51);"&gt;&lt;span style="color: rgb(51, 51, 153);"&gt; "&lt;a href="http://news.google.com/?output=rss&amp;ned=:ePkh8BM9E8JmByvQDgMWHLYAAJLIBto" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;http://news.google.com/?output=rss&amp;amp;amp;amp;ned=:ePkh8BM9E8JmByvQDgMWHLYAAJLIBto &lt;/a&gt;" ;&lt;br /&gt;    &lt;br /&gt;     &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);font-size:100%;" &gt;&lt;span style="color: rgb(51, 51, 51);"&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;   // make the feed object&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);font-size:100%;" &gt;&lt;span style="color: rgb(51, 51, 51);"&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;      var newsFeed = new google.feeds.Feed(feedurl);&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;&lt;br /&gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);font-size:100%;" &gt;&lt;span style="color: rgb(51, 51, 51);"&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;  // Assign a Callback function  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);font-size:100%;" &gt;&lt;span style="color: rgb(51, 51, 51);"&gt;  &lt;span style="color: rgb(51, 51, 153);"&gt;&lt;br /&gt;     newsFeed.load(function(feed_result) {&lt;br /&gt; &lt;/span&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;if (!feed_result.error) {&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(51, 51, 153);"&gt;var feed_container =  document.getElementById("newsFeed");&lt;br /&gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);font-size:100%;" &gt;&lt;span style="color: rgb(51, 51, 51);"&gt;&lt;span style="color: rgb(51, 51, 153);"&gt; &lt;span style="color: rgb(255, 0, 0);"&gt;// Display by Manipulating DOM&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);font-size:100%;" &gt;&lt;span style="color: rgb(51, 51, 51);"&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;   &lt;/span&gt; &lt;span style="color: rgb(51, 51, 153);"&gt;&lt;br /&gt;         for (var i = 0; i &amp;lt; feed_result.feed.entries.length; i++)&lt;br /&gt; {    &lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt; &lt;/span&gt;&lt;/span&gt;  &lt;span style="color: rgb(51, 51, 153);"&gt;            var entry = feed_result.feed.entries[i];&lt;/span&gt; &lt;span style="color: rgb(51, 51, 153);"&gt;            &lt;br /&gt;var div = document.createElement("div");&lt;/span&gt; &lt;span style="color: rgb(51, 51, 153);"&gt;           &lt;br /&gt;var link = document.createElement("a");&lt;/span&gt;  &lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;            link.href=entry.link;&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(51, 51, 153);"&gt;link.innerHTML=entry.title;&lt;/span&gt;   &lt;span style="color: rgb(51, 51, 153);"&gt;           &lt;br /&gt;div.appendChild(link);&lt;/span&gt; &lt;span style="color: rgb(51, 51, 153);"&gt;           &lt;br /&gt;div.appendChild(document.createElement("br")); &lt;/span&gt; &lt;span style="color: rgb(51, 51, 153);"&gt;            div.appendChild(document.createTextNode(entry.contentSnippet));&lt;/span&gt; &lt;span style="color: rgb(51, 51, 153);"&gt;              feed_container.appendChild(div);&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;}&lt;/span&gt; &lt;span style="color: rgb(51, 51, 153);"&gt;         &lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;});&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;    }&lt;/span&gt;   &lt;span style="color: rgb(51, 51, 153);"&gt;    google.setOnLoadCallback(newsInit);&lt;/span&gt; &lt;br /&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;    &amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 153, 0);font-size:130%;" &gt;&lt;span style="color: rgb(51, 51, 51);"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(153, 153, 0);"&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="color: rgb(0, 0, 0);font-size:100%;" &gt;&lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);font-size:100%;" &gt;&amp;lt;/head&amp;gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(0, 0, 0);font-size:100%;" &gt; &amp;lt;body&amp;gt;  &lt;/span&gt; &lt;span style="color: rgb(0, 0, 0);font-size:100%;" &gt;&lt;br /&gt;&amp;lt;div id="newsFeed"&amp;gt; &amp;lt;/div&amp;gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 153);"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;/body&amp;gt;  &lt;/span&gt;&lt;span style="color: rgb(0, 0, 0);"&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 51);"&gt;&lt;span style="color: rgb(0, 0, 0);font-size:100%;" &gt;This Should fetch 4 entries from google news. You can layout newsFeed div element to display news feed nicely and cleanly.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(102, 51, 0);"&gt;&lt;span style="color: rgb(0, 0, 0);font-size:100%;" &gt;Note: Google uses feedFetcher to crawl and pull feeds at the backend, accoring to google policy it refreshes the feed value in about an hour, therefore the websites whose feed changing frequency is pretty high, the entries will not be refreshed.&lt;br /&gt;&lt;br /&gt;In next Part I will show how to configure options of retrieval and how to use XML as a data model. We Will also create a web Page with more than 2 feeds pouring in data.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2200063935719624739-6940940497131187671?l=ajaxkarma.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajaxkarma.blogspot.com/feeds/6940940497131187671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2200063935719624739&amp;postID=6940940497131187671' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2200063935719624739/posts/default/6940940497131187671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2200063935719624739/posts/default/6940940497131187671'/><link rel='alternate' type='text/html' href='http://ajaxkarma.blogspot.com/2007/04/programming-mashups-using-google-ajax_26.html' title='Programming Mashups using Google Ajax Feeds -- Part 1 of 2'/><author><name>Dipen Chaudhary</name><uri>http://www.blogger.com/profile/01702383506060460029</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2200063935719624739.post-4100109383730204260</id><published>2007-04-26T14:48:00.001+05:30</published><updated>2007-05-29T12:19:24.128+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='Web 2.0'/><title type='text'>What is web 2.0 ?</title><content type='html'>&lt;font size="3"&gt;&lt;font style="color: rgb(0, 0, 0);"&gt;Web 2.0 is a term coined to explain conceptual amalgamation of technologies, specialised applications, community collaboration and overall change of user experience on Internet observed by everyone. Right from Google Maps to Wikipedia or WordPress to Drupal come under the umbrella of Web 2.0. They share the fraternity under the fatherhood of web 2.0. This term has nothing to do with any updates in technological specification of WWW or HTTP, Its just a term to express advancements in internet applications which has definately changed the way Internet is used and perceived by us.&lt;/font&gt;&lt;br /&gt;&lt;/font&gt;&lt;font style="color: rgb(0, 0, 0);" size="3"&gt;&lt;br /&gt;&lt;font style="color: rgb(153, 153, 0); font-weight: bold;"&gt;Web 2.0 as a Amalgamation of Technologies:&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font style="color: rgb(0, 0, 0);"&gt;AJAX has been a buzz word since 2005 and has really proved its potential in bringing out the paradigm changes to User Interfacing. Web Portals are no Longer some dead pages with some business logic at backend waiting for a user request, It has transformed into a complete software killer applications deployed over the Internet. Best Example I can think of such kind of transform is &lt;/font&gt;&lt;a style="color: rgb(0, 0, 0);" href="https://www.google.com/accounts/ServiceLogin?service=writely&amp;passive=true&amp;amp;continue=http%3A%2F%2Fdocs.google.com%2F%3Fhl%3Den_GB&amp;amp;hl=en_GB&amp;ltmpl=homepage&amp;amp;nui=1&amp;utm_source=en_GB-more&amp;amp;utm_medium=more&amp;tm_campaign=en_GB"&gt; google docs and spreadsheets&lt;/a&gt;&lt;font style="color: rgb(0, 0, 0);"&gt; and all this is made possible by AJAX and other supporting technologies.&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;font style="color: rgb(0, 0, 0); font-weight: bold;" size="3"&gt;&lt;font style="color: rgb(153, 153, 0);"&gt;Why Amalgamation ?&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font style="color: rgb(0, 0, 0);"&gt;AJAX is not a technology in itself, but a collection of other technologies arranged in a way to deliver stunning highly responsive GUI applications on Internet.&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;/font&gt;&lt;font style="color: rgb(0, 0, 0);" size="3"&gt;Component Technologies of AJAX :&lt;br /&gt;&lt;/font&gt;&lt;font size="3"&gt;&lt;font style="color: rgb(0, 0, 0);"&gt;Javascript&lt;/font&gt;&lt;br /&gt;&lt;font style="color: rgb(0, 0, 0);"&gt;XMLHttpRequest or ActiveX Object capability of browsers&lt;/font&gt;&lt;br /&gt;&lt;font style="color: rgb(0, 0, 0);"&gt;DOM Manipulation (By JavaScript)&lt;/font&gt;&lt;br /&gt;&lt;font style="color: rgb(0, 0, 0);"&gt;CSS Manipulation (By JavaScript)&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;font style="color: rgb(0, 0, 0);"&gt; RSS/Atom is another technology which eases information dissemination and has become dominant on internet in the name of feeds.Businesses can reach potential customers using these feeds which serves as a boradcast message.RSS/Atom is based on XML which is open standard and human readable, Feeds can be used to create mashups based on your interest or the interest of your potential users. You can mix and match and really make a information rich web portal.&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;/font&gt; &lt;font style="color: rgb(0, 0, 0);" size="3"&gt;&lt;font style="color: rgb(153, 153, 0); font-weight: bold;"&gt;Web 2.0 as an amalgamation of special applications:&lt;/font&gt;&lt;br /&gt;&lt;font style="color: rgb(0, 0, 0);"&gt;&lt;font style="color: rgb(51, 51, 51);"&gt;Wiki, CMS, blogs, forums,social networking are special internet applications which have changed the way user look for information on internet. Moreover these are easily pluggable applications which attach themselves to your web site and help the administrator to maintain large information base in a clean way. Most of these applications are open sourec and can be integrated for free with little or no configuration, some of the good examples being drupal, wikimedia, wordpress, joomla etc. Community Wiki's can be exploited to create a large information base of some particular area and hence create specialised wiki's. Please read here to find out &lt;/font&gt;&lt;a href="http://computer.howstuffworks.com/wiki.htm"&gt;how wiki works.&lt;/a&gt;&lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;font class="" style="display: block; color: rgb(0, 0, 0);" id="formatbar_CreateLink" title="Link" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="" onmousedown="CheckFormatting(event);FormatbarButton('richeditorframe', this, 8);ButtonMouseDown(this);" size="3"&gt; &lt;/font&gt;&lt;font style="font-weight: bold;" size="3"&gt;&lt;br /&gt;&lt;/font&gt; &lt;font style="color: rgb(0, 0, 0);" size="3"&gt;&lt;font style="color: rgb(0, 0, 0);"&gt;&lt;font style="color: rgb(153, 153, 0);"&gt;&lt;font style="color: rgb(153, 153, 0); font-weight: bold;"&gt;Web 2.0 from the perspective of Clustering information:&lt;br /&gt;&lt;/font&gt;&lt;font style="color: rgb(51, 51, 51);"&gt;Social bookmarking, tagging (folksonomy), permalink etc are ways to give an order to information spread&lt;/font&gt;&lt;/font&gt;&lt;font style="color: rgb(51, 51, 51);"&gt; across internet. A single institution can not do it, so the job is taken up by common users who tag information into labels that interest them. These labels help bring order to the information on internet, Sometimes these tags can also be used to search information on internet. Users also share there information in terms of bookmarks which is now popularly called social bookmarking (&lt;/font&gt;&lt;a href="http://del.icio.us/"&gt;del.icio.us&lt;/a&gt;&lt;font style="color: rgb(51, 51, 51);"&gt;) .These tags can be very useful when you are looking for information on internet.&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I hope  it gives you some information as to what are we looking at !!  Puprose of this blog is to expose ways of creating such applications practically and to use all aspects of web 2.0 to create a information rich and attractive web portal. We would look at technologies like AJAX, RSS/Atom  web services in great depth and from practical point of view .&lt;/font&gt;&lt;/font&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2200063935719624739-4100109383730204260?l=ajaxkarma.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://ajaxkarma.blogspot.com/feeds/4100109383730204260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2200063935719624739&amp;postID=4100109383730204260' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2200063935719624739/posts/default/4100109383730204260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2200063935719624739/posts/default/4100109383730204260'/><link rel='alternate' type='text/html' href='http://ajaxkarma.blogspot.com/2007/04/what-is-web-20_26.html' title='What is web 2.0 ?'/><author><name>Dipen Chaudhary</name><uri>http://www.blogger.com/profile/01702383506060460029</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
