<?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-16916381</id><updated>2012-01-18T03:30:26.116-08:00</updated><category term='textpattern'/><category term='hack'/><category term='GTAC 2010'/><category term='adventure'/><category term='Sahi'/><category term='base64_decode'/><category term='punbb'/><category term='GTAC'/><category term='browsers'/><category term='programming'/><category term='wildlife'/><title type='text'>Jungli Geek</title><subtitle type='html'>Intend to write whatever seems important or interesting. Ranging from technology to wildlife and travel.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>64</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-16916381.post-2172242951260680406</id><published>2010-12-22T21:26:00.000-08:00</published><updated>2010-12-22T22:31:43.107-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='base64_decode'/><category scheme='http://www.blogger.com/atom/ns#' term='textpattern'/><category scheme='http://www.blogger.com/atom/ns#' term='punbb'/><category scheme='http://www.blogger.com/atom/ns#' term='hack'/><title type='text'>PunBB Textpattern based web site hacked and fixed</title><content type='html'>A few days ago I noticed that search results on Google for sahi, started showing strange content which was not visible on the webpage or in the view-source.&lt;br /&gt;&lt;br /&gt;A little hunting around showed that some of the common included php files on the website had been modified, such that when the page was accessed using google-bot's user-agent values, the page added the extra spam content. This made Google index the website with the spam title instead of the real one. Here is a great detailed post on this hack on &lt;a href="http://googlewebmastercentral.blogspot.com/2009/11/generic-cialis-on-my-website-i-think-my.html"&gt;Google's Webmaster Central website&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;The hack had modified the PHP files by adding a single line which looks like this:&lt;br /&gt;&lt;blockquote&gt;error_reporting(0);eval(base64_decode('JGxMOXdG..long long string..'));&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;When the string is decoded, it shows HTML content with all the spam links.&lt;br /&gt;&lt;br /&gt;The modified time of the file was the same as other files, so who ever did this made sure the modified time was set to the original one. I removed the extra content and placed a request to delete the page from Google's cache (For details on removal, look at &lt;a href="http://www.google.com/support/webmasters/bin/answer.py?hl=en&amp;answer=164734&amp;rd=1"&gt;http://www.google.com/support/webmasters/bin/answer.py?hl=en&amp;answer=164734&amp;rd=1&lt;/a&gt; under "The page has changed and I want the outdated information removed")&lt;br /&gt;&lt;br /&gt;Everything worked fine. Till a few days ...&lt;br /&gt;&lt;br /&gt;Google results again started showing weird results, and another hunt showed similar strings added. Removed the content, was fine for a few days and again ... This was becoming painful and stressful. I had now got into this habit of logging into the shell and running&lt;br /&gt;&lt;br /&gt;grep -RI base64_decode . | more&lt;br /&gt;&lt;br /&gt;to see if there were any long entries, and then replacing that file with the untainted one from my backup. But the root cause of the problem was still unknown.&lt;br /&gt;&lt;br /&gt;And then there was one particular file which on my machine was called groups.php&lt;br /&gt;This had another eval(gzinflate(base64_decode('...'))) and when run, it showed a page called "r57shell 1.40". This page gave full access to whatever PHP exposed under the web users permissions, which meant one could access the filesystem, database, mail, ftp and what not. This was brilliant and I would have admired it more had it not been so harmful to me. I guess this was used to periodically modify various php files on my website to inject spam content. This may have been added during the brief period I was using ftp instead of sftp. I am not sure yet though. A couple of other similar harmful files also surfaced, (called white.php and added to punBB's lang/eng/ directory) which had some other back doors opened. &lt;br /&gt;&lt;br /&gt;Removed these files and started searching for a solution which would track such problems and alert me, when I came across an "Anti Virus" link on a2hosting's CPanel. Added back the problem files, ran the AV (powered by ClamAV) and sure enough, those files were detected as Trojans. I wish I had known about this a couple of months back.&lt;br /&gt;&lt;br /&gt;To prevent further such attacks, &lt;br /&gt;all file permissions were changed to 644 and directory permissions to 755&lt;br /&gt;all ftp users were removed and only sftp will be used henceforth&lt;br /&gt;&lt;br /&gt;Also created a small php file which would show files with base64_decode in it &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;&amp;lt;?php&lt;br /&gt;$output = shell_exec('grep -RI base64_decode /my/homedir/www');&lt;br /&gt;echo "&amp;lt;pre&amp;gt;$output&amp;lt;/pre&amp;gt;";&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;I hope this post helps others who face similar problems.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-2172242951260680406?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/2172242951260680406/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=2172242951260680406' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/2172242951260680406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/2172242951260680406'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2010/12/punbb-textpattern-based-web-site-hacked.html' title='PunBB Textpattern based web site hacked and fixed'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-48977979446471653</id><published>2010-11-16T21:08:00.000-08:00</published><updated>2010-11-16T21:49:48.577-08:00</updated><title type='text'>Windows 7 fix for slow copy speeds from USB</title><content type='html'>I was recently copying over about 1.5 GB of data from my USB stick to Windows 7 (32bit) and was surprised to see that it took over 25 minutes to do the copy. I researched a little bit and this is what helped me fix it.&lt;br /&gt;&lt;br /&gt;1) Run these commands to turn off TCP autotuning. (&lt;a href="http://www.speedguide.net/articles/windows-7-vista-2008-tweaks-2574"&gt;http://www.speedguide.net/articles/windows-7-vista-2008-tweaks-2574&lt;/a&gt;)&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;netsh int tcp set heuristics disabled&lt;br /&gt;netsh int tcp set global autotuninglevel=disabled&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Effect: good increase in speed&lt;br /&gt;&lt;br /&gt;2) Turn off Quick Heal antivirus during copy&lt;br /&gt;Effect: good increase in speed&lt;br /&gt;&lt;br /&gt;3) In Device Manager, right-click the USB drive in Disk drives folder, then select Properties, switch to Policies tab, and choose "Better Performance". Click OK to keep it. (&lt;a href="http://social.technet.microsoft.com/Forums/en-US/itprovistahardware/thread/60a7b507-9bda-4e66-8693-b85498cd860c/"&gt;http://social.technet.microsoft.com/Forums/en-US/itprovistahardware/thread/60a7b507-9bda-4e66-8693-b85498cd860c/&lt;/a&gt;)&lt;br /&gt;Effect: good increase in speed&lt;br /&gt;&lt;br /&gt;Overall the copy time came down to about about 4 minutes (From stable speed of 500KB/s prior to changes, to 5.4 MB/s)&lt;br /&gt;&lt;br /&gt;Note for the smart asses: before one starts inferring more than is necessary, let me clarify that Win7 and Quick Heal are both great products and serve my purpose very well.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-48977979446471653?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/48977979446471653/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=48977979446471653' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/48977979446471653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/48977979446471653'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2010/11/windows-7-fix-for-slow-copy-speeds-from.html' title='Windows 7 fix for slow copy speeds from USB'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-7435943855650346220</id><published>2010-10-30T22:29:00.000-07:00</published><updated>2010-10-30T23:01:28.143-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GTAC 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='GTAC'/><title type='text'>GTAC 2010</title><content type='html'>After having been denied participation initially, I did get to attend the second day of GTAC thanks to Simon Stewart helping me get in. I met a lot of interesting people, and spoke at length to the WebDriver folks, comparing notes, discussing road-map and about possible use of WebDriver underneath Sahi. It is going to take us a little while to do an honest appraisal and see whether that is the right direction to take. &lt;br /&gt;&lt;br /&gt;GTAC was good over all, in the quality of crowd. The talks were interesting. James Whittaker definitely lost my vote when he said something like "Honestly I was not thrilled when I heard GTAC was in India. I did not expect much, &amp;lt;pause&amp;gt;, and I must say, I am not disappointed". Seriously man, next time think before you say something like that, or be dishonest. Btw, some morons clapped at this. &lt;br /&gt;&lt;br /&gt;There was one other instance where I thought I need to add my comments. During a discussion, where I mentioned that going back to the web developer to add ids increases turn-around time, Simon jumped to say that it is wrong to have teams separate, they should be sitting next to each other and should get it fixed immediately. This may be the ideal situation (I strongly question that too), but it is definitely not what is practised or feasible in the industry. While interactions are good, minimizing the testers dependence on the developer is required. They may wish to discuss business logic, but really why should they know the internal ids that need to be added to the view. It is just a waste of time. Adding ids is also not always possible when using off the shelf javascript UI frameworks. Why burden everyone with ids when tools like Sahi can do without the ids? I wish the discussion had stuck to testability and not gone off to project management. &lt;br /&gt;&lt;br /&gt;Those aside, I think GTAC was good. Thanks GTAC for letting me be there at least for the second day!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-7435943855650346220?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/7435943855650346220/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=7435943855650346220' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/7435943855650346220'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/7435943855650346220'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2010/10/gtac-2010.html' title='GTAC 2010'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-3510255616670149531</id><published>2009-04-02T05:26:00.000-07:00</published><updated>2009-04-02T05:55:17.235-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sahi'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Syntax Highlighting for Sahi Code</title><content type='html'>I have added syntax highlighting to my blogs now. Used Alex Gorbatchev's SyntaxHighlighter 2.0 which is awesome. I added a Sahi brush to SyntaxHighlighter so that keywords in Sahi would also be highlighted.&lt;br /&gt;&lt;br /&gt;This is what shBrushSahi.js looks like:&lt;br /&gt;&lt;pre class="brush: js"&gt;&lt;br /&gt;SyntaxHighlighter.brushes.SahiScript = function()&lt;br /&gt;{&lt;br /&gt; var keywords = 'abstract boolean break byte case catch char class const continue debugger ' +&lt;br /&gt;     'default delete do double else enum export extends false final finally float ' +&lt;br /&gt;     'for function goto if implements import in instanceof int interface long native ' +&lt;br /&gt;     'new null package private protected public return short static super switch ' +&lt;br /&gt;     'synchronized this throw throws transient true try typeof var void volatile while with';&lt;br /&gt;&lt;br /&gt; var schedulerFns = '_alert _assertEqual _assertNotEqual _assertNotNull _assertNull _assertTrue _assert _assertNotTrue _assertFalse _assertExists _assertNotExists _callServer _click _clickLinkByAccessor _dragDrop _resetSavedRandom _setSelected _setValue _simulateEvent _call _eval _setGlobal _wait _popup _highlight _log _navigateTo _callServer _doubleClick _rightClick _addMock _removeMock _expectConfirm _setFile _expectPrompt _debug _debugToErr _debugToFile _mouseOver _keyPress _focus _keyDown _keyUp _mockImage _execute _assertContainsText _enableKeepAlive _disableKeepAlive _dragDropXY _deleteCookie _createCookie _clearPrintCalled _saveDownloadedAs _clearLastDownloadedFileName _rteWrite';&lt;br /&gt; &lt;br /&gt; var browserFns = '_accessor _button _check _checkbox _image _imageSubmitButton _link _password _radio _select _submit _textarea _textbox _event _getGlobal _random _savedRandom _cell _table _containsText _containsHTML _byId _row _getText _getCellText _div _span _spandiv _option _lastConfirm _reset _file _lastPrompt _lastAlert _get _style _byText _cookie _position _print _printCalled _label _lastDownloadedFileName _rteHTML _rteText _re _prompt _getCellText _getSelectedText _scriptName _isVisible _listItem _parentNode _parentCell _parentRow _parentTable _in';&lt;br /&gt; &lt;br /&gt; var otherFns = '_getDB _readFile _logException _logExceptionAsFailure _stopOnError _continueOnError _include';&lt;br /&gt; &lt;br /&gt; schedulerFns += (' ' + otherFns);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; this.regexList = [&lt;br /&gt;  { regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' },   // one line comments&lt;br /&gt;  { regex: SyntaxHighlighter.regexLib.multiLineCComments,  css: 'comments' },   // multiline comments&lt;br /&gt;  { regex: SyntaxHighlighter.regexLib.doubleQuotedString,  css: 'string' },   // double quoted strings&lt;br /&gt;  { regex: SyntaxHighlighter.regexLib.singleQuotedString,  css: 'string' },   // single quoted strings&lt;br /&gt;  { regex: /\s*#.*/gm,          css: 'preprocessor' },  // preprocessor tags like #region and #endregion&lt;br /&gt;  { regex: new RegExp(this.getKeywords(schedulerFns), 'gm'), css: 'color4' },    // operators and such&lt;br /&gt;  { regex: new RegExp(this.getKeywords(browserFns), 'gm'), css: 'color5' },    // operators and such&lt;br /&gt;  { regex: new RegExp(this.getKeywords(keywords), 'gm'),  css: 'keyword' }   // keywords&lt;br /&gt;  ];&lt;br /&gt; &lt;br /&gt; this.forHtmlScript(SyntaxHighlighter.regexLib.scriptScriptTags);&lt;br /&gt;};&lt;br /&gt;&lt;br /&gt;SyntaxHighlighter.brushes.SahiScript.prototype = new SyntaxHighlighter.Highlighter();&lt;br /&gt;SyntaxHighlighter.brushes.SahiScript.aliases = ['sahi', 'sahiscript'];&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;And this is what I added to my blogger template:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: js"&gt;&lt;br /&gt;&amp;lt;script src='http://sahi.co.in/static/syntaxhighlighter/scripts/shCore.js' type='text/javascript'/&amp;gt;&lt;br /&gt;&amp;lt;script src='http://sahi.co.in/static/syntaxhighlighter/scripts/shBrushJScript.js' type='text/javascript'/&amp;gt;&lt;br /&gt;&amp;lt;script src='http://sahi.co.in/static/syntaxhighlighter/scripts/shBrushSahi.js' type='text/javascript'/&amp;gt;&lt;br /&gt;&amp;lt;link href='http://sahi.co.in/static/syntaxhighlighter/styles/shCore.css' rel='stylesheet' type='text/css'/&amp;gt;&lt;br /&gt;&amp;lt;link href='http://sahi.co.in/static/syntaxhighlighter/styles/shThemeDefault.css' rel='stylesheet' type='text/css'/&amp;gt;&lt;br /&gt;&amp;lt;style&amp;gt;&lt;br /&gt;.syntaxhighlighter .color4, .syntaxhighlighter .color4 a{color: #000A7F !important;}&lt;br /&gt;.syntaxhighlighter .color5,.syntaxhighlighter .color5 a{color: brown !important;}&lt;br /&gt;&amp;lt;/style&amp;gt;&lt;br /&gt;&amp;lt;script type='text/javascript'&amp;gt;&lt;br /&gt;    SyntaxHighlighter.config.clipboardSwf = &amp;#39;http://sahi.co.in/static/syntaxhighlighter/scripts/clipboard.swf&amp;#39;;&lt;br /&gt;    SyntaxHighlighter.config.bloggerMode = true;&lt;br /&gt;    SyntaxHighlighter.all();&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Note that, in blogger, &amp;lt;br&amp;gt; tags will be visible in the code in place of new lines if you do not add &lt;br /&gt;&lt;pre class="brush: js"&gt;SyntaxHighlighter.config.bloggerMode = true;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;So now Sahi scripts on the blog will look like this:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: sahi"&gt;&lt;br /&gt;function search(){&lt;br /&gt;    _setValue(_textbox("q"), "sahi");&lt;br /&gt;    _click(_submit("Google Search"));&lt;br /&gt;    _assertExists(_link("Sahi"));&lt;br /&gt;}&lt;br /&gt;function goToForums(){&lt;br /&gt;    _click(_link("Sahi"));&lt;br /&gt;    _click(_link("Forums"));&lt;br /&gt;}&lt;br /&gt;function logout(){&lt;br /&gt;    if (_condition(_link("Logout"))){&lt;br /&gt;        _click(_link("Logout"));&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;function login($username, $password){&lt;br /&gt;    _click(_link("Login"));&lt;br /&gt;    _setValue(_textbox("req_username"), $username);&lt;br /&gt;    _setValue(_password("req_password"), $password);&lt;br /&gt;    _click(_submit("Login"));&lt;br /&gt;    _assertExists(_listItem("Logged in as "+$username));&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;search();&lt;br /&gt;goToForums();&lt;br /&gt;logout();&lt;br /&gt;login("sahitest" "khuljasimsim");&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-3510255616670149531?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/3510255616670149531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=3510255616670149531' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/3510255616670149531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/3510255616670149531'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2009/04/syntax-highlighting-for-sahi-code.html' title='Syntax Highlighting for Sahi Code'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-4358812167881530508</id><published>2008-10-01T22:40:00.000-07:00</published><updated>2009-04-01T03:31:10.613-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='browsers'/><title type='text'>Chrome rocks!</title><content type='html'>Chrome rocks absolutely! &lt;br /&gt;&lt;br /&gt;It is blazingly fast, and feels ultra light weight. After using it for a few weeks now, I am totally addicted. &lt;br /&gt;&lt;br /&gt;The landing page which shows snapshots of all pages recently viewed, is very convenient to start off and I feel great to just be able to click on a thumbnail and get to the site with out examining the url on my url bar or clicking on a bookmark. In fact the landing page is something that has really made a lot of difference in my browsing experience. I don't get lost as often as I used to and it saves me a lot of time and effort. &lt;br /&gt;&lt;br /&gt;I love the incognito mode which allows me to login simultaneously as different users, even into web applications which use permanent cookies. This is great for developers testing web applications.&lt;br /&gt;&lt;br /&gt;I like the ability to drag a tab and create its own window and vice versa.&lt;br /&gt;&lt;br /&gt;Space usage on chrome is very efficient and the concept of getting rid of the windows title bar is a very good one. The concept of showing page popups as part of the same tab but hidden down below is also quite useful.&lt;br /&gt;&lt;br /&gt;Honestly speaking I don't care much about being able to type the search terms or url into a single box. Surprising that Google talks about that more than the other features.&lt;br /&gt;&lt;br /&gt;My default browser was Firefox, but now I am converted.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-4358812167881530508?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/4358812167881530508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=4358812167881530508' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/4358812167881530508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/4358812167881530508'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2008/10/chrome-rocks.html' title='Chrome rocks!'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-3853704946791971479</id><published>2008-08-31T20:34:00.001-07:00</published><updated>2008-08-31T20:39:10.590-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sahi'/><title type='text'>Sahi V2 20080831 Released</title><content type='html'>After close to a month of development, Sahi V2 20080831 has been released today.  (&lt;a href="http://sahi.co.in/w/"&gt;http://sahi.co.in/w/&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;This release uses Rhino as the scripting engine, thus moving most of the script execution to the proxy. This should go a long way in simplifying Sahi scripts. Scripts now execute on the proxy, and only stuff that needs to execute on the browser is sent to the browser. Thus scheduler functions are sent to the browser for execution. One change which has come in is that custom functions which may have been added for identification of browser elements, now need to be wrapped in a &amp;lt;browser&amp;gt;&amp;lt;/browser&amp;gt;  tag so that they are also sent to the browser.&lt;br /&gt;&lt;br /&gt;This build also has some important changes to the SocketPool which will fix issues related to too many sockets being used and errors due to BindExceptions. Suite execution has been changed such that even if the browser crashes, the suite will continue with the next script and thus not hold up a build. DB methods now close connections properly.&lt;br /&gt;&lt;br /&gt;There will still be a few rough edges and I hope users will report bugs so that they are easily fixed. Meanwhile, help spread the message through your blogs or email forums.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-3853704946791971479?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://sahi.co.in/w/' title='Sahi V2 20080831 Released'/><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/3853704946791971479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=3853704946791971479' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/3853704946791971479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/3853704946791971479'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2008/08/sahi-v2-20080831-released_31.html' title='Sahi V2 20080831 Released'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-3501794709862069846</id><published>2008-08-31T20:34:00.000-07:00</published><updated>2008-08-31T20:36:08.523-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sahi'/><title type='text'>Sahi V2 20080831 Released</title><content type='html'>After close to a month of development, Sahi V2 20080831 has been released today.  (&lt;a href="http://sahi.co.in/w/"&gt;http://sahi.co.in/w/&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;This release uses Rhino as the scripting engine, thus moving most of the script execution to the proxy. This should go a long way in simplifying Sahi scripts. Scripts now execute on the proxy, and only stuff that needs to execute on the browser are sent to the browser. Thus scheduler functions are sent to the browser for execution. One change which has come in is that custom functions which may have been added for identification of browser elements, now need to be wrapped in a &lt;browser&gt;&lt;/browser&gt;  tag so that they are also sent to the browser.&lt;br /&gt;&lt;br /&gt;This build also has some important changes to the SocketPool which will fix issues related to too many sockets being used and errors due to BindExceptions. Suite execution has been changed such that even if the browser crashes, the suite will continue with the next script and thus not hold up a build. DB methods now close connections properly.&lt;br /&gt;&lt;br /&gt;There will still be a few rough edges and I hope users will report bugs so that they are easily fixed. Meanwhile, help spread the message through your blogs or email forums.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-3501794709862069846?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://sahi.co.in/w/' title='Sahi V2 20080831 Released'/><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/3501794709862069846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=3501794709862069846' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/3501794709862069846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/3501794709862069846'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2008/08/sahi-v2-20080831-released.html' title='Sahi V2 20080831 Released'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-4338865832328647133</id><published>2008-08-21T07:45:00.000-07:00</published><updated>2008-08-21T07:52:53.784-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sahi'/><title type='text'>Sahi - Latest developments</title><content type='html'>Copy of post on forum: http://sahi.co.in/forums/viewtopic.php?id=261&lt;br /&gt;&lt;br /&gt;I had not been active on the Sahi forums (http://sahi.co.in/forums) for sometime. Thanks a ton to StringyLow, tinchie8, lepierrot, pankaj.nith and others for keeping this forum active, and replying to posts.&lt;br /&gt;&lt;br /&gt;Meanwhile I have been working on a version of Sahi which attacks one of the basic problems with Sahi.&lt;br /&gt;Scopes of variables, scheduler and normal functions and the the way steps are queued and executed and the way their integrity needs to be maintained across page loads.&lt;br /&gt;&lt;br /&gt;The problem had been that the scripts (after parsing) were executed on the browser itself, and when a page unloads, the state of the script's execution needed to be persisted on the proxy and then resurrected when the next page loaded. While this allowed the ease of using javascript for scripting, when scripts became bigger, the browsers and the proxy had to do a lot more persisting and resurrecting.&lt;br /&gt;&lt;br /&gt;As the logical next step, I wanted to move this script execution to the proxy. I now use Rhino, an excellent javascript engine, to execute the scripts on the proxy. Only steps that need to be executed on the browser are sent to the browser. Javascript can still be used for Sahi scripting. Even though the script still is parsed, it is much simpler to understand script execution than it was before. Rhino also comes with a debugger which can prove useful to Sahi script debugging.&lt;br /&gt;&lt;br /&gt;The version is slated to be released soon. I am looking for volunteers to test and give me feedback about the new version. If you have existing scripts, the scripts may need to be modified a little to make it work with the new version.&lt;br /&gt;If you are interested, please post back or email me at narayan at sahi.co.in.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-4338865832328647133?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://sahi.co.in/forums/viewtopic.php?id=261' title='Sahi - Latest developments'/><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/4338865832328647133/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=4338865832328647133' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/4338865832328647133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/4338865832328647133'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2008/08/sahi-latest-developments.html' title='Sahi - Latest developments'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-8675390411171388457</id><published>2008-08-12T06:39:00.000-07:00</published><updated>2009-04-01T03:40:35.808-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='browsers'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Viewing cookies in IE</title><content type='html'>There are times during development when you wish to see the cookies of a particular site, but do not know how to view them. You can use this simple solution to view cookies.&lt;br /&gt;&lt;br /&gt;Drag this link to the Bookmarks toolbar on firefox. (Enable the toolbar by: View -&gt; Toolbars -&gt; Bookmarks Toolbar)&lt;br /&gt;&lt;a href="javascript:alert(document.cookie)"&gt;Show Cookies&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;On IE, right click on link, "Add to Favorites", Create In -&gt; "Links". (Enable toolbar via Tools -&gt; Toolbars -&gt; Links)&lt;br /&gt;&lt;br /&gt;Once you have this link on the toolbar, you can navigate to any site and click it to see the cookies.&lt;br /&gt;&lt;br /&gt;Of course there are plenty of cookie viewing techniques and tools around, but this is a very easy and handy way of checking cookies quickly.&lt;br /&gt;&lt;br /&gt;The html of the link above looks like this:&lt;br /&gt;&amp;lt;a href="javascript:alert(document.cookie)"&amp;gt;Show Cookies&amp;lt;/a&amp;gt;&lt;br /&gt;&lt;br /&gt;Bookmarlets like these can be really useful at times. For example in my newly launched &lt;a href="http://www.househunt.in" target="_blank"&gt;http://www.househunt.in&lt;/a&gt; website, I have a bookmarklet which helps me gather relevant links from a builder's site. All I need to do is navigate to the builder's website, click a bookmarklet on my browser and it injects javascript into the page to collect all relevant links and display a popup page. I then just add some more information and submit. This ease has helped more than 400 projects in Pune to be added within a short span of time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-8675390411171388457?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/8675390411171388457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=8675390411171388457' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/8675390411171388457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/8675390411171388457'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2008/08/viewing-cookies-in-ie.html' title='Viewing cookies in IE'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-3268363570420668465</id><published>2008-08-11T07:44:00.000-07:00</published><updated>2008-08-11T08:02:47.402-07:00</updated><title type='text'>Launching HouseHunt.in</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;While looking for houses I needed an  easy way of searching and shortlisting properties in Pune. So wrote this web application  over the past few weeks. It is ready for use now. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;The url is &lt;a title="blocked::http://www.househunt.in/" href="http://www.househunt.in/"&gt;http://www.househunt.in&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;&lt;o:p&gt;&lt;/o:p&gt;For the geekily oriented, this app  is built and deployed on the Google App Engine platform (&lt;a title="blocked::http://code.google.com/appengine/" href="http://code.google.com/appengine/"&gt;http://code.google.com/appengine/&lt;/a&gt;).  &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span style="font-size: 10pt; font-family: Arial;"&gt;It is written in python using some  features of the django framework and uses Google's BigTable instead of a regular  database. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-3268363570420668465?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.househunt.in' title='Launching HouseHunt.in'/><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/3268363570420668465/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=3268363570420668465' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/3268363570420668465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/3268363570420668465'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2008/08/launching-househuntin.html' title='Launching HouseHunt.in'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-1684144450845908653</id><published>2008-04-15T00:24:00.000-07:00</published><updated>2009-04-01T03:40:35.808-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Unicode encode decode error in python email</title><content type='html'>Been bothered with these on and off errors in our application while sending email via python:&lt;br /&gt;File "/usr/lib/python2.4/email/Generator.py", line 182, in handletext self._fp.write(payload)&lt;br /&gt;UnicodeEncodeError: 'ascii' codec can't encode character u'\u2014' in position 4986: ordinal not in range(128)&lt;br /&gt;&lt;br /&gt;The reason is that Python's email module needs some information about charset used when a MIMEText object is created.&lt;br /&gt;&lt;br /&gt;Here is a link which explians  how to solve this:&lt;br /&gt;http://mg.pov.lt/blog/unicode-emails-in-python&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Links to understand unicode in Python:&lt;br /&gt;&lt;br /&gt;http://effbot.org/zone/unicode-objects.htm&lt;br /&gt;http://www.amk.ca/python/howto/unicode&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-1684144450845908653?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/1684144450845908653/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=1684144450845908653' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/1684144450845908653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/1684144450845908653'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2008/04/unicode-encode-decode-error-in-python.html' title='Unicode encode decode error in python email'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-7249755986321448990</id><published>2008-02-11T20:30:00.000-08:00</published><updated>2009-04-01T03:32:00.992-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='adventure'/><title type='text'>Enduro3</title><content type='html'>So we competed in and completed the &lt;a href="http://www.enduro3.com/"&gt;Enduro3&lt;/a&gt; race. Sujoy, Sunil and I cycled some 45 kms over mud tracks and hilly roads,  trekked another 50, and eventually survived the adventure race unhurt, and still friends. We started around 10:30 am on Friday and finished around 6:30 pm on Saturday, having slept some 4 hrs in between.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; The race&lt;/span&gt;:&lt;br /&gt;Cycling:&lt;br /&gt;From Paud Road to NDA.&lt;br /&gt;On some muddy terrain inside NDA. Was good fun.&lt;br /&gt;Back on the road, up and down, up and down and up up - ending at Panshet Water Sports Center.&lt;br /&gt;(One of us and his cycle have since been divorced.)&lt;br /&gt;&lt;br /&gt;Trekking:&lt;br /&gt;Start from Panshet, walk along the ridge, get totally lost for a couple of hours, reach one end of the lake. (9:30pm)&lt;br /&gt;Stop for the night.&lt;br /&gt;Do river crossing. Only one in the team had to and Sujoy, you rocked then!&lt;br /&gt;Sleep till 2 am. Trussed up in a dryfit t-shirt, the poncho, a full cotton t-shirt, a nice jacket, a monkey cap and inside a sleeping bag. felt good.&lt;br /&gt;Wake and start trekking around 3 am.&lt;br /&gt;Sleep again from 5 to 6 am because we got lost.&lt;br /&gt;Wake (6 am) and trek trek around the lake, on the road, up koshimgarh and trek trek along the ridge till we reached Panshet WSC. (6.30 pm)&lt;br /&gt;&lt;br /&gt;The lake and mountains were beautiful. The morning trek was quite refreshing and we saw a lot of birds. The sudden burst of wings from a group of quails from under my feet took me totally by surprise. So close were they, our bodies could feel the drumming vibrations of the frantic wing beats. Also saw a hovering black shouldered kite, a grey jungle fowl, a large green barbet(?), loads of red whiskered/vented bulbuls, purple sunbirds, some flowerpeckers, puff throated, jungle babblers, magpie robins, and rufous backed shrikes.&lt;br /&gt;&lt;br /&gt;The race was tiring, and we lost our way more than once. But it was a lot of fun and it definitely tested our endurance and it feels good to have completed the race and be writing this blog.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; Information for the next time (IT category)&lt;/span&gt;:&lt;br /&gt;Water was available at a lot of places and was not a problem.&lt;br /&gt;Even though the race director laughs at you in the briefing session when you ask him about carrying sleeping bags, know that they are absolutely needed.&lt;br /&gt;Do NOT expect flags where you need them.&lt;br /&gt;Finish cycling as fast as possible so that you can navigate properly in daylight on the trek. On a moonless night like we had, it was impossible to look at the lake's shape and find our bearings from the map.&lt;br /&gt;The river crossing is in a deep part of the lake and you have to swim (and not wade) across. You get a life-vest so you won't drown and there are ropes at water level to pull yourself along. The water is placid and does not have a current. The distance is around 100m I think.&lt;br /&gt;The river crossing and rifle shooting timings are only useful when you have a tie. So really don't bother much with these.&lt;br /&gt;The rifle shooting was dropped for our event because of time constraints(?).&lt;br /&gt;Glucose is the best. Food may be taken but you would be better off with chocolate bars and energy bars.&lt;br /&gt;Carry a couple of 1L water bottles per person.&lt;br /&gt;Practise with your own cycle, and from well in advance. Don't fatigue your muscles just a day or two before the race.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-7249755986321448990?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/7249755986321448990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=7249755986321448990' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/7249755986321448990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/7249755986321448990'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2008/02/enduro3.html' title='Enduro3'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-3527226589821060408</id><published>2007-12-19T19:09:00.000-08:00</published><updated>2009-04-02T04:55:38.707-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sahi'/><title type='text'>Javascript sleep() or wait() in Sahi</title><content type='html'>My previous post on 'Javascript sleep() or wait()'  is visited  a lot of times and I think I should write how the problem was eventually solved in Sahi.&lt;br /&gt;&lt;br /&gt;Sahi needs to playback scripts written in javascript on the browser.&lt;br /&gt;Let us consider a small example:&lt;br /&gt;&lt;br /&gt;We are trying to automate an AJAXy mail client application which has an Inbox button, which when clicked, loads a part of the page, and this newly loaded content has a link 'Unread'.&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: sahiscript;"&gt;&lt;br /&gt;_click(_button('Inbox'));&lt;br /&gt;_click(_link('Unread'));&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;When the first line is executed, the Inbox button gets clicked and the script has to wait till the relevant portions of the page load, before it can click 'Unread'.&lt;br /&gt;&lt;br /&gt;To solve this, Sahi has a script parser which modifies this script to look something like this:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: sahiscript;"&gt;&lt;br /&gt;steps = new Array();&lt;br /&gt;steps[steps.length]  = "_click(_button('Inbox'));";&lt;br /&gt;steps[steps.length]  = "_click(_link('Unread'));";&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;And to execute these steps, it does:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: sahiscript;"&gt;&lt;br /&gt;var currentStep = 0;&lt;br /&gt;function execute(){&lt;br /&gt;    if (currentStep == steps.length) return;&lt;br /&gt;    window.eval(steps[currentStep]);&lt;br /&gt;    currentStep++;&lt;br /&gt;    window.setTimeout('execute()', 1000);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;execute();&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Hope this helps people who are looking for a solution for javascript sleep.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-3527226589821060408?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/3527226589821060408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=3527226589821060408' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/3527226589821060408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/3527226589821060408'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2007/12/javascript-sleep-or-wait-in-sahi.html' title='Javascript sleep() or wait() in Sahi'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-7145803833600488246</id><published>2007-12-11T20:48:00.000-08:00</published><updated>2009-04-01T03:40:35.808-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>java -cp does not work?</title><content type='html'>Was trying to get Sahi's batch and shell scripts to work properly since I get a lot of queries regarding database drivers not being found instpite of adding to the classpath.&lt;br /&gt;&lt;br /&gt;The problem is this. I need to add a mysql driver to Sahi's classpath so that  the scripts can access the driver to do some data driven testing.&lt;br /&gt;&lt;br /&gt;So I had to add the mysql driver to this:&lt;br /&gt;&lt;br /&gt;java -jar ../lib/sahi.jar&lt;br /&gt;&lt;br /&gt;Trivially, I added a -cp option so the command looks like this:&lt;br /&gt;&lt;br /&gt;java&lt;span style="font-weight: bold;"&gt; -cp ../extlib/mysql-connector-java-5.0.4-bin.jar -jar &lt;/span&gt;../lib/sahi.jar&lt;br /&gt;&lt;br /&gt;But this does &lt;span style="font-weight: bold;"&gt;NOT&lt;/span&gt; work. Why? Because an executable jar should have its classpath in its manifest file and not outside.&lt;br /&gt;&lt;br /&gt;The way to solve this is to use:&lt;br /&gt;&lt;br /&gt;java -cp ../extlib/mysql-connector-java-5.0.4-bin.jar;../lib/sahi.jar net.sf.sahi.Proxy&lt;br /&gt;&lt;br /&gt;So I made these changes on my windows machine, and it worked. Then logged on to my newly installed ubuntu to check if the shell script works with the same changes.&lt;br /&gt;&lt;br /&gt;Made the necessary semi-colon to colon conversion in the classpath, so it looks like this.&lt;br /&gt;&lt;br /&gt;java -cp ../extlib/mysql-connector-java-5.0.4-bin.jar&lt;span style="font-size:180%;"&gt;&lt;span style="font-weight: bold;"&gt;:&lt;/span&gt;&lt;/span&gt;../lib/sahi.jar net.sf.sahi.Proxy&lt;br /&gt;&lt;br /&gt;The sahi.sh file has a few other lines too.&lt;br /&gt;&lt;br /&gt;When I ran sahi.sh, it gave me a NoClassDefFound error for net/sf/sahi/Proxy! After hunting around quite a bit on the net to see if there was such a problem on linux, I realized that nobody on the forums seems to understand the problem even when somebody reported it.&lt;br /&gt;&lt;br /&gt;Eventually I realized that since I had edited the file in windows, it was adding ^M characters at the newlines which was not being recognized by the shell. So I used another editor and got rid of them by deleting and reentering the newlines. (I could also have used dos2unix, but did not have it installed on my machine)&lt;br /&gt;&lt;br /&gt;I also realized why the people in the forums did not understand the problem. Most of the replies were from people using linux all the time and the question posters would have mostly been using windows but since the problem was on a linux machine would have posted the question on linux forums!&lt;br /&gt;&lt;br /&gt;Anyway, now things work properly :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-7145803833600488246?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/7145803833600488246/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=7145803833600488246' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/7145803833600488246'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/7145803833600488246'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2007/12/java-cp-does-not-work.html' title='java -cp does not work?'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-10042977343949665</id><published>2007-11-29T03:19:00.000-08:00</published><updated>2009-04-01T03:23:26.977-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sahi'/><title type='text'>Sahi at FOSS.in</title><content type='html'>I will be presenting on the internal workings of &lt;a href="http://sahi.co.in/"&gt;Sahi&lt;/a&gt; at &lt;a href="http://foss.in/2007/info/Home"&gt;FOSS.in&lt;/a&gt; at Bangalore. This is not a demo level session but will involve a deep dive into the internals of the proxy, the script, extending the proxy, adding new APIs and other unmentionables. Hope to meet some interested and interesting people there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-10042977343949665?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/10042977343949665/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=10042977343949665' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/10042977343949665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/10042977343949665'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2007/11/sahi-at-fossin.html' title='Sahi at FOSS.in'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-2291938479811538990</id><published>2007-11-18T22:05:00.000-08:00</published><updated>2009-04-01T03:32:00.992-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='adventure'/><title type='text'>Cycling trip to god knows where</title><content type='html'>The cycle had been well over hauled. Had to replace the fork, both tyres and tubes. But the result was good. A very smooth, no hassles ride. The gear shifts were working well and the rolling was good. Except for the loose pedal shaft which had worn out and kept shaking and threatened to come off anytime. Saturday morning I set out from home at around 9, got the pedal shaft replaced and was on my way by 9.25. Was to meet Shrik near my office which was a good 17 kms away. Reached the office by 10.10. 45 minutes was a decent time and made me feel that I could go the office on cycle at least once a week. Had a vada pav and lime juice.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_94EzacITAcY/R0HUttdJsFI/AAAAAAAAABE/QLGgxEp7cmo/s1600-h/P1010031-2.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; float: left; cursor: pointer;" src="http://3.bp.blogspot.com/_94EzacITAcY/R0HUttdJsFI/AAAAAAAAABE/QLGgxEp7cmo/s320/P1010031-2.JPG" alt="" id="BLOGGER_PHOTO_ID_5134618931940143186" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Shrik's Hero Octane looked good, and we started at 10.30 towards Hinjewadi. Past Hinjewadi, towards Paud, and we were in the villages and we kept going uphill and then eventually had a long long descent. Rested at the end of it. Had a limca and decided where to go next. Turned right on some local advice and went on a really bumpy bad road for quite a distance. The scenery around was good though it was all villages. Suddenly we were pleasantly surprised to see three woolly necked storks on the side on an inundated field. Took a few snaps and moved on in search of some hotel to eat.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_94EzacITAcY/R0HTeddJsEI/AAAAAAAAAA8/HDMxDQRXOX4/s1600-h/P1010027-1.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; float: right; cursor: pointer;" src="http://2.bp.blogspot.com/_94EzacITAcY/R0HTeddJsEI/AAAAAAAAAA8/HDMxDQRXOX4/s320/P1010027-1.JPG" alt="" id="BLOGGER_PHOTO_ID_5134617570435510338" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;We saw a lot of sugar cane laden tractors and got a sugarcane from one of them. Had some of it and washed ourselves in a nallah. Eventually found a hotel, but we could not get any meals there. Just had vada sambar, pav and a tea. The hotel guy suggested we go a little ahead and go to a Satya Sai temple nearby if we wanted to have a nap. So off we went to the temple, but it turned out to be one steep climb. Half way through we came across a short cement platform and we parked right there and went off to doze in the shade. Half an hour later, a little refreshed, we proceeded and came across Tikona on the right and a lovely lake on the left. It was beautiful. Ahead, after a friendly water break with some locals, we hit a steep long ghat road which was quite a challenge to go up. At the top, rested for a while with tea and a cream roll. Moved on from there down a lovely steep winding road, and then climbed again all the way to the Kamshet Dam and then downhill again to Pavana nagar village. &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_94EzacITAcY/R0HVOddJsGI/AAAAAAAAABM/WsvSEl4IuJc/s1600-h/P1010024.JPG"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://2.bp.blogspot.com/_94EzacITAcY/R0HVOddJsGI/AAAAAAAAABM/WsvSEl4IuJc/s320/P1010024.JPG" alt="" id="BLOGGER_PHOTO_ID_5134619494580858978" border="0" /&gt;&lt;/a&gt;At a fork where Kamshet was 10 kms to the left, we decided to go right because we were told that the highway was closer in that direction. Was that a mistake! We cycled for a long long distance with no sign of a highway. Twilight became night and we were either guided by the less than half moon, or blinded by the oncoming vehicles. Had a very needed halt where we hogged five bananas each and to wash off the sweet taste I had a tomato too! Tried to hitch a ride back with a few vehicles but no luck. So we kept going and eventually, we went over the Bombay Pune expressway, and down further to join the NH4. We went to the nearest dhaba, which was quite comfortable with beds to rest, had a beer and some not so great food, and chilled out for a while.&lt;br /&gt;&lt;br /&gt;Around 8.30 we started cycling towards the nearest railway station, Begadewadi, which was hardly a km away from the dhaba thankfully. Got on the Lonavla-Pune local at 9.20 and after getting a few excited and curious glances and comments about our cycles, Shrik got down at Khadki and I at Pune. Pedalled back from the station to home and reached around 10.30, by when Shrik had also reached home. Had a bath and crashed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-2291938479811538990?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/2291938479811538990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=2291938479811538990' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/2291938479811538990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/2291938479811538990'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2007/11/cycling-trip-to-god-knows-where.html' title='Cycling trip to god knows where'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_94EzacITAcY/R0HUttdJsFI/AAAAAAAAABE/QLGgxEp7cmo/s72-c/P1010031-2.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-7899603443448271328</id><published>2007-10-10T22:11:00.000-07:00</published><updated>2009-04-01T03:23:26.977-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sahi'/><title type='text'>Sahi no longer needs waiting for AJAX calls</title><content type='html'>A new version of Sahi has been released. Download from &lt;a href="https://sourceforge.net/project/showfiles.php?group_id=151639"&gt;https://sourceforge.net/project/showfiles.php?group_id=151639&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;More details on the release are here: &lt;a href="http://sahitest.blogspot.com/"&gt;http://sahitest.blogspot.com/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-7899603443448271328?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://sourceforge.net/projects/sahi' title='Sahi no longer needs waiting for AJAX calls'/><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/7899603443448271328/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=7899603443448271328' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/7899603443448271328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/7899603443448271328'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2007/10/sahi-no-longer-needs-waiting-for-ajax.html' title='Sahi no longer needs waiting for AJAX calls'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-2286774075129360742</id><published>2007-09-18T20:31:00.000-07:00</published><updated>2009-04-01T03:40:35.809-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>0=="" is true</title><content type='html'>Debugging something on Sahi, came across this interesting equality in javascript:&lt;br /&gt;&lt;br /&gt;0 == "" is true!&lt;br /&gt;&lt;br /&gt;So are:&lt;br /&gt;&lt;br /&gt;1 == "1" etc.&lt;br /&gt;&lt;br /&gt;An easy way to test these out (and any other single line javascript) is to type&lt;br /&gt;&lt;br /&gt;javascript:0==""&lt;br /&gt;&lt;br /&gt;on the browser url navigation bar.&lt;br /&gt;Yes, it works on IE and firefox.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-2286774075129360742?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/2286774075129360742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=2286774075129360742' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/2286774075129360742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/2286774075129360742'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2007/09/0-is-true.html' title='0==&quot;&quot; is true'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-5421501062013905556</id><published>2007-06-24T04:46:00.000-07:00</published><updated>2009-04-01T03:23:26.977-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sahi'/><title type='text'>Vote for Sahi on SourceForge Community Choice Awards 2007</title><content type='html'>If you like Sahi, nominate and vote for it in the SourceForge Community Choice Awards 2007.&lt;br /&gt;Ask your friends, colleagues and other bloggers to express support too. Thanks :)&lt;br /&gt;&lt;br /&gt;http://sourceforge.net/projects/sahi&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-5421501062013905556?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://sourceforge.net/projects/sahi' title='Vote for Sahi on SourceForge Community Choice Awards 2007'/><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/5421501062013905556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=5421501062013905556' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/5421501062013905556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/5421501062013905556'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2007/06/vote-for-sahi-on-sourceforge-community.html' title='Vote for Sahi on SourceForge Community Choice Awards 2007'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-2270176197841830946</id><published>2007-05-26T03:22:00.000-07:00</published><updated>2009-04-01T03:27:43.270-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wildlife'/><title type='text'>Trip to BR Hills</title><content type='html'>Rashmi and I had been to this place called BR Hills near Mysore.  It was early April and it was supposed to be a good time for sighting animals.  But we were disappointed to know that a forest fire had burnt very large tracts of the forest and since there was no vegetation for the deer and other grazers, they had all moved away.&lt;br /&gt;But luck was on our side. On the second night, we saw a bear in the moonlight, quite close to our log hut. It was scratching the ground and lazily moving around, making a lot of rustling noises among the fallen dry leaves.&lt;br /&gt;The next day evening, as we were coming back from the safari, we saw a couple of deer, right by our side, totally ignoring us, and staring at something right ahead of us. They called twice, the sharp and loud "cow", the alarm call of the spotted deer. And then,  from the grasses to the left, something came out on the road. In a second it vanished around the bend in the road. In a frenzy of excitement we urged the driver to drive down. He had not seen the animal come onto the road, but started driving down slowly to the bend. But the animal was gone.&lt;br /&gt;We looked around, excited, frustrated and expectant. Someone saw a movement on the raised bank on the right. There it was, a full grown leopard, moving stealthily towards cover.  A few more moves and the vegetation consumed the cat.&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_94EzacITAcY/RlgSEVSYeeI/AAAAAAAAAAM/hOrbvLPAbXY/s1600-h/BRHills+3811_filtered.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_94EzacITAcY/RlgSEVSYeeI/AAAAAAAAAAM/hOrbvLPAbXY/s320/BRHills+3811_filtered.jpg" alt="" id="BLOGGER_PHOTO_ID_5068821246248516066" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;The now very excited driver guessed it must come out again a bit further and he started moving.  And then we spotted it again. A magnificent animal, sitting right there, a few feet away, at a height on the raised bank which let us look at it straight in the eyes. I clicked away shaking with excitement. The leopard was just beautiful. I had never seen one so close and for so long. It just sat and looked at us. And slowly moved back, while still sitting, so that it was covered by some undergrowth. This is exactly how a tiger had behaved a few months back in Bandipur. Slowly creep backwards in imperceptible movements but soon be hidden from view behind some neighbouring undergrowth. &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_94EzacITAcY/RlgSEVSYefI/AAAAAAAAAAU/q5ONGUx7InA/s1600-h/BRHills+3901_filtered.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://4.bp.blogspot.com/_94EzacITAcY/RlgSEVSYefI/AAAAAAAAAAU/q5ONGUx7InA/s320/BRHills+3901_filtered.jpg" alt="" id="BLOGGER_PHOTO_ID_5068821246248516082" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And then the leopard started moving. It came down the embankment and walked across the road and then down the curvy road which bent in a U to be parallel with us again. And man, was it brilliant. The leopard moved effortlessly, purposefully, silently, stealthily and man, so beautifully. And it was in full view of us all the time!&lt;br /&gt;15 minutes had gone by and it was still around! Perfect sighting!&lt;br /&gt;And then we started moving towards it, as we had to return to camp, and by then the leopard decided to vanish. And vanish he did. We could not figure out where he went.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;We were again rewarded th next day with a bear sighting while we trekked nearby! Quite an eventful and satisfying three days!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-2270176197841830946?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/2270176197841830946/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=2270176197841830946' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/2270176197841830946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/2270176197841830946'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2007/05/trip-to-br-hills.html' title='Trip to BR Hills'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_94EzacITAcY/RlgSEVSYeeI/AAAAAAAAAAM/hOrbvLPAbXY/s72-c/BRHills+3811_filtered.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-9119371495502132391</id><published>2007-05-26T00:40:00.000-07:00</published><updated>2007-05-26T02:29:47.329-07:00</updated><title type='text'>Inter-linking of rivers in India is a bad idea</title><content type='html'>I think inter-linking of rivers in India is a bad idea.&lt;br /&gt;Whenever any friend of mine sounds impressed with this grandiose idea, I have felt frustrated and disturbed. We tend to overlook smaller more effective solutions and go for more romantic and glamorous 'solutions'. So I had been hunting around to gather information on this and make a case of it to people who want to understand what the pros and cons of this effort are.  Following are a few links which spell out the danger of going ahead with this plan which does not have enough scientific evidence or prior experience to back it.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.saciwaters.org/interlinking.htm"&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="style4"&gt;&lt;strong&gt;                               The Interlinking of Indian Rivers&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;                             &lt;p style="margin-top: 0pt;"&gt;                             &lt;a href="http://www.saciwaters.org/interlinking.htm"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;span class="style4"&gt;&lt;strong&gt;Some Questions on the Scientific, Economic and Environmental Dimensions of the Proposal &lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;                              &lt;/span&gt;&lt;/a&gt;                               &lt;/p&gt;                               &lt;p style="margin-top: 0pt;"&gt;                               &lt;a href="http://www.saciwaters.org/interlinking.htm"&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;Paper presented at Seminar on &lt;span class="style4"&gt;Interlinking Indian Rivers: Bane or Boon?&lt;/span&gt;&lt;br /&gt;                                at                                 IISWBM, Kolkata&lt;br /&gt;                                17 June 2002&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;The conclusion of the above goes thus: "&lt;span style="font-family:Verdana;font-size:85%;"&gt;At the end of the above review and analysis made on the basis of whatever open information is available on the project for interlinking the rivers in India, there appears a great inconsistency in the declared claims of the project, and their feasibility"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.countercurrents.org/en-ghosh150503.htm"&gt;This link, by Shailendra Nath Ghosh&lt;/a&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;, talks about what is wrong with the concept, and what questions need to be answered, to make a proper assessment of this project&lt;br /&gt;&lt;br /&gt;More &lt;a href="http://www.indiatogether.org/environment/interlink.htm"&gt;articles &lt;/a&gt;and &lt;a href="http://www.indiatogether.org/opinions/guest/interlink.htm"&gt;opinions&lt;/a&gt;. Quite insightful.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.sdnpbd.org/river_basin/differntviews/different_views.htm"&gt;Bangladesh's views on India's inter-linking of rivers&lt;/a&gt; (They too oppose this)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.sdnpbd.org/river_basin/differntviews/documents/spirited_response_to_river_link_supporters.pdf"&gt;Narmada Bachao Aandolan's views in "Dams, Rivers and People"&lt;/a&gt;:  This talks about rehabilitation failures and need for local management and conservation than an imposed, top down solution. They may appear biased because of their image in the press but they are people who have seen and fought unselfishly for rehabilitation of displaced people.&lt;br /&gt;&lt;br /&gt;"The proposal is even more dangerous as attempting to link up veins of different persons without trying to find out the blood groups of the individuals. He said consequences will be disastrous." from &lt;a href="http://www.sdnpbd.org/river_basin/differntviews/documents/national_citizens_meeting_delhi_rejects_river_link_proposals_as_ill_conceived.pdf"&gt;National Citizens’ Meeting in Delhi concludes: River Link Proposals ill conceived, not in national Interest&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;More:&lt;br /&gt;&lt;a href="http://nwda.gov.in/indexmain.asp?linkid=97&amp;langid=1"&gt;ILR in Supreme Court&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.thehindu.com/2005/10/18/stories/2005101805081300.htm"&gt;&lt;span class="storyhead"   style="font-size:100%;color:blue;"&gt;                  Bahuguna opposes interlinking of rivers&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I have not included any links which talk about the environmental aspects of this inter-linking. While the impact will be enormously destructive, talking about it seems to turn off people because they cannot see how economic growth and environmental conservation can co-exist.  (May these lesser mortals exit soon)&lt;br /&gt;&lt;br /&gt;So next time you hear of the inter-linking of rivers , doubt it, question it and take the side of what then comes out as true and right.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-9119371495502132391?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/9119371495502132391/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=9119371495502132391' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/9119371495502132391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/9119371495502132391'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2007/05/inter-linking-of-rivers-in-india-is-bad.html' title='Inter-linking of rivers in India is a bad idea'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-117042235917606540</id><published>2007-02-02T05:10:00.001-08:00</published><updated>2009-04-01T03:23:26.977-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sahi'/><title type='text'>Sahi Nightly Build 2006-02-02 released</title><content type='html'>Released another version of Sahi.&lt;br /&gt;Added a few fixes to the release made 2 days back.&lt;br /&gt;&lt;br /&gt;This is a fairly major release with the following changes:&lt;br /&gt;&lt;br /&gt;* APIS added&lt;br /&gt;    _mockImage(pattern, clazz)&lt;br /&gt;    _assertContainsText(expected, el, msg)&lt;br /&gt;    _enableKeepAlive()&lt;br /&gt;    _disableKeepAlive()&lt;br /&gt;    _style(el, property)&lt;br /&gt;    _execute("commandline command");&lt;br /&gt;&lt;br /&gt;* Feature additions&lt;br /&gt;    Test status on Controller&lt;br /&gt;    Launch test from command line&lt;br /&gt;    Add line numbers to script in logs&lt;br /&gt;    Back button support&lt;br /&gt;    Keep-alive support to tackle too many connections in TIME_WAIT issue&lt;br /&gt;    regular expression support in all APIs&lt;br /&gt;    Safari support&lt;br /&gt;    junit style logs added&lt;br /&gt;    jira issue tracking added&lt;br /&gt;        &lt;br /&gt;* Bugfixes&lt;br /&gt;    _condition when used with _include was stopping execution of script.&lt;br /&gt;&lt;br /&gt;Of significance is the regular expression support in APIs.&lt;br /&gt;&lt;br /&gt;So if you wanted to find a link which looks like "my_link_KJHSA" you could just do _link(/my_link_.*/).&lt;br /&gt;Most APIs which took strings as parameters can now take regular expressions.&lt;br /&gt;&lt;br /&gt;The communication between the browser and Sahi now uses Keep-Alive thus solving the major issue of too many connections in TIME_WAIT state. &lt;br /&gt;&lt;br /&gt;Documentation is still being added for the new features on http://sahi.co.in&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-117042235917606540?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='https://sourceforge.net/project/showfiles.php?group_id=151639' title='Sahi Nightly Build 2006-02-02 released'/><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/117042235917606540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=117042235917606540' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/117042235917606540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/117042235917606540'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2007/02/sahi-nightly-build-2006-02-02-released_02.html' title='Sahi Nightly Build 2006-02-02 released'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-117042235133094519</id><published>2007-02-02T05:10:00.000-08:00</published><updated>2009-04-01T03:23:26.977-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sahi'/><title type='text'>Sahi Nightly Build 2006-02-02 released</title><content type='html'>Released another version of Sahi.&lt;br /&gt;Added a few fixes to the release made 2 days back.&lt;br /&gt;&lt;br /&gt;This is a fairly major release with the following changes:&lt;br /&gt;&lt;br /&gt;* APIS added&lt;br /&gt;    _mockImage(pattern, clazz)&lt;br /&gt;    _assertContainsText(expected, el, msg)&lt;br /&gt;    _enableKeepAlive()&lt;br /&gt;    _disableKeepAlive()&lt;br /&gt;    _style(el, property)&lt;br /&gt;    _execute("commandline command");&lt;br /&gt;&lt;br /&gt;* Feature additions&lt;br /&gt;    Test status on Controller&lt;br /&gt;    Launch test from command line&lt;br /&gt;    Add line numbers to script in logs&lt;br /&gt;    Back button support&lt;br /&gt;    Keep-alive support to tackle too many connections in TIME_WAIT issue&lt;br /&gt;    regular expression support in all APIs&lt;br /&gt;    Safari support&lt;br /&gt;    junit style logs added&lt;br /&gt;    jira issue tracking added&lt;br /&gt;        &lt;br /&gt;* Bugfixes&lt;br /&gt;    _condition when used with _include was stopping execution of script.&lt;br /&gt;&lt;br /&gt;Of significance is the regular expression support in APIs.&lt;br /&gt;&lt;br /&gt;So if you wanted to find a link which looks like "my_link_KJHSA" you could just do _link(/my_link_.*/).&lt;br /&gt;Most APIs which took strings as parameters can now take regular expressions.&lt;br /&gt;&lt;br /&gt;The communication between the browser and Sahi now uses Keep-Alive thus solving the major issue of too many connections in TIME_WAIT state. &lt;br /&gt;&lt;br /&gt;Documentation is still being added for the new features on http://sahi.co.in&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-117042235133094519?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='https://sourceforge.net/project/showfiles.php?group_id=151639' title='Sahi Nightly Build 2006-02-02 released'/><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/117042235133094519/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=117042235133094519' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/117042235133094519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/117042235133094519'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2007/02/sahi-nightly-build-2006-02-02-released.html' title='Sahi Nightly Build 2006-02-02 released'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-116598383320692779</id><published>2006-12-12T19:12:00.000-08:00</published><updated>2009-04-01T03:33:18.377-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wildlife'/><title type='text'>Reward of Kabini</title><content type='html'>Call after alarm call signalled the presence of a tiger very close to us. Chitals stood alert with their tails up and ears perked up giving out the loud shrill call. A loud "Cow" - an abrupt shrill call very close to us. A flurry of running dots as the deer bolt. The lantana bushes still cover the tiger from us. We wait patiently and impatiently, wait intently, expectantly. A few minutes pass. A lull. Long laden lull. The deer grow silent. No more alarm calls. The tiger is gone. Not even a glimpse. &lt;br /&gt;The aura of the tiger is no longer felt. Deer go back to their grazing, langurs back to their mischief.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/x/blogger/4392/1618/1600/423273/IMG_5545.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/x/blogger/4392/1618/320/5330/IMG_5545.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;We move on. Disappointed. The night is closing in. We exit the jungle right on time. Our guide Sivanand suggests we try our luck along the road. Our headlights on, we go at a slow pace. A small herd of wild gaur. Huge animals, very close to us. Unperturbed, happily grazing away. One crosses the road in front of us as we wait. Slow, deliberate, unconcerned by our presence. A few metres ahead, a big tusker. Elephants close to your vehicle are not very comforting. A lone male tusker doubly so. We watch, torchlight on the tusks. The elephant leaves us alone.&lt;br /&gt;&lt;br /&gt;Alarm calls again. Chital very close. A predator nearby. Experience braces us for disappointment, but optimism still lurks. Sivanand points in the other direction from where we are looking. A smallish stocky animal. Comes out of the cover of the forest. Starts walking on the road. Slightly hurried. Aware of our presence. We move slowly towards it. Our headlights on, but slow enough not to frighten it away. Slow enough to frustrate us to know there is a leopard in front and we cannot see it clearly. Frustrating. &lt;br /&gt;&lt;br /&gt;It was a good decision. The leopard moved off the road to the right. We moved in slowly. The pale yellow beam lights the animal's rump as it ambles slowly into the bushes. Then it stops and sits down. In the light of the torch. A female, not too big leopard. The eyes glint reddish in the light as she looks at us for a brief moment. Into the light, into our eyes. Lovely. Brief. She gets up and walks on, away into the bushes, into the darkness, and into the jungle. Back to her comfort zone. And we move on to ours.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-116598383320692779?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/116598383320692779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=116598383320692779' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/116598383320692779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/116598383320692779'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2006/12/reward-of-kabini.html' title='Reward of Kabini'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-116506595796400790</id><published>2006-12-02T05:12:00.000-08:00</published><updated>2009-04-01T03:32:59.268-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='browsers'/><title type='text'>Button tag problems and IE 6</title><content type='html'>Discovered that IE and Firefox handle the &amp;lt;button&amp;gt; tag differently.&lt;br /&gt;&lt;br /&gt;If you have a tag like&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt; button type="submit" name="b" value="abc"&gt;&lt;br /&gt;Button Text&lt; /button&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;When the form is submitted, the value of the parameter "b" is "abc" in firefox (the value attribute) while for IE, it is "Button Text" (the innerText)&lt;br /&gt;&lt;br /&gt;Workaround?&lt;br /&gt;&lt;br /&gt;We needed to submit a form using different buttons and each should send back its respective value.&lt;br /&gt;&lt;br /&gt;We used &lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt; input type="submit" name="b" value="Button Text 1"&gt;&lt;br /&gt;&lt; input type="hidden" name="Hash_of_Button_Text_1" &lt;br /&gt;value="value1"&gt;&lt;br /&gt;&lt;br /&gt;&lt; input type="submit" name="b" value="Button Text 2"&gt;&lt;br /&gt;&lt; input type="hidden" name="Hash_of_Button_Text_2" &lt;br /&gt;value="value2"&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;and on the server, accessed it by&lt;br /&gt;&lt;br /&gt;params[hash(params["b"])]&lt;br /&gt;&lt;br /&gt;where hash("Button Text 1") returns Hash_of_Button_Text_1&lt;br /&gt;&lt;br /&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-116506595796400790?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/116506595796400790/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=116506595796400790' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/116506595796400790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/116506595796400790'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2006/12/button-tag-problems-and-ie-6.html' title='Button tag problems and IE 6'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-116464972929730327</id><published>2006-11-27T09:48:00.000-08:00</published><updated>2009-04-01T03:40:35.809-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Ruby mocking - Using flexstub</title><content type='html'>Ruby proves to be as sweet as most people have claimed it to be.&lt;br /&gt;&lt;br /&gt;Pick testing and and you hit &lt;a href="http://onestepback.org/software/flexmock/"&gt;flexmock and flexstub&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;So how do you use them? Here goes:&lt;br /&gt;&lt;br /&gt;You have&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;class CA{&lt;br /&gt;  def method_1&lt;br /&gt;    do_some_processing&lt;br /&gt;    if condition method_2&lt;br /&gt;    else method_3&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;  def method_2&lt;br /&gt;    do_some_slow_processing_worth_mocking_out&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;  def method_3&lt;br /&gt;    do_some_more_slow_processing_worth_mocking_out&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;If you want to test method_1's conditonal logic, with method_2 and method_3 stubbed out, here is how you do it with flexstub:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;require 'flexmock'&lt;br /&gt;&lt;br /&gt;class MyTest&lt; Test::Unit::TestCase&lt;br /&gt;  include FlexMock::TestCase&lt;br /&gt;  def test_method_1&lt;br /&gt;    ca = CA.new&lt;br /&gt;#   do something to make the condition be true&lt;br /&gt;#   stub some methods of the instance&lt;br /&gt;    stub = flexstub(ca)&lt;br /&gt;    stub.should_receive(:method_2).once&lt;br /&gt;    stub.should_receive(:method_3).never&lt;br /&gt;    ca.method_1&lt;br /&gt;#   Note: method_1 is invoked on ca.&lt;br /&gt;#   stub.method_1 will fail!&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;So when would you use flexmock?&lt;br /&gt;If you wish to mock all the methods being called on an object, you may use a flexmock.&lt;br /&gt;A flexmock is an object which will just receive the methods you set expectations for, using should_receive.&lt;br /&gt;If you wish to mock only one of the methods of an object but the other methods need to be invoked with the real functionality, &lt;br /&gt;use flexstub to mock only that particular method. &lt;br /&gt;&lt;br /&gt;As you see, method_1 is invoked properly, but method_2 and method_3 are stubbed out.&lt;br /&gt;&lt;br /&gt;One remarkable thing about this is mocking out an object's new method.&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;flexstub(Customer).should_receive(:new)&lt;br /&gt;                  .and_return(mock_customer)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Anywhere Customer.new is called inside any class during your test, it will return a mock_customer.&lt;br /&gt;This is quite powerful, because we no longer need to use dependancy injection for just test purposes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-116464972929730327?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/116464972929730327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=116464972929730327' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/116464972929730327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/116464972929730327'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2006/11/ruby-mocking-using-flexstub.html' title='Ruby mocking - Using flexstub'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-116461886987486555</id><published>2006-11-27T01:14:00.000-08:00</published><updated>2009-04-01T03:32:59.269-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='browsers'/><title type='text'>So much for security!</title><content type='html'>If you are booking online on Spicejet, beware.&lt;br /&gt;The lovely site which says verisign secured etc. actually sends all your credit card information as a query string! &lt;br /&gt;So much for SSL!&lt;br /&gt;&lt;br /&gt;I had written to them around 2 months back and it still remains the same!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-116461886987486555?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/116461886987486555/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=116461886987486555' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/116461886987486555'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/116461886987486555'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2006/11/so-much-for-security.html' title='So much for security!'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-116133389497707956</id><published>2006-10-20T01:39:00.000-07:00</published><updated>2009-04-01T03:24:43.728-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sahi'/><title type='text'>Sahi - New Website</title><content type='html'>Sahi has a new look and location at &lt;a href="http://sahi.co.in"&gt;http://sahi.co.in&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;A new release (Nightly Build 2006-10-20) of Sahi is also available. Download from &lt;a href="http://sahi.co.in/content/view/32/53/"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-116133389497707956?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://sahi.co.in' title='Sahi - New Website'/><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/116133389497707956/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=116133389497707956' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/116133389497707956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/116133389497707956'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2006/10/sahi-new-website.html' title='Sahi - New Website'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-116040012064952069</id><published>2006-10-09T06:19:00.000-07:00</published><updated>2009-04-01T03:28:45.387-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wildlife'/><title type='text'>Bird Fight</title><content type='html'>Just posted an image of a fight between a brahminy kite and a purple swamphen.&lt;br /&gt;The swamphen stamps and chases away the kite!&lt;br /&gt;&lt;a href="http://indianaturewatch.net/displayimage.php?id=4927"&gt;http://indianaturewatch.net/displayimage.php?id=4927&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-116040012064952069?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://indianaturewatch.net/displayimage.php?id=4927' title='Bird Fight'/><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/116040012064952069/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=116040012064952069' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/116040012064952069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/116040012064952069'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2006/10/bird-fight.html' title='Bird Fight'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-116003551291745842</id><published>2006-10-04T22:49:00.000-07:00</published><updated>2007-03-05T23:22:54.003-08:00</updated><title type='text'>Jamming thoughts</title><content type='html'>Travelling alone by car is a sin. &lt;br /&gt;Why? It takes too much space on the roads. &lt;br /&gt;The bigger the car the worse it is. &lt;br /&gt;One car blocks roughly the space of four bikes. &lt;br /&gt;So unless there are four people (at least) in a car, we are blocking resources which can be used more effectively. &lt;br /&gt;&lt;br /&gt;Btw, bikes pollute more than new Euro IV cars (&lt;a href="http://www.cseindia.org/campaign/apc/leapfrog_factor.htm"&gt;Source&lt;/a&gt;). So the problem is not straight forward. &lt;br /&gt;&lt;br /&gt;There are a few things to consider:&lt;br /&gt;&lt;br /&gt;What is the real problem? Road congestion or air pollution?&lt;br /&gt;In Bangalore, it is road congestion. And it compounds air pollution. A car caught in congestion pollutes four times more than a running one (&lt;a href="http://www.cseindia.org/campaign/apc/leapfrog_factor.htm"&gt;Source&lt;/a&gt;). &lt;br /&gt;&lt;br /&gt;So if we have more free flowing traffic it is a big win. That means bikes are a decent option, and cars are not bad if fully utilized. &lt;a href="http://www.commuteeasy.com"&gt;Pooling&lt;/a&gt; in any form would help. Walking and cycling really are the best, but may not be feasible for everyone. &lt;br /&gt;&lt;br /&gt;Pooling is kind of helpful in another way. One shares the stress of commuting and makes us human beings who snap less and who do not yell at the already poor pedestrian and the occasional cyclist.&lt;br /&gt;&lt;br /&gt;Sad point is how the world sees it as a sign of success if you consume more resources and it may be perceived as below dignity for people to travel by cycle. Applause to those who have persevered cycling in Bangalore and because of their own profile are slowly making cycling be seen as cool and desirable.&lt;br /&gt;&lt;br /&gt;Sad again that the right things have to be packaged as cool for most of us to accept it.&lt;br /&gt;&lt;br /&gt;On a happier note, I hear less honking nowadays than I used to. People in Bangalore seem to be maturing to the traffic problem now. Cheers!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-116003551291745842?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.commuteeasy.com' title='Jamming thoughts'/><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/116003551291745842/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=116003551291745842' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/116003551291745842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/116003551291745842'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2006/10/jamming-thoughts.html' title='Jamming thoughts'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-115942371218395783</id><published>2006-09-27T22:55:00.000-07:00</published><updated>2009-04-01T03:28:45.387-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wildlife'/><title type='text'>Treepie</title><content type='html'>&lt;a href="http://www.treepie.org"&gt;Treepie.org&lt;/a&gt; is up again. So if you are a birder and are looking for a site to consolidate your bird lists, join it and manage your lists. &lt;br /&gt;&lt;br /&gt;I am now linking birds with superb pictures posted by the growing community of excellent wildlife photographers in &lt;a href="http://www.indianaturewatch.net/index.php"&gt;India Nature Watch&lt;/a&gt; and pictures from google image search.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-115942371218395783?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.treepie.org' title='Treepie'/><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/115942371218395783/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=115942371218395783' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/115942371218395783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/115942371218395783'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2006/09/treepie.html' title='Treepie'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-115918517232418552</id><published>2006-09-25T04:31:00.000-07:00</published><updated>2009-04-01T03:28:45.387-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wildlife'/><title type='text'>Turahalli</title><content type='html'>&lt;a href="http://chirdeepshetty.blogspot.com"&gt;Chirdeep&lt;/a&gt; and I had gone owl hunting to this place called Turahalli. Do not know if we actually reached there but we did end up on a nice patch with lots of rocks around. No owls, but we managed to see rock agamas. Loads of them. Every rock was ruled by one. &lt;br /&gt;Soon bored, bouldering entertained us briefly. &lt;br /&gt;Then we came across a neat white cheeked barbet surprisingly sitting on an electric line absolutely unperturbed by our photographic intentions and let us come quite close to it. &lt;br /&gt;Also managed a decent shot of a pied bushchat.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://static.flickr.com/95/251252002_66fb528ad6.jpg?v=0"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://static.flickr.com/95/251252002_66fb528ad6_m.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://static.flickr.com/94/251251999_640f5478e7.jpg?v=0"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://static.flickr.com/94/251251999_640f5478e7_m.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://static.flickr.com/92/251256076_d47b8aa4a9.jpg?v=0"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://static.flickr.com/92/251256076_d47b8aa4a9_m.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-115918517232418552?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/115918517232418552/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=115918517232418552' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/115918517232418552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/115918517232418552'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2006/09/turahalli.html' title='Turahalli'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-115485625977344460</id><published>2006-08-06T02:21:00.000-07:00</published><updated>2009-04-01T03:28:45.387-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wildlife'/><title type='text'>Birding in Bannerghatta</title><content type='html'>Chirdeep, Nikhil and I went birding on Saturday. Got a few pics.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://static.flickr.com/76/207855908_d95835d264.jpg?v=0"&gt;&lt;img style="margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px;" src="http://static.flickr.com/76/207855908_d95835d264.jpg?v=0" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Purple sunbird in non-breeding plumage&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://static.flickr.com/60/207855906_1594c2141c.jpg?v=0"&gt;&lt;img style="margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px;" src="http://static.flickr.com/60/207855906_1594c2141c.jpg?v=0" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Plain flowerpecker&lt;br /&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-115485625977344460?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/115485625977344460/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=115485625977344460' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/115485625977344460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/115485625977344460'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2006/08/birding-in-bannerghatta.html' title='Birding in Bannerghatta'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-115485064835296718</id><published>2006-08-06T00:43:00.000-07:00</published><updated>2006-08-06T00:50:48.366-07:00</updated><title type='text'>Lighting a mosquito coil ...</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://static.flickr.com/57/207823082_ff8d90e81b.jpg?v=0"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px;" src="http://static.flickr.com/57/207823082_ff8d90e81b.jpg?v=0" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-115485064835296718?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/115485064835296718/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=115485064835296718' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/115485064835296718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/115485064835296718'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2006/08/lighting-mosquito-coil.html' title='Lighting a mosquito coil ...'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-115484558516314580</id><published>2006-08-05T23:17:00.000-07:00</published><updated>2009-04-01T03:24:43.728-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sahi'/><title type='text'>Blog for Sahi</title><content type='html'>Created a &lt;a href="http://sahitest.blogspot.com"&gt;new blog&lt;/a&gt; for Sahi since there seem to be too many posts just on Sahi here.&lt;br /&gt;&lt;br /&gt;That said,&lt;br /&gt;&lt;a href="http://sahitest.blogspot.com/2006/08/sahi-nightly-build-2006-08-06-released.html"&gt;Release 2006-08-06 with file upload facility has just come out&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sahitest.blogspot.com/2006/08/toggling-proxy-on-browsers.html"&gt;Toggling proxy on IE became easier with toggle_IE_proxy.exe and ProxyPal&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And tons of thanks to Sriram Narayanan (Ram) for creating toggle_IE_proxy.exe&lt;br /&gt;Seen few people who attack someone else's problem with such vigour and effect.&lt;br /&gt;Taught me something...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-115484558516314580?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://sahitest.blogspot.com' title='Blog for Sahi'/><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/115484558516314580/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=115484558516314580' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/115484558516314580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/115484558516314580'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2006/08/blog-for-sahi.html' title='Blog for Sahi'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-115432035763707448</id><published>2006-07-30T21:32:00.000-07:00</published><updated>2009-04-01T03:24:43.728-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sahi'/><title type='text'>Automated file uploads, anyone?</title><content type='html'>Inspite of browsers playing spoil sport,&lt;br /&gt;Sahi now handles file uploads too!&lt;br /&gt;&lt;br /&gt;The strategy was to intercept the request in the proxy, read the file off the file system and insert it into the multipart request. &lt;br /&gt;&lt;br /&gt;A workaround yes, but it at least works around!&lt;br /&gt;&lt;br /&gt;Good thing is, it even records and plays back the file upload.&lt;br /&gt;&lt;br /&gt;Code?&lt;br /&gt;_setFile(_file("id"), "C:\\abc\\efg.jpg");&lt;br /&gt;&lt;br /&gt;The file has to be present on that path on the machine running the proxy.&lt;br /&gt;&lt;br /&gt;Coming up in the next build ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-115432035763707448?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/115432035763707448/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=115432035763707448' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/115432035763707448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/115432035763707448'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2006/07/automated-file-uploads-anyone.html' title='Automated file uploads, anyone?'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-115424180630378784</id><published>2006-07-29T23:43:00.000-07:00</published><updated>2009-04-01T03:44:06.917-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Interesting link on TDD and opinions</title><content type='html'>&lt;a href="http://www.codinghorror.com/blog/archives/000640.html"&gt;Interesting link on TDD and opinions&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-115424180630378784?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.codinghorror.com/blog/archives/000640.html' title='Interesting link on TDD and opinions'/><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/115424180630378784/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=115424180630378784' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/115424180630378784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/115424180630378784'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2006/07/interesting-link-on-tdd-and-opinions.html' title='Interesting link on TDD and opinions'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-115383723944575100</id><published>2006-07-25T07:09:00.000-07:00</published><updated>2006-07-25T07:20:39.463-07:00</updated><title type='text'>A salute to the medicos</title><content type='html'>With immense gratitude do I write this.&lt;br /&gt;&lt;br /&gt;My love for sports and my ignorance of the fragility of the human body made me totally tear my ACL ligament in my right knee and was rendered limping for more than a year. I could never imagine myself playing ever again.&lt;br /&gt;&lt;br /&gt;But after 2 surgeries on my knee to reconstruct my ligament and a long lull and some intermittent exercises I ran the half marathon a year back and now for the past one month I have been doing what I thought was absolutely impossible then - playing football. &lt;br /&gt;&lt;br /&gt;Last weekend was kind of a proof of concept for me when after a good exhausting game of football, I went cycling for some 80 kms the next day.&lt;br /&gt;&lt;br /&gt;Thanks to those doctors who let me experience the feeling of wellness that I feel now.&lt;br /&gt;&lt;br /&gt;And hey life, I am back!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-115383723944575100?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/115383723944575100/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=115383723944575100' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/115383723944575100'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/115383723944575100'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2006/07/salute-to-medicos.html' title='A salute to the medicos'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-115383638865659394</id><published>2006-07-25T07:06:00.000-07:00</published><updated>2006-07-25T23:07:43.840-07:00</updated><title type='text'>Waiting for Build?</title><content type='html'>Our team's love for anagrams made Nikhil and I come together to make this simple timepass site called &lt;a href="http://www.waitingforbuild.com"&gt;http://www.waitingforbuild.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We atleast no longer pester each other for anagrams. Just hit the site and move around the letters.&lt;br /&gt;&lt;br /&gt;It has some cool (yuck!) dhtml stuff too! ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-115383638865659394?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.waitingforbuild.com' title='Waiting for Build?'/><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/115383638865659394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=115383638865659394' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/115383638865659394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/115383638865659394'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2006/07/waiting-for-build.html' title='Waiting for Build?'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-114983776224179818</id><published>2006-06-09T00:12:00.000-07:00</published><updated>2009-04-01T03:24:43.728-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sahi'/><title type='text'>Sahi Nightly Build 2006-06-06 released</title><content type='html'>Tested with 200 consecutive tests.&lt;br /&gt;&lt;br /&gt;Made the following changes:&lt;br /&gt;&lt;br /&gt;* Fixed bug for some submitted pages not working properly on IE&lt;br /&gt;* Added socket pool to prevent Connect exceptions when there are a lot of tests&lt;br /&gt;* Fixed bug to prevent injection of html code into js files&lt;br /&gt;* Added documentation for _callServer and a few other apis&lt;br /&gt;* Displaying an error page when remote server is down. Tests do not stop anymore.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-114983776224179818?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://sourceforge.net/project/showfiles.php?group_id=151639' title='Sahi Nightly Build 2006-06-06 released'/><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/114983776224179818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=114983776224179818' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/114983776224179818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/114983776224179818'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2006/06/sahi-nightly-build-2006-06-06-released.html' title='Sahi Nightly Build 2006-06-06 released'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-114804606179242390</id><published>2006-05-19T06:38:00.000-07:00</published><updated>2009-04-01T03:24:43.728-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sahi'/><title type='text'>Sahi Flash Tutorial</title><content type='html'>A Flash tutorial has been added to the Sahi home page.&lt;br /&gt;It can be accessed at &lt;a href="http://sahi.sourceforge.net/sahi_tutorial.html"&gt;http://sahi.sourceforge.net/sahi_tutorial.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If you like it, spread the word.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-114804606179242390?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/114804606179242390/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=114804606179242390' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/114804606179242390'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/114804606179242390'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2006/05/sahi-flash-tutorial.html' title='Sahi Flash Tutorial'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-114771325614532068</id><published>2006-05-15T10:11:00.000-07:00</published><updated>2009-04-01T03:24:43.729-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sahi'/><title type='text'>Sahi Nightly Build 2006-05-15 released</title><content type='html'>Release 2006-05-15 is a very enhanced release. &lt;br /&gt;It contains the following fixes: &lt;br /&gt; &lt;br /&gt;SSL certificates for proxy are generated automatically and on demand using keytool. &lt;br /&gt;This fixes the security alerts problem. &lt;br /&gt;Triggering keyboard events when value is set to textboxes. &lt;br /&gt;&lt;br /&gt;Fixed bug which caused improper functioning in popups. &lt;br /&gt;Fixed bug which caused null pointer exception when content type was not set. &lt;br /&gt;Fixed bug where _table(index) was not working properly. &lt;br /&gt;Fixed bug for multiple submit buttons on IE.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-114771325614532068?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://sourceforge.net/project/showfiles.php?group_id=151639' title='Sahi Nightly Build 2006-05-15 released'/><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/114771325614532068/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=114771325614532068' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/114771325614532068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/114771325614532068'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2006/05/sahi-nightly-build-2006-05-15-released.html' title='Sahi Nightly Build 2006-05-15 released'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-114741254186566436</id><published>2006-05-11T22:36:00.000-07:00</published><updated>2009-04-01T03:24:43.729-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sahi'/><title type='text'>Sahi ranked 55 out of 118720 projects</title><content type='html'>Current Sourceforge ranking of Sahi is 55. &lt;br /&gt;Out of a total of 118720 projects.&lt;br /&gt;Never dreamed of under 100.&lt;br /&gt;Hope sourceforge does not say "we have a flaw in the statistics" ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-114741254186566436?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/114741254186566436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=114741254186566436' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/114741254186566436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/114741254186566436'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2006/05/sahi-ranked-55-out-of-118720-projects.html' title='Sahi ranked 55 out of 118720 projects'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-114732413471084454</id><published>2006-05-10T22:00:00.000-07:00</published><updated>2009-04-01T03:24:43.729-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sahi'/><title type='text'>Under 150</title><content type='html'>Sahi's sourceforge ranking is now 146.&lt;br /&gt;Today's ego boost :)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sourceforge.net/project/stats/?group_id=151639&amp;ugn=sahi"&gt;http://sourceforge.net/project/stats/?group_id=151639&amp;ugn=sahi&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-114732413471084454?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/114732413471084454/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=114732413471084454' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/114732413471084454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/114732413471084454'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2006/05/under-150.html' title='Under 150'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-114728607908439000</id><published>2006-05-10T11:20:00.000-07:00</published><updated>2009-04-01T03:24:43.729-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sahi'/><title type='text'>Sahi - HTTPS support</title><content type='html'>Another 6 hrs of late night work yesterday &lt;br /&gt;and I have almost all my https woes solved.&lt;br /&gt;Even though Sahi could handle https before, &lt;br /&gt;it was using a single certificate for all https websites, &lt;br /&gt;causing browsers to report mismatch in the certificates. &lt;br /&gt;With a mix and match of on demand generation of certificates using keytool, &lt;br /&gt;and per website creation of certificates and some caching, &lt;br /&gt;I have Sahi handling SSL so smoothly that &lt;br /&gt;all I have to do is accept the certificates just once, &lt;br /&gt;when I first visit a site and then totally forget about it.&lt;br /&gt;&lt;br /&gt;If you have a https website to test, it is going to be a no brainer to automate it using Sahi. Await the next release. I shall post soon.&lt;br /&gt;&lt;br /&gt;Now the only big issue left is web pages from multiple domains embedded into the frames of a frameset.&lt;br /&gt;&lt;br /&gt;Of course there are a few bugs ... ;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-114728607908439000?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/114728607908439000/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=114728607908439000' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/114728607908439000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/114728607908439000'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2006/05/sahi-https-support.html' title='Sahi - HTTPS support'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-114590152064963909</id><published>2006-04-24T10:46:00.000-07:00</published><updated>2009-04-01T03:24:43.729-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sahi'/><title type='text'>Sahi - Nightly Build 2006-04-24 released</title><content type='html'>This release of Sahi has the following changes:&lt;br /&gt;&lt;br /&gt;The whole code base has been rewritten to be easily extendable.  &lt;br /&gt;Various optimizations have been made for speed. &lt;br /&gt;This release includes a few important bugfixes related to cookies.  &lt;br /&gt;APIs &lt;br /&gt;_dragDrop(elementToDrag, targetElementToDropOn) &lt;br /&gt;and &lt;br /&gt;_callServer("ServerClass_method") have been added. &lt;br /&gt; &lt;br /&gt;Documentation has been given a face lift.&lt;br /&gt;&lt;br /&gt;Check out &lt;a href="http://sahi.sourceforge.net/"&gt;http://sahi.sourceforge.net/&lt;/a&gt; for the changed look and feel.&lt;br /&gt;&lt;br /&gt;A mailing list &lt;a href="https://lists.sourceforge.net/lists/listinfo/sahi-users"&gt;sahi-users@lists.sourceforge.net&lt;/a&gt; has also been created.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-114590152064963909?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://sourceforge.net/project/showfiles.php?group_id=151639' title='Sahi - Nightly Build 2006-04-24 released'/><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/114590152064963909/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=114590152064963909' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/114590152064963909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/114590152064963909'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2006/04/sahi-nightly-build-2006-04-24-released.html' title='Sahi - Nightly Build 2006-04-24 released'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-114493816340952360</id><published>2006-04-13T07:22:00.000-07:00</published><updated>2009-04-01T03:24:43.729-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sahi'/><title type='text'>Sahi and Scriptaculous and lighttpd</title><content type='html'>Yogi's Stock Hive application and Scriptaculous demos had something very interesting in that they refused to work correctly when I used the Sahi proxy. &lt;br /&gt;This was purely the proxying part and had nothing to do with javascript handling.&lt;br /&gt;&lt;br /&gt;The problem apparently lay in the way cookies were being sent.&lt;br /&gt;Cookie headers are sent to the server as&lt;br /&gt;Cookie: cookie1=value1; cookie2=value2; cookie3=value3&lt;br /&gt;While rebuilding cookies on the proxy, it was being sent as &lt;br /&gt;Cookie: cookie1=value1; cookie2=value2; cookie3=value3&lt;span style="font-weight:bold;"&gt;;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The last semicolon after value3 was the root of the problem.&lt;br /&gt;lighttpd seemed to think that the value of cookie3 was 'value3;' thus missing the session cookie.&lt;br /&gt;&lt;br /&gt;The &lt;a href="http://www.ietf.org/rfc/rfc2109.txt"&gt;RFC&lt;/a&gt; seems to say that this behaviour is right, but most mainstream web servers seem not to mind this.&lt;br /&gt;&lt;br /&gt;Crux is, Scriptaculous and Stock Hive both work now through the proxy. Now to get the AJAX and dhtml rich Scriptaculous to be scripted and played back.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-114493816340952360?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/114493816340952360/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=114493816340952360' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/114493816340952360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/114493816340952360'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2006/04/sahi-and-scriptaculous-and-lighttpd.html' title='Sahi and Scriptaculous and lighttpd'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-114364841101144350</id><published>2006-03-29T08:06:00.000-08:00</published><updated>2009-04-01T03:44:06.917-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Testing SMTP settings</title><content type='html'>Came upon this link for testing SMTP server using telnet.&lt;br /&gt;&lt;a href="http://www.petri.co.il/test_smtp_service.htm"&gt;http://www.petri.co.il/test_smtp_service.htm&lt;/a&gt;.&lt;br /&gt;Was very useful in verifying whether the settings are right before deploying our j2ee app on a remote server.&lt;br /&gt;Also realized that the WebLogic domain needs a restart if settings in the JNDI Mail Session are changed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-114364841101144350?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/114364841101144350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=114364841101144350' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/114364841101144350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/114364841101144350'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2006/03/testing-smtp-settings.html' title='Testing SMTP settings'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-114296282857977661</id><published>2006-03-21T09:40:00.000-08:00</published><updated>2010-04-28T23:37:16.544-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sahi'/><title type='text'>Sahi vs Selenium vs Watir</title><content type='html'>&lt;a href="http://blog.sahi.co.in/2010/04/sahi-vs-selenium.html"&gt;Updated thorough comparison of Sahi vs. Selenium&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b style="color:red"&gt;THIS IS A VERY OLD COMPARISON AND IS NOT TRUE ANYMORE&lt;/b&gt;  Click here for the latest: &lt;a href="http://blog.sahi.co.in/2010/04/sahi-vs-selenium.html"&gt;Updated thorough comparison of Sahi vs. Selenium&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A brief comparison. Please let me know if any information is incorrect.&lt;br /&gt;Added Watir related data from Chris McMohan's comments:&lt;br /&gt;&lt;br /&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Feature&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;Watir&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;Selenium&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;Sahi&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Browser based&lt;/td&gt;&lt;td&gt;&lt;b&gt;yes&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;yes&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;yes&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Browser type independent (IE, Firefox etc)&lt;/td&gt;&lt;td&gt;IE &amp;amp; FireFox&lt;/td&gt;&lt;td&gt;&lt;b&gt;yes&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;yes&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Scriptable/programmable (manageable/refactorable)&lt;/td&gt;&lt;td&gt;&lt;b&gt;yes&lt;/b&gt;&lt;/td&gt;&lt;td&gt;not natively, but using ruby&lt;/td&gt;&lt;td&gt;&lt;b&gt;yes &lt;/b&gt;(uses javascript)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Recorder&lt;/td&gt;&lt;td&gt;&lt;b&gt;yes&lt;/b&gt;&lt;/td&gt;&lt;td&gt;Only on Firefox. &lt;/td&gt;&lt;td&gt;&lt;b&gt;yes&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Object spy&lt;/td&gt;&lt;td&gt;no&lt;/td&gt;&lt;td&gt;no&lt;/td&gt;&lt;td&gt;&lt;b&gt;yes &lt;/b&gt;(hovering on any element,shows its accessor)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Simultaneuos playback of multiple scripts(reduces playback time)&lt;/td&gt;&lt;td&gt;&lt;b&gt;yes&lt;/b&gt;&lt;/td&gt;&lt;td&gt;no&lt;/td&gt;&lt;td&gt;&lt;b&gt;yes&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Multiple domain support (go from google.com to thoughtworks.com)&lt;/td&gt;&lt;td&gt;&lt;b&gt;yes&lt;/b&gt;&lt;/td&gt;&lt;td&gt;no&lt;/td&gt;&lt;td&gt;&lt;b&gt;yes&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Frames and popup support&lt;/td&gt;&lt;td&gt;&lt;b&gt;yes&lt;/b&gt;&lt;/td&gt;&lt;td&gt;has problems&lt;/td&gt;&lt;td&gt;&lt;b&gt;yes&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Ant support (helps continuous integration)&lt;/td&gt;&lt;td&gt;&lt;b&gt;yes&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;yes&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;yes&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Multi language (non-ascii character)support&lt;/td&gt;&lt;td&gt;&lt;b&gt;yes&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;yes&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;HTTPS support&lt;/td&gt;&lt;td&gt;&lt;b&gt;yes&lt;/b&gt;(Protocol independent)&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;yes&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Learning curve&lt;/td&gt;&lt;td&gt;Learn Ruby&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;Recorder reduces the need to write code.TextPad Clip Libraries can be used too.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Language of scripting&lt;/td&gt;&lt;td&gt;Ruby - not native to the browser&lt;/td&gt;&lt;td&gt;Ruby - not native to the browser&lt;/td&gt;&lt;td&gt;Javascript - native to the browser andhence easily extendable.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Web-app independent&lt;/td&gt;&lt;td&gt;&lt;b&gt;yes&lt;/b&gt;&lt;/td&gt;&lt;td&gt;no - needs to be deployed with app&lt;/td&gt;&lt;td&gt;&lt;b&gt;yes&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;OS Independent&lt;/td&gt;&lt;td&gt;no&lt;/td&gt;&lt;td&gt;&lt;b&gt;yes&lt;/b&gt;&lt;/td&gt;&lt;td&gt;&lt;b&gt;yes&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Comments from Chris McMohan which I have incorporated into this comparison:&lt;br /&gt;Actually, Watir has&lt;br /&gt;a Firefox interface (version 1.0 just released, called "FireWatir")&lt;br /&gt;a Recorder&lt;br /&gt;methods intended for use at the command line like "show_links" so an object spy isn't necessary&lt;br /&gt;Simultaneous playback (via Ruby threads)&lt;br /&gt;Frames support (really excellent frames support)&lt;br /&gt;Popup support native in version 1.5 (coming soon)&lt;br /&gt;Ant support (not sure what you mean, but Ruby can be integrated with CruiseControl)&lt;br /&gt;non-ascii character support (via Ruby)&lt;br /&gt;Learning curve: Watir *is* a DSL for scripting the IE DOM. Ruby is just a bonus. :)&lt;br /&gt;&lt;br /&gt;&lt;b style="color:red"&gt;THIS IS A VERY OLD COMPARISON AND IS NOT TRUE ANYMORE&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-114296282857977661?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://sahi.sourceforge.net/' title='Sahi vs Selenium vs Watir'/><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/114296282857977661/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=114296282857977661' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/114296282857977661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/114296282857977661'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2006/03/sahi-vs-selenium-vs-watir.html' title='Sahi vs Selenium vs Watir'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-114288889300699592</id><published>2006-03-20T13:08:00.000-08:00</published><updated>2009-04-01T03:24:43.730-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sahi'/><title type='text'>Sahi in London</title><content type='html'>"That was amazing!"&lt;br /&gt;"That's the coolest thing I have seen!"&lt;br /&gt;"If you haven't seen the demo, you should see it."&lt;br /&gt;"Convincing customers to use this tool should be very very easy."&lt;br /&gt;&lt;br /&gt;A few remarks from those who saw a demo of Sahi in the ThoughtWorks UK office.&lt;br /&gt;&lt;br /&gt;I am grateful for the appreciation. &lt;br /&gt;&lt;br /&gt;Just made another release of Sahi. Changes include automatic opening of Controller Window, and syntax highlighting files for TextPad.&lt;br /&gt;&lt;br /&gt;Tech support emails have just started trickling in and it feels good to know someone else in this world is also finding this tool useful!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-114288889300699592?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/114288889300699592/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=114288889300699592' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/114288889300699592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/114288889300699592'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2006/03/sahi-in-london.html' title='Sahi in London'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-113979198839214827</id><published>2006-02-12T16:53:00.000-08:00</published><updated>2009-04-01T03:33:51.335-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='browsers'/><title type='text'>Cookies and policies</title><content type='html'>Never knew IE6 and the newer browsers had security restrictions on cookies. Heard for the first time about "compact privacy policy" and "third-party cookies".&lt;br /&gt;&lt;br /&gt;A few good links.&lt;br /&gt;&lt;a href="http://www.w3.org/TR/2001/NOTE-p3pdeployment-20010510"&gt;http://www.w3.org/TR/2001/NOTE-p3pdeployment-20010510&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.w3.org/P3P/"&gt;http://www.w3.org/P3P/&lt;/a&gt;&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/283185/EN-US/"&gt;http://support.microsoft.com/kb/283185/EN-US/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-113979198839214827?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/113979198839214827/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=113979198839214827' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/113979198839214827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/113979198839214827'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2006/02/cookies-and-policies.html' title='Cookies and policies'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-113895429062538301</id><published>2006-02-03T00:11:00.000-08:00</published><updated>2009-04-01T03:24:00.934-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sahi'/><title type='text'>Sahi vs ...</title><content type='html'>2 weeks of work and the newly released &lt;a href="http://sahi.sourceforge.net"&gt;Sahi&lt;/a&gt; has a better controller GUI, better log reporting, and some bugfixes for multidomain support.&lt;br /&gt;&lt;br /&gt;I have been asked many times as to why I am developing yet another web testing tool. My answer is that what we have so far really does not address complex web pages with frames, popups and frame breaking code.&lt;br /&gt;&lt;br /&gt;As I realized on watching the progress of development on Selenium, it seems like people have started moving towards Ruby Selenium as it gives better control for the QA to organize code. The popularity of Selenium also seems to say that a visual indication for tests run is very much wanted. And of course the Selenium recorder has been really appreciated.&lt;br /&gt;&lt;br /&gt;Combining all these concepts, but taking a totally different approach of injecting code into web pages (unintrusively as far as I know) which attaches handlers to elements, Sahi is able to do absolutely anything at all with the browser and the web page.&lt;br /&gt;&lt;br /&gt;The Sahi script is essentially javascript, but is parsed on the Sahi proxy to achieve objectives like delayed execution.&lt;br /&gt;&lt;br /&gt;A recorder makes the tool extremely useful as one can easily write mundane scripts, and then refactor it. &lt;br /&gt;&lt;br /&gt;One place where it beats professional tools is in multithreaded playback and the way it does not require the test screens to be in focus, leaving you to carry on with your work, while it chugs (sails really)  away in the background.&lt;br /&gt;&lt;br /&gt;There are still quite a few bugs to be fixed and functionality to be added, but I think it is for grabs for people who wish to use a testing tool with almost all the features of a professional tool and more, but of course, want them absolutely free ;)&lt;br /&gt;&lt;br /&gt;Putting Sahi on sourceforge has been one of my more satisfying moves, just for the fact that the daily statistics of the number of downloads really keeps my enthusiasm to add and rectify functionality to it. And of course it has made ego surfing more pleasureable!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-113895429062538301?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/113895429062538301/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=113895429062538301' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/113895429062538301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/113895429062538301'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2006/02/sahi-vs.html' title='Sahi vs ...'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-113508739101461704</id><published>2005-12-20T06:03:00.000-08:00</published><updated>2005-12-20T06:03:11.046-08:00</updated><title type='text'>Random Fart</title><content type='html'>Q: Why is an empty String unethical or immoral?&lt;br /&gt;A: Because it does not have any character! wah wah! wah wah!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-113508739101461704?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/113508739101461704/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=113508739101461704' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/113508739101461704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/113508739101461704'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2005/12/random-fart.html' title='Random Fart'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-113448334607018035</id><published>2005-12-13T06:15:00.000-08:00</published><updated>2009-04-01T03:34:27.318-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='browsers'/><title type='text'>Javascript sleep() or wait()</title><content type='html'>While thinking on a solution for handling javascript "alerts" in &lt;a href="http://sahi.sourceforge.net/"&gt;Sahi&lt;/a&gt;, it suddenly occured to me that a &lt;b&gt;sleep()&lt;/b&gt; or &lt;b&gt;wait()&lt;/b&gt; method can be implemented in javascript with the help of a synchronous XMLHttp request to the server.&lt;br /&gt;It goes like:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;script&amp;gt;&lt;br /&gt;function sahiIsIE(){&lt;br /&gt;var browser = navigator.appName;&lt;br /&gt;return browser == "Microsoft Internet Explorer";&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function sahiCreateRequestObject(){&lt;br /&gt;var obj;&lt;br /&gt;if(sahiIsIE()){&lt;br /&gt;obj = new ActiveXObject("Microsoft.XMLHTTP");&lt;br /&gt;}else{&lt;br /&gt;obj = new XMLHttpRequest();&lt;br /&gt;}&lt;br /&gt;return obj;&lt;br /&gt;}&lt;br /&gt;&lt;b&gt;&lt;br /&gt;function sahiSendToServer(url){&lt;br /&gt;try{&lt;br /&gt;var http = sahiCreateRequestObject();&lt;br /&gt;var url = url;&lt;br /&gt;http.open("GET", url, false);&lt;br /&gt;http.send(null);&lt;br /&gt;return http.responseText;&lt;br /&gt;  }catch(ex){throw ex;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function sleep(ms){&lt;br /&gt;sahiSendToServer("http://localhost:9999/dyn/sleep?ms="+ms);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;var start = new Date();&lt;br /&gt;sleep(1000);&lt;br /&gt;alert((new Date()) - start);&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The url http://localhost:9999/dyn/sleep?ms=1000 does a Thread.sleep(1000);&lt;br /&gt;&lt;br /&gt;Of course there is the network delay which makes the time out slightly greater than 1000 ms;&lt;br /&gt;&lt;br /&gt;[Dec 20 2007] NOTE: This method can give you a way to invoke a sleep on the browser, but it will also kind of freeze the browser which may not be what you want. I solved this problem in a different way for Sahi.  (&lt;a href="http://narayanraman.blogspot.com/2007/12/javascript-sleep-or-wait-in-sahi.html"&gt;javascript-sleep-or-wait-in-sahi.html&lt;/a&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-113448334607018035?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/113448334607018035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=113448334607018035' title='16 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/113448334607018035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/113448334607018035'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2005/12/javascript-sleep-or-wait.html' title='Javascript sleep() or wait()'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>16</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-113411781679185926</id><published>2005-12-09T00:43:00.000-08:00</published><updated>2005-12-09T00:43:36.860-08:00</updated><title type='text'>Covered two-wheelers (with AC?) for Bangalore</title><content type='html'>While walking to office at 9 AM, I observed that out of 96 cars that I counted, 72 had just the driver in it! Of the 24 left, only 6 had more than 2 persons! Every Scorpio(6) and Innova(2) had only the driver in it!&lt;br /&gt;&lt;br /&gt;Could covered two-wheelers (with AC?) do the job? &lt;br /&gt;&lt;br /&gt;And Scorpios and Innovas should not start if the load is less than that of 3 passengers!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-113411781679185926?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/113411781679185926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=113411781679185926' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/113411781679185926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/113411781679185926'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2005/12/covered-two-wheelers-with-ac-for.html' title='Covered two-wheelers (with AC?) for Bangalore'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-113386073221610641</id><published>2005-12-06T01:18:00.000-08:00</published><updated>2009-04-01T03:29:27.053-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wildlife'/><title type='text'>Tiger Numbers</title><content type='html'>I was in Panna Tiger Reserve last week and came across something quite disturbing.&lt;br /&gt;&lt;br /&gt;While the official figures for the number of tigers in the Park is around 35, locals and forest guides who track tigers say that only 6-7 have been sighted/presence ascertained in recent times. Liberal estimates place the number of tigers in the Park at around 15.&lt;br /&gt;&lt;br /&gt;While I have no authority on reporting these numbers, one of the reasons for these figures not being reported from other directions, seems to be this:&lt;br /&gt;&lt;br /&gt;* Forest officials are posted to a particular reserve for a fixed amount of time (3 years?). During this period, if they report any change in tiger numbers, they are liable to be questioned and pestered by the media and law enforcement officials. So even if an official inherits a reserve with lesser tigers than documented, he is not likely to report it.&lt;br /&gt;&lt;br /&gt;* Researchers in the park depend on the forest officials for permits and for access to the forests. They cannot go against the forest officials by reporting this.&lt;br /&gt;&lt;br /&gt;So that leaves nobody to actually report figures, which is disturbing.&lt;br /&gt;&lt;br /&gt;The law and media somehow, convolutedly, seem to right now act as a deterrant in the conservation process. What tigers have gone, have gone. The need of the hour is to preserve what is left rather than punish those who have erred.&lt;br /&gt;&lt;br /&gt;If there was some way of emancipating the forest officials once, so that figures are voluntarily disclosed truly (with the guarantee that no action will be taken against them), we may be able to get the correct numbers, and remedial measures can be undertaken with speed. Right now, the problem areas never come to light until past the time of debacle.&lt;br /&gt;&lt;br /&gt;Additionally, researchers should not have to depend on forest officials for their permits. I think there is already something being done in this direction, though I do not have the details.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-113386073221610641?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/113386073221610641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=113386073221610641' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/113386073221610641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/113386073221610641'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2005/12/tiger-numbers.html' title='Tiger Numbers'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-113384311085590550</id><published>2005-12-05T20:25:00.000-08:00</published><updated>2005-12-06T12:14:09.190-08:00</updated><title type='text'>Random Quote</title><content type='html'>I was not staring. You just happened to fall in my gaze of contemplation.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-113384311085590550?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/113384311085590550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=113384311085590550' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/113384311085590550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/113384311085590550'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2005/12/random-quote.html' title='Random Quote'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-113251191548228417</id><published>2005-11-20T10:38:00.000-08:00</published><updated>2005-12-06T06:24:28.270-08:00</updated><title type='text'>Vacation</title><content type='html'>Am in Chennai, and wrote a lot of documentation for Sahi and uploaded them on the website. Excited about my travel plans to the jungles of Madhya Pradesh.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-113251191548228417?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/113251191548228417/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=113251191548228417' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/113251191548228417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/113251191548228417'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2005/11/vacation.html' title='Vacation'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-113161351937893693</id><published>2005-11-10T00:53:00.000-08:00</published><updated>2005-12-06T06:26:04.196-08:00</updated><title type='text'>Moth in a lampshade</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/4392/1618/1600/moth.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/4392/1618/320/moth.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;A snap I had taken in Goa. This moth was sitting inside a light bulb reflector. This was taken with a Nokia 6610i camera!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-113161351937893693?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/113161351937893693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=113161351937893693' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/113161351937893693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/113161351937893693'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2005/11/moth-in-lampshade.html' title='Moth in a lampshade'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-113159996044685755</id><published>2005-11-09T21:19:00.000-08:00</published><updated>2009-04-01T03:29:27.053-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wildlife'/><title type='text'>Bird Watching</title><content type='html'>A slightly harsh chirp and a little movement like a small ghost in motion. Or maybe just a white ribbon with a black head, which has acquired  a life of its own? A possessed ribbon, may be? Well, even as reason and experience tells me that what I see is the adult male Paradise Flycatcher, I can't rip my eyes off the bird. As I watch, it flits from its perch and makes a rounded flight, a twist here a turn there with its two long, white, tail feathers making undulating movements moving not very unlike the Olympic gymnasts and goes back to exactly where it started from. A chirp again.&lt;br /&gt;&lt;br /&gt;Nearby is its female, an orangish brown bird, without the long tail feathers and with a black head. Quite unrelated to our gymnast for the uninitiated! But there goes nature in another of its bewildering and bewitching variations. A delight to the beholder but a beautiful moment gone unnoticed for the less visually adept.&lt;br /&gt;&lt;br /&gt;Of all things that have caught my fascination, nothing has so far surpassed the joy that I derive from bird-watching. I had always been awed by birds, but not because of the cliched reasons of their flight or their colors or their songs.&lt;br /&gt;&lt;br /&gt;It was as if I was just destined to love the avian fauna, no explicit reasons whatsoever. (The same extends to my love for animals too). The one reason I do sometimes think is true is their freedom and their so distinctly non-human behavior. Or maybe I am just curious about these creatures in an intellectual sort of way... I do not know and for the time being ascribe none of these reasons to my passion.&lt;br /&gt;&lt;br /&gt;Initially, we used to look out for newer and as-yet-unseen-by-us species of birds and used to compete as to who has the bigger bird list. But now things are changed, it doesnot matter what bird it is. Be it the excitement of a fleeting glimpse of an Indian Pitta, or the tranquil movements of the bee eaters or the swallows, they instill me with a sense of appreciation for those things untouched by man. And I could just watch the fantail flycatchers and the ioras or hear the orioles and thrushes and waft away to sleep on the bank of some forest stream unconcerned about all else in the world! If only I did not have such a human mind, with its wants and greed! May be I will break away one day, but that day is not in the near future, as far as I can see!&lt;br /&gt;&lt;br /&gt;Decided to record my bird sightings on the web by creating &lt;a href="http://www.treepie.org"&gt;treepie.org&lt;/a&gt;. &lt;br /&gt;Been using it on and off. Need to be more regular and may be get others to use it too.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-113159996044685755?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.geocities.com/nari6ul/hobbies.htm' title='Bird Watching'/><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/113159996044685755/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=113159996044685755' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/113159996044685755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/113159996044685755'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2005/11/bird-watching.html' title='Bird Watching'/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-112963168887023314</id><published>2005-10-18T03:21:00.000-07:00</published><updated>2009-04-01T03:43:11.899-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'></title><content type='html'>If double clicking on a folder on the right hand pane of explorer opens a new window all the time, here is the fix. I know this works for XP.&lt;br /&gt;Open explorer&lt;br /&gt;Go to Tools &gt; Folder Options... &gt; File Types (tab)&lt;br /&gt;Select "File Folder" and click on "Advanced" button.&lt;br /&gt;Add a new junk entry by clicking "New". &lt;br /&gt;Enter values "To DOS" and "cmd.exe" in the two text boxes and press "OK".&lt;br /&gt;Then select "To DOS" and click "Set Default" (&lt;b&gt;This is very important&lt;/b&gt;)&lt;br /&gt;Click "OK", "OK".&lt;br /&gt;Close explorer.&lt;br /&gt;Open regedit (Start &gt; run &gt; regedit &gt; OK)&lt;br /&gt;Search for "To DOS".&lt;br /&gt;Delete this node from the "shell" folder (HKEY_CLASSES_ROOT\Folder\shell).&lt;br /&gt;Close regedit and restart explorer and the problem should be fixed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-112963168887023314?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/112963168887023314/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=112963168887023314' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/112963168887023314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/112963168887023314'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2005/10/if-double-clicking-on-folder-on-right.html' title=''/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-112844504405319268</id><published>2005-10-04T09:53:00.000-07:00</published><updated>2009-04-01T03:29:27.053-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wildlife'/><title type='text'></title><content type='html'>Weekend trip to Bheemeshwari.&lt;br&gt;&lt;br /&gt;Had a great weekend on the bank of the Kaveri at the Jungle Lodges and Resorts' log huts. &lt;br&gt;The tree nets, hammocks, sweltering heat, AC rooms, evening party, blackjack, pictionary, dumb charades, coracle ride, the skipped camp fire, the river side darkness and the (aargh) spots of flash lights, the singing, the morning trek, elephant rides, baby and horny elephants, river rafting, black jack in the jungle and beer in the car. A great weekend with fun people. Very happy :)&lt;br&gt;&lt;br /&gt;Snaps at &lt;a href="http://www.flickr.com/photos/59787849@N00/"&gt;http://www.flickr.com/photos/59787849@N00/&lt;/a&gt;&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/4392/1618/1600/PA020002.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/4392/1618/320/PA020002.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/4392/1618/1600/PA020012.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;" src="http://photos1.blogger.com/blogger/4392/1618/320/PA020012.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-112844504405319268?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/112844504405319268/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=112844504405319268' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/112844504405319268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/112844504405319268'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2005/10/weekend-trip-to-bheemeshwari.html' title=''/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-112843609015615400</id><published>2005-09-22T07:26:00.000-07:00</published><updated>2009-04-01T03:29:27.053-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wildlife'/><title type='text'></title><content type='html'>Some snaps from my Bandipur trip  with Andrew Tam and Rashmi on 17th and 18th Sept. 2005. One of my more eventful trips. Had a brilliant sighting of some 10-12 dholes (wild dogs). First time in my life. Paisa wasool in the first 15 minutes of the safari!&lt;br /&gt;Then we were mock charged not once but twice by a group of 6 elephants and a calf! The first time at a safe distance, but the second time very close and from side on. That was interesting! &lt;br&gt;&lt;br /&gt;The view of the eastern ghats from one of the peaks and the largeish full moon rising from the east were superb. Saw a lot of gaur while returning.&lt;br&gt;&lt;br /&gt;Spent the night at MC Resorts. &lt;br&gt;&lt;br /&gt;Sunday dawned and the morning safari was the typical uneventful second safari after the successful first one. Saw nothing.&lt;br&gt;&lt;br /&gt;The decision to hitch hike up to Himvad Gopal Swamy temple was good. We were tired but had lots of fun. Pure pleasure was written on Rashmi's face as we finally got the last stretch lift from a Sumo. &lt;br&gt;&lt;br /&gt;The rest was rest as we got a comfortable car ride down to Gundulpet. The lighting of Mysore palace in the evening was beautiful to say the least. A relaxed evening. and back home by bus.&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;a href="http://photos1.blogger.com/blogger/4392/1618/1600/IMG_0766.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/4392/1618/320/IMG_0766.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;td&gt;&lt;a href="http://photos1.blogger.com/blogger/4392/1618/1600/IMG_0762.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/4392/1618/320/IMG_07621.JPG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/4392/1618/1600/IMG_0781.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/blogger/4392/1618/320/IMG_0781.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-112843609015615400?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/112843609015615400/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=112843609015615400' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/112843609015615400'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/112843609015615400'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2005/09/some-snaps-from-my-bandipur-trip-with.html' title=''/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16916381.post-112723673432358858</id><published>2005-09-20T10:17:00.000-07:00</published><updated>2005-09-20T10:18:54.326-07:00</updated><title type='text'></title><content type='html'>Andrew Tam's reasoning seemed sound enough for me to start blogging.&lt;br /&gt;If enthusiasm wins over procrastination and lethargy, a few more words of arbitrariness may emerge.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16916381-112723673432358858?l=narayanraman.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://narayanraman.blogspot.com/feeds/112723673432358858/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16916381&amp;postID=112723673432358858' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/112723673432358858'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16916381/posts/default/112723673432358858'/><link rel='alternate' type='text/html' href='http://narayanraman.blogspot.com/2005/09/andrew-tams-reasoning-seemed-sound.html' title=''/><author><name>V. Narayan Raman</name><uri>http://www.blogger.com/profile/18094480866664974663</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='32' src='http://4.bp.blogspot.com/_94EzacITAcY/TSMtgcoJGoI/AAAAAAAAA20/d3W4xCjELqA/S220/_MG_3210%2B%2528193x200%2529.jpg'/></author><thr:total>0</thr:total></entry></feed>
