<?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:blogger='http://schemas.google.com/blogger/2008' 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-11974021</id><updated>2018-08-28T13:52:58.521+05:30</updated><category term="comic"/><category term="lifeblob"/><category term="Live Search"/><category term="WTF"/><category term="autocomplete"/><category term="bangalore"/><category term="bcb5"/><category term="change"/><category term="custom url"/><category term="eclipse"/><category term="family"/><category term="family tree"/><category term="flash"/><category term="geni"/><category term="geoname"/><category term="gis"/><category term="java"/><category term="memcache"/><category term="morning ritual"/><category term="nephew"/><category term="personal"/><category term="printo"/><category term="redis"/><category term="shutterfly"/><category term="sql"/><category term="struts2"/><category term="traffic"/><category term="web 2.0"/><category term="windows"/><category term="yahoo photos"/><title type='text'>Rakesh Rajan&#39;s Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.rakeshxp.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default'/><link rel='alternate' type='text/html' href='http://blog.rakeshxp.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Rakesh Rajan</name><uri>http://www.blogger.com/profile/03829707239037942088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_-Ji5JXQSgdY/TLStxfM8ULI/AAAAAAAAFMs/SgjmISE8j38/S220/me.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>19</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-11974021.post-4129475816529762877</id><published>2010-11-30T17:20:00.002+05:30</published><updated>2010-11-30T23:27:13.361+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="change"/><category scheme="http://www.blogger.com/atom/ns#" term="lifeblob"/><category scheme="http://www.blogger.com/atom/ns#" term="printo"/><title type='text'>Change at lifeblob</title><content type='html'>&lt;a href=&quot;http://blog.lifeblob.com/wp-content/uploads/2010/11/lifeblob.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;http://blog.lifeblob.com/wp-content/uploads/2010/11/lifeblob.png&quot; /&gt;&lt;/a&gt;I still remember the day when I put in my papers at Trilogy over 3 years back to start &lt;a href=&quot;http://www.lifeblob.com/&quot;&gt;lifeblob&lt;/a&gt;. Since then, the journey that &lt;a href=&quot;http://www.pranavbhasin.com/&quot;&gt;Pranav&lt;/a&gt;, I and the rest of the team took, was nothing short of a&amp;nbsp;roller-coaster&amp;nbsp;ride! We had a fun filled and exciting period working on something that we believed so passionately about. I hope to share some of the insights and my learnings in the future.&lt;br /&gt;&lt;br /&gt;Last week lifeblob was acquired by Printo, and the details can be found &lt;a href=&quot;http://blog.lifeblob.com/2010/11/22/lifeblob-is-now-a-part-of-the-printo-family/&quot;&gt;here&lt;/a&gt;. &amp;nbsp;I am quite excited about this step that brings together the largest retail printing player in India and an elegant personalized&amp;nbsp;photo&amp;nbsp;merchandising platform, which results in a great and consistent customer experience when they visit Printo both online and offline.&lt;br /&gt;&lt;br /&gt;Post this change, the team has already started work to integrate and quickly launch&amp;nbsp;the platform for both online ( &lt;a href=&quot;http://printo.in/&quot;&gt;printo.in&lt;/a&gt; ) and offline (over 15 stores and increasing) &amp;nbsp;channels. &lt;br /&gt;&lt;br /&gt;If you need to reach out to me, you can email me at rakeshxp at gmail dot com or catch me on &lt;a href=&quot;http://twitter.com/xp&quot;&gt;@xp&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://blog.rakeshxp.com/feeds/4129475816529762877/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11974021&amp;postID=4129475816529762877' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default/4129475816529762877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default/4129475816529762877'/><link rel='alternate' type='text/html' href='http://blog.rakeshxp.com/2010/11/change-at-lifeblob.html' title='Change at lifeblob'/><author><name>Rakesh Rajan</name><uri>http://www.blogger.com/profile/03829707239037942088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_-Ji5JXQSgdY/TLStxfM8ULI/AAAAAAAAFMs/SgjmISE8j38/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11974021.post-8535795653248721543</id><published>2010-10-13T00:08:00.001+05:30</published><updated>2010-10-13T00:09:30.259+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="family"/><category scheme="http://www.blogger.com/atom/ns#" term="nephew"/><title type='text'>Today, I became an uncle! I have a nephew :)</title><content type='html'>&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;/div&gt;&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;&lt;a href=&quot;http://static1.lifeblob.com/lifeblob/images/medium/21824101/1b993eb4f5c14cfea1c01044e80d40f1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;281&quot; src=&quot;http://static1.lifeblob.com/lifeblob/images/medium/21824101/1b993eb4f5c14cfea1c01044e80d40f1.jpg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Baby boy born today at &lt;a href=&quot;http://www.thecradlebangalore.com/the_cradle.html&quot;&gt;Cradle&lt;/a&gt;. Both sister and&amp;nbsp;nephew are doing great!</content><link rel='replies' type='application/atom+xml' href='http://blog.rakeshxp.com/feeds/8535795653248721543/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11974021&amp;postID=8535795653248721543' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default/8535795653248721543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default/8535795653248721543'/><link rel='alternate' type='text/html' href='http://blog.rakeshxp.com/2010/10/today-i-became-uncle-i-have-nephew.html' title='Today, I became an uncle! I have a nephew :)'/><author><name>Rakesh Rajan</name><uri>http://www.blogger.com/profile/03829707239037942088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_-Ji5JXQSgdY/TLStxfM8ULI/AAAAAAAAFMs/SgjmISE8j38/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11974021.post-1373176601353356306</id><published>2010-09-14T23:06:00.002+05:30</published><updated>2010-09-14T23:09:47.800+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="autocomplete"/><category scheme="http://www.blogger.com/atom/ns#" term="java"/><category scheme="http://www.blogger.com/atom/ns#" term="lifeblob"/><category scheme="http://www.blogger.com/atom/ns#" term="redis"/><title type='text'>Auto Complete with Redis &amp; Java</title><content type='html'>Salvatore (&amp;nbsp;&lt;a href=&quot;http://twitter.com/antirez&quot;&gt;@antirez&lt;/a&gt;&amp;nbsp;Redis creator ) recently wrote a nice &lt;a href=&quot;http://antirez.com/post/autocomplete-with-redis.html&quot;&gt;article&lt;/a&gt; on implementing auto completion using Redis Set. Since we use redis at lifeblob and we have been thinking of enabling auto complete for some search options, &amp;nbsp;I came up with a java equivalent. You can grab it from &lt;a href=&quot;http://github.com/xp/jrediscomplete&quot;&gt;github&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Sample usage:&lt;br /&gt;&lt;script src=&quot;http://gist.github.com/579441.js?file=redis_autocomplete_java&quot;&gt;&lt;/script&gt;&lt;br /&gt;&lt;br /&gt;Note that I am using &lt;a href=&quot;http://github.com/xetorthio/jedis&quot;&gt;Jedis&lt;/a&gt; java library since that looks like the only java based redis library that supports ZRank.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rakeshxp.com/feeds/1373176601353356306/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11974021&amp;postID=1373176601353356306' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default/1373176601353356306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default/1373176601353356306'/><link rel='alternate' type='text/html' href='http://blog.rakeshxp.com/2010/09/auto-complete-with-redis-java.html' title='Auto Complete with Redis &amp; Java'/><author><name>Rakesh Rajan</name><uri>http://www.blogger.com/profile/03829707239037942088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_-Ji5JXQSgdY/TLStxfM8ULI/AAAAAAAAFMs/SgjmISE8j38/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11974021.post-4312171074785694574</id><published>2008-01-14T02:03:00.002+05:30</published><updated>2008-02-20T02:14:40.244+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="geoname"/><category scheme="http://www.blogger.com/atom/ns#" term="gis"/><category scheme="http://www.blogger.com/atom/ns#" term="sql"/><title type='text'>Reverse Geocoding Using  GeoName Data</title><content type='html'>&lt;span style=&quot;font-family:verdana;&quot;&gt;I have be using &lt;/span&gt;&lt;a style=&quot;font-family: verdana;&quot; href=&quot;http://download.geonames.org/export/dump/&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;GeoNames&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt; data for implementing reverse geocoding.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;It took me a while to get it working and thought of sharing the steps that I followed ( Postgres + Postgis ) to get the reverse geocoding work ( and it is fast! )&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;1) Created and loaded the table by following &lt;/span&gt;&lt;a style=&quot;font-family: verdana;&quot; href=&quot;http://forum.geonames.org/gforum/posts/list/67.page&quot;&gt;link &lt;/a&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;or &lt;/span&gt;&lt;a style=&quot;font-family: verdana;&quot; href=&quot;http://forum.geonames.org/gforum/posts/list/524.page&quot;&gt;link&lt;/a&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;2) Created a geometry column&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;SELECT AddGeometryColumn( &#39;public&#39;, &#39;geoname&#39;, &#39;latlon_point&#39;, 2163, &#39;POINT&#39;, 2 );&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;Note that I am using &lt;/span&gt;&lt;span style=&quot;font-weight: bold;font-family:verdana;&quot; &gt;2163 as SRID&lt;/span&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt; ( the unit is meter )&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;3) Populated the column&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;update geoname set latlon_point =&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;transform(GeomFromText(&#39;POINT(&#39; || longitude || &#39; &#39; || latitude || &#39;)&#39;,4326),2163)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;4) Created a &lt;/span&gt;&lt;span style=&quot;font-weight: bold;font-family:verdana;&quot; &gt;clustered gist index&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;CREATE INDEX geoname _latlon_place_index&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;ON geoname&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;USING gist&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;(latlon_point);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;ALTER TABLE geoname CLUSTER ON geoname _latlon_place_index;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;5) To find nearest 5 records (within 5 kms) for the given lat/long ( 12.97199/77.60483)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;SELECT * FROM geoname&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;WHERE  feature_class = &#39;P&#39;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;    and st_dwithin(latlon_point, transform(GeomFromText(&#39;POINT(77.60483 12.97199)&#39;,4326),2163),5000)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;    order by ST_Distance(latlon_point, transform(GeomFromText(&#39;POINT(77.60483 12.97199)&#39;,4326),2163))&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;    limit 5&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;The above query should be extremely fast if the gist index is created properly. One way to confirm whether is it using the index or not, is by looking at the query planner output :&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;&quot;Limit  (cost=9.82..9.82 rows=1 width=175)&quot;&lt;br /&gt;&quot;  -&gt;  Sort  (cost=9.82..9.82 rows=1 width=175)&quot;&lt;br /&gt;&quot;        Sort Key: st_distance(latlon_point, &#39;...&#39;::geometry)&quot;&lt;br /&gt;&quot;        -&gt;  Index Scan using geoname1_latlon_place_index on geoname1  (cost=0.00..9.81 rows=1 width=175)&quot;&lt;br /&gt;&quot;              Index Cond: (latlon_point &amp;amp;&amp;amp; &#39;..&#39;::geometry)&quot;&lt;br /&gt;&quot;              Filter: ((feature_class = &#39;P&#39;::bpchar) AND (latlon_point &amp;amp;&amp;amp; &#39;..&#39;::geometry) AND (&#39;..&#39;::geometry &amp;amp;&amp;amp; st_expand(latlon_point, 5000::double precision))&lt;br /&gt;&lt;br /&gt;As with any user generated data, there are dirty data present in this dump like duplicate place record, empty place name etc. Also since I am interested only in cities, I added a filter on feature_code = &#39;PPL&#39; and feature_class = &#39;P&#39;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;This is just the first pass, and I still need to do couple more processing for cases where the place name contains punctuation, duplicate places across state/country etc. I&#39;m calling it a night! The alarm clock is going to go off in just six hours.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family:verdana;&quot;&gt;-XP&lt;/span&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rakeshxp.com/feeds/4312171074785694574/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11974021&amp;postID=4312171074785694574' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default/4312171074785694574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default/4312171074785694574'/><link rel='alternate' type='text/html' href='http://blog.rakeshxp.com/2008/01/reverse-geocoding-using-geoname-data.html' title='Reverse Geocoding Using  GeoName Data'/><author><name>Rakesh Rajan</name><uri>http://www.blogger.com/profile/03829707239037942088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_-Ji5JXQSgdY/TLStxfM8ULI/AAAAAAAAFMs/SgjmISE8j38/S220/me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11974021.post-4166692073639527438</id><published>2007-11-14T03:04:00.000+05:30</published><updated>2007-11-14T03:07:27.638+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="bcb5"/><title type='text'>I&#39;ll be there @ BCB5</title><content type='html'>&lt;a href=&quot;http://www.barcampbangalore.org/&quot; title=&quot;Barcamp Bangalore 5 - Winter Edition&quot;&gt;&lt;img style=&quot;width: 439px; height: 142px;&quot; src=&quot;http://barcampbangalore.org/w/images/7/71/Bcb5_bethere.png&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rakeshxp.com/feeds/4166692073639527438/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11974021&amp;postID=4166692073639527438' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default/4166692073639527438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default/4166692073639527438'/><link rel='alternate' type='text/html' href='http://blog.rakeshxp.com/2007/11/ill-be-there-bcb5.html' title='I&#39;ll be there @ BCB5'/><author><name>Rakesh Rajan</name><uri>http://www.blogger.com/profile/03829707239037942088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_-Ji5JXQSgdY/TLStxfM8ULI/AAAAAAAAFMs/SgjmISE8j38/S220/me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11974021.post-1965230813944000853</id><published>2007-10-19T22:10:00.003+05:30</published><updated>2008-03-22T03:19:52.030+05:30</updated><title type='text'>LifeBlob is Live !!!</title><content type='html'>&lt;a href=&quot;http://www.lifeblob.com/&quot;&gt;We&lt;/a&gt; are feature complete and passed out invites to our first set of users!&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.lifeblob.com/xp&quot;&gt;My Timeline&lt;/a&gt;&lt;br /&gt;-XP</content><link rel='replies' type='application/atom+xml' href='http://blog.rakeshxp.com/feeds/1965230813944000853/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11974021&amp;postID=1965230813944000853' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default/1965230813944000853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default/1965230813944000853'/><link rel='alternate' type='text/html' href='http://blog.rakeshxp.com/2007/10/lifeblob-is-live.html' title='LifeBlob is Live !!!'/><author><name>Rakesh Rajan</name><uri>http://www.blogger.com/profile/03829707239037942088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_-Ji5JXQSgdY/TLStxfM8ULI/AAAAAAAAFMs/SgjmISE8j38/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11974021.post-4298076580546791257</id><published>2007-09-18T12:03:00.000+05:30</published><updated>2007-09-18T12:17:26.412+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="memcache"/><category scheme="http://www.blogger.com/atom/ns#" term="windows"/><title type='text'>Running Memcached on Windows</title><content type='html'>I was trying to run memcached server on windows as that is my current development OS. Unfortunately the memcached&#39;s windows port has given only source code for libevent ( a dependency) and it needs VC to compile :P. With obvious lack ( read: interest ) in VC tools, I set on a big google hunt for finding the windows build of libevent.&lt;br /&gt;&lt;br /&gt;I was finally able to get some luck from this &lt;a href=&quot;http://twistedmatrix.com/trac/ticket/1930&quot;&gt;site&lt;/a&gt;. Thanks to them, I was able to get memcached running successfully.&lt;br /&gt;&lt;br /&gt;I have attached the memcached ( 1.2.1 ) setup &lt;a href=&quot;http://www.rakeshxp.com-a.googlepages.com/memcached-1.2.1-win32.rar&quot;&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Sets to run the server&lt;br /&gt;1) Unzip the folder to any directory&lt;br /&gt;2) Within the folder, run &lt;span style=&quot;font-style: italic;&quot;&gt;memcached.exe -d install&lt;/span&gt; ( One time )&lt;br /&gt;3) For&lt;br /&gt;    starting the server: &lt;span style=&quot;font-style: italic;&quot;&gt;memcached.exe -d start&lt;/span&gt;&lt;br /&gt;    stopping the server: &lt;span style=&quot;font-style: italic;&quot;&gt;memcached.exe -d stop&lt;/span&gt;&lt;br /&gt;4) To uninstall the service, run &lt;span style=&quot;font-style: italic;&quot;&gt;memcached.exe -d uninstall&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;You can also run &lt;span style=&quot;font-style: italic;&quot;&gt;memcached.exe -h&lt;/span&gt; to find all the properties that can be configured.&lt;br /&gt;&lt;br /&gt;-XP</content><link rel='replies' type='application/atom+xml' href='http://blog.rakeshxp.com/feeds/4298076580546791257/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11974021&amp;postID=4298076580546791257' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default/4298076580546791257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default/4298076580546791257'/><link rel='alternate' type='text/html' href='http://blog.rakeshxp.com/2007/09/running-memcached-on-windows.html' title='Running Memcached on Windows'/><author><name>Rakesh Rajan</name><uri>http://www.blogger.com/profile/03829707239037942088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_-Ji5JXQSgdY/TLStxfM8ULI/AAAAAAAAFMs/SgjmISE8j38/S220/me.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11974021.post-5784042505321189112</id><published>2007-08-31T13:57:00.000+05:30</published><updated>2007-08-31T14:00:07.990+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="comic"/><title type='text'>Comic</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://imgs.xkcd.com/comics/commitment.png&quot;&gt;&lt;img style=&quot;cursor: pointer; width: 530px; height: 168px;&quot; src=&quot;http://imgs.xkcd.com/comics/commitment.png&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rakeshxp.com/feeds/5784042505321189112/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11974021&amp;postID=5784042505321189112' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default/5784042505321189112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default/5784042505321189112'/><link rel='alternate' type='text/html' href='http://blog.rakeshxp.com/2007/08/comic_31.html' title='Comic'/><author><name>Rakesh Rajan</name><uri>http://www.blogger.com/profile/03829707239037942088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_-Ji5JXQSgdY/TLStxfM8ULI/AAAAAAAAFMs/SgjmISE8j38/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11974021.post-6503621935505855277</id><published>2007-08-23T00:31:00.000+05:30</published><updated>2007-08-23T00:36:31.317+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="comic"/><title type='text'>Comic</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://imgs.xkcd.com/comics/names.png&quot;&gt;&lt;img style=&quot;cursor: pointer; width: 400px;&quot; src=&quot;http://imgs.xkcd.com/comics/names.png&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://imgs.xkcd.com/comics/names.png&quot;&gt;&lt;br /&gt;&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rakeshxp.com/feeds/6503621935505855277/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11974021&amp;postID=6503621935505855277' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default/6503621935505855277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default/6503621935505855277'/><link rel='alternate' type='text/html' href='http://blog.rakeshxp.com/2007/08/comic.html' title='Comic'/><author><name>Rakesh Rajan</name><uri>http://www.blogger.com/profile/03829707239037942088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_-Ji5JXQSgdY/TLStxfM8ULI/AAAAAAAAFMs/SgjmISE8j38/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11974021.post-4515520552721012368</id><published>2007-08-22T22:25:00.000+05:30</published><updated>2007-08-27T22:15:12.776+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="shutterfly"/><category scheme="http://www.blogger.com/atom/ns#" term="yahoo photos"/><title type='text'>Excellent Y! Support</title><content type='html'>The closure &lt;a href=&quot;http://new.photos.yahoo.com/&quot;&gt;Y! photo&#39;s&lt;/a&gt; was indeed a bad news. I was totally in love with their interface and obviously unlimited storage:P  The day the news came in, I decided to move my photos ( &gt; 2 GB ) quickly ( read: bad judgment )  to flickr.  The decision was pretty much based on Flickr&#39;s brand name over other options. After the image transfer, I realized that I would have been better off using either &lt;a href=&quot;http://www.shutterfly.com/&quot;&gt;Shutterfly&lt;/a&gt;/SnapFish service which offers unlimited storage.&lt;br /&gt;&lt;br /&gt;But as expected, after doing the photo transfer to Flickr, my Y! photo account got locked. ( It was mentioned in their FAQ that the transfer is a one time only operation). I shot a mail to Y! support ( with the least expectation ) on whether it is possible for them to reactivate my Y! account so that I could migrate to another photo service.&lt;br /&gt;&lt;br /&gt;I received a mail from their support within 2 days and was a positive reply :)&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;Hello,&lt;br /&gt;&lt;br /&gt;Thank you for writing to Yahoo! Photos.&lt;br /&gt;&lt;br /&gt;Thank you for contacting us regarding your attempted move of your Yahoo! Photos to another service. We are very sorry to hear that you are having problems moving to the affiliate of your choice.&lt;br /&gt;&lt;br /&gt;We have released your Yahoo! Photos account so that you can attempt the move again. If you are having continuing problems moving to the same affiliate, you may want to try moving to a different affiliate or simply downloading your images to your computer yourself and then manually uploading them to the affiliate of your choice.&lt;br /&gt;&lt;br /&gt;If you have any additional questions or concerns please let us know as soon as possible as we&#39;d be more than happy to help!&lt;br /&gt;&lt;br /&gt; -  http://help.yahoo.com/l/us/yahoo/photos/&lt;br /&gt;&lt;br /&gt;We appreciate your time in writing to us -- your input helps us to identify ways to help make this the easiest and most hassle-free way to transition all of your favorite photos to one of these great services above!&lt;br /&gt;&lt;br /&gt;Thank you again for contacting Yahoo! Photos.&lt;br /&gt;&lt;br /&gt;Regards,&lt;br /&gt;&lt;br /&gt;Jamie Lynn&lt;br /&gt;&lt;br /&gt;Yahoo! Photos Customer Care&lt;/span&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;This kind of support is truly amazing and very much appreciated!&lt;br /&gt;&lt;br /&gt;PS: I moved my photos to &lt;a href=&quot;http://rakeshxp.shutterfly.com/&quot;&gt;ShutterFly&lt;/a&gt;. My new preference is Google Photos but sadly they don&#39;t provide &quot;free&quot; unlimited storage :(</content><link rel='replies' type='application/atom+xml' href='http://blog.rakeshxp.com/feeds/4515520552721012368/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11974021&amp;postID=4515520552721012368' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default/4515520552721012368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default/4515520552721012368'/><link rel='alternate' type='text/html' href='http://blog.rakeshxp.com/2007/08/excellent-y-support.html' title='Excellent Y! Support'/><author><name>Rakesh Rajan</name><uri>http://www.blogger.com/profile/03829707239037942088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_-Ji5JXQSgdY/TLStxfM8ULI/AAAAAAAAFMs/SgjmISE8j38/S220/me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11974021.post-5481905566270048589</id><published>2007-08-17T03:45:00.000+05:30</published><updated>2007-08-17T04:01:12.870+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="custom url"/><category scheme="http://www.blogger.com/atom/ns#" term="struts2"/><title type='text'>Struts2 + Custom URLs</title><content type='html'>For the web application that I was building using Struts, I needed custom ( read: cool ) URLs.&lt;br /&gt;&lt;br /&gt;Traditionally, struts URL would be of the format&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;http://www.myapp.com/login.do &lt;/span&gt;&lt;br /&gt;where &lt;span style=&quot;font-style: italic;&quot;&gt;do&lt;/span&gt; is the action extension.&lt;br /&gt;&lt;br /&gt;But rather, I wanted a clean URL like &lt;span style=&quot;font-weight: bold;&quot;&gt;http://www.myapp.com/login&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To achieve this, I had to do the following&lt;br /&gt;   &lt;br /&gt;   -&gt;   In my custom struts.xml, I added a line which overrides the default ActionMapper class                    &lt;span style=&quot;font-style: italic;&quot;&gt;&lt;constant name=&quot;struts.mapper.class&quot; value=&quot;customclass&quot;&gt;&lt;br /&gt;&lt;br /&gt;   -&gt;  &lt;/constant&gt;&lt;/span&gt;Write the custom class which should extend ActionMapper&lt;br /&gt;&lt;br /&gt;With a custom Mapper Class, the scope of formats of URL is limited only by imagination :P&lt;br /&gt;To take up an example, lets say we want to have a &quot;clean&quot;  search URL&lt;br /&gt;        &lt;span style=&quot;font-weight: bold;&quot;&gt;http://www.myapp.com/search/abc+xyz&lt;br /&gt;&lt;/span&gt;To achieve the above, we need the following&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Action class called &lt;span style=&quot;font-style: italic;&quot;&gt;Search&lt;/span&gt; and corresponding function called &lt;span style=&quot;font-style: italic;&quot;&gt;getResults(). &lt;/span&gt;This class also needs to implement ServletRequestAware to get hold of the ServletRequest ( which would contain the search parameters )&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;/span&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;In the custom Action Mapper Class, we would need to use regex ( split on &quot;/&quot; ) to understand the URL and if we find the first token is &quot;search&quot;, we could set&lt;/li&gt;&lt;/ul&gt;                       &lt;span style=&quot;font-style: italic;&quot;&gt;actionMapping.setNamespace(namespace);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;                   actionMapping.setName(&quot;search&quot;);&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;                   actionMapping.setMethod(&quot;getResults&quot;);&lt;br /&gt;                  request.setAttribute(SEARCH_KEY, searchParameters);&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;-XP&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rakeshxp.com/feeds/5481905566270048589/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11974021&amp;postID=5481905566270048589' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default/5481905566270048589'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default/5481905566270048589'/><link rel='alternate' type='text/html' href='http://blog.rakeshxp.com/2007/08/struts2-custom-urls.html' title='Struts2 + Custom URLs'/><author><name>Rakesh Rajan</name><uri>http://www.blogger.com/profile/03829707239037942088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_-Ji5JXQSgdY/TLStxfM8ULI/AAAAAAAAFMs/SgjmISE8j38/S220/me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11974021.post-8963683121124216972</id><published>2007-04-03T15:51:00.000+05:30</published><updated>2007-04-03T15:54:36.379+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="Live Search"/><category scheme="http://www.blogger.com/atom/ns#" term="WTF"/><title type='text'>MS Live Search WTF</title><content type='html'>Check out the results for &quot;&lt;a href=&quot;http://search.live.com/results.aspx?q=how+long+does+it+take+to+get+a+patent&amp;amp;src=IE-SearchBox&quot;&gt;how long does it take to get a patent&lt;/a&gt;&quot; on MS Live Search ( roftl ).&lt;br /&gt;&lt;br /&gt;Looks like the live team is doing a great job in catching up google :P</content><link rel='replies' type='application/atom+xml' href='http://blog.rakeshxp.com/feeds/8963683121124216972/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11974021&amp;postID=8963683121124216972' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default/8963683121124216972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default/8963683121124216972'/><link rel='alternate' type='text/html' href='http://blog.rakeshxp.com/2007/04/ms-live-search-wtf.html' title='MS Live Search WTF'/><author><name>Rakesh Rajan</name><uri>http://www.blogger.com/profile/03829707239037942088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_-Ji5JXQSgdY/TLStxfM8ULI/AAAAAAAAFMs/SgjmISE8j38/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11974021.post-2086046141208983021</id><published>2007-02-21T13:10:00.000+05:30</published><updated>2008-12-09T16:31:05.810+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="bangalore"/><category scheme="http://www.blogger.com/atom/ns#" term="traffic"/><title type='text'>Funny Traffic Signal</title><content type='html'>&lt;span style=&quot;font-family: arial;&quot;&gt;Encountered a weired traffic signal near RajajiNagar Entrance. Was wondering what to do next: &quot;Jump&quot; the signal or face the wrath of the vehicles behind me :P&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a style=&quot;font-family: arial;&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://3.bp.blogspot.com/_-Ji5JXQSgdY/Rdv4dozjUKI/AAAAAAAAACM/EYRf7DQ7sqs/s1600-h/Image152.jpg&quot;&gt;&lt;img style=&quot;cursor: pointer;&quot; src=&quot;http://3.bp.blogspot.com/_-Ji5JXQSgdY/Rdv4dozjUKI/AAAAAAAAACM/EYRf7DQ7sqs/s320/Image152.jpg&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5033890196570198178&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;PS: I had taken the pic using my phone ( Nokia 6270 ) without flash and while moving and hence the bad quality ;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;-XP&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rakeshxp.com/feeds/2086046141208983021/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11974021&amp;postID=2086046141208983021' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default/2086046141208983021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default/2086046141208983021'/><link rel='alternate' type='text/html' href='http://blog.rakeshxp.com/2007/02/encountered-weired-traffic-signal-near.html' title='Funny Traffic Signal'/><author><name>Rakesh Rajan</name><uri>http://www.blogger.com/profile/03829707239037942088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_-Ji5JXQSgdY/TLStxfM8ULI/AAAAAAAAFMs/SgjmISE8j38/S220/me.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://3.bp.blogspot.com/_-Ji5JXQSgdY/Rdv4dozjUKI/AAAAAAAAACM/EYRf7DQ7sqs/s72-c/Image152.jpg" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11974021.post-2346422003976914885</id><published>2007-02-21T01:24:00.000+05:30</published><updated>2008-12-09T16:31:05.907+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="family tree"/><category scheme="http://www.blogger.com/atom/ns#" term="flash"/><category scheme="http://www.blogger.com/atom/ns#" term="geni"/><category scheme="http://www.blogger.com/atom/ns#" term="web 2.0"/><title type='text'>Family Tree</title><content type='html'>&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;font-family:arial;&quot;&gt;I am very bad at remembering detailed family relations and for that matter even names :P When ever I visit my native place (which is very rare) with my parents, my parents/I make sure that I get a &quot;crash&quot; course on all the relations again ;). So being a tech guy, I wanted a tech solution and hence entered the domain of family tree. For long I had be wanting to find a site that would really simplify creation of the family tree. I had  tried various sites like &lt;/span&gt;&lt;a style=&quot;font-family: arial;&quot; href=&quot;http://www.ancestry.com/&quot;&gt;Ancestry&lt;/a&gt;&lt;span style=&quot;font-family:arial;&quot;&gt;, &lt;/span&gt;&lt;a style=&quot;font-family: arial;&quot; href=&quot;http://tribalpages.com/&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_0&quot;&gt;TribalPages&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family:arial;&quot;&gt; etc, but none of them allowed me an &quot;easy&quot; or &quot;flexible&quot; way to create a family tree :(  Couple of hrs back, &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_1&quot;&gt;Pavan&lt;/span&gt; ( Friend and Colleague ), pinged me with the URL to this brand new &quot;web 2.0 family tree&quot;! &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family:arial;&quot;&gt;It is called &lt;/span&gt;&lt;a style=&quot;font-family: arial; font-weight: bold;&quot; href=&quot;http://www.geni.com/&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_2&quot;&gt;Geni&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-family:arial;&quot;&gt;( That is one short name!). The first thing that strike me was with the ease it allowed    &lt;/span&gt;&lt;a style=&quot;font-family: arial;&quot; onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://www.geni.com/images/GeniBeta.jpg&quot;&gt;&lt;img style=&quot;margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 189px; height: 69px;&quot; src=&quot;http://www.geni.com/images/GeniBeta.jpg&quot; alt=&quot;&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;span style=&quot;font-family:arial;&quot;&gt; me to create an account ( No email validation to start off! But then we need to validate later). The &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_3&quot;&gt;UI&lt;/span&gt; is flash based and mind blowing. The whole experience of creating family tree is taken to the next level. It was so much of fun that within 30&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_4&quot;&gt; mins&lt;/span&gt; or so, I had added over 20+ members to my tree. The product is still in &quot;beta&quot; and has couple of privacy issues to be answered ( Like mother&#39;s maiden name being shown, access control etc). But in all, I really liked the whole user experience. I recommend that you take a shot at this.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;A sample tree&lt;/span&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/_-Ji5JXQSgdY/RdtXuIzjUJI/AAAAAAAAACA/pCJz6HBLiNI/s1600-h/geni.JPG&quot;&gt;&lt;img style=&quot;cursor: pointer;&quot; src=&quot;http://1.bp.blogspot.com/_-Ji5JXQSgdY/RdtXuIzjUJI/AAAAAAAAACA/pCJz6HBLiNI/s320/geni.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5033713458665967762&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family:arial;&quot;&gt;I also manage to find couple of other new Family Tree service&lt;a href=&quot;http://www.famster.com/&quot;&gt;&lt;br /&gt;&lt;/a&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;http://www.famster.com/&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_5&quot;&gt;Famster&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://zooof.com/&quot;&gt;&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_6&quot;&gt;Zooof&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;But none the above has an &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_7&quot;&gt;UI&lt;/span&gt; that is as intuitive as the &lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_8&quot;&gt;Geni&#39;s&lt;/span&gt; one&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Update&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;Check out the way they &lt;a href=&quot;http://praveenrajan.com/blog/2007/01/smart-way-to-get-users-to-complete.html&quot;&gt;incite users&lt;/a&gt; to complete the profile.&lt;/li&gt;&lt;/ul&gt;-&lt;span class=&quot;blsp-spelling-error&quot; id=&quot;SPELLING_ERROR_9&quot;&gt;XP&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rakeshxp.com/feeds/2346422003976914885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11974021&amp;postID=2346422003976914885' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default/2346422003976914885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default/2346422003976914885'/><link rel='alternate' type='text/html' href='http://blog.rakeshxp.com/2007/02/family-tree.html' title='Family Tree'/><author><name>Rakesh Rajan</name><uri>http://www.blogger.com/profile/03829707239037942088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_-Ji5JXQSgdY/TLStxfM8ULI/AAAAAAAAFMs/SgjmISE8j38/S220/me.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_-Ji5JXQSgdY/RdtXuIzjUJI/AAAAAAAAACA/pCJz6HBLiNI/s72-c/geni.JPG" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11974021.post-468492523463089546</id><published>2007-02-20T16:52:00.000+05:30</published><updated>2008-12-09T16:31:06.237+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="eclipse"/><title type='text'>Eclipse Callisto</title><content type='html'>&lt;span style=&quot;font-family:arial;&quot;&gt;I had been using Eclipse 3.1 for a long time. So thought I should give 3.2 a shot at. Eclipse site &lt;a href=&quot;http://www.eclipse.org/callisto/&quot;&gt;mentioned&lt;/a&gt; about &quot;Callisto&quot;.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family:arial;&quot;&gt;In their words&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family:arial;&quot;&gt;&lt;/span&gt;&lt;blockquote&gt;&lt;span style=&quot;font-family:arial;&quot;&gt;Callisto is about improving the productivity of the developers working on top of Eclipse frameworks by providing a more transparent and predictable development cycle. By releasing &lt;/span&gt;&lt;a style=&quot;font-family: arial;&quot; href=&quot;http://www.eclipse.org/callisto/callistoprojects.php&quot;&gt;10 projects&lt;/a&gt;&lt;span style=&quot;font-family:arial;&quot;&gt; at the same time, the goal is to eliminate uncertainty about version compatibility and make it easier to incorporate multiple projects into your environment.&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;&lt;span style=&quot;font-family:arial;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;font-family:arial;&quot;&gt;The best part I like was the customization that it allows to choose features from various projects. Further googling landed me on &lt;a href=&quot;http://yoxos.com/en.php/&quot;&gt;Yoxos&lt;/a&gt;. They provide an &lt;a href=&quot;http://www.yoxos.com/ondemand/&quot;&gt;excellent UI&lt;/a&gt; ( &lt;/span&gt;&lt;span style=&quot;font-family:arial;&quot;&gt; Rich AJAX Platform&lt;/span&gt;&lt;span style=&quot;font-family:arial;&quot;&gt; )create a custom Eclipse installation.&lt;br /&gt;&lt;/span&gt;&lt;ol&gt;&lt;li&gt;Allows to create/share custom scenarios ( Eclipse installation)&lt;/li&gt;&lt;li&gt;Allows to pick standard features and 3rd party plugins.&lt;/li&gt;&lt;li&gt;Provides Yoxos Install Manager (YIM) which is an eclipse based update mechanism.&lt;/li&gt;&lt;li&gt;Provides 3 months free subscription. After that YIM will not work.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;I created a custom ( &lt;span style=&quot;font-weight: bold;&quot;&gt;warning&lt;/span&gt;: 500 MB+ ) Eclipse Installation ( I added every plugin that I could think of:P ). It is accessible out &lt;a href=&quot;http://download5.yoxos.com/eclipse/eclipse-win32-c9b009da.zip&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Screenshots of features for my custom Eclipse&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://2.bp.blogspot.com/_-Ji5JXQSgdY/RdrkrozjUGI/AAAAAAAAABY/xwjmfFS2OAE/s1600-h/Plugin_List1.JPG&quot;&gt;&lt;img style=&quot;cursor: pointer;&quot; src=&quot;http://2.bp.blogspot.com/_-Ji5JXQSgdY/RdrkrozjUGI/AAAAAAAAABY/xwjmfFS2OAE/s320/Plugin_List1.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5033586971879100514&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://3.bp.blogspot.com/_-Ji5JXQSgdY/Rdrkr4zjUHI/AAAAAAAAABg/VjCnCj1Znkk/s1600-h/Plugin_List2.JPG&quot;&gt;&lt;img style=&quot;cursor: pointer;&quot; src=&quot;http://3.bp.blogspot.com/_-Ji5JXQSgdY/Rdrkr4zjUHI/AAAAAAAAABg/VjCnCj1Znkk/s320/Plugin_List2.JPG&quot; alt=&quot;&quot; id=&quot;BLOGGER_PHOTO_ID_5033586976174067826&quot; border=&quot;0&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://1.bp.blogspot.com/_-Ji5JXQSgdY/RdrlWYzjUII/AAAAAAAAABo/Ni8CGtYLe_s/s1600-h/eclipse_logo.JPG&quot;&gt;&lt;img style=&quot;cursor:pointer; cursor:hand;&quot; src=&quot;http://1.bp.blogspot.com/_-Ji5JXQSgdY/RdrlWYzjUII/AAAAAAAAABo/Ni8CGtYLe_s/s320/eclipse_logo.JPG&quot; border=&quot;0&quot; alt=&quot;&quot;id=&quot;BLOGGER_PHOTO_ID_5033587706318508162&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style=&quot;font-family:arial;&quot;&gt;&lt;br /&gt;&lt;/span&gt;-XP</content><link rel='replies' type='application/atom+xml' href='http://blog.rakeshxp.com/feeds/468492523463089546/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11974021&amp;postID=468492523463089546' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default/468492523463089546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default/468492523463089546'/><link rel='alternate' type='text/html' href='http://blog.rakeshxp.com/2007/02/eclipse-callisto.html' title='Eclipse Callisto'/><author><name>Rakesh Rajan</name><uri>http://www.blogger.com/profile/03829707239037942088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_-Ji5JXQSgdY/TLStxfM8ULI/AAAAAAAAFMs/SgjmISE8j38/S220/me.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_-Ji5JXQSgdY/RdrkrozjUGI/AAAAAAAAABY/xwjmfFS2OAE/s72-c/Plugin_List1.JPG" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11974021.post-9147787259778188401</id><published>2007-02-18T22:15:00.000+05:30</published><updated>2007-02-18T22:27:49.379+05:30</updated><category scheme="http://www.blogger.com/atom/ns#" term="morning ritual"/><category scheme="http://www.blogger.com/atom/ns#" term="personal"/><title type='text'>Resolutions</title><content type='html'>&lt;span style=&quot;font-family: arial;&quot;&gt;Have been thinking a lot to make life more exciting. Decided to &quot;try&quot; to do 2 things from now on&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;1) Wake up early and define a morning ritual ( Thanks to this nice read by &lt;/span&gt;&lt;a style=&quot;font-family: arial;&quot; href=&quot;http://www.stevepavlina.com/blog/2005/05/how-to-become-an-early-riser/&quot;&gt;Steve Pavlina&lt;/a&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;).&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;        I have been very erratic w.r.t to sleeping. These days I sleep at 2-3 and wake up at 11. I end up reaching office only around 2-3 :(  Also alarm never helps :P.  Need to bring some order back into my life. So decide to start waking up around 6. Yoga sounds a good idea.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;2) Start blogging ;)&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;      Set up my blogger account&#39;s template, widgets etc, yest night. Still not very happy about the template. Will change once I get hold of a nice template ( I really liked this &lt;/span&gt;&lt;a style=&quot;font-family: arial;&quot; href=&quot;http://cangooglehearme.com/&quot;&gt;page &lt;/a&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;look )&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-family: arial;&quot;&gt;-XP&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rakeshxp.com/feeds/9147787259778188401/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11974021&amp;postID=9147787259778188401' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default/9147787259778188401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default/9147787259778188401'/><link rel='alternate' type='text/html' href='http://blog.rakeshxp.com/2007/02/resolutions.html' title='Resolutions'/><author><name>Rakesh Rajan</name><uri>http://www.blogger.com/profile/03829707239037942088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_-Ji5JXQSgdY/TLStxfM8ULI/AAAAAAAAFMs/SgjmISE8j38/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11974021.post-112939611925883055</id><published>2005-10-15T22:37:00.000+05:30</published><updated>2005-11-14T20:28:40.226+05:30</updated><title type='text'>Simility Launched !!!</title><content type='html'>&lt;a href=&quot;http://simility.com&quot;&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Simility &lt;/span&gt;&lt;/a&gt;Beta has finally been launched! &lt;br /&gt;&lt;br /&gt; -&gt; simility is the best way to find similar content on the web.&lt;br /&gt; -&gt; simility toolbar recommends web pages that are similar to the page you are currntly viewing.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;simility is easy&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The simility toobar is the fast, easy way to find great new content on the web. With just the click of the &quot;recommend&quot; button, we suggest new pages similar to the page you are currently viewing.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Better than search&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;simility is better than search engines because the recommended pages are generated from other users. We only show you recommendations of sites that other users find interesting and helpful, so you don&#39;t need to spend time paging through hundreds of search results.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Simility&quot;&gt;WikiPedia Article&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://blog.rakeshxp.com/feeds/112939611925883055/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11974021&amp;postID=112939611925883055' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default/112939611925883055'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default/112939611925883055'/><link rel='alternate' type='text/html' href='http://blog.rakeshxp.com/2005/10/simility-launched.html' title='Simility Launched !!!'/><author><name>Rakesh Rajan</name><uri>http://www.blogger.com/profile/03829707239037942088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_-Ji5JXQSgdY/TLStxfM8ULI/AAAAAAAAFMs/SgjmISE8j38/S220/me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11974021.post-112811085568335796</id><published>2005-10-01T01:35:00.000+05:30</published><updated>2005-10-01T01:37:35.686+05:30</updated><title type='text'>BikeWala Launched</title><content type='html'>One of our TU project : &lt;a href=&quot;http://bikewala.com&quot;&gt;BikeWala&lt;/a&gt; has been launched.&lt;br /&gt;It is one of the best places to buy motorbikes in India. It was launched 2 days back. So far it has got over 1000 hits!!! Have a look at the site</content><link rel='replies' type='application/atom+xml' href='http://blog.rakeshxp.com/feeds/112811085568335796/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11974021&amp;postID=112811085568335796' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default/112811085568335796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default/112811085568335796'/><link rel='alternate' type='text/html' href='http://blog.rakeshxp.com/2005/09/bikewala-launched.html' title='BikeWala Launched'/><author><name>Rakesh Rajan</name><uri>http://www.blogger.com/profile/03829707239037942088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_-Ji5JXQSgdY/TLStxfM8ULI/AAAAAAAAFMs/SgjmISE8j38/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-11974021.post-111282453153000335</id><published>2005-04-07T03:25:00.000+05:30</published><updated>2005-08-20T13:31:27.653+05:30</updated><title type='text'>Google Map</title><content type='html'>I was amazed at the way Google Maps works! It is way faster than Yahoo or MSN or MapQuest ( I think www.map.search.ch is equally fast, i like the zooming effect )&lt;br /&gt;&lt;br /&gt;Google Maps uses two built-in browser components:&lt;br /&gt;-&gt; XMLHttpRequest ( very famous, used in Google Suggest) and&lt;br /&gt;-&gt; XSLTProcessor&lt;br /&gt;&lt;br /&gt;Google Map communicates with the server  to get the map tiles and search results&lt;br /&gt;It basically gets 3 types of images from the server ( based on the selection)&lt;br /&gt;&lt;br /&gt;1)  JPEG Image in case of satellite image&lt;br /&gt;It sends a GET request to Keyhole Server 2.4 at kh.google.com&lt;br /&gt;Sample Get request&lt;br /&gt;&lt;a href=&quot;http://kh.google.com/kh?v=1&amp;t=tqtrtsttrqqtrtq&quot;&gt;http://kh.google.com/kh?v=1&amp;amp;t=tqtrtsttrqqtrtq&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Value of&lt;br /&gt; v = No idea, seems to work with different values, maybe for some internal usage&lt;br /&gt; t = direction to be taken to get the desired JPEG image tile&lt;br /&gt;&lt;br /&gt;       &lt;table style=&quot;width: 100px; height: 100px;&quot; border=&quot;1&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot;&gt;&lt;br /&gt;          &lt;tbody&gt;&lt;tr&gt;&lt;br /&gt;             &lt;td&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;Q&lt;/span&gt;&lt;/td&gt;&lt;br /&gt;             &lt;td&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;R&lt;/span&gt;&lt;/td&gt;&lt;br /&gt;          &lt;/tr&gt;&lt;br /&gt;          &lt;tr&gt;&lt;br /&gt;             &lt;td&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;T&lt;/span&gt;&lt;/td&gt;&lt;br /&gt;             &lt;td&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;S&lt;/span&gt;&lt;/td&gt;&lt;br /&gt;          &lt;/tr&gt;&lt;br /&gt;      &lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;-&gt; t can have maximum 15 characters ( i.e 15 zoom levels)&lt;br /&gt;-&gt; suppose intially t = tqt ( so it will fetch 4 tiles, for top-left, top-right, bottom-left, bottom-right ) next time if t = tqtt , it means fetch the bottom-left tile and zoom it ( ie it will again fetch 4 more tiles )&lt;br /&gt;&lt;br /&gt;2)  GIF Image in case of map image&lt;br /&gt;It sends a GET request to Keyhole Server 2.4 at mt.google.com&lt;br /&gt;Sample Get request&lt;br /&gt;&lt;a href=&quot;http://mt.google.com/mt?v=.3&amp;x=-2360&amp;amp;amp;y=-1033&amp;zoom=3&quot;&gt;http://mt.google.com/mt?v=.3&amp;amp;amp;x=-2360&amp;y=-1033&amp;amp;zoom=3&lt;/a&gt;&lt;br /&gt;where,&lt;br /&gt;v = No Idea&lt;br /&gt;x = X coordinate of the tile to be fetched&lt;br /&gt;y = Y coordinate of the tile to be fetched&lt;br /&gt;zoom = zoom level ( 1 – 5 )&lt;br /&gt;So it is possible to fetch the entire image database of Google maps, if we write a script which will fetch all image tiles for a given zoom level but obviously it is copyrighted!&lt;br /&gt;&lt;br /&gt;3) PNG Image is returned which is basically the route between 2 locations (It is a white image with the route displayed in blue) and it is superimposed onto the image tiles.&lt;br /&gt;&lt;br /&gt;It is again a GET request to Geocode/Map Server&lt;br /&gt;&lt;br /&gt;Sample request:&lt;br /&gt;&lt;a href=&quot;http://www.google.com/maplinedraw?width=144&amp;height=260&amp;amp;amp;path=%7BF%7BMGBGKZONVPVr@hA@@r@f@v@j@JFJJ?RQN?V?B?L?R@@?L?x@?ZA??JO?@LH??X%7DoR&quot;&gt;http://www.google.com/maplinedraw?width=144&amp;height=260&amp;amp;path={F{MGBGKZONVPVr@hA@@r@f@v@j@JFJJ?RQN?V?B?L?R@@?L?x@?ZA??JO?@LH??X}oR&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;where,&lt;br /&gt;width/height = width/height of the resulting PNG file.&lt;br /&gt;Path = yet to figure out ( i think the encoded string should contain the source and destination location ???? )&lt;br /&gt;&lt;br /&gt;When we search for any city, say New York, it sends a HTTP GET request to mfe server. e.g.&lt;br /&gt;&lt;a href=&quot;http://maps.google.com/maps?q=new+york&amp;btnG=Search&amp;amp;sll=33.748889%2C-84.388056&amp;sspn=0.102539%2C0.230971&amp;amp;amp;z=5&amp;t=&amp;amp;f=q&amp;output=js&amp;amp;hl=en&quot;&gt;http://maps.google.com/maps?q=new+york&amp;btnG=Search&amp;amp;sll=33.748889%2C-84.388056&amp;sspn=0.102539%2C0.230971&amp;amp;amp;z=5&amp;t=&amp;amp;f=q&amp;output=js&amp;amp;hl=en&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;where,&lt;br /&gt;q = name of the location&lt;br /&gt;sll = latitude &amp; longitude&lt;br /&gt;sspn = span size&lt;br /&gt;z = zoom level&lt;br /&gt;the output of such a request is XML&lt;br /&gt;&lt;br /&gt;&amp;lt;?xml version=&quot;1.0&quot;?&amp;gt;&lt;br /&gt;&amp;lt;page&amp;gt;&lt;br /&gt;&amp;lt;title&amp;gt;new york&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;lt;query&amp;gt;new york&amp;lt;/query&amp;gt;&lt;br /&gt;&amp;lt;request&amp;gt;&lt;br /&gt;   &amp;lt;url&amp;gt;&lt;br /&gt;       http://maps.google.com/maps?q=new+york&amp;&lt;br /&gt;       btnG=Search&amp;amp;&lt;br /&gt;       sll=33.748889%2C-84.388056&amp;&lt;br /&gt;       sspn=0.102539%2C0.230971&amp;amp;amp;amp;amp;amp;&lt;br /&gt;       z=5&amp;&lt;br /&gt;       t=&amp;amp;&lt;br /&gt;       f=q&amp;&lt;br /&gt;       hl=en&amp;amp;&lt;br /&gt;       num=10&lt;br /&gt;   &amp;lt;/url&amp;gt;&lt;br /&gt;&amp;lt;query&amp;gt;new york&amp;lt;/query&amp;gt;&lt;br /&gt;   &amp;lt;/request&amp;gt;&lt;br /&gt;       &amp;lt;center lat=&quot;40.714167&quot; lng=&quot;-74.006389&quot;/&amp;gt;&lt;br /&gt;       &amp;lt;span lat=&quot;0.089988&quot; lng=&quot;-0.118722&quot;/&amp;gt;&lt;br /&gt;       &amp;lt;overlay panelStyle=&quot;/maps?file=gp&amp;hl=en&quot;&amp;gt;&lt;br /&gt;           &amp;lt;location infoStyle=&quot;/maps?file=gi&amp;hl=en&quot; id=&quot;A&quot;&amp;gt;&lt;br /&gt;               &amp;lt;point lat=&quot;40.714167&quot; lng=&quot;-74.006389&quot;/&amp;gt;&lt;br /&gt;               &amp;lt;icon class=&quot;noicon&quot;/&amp;gt;&lt;br /&gt;               &amp;lt;info&amp;gt;&lt;br /&gt;                   &amp;lt;address&amp;gt;&lt;br /&gt;                           &amp;lt;line&amp;gt;&lt;br /&gt;                                   New York, NY&lt;br /&gt;                           &amp;lt;/line&amp;gt;&lt;br /&gt;                   &amp;lt;/address&amp;gt;&lt;br /&gt;               &amp;lt;/info&amp;gt;&lt;br /&gt;           &amp;lt;/location&amp;gt;&lt;br /&gt;       &amp;lt;/overlay&amp;gt;&lt;br /&gt;  &amp;lt;/page&amp;gt;&lt;br /&gt;&lt;br /&gt; Location of XSL files&lt;br /&gt;1)  panelStyle = &lt;a href=&quot;http://maps.google.com/maps?file=gp&amp;hl=en&quot;&gt;http://maps.google.com/maps?file=gp&amp;amp;hl=en&lt;/a&gt;&lt;br /&gt;2)  infoStyle =&lt;a href=&quot;http://www.blogger.com/%20http://maps.google.com/maps?file=gi&amp;hl=en&quot;&gt; http://maps.google.com/maps?file=gi&amp;amp;hl=en&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I read somewhere that this kind of apps are called AJAX ( Advanced Javascript &amp;amp; XML )&lt;br /&gt;&lt;br /&gt;I personally think that Google might have pre-calculated routes between all locations ( if not all, atleast between important places). So when we try to find route between, say, A to B, Google would have precomputed it and would be in memory. So it can retrieve the path and send it back to the client.&lt;br /&gt;&lt;br /&gt;One addition what Google could probably add is Traffic so that route displayed is the route with least traffic ( As I assume they have precomputed routes and put it in memory, assume 5 routes are there between A to B, all it has to do is to add weight ( traffic density) at run-time to all the 5 routes and return the route with the least traffic.&lt;br /&gt;&lt;br /&gt;This is all I could manage to figure out in 2 hrs. Will post, once I find out more .</content><link rel='replies' type='application/atom+xml' href='http://blog.rakeshxp.com/feeds/111282453153000335/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=11974021&amp;postID=111282453153000335' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default/111282453153000335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/11974021/posts/default/111282453153000335'/><link rel='alternate' type='text/html' href='http://blog.rakeshxp.com/2005/04/google-map.html' title='Google Map'/><author><name>Rakesh Rajan</name><uri>http://www.blogger.com/profile/03829707239037942088</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_-Ji5JXQSgdY/TLStxfM8ULI/AAAAAAAAFMs/SgjmISE8j38/S220/me.jpg'/></author><thr:total>3</thr:total></entry></feed>