<?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-544829222357122795</id><updated>2012-01-23T18:03:37.740+05:30</updated><category term='Service Monitor'/><category term='mobile'/><category term='SQL reporting services'/><category term='CRM FetchXML Builder'/><category term='CLR Functions SQL server 2005/2008'/><category term='Radio therapy'/><category term='Cancer'/><category term='Performance analysis'/><category term='N2'/><category term='SQL 2005'/><category term='art of interviewing'/><category term='Performance profiling'/><category term='Protocols'/><category term='dynamic where clause'/><category term='Running Total'/><category term='Dynamic SQL for custom pagination'/><category term='Custom Control'/><category term='Flexigrid'/><category term='static IP'/><category term='CRM Record Counter'/><category term='Archealogy'/><category term='custom filtering'/><category term='Two dimensional tree'/><category term='FTP'/><category term='todo'/><category term='flexigrid client-side sorting'/><category term='Code generator for sql'/><category term='SMS'/><category term='Struts'/><category term='reports'/><category term='IIS6.0'/><category term='PDF'/><category term='Javascript'/><category term='ASP.Net CacheItemRemoved'/><category term='Timer based Applications'/><category term='Case email'/><category term='Secure POP3 client C#'/><category term='Garbage collection'/><category term='Firefox'/><category term='ROUND()'/><category term='FetchXML'/><category term='multiple websites in IIS'/><category term='Lookup'/><category term='filtering and sorting without using string concatenation'/><category term='ASP.Net'/><category term='testing'/><category term='LightBox2'/><category term='SQL Queries'/><category term='.NET'/><category term='Excel'/><category term='pattern) SQL server 2005'/><category term='MVC'/><category term='Lucknow'/><category term='Custom workflow activity'/><category term='POP3 client .NET'/><category term='Background process'/><category term='web applications'/><category term='web development'/><category term='Google calendar'/><category term='Flexigrid.Net'/><category term='FetchXML Builder'/><category term='sql injection'/><category term='CRM 4.0'/><category term='Photogallery'/><category term='String.Find(...'/><category term='Flexigrid ASP.NET'/><category term='shared IP'/><category term='HttpWatch'/><category term='System Tray applications'/><category term='Jquery'/><category term='ASP.Net MVC'/><category term='Struts.NET'/><category term='String.Search() SQL'/><category term='dedicated IP'/><category term='Time picker'/><category term='Historical places'/><category term='POP3'/><category term='SQL SSRS 2005 ROUND() N2'/><category term='Imambara'/><category term='IMAP'/><category term='task list'/><category term='Windows Services'/><category term='What makes my day'/><category term='grid.htc'/><category term='web services'/><category term='Java'/><category term='Custom Plugins'/><category term='C#'/><category term='pagination'/><category term='POP3 client C#'/><category term='MS CRM 4.0'/><category term='blackberry'/><category term='add-ons'/><category term='Resizable flexigrid columns'/><category term='dynamic sort clause'/><category term='Windows Applications for Services'/><category term='YSlow'/><category term='Chemo therapy'/><category term='Never miss a task'/><title type='text'>Kiran Banda</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>61</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-1112312789526852424</id><published>2011-10-20T23:41:00.002+05:30</published><updated>2011-10-21T00:04:59.887+05:30</updated><title type='text'>A Successful Software Engineer ...</title><content type='html'>It's appraisal time in my company and as usual we (as appraisers) try to remember the tasks performed by the appraisees and evaluate them on their performance - an exercise where the appraiser compares the performance of an appraisee against the expectations set.&lt;br /&gt;&lt;br /&gt;In this context, I attempt to find an answer to a question that's lingering in my mind for quite some time now - "who is a successful software engineer" ?&lt;br /&gt;&lt;br /&gt;One version is that a hardworking guy is more successful than someone that gets solutions working by magic / luck. Another version is that a smart way to succeed is to google for solutions all the time 'coz there is always someone else in the world that might have run into a problem that you have. Another version is that a mix of both the qualities - hardwork + smart googling is a good combination.&lt;br /&gt;&lt;br /&gt;Here is my version - sofware, to me, in the first place is not an original science - it's a derivative. Software engineers take the best ideas from all other sciences and real-world situations and try to model solutions. This inference mandates that a software engineer should be "observant". A software engineer should be able to think at a very basic level 'coz at the end we are going to feed the approach to a machine that has zero intelligence. The moral - "get your basics right".&lt;br /&gt;&lt;br /&gt;As I told you, software is a derivative field - I always try to mandate a s/w engineer to be up-to-date like a doctor. Now, the reason why I draw a similarity here is 'coz a doctor should be aware of latest drugs that are effective for the diseases in town. Similarly a s/w engineer that has to keep abreast of latest technologies (ofcourse in a given specialization) in order to be an effective solution provider and I don't think it's tough as we have Google (our best friend) that ensures that all the required information is just a click away.&lt;br /&gt;&lt;br /&gt;Last and the most important quality that I think a s/w engineer should have is "perserverance". We are dealing with machines and trying to teach a machine requires a lot of patience. When talent fails, patience prevails and this is true atleast in s/w industry.&lt;br /&gt;&lt;br /&gt;To summarize, a s/w engineer should be "observant", "up-to-date" and "persistent" inorder to be successful.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-1112312789526852424?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/1112312789526852424/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=1112312789526852424' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/1112312789526852424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/1112312789526852424'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2011/10/successful-software-engineer.html' title='A Successful Software Engineer ...'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-8232317787168033790</id><published>2011-10-04T15:07:00.016+05:30</published><updated>2011-10-04T18:36:30.162+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='task list'/><category scheme='http://www.blogger.com/atom/ns#' term='todo'/><category scheme='http://www.blogger.com/atom/ns#' term='Never miss a task'/><category scheme='http://www.blogger.com/atom/ns#' term='Google calendar'/><title type='text'>Never miss a task ...</title><content type='html'>&lt;div style="TEXT-ALIGN: left" dir="ltr" trbidi="on"&gt;These days I got so busy with lot of interesting things happening in my life and at work too. I don't see any motivation in thinking about anything else other than my 6 month old daughter :) With so much action that keeps one engrossed, it's quite natural that one forgets to attend to a few important things in life - things that one used to fulfill on time earlier, though. Some of the important things are - paying credit card, utility bills on time, wishing a friend or a relative on a birthday or an anniversary, etc. &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: left" dir="ltr" trbidi="on"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: left" dir="ltr" trbidi="on"&gt;Recently I ran into a situation where I forgot to maintain sufficient funds in one of my bank accounts (an account that I use to pay my home loan). I ended up paying a penalty that I would have avoided if I had check the balance in the account. I got to know of the penalty only after the bank issued me a note seeking my attention ! Now, there are various ways to remember such things. The ways could be as simple as writing down a list of "todos" on a piece of paper every day or adding reminders on your mobile phone. I find the latter to be a good option as we spend a significant part of our life with our mobile phones. &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: left" dir="ltr" trbidi="on"&gt;One other interesting option to keep track of tasks and get reminded is "Google calendar". Let me tell you that Google has some really cool things but I am not sure how many people make use of them. One such thing is - "I'm feeling lucky" button on a google search page which I think is the &lt;b&gt;least frequently used feature on a most frequently used web page&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I started using Google calendar to keep track of my tasks and get reminded over my mobile via SMS or an email and all this comes for free :)&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Let me introduce you to Google Calendar:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;You just need an account with Google/Gmail to be able to access Google Calendar.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Here is what you see after you log on to Google Calendar:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://4.bp.blogspot.com/-I8sfOj0JQbE/TorUqc3-VaI/AAAAAAAAB5M/tg3oqxjmnag/s1600/Calendar-Dashboard.png"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 320px; DISPLAY: block; HEIGHT: 142px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5659569707515008418" border="0" alt="" src="http://4.bp.blogspot.com/-I8sfOj0JQbE/TorUqc3-VaI/AAAAAAAAB5M/tg3oqxjmnag/s320/Calendar-Dashboard.png" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Create a new calendar or pick an existing Calendar on the left.&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Open the menu that's right next to the calendar and click on &lt;b&gt;Notifications&lt;/b&gt; as illustrated in the screenshot. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://1.bp.blogspot.com/-5WAKRow4EZU/TorVg0FpNOI/AAAAAAAAB5U/kNYSwA5zVmc/s1600/Calendar-Notifications-Menu.png"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 320px; DISPLAY: block; HEIGHT: 309px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5659570641459295458" border="0" alt="" src="http://1.bp.blogspot.com/-5WAKRow4EZU/TorVg0FpNOI/AAAAAAAAB5U/kNYSwA5zVmc/s320/Calendar-Notifications-Menu.png" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Set up your phone for the reminders on the page that follows. &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-vyDka4Ew2Fk/TorV8Tx3fXI/AAAAAAAAB5c/4Ys9yUfBEMo/s1600/Calendar-Setup-Phone.png"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; HEIGHT: 207px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5659571113822748018" border="0" alt="" src="http://1.bp.blogspot.com/-vyDka4Ew2Fk/TorV8Tx3fXI/AAAAAAAAB5c/4Ys9yUfBEMo/s320/Calendar-Setup-Phone.png" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Provide your phone number on the following screen.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/-RSVAlgApV5I/TorWNfHls1I/AAAAAAAAB5k/a8skbjB3MXM/s1600/Calendar-Phone_details.png"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px 0px 10px 10px; WIDTH: 320px; HEIGHT: 79px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5659571408924422994" border="0" alt="" src="http://3.bp.blogspot.com/-RSVAlgApV5I/TorWNfHls1I/AAAAAAAAB5k/a8skbjB3MXM/s320/Calendar-Phone_details.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Add an event &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://2.bp.blogspot.com/-DfqsbtFxoGw/TorWcE8lkxI/AAAAAAAAB5s/4q-Y1pO6Bq0/s1600/Calendar-AddEvent.png"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 320px; DISPLAY: block; HEIGHT: 225px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5659571659596993298" border="0" alt="" src="http://2.bp.blogspot.com/-DfqsbtFxoGw/TorWcE8lkxI/AAAAAAAAB5s/4q-Y1pO6Bq0/s320/Calendar-AddEvent.png" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Set up the schedule (you could set up recurring events too :))&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-x2kxg-znweE/TorWo1lUaqI/AAAAAAAAB50/13amhP9STE8/s1600/Calendar-Setup-Phone.png"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 320px; DISPLAY: block; HEIGHT: 207px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5659571878811167394" border="0" alt="" src="http://4.bp.blogspot.com/-x2kxg-znweE/TorWo1lUaqI/AAAAAAAAB50/13amhP9STE8/s320/Calendar-Setup-Phone.png" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Add a reminder and get notified :) &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;a href="http://4.bp.blogspot.com/-B8DsxhjKKcA/TorW2GV7pEI/AAAAAAAAB58/j1Gk-pCzTfo/s1600/Calendar-AddReminder-SMS.png"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 320px; DISPLAY: block; HEIGHT: 104px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5659572106648331330" border="0" alt="" src="http://4.bp.blogspot.com/-B8DsxhjKKcA/TorW2GV7pEI/AAAAAAAAB58/j1Gk-pCzTfo/s320/Calendar-AddReminder-SMS.png" /&gt;&lt;/a&gt; Based on the event definition (the description that you gave and the scheduling set up for the event), Google will send you an SMS.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Now tell me, is it possible to miss a task in life ? ;) &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-8232317787168033790?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/8232317787168033790/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=8232317787168033790' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/8232317787168033790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/8232317787168033790'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2011/10/never-miss-task.html' title='Never miss a task ...'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-I8sfOj0JQbE/TorUqc3-VaI/AAAAAAAAB5M/tg3oqxjmnag/s72-c/Calendar-Dashboard.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-4954411627445473724</id><published>2011-06-11T22:55:00.014+05:30</published><updated>2011-06-16T19:22:29.883+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Applications for Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Performance analysis'/><category scheme='http://www.blogger.com/atom/ns#' term='HttpWatch'/><category scheme='http://www.blogger.com/atom/ns#' term='Performance profiling'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='YSlow'/><category scheme='http://www.blogger.com/atom/ns#' term='web applications'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>Performance analysis ...</title><content type='html'>For the past 8 months I have been working on improving the performance of applications and most of them happen to be ASP.NET web applications.Like they say, performance analysis and tuning is an iterative process. There are no shortcuts to improve the performance of an application.&lt;br /&gt;&lt;br /&gt;Before I reveal a couple of tools that help developers identify performance bottlenecks in their applications, let me first talk about a few basic things - most often we (software developers) get feedback saying "the application is too slow (it sucks !)". Now, this is obviously not a welcome feedback. Novice developers might quickly say -"let's comment out all the time consuming code and the application is all set ;) " Well, that's not a bad idea, rather is an option at times.&lt;br /&gt;Okay, what are the areas that a developer should concentrate on when we observe that applications are performing badly - here is the list:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Memory usage and leaks&lt;/li&gt;&lt;li&gt;CPU usage&lt;/li&gt;&lt;li&gt;Amount of I/O (writing to disk, database, sockets, etc)&lt;/li&gt;&lt;li&gt;Time to render the application UI (applicable to windows, web applications)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;I tried the following tools and this post aims at helping those developers analysing and fine tuning the performance of applications:&lt;/p&gt;&lt;br /&gt;&lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr style="mso-yfti-irow: -1; mso-yfti-firstrow: yes"&gt;&lt;td style="BORDER-BOTTOM: medium none; BORDER-LEFT: #668CA1 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 239.4pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #668CA1; BORDER-TOP: #668CA1 1pt solid; BORDER-RIGHT: medium none" valign="top" width="319"&gt;&lt;p style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-yfti-cnfc: 5" class="MsoNormal"&gt;&lt;span style="color:white;"&gt;Name of the tool&lt;/span&gt;&lt;b&gt;&lt;span style="color:#ba000d;"&gt;&lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-BOTTOM: medium none; BORDER-LEFT: #668CA1 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 239.4pt; PADDING-RIGHT: 5.4pt; BACKGROUND: #668CA1; BORDER-TOP: #668CA1 1pt solid; BORDER-RIGHT: #668CA1 1pt solid; PADDING-TOP: 0in" valign="top" width="319"&gt;&lt;p style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-yfti-cnfc: 17" class="MsoNormal"&gt;&lt;span style="color:white;"&gt;Purpose&lt;/span&gt;&lt;b&gt;&lt;span style="color:#ba000d;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="mso-yfti-irow: 0"&gt;&lt;td style="BORDER-BOTTOM: #668CA1 1pt solid; BORDER-LEFT: #668CA1 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 239.4pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #668CA1 1pt solid; BORDER-RIGHT: medium none" valign="top" width="319"&gt;&lt;p style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-yfti-cnfc: 68" class="MsoNormal"&gt;&lt;span class="SpellE"&gt;&lt;b&gt;VMMap&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="BORDER-BOTTOM: #668CA1 1pt solid; BORDER-LEFT: #668CA1 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 239.4pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #668CA1 1pt solid; BORDER-RIGHT: #668CA1 1pt solid" valign="top" width="319"&gt;&lt;p style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-yfti-cnfc: 80" class="MsoNormal"&gt;&lt;span class="SpellE"&gt;VMMap&lt;/span&gt; is a process virtual&lt;br /&gt;and physical memory analysis utility. It shows a breakdown of a process's&lt;br /&gt;committed virtual memory types as well as the amount of physical memory&lt;br /&gt;(working set) assigned by the operating system to those types.&lt;/p&gt;&lt;p style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-yfti-cnfc: 80" class="MsoNormal"&gt;&lt;/p&gt;&lt;p style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-yfti-cnfc: 80" class="MsoNormal"&gt;&lt;span class="SpellE"&gt;VMMap&lt;/span&gt; is the ideal tool&lt;br /&gt;for developers wanting to understand and optimize their application's memory&lt;br /&gt;resource usage.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="mso-yfti-irow: 1"&gt;&lt;td style="BORDER-BOTTOM: medium none; BORDER-LEFT: #668CA1 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 239.4pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: medium none" valign="top" width="319"&gt;&lt;p style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-yfti-cnfc: 4" class="MsoNormal"&gt;&lt;span class="SpellE"&gt;&lt;b&gt;MemProfiler&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-BOTTOM: medium none; BORDER-LEFT: #668CA1 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 239.4pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: #668CA1 1pt solid; PADDING-TOP: 0in; mso-border-left-themecolor: accent2; mso-border-right-themecolor: accent2" valign="top" width="319"&gt;&lt;p style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-yfti-cnfc: 16" class="MsoNormal"&gt;.NET Memory Profiler is a powerful tool for finding&lt;br /&gt;memory leaks and optimizing the memory usage in programs written in C# or any&lt;br /&gt;other .NET language.&lt;/p&gt;&lt;p style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-yfti-cnfc: 16" class="MsoNormal"&gt;It helps in identifying memory leaks by collecting&lt;br /&gt;and comparing snapshots of .NET memory&lt;/p&gt;&lt;p style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-yfti-cnfc: 16" class="MsoNormal"&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="mso-yfti-irow: 2"&gt;&lt;td style="BORDER-BOTTOM: #668CA1 1pt solid; BORDER-LEFT: #668CA1 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 239.4pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #668CA1 1pt solid; BORDER-RIGHT: medium none; PADDING-TOP: 0in; mso-border-themecolor: accent2" valign="top" width="319"&gt;&lt;p style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-yfti-cnfc: 68" class="MsoNormal"&gt;&lt;b&gt;ANTS Memory and Performance Profiler&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-BOTTOM: #668CA1 1pt solid; BORDER-LEFT: #668CA1 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 239.4pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: #668CA1 1pt solid; BORDER-RIGHT: #668CA1 1pt solid" valign="top" width="319"&gt;&lt;p style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-yfti-cnfc: 80" class="MsoNormal"&gt;Available as part of .NET Developer Bundle from &lt;span class="SpellE"&gt;RedGate&lt;/span&gt;, this is the most powerful and user-friendly&lt;br /&gt;performance profiler that can profile the CPU and memory utilization of a&lt;br /&gt;.NET application (including locally hosted WPF XBAP applications)&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style="mso-yfti-irow: 3; mso-yfti-lastrow: yes"&gt;&lt;td style="BORDER-BOTTOM: #668CA1 1pt solid; BORDER-LEFT: #668CA1 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 239.4pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: medium none; PADDING-TOP: 0in" valign="top" width="319"&gt;&lt;p style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-yfti-cnfc: 4" class="MsoNormal"&gt;&lt;b&gt;HTTP Watch, Firebug, &lt;span class="SpellE"&gt;YSlow&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style="BORDER-BOTTOM: #668CA1 1pt solid; BORDER-LEFT: #668CA1 1pt solid; PADDING-BOTTOM: 0in; PADDING-LEFT: 5.4pt; WIDTH: 239.4pt; PADDING-RIGHT: 5.4pt; BORDER-TOP: medium none; BORDER-RIGHT: #668CA1 1pt solid; PADDING-TOP: 0in; mso-border-themecolor: accent2" valign="top" width="319"&gt;&lt;p style="LINE-HEIGHT: normal; MARGIN-BOTTOM: 0pt; mso-yfti-cnfc: 16" class="MsoNormal"&gt;These tools help capture the time it takes to&lt;br /&gt;download content from the web server to the client. These tools are&lt;br /&gt;applicable when profiling web applications.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-4954411627445473724?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/4954411627445473724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=4954411627445473724' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/4954411627445473724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/4954411627445473724'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2011/06/performance-analysis.html' title='Performance analysis ...'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-7952464113147704685</id><published>2011-04-22T16:29:00.009+05:30</published><updated>2011-06-11T23:24:41.964+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='art of interviewing'/><title type='text'>Parameter driven decisions ...</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/-DrOdz7FQkxs/TbHLsK3vW-I/AAAAAAAABls/bM30WEqqrKY/s1600/Interview.jpg"&gt;&lt;img style="MARGIN: 0px 0px 10px 10px; WIDTH: 182px; FLOAT: right; HEIGHT: 171px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5598479771491064802" border="0" alt="" src="http://3.bp.blogspot.com/-DrOdz7FQkxs/TbHLsK3vW-I/AAAAAAAABls/bM30WEqqrKY/s320/Interview.jpg" /&gt;&lt;/a&gt; It's been about 7 years since I started taking technical interviews and everytime I walk in to the interview room with a predefined set of parameters that I plan to evaluate the interviewee on. To me, an interview should be to evaluate a person on various parameters,define an acceptance criteria and thus determine if the interviewee has made it through the interview.&lt;br /&gt;&lt;br /&gt;I learnt the art of interviewing from my seniors and so far I have been successful in picking the talent that is relevant to the kind of job we do.It sounds foolish to me to evaluate a person on hi-fi concepts when the actual work doesn't involve applying any such concepts !&lt;br /&gt;&lt;br /&gt;In this post, I would like to talk about the homework that I do w.r.t parameters and the way I determine if a person fits in my organization/team.&lt;br /&gt;&lt;br /&gt;There are a bunch of parameters that I enlist and the set of parameters differ based on the person that I am going to interview.For example, for a fresh grad - it might not make sense to question on software design concepts while an experienced resource is expected to know such concepts.&lt;br /&gt;&lt;br /&gt;Since I only interview software developers/leads, here are a bunch of parameters (a 4-point formula)that I consider during my interview:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Analytical ability / problem solving skills&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;This is the very basic skill that we look for in a software engineer. We throw a problem that has low/medium complexity and we expect the interviewee to explain the approach to solve the problem followed by an implementation in his/her favorite programming language.&lt;br /&gt;&lt;br /&gt;With this parameter, I can determine if the person&lt;br /&gt;&lt;ul&gt;&lt;li&gt;understands the problem statement clearly&lt;/li&gt;&lt;li&gt;is clear with what needs to be achieved&lt;/li&gt;&lt;li&gt;has no assumptions&lt;/li&gt;&lt;li&gt;has a clear approach to solve the problem&lt;/li&gt;&lt;li&gt;is comfortable in mapping the approach to programming logic&lt;/li&gt;&lt;li&gt;is comfortable writing code&lt;/li&gt;&lt;li&gt;can think like a program, validates the logic, debugs and fixes the program logic to get it right&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Communication skills&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;We expect the interviewee to understand what we are trying to see (hoping that we are good at explaining things ;)). After we are done with our explanation of a problem statement, the interviewee has only two options - he/she got the problem right or he/she has "n" number of questions to be clarified. Now, verbal communication skill plays an important role 'coz the person has to explain what the gray areas are, explain the approach that he/she plans to follow towards solving the problem.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Eye-for-detail&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Most of the time, we ask people to talk about something that they worked on that made us feel excited about. Such a question serves two purposes:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The person tries to explain the technical challenges during the task and the way he/she went about overcome those challenges.&lt;/li&gt;&lt;li&gt;We can pick some items from his project and check to see if the person paid significant attention to the programming constructs that were used while solving a problem. Although most of us rely on Google for reusable code snippets, we expect the interviewee to have known what that "reusable code" does. (Things can't work like magic all the time, isn't it?) We expect the resources to know what they do and do (the best in) what they know&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Quest for smarter solutions and thirst for knowledge&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;I believe in the line - "you snooze, you lose" which means that you are no longer required if you have not updated yourself on the latest developments in your relevant competancy.&lt;br /&gt;&lt;br /&gt;We try to find out how the inteviewee tries to be up-to-date and if the guy is stuck in age old programming practices, we simply say "sorry" ;)&lt;br /&gt;&lt;br /&gt;I feel that no matter how many rounds of interview you conduct or how many questions you prepare to evaluate a person, your parameters are going to be in the above list (more or less).&lt;br /&gt;&lt;br /&gt;Once we fish out resources with our 4-point formula, the rest is up to HR and senior management :D&lt;br /&gt;&lt;br /&gt;Welcome to my team :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-7952464113147704685?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/7952464113147704685/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=7952464113147704685' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/7952464113147704685'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/7952464113147704685'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2011/04/parameter-driven-decisions.html' title='Parameter driven decisions ...'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-DrOdz7FQkxs/TbHLsK3vW-I/AAAAAAAABls/bM30WEqqrKY/s72-c/Interview.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-978029574798373408</id><published>2011-03-09T23:51:00.007+05:30</published><updated>2011-03-10T09:28:24.537+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Dynamic SQL for custom pagination'/><category scheme='http://www.blogger.com/atom/ns#' term='Code generator for sql'/><category scheme='http://www.blogger.com/atom/ns#' term='dynamic where clause'/><title type='text'>Steps to create stored procedure that can be used for custom pagination, sorting and filtering</title><content type='html'>In this post, let's see how to use the tool that talked about in my earlier post - &lt;a href="http://www.kiranbanda.in/2011/03/dynamic-sql-for-custom-pagination.html"&gt;Dynamic SQL for custom pagination ...&lt;/a&gt; to generate the sql stored procedure script.&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Define columns in the result as follows. Check the boxes &lt;b&gt;Allow Filtering&lt;/b&gt; and &lt;b&gt;Allow Sorting&lt;/b&gt; if only the columns need to participate in filtering and sorting logic respectively &lt;p&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 152px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5582288471173841202" border="0" alt="" src="http://3.bp.blogspot.com/-eX0X1vNZXUo/TXhFyc4TQTI/AAAAAAAABks/448uJCXGMe8/s400/CodeGenTool.png" /&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;Click &lt;b&gt;Generate Code&lt;/b&gt; menu to generate the stored procedure. The menu item launches a File Save dialog for you to save the generated script to a file folder.&lt;/li&gt;&lt;li&gt;Here is how the generated SQL script looks like:&lt;br /&gt;&lt;pre class="sql" name="code"&gt;&lt;br /&gt;/*******************&lt;br /&gt;* Operator Enums&lt;br /&gt;*  Conditions Enum :&lt;br /&gt;* -1 - No filter&lt;br /&gt;*  0 - Null&lt;br /&gt;*  1 - Not Null&lt;br /&gt;*  2 - Equals&lt;br /&gt;*  3 - NotEquals&lt;br /&gt;*  ---- for strings ---&lt;br /&gt;*  4 - StartsWith&lt;br /&gt;*  5 - EndsWith&lt;br /&gt;*  6 - Contains&lt;br /&gt;*  ---- for int, decimal, datetime ---&lt;br /&gt;*  7 - GreaterThan&lt;br /&gt;*  8 - GreaterThanOrEquals&lt;br /&gt;*  9 - LessThan&lt;br /&gt;*  10 - LessThanOrEquals&lt;br /&gt;*******************/&lt;br /&gt;IF EXISTS (SELECT * FROM dbo.sysobjects&lt;br /&gt; WHERE id = object_id(N"[dbo].[&amp;lt;procedure_name&amp;gt;]")            AND type in (N"P", N"PC"))&lt;br /&gt; BEGIN&lt;br /&gt;DROP PROCEDURE [dbo].[&amp;lt;procedure_name&amp;gt;]&lt;br /&gt; END&lt;br /&gt; GO &lt;br /&gt; SET ANSI_NULLS ON&lt;br /&gt; GO&lt;br /&gt; SET QUOTED_IDENTIFIER ON&lt;br /&gt; GO&lt;br /&gt; &lt;br /&gt; CREATE PROCEDURE [dbo].[&amp;lt;procedure_name&amp;gt;](&lt;br /&gt;-- TODO: Add more parameters if needed&lt;br /&gt;   @whereClauseXML NVARCHAR(4000) = NULL&lt;br /&gt; , @startInd Int = 1&lt;br /&gt; , @endInd BIGINT = 5000&lt;br /&gt; , @pageSize int = 10 &lt;br /&gt; , @sortColumn nvarchar(100)  = ""&lt;br /&gt; , @sortOrder nvarchar(100) = "ASC"&lt;br /&gt; &lt;br /&gt; )&lt;br /&gt; AS&lt;br /&gt; BEGIN&lt;br /&gt; &lt;br /&gt;       SET NOCOUNT ON&lt;br /&gt;&lt;br /&gt;DECLARE @idoc int&lt;br /&gt;IF @whereClauseXML IS NULL&lt;br /&gt;BEGIN&lt;br /&gt;       SET @whereClauseXML = "&amp;lt;ROW&amp;gt;&amp;lt;Filter&lt;br /&gt;FirstNameOperator="-1"&lt;br /&gt;LastNameOperator="-1"&lt;br /&gt;DateOfBirthOperator="-1"&lt;br /&gt; &amp;gt;&amp;lt;/Filter&amp;gt;&amp;lt;/ROW&amp;gt;"&lt;br /&gt;END&lt;br /&gt;EXEC sp_xml_preparedocument @idoc OUTPUT, @whereClauseXML&lt;br /&gt;&lt;br /&gt;CREATE TABLE #tmpForWhereClause&lt;br /&gt;(&lt;br /&gt;FirstNameOperator INT NOT NULL,&lt;br /&gt;FirstNameValue nvarchar(50) NULL,&lt;br /&gt;LastNameOperator INT NOT NULL,&lt;br /&gt;LastNameValue nvarchar(50) NULL,&lt;br /&gt;DateOfBirthOperator INT NOT NULL,&lt;br /&gt;DateOfBirthValue datetime NULL&lt;br /&gt;)&lt;br /&gt;CREATE TABLE #FinalResults(&lt;br /&gt;       [RowNum] [bigint] NOT NULL IDENTITY(1,1),&lt;br /&gt;       Id uniqueidentifier  NULL ,&lt;br /&gt;       FirstName nvarchar(50)  NULL ,&lt;br /&gt;       LastName nvarchar(50)  NULL ,&lt;br /&gt;       DateOfBirth datetime  NULL&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;INSERT INTO #tmpForWhereClause&lt;br /&gt;SELECT &lt;br /&gt;       ISNULL(FirstNameOperator,-1),&lt;br /&gt;       FirstNameValue ,&lt;br /&gt;       ISNULL(LastNameOperator,-1),&lt;br /&gt;       LastNameValue ,&lt;br /&gt;       ISNULL(DateOfBirthOperator,-1),&lt;br /&gt;       DateOfBirthValue&lt;br /&gt;FROM   OPENXML (@idoc,"/ROW/Filter",1) WITH (&lt;br /&gt;FirstNameOperator INT,&lt;br /&gt;FirstNameValue nvarchar(50)&lt;br /&gt;,LastNameOperator INT,&lt;br /&gt;LastNameValue nvarchar(50)&lt;br /&gt;,DateOfBirthOperator INT,&lt;br /&gt;DateOfBirthValue datetime&lt;br /&gt; )&lt;br /&gt;&lt;br /&gt;--------------------- BEGIN -----------------------------&lt;br /&gt;----   Create a temp variable or a CTE with the actual SQL search query ----------&lt;br /&gt;----   and use that CTE in the place of &amp;lt;table&amp;gt; in the following SQL statements ---&lt;br /&gt;----          or  ---&lt;br /&gt;----   If you want to wrap this stored proc around an existing stored procedure then,&lt;br /&gt;--    Create a #temp table ---&lt;br /&gt;--    Execute the following SQL –&lt;br /&gt;--    INSERT INTO #tmpResults&lt;br /&gt;--    EXEC &amp;lt;your_existing_sp&amp;gt; @param1, @param2 ….&lt;br /&gt;--------------------- END -----------------------------&lt;br /&gt;INSERT INTO #FinalResults&lt;br /&gt;SELECT&lt;br /&gt;       T.Id,&lt;br /&gt;       T.FirstName,&lt;br /&gt;       T.LastName,&lt;br /&gt;       T.DateOfBirth&lt;br /&gt;FROM &amp;lt;table&amp;gt; T,&lt;br /&gt;#tmpForWhereClause TMP&lt;br /&gt;WHERE (&lt;br /&gt;&lt;br /&gt;(&lt;br /&gt;        ( TMP.FirstNameOperator = -1 )&lt;br /&gt; OR&lt;br /&gt;        ( TMP.FirstNameOperator = 0 AND T.FirstName IS NULL )&lt;br /&gt; OR&lt;br /&gt;        ( TMP.FirstNameOperator = 1 AND T.FirstName IS NOT NULL )&lt;br /&gt; OR&lt;br /&gt;        ( TMP.FirstNameOperator = 2 AND T.FirstName = TMP.FirstNameValue )&lt;br /&gt; OR&lt;br /&gt;        ( TMP.FirstNameOperator = 3 AND T.FirstName &amp;lt;&amp;gt; TMP.FirstNameValue )&lt;br /&gt; OR&lt;br /&gt;        ( TMP.FirstNameOperator = 4 AND T.FirstName LIKE TMP.FirstNameValue + "%")&lt;br /&gt; OR&lt;br /&gt;        ( TMP.FirstNameOperator = 5 AND T.FirstName LIKE "%" + TMP.FirstNameValue )&lt;br /&gt; OR&lt;br /&gt;        ( TMP.FirstNameOperator = 6 AND T.FirstName LIKE "%" + TMP.FirstNameValue + "%" )&lt;br /&gt; )&lt;br /&gt;&lt;br /&gt;AND&lt;br /&gt;&lt;br /&gt;(&lt;br /&gt;        ( TMP.LastNameOperator = -1 )&lt;br /&gt; OR&lt;br /&gt;        ( TMP.LastNameOperator = 0 AND T.LastName IS NULL )&lt;br /&gt; OR&lt;br /&gt;        ( TMP.LastNameOperator = 1 AND T.LastName IS NOT NULL )&lt;br /&gt; OR&lt;br /&gt;        ( TMP.LastNameOperator = 2 AND T.LastName = TMP.LastNameValue )&lt;br /&gt; OR&lt;br /&gt;        ( TMP.LastNameOperator = 3 AND T.LastName &amp;lt;&amp;gt; TMP.LastNameValue )&lt;br /&gt; OR&lt;br /&gt;        ( TMP.LastNameOperator = 4 AND T.LastName LIKE TMP.LastNameValue + "%")&lt;br /&gt; OR&lt;br /&gt;        ( TMP.LastNameOperator = 5 AND T.LastName LIKE "%" + TMP.LastNameValue )&lt;br /&gt; OR&lt;br /&gt;        ( TMP.LastNameOperator = 6 AND T.LastName LIKE "%" + TMP.LastNameValue + "%" )&lt;br /&gt; )&lt;br /&gt;&lt;br /&gt;AND&lt;br /&gt;&lt;br /&gt;(&lt;br /&gt;        ( TMP.DateOfBirthOperator = -1 )&lt;br /&gt; OR&lt;br /&gt;        ( TMP.DateOfBirthOperator = 0 AND T.DateOfBirth IS NULL )&lt;br /&gt; OR&lt;br /&gt;        ( TMP.DateOfBirthOperator = 1 AND T.DateOfBirth IS NOT NULL )&lt;br /&gt; OR&lt;br /&gt;        ( TMP.DateOfBirthOperator = 2 AND T.DateOfBirth = TMP.DateOfBirthValue )&lt;br /&gt; OR&lt;br /&gt;        ( TMP.DateOfBirthOperator = 3 AND T.DateOfBirth &amp;lt;&amp;gt; TMP.DateOfBirthValue )&lt;br /&gt; OR&lt;br /&gt;        ( TMP.DateOfBirthOperator = 7 AND T.DateOfBirth &amp;gt; TMP.DateOfBirthValue )&lt;br /&gt; OR&lt;br /&gt;        ( TMP.DateOfBirthOperator = 8 AND T.DateOfBirth &amp;gt;= TMP.DateOfBirthValue )&lt;br /&gt; OR&lt;br /&gt;        ( TMP.DateOfBirthOperator = 9 AND T.DateOfBirth &amp;lt; TMP.DateOfBirthValue )&lt;br /&gt; OR&lt;br /&gt;        ( TMP.DateOfBirthOperator = 10 AND T.DateOfBirth &amp;lt;= TMP.DateOfBirthValue )&lt;br /&gt;&lt;br /&gt;)&lt;br /&gt;&lt;br /&gt;AND&lt;br /&gt; 1 = 1&lt;br /&gt; )&lt;br /&gt; ORDER BY&lt;br /&gt;        CASE WHEN @sortColumn = "FirstName" AND @sortOrder = "ASC"&lt;br /&gt;       THEN T.FirstName END ASC,&lt;br /&gt;        CASE WHEN @sortColumn = "FirstName" AND @sortOrder = "DESC"&lt;br /&gt;       THEN T.FirstName END DESC ,&lt;br /&gt;&lt;br /&gt;       CASE WHEN @sortColumn = "LastName" AND @sortOrder = "ASC"&lt;br /&gt;       THEN T.LastName END ASC,&lt;br /&gt;        CASE WHEN @sortColumn = "LastName" AND @sortOrder = "DESC"&lt;br /&gt;       THEN T.LastName END DESC ,&lt;br /&gt;&lt;br /&gt;       CASE WHEN @sortColumn = "DateOfBirth" AND @sortOrder = "ASC"&lt;br /&gt;       THEN T.DateOfBirth END ASC,&lt;br /&gt;        CASE WHEN @sortColumn = "DateOfBirth" AND @sortOrder = "DESC"&lt;br /&gt;       THEN T.DateOfBirth END DESC&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;DECLARE @count INT  &lt;br /&gt;SET @count = 0  &lt;br /&gt;SELECT @count = MAX(RowNum) FROM #FinalResults&lt;br /&gt;IF @startInd  &amp;gt; @count  &lt;br /&gt;BEGIN  &lt;br /&gt;       DECLARE @numOfPages INT   &lt;br /&gt;       SET @numOfPages = @count / @pageSize  &lt;br /&gt;       IF @count % @pageSize &amp;gt; 1  &lt;br /&gt;       BEGIN  &lt;br /&gt;              SET @numOfPages = @numOfPages + 1  &lt;br /&gt;       END  &lt;br /&gt;       SET @startInd = ((@numOfPages - 1) * @pageSize) + 1  &lt;br /&gt;       SET @endInd = @numOfPages * @pageSize  &lt;br /&gt;END&lt;br /&gt;&lt;br /&gt;SELECT @count AS TotalRows, * FROM #FinalResults WHERE RowNum BETWEEN @startInd AND @endInd&lt;br /&gt;&lt;br /&gt;DROP TABLE #tmpForWhereClause&lt;br /&gt;DROP TABLE #FinalResults&lt;br /&gt;END&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Update the text that reads - &amp;lt;procedure&amp;gt; or &amp;lt;table&amp;gt; in the above SQL script as you see fit.&lt;/li&gt;&lt;li&gt;Execute the stored procedure on the database and test once to ensure that it works :)&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-978029574798373408?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/978029574798373408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=978029574798373408' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/978029574798373408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/978029574798373408'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2011/03/steps-to-create-stored-procedure-that.html' title='Steps to create stored procedure that can be used for custom pagination, sorting and filtering'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-eX0X1vNZXUo/TXhFyc4TQTI/AAAAAAAABks/448uJCXGMe8/s72-c/CodeGenTool.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-7798251569587865893</id><published>2011-03-03T22:09:00.017+05:30</published><updated>2011-03-10T23:50:24.808+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='String.Find(...'/><category scheme='http://www.blogger.com/atom/ns#' term='pattern) SQL server 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='String.Search() SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='CLR Functions SQL server 2005/2008'/><title type='text'>String.Find(..., pattern) in SQL server 2005 or above using CLR functions ...</title><content type='html'>SQL Server 2005 and above let developers take advantage of .NET through CLR assemblies and functions. In this post, we shall attempt to write a custom CLR function that allows us to search for a string pattern (a regular expression with named groups).&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Example:&lt;/h3&gt;Input string - &lt;span style="color:#ff6600;"&gt;Kiran123Banda456Kiran789&lt;/span&gt;&lt;br /&gt;If the requirement is to capture all those numbers that immediately occur after the word "Kiran", then the expected result is &lt;strong&gt;123,789&lt;/strong&gt; (assuming that multiple occurances are concatenated with a comma).&lt;br /&gt;&lt;br /&gt;The code for the custom CLR function is as follows:&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="csharp"&gt;&lt;br /&gt;using System;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using System.Linq;&lt;br /&gt;using System.Text;&lt;br /&gt;using Microsoft.SqlServer.Server;&lt;br /&gt;using System.Data.SqlTypes;&lt;br /&gt;using System.Text.RegularExpressions;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[Serializable]&lt;br /&gt;public class StringSearch&lt;br /&gt;{&lt;br /&gt;    /// &lt;summary&gt;&lt;br /&gt;    /// Finds the specified input string.&lt;br /&gt;    /// &lt;/summary&gt;&lt;br /&gt;    /// &lt;param name="inputString"&gt;The input string.&lt;/param&gt;&lt;br /&gt;    /// &lt;param name="searchPattern"&gt;The search pattern.&lt;/param&gt;&lt;br /&gt;    /// &lt;returns&gt;&lt;/returns&gt;&lt;br /&gt;    [SqlFunction()]&lt;br /&gt;    public static SqlString Find(SqlString inputString, SqlString searchPattern)&lt;br /&gt;    {&lt;br /&gt;&lt;br /&gt;        StringBuilder sb = new StringBuilder();&lt;br /&gt;&lt;br /&gt;        Match match = Regex.Match(inputString.Value, searchPattern.Value, RegexOptions.Compiled);&lt;br /&gt;        bool matchResult = match.Success;&lt;br /&gt;&lt;br /&gt;        do&lt;br /&gt;        {&lt;br /&gt;            if (match.Groups.Count &gt; 0 &amp;&amp; match.Groups["grpVar"] != null)&lt;br /&gt;            {&lt;br /&gt;                for (int i = 0, l = match.Groups["grpVar"].Captures.Count; i &lt; l; i++)&lt;br /&gt;                {&lt;br /&gt;                    string trailingDigit = match.Groups["grpVar"].Captures[i].Value;&lt;br /&gt;                    sb.Append(trailingDigit);&lt;br /&gt;                    sb.Append(";");&lt;br /&gt;                }&lt;br /&gt;&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;        } while ((match = match.NextMatch()) != null &amp;&amp; match.Success);&lt;br /&gt;&lt;br /&gt;        return new SqlString(sb.ToString());&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;h2&gt;&lt;u&gt;Steps to deploy and use the custom CLR function&lt;/u&gt;&lt;/h2&gt;&lt;p&gt;&lt;/p&gt;&lt;span style="color:#696969;"&gt;&lt;h2 style="BACKGROUND: #ffffff; COLOR: #006600" color="#000000"&gt;Copy the attached dll to a location, say, E:\tmp and run the following sql statements to register the custom assembly and the user-defined function&lt;/h2&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;&lt;br /&gt;CREATE ASSEMBLY CustomAssembly FROM 'E:\tmp\CustomAssembly.dll'&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;CREATE FUNCTION fnSearchString(@input nvarchar(1000),@searchPattern nvarchar(100)) RETURNS nvarchar(max) AS&lt;br /&gt;EXTERNAL NAME CustomAssembly.StringSearch.Find&lt;br /&gt;GO&lt;br /&gt;&lt;br /&gt;exec sp_configure 'clr enabled','1'&lt;br /&gt;Reconfigure with override&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="color:#696969;"&gt;&lt;h2 style="COLOR: #006600"&gt;Example Usage :&lt;/h2&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre name="code" class="sql"&gt;&lt;br /&gt;DECLARE @inputString NVARCHAR(MAX)&lt;br /&gt;DECLARE @searchPattern NVARCHAR(255) &lt;br /&gt;SET @inputString = 'Kiran123Banda456Kiran789'&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SET @searchPattern = 'Kiran(?&lt;grpVar&gt;\d+)'&lt;br /&gt;&lt;br /&gt;SELECT [dbo].[fnSearchString](@inputString,@searchPattern)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2 style="COLOR: #006600"&gt;Output : &lt;/h2&gt;&lt;div style="BORDER-BOTTOM: red 1px dashed; BORDER-LEFT: red 1px dashed; BORDER-TOP: red 1px dashed; BORDER-RIGHT: red 1px dashed"&gt;&lt;span style="color:#000088;"&gt;123&lt;/span&gt;&lt;span style="color:#808030;"&gt;,&lt;/span&gt;&lt;span style="color:#008c00;"&gt;789&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-7798251569587865893?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/7798251569587865893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=7798251569587865893' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/7798251569587865893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/7798251569587865893'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2011/03/stringfind-pattern-in-sql-server-2005.html' title='String.Find(..., pattern) in SQL server 2005 or above using CLR functions ...'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-4546366395777533509</id><published>2011-03-03T00:02:00.010+05:30</published><updated>2011-03-04T19:07:19.069+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql injection'/><category scheme='http://www.blogger.com/atom/ns#' term='filtering and sorting without using string concatenation'/><category scheme='http://www.blogger.com/atom/ns#' term='dynamic sort clause'/><category scheme='http://www.blogger.com/atom/ns#' term='Dynamic SQL for custom pagination'/><category scheme='http://www.blogger.com/atom/ns#' term='pagination'/><category scheme='http://www.blogger.com/atom/ns#' term='custom filtering'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Queries'/><category scheme='http://www.blogger.com/atom/ns#' term='dynamic where clause'/><title type='text'>Dynamic SQL for custom pagination, filtering and sorting ... (without using string concatenation !) ...</title><content type='html'>Over the past few weeks, I spent time in optimizing existing applications and improving the performance. "Performance" is a big word and one can realize how long a "second" is while tuning an application for performance. I had optimized .NET code as well as SQL queries.&lt;br /&gt;&lt;br /&gt;Developing web applications for performance and writing apps/solutions that can survive security require a lot of thinking and experience.&lt;br /&gt;&lt;br /&gt;One of the interesting requirements that I spent time on very recently is related to SQL and the requirement is as follows:&lt;br /&gt;&lt;br /&gt;Consider an application that presents the data in a grid (a table) where a user can sort the data, apply filters and page through the data pages. Here is a screenshot that better explains the concept visually:&lt;br /&gt;&lt;br /&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 191px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5579554755639065522" border="0" alt="" src="http://3.bp.blogspot.com/--j6uhQsK-d8/TW6PfQ61O7I/AAAAAAAABkk/ZtwO_QBQB-U/s400/CustomPagination_Sorting_Filtering_Telerik_Grid.png" /&gt; Assuming that the stored procedure returns 1000 rows and only 10 records are shown per view in the grid. This means that there are about 100 pages and 10 records per page. &lt;p&gt;Now, there are a number of ways to bind data to a grid and here a few options:&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;Option # 1:&lt;br /&gt;&lt;/strong&gt;&lt;/em&gt;Get all 1000 rows from database server to the application server.&lt;/p&gt;&lt;p&gt;Perform sorting, filtering on the in-memory resultset and pick the 10 records that relevant to the current page in the grid.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;The downside of this approach is that it caches 1000 records per request although the view requires just 10 records !&lt;/p&gt;&lt;strong&gt;&lt;em&gt;Option # 2:&lt;br /&gt;&lt;/em&gt;&lt;/strong&gt;Apply filtering, sorting at the database and return just 10 records that are relevant to the current view in the grid.&lt;br /&gt;&lt;br /&gt;The advantages of this option are - less data transfer between db and app server &amp;amp; low memory footprint on the app server (as it holds just 10 records as opposed to 1000 records)&lt;br /&gt;&lt;br /&gt;From the above justification, it is obvious that option # 2 is efficient w.r.t performance.&lt;br /&gt;&lt;br /&gt;With this in mind, you start googling for a solution and you will find a solution that operate as follows:&lt;br /&gt;&lt;br /&gt;Concatenate : SELECT Query + @SortColumn + @SortOrder + WHERE RecordID BETWEEN + @StartIndex + AND + @EndIndex&lt;br /&gt;where @SortOrder, @SortColumn, @StartIndex and @EndIndex are variables/parameters to your stored proc.&lt;br /&gt;&lt;br /&gt;The above approach works and is simple to code too but it is prone to "SQL Injection attack" !!&lt;br /&gt;&lt;br /&gt;So, the problem I tried to solve is to avoid SQL String concatenation to build an SQL query and yet achieve the required dynamism :)&lt;br /&gt;&lt;br /&gt;I am not going to explain the logic behind the SQL query as the script is self-explanatory. I have also developed a simple &lt;a href="http://www.4shared.com/file/7Rx3E_0V/DynamicSQLForSearchStoredProcC.html"&gt;windows application in .NET&lt;/a&gt; that lets you generate most of the SQL query with placeholders that can be changed to suit your requirement. All that you have to do is define the columns for which the filtering and sorting logic is going to be dynamic.&lt;br /&gt;&lt;br /&gt;Try the &lt;a href="http://www.4shared.com/file/7Rx3E_0V/DynamicSQLForSearchStoredProcC.html"&gt;tool&lt;/a&gt; once and get back to me if you run into issues.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-4546366395777533509?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/4546366395777533509/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=4546366395777533509' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/4546366395777533509'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/4546366395777533509'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2011/03/dynamic-sql-for-custom-pagination.html' title='Dynamic SQL for custom pagination, filtering and sorting ... (without using string concatenation !) ...'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/--j6uhQsK-d8/TW6PfQ61O7I/AAAAAAAABkk/ZtwO_QBQB-U/s72-c/CustomPagination_Sorting_Filtering_Telerik_Grid.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-3116801886808934266</id><published>2011-01-31T17:39:00.006+05:30</published><updated>2011-01-31T17:57:50.594+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Custom Plugins'/><category scheme='http://www.blogger.com/atom/ns#' term='Lookup'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='Jquery'/><title type='text'>JQuery Lookup plugin ...</title><content type='html'>I thank myself for being a software developer as there are many things that are interesting and one such a thing is JQuery. I had posted a couple of items on JQuery in the past and here is one in that list.&lt;br /&gt;&lt;br /&gt;Quite often, in web applications, there is a requirement to present a list of options that a user can select from and the UI for these options has evolved over a period of time. The most common UI being a dropdown list with a single column while it can be as complex as a dropdown list with a table in it.&lt;br /&gt;&lt;br /&gt;Here in this post, I try to cover an option where the choices are presented in a table inside a popup. Selecting a row in the table and clicking submit posts the selected item back to the calling page.&lt;br /&gt;&lt;br /&gt;I discussed this with one of my colleagues (Jwala) and we came up with a Jquery plugin that's customizable and follows the "Write less, do more" paradigm ;)&lt;br /&gt;&lt;br /&gt;Here are a couple of screenshots that best explain the scenario as well as the implementation:&lt;br /&gt;&lt;br /&gt;Fig 1: A simple form with three fields and two look up buttons&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_k6gsMbQgZmo/TUaqOr_JJkI/AAAAAAAABjA/-XnKBXdcC-I/s1600/Lookup_BasePage.png"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 200px; DISPLAY: block; HEIGHT: 50px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5568325158592652866" border="0" alt="" src="http://4.bp.blogspot.com/_k6gsMbQgZmo/TUaqOr_JJkI/AAAAAAAABjA/-XnKBXdcC-I/s200/Lookup_BasePage.png" /&gt;&lt;/a&gt; Fig 2: Pop up that is displayed when the lookup button is clicked&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_k6gsMbQgZmo/TUap9BRElrI/AAAAAAAABi4/c1noZJ8rp64/s1600/Lookup_opened.png"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 200px; DISPLAY: block; HEIGHT: 129px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5568324855067350706" border="0" alt="" src="http://1.bp.blogspot.com/_k6gsMbQgZmo/TUap9BRElrI/AAAAAAAABi4/c1noZJ8rp64/s200/Lookup_opened.png" /&gt;&lt;/a&gt; &lt;p&gt;&lt;/p&gt;&lt;p&gt;Fig 3: The calling form is populated with values from the selection in the popup.&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_k6gsMbQgZmo/TUaqWjB2lbI/AAAAAAAABjI/dLbzYXt_8Kg/s1600/Lookup_Submitted.png"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 200px; DISPLAY: block; HEIGHT: 74px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5568325293627053490" border="0" alt="" src="http://1.bp.blogspot.com/_k6gsMbQgZmo/TUaqWjB2lbI/AAAAAAAABjI/dLbzYXt_8Kg/s200/Lookup_Submitted.png" /&gt;&lt;/a&gt; The source code for this POC is available for download &lt;a href="http://www.4shared.com/file/O8P-ILvr/LookupPOC.html"&gt;here&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-3116801886808934266?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/3116801886808934266/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=3116801886808934266' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/3116801886808934266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/3116801886808934266'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2011/01/jquery-lookup-plugin.html' title='JQuery Lookup plugin ...'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_k6gsMbQgZmo/TUaqOr_JJkI/AAAAAAAABjA/-XnKBXdcC-I/s72-c/Lookup_BasePage.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-5159494667265347346</id><published>2010-10-02T22:17:00.005+05:30</published><updated>2010-10-02T22:41:56.743+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='What makes my day'/><title type='text'>What makes my day ...</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_k6gsMbQgZmo/TKdnn2CJkbI/AAAAAAAABZ0/slzQlWu3Mhs/s1600/have-a-nice-day.jpg"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 207px; FLOAT: left; HEIGHT: 113px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5523497402210292146" border="0" alt="" src="http://2.bp.blogspot.com/_k6gsMbQgZmo/TKdnn2CJkbI/AAAAAAAABZ0/slzQlWu3Mhs/s320/have-a-nice-day.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;I am having a "fortunately busy" schedule these days and the days were so busy that I stopped attending my phone calls too ! The reason why I put a "fortunate" before the word "busy" has a reason.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Every day, one wakes up with a hope that the day goes well and so do I. So, the question is "What makes it a day to you?".&lt;/div&gt;&lt;br /&gt;&lt;div&gt;I love my work and like any workaholic I feel that I get something good to work on, that something that makes me learn a new thing, an oppportunity that makes me feel excited and a series of activities that make me feel, at the end of the day, that I had a good time.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;That's all about work, but it's not just the work that we do, but also the people that you run into matter alot ! I opine that you are gifted with some talent by birth (be it due to heridity or luck) but a majority of your current lifestyle is impacted by the people around you.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;These days, I am meeting a lot of people, be it due to interviews that I am taking at my company, my clients, my team or my counter parts at my clients' place. I like observing people and I enjoy doing that. I took a note of those people I ran into that got stuck at some point in their life and career (not sure if that is due to personal inhibitions) and are reluctant to come out of that. Such people cast no impression/impact on your lifestyle unless you intend to get inspired by their sluggish nature. There is a big list of people that I have changed my thinking and life and I defer the details to a future post ;-)&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;A bit of flashback, not deviating from the actual topic - A few years ago, my employer asked me to fill up a survey by name "Gallup" and some of the questions (to my memory) read somthing like this:&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Do you enjoy coming to work every day?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Did your boss/lead appreciate your work in the past one week?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Did you work on something interesting/something that you could cherish for a while?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Do you love your workplace?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Does your boss encourage you to try out new things and assign challenging tasks? , etc, etc.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;p&gt;Frankly, I felt that the survey was a "non-sense" but over a period of time, I realized that these questions do matter a lot and answers to such questions best answer the question - "What makes your day?" :)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-5159494667265347346?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/5159494667265347346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=5159494667265347346' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/5159494667265347346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/5159494667265347346'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2010/10/what-makes-my-day.html' title='What makes my day ...'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_k6gsMbQgZmo/TKdnn2CJkbI/AAAAAAAABZ0/slzQlWu3Mhs/s72-c/have-a-nice-day.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-1321578141301386276</id><published>2010-09-05T10:10:00.002+05:30</published><updated>2010-09-05T10:32:42.798+05:30</updated><title type='text'>Technology that helps ...</title><content type='html'>&lt;a href="http://www.technicaljones.com/Telehealth_Feb%202009.gif"&gt;&lt;img style="MARGIN: 0px 0px 10px 10px; WIDTH: 146px; FLOAT: right; HEIGHT: 90px; CURSOR: hand" border="0" alt="" src="http://www.technicaljones.com/Telehealth_Feb%202009.gif" /&gt;&lt;/a&gt; The other day, I got an email from Indiblogger.in that asked for bloggers to blog about a technology that they wish existed. I am not sure if I ran out of time, but I feel that it is worth posting something on my blog on this topic.&lt;br /&gt;&lt;br /&gt;Everybody knows that "necessity is the mother of invention" and necessity has always been the primary reason for the technology. We apply technology right from the moment you wake up (alarm) till you go into a sound sleep (fan) at night.Technology is in every walk of our life.Technology is aimed at making your life easy but I noticed one situation where technology is in place but is not taken care of properly and it is that technology that I wish existed !!&lt;br /&gt;&lt;br /&gt;It is - "Effective Management of traffic lights especially when one of the followers of traffic is an ambulance/personal vehicle with a patient in serious condition"&lt;br /&gt;&lt;br /&gt;Traffic lights is a simple application of technology where the lights go green in a cyclic order letting traffic go in an ordered manner.Good so far, but what if the light goes red and there is an emergency ?&lt;br /&gt;&lt;br /&gt;I spent 6 months in Toronto and I observed that there is a means for the Ambulance / Fire to communicate to Traffic controllers and let the lights go green in the case of an emergency.&lt;br /&gt;&lt;br /&gt;I wish there be an toll free number like 100 where people can dial in, explain the situation and work with the traffic controllers and get out of the emergency situation fairly easily.&lt;br /&gt;&lt;br /&gt;I await a process/technology to be implemented in India where people in an "emergency" communicate with "controllers" and seek help.&lt;br /&gt;&lt;br /&gt;To me, it is a life-saver technology. I know that it is not as simple as it sounds, but I am sure there is a solution to it if we start thinking about it very seriously :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-1321578141301386276?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/1321578141301386276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=1321578141301386276' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/1321578141301386276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/1321578141301386276'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2010/09/technology-that-helps.html' title='Technology that helps ...'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-204409105007996560</id><published>2010-08-18T12:57:00.014+05:30</published><updated>2010-08-18T15:39:52.347+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Running Total'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Queries'/><title type='text'>SQL for RunningTotals in SQL Server 2005 ...</title><content type='html'>Writing SQL queries is interesting provided you have challenging problems to solve and there is scope for interesting solutions.&lt;br /&gt;&lt;br /&gt;As you know, SQL is set-based, meaning that you operate on a bunch of records in one-go and avoid per record or iterative computations (like the way you do using a procedural programming language like C).&lt;br /&gt;&lt;br /&gt;I have a problem to solve - to compute running total for a set of records.&lt;br /&gt;Consider the following example for a better understanding of the problem that I am trying to solve. &lt;div&gt;&lt;/div&gt;&lt;div&gt;Here is my input data:&lt;/div&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 144px; DISPLAY: block; HEIGHT: 104px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5506686197037211362" border="0" alt="" src="http://4.bp.blogspot.com/_k6gsMbQgZmo/TGut66fzHuI/AAAAAAAABYE/Vut4q82yNVc/s320/RunningTotalInput.png" /&gt; and here is what I expect (observe the last column where a value in one cell is equal to the running sum from row # 1 till the current row)&lt;br /&gt;&lt;br /&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 289px; DISPLAY: block; HEIGHT: 95px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5506686406023895410" border="0" alt="" src="http://4.bp.blogspot.com/_k6gsMbQgZmo/TGuuHFCG2XI/AAAAAAAABYM/w3MGrv9EfcY/s320/RunningTotalOutput.png" /&gt; &lt;div&gt;And here is how I solved it :) &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;CREATE&lt;/span&gt;&lt;span style="font-family:'Courier New';"&gt; &lt;span style="color:blue;"&gt;TABLE&lt;/span&gt; #TmpSO&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:'Courier New';color:gray;"&gt;&lt;span style="font-size:85%;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="Section1"&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;span style="font-size:85%;"&gt;RowNumber &lt;span style="color:blue;"&gt;INT&lt;/span&gt; &lt;span style="color:gray;"&gt;NOT&lt;/span&gt; &lt;span style="color:gray;"&gt;NULL&lt;/span&gt; &lt;span style="color:blue;"&gt;IDENTITY&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;1&lt;span style="color:gray;"&gt;,&lt;/span&gt;1&lt;span style="color:gray;"&gt;),&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="Section1"&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;span style="font-size:85%;"&gt;[Name] &lt;span style="color:blue;"&gt;NVARCHAR&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;10&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:gray;"&gt;NOT&lt;/span&gt; &lt;span style="color:gray;"&gt;NULL,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="Section1"&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;span style="font-size:85%;"&gt;[Value] &lt;span style="color:blue;"&gt;DECIMAL&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;18&lt;span style="color:gray;"&gt;,&lt;/span&gt;4&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:gray;"&gt;NOT&lt;/span&gt; &lt;span style="color:gray;"&gt;NULL&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="Section1"&gt;&lt;span style="font-family:'Courier New';color:gray;"&gt;&lt;span style="font-size:85%;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:'Courier New';font-size:85%;color:gray;"&gt;&lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="Section1"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br/&gt;&lt;div class="Section1"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;INSERT&lt;/span&gt;&lt;span style="font-family:'Courier New';"&gt; &lt;span style="color:blue;"&gt;INTO&lt;/span&gt; #TmpSO&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="Section1"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;SELECT&lt;/span&gt;&lt;span style="font-family:'Courier New';"&gt; &lt;span style="color:red;"&gt;'S1'&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;10&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="Section1"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;UNION&lt;/span&gt;&lt;span style="font-family:'Courier New';"&gt; &lt;span style="color:gray;"&gt;ALL&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="Section1"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;SELECT&lt;/span&gt;&lt;span style="font-family:'Courier New';"&gt; &lt;span style="color:red;"&gt;'S2'&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;20&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="Section1"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;UNION&lt;/span&gt;&lt;span style="font-family:'Courier New';"&gt; &lt;span style="color:gray;"&gt;ALL&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="Section1"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;SELECT&lt;/span&gt;&lt;span style="font-family:'Courier New';"&gt; &lt;span style="color:red;"&gt;'S3'&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;30&lt;/span&gt;&lt;/span&gt; &lt;/div&gt;&lt;div class="Section1"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;UNION&lt;/span&gt;&lt;span style="font-family:'Courier New';"&gt; &lt;span style="color:gray;"&gt;ALL&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;SELECT&lt;/span&gt;&lt;span style="font-family:'Courier New';"&gt; &lt;span style="color:red;"&gt;'S4'&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;40&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;UNION&lt;/span&gt;&lt;span style="font-family:'Courier New';"&gt; &lt;span style="color:gray;"&gt;ALL&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;SELECT&lt;/span&gt;&lt;span style="font-family:'Courier New';"&gt; &lt;span style="color:red;"&gt;'S5'&lt;/span&gt;&lt;span style="color:gray;"&gt;,&lt;/span&gt;50&lt;/span&gt;&lt;/span&gt; &lt;/div&gt;&lt;div class="Section1"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:'Courier New';color:gray;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="Section1"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:'Courier New';color:gray;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br/&gt;&lt;div class="Section1"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:'Courier New';color:gray;"&gt;;&lt;/span&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;WITH&lt;/span&gt;&lt;span style="font-family:'Courier New';"&gt; wRunningTotals&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;&lt;span style="font-size:85%;"&gt;AS&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:'Courier New';color:gray;"&gt;&lt;span style="font-size:85%;"&gt;(&lt;/span&gt;&lt;/span&gt; &lt;/div&gt;&lt;br/&gt;&lt;div class="Section1"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;SELECT&lt;/span&gt;&lt;span style="font-family:'Courier New';"&gt; L&lt;span style="color:gray;"&gt;.&lt;/span&gt;RowNumber&lt;span style="color:gray;"&gt;,&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:fuchsia;"&gt;SUM&lt;/span&gt;&lt;span style="color:gray;"&gt;(&lt;/span&gt;R&lt;span style="color:gray;"&gt;.&lt;/span&gt;[Value]&lt;span style="color:gray;"&gt;)&lt;/span&gt; &lt;span style="color:blue;"&gt;AS&lt;/span&gt; RunningTotal&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br/&gt;&lt;div class="Section1"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;FROM&lt;/span&gt;&lt;span style="font-family:'Courier New';"&gt; #TmpSO L&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="Section1"&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;span style="font-size:85%;"&gt;#TmpSO R&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="Section1"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;WHERE&lt;/span&gt;&lt;span style="font-family:'Courier New';"&gt; L&lt;span style="color:gray;"&gt;.&lt;/span&gt;RowNumber &gt;&lt;span style="color:gray;"&gt;=&lt;/span&gt; R&lt;span style="color:gray;"&gt;.&lt;/span&gt;RowNumber&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="Section1"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;GROUP&lt;/span&gt;&lt;span style="font-family:'Courier New';"&gt; &lt;span style="color:blue;"&gt;BY&lt;/span&gt; L&lt;span style="color:gray;"&gt;.&lt;/span&gt;RowNumber&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="Section1"&gt;&lt;span style="font-family:'Courier New';color:gray;"&gt;&lt;span style="font-size:85%;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="Section1"&gt;&lt;span style="font-family:Courier New;font-size:85%;color:#808080;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="Section1"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br/&gt;&lt;div class="Section1"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;SELECT&lt;/span&gt;&lt;span style="font-family:'Courier New';"&gt; T&lt;span style="color:gray;"&gt;.&lt;/span&gt;[Name]&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="Section1"&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;span style="font-size:85%;"&gt;T&lt;span style="color:gray;"&gt;.&lt;/span&gt;[Value]&lt;span style="color:gray;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="Section1"&gt;&lt;span style="font-family:'Courier New';"&gt;&lt;span style="font-size:85%;"&gt;W&lt;span style="color:gray;"&gt;.&lt;/span&gt;RunningTotal&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="Section1"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;FROM&lt;/span&gt;&lt;span style="font-family:'Courier New';"&gt; #TmpSO T &lt;span style="color:gray;"&gt;JOIN&lt;/span&gt; wRunningTotals W &lt;span style="color:blue;"&gt;ON&lt;/span&gt; T&lt;span style="color:gray;"&gt;.&lt;/span&gt;RowNumber &lt;span style="color:gray;"&gt;=&lt;/span&gt; W&lt;span style="color:gray;"&gt;.&lt;/span&gt;RowNumber&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="Section1"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="Section1"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="Section1"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br/&gt;&lt;div class="Section1"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;SELECT&lt;/span&gt;&lt;span style="font-family:'Courier New';"&gt; [Name]&lt;span style="color:gray;"&gt;,&lt;/span&gt;[Value] &lt;span style="color:blue;"&gt;FROM&lt;/span&gt; #TmpSO&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;br/&gt;&lt;div class="Section1"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:'Courier New';color:blue;"&gt;DROP&lt;/span&gt;&lt;span style="font-family:'Courier New';"&gt; &lt;span style="color:blue;"&gt;TABLE&lt;/span&gt; #TmpSO&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-204409105007996560?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/204409105007996560/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=204409105007996560' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/204409105007996560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/204409105007996560'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2010/08/sql-for-runningtotals-in-sql-server.html' title='SQL for RunningTotals in SQL Server 2005 ...'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_k6gsMbQgZmo/TGut66fzHuI/AAAAAAAABYE/Vut4q82yNVc/s72-c/RunningTotalInput.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-36761549142819308</id><published>2010-08-06T10:41:00.010+05:30</published><updated>2010-08-06T11:28:01.592+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='N2'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='ROUND()'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL SSRS 2005 ROUND() N2'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL reporting services'/><title type='text'>SSRS 2005 - Difference between ROUND(x,2) and N2</title><content type='html'>Recently I have an interesting finding while using ROUND function in SSRS and in SQL Server 2005.&lt;br /&gt;&lt;br /&gt;Let me take an example and walk you through my experience:&lt;br /&gt;&lt;br /&gt;Consider the following three values:&lt;br /&gt;&lt;br /&gt;Input :&lt;br /&gt;1) 10.422&lt;br /&gt;2) 10.425&lt;br /&gt;3) 10.427&lt;br /&gt;&lt;br /&gt;Applying ROUND(x,2) function on the above values in an SQL query would give you the following output (respectively)&lt;br /&gt;&lt;br /&gt;1) 10.42&lt;br /&gt;2) 10.43&lt;br /&gt;3) 10.43&lt;br /&gt;&lt;br /&gt;As expected, the ROUND(x,2) function does a &lt;strong&gt;floor&lt;/strong&gt; when the last digit is &lt;strong&gt;less than 5&lt;/strong&gt; and does a &lt;strong&gt;ceil&lt;/strong&gt; when the last digit is &lt;strong&gt;equal to or&lt;/strong&gt; &lt;strong&gt;greater than 5&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;So far, so good, now if you do the same thing in SSRS 2005, the results are suprising:&lt;br /&gt;&lt;br /&gt;1) 10.42&lt;br /&gt;2) &lt;span style="color:#ff0000;"&gt;10.42&lt;/span&gt;&lt;br /&gt;3) 10.43&lt;br /&gt;&lt;br /&gt;Observe that the ROUND(x,2) function in SSRS 2005 did a floor even when the last digit is equal to 5 !!&lt;br /&gt;&lt;br /&gt;I know that it is a bit frustrating when your client calls up and brings this issue up in a system that is in PRODUCTION !!&lt;br /&gt;&lt;br /&gt;Here is a solution to make the ROUND(x,2) function in SSRS 2005 give you the expected result in such a situation:&lt;br /&gt;&lt;br /&gt;Use ROUND(x,2,&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;System&lt;/span&gt;.&lt;span style="color:#33ff33;"&gt;MidpointRounding&lt;/span&gt;.AwayFromZero&lt;/strong&gt;)&lt;br /&gt;&lt;br /&gt;Isn't life so cool now :)&lt;br /&gt;&lt;br /&gt;Let me introduce some confusion and solve it myself ;-)&lt;br /&gt;&lt;br /&gt;In SSRS 2005, you can set the format on a number field to &lt;strong&gt;N2. &lt;/strong&gt;If you apply N2 and run the report, you would see that it presents the value as expected (just like how a ROUND(x,2) function does in SQL 2005).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Is N2 equal to ROUND(x,2,,&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;System&lt;/span&gt;.&lt;span style="color:#33ff33;"&gt;MidpointRounding&lt;/span&gt;.AwayFromZero&lt;/strong&gt;) ?&lt;br /&gt;&lt;br /&gt;The answer is NO - when you look at the report, there is no visible difference but when you export the report to excel, you would observe that the value (after applying N2) is still output as 10.425 although the formatting is set to two decimals.&lt;br /&gt;&lt;br /&gt;Here are the screenshots illustrating the difference:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_k6gsMbQgZmo/TFud4ZYM_0I/AAAAAAAABX0/6IakP5kww7o/s1600/N2.png"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 320px; FLOAT: left; HEIGHT: 142px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5502164961973829442" border="0" alt="" src="http://3.bp.blogspot.com/_k6gsMbQgZmo/TFud4ZYM_0I/AAAAAAAABX0/6IakP5kww7o/s320/N2.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_k6gsMbQgZmo/TFueQwgbIUI/AAAAAAAABX8/8jGlVZbJbrk/s1600/ROUND.png"&gt;&lt;img style="MARGIN: 0px 0px 10px 10px; WIDTH: 320px; FLOAT: right; HEIGHT: 135px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5502165380499185986" border="0" alt="" src="http://4.bp.blogspot.com/_k6gsMbQgZmo/TFueQwgbIUI/AAAAAAAABX8/8jGlVZbJbrk/s320/ROUND.png" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-36761549142819308?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/36761549142819308/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=36761549142819308' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/36761549142819308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/36761549142819308'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2010/08/ssrs-2005-difference-between-round-and.html' title='SSRS 2005 - Difference between ROUND(x,2) and N2'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_k6gsMbQgZmo/TFud4ZYM_0I/AAAAAAAABX0/6IakP5kww7o/s72-c/N2.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-7815246931415318506</id><published>2010-06-18T19:08:00.009+05:30</published><updated>2010-06-19T16:48:31.054+05:30</updated><title type='text'>My hero .. My Dad ...</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_k6gsMbQgZmo/TBuBe7eIzRI/AAAAAAAABXA/BtkPJ0kWjgo/s1600/DSC_0008.JPG"&gt;&lt;img style="MARGIN: 0px 0px 10px 10px; WIDTH: 320px; FLOAT: right; HEIGHT: 214px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5484119339613867282" border="0" alt="" src="http://1.bp.blogspot.com/_k6gsMbQgZmo/TBuBe7eIzRI/AAAAAAAABXA/BtkPJ0kWjgo/s320/DSC_0008.JPG" /&gt;&lt;/a&gt; To me, Dad is the hero for every child. Great poets and speakers talked great about motherhood but a father is great too... Mother teaches lessons and makes the child understand, she gets concerned if the kid doesn't get what she tries to teach, but a father doesn't even let the child know that he is teaching ! All that is taught by a father is by sharing experiences and examples.&lt;br /&gt;&lt;br /&gt;If mom tells you "be careful", dad tells you "take a chance and yet, stand strong".&lt;br /&gt;&lt;br /&gt;If mom prays God for your well being, dad comes to your rescue and shares your painful moments.&lt;br /&gt;&lt;br /&gt;If mom feels that "everything should be good for you", dad teaches you how to handle those bad situations.&lt;br /&gt;&lt;br /&gt;I got to know that many parts of the world celebrate "Father's day" on the third Sunday of June. I don't seem to be lucky to celebrate 'coz it's been almost a year since my dad passed away.&lt;br /&gt;&lt;br /&gt;My brother and I call my dad - "Boss" - the one who decides what's good for us. We miss those moments when we discussed everything that happened during our day at work and my dad used to map those to his experiences and provided valuable inputs. He told us to love the work you do, in other words - get attached to the work and not with the people nor the workplace, which I think is quite a practical advice.&lt;br /&gt;&lt;br /&gt;My dad suffered from Cancer but never did he express pain during the time he was undergoing the "killing" therapies - for the reason not to let us down or panic. He showed us how to handle pain and be optimistic.&lt;br /&gt;&lt;br /&gt;The only gift that one can give to his/her dad is to keep him happy during his old age. Realize that your (older) dad is your first kid and I sometimes feel lucky to have taken care of him during the treatment, served food as if he was a kid.&lt;br /&gt;I fed my dad the night before he passed away and I remember his last words - "Have some food, everything is going to be okay... I will take rest for now" and my dad's soul rests in peace.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Remembering my father in every moment of my life ...&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Following his principles in every walk of my life ....&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-7815246931415318506?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/7815246931415318506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=7815246931415318506' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/7815246931415318506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/7815246931415318506'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2010/06/my-hero-my-dad.html' title='My hero .. My Dad ...'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_k6gsMbQgZmo/TBuBe7eIzRI/AAAAAAAABXA/BtkPJ0kWjgo/s72-c/DSC_0008.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-5638071620941551299</id><published>2010-05-29T12:00:00.010+05:30</published><updated>2010-05-29T20:16:00.098+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Resizable flexigrid columns'/><category scheme='http://www.blogger.com/atom/ns#' term='Flexigrid ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Flexigrid.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='Flexigrid'/><category scheme='http://www.blogger.com/atom/ns#' term='flexigrid client-side sorting'/><title type='text'>Flexigrid.Net</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_k6gsMbQgZmo/TAC6Mn-f0aI/AAAAAAAABW4/GiKEi8QVxzg/s1600/FlexigridNet.png"&gt;&lt;img style="MARGIN: 0px 0px 10px 10px; WIDTH: 320px; FLOAT: right; HEIGHT: 159px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5476581872934834594" border="0" alt="" src="http://4.bp.blogspot.com/_k6gsMbQgZmo/TAC6Mn-f0aI/AAAAAAAABW4/GiKEi8QVxzg/s320/FlexigridNet.png" /&gt;&lt;/a&gt; Past weekend, I ran into an interesting implementation of a grid using JQuery called "Flexigrid". There used to be an elegant web page with little about the plugin and a couple of examples @ &lt;a href="http://flexigrid.info/"&gt;http://flexigrid.info/&lt;/a&gt; but this link doesn't seem to work any more ! &lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;You could view the flexigrid in action @ &lt;a href="http://flexigrid.eyeviewdesign.com/"&gt;http://flexigrid.eyeviewdesign.com/&lt;/a&gt;. &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;The plugin offers quite a lot of useful functionality. I found a couple of resources on the web that explains how to use this grid in an ASP.NET application, but I wanted to implement my version to fix/add the following functionality:&lt;/div&gt;&lt;ol&gt;&lt;li&gt;An event when a row is selected&lt;/li&gt;&lt;li&gt;Sort the data that is in the view (say you are viewing 10 records out of 100 and you just want the sort to happen on the 10 records on the page). Although you could use dynamic datasource and get the sort working, I wanted to have it on a table that is intialized on the page and without having to get data from a server component.&lt;/li&gt;&lt;li&gt;A user control with flexigrid that lets you define the columns that you want to show, no matter how many ever columns are returned in the dataset&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;I tried my hand to build an ASP.NET website that uses Flexigrid (modified a bit to include the above two items, and I have used TinyTableSorter javascript to accomplish sorting) and the data for the grid comes dynamically from AdventureWorks database through an ASP.NET web form. The motto was to let a developer just place a user control and define the columns that should be visible without having to write flexgrid documented javascript on the page (except for sorting, as I am using another javascript to do this). &lt;/p&gt;&lt;p&gt;Currently the web form in the POC sends data as JSON string and I shall extend it to send XML too, sometime in future :) In the meantime, check out this &lt;a href="http://www.codeproject.com/KB/aspnet/FlexiGrid.aspx"&gt;code project&lt;/a&gt; article.&lt;/p&gt;&lt;p&gt;Here is the example for you to &lt;a href="http://www.4shared.com/file/Me5I3jPz/FlexigridNet.html"&gt;download&lt;/a&gt; :)&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-5638071620941551299?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/5638071620941551299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=5638071620941551299' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/5638071620941551299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/5638071620941551299'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2010/05/flexigridnet.html' title='Flexigrid.Net'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_k6gsMbQgZmo/TAC6Mn-f0aI/AAAAAAAABW4/GiKEi8QVxzg/s72-c/FlexigridNet.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-3118572812678586855</id><published>2010-04-15T12:52:00.007+05:30</published><updated>2010-04-18T19:59:53.323+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='grid.htc'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM Record Counter'/><category scheme='http://www.blogger.com/atom/ns#' term='MS CRM 4.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Custom Plugins'/><title type='text'>MS Dynamics CRM 4.0 Record Counter (revisited) ...</title><content type='html'>Few months ago, I talked about some of the work that we had done in adding &lt;a href="http://www.kiranbanda.in/2009/10/extending-crm-40.html"&gt;some functionalities&lt;/a&gt; to CRM 4.0.In this post I would like to furnish some details about our way of implementing a "CRM Record Counter".&lt;br /&gt;&lt;br /&gt;Google for "CRM Record Counter" and you will get "n" results and the common thing about the solutions offered in these sites is that they ask you to download/write and register a custom plugin. The way the plug-in works is that it gets invoked each time a search is fired (due to changing the view or by performing a quick search or an advanced find).The plugin has to be attached to the "Execute" message in CRM. After registering the plugin successfully, you would see that all the views that present a list of records will now start presenting the totals as a first row in the list ! Awesome, isn't it?&lt;br /&gt;&lt;br /&gt;Technically, the plugin intercepts the search request and response and just adds the required detail to the response appropriately.&lt;br /&gt;&lt;br /&gt;The best aspect of this solution is that it works for quick search, Advanced find, look ups as well as associated views too. No other solution can beat this, for sure. The downside of this solution is that it flushes this data in exports too ! I mean, if the user does an export to excel, the total row is also exported as the first row in excel. Well, this is not a major thing that prevents one from accepting this solution.Users can always delete the first row and deal with the rest of the data.&lt;br /&gt;&lt;br /&gt;Having explained a bit of detail about a solution that is available on the web, I would like to share my knowledge on how we can do all this (with some limitations, though) without having to register a custom plugin, (yes, you heard it right ;-)).&lt;br /&gt;&lt;br /&gt;Let me talk a bit about how the grid in CRM is rendered. Here is a screenshot of a view from CRM:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_k6gsMbQgZmo/S8gOz6eDxFI/AAAAAAAABTA/KQSB7sQrHn8/s1600/CRM_List_View.png"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 320px; FLOAT: left; HEIGHT: 170px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5460630833218176082" border="0" alt="" src="http://1.bp.blogspot.com/_k6gsMbQgZmo/S8gOz6eDxFI/AAAAAAAABTA/KQSB7sQrHn8/s320/CRM_List_View.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now, if you want to manipulate the data that is in the table, you should be changing a file by name "grid.htc". This file is located @ &lt;strong&gt;\Microsoft Dynamics CRM\CRMWeb\_static\_grid&lt;/strong&gt; on the server where CRM is installed.&lt;br /&gt;&lt;br /&gt;Open this file and you will observe that it looks like a "hi-fi" javascript code.In this file, define a function as given below:&lt;br /&gt;&lt;div class="Section1"&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;function PrintFetchXMLForActiveView() {&lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;color:blue;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;var fetchXML = '';&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;if (top.stage != null &lt;span style="color:red;"&gt;&amp;amp;&amp;amp;&lt;/span&gt; top.stage.crmGrid != null) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;var sviewID = top.stage.crmGrid.GetParameter('viewid');&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;//alert(sviewID);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;var xml = "&lt;span style="color:blue;"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#a31515;"&gt;xml&lt;/span&gt;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;version&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;'&lt;span style="color:blue;"&gt;1.0&lt;/span&gt;'&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;encoding&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;'&lt;span style="color:blue;"&gt;utf-8&lt;/span&gt;'&lt;span style="color:blue;"&gt;?&amp;gt;&lt;/span&gt;" +&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;"&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;soap:Envelope&lt;/span&gt;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns:soap&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;'&lt;span style="color:blue;"&gt;http://schemas.xmlsoap.org/soap/envelope/&lt;/span&gt;'"&lt;span style="color:blue;"&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:'Courier New';font-size:8;color:blue;"&gt;&lt;/span&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns:xsi&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;'&lt;span style="color:blue;"&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/span&gt;'"&lt;span style="color:blue;"&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:'Courier New';font-size:8;color:blue;"&gt;&lt;/span&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns:xsd&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;'&lt;span style="color:blue;"&gt;http://www.w3.org/2001/XMLSchema&lt;/span&gt;'&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;" +&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;GenerateAuthenticationHeader() +&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;"&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;soap:Body&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;" +&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;"&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Retrieve&lt;/span&gt;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;'&lt;span style="color:blue;"&gt;http://schemas.microsoft.com/crm/2007/WebServices&lt;/span&gt;'&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;" +&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;"&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;entityName&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;savedquery&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;entityName&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;" +&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;"&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;id&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;" + sviewID + "&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;id&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;" +&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;"&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;columnSet&lt;/span&gt;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns:q1&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;'&lt;span style="color:blue;"&gt;http://schemas.microsoft.com/crm/2006/Query&lt;/span&gt;'&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;xsi:type&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;'&lt;span style="color:blue;"&gt;q1:ColumnSet&lt;/span&gt;'&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;" +&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;"&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;q1:Attributes&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;" +&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;"&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;q1:Attribute&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;fetchxml&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;q1:Attribute&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;" +&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;"&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;q1:Attributes&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;" +&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;"&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;columnSet&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;" +&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;"&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Retrieve&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;" +&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;"&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;soap:Body&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;" +&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;"&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;soap:Envelope&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;";&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;// Prepare the xmlHttpObject and send the request.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;var xHReq = new ActiveXObject("Msxml2.XMLHTTP");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;xHReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;xHReq.setRequestHeader("SOAPAction", &lt;a href="http://schemas.microsoft.com/crm/2007/WebServices/Retrieve"&gt;http://schemas.microsoft.com/crm/2007/WebServices/Retrieve&lt;/a&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;xHReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;xHReq.setRequestHeader("Content-Length", xml.length);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;xHReq.send(xml);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;// Capture the result.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;var resultXml = xHReq.responseXML;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;// // DEBUG: alert(resultXml.selectSingleNode("//q1:modifiedon").nodeTypedValue);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;// // DEBUG: alert(crmForm.all.modifiedon.DataValue);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;if (resultXml.selectSingleNode("//q1:fetchxml") != null) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;fetchXML = resultXml.selectSingleNode("//q1:fetchxml").nodeTypedValue;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;else {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;if (window.top != null &lt;span style="color:red;"&gt;&amp;amp;&amp;amp;&lt;/span&gt; window.top.resultRender != null &lt;span style="color:red;"&gt;&amp;amp;&amp;amp;&lt;/span&gt; window.top.resultRender.FetchXml != null) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;fetchXML = window.top.resultRender.FetchXml.value;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;if (fetchXML.length &amp;gt; 0) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;fetchXML = fetchXML.replace(/\"/g, "'").replace(/&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;g&lt;/span&gt;,&lt;span style="color:blue;"&gt; &lt;/span&gt;"&lt;span style="color:red;"&gt;&amp;amp;lt;&lt;/span&gt;")&lt;span style="color:red;"&gt;.replace&lt;/span&gt;(&lt;span style="color:blue;"&gt;/&amp;gt;&lt;/span&gt;/g, "&lt;span style="color:red;"&gt;&amp;amp;gt;&lt;/span&gt;");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;// Fire FetchXML and get the totals&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;var queryForTotals = "&lt;span style="color:blue;"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color:#a31515;"&gt;xml&lt;/span&gt;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;version&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;'&lt;span style="color:blue;"&gt;1.0&lt;/span&gt;'&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;encoding&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;'&lt;span style="color:blue;"&gt;utf-8&lt;/span&gt;'&lt;span style="color:blue;"&gt;?&amp;gt;&lt;/span&gt;" +&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;"&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;soap:Envelope&lt;/span&gt;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns:soap&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;'&lt;span style="color:blue;"&gt;http://schemas.xmlsoap.org/soap/envelope/&lt;/span&gt;'"&lt;span style="color:blue;"&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:'Courier New';font-size:8;color:blue;"&gt;&lt;/span&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns:xsi&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;'&lt;span style="color:blue;"&gt;http://www.w3.org/2001/XMLSchema-instance&lt;/span&gt;'"&lt;span style="color:blue;"&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:'Courier New';font-size:8;color:blue;"&gt;&lt;/span&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;"&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns:xsd&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;'&lt;span style="color:blue;"&gt;http://www.w3.org/2001/XMLSchema&lt;/span&gt;'&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;" +&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;GenerateAuthenticationHeader() +&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;"&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;soap:Body&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;" +&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;"&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Fetch&lt;/span&gt;&lt;span style="color:blue;"&gt; &lt;/span&gt;&lt;span style="color:red;"&gt;xmlns&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;'&lt;span style="color:blue;"&gt;http://schemas.microsoft.com/crm/2007/WebServices&lt;/span&gt;'&lt;span style="color:blue;"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;fetchXml&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;" +&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;fetchXML +&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;"&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;fetchXml&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;Fetch&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;" +&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;"&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;soap:Body&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;" +&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;"&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;soap:Envelope&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;";&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;xHReq = new ActiveXObject("Msxml2.XMLHTTP");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;xHReq.Open("POST", "/mscrmservices/2007/CrmService.asmx", false);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;xHReq.setRequestHeader("SOAPAction", &lt;a href="http://schemas.microsoft.com/crm/2007/WebServices/Fetch"&gt;http://schemas.microsoft.com/crm/2007/WebServices/Fetch&lt;/a&gt;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;xHReq.setRequestHeader("Content-Type", "text/xml; charset=utf-8");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;xHReq.setRequestHeader("Content-Length", queryForTotals.length);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;xHReq.send(queryForTotals);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;// Capture the result.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;var resultXmlForFetch = xHReq.responseXML;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;// Capture the result and UnEncode it.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;var resultSet = new String();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;resultSet = resultXmlForFetch.text;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;resultSet.replace('&lt;span style="color:red;"&gt;&amp;amp;lt;&lt;/span&gt;', '&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;'&lt;span style="color:blue;"&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:'Courier New';font-size:8;color:blue;"&gt;resultSet.replace(&lt;/span&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;'&lt;span style="color:red;"&gt;&amp;amp;gt;&lt;/span&gt;', '&amp;gt;');&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;// Create an XML document that you can parse.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;var oXmlDoc = new ActiveXObject("Microsoft.XMLDOM");&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;oXmlDoc.async = false;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;// Load the XML document that has the UnEncoded results.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;oXmlDoc.loadXML(resultSet);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;// Display the results.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;var results = oXmlDoc.getElementsByTagName('result');&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;TotalRecordsMessage = '--&amp;gt; Total Records = ' + results.length;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;//alert(TotalRecordsMessage);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;color:blue;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;color:blue;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;color:blue;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;}&lt;/span&gt;&lt;span style="font-family:'Segoe UI','sans-serif';font-size:8;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;br /&gt;The purpose of the script is to track the id of the current view, fire an XMLHTTP request (call the CRM web service through javascript), parse the results and store the details in local variables. For example, if the current view is "Active Contacts", then the script determines the ID of the view, fires an XML HTTP request to query for the total number of records related to the current view. After we have the total number of records stored in a local variable, we then have to update the status bar of the table to present this detail.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Advantages : &lt;/strong&gt;&lt;br /&gt;The biggest advantage of this solution is that it doesn't require you to register a plug-in. All that one needs to know is to place the grid.htc file @ the appropriate location and ask the users of CRM to do a Ctrl+F5 (in order to download the latest scripts and CSS from the server). As you can see, the procedure to install this solution is its highlight.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Limitations:&lt;br /&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;&lt;ol&gt;&lt;li&gt;The solution doesn't work for quick find and look ups. It only works for saved views. Since the solution works in "Advanced Find" too, a workaround for the limitation is to use "Advanced Find" if you require totals.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Since the solution is a change to a globally referenced script, all the org. units will get this detail (whether you like it or not :()&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Since we are modifying a script that comes along with CRM installation, I am not sure if it works seamlessly when you move to a higher version of CRM !&lt;/li&gt;&lt;/ol&gt;I have presented two possible solutions for "CRM Record counter" and I leave this to your discretion to pick a solution that better addresses your requirements :)&lt;br /&gt;&lt;br /&gt;Download the script from &lt;a href="http://www.4shared.com/file/0tp2SPFx/grid.html"&gt;here&lt;/a&gt; and please feel free to comment.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-3118572812678586855?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/3118572812678586855/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=3118572812678586855' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/3118572812678586855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/3118572812678586855'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2010/04/crm-record-counter-revisited.html' title='MS Dynamics CRM 4.0 Record Counter (revisited) ...'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_k6gsMbQgZmo/S8gOz6eDxFI/AAAAAAAABTA/KQSB7sQrHn8/s72-c/CRM_List_View.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-6615460905354260607</id><published>2010-04-10T15:07:00.006+05:30</published><updated>2010-04-11T10:23:36.440+05:30</updated><title type='text'>Hot Summer .. Cool moments ...</title><content type='html'>Last week, I took a three day long vacation and went to my home town (may be I should say "ex-home-town") on the occasion of one of my cousin's thread ceremony.&lt;br /&gt;It feels good to go back in time and recollect those good old days, meet childhood friends. I got a chance to meet one of my teachers who taught us @ school and it was really a very good experience.&lt;br /&gt;&lt;br /&gt;Here are a couple of &lt;a href="http://picasaweb.google.com/kiran.banda/School#"&gt;photos &lt;/a&gt;that I captured during my visit to my home-town.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-6615460905354260607?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/6615460905354260607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=6615460905354260607' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/6615460905354260607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/6615460905354260607'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2010/04/hot-summer-cool-moments.html' title='Hot Summer .. Cool moments ...'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-3450093648341246153</id><published>2010-03-30T22:44:00.008+05:30</published><updated>2010-03-31T00:09:14.109+05:30</updated><title type='text'>Talent vs Attitude</title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_k6gsMbQgZmo/S7JFNo41zsI/AAAAAAAABQ0/KqSmiWRi8qQ/s1600/attitude-skateboarder.jpg"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 320px; FLOAT: left; HEIGHT: 251px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5454498199315533506" border="0" alt="" src="http://4.bp.blogspot.com/_k6gsMbQgZmo/S7JFNo41zsI/AAAAAAAABQ0/KqSmiWRi8qQ/s320/attitude-skateboarder.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;The other day, my wife and I were having a stroll in a park near my home and were talking about "talent" and "attitude".&lt;br /&gt;&lt;div&gt;&lt;br /&gt;From my experience in IT, I feel that it is very important to have an attitude to solve a problem than talent. &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;I had worked with many developers - some of them were born talented but got relaxed over time and I find it very difficult to work with such people. On the other hand, there were developers that never bothered about the type of work but always have enjoyed the work. This set of people derive motivation from the work that they do and always try out newer approaches even while performing a repetitious task.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;When I interview candidates for my projects, I always look for people that have an attitude to work over talent and this decision helped me survive with reasonable amount of success.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;Needless to say - Talented people with an attitude to work is definitely a perfect choice at work :-)&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-3450093648341246153?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/3450093648341246153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=3450093648341246153' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/3450093648341246153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/3450093648341246153'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2010/03/talent-vs-attitude.html' title='Talent vs Attitude'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_k6gsMbQgZmo/S7JFNo41zsI/AAAAAAAABQ0/KqSmiWRi8qQ/s72-c/attitude-skateboarder.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-2604046254352690443</id><published>2010-03-18T10:57:00.005+05:30</published><updated>2011-09-26T14:50:52.441+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Garbage collection'/><category scheme='http://www.blogger.com/atom/ns#' term='Background process'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net CacheItemRemoved'/><title type='text'>Background process in ASP.NET ...</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;A few months ago, I came across an interesting technique in ASP.NET to simulate background processes @ &lt;a href="http://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/"&gt;http://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/&lt;/a&gt;. I have tried this approach in a couple of my projects and it works. I would like to extend the post at this link with my experiences after implementing this technique in a real-time project.&lt;br /&gt;&lt;br /&gt;Firstly, thanks to whoever came up with this interesting idea. It works for sure but with limitations.&lt;br /&gt;Let me just copy and paste the code snippet from the above url for reference purposes:&lt;br /&gt;&lt;pre class="CSharp" name="code"&gt; &lt;br /&gt;private static CacheItemRemovedCallback OnCacheRemove = null;&lt;br /&gt;&lt;br /&gt;protected void Application_Start(object sender, EventArgs e)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;AddTask("DoStuff", 60);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private void AddTask(string name, int seconds)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;OnCacheRemove = new CacheItemRemovedCallback(CacheItemRemoved);&lt;br /&gt;&lt;br /&gt;HttpRuntime.Cache.Insert(name, seconds, null,DateTime.Now.AddSeconds(seconds), Cache.NoSlidingExpiration,CacheItemPriority.NotRemovable, OnCacheRemove);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void CacheItemRemoved(string k, object v, CacheItemRemovedReason r)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;// do stuff here if it matches our taskname, like WebRequest&lt;br /&gt;&lt;br /&gt;// re-add our task so it recurs&lt;br /&gt;&lt;br /&gt;AddTask(k, Convert.ToInt32(v));&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;/pre&gt;&lt;ol&gt;&lt;li&gt;We can have only one background process per web application (ref : CacheItemRemoved). If you have a requirement to perform two tasks at different intervals of time (say one at every 10 mins and the other at every one hour), then the approach that I propose is to have the background process wake up at regular intervals of time (say 10 sec) and track the timestamp when a particular process executed recently. This is more of an implementation level logic and I hope you got the idea :-)&lt;/li&gt;&lt;li&gt;As a good coding practice, one would avoid inline business logic (in the CacheItemRemoved) but cache a business object and invoke a method on the business object at regular intervals (in the CacheItemRemoved method). Beware that you might run into a situation where your business object got garbage collected (eg: the process that runs every one hour in my example above) and your background process ends up doing nothing !! To solve this problem, I propose to create a blank file on the file system (preferably in the root directory of your web app) and the existance of this blank file indicates that the background process should be kept alive. So if you perform a null check on the cached business object and you find that it is "null", just instantiate and re-insert the new object in cache so that your background process works as expected :-)&lt;/li&gt;&lt;/ol&gt;The fundamental approach is awesome and I hope my experiences help developers solve a couple of practical problems with the approach :-)&lt;br /&gt;Cheers.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-2604046254352690443?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/2604046254352690443/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=2604046254352690443' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/2604046254352690443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/2604046254352690443'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2010/03/background-process-in-aspnet.html' title='Background process in ASP.NET ...'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-4900901896586042355</id><published>2010-02-07T10:48:00.006+05:30</published><updated>2010-02-07T11:24:57.397+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Struts.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='MVC'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Struts'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net MVC'/><title type='text'>Struts.NET = ASP.NET MVC ?</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_k6gsMbQgZmo/S25T9I3c2FI/AAAAAAAABP0/bFmxJTK5I0Y/s1600-h/mvc-logo-landing-page.png"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 142px; FLOAT: left; HEIGHT: 58px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5435374110099953746" border="0" alt="" src="http://1.bp.blogspot.com/_k6gsMbQgZmo/S25T9I3c2FI/AAAAAAAABP0/bFmxJTK5I0Y/s320/mvc-logo-landing-page.png" /&gt;&lt;/a&gt; &lt;a href="http://1.bp.blogspot.com/_k6gsMbQgZmo/S25UB7glxdI/AAAAAAAABP8/d5xFoVEqZi4/s1600-h/Struts.png"&gt;&lt;img style="MARGIN: 0px 0px 10px 10px; WIDTH: 42px; FLOAT: right; HEIGHT: 42px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5435374192413754834" border="0" alt="" src="http://1.bp.blogspot.com/_k6gsMbQgZmo/S25UB7glxdI/AAAAAAAABP8/d5xFoVEqZi4/s320/Struts.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;These days, I am reading a bit about ASP.NET MVC and it looks like Microsoft is trying to implement Java Struts !&lt;br /&gt;&lt;br /&gt;Does it mean that it took so long for .NET guys to understand Struts and get ASP.NET support such a paradigm?&lt;br /&gt;&lt;br /&gt;Let's not get into a Java vs .NET debate but see the similarities and differences between ASP.NET MVC and Java Struts: &lt;ul&gt;&lt;li&gt;To start with, an ASP.NET form expects/mandates only one &lt;strong&gt;form&lt;/strong&gt; tag but with MVC now, you can have any number of &lt;strong&gt;form&lt;/strong&gt; tags in an ASPx page. You could have any number of &lt;strong&gt;form&lt;/strong&gt; tags in a JSP page.&lt;/li&gt;&lt;li&gt;The code-behind event handlers used to act as controllers in a standard ASP.NET web application. In Struts, an Action class acts as a controller which means that any submit action on a page is associated with an Action class. ASP.NET MVC is following the Struts Action controller approach now.&lt;/li&gt;&lt;li&gt;ASP.NET MVC takes very good advantage of LinQ-SQL. VS 2008 is made so powerful that it eases the life of a developer by generating lot of useful code. On the other hand, although there are OR class libraries like Hibernate, the IDEs (the ones that I used so far) generate very little code and thus make you write a lot of code !&lt;/li&gt;&lt;li&gt;ASP.NET MVC is convention based, meaning that it expects the controllers/view pages and the model to follow a consistent naming convention (although, this is not mandatory and not that restrictive too). In Struts, the key is Struts-config.xml that associates a view and a controller.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;So far, these are some of my observations on Struts and ASP.NET MVC. Let me make my hands dirty with ASP.NET MVC and then talk more about it after I achieve a level of comfort :-)&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-4900901896586042355?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/4900901896586042355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=4900901896586042355' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/4900901896586042355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/4900901896586042355'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2010/02/strutsnet-aspnet-mvc.html' title='Struts.NET = ASP.NET MVC ?'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_k6gsMbQgZmo/S25T9I3c2FI/AAAAAAAABP0/bFmxJTK5I0Y/s72-c/mvc-logo-landing-page.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-7166107823770059786</id><published>2009-12-03T17:22:00.016+05:30</published><updated>2009-12-07T14:22:39.422+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='FetchXML Builder'/><category scheme='http://www.blogger.com/atom/ns#' term='FetchXML'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM FetchXML Builder'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>CRM FetchXMLBuilder ...</title><content type='html'>While developing applications (Plugins, Workflows, Service Portals) for CRM, it is a quite common requirement to build FetchXML or write search logic using QueryExpressions of CRM SDK API.&lt;br /&gt;&lt;br /&gt;I found an excellent tool called &lt;a href="http://www.jamesdowney.net/blog/page/Request-FetchXML-Builder-Key.aspx"&gt;Fetch XML Builder&lt;/a&gt; that helps you prepare FetchXML by building queries and joins using an intuitive user interface.&lt;br /&gt;&lt;br /&gt;Let me tell you that there is a smarter way to extract FetchXML and this is how you can do it:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Open &lt;b&gt;Advanced Find&lt;/b&gt; in CRM Build your search criteria in the UI (you can't get a sophisticated UI than this :-)) &lt;/li&gt;&lt;li&gt;Save the query&lt;/li&gt;&lt;li&gt;Hit &lt;b&gt;Find &lt;/b&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_k6gsMbQgZmo/SxvnesDC_oI/AAAAAAAABO4/YisiaXzNL1w/s1600-h/DefineSearchinCRM.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 231px;" src="http://2.bp.blogspot.com/_k6gsMbQgZmo/SxvnesDC_oI/AAAAAAAABO4/YisiaXzNL1w/s320/DefineSearchinCRM.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5412173891621813890" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;View the source of the results page and search for the hidden field named "fetchXML".&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_k6gsMbQgZmo/SxvoHXnaW5I/AAAAAAAABPA/EMGyezEq8Rk/s1600-h/FetchXMLHiddenVariable.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 208px;" src="http://1.bp.blogspot.com/_k6gsMbQgZmo/SxvoHXnaW5I/AAAAAAAABPA/EMGyezEq8Rk/s320/FetchXMLHiddenVariable.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5412174590511831954" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Now, my attempt is not to outsmart the tool - Fetch XML Builder, but let me tell you how you can use this tool for some useful code :)&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Launch Fetch XML Builder&lt;/li&gt;&lt;li&gt;Click "Import" -&gt; "User Query" to import the query that we built in CRM&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_k6gsMbQgZmo/SxvovkPhHPI/AAAAAAAABPI/t-gn1gLjSv4/s1600-h/FetchXMLBuilder-UserQuery.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 319px;" src="http://1.bp.blogspot.com/_k6gsMbQgZmo/SxvovkPhHPI/AAAAAAAABPI/t-gn1gLjSv4/s320/FetchXMLBuilder-UserQuery.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5412175281096039666" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;Now, let the tool generate code for you by clicking on "Create Code" -&gt; "QueryExpression" &lt;/li&gt;&lt;/ol&gt;&lt;a href="http://1.bp.blogspot.com/_k6gsMbQgZmo/SxvpEIHXjPI/AAAAAAAABPQ/ccWVp-gHARA/s1600-h/FXMB-GenerateCode.png"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 320px; DISPLAY: block; HEIGHT: 318px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5412175634322918642" border="0" alt="" src="http://1.bp.blogspot.com/_k6gsMbQgZmo/SxvpEIHXjPI/AAAAAAAABPQ/ccWVp-gHARA/s320/FXMB-GenerateCode.png" /&gt;&lt;/a&gt;  Let the effort that had gone towards building an intuitive UI for FetchXMLBuilder be appreciated :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-7166107823770059786?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/7166107823770059786/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=7166107823770059786' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/7166107823770059786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/7166107823770059786'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2009/12/crm-fetchxmlbuilder.html' title='CRM FetchXMLBuilder ...'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_k6gsMbQgZmo/SxvnesDC_oI/AAAAAAAABO4/YisiaXzNL1w/s72-c/DefineSearchinCRM.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-1604518206612359161</id><published>2009-12-03T17:22:00.004+05:30</published><updated>2009-12-06T12:32:56.864+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Timer based Applications'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Applications for Services'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='System Tray applications'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Service Monitor'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Windows Service Monitor ...</title><content type='html'>.NET makes life lot lot easier at times. Recently I came across a requirement where it is required to monitor the installed windows services and send a notification (via Email or an SMS) to designated people letting them know that a windows service of interest got stopped.&lt;br /&gt;&lt;br /&gt;I searched for a freeware in Google and found that all the products out there can send an email when a service "fails" not when a service is stopped.&lt;br /&gt;&lt;br /&gt;I ended up writing a small windows based application that looks like below:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_k6gsMbQgZmo/SxtWRdiFoMI/AAAAAAAABOw/82_R3x7DoUg/s1600-h/ServiceMonitor.png"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 238px;" src="http://4.bp.blogspot.com/_k6gsMbQgZmo/SxtWRdiFoMI/AAAAAAAABOw/82_R3x7DoUg/s320/ServiceMonitor.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5412014235201151170" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The program monitors the selected services at regular intervals of time (configurable) and sends an email when a selected service is stopped (one email per service).&lt;br /&gt;&lt;br /&gt;The source code for the above program is &lt;a href="http://www.4shared.com/file/164020550/f0c2fc09/WindowsServiceMonitor.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-1604518206612359161?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/1604518206612359161/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=1604518206612359161' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/1604518206612359161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/1604518206612359161'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2009/12/windows-service-monitor.html' title='Windows Service Monitor ...'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_k6gsMbQgZmo/SxtWRdiFoMI/AAAAAAAABOw/82_R3x7DoUg/s72-c/ServiceMonitor.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-8230554644192323942</id><published>2009-10-27T19:55:00.019+05:30</published><updated>2010-04-16T09:50:37.459+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM Record Counter'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>Extending CRM 4.0 ...</title><content type='html'>These days I get to spend a lot of time working on CRM 4.0. In this post, I would like to list (without much technical details) some of the extensions that I have implemented on CRM 4.0. &lt;div&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;h4&gt;Audit CRM records&lt;/h4&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Created a little plugin that logs changes to a record to a custom entity (just one is sufficient to hold changes across all entities :-)) &lt;/li&gt;&lt;li&gt;A web page that presents the changes in a readable format&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;h4&gt;Record Counter&lt;/h4&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Implemented something similiar to what you see @ &lt;a href="http://www.hubkey.com/DynamicsCRM.aspx"&gt;http://www.hubkey.com/DynamicsCRM.aspx&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href="http://2.bp.blogspot.com/_k6gsMbQgZmo/SvTuOB3jj-I/AAAAAAAABMs/d_8C7loyoIM/s1600-h/Record+Counter.JPG"&gt;&lt;img style="MARGIN: 0px 0px 0px 0px; WIDTH: 320px; HEIGHT: 257px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5401203777911099362" border="0" alt="" src="http://2.bp.blogspot.com/_k6gsMbQgZmo/SvTuOB3jj-I/AAAAAAAABMs/d_8C7loyoIM/s320/Record+Counter.JPG" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;h4&gt;Concurrency checker&lt;/h4&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;An interesting implementation that checks to see if the current record was already saved by one user when two users had opened it simultaneously.&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-8230554644192323942?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/8230554644192323942/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=8230554644192323942' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/8230554644192323942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/8230554644192323942'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2009/10/extending-crm-40.html' title='Extending CRM 4.0 ...&lt;hr class=&apos;ruler&apos; /&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_k6gsMbQgZmo/SvTuOB3jj-I/AAAAAAAABMs/d_8C7loyoIM/s72-c/Record+Counter.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-3038990289152642947</id><published>2009-10-06T21:35:00.003+05:30</published><updated>2009-10-06T21:50:13.266+05:30</updated><title type='text'>Commercializing Calamities ...</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://talesfromanopenbook.files.wordpress.com/2009/02/newspaper.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 190px; height: 139px;" src="http://talesfromanopenbook.files.wordpress.com/2009/02/newspaper.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I like to watch news on TV, but not anymore !! With increasing number of TV channels that serve news 24X7, it looks like every damn thing is made news about. Things that one doesn't care is being hyped up to an extent that audience go mad discussing it or feel anxious about.&lt;br /&gt;&lt;br /&gt;It is my subjective feeling/opinion that NEWS channels (in particular) should follow certain standards. The other day, I was watching a news channel that went on saying that it motivated the public so much that people turned up in huge numbers to help out flood-hit areas. Well, when there is a calamity and a fellow being is suffering in some part of the world, it is quite natural that people empathize the suffering and come up with some generosity to help the needy.&lt;br /&gt;&lt;br /&gt;I got pissed off with the way these TV channels promote themselves. For these TV channels, even charity seems to be NEWS, helping the needy is a means to increase their TRP ratings !! Shame on such channels that put themselves as the only motivators helping out people suffering from a natural calamity!!!&lt;br /&gt;&lt;br /&gt;There is a saying - "No news, Good news" but it looks now, every news is a bad news or may be  bad is brought out to make news !!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-3038990289152642947?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/3038990289152642947/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=3038990289152642947' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/3038990289152642947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/3038990289152642947'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2009/10/commercializing-calamities.html' title='Commercializing Calamities ...&lt;hr class=&apos;ruler&apos;/&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-5379644911057982776</id><published>2009-06-04T15:54:00.012+05:30</published><updated>2010-11-02T14:27:35.444+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Custom Control'/><category scheme='http://www.blogger.com/atom/ns#' term='Jquery'/><title type='text'>JQuery.NET ...</title><content type='html'>Of late, I have been reading through JQuery and I find it very interesting.A fantastic javascript library that helps web developers traverse the HTML DOM fairly easily.&lt;br /&gt;&lt;br /&gt;I found an interesting example that uses JQuery &lt;a style="COLOR: blue" href="http://loopj.com/2009/04/25/jquery-plugin-tokenizing-autocomplete-text-entry/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I built a .NET custom control using the example above.&lt;br /&gt;&lt;br /&gt;Some of the features are:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Ability to bind the control to a list of name value pairs&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Allow the control to be initialized with a list of tokens&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Property to determine if the list has to allow adding items not in the search results&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;a href="http://1.bp.blogspot.com/_k6gsMbQgZmo/SievJGPLzOI/AAAAAAAABG8/7DmfmpV2Mz0/s1600-h/Predefined+list.png"&gt;&lt;img style="MARGIN: 0px 10px 10px 0px; WIDTH: 320px; HEIGHT: 75px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5343432053726366946" border="0" alt="" src="http://1.bp.blogspot.com/_k6gsMbQgZmo/SievJGPLzOI/AAAAAAAABG8/7DmfmpV2Mz0/s320/Predefined+list.png" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 320px; DISPLAY: block; HEIGHT: 77px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5343432267223235634" border="0" alt="" src="http://3.bp.blogspot.com/_k6gsMbQgZmo/SievVhkzfDI/AAAAAAAABHE/_rUhgKeSB58/s320/Validation.png" /&gt;&lt;/p&gt;&lt;a href="http://1.bp.blogspot.com/_k6gsMbQgZmo/SievnAkD3VI/AAAAAAAABHM/nSItEifKqhQ/s1600-h/NameNotInTheList.png"&gt;&lt;/a&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 320px; DISPLAY: block; HEIGHT: 188px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5343478999046627522" border="0" alt="" src="http://3.bp.blogspot.com/_k6gsMbQgZmo/SifZ1rLvIMI/AAAAAAAABHU/98JFiRwFmUs/s320/NameNotInTheList.png" /&gt; &lt;p&gt;&lt;/p&gt;&lt;p&gt;Feel free to write to me incase you are in need of such a control and I shall be glad to email you the sources.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Note: Please do not forget to quote your email address while requesting for the sources :-)&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Cheers !!&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-5379644911057982776?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/5379644911057982776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=5379644911057982776' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/5379644911057982776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/5379644911057982776'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2009/06/jquerynet.html' title='JQuery.NET ...&lt;hr /&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_k6gsMbQgZmo/SievJGPLzOI/AAAAAAAABG8/7DmfmpV2Mz0/s72-c/Predefined+list.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-6815251050600068511</id><published>2009-05-23T17:46:00.005+05:30</published><updated>2009-05-23T18:17:00.010+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cancer'/><category scheme='http://www.blogger.com/atom/ns#' term='Radio therapy'/><category scheme='http://www.blogger.com/atom/ns#' term='Chemo therapy'/><title type='text'>Cancer  - Can Sir ...</title><content type='html'>Continuing with my last post where I ended with a wish/pray that ARR wins an OSCAR for India - On the day when OSCARs were announced, I was up early in the morning not just to see the event but attending a CT Scan for my dad !! I was going through a mixed feeling - on one hand, my wish for my icon got fulfilled while on the other hand, my dad was diagnosed to be suffering from Cancer!&lt;br /&gt;&lt;br /&gt;Cancer - the term is scary, for sure. It is often said that "Cancer can be cured when diagnosed early" and having observed the diagnosis and the treatment for my dad, I intend to put my experiences with an aim to spread the awareness on Cancer.&lt;br /&gt;&lt;br /&gt;What is Cancer - putting it simply it is a disease where some cells in our body start multiplying exponentially resulting in bulges/tumors on the body.&lt;br /&gt;&lt;br /&gt;How do you diagnose it ? - This is infact a tough question.How many times did you feel your whole body to observe any lump/bulge that is not painful ? I am sure the answer is "zero". Generally, we tend to ignore a swelling/lump/bulge in our body that is not causing pain and there's the culprit.&lt;br /&gt;&lt;br /&gt;A swelling that is painful is less dangerous than the one that is not painful.&lt;br /&gt;&lt;br /&gt;In my dad's case, we observed a swelling near the left jaw and we ignored it ('coz we were busy with my engagement and marriage events and on the other hand, the swelling is not causing any pain !). We went to a local doctor who concluded that it is a general infection, while it is not.My dad started experiencing pinching pain near the abdomen and that's when we consulted a specialist who diagnosed the disease to be Cancer. (thanks to the doctor - Dr.G.V.Prakash).&lt;br /&gt;&lt;br /&gt;Dr.Prakash helped us by explaining the purpose of each test, the results and the next steps. After having gone through a set of tests that ensured that all the vital organs in the body are in tact, he referred us to a Radiation Oncologist (Dr.Nalini) who took up the case and started the treatment.&lt;br /&gt;&lt;br /&gt;The treatment comprises two major procedures - Radio therapy and Chemo therapy. &lt;br /&gt;Radio therapy - the patient is subjected to controlled radio active rays at the area where Cancer is identified.&lt;br /&gt;Chemo therapy - a particular combination of injections/chemicals are injected into the body which identifies the culprit cells and kills them. The chemicals are so powerful that they affect the normal cells too and as a result the patient suffers from various side-effects like loss of hair, sore throat, mouth ulcers, vomiting sensation, dehydration, fever, etc.. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Believe me, Cancer is a disease where the disease doesn't cause the pain but the treatment is painful. I thank God for my dad is able to bear the pain and I pray Him to give my dad all the strength to tolerate the side-effects and come out of it healthy.&lt;br /&gt;&lt;br /&gt;During the course of the treatment, I had collected some material guiding the patients as to how they have to maitain diet during the treatment and here is the link to that &lt;a href="http://www.4shared.com/file/104684609/23cb6bdd/Nutrition_Guide.html" style="color:blue;"&gt;document&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;For Cancer, more than the medicine, it's the diet/food and a positive attitude that helps one fight it. &lt;br /&gt;&lt;br /&gt;I hope I have contributed a bit towards fighting Cancer by spreading awareness and I will be more than happy if the information here helps you in some way.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-6815251050600068511?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/6815251050600068511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=6815251050600068511' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/6815251050600068511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/6815251050600068511'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2009/05/cancer-can-sir.html' title='Cancer  - Can Sir ...&lt;hr /&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-6403762383582240387</id><published>2009-01-13T09:08:00.003+05:30</published><updated>2009-01-13T09:18:22.098+05:30</updated><title type='text'>Maestro strikes again ... </title><content type='html'>&lt;a href="http://4.bp.blogspot.com/_k6gsMbQgZmo/SWwOKI5JZCI/AAAAAAAAAbk/S0jiCYKpaEs/s1600-h/ARR.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5290619229602145314" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 103px; CURSOR: hand; HEIGHT: 155px" alt="" src="http://4.bp.blogspot.com/_k6gsMbQgZmo/SWwOKI5JZCI/AAAAAAAAAbk/S0jiCYKpaEs/s320/ARR.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Music Maestro,Mozart of Madras - A.R.Rahman strikes again and this time the aim is to bag an Oscar. He is the first Indian music director to win the prestigious "Golden Globe" award, besides a big list of awards that he has got for the movie "Slumdog millionaire".&lt;br /&gt;&lt;br /&gt;I am just waiting for the Oscars to be announced and praying God (seriously and sincerely) that my icon wins an Oscar for Indian music.&lt;br /&gt;&lt;br /&gt;I wish ARR all success :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-6403762383582240387?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/6403762383582240387/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=6403762383582240387' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/6403762383582240387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/6403762383582240387'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2009/01/maestro-strikes-again.html' title='Maestro strikes again ... &lt;hr class=&apos;ruler&apos; /&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_k6gsMbQgZmo/SWwOKI5JZCI/AAAAAAAAAbk/S0jiCYKpaEs/s72-c/ARR.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-4788174025804218999</id><published>2008-12-07T20:02:00.004+05:30</published><updated>2008-12-07T20:27:43.899+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='shared IP'/><category scheme='http://www.blogger.com/atom/ns#' term='IIS6.0'/><category scheme='http://www.blogger.com/atom/ns#' term='multiple websites in IIS'/><category scheme='http://www.blogger.com/atom/ns#' term='static IP'/><category scheme='http://www.blogger.com/atom/ns#' term='dedicated IP'/><title type='text'>Creating multiple websites on a single IP ... </title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://thumbs.dreamstime.com/thumb_115/1169471110QKJaXU.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 300px; height: 300px;" src="http://thumbs.dreamstime.com/thumb_115/1169471110QKJaXU.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Suppose, I have a couple of websites hosted on a dedicated server (Windows 2003 with IIs 6.0) and the issue is that with one IP address (in other words - Static/Dedicated IP address), I was able to reach only one of the websites.&lt;br /&gt;&lt;br /&gt;There are three options to host multiple websites in IIS :&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Create websites, each assigned an IP - The downside of this option is that you will have limited IPs with you !!&lt;/li&gt;&lt;li&gt;Create websites, each listening on different port numbers.For example, http://mysite1.com and http://mysite2.com:8888 - The downside of this approach is that users have to remember the port number of the site that they are interested in!!&lt;/li&gt;&lt;li&gt;Using Host-Headers - This option is the "best" that solves the problem at hand.&lt;/li&gt;&lt;/ol&gt;Let me elaborate a bit on option #3 here:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Create multiple websites in IIS&lt;/li&gt;&lt;li&gt;Right click on a website, choose "Properties".&lt;/li&gt;&lt;li&gt;On the tab page named "Website" click "Advanced ..." and here you can add a host header (say, mysite2.com) and let all the websites have the IP as "All Unassigned" and the port 80.&lt;/li&gt;&lt;/ol&gt;Having done this, update the DNS records for mysite1.com and mysite2.com to point to the IP running your webserver and try accessing mysite1.com and mysite2.com, it works :-)&lt;br /&gt;&lt;br /&gt;For more details, please visit &lt;a style="color:blue;" href="http://www.iisanswers.com/Top10FAQ/t10-hostheaders.htm"&gt;http://www.iisanswers.com/Top10FAQ/t10-hostheaders.htm&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-4788174025804218999?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/4788174025804218999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=4788174025804218999' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/4788174025804218999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/4788174025804218999'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2008/12/creating-multiple-websites-on-single-ip.html' title='Creating multiple websites on a single IP ... &lt;hr class=&apos;ruler&apos;/&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-8319118360140011221</id><published>2008-11-29T13:55:00.016+05:30</published><updated>2008-11-30T15:09:10.728+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='LightBox2'/><category scheme='http://www.blogger.com/atom/ns#' term='Photogallery'/><title type='text'>Cool Javascript for implementing a photo gallery ... </title><content type='html'>The other day, Sudeep gave me a url to a javascript library that can be used to implement a photo gallery on web pages. The script is - &lt;a style="COLOR: blue" href="http://www.lokeshdhakar.com/projects/lightbox2/" target="_blank"&gt;LightBox2&lt;/a&gt;. I liked the script and wanted to give a try, so I thought why not a photo gallery with the pictures of Bara Imambara ;-)&lt;br /&gt;&lt;br /&gt;Here it is ... Click on an image to see the script in action. After you click on an image, roll over the mouse on the image (popup) to see next and previous buttons or use left/right arrow keys to navigate through the gallery.&lt;br /&gt;&lt;table class="gallery" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="gallerybox" style="WIDTH: 155px"&gt;&lt;div class="thumb" style="PADDING-RIGHT: 0pt; PADDING-LEFT: 0pt; PADDING-BOTTOM: 35px; WIDTH: 150px; PADDING-TOP: 35px"&gt;&lt;div style="MARGIN-LEFT: auto; WIDTH: 120px; MARGIN-RIGHT: auto"&gt;&lt;a class="image" title="Bara Imambara First Gateway " href="http://upload.wikimedia.org/wikipedia/en/c/ca/Bara_Imambara_First_Gateway_01.JPG" rel="lightbox[lucknow]"&gt;&lt;img height="75" alt="" src="http://upload.wikimedia.org/wikipedia/en/thumb/c/ca/Bara_Imambara_First_Gateway_01.JPG/120px-Bara_Imambara_First_Gateway_01.JPG" width="120" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="gallerytext"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="gallerybox" style="WIDTH: 155px"&gt;&lt;div class="thumb" style="PADDING-RIGHT: 0pt; PADDING-LEFT: 0pt; PADDING-BOTTOM: 36px; WIDTH: 150px; PADDING-TOP: 36px"&gt;&lt;div style="MARGIN-LEFT: auto; WIDTH: 120px; MARGIN-RIGHT: auto"&gt;&lt;a class="image" title="Bara Imambara Second Gateway " href="http://upload.wikimedia.org/wikipedia/en/6/6d/Bara_Imambara_Second_Gateway_01.JPG" rel="lightbox[lucknow]"&gt;&lt;img height="74" alt="" src="http://upload.wikimedia.org/wikipedia/en/thumb/6/6d/Bara_Imambara_Second_Gateway_01.JPG/120px-Bara_Imambara_Second_Gateway_01.JPG" width="120" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="gallerytext"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="gallerybox" style="WIDTH: 155px"&gt;&lt;div class="thumb" style="PADDING-RIGHT: 0pt; PADDING-LEFT: 0pt; PADDING-BOTTOM: 33px; WIDTH: 150px; PADDING-TOP: 33px"&gt;&lt;div style="MARGIN-LEFT: auto; WIDTH: 120px; MARGIN-RIGHT: auto"&gt;&lt;a class="image" title="Bara Imambara Second Gateway " href="http://upload.wikimedia.org/wikipedia/en/a/a9/Bara_Imambara_Second_Gateway_03.JPG" rel="lightbox[lucknow]"&gt;&lt;img height="80" alt="" src="http://upload.wikimedia.org/wikipedia/en/thumb/a/a9/Bara_Imambara_Second_Gateway_03.JPG/120px-Bara_Imambara_Second_Gateway_03.JPG" width="120" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="gallerytext"&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="gallerybox" style="WIDTH: 155px"&gt;&lt;div class="thumb" style="PADDING-RIGHT: 0pt; PADDING-LEFT: 0pt; PADDING-BOTTOM: 13px; WIDTH: 150px; PADDING-TOP: 13px"&gt;&lt;div style="MARGIN-LEFT: auto; WIDTH: 120px; MARGIN-RIGHT: auto"&gt;&lt;a class="image" title="Bara Imambara Corridor " href="http://upload.wikimedia.org/wikipedia/en/3/3b/Bara_Imambara_Corridor_01.JPG" rel="lightbox[lucknow]"&gt;&lt;img height="119" alt="" src="http://upload.wikimedia.org/wikipedia/en/thumb/3/3b/Bara_Imambara_Corridor_01.JPG/82px-Bara_Imambara_Corridor_01.JPG" width="82" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="gallerytext"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="gallerybox" style="WIDTH: 155px"&gt;&lt;div class="thumb" style="PADDING-RIGHT: 0pt; PADDING-LEFT: 0pt; PADDING-BOTTOM: 13px; WIDTH: 150px; PADDING-TOP: 13px"&gt;&lt;div style="MARGIN-LEFT: auto; WIDTH: 120px; MARGIN-RIGHT: auto"&gt;&lt;a class="image" title="Bara Imambara Long Corridor " href="http://upload.wikimedia.org/wikipedia/en/3/38/Bara_Imambara_Long_Corridor_01.JPG" rel="lightbox[lucknow]"&gt;&lt;img height="120" alt="" src="http://upload.wikimedia.org/wikipedia/en/thumb/3/38/Bara_Imambara_Long_Corridor_01.JPG/83px-Bara_Imambara_Long_Corridor_01.JPG" width="83" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="gallerytext"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="gallerybox" style="WIDTH: 155px"&gt;&lt;div class="thumb" style="PADDING-RIGHT: 0pt; PADDING-LEFT: 0pt; PADDING-BOTTOM: 28px; WIDTH: 150px; PADDING-TOP: 28px"&gt;&lt;div style="MARGIN-LEFT: auto; WIDTH: 120px; MARGIN-RIGHT: auto"&gt;&lt;a class="image" title="Bara Imambara Second Hallway " href="http://upload.wikimedia.org/wikipedia/en/e/e2/Bara_Imambara_Second_Hallway_04.JPG" rel="lightbox[lucknow]"&gt;&lt;img height="90" alt="" src="http://upload.wikimedia.org/wikipedia/en/thumb/e/e2/Bara_Imambara_Second_Hallway_04.JPG/120px-Bara_Imambara_Second_Hallway_04.JPG" width="120" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="gallerytext"&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="gallerybox" style="WIDTH: 155px"&gt;&lt;div class="thumb" style="PADDING-RIGHT: 0pt; PADDING-LEFT: 0pt; PADDING-BOTTOM: 13px; WIDTH: 150px; PADDING-TOP: 13px"&gt;&lt;div style="MARGIN-LEFT: auto; WIDTH: 120px; MARGIN-RIGHT: auto"&gt;&lt;a class="image" title="Bara Imambara Domed Chamber " href="http://upload.wikimedia.org/wikipedia/en/b/b9/Bara_Imambara_Domed_Chamber_01.JPG" rel="lightbox[lucknow]"&gt;&lt;img height="120" alt="" src="http://upload.wikimedia.org/wikipedia/en/thumb/b/b9/Bara_Imambara_Domed_Chamber_01.JPG/83px-Bara_Imambara_Domed_Chamber_01.JPG" width="83" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="gallerytext"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="gallerybox" style="WIDTH: 155px"&gt;&lt;div class="thumb" style="PADDING-RIGHT: 0pt; PADDING-LEFT: 0pt; PADDING-BOTTOM: 13px; WIDTH: 150px; PADDING-TOP: 13px"&gt;&lt;div style="MARGIN-LEFT: auto; WIDTH: 120px; MARGIN-RIGHT: auto"&gt;&lt;a class="image" title="Bara Imambara Second Hallway " href="http://upload.wikimedia.org/wikipedia/en/e/ea/Bara_Imambara_Second_Hallway_01.JPG" rel="lightbox[lucknow]"&gt;&lt;img height="119" alt="" src="http://upload.wikimedia.org/wikipedia/en/thumb/e/ea/Bara_Imambara_Second_Hallway_01.JPG/82px-Bara_Imambara_Second_Hallway_01.JPG" width="82" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="gallerytext"&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;div class="gallerybox" style="WIDTH: 155px"&gt;&lt;div class="thumb" style="PADDING-RIGHT: 0pt; PADDING-LEFT: 0pt; PADDING-BOTTOM: 13px; WIDTH: 150px; PADDING-TOP: 13px"&gt;&lt;div style="MARGIN-LEFT: auto; WIDTH: 120px; MARGIN-RIGHT: auto"&gt;&lt;a class="image" title="Bara Imambara Roof View " href="http://upload.wikimedia.org/wikipedia/en/9/90/Bara_Imambara_Roof_View_02.JPG" rel="lightbox[lucknow]"&gt;&lt;img height="120" alt="" src="http://upload.wikimedia.org/wikipedia/en/thumb/9/90/Bara_Imambara_Roof_View_02.JPG/86px-Bara_Imambara_Roof_View_02.JPG" width="86" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="gallerytext"&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;div class="gallerybox" style="WIDTH: 155px"&gt;&lt;div class="thumb" style="PADDING-RIGHT: 0pt; PADDING-LEFT: 0pt; PADDING-BOTTOM: 36px; WIDTH: 150px; PADDING-TOP: 36px"&gt;&lt;div style="MARGIN-LEFT: auto; WIDTH: 120px; MARGIN-RIGHT: auto"&gt;&lt;a class="image" title="Bara Imambara Shahi Bowli " href="http://upload.wikimedia.org/wikipedia/en/9/9e/Bara_Imambara_Shahi_Bowli_01.JPG" rel="lightbox[lucknow]"&gt;&lt;img height="74" alt="" src="http://upload.wikimedia.org/wikipedia/en/thumb/9/9e/Bara_Imambara_Shahi_Bowli_01.JPG/120px-Bara_Imambara_Shahi_Bowli_01.JPG" width="120" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="gallerytext"&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;Images courtesy: wikipedia.org :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-8319118360140011221?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/8319118360140011221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=8319118360140011221' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/8319118360140011221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/8319118360140011221'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2008/11/cool-javascript-for-implementing-photo.html' title='Cool Javascript for implementing a photo gallery ... &lt;hr class=&apos;ruler&apos; /&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-2314670461589500070</id><published>2008-11-28T15:47:00.009+05:30</published><updated>2011-03-04T18:55:17.893+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='POP3 client C#'/><category scheme='http://www.blogger.com/atom/ns#' term='POP3 client .NET'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Secure POP3 client C#'/><category scheme='http://www.blogger.com/atom/ns#' term='POP3'/><title type='text'>POP3 client in C# ...</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.themessagecenter.com/pics/icons_services/large_icons/securemessaging.jpg"&gt;&lt;img style="FLOAT: right; MARGIN: 0pt 0pt 10px 10px; WIDTH: 208px; CURSOR: pointer; HEIGHT: 153px" alt="" src="http://www.themessagecenter.com/pics/icons_services/large_icons/securemessaging.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;The other day, I was trying to develop a C# application that can retrieve emails from Gmail via POP3. I searched through various sites for a library that I could use to fetch POP3 emails. I came across a bunch of libraries (along with source code) but unfortunately, none of them worked, 'coz they all don't seem to support SSL, while Gmail POP server requires communication over a secure connection (SSL) !!&lt;br /&gt;&lt;br /&gt;After a lot of search in Google, I came across a post in which it is explained that there is an open source project named &lt;a style="COLOR: blue" href="http://sourceforge.net/projects/hpop/" target="_blank"&gt;OpenPOP.Net&lt;/a&gt; and that there is a class named PopClient.cs that needs to be modified as explained (the code was put on the site there). I had downloaded the sources, tried compiling OpenPOP.Net with the new class, spent some time fixing the compile time issues since the modified PopClient.cs in turn relies on a third-party library !!&lt;br /&gt;&lt;br /&gt;Atlast I have got the sample in OpenPOP.Net working with the modified PopClient.cs and now I am able to fetch messages from Gmail :-)&lt;br /&gt;&lt;br /&gt;For the benefit of all those developers, breaking their head trying to read emails from Gmail in C# apps (or any other POP server that requires SSL), &lt;a style="COLOR: blue" href="http://www.4shared.com/file/88064349/ae2476a9/OpenPOP_source.html" target="_blank"&gt;here &lt;/a&gt;is the library along with one sample Windows application that you can use to test the library.&lt;br /&gt;&lt;br /&gt;I request you to please post a comment, if you find the sources helpful and thanks to all the posts on the web that helped me compile the zip that is ready for &lt;a style="COLOR: blue" href="http://www.4shared.com/file/88064349/ae2476a9/OpenPOP_source.html" target="_blank"&gt;download&lt;/a&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-2314670461589500070?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/2314670461589500070/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=2314670461589500070' title='77 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/2314670461589500070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/2314670461589500070'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2008/11/pop3-client-in-c.html' title='POP3 client in C# ...&lt;hr class=&apos;ruler&apos;/&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>77</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-360338571867576594</id><published>2008-11-26T23:03:00.003+05:30</published><updated>2008-11-26T23:09:03.256+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Lucknow'/><category scheme='http://www.blogger.com/atom/ns#' term='Archealogy'/><category scheme='http://www.blogger.com/atom/ns#' term='Historical places'/><category scheme='http://www.blogger.com/atom/ns#' term='Imambara'/><title type='text'>Incredible India ...Understand, to appreciate ....</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;img src="http://upload.wikimedia.org/wikipedia/en/thumb/5/54/Bara_Imambara_Second_Gateway_02.JPG/800px-Bara_Imambara_Second_Gateway_02.JPG" style="max-width: 800px;" height="239" width="401" /&gt; Last week, I had been to Lucknow (the capital city of Uttar Pradesh) to attend one of my close pal's marriage.It is interesting to explore places, traditions and customs in general, and in India, you find a variety of it. Each state,pretty much, has got it's own language (almost), culture, customs and traditions.&lt;br /&gt;&lt;br /&gt;We got some time to explore the places in Lucknow and we were taken to a place named "Bara Imambara" - a shrine built by Shia Muslims (I didn't know what it means when I visited the place but got to know of it from wikipedia !).My first impression at the shrine (it looks more like a fort than a shrine, though) was that it's a big construction, just another archealogical piece left to us by Nawabs !! I realized that my knowledge is meagre, so is the information that is available over there about the monument !&lt;br /&gt;&lt;br /&gt;Some of the highlights of "Bara Imambara" are :-&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;img src="http://upload.wikimedia.org/wikipedia/en/thumb/e/ea/Bara_Imambara_Second_Hallway_01.JPG/82px-Bara_Imambara_Second_Hallway_01.JPG" style="max-width: 800px;" /&gt; The Great Imambara or the Bada Imambara has a central hall, one of the largest vaulted galleries in the world, beneath which many underground passages are present. Any pillars or any other supports do not support the main hall, which is over 50 feet in height. The roof has been put together with interlocking bricks without using a beam or a girder. &lt;/li&gt;&lt;li&gt;&lt;img src="http://upload.wikimedia.org/wikipedia/en/thumb/d/de/Bara_Imambara_Bhulbhulayah_01.JPG/82px-Bara_Imambara_Bhulbhulayah_01.JPG" style="max-width: 800px;" /&gt; The upper floor, Bhulbhulaiya, is also famous as a fantastic labyrinth. It is believed that a stranger cannot come out of this maze without any assistance from some expert guide. It is possibly the only existing maze in India and came about unintenionally to support the weight of the building, constructed on marshy land.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The design of the Imambara was obtained through a competitive process. The winner was an architect Kifayatullah, who also lies buried in the main hall of the Imambara. It is another unique aspect of the building where the sponsor and the architect lie buried besides each other.&lt;/li&gt;&lt;/ul&gt;Incredible India - It has got so many archealogical master-pieces but pity that there is not much information available to the visitors to appreciate the beauty of these monuments.&lt;br /&gt;&lt;br /&gt;I wish the Archealogical Survey of India wakes up atleast now to get some literature available to the visitors of these historical pieces and let them appreciate their greatness !&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-360338571867576594?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/360338571867576594/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=360338571867576594' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/360338571867576594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/360338571867576594'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2008/11/understand-to-appreciate.html' title='Incredible India ...Understand, to appreciate ....&lt;hr class=&apos;ruler&apos;/&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-8332298039379655070</id><published>2008-11-16T14:38:00.015+05:30</published><updated>2008-11-24T22:56:55.313+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='PDF'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>Generating PDF files programmatically using .NET ... </title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_k6gsMbQgZmo/SR_nJ9DZzfI/AAAAAAAAALs/f8tgPygTCjc/s1600-h/NETLogo.jpeg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5269184247240445426" style="margin: 0px 0px 10px 10px; float: right; width: 124px; height: 79px;" alt="" src="http://2.bp.blogspot.com/_k6gsMbQgZmo/SR_nJ9DZzfI/AAAAAAAAALs/f8tgPygTCjc/s320/NETLogo.jpeg" border="0" /&gt;&lt;/a&gt; &lt;a href="http://4.bp.blogspot.com/_k6gsMbQgZmo/SR_kXlK4N_I/AAAAAAAAALk/PPT1KEeJmUc/s1600-h/Acrobat_pdf_present_pack_icon.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5269181182812633074" style="margin: 0px 10px 10px 0px; float: left; width: 213px; height: 208px;" alt="" src="http://4.bp.blogspot.com/_k6gsMbQgZmo/SR_kXlK4N_I/AAAAAAAAALk/PPT1KEeJmUc/s320/Acrobat_pdf_present_pack_icon.jpg" border="0" /&gt;&lt;/a&gt; Ever ran into a requirement where you had to generate a PDF file as an output from your .NET application (windows or web application) ? Well, it's not that tough to accomplish this and let me emphasize that "it's easy" :-)&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;I got a chance to work on a requirement like this where in I had to generate a big pdf file with lot of numbers presented in tables, colored text and a bunch of images - to be laid out neatly in the pdf. &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;I came across an open-source project (am a big fan of open source projects and I try my best to distribute my code too - &lt;a href="http://kiran-banda.blogspot.com/2007/07/smart-time-picker-aspnet-custom-control.html" style="color: blue;"&gt;&lt;span style="text-decoration: underline;"&gt;SmartTimePicker&lt;/span&gt;&lt;/a&gt;) named - &lt;a href="http://www.pdfsharp.com/" style="color: blue;"&gt;PDFSharp&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;You can download the documentation and samples from this site, but for the benefit of all my readers, let me list down the highlights (as given on that site):&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;Creates PDF documents on the fly from any .Net language &lt;/li&gt;&lt;li&gt;Easy to understand object model to compose documents &lt;/li&gt;&lt;li&gt;One source code for drawing on a PDF page as well as in a window or on the printer &lt;/li&gt;&lt;li&gt;Modify, merge, and split existing PDF files &lt;/li&gt;&lt;li&gt;Images with transparency (color mask, monochrome mask, alpha mask) &lt;/li&gt;&lt;li&gt;Newly designed from scratch and written entirely in C# &lt;/li&gt;&lt;li&gt;The graphical classes go well with .Net &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;With PDFsharp, start producing pdfs that look professional, even without having to buy Acrobat writer ;-)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-8332298039379655070?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/8332298039379655070/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=8332298039379655070' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/8332298039379655070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/8332298039379655070'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2008/11/generating-pdf-files-programmatically.html' title='Generating PDF files programmatically using .NET ... &lt;hr class=&apos;ruler&apos; /&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_k6gsMbQgZmo/SR_nJ9DZzfI/AAAAAAAAALs/f8tgPygTCjc/s72-c/NETLogo.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-5181130686661273577</id><published>2008-10-06T21:18:00.005+05:30</published><updated>2008-10-06T22:24:22.614+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='blackberry'/><category scheme='http://www.blogger.com/atom/ns#' term='SMS'/><title type='text'>next is what ... </title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.smh.com.au/ffximage/2006/08/15/blackberry16_narrowweb__300x418,0.jpg"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 100px;" src="http://www.smh.com.au/ffximage/2006/08/15/blackberry16_narrowweb__300x418,0.jpg" border="0" alt="" /&gt;&lt;/a&gt;One of the most common questions that I have been asked is "What next ?" The questions go something like this - "Now that we have got computers and lot of software, what next ?" , "Now that we have got phones like iPhone in the market, what next ?", "Now that we have got big screen HD TVs, what next ?" &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The question - "What next ?" is interesting, 'coz it makes you think and at times it can get you be innovative.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;As a software developer, we have developed a variety of applications like desktop applications, web applications and what next - and the answer, as I feel, is "applications for mobile phones".&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Earlier,we used to feel privileged having a PC at home...then comes the privilege of having a laptop and a mobile phone (a basic one was more than sufficient) and now I think that more than privilege, the comfort is in having a mobile phone that can keep you connected (online) all the time... a mobile phone that has got the applications that can you keep you close to the information.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To me, not many of us have started using BlackBerry yet, but sooner or later we can see people relying on their mobile phones to check their emails, search on google, get directions to your destinations, book tickets for a movie or book a table in your favorite restaurant.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now here comes the question -  "Do we need a blackberry to do all this ?" and the answer is "No" . We could do all this even now, by enabling GPRS service on our mobiles (contact your service provider for more details). There are 'n' number of interesting apps out there that you can download for free and have fun. &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I have a Nokia 6600 and have got GPRS enabled very recently. I have installed a s/w named Nimbuzz messenger that supports MSN, GTalk, Skype, YM and couple other chat services. You can log on to all these messengers in one go and see who is online on these messengers. You can IM your friends and read the responses too :-). The other application that I have is the Gmail Client, that lets me check my Gmail inbox, compose and send messages.Isn't that interesting?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The future is mobile, stay connected :-)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-5181130686661273577?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/5181130686661273577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=5181130686661273577' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/5181130686661273577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/5181130686661273577'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2008/10/next-is-what.html' title='next is what ... &lt;hr class=&apos;ruler&apos; /&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-7272324857452899176</id><published>2008-09-28T12:14:00.005+05:30</published><updated>2008-09-28T12:32:45.272+05:30</updated><title type='text'>Decision point ... </title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_k6gsMbQgZmo/SN8sDFFYrVI/AAAAAAAAAJM/mpNK5okScdw/s1600-h/1-decision-point-jim-coe.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_k6gsMbQgZmo/SN8sDFFYrVI/AAAAAAAAAJM/mpNK5okScdw/s400/1-decision-point-jim-coe.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5250964121953283410" /&gt;&lt;/a&gt;&lt;br /&gt;The other day, I was helping out one of my cousins in getting an admission into an engineering course, and while talking to my relatives, I felt that one of the key things in life is a "decision".I am sure that every one of us have been through many decision points (DP, from hereafter), be it work or personal life.&lt;br /&gt;&lt;br /&gt;This reminds me of one of Shakespeare's quote - "To be, or not to be". If observed carefully, the sequence is a dilemma to start with, then we seek opinions from our best friends and well-wishers and then comes a DP, the point where one has to make a call, and that's life !&lt;br /&gt;&lt;br /&gt;I was trying to map this real world experience to one of my applications. I was trying to automate a troubleshooting exercise where in the program encounters a failure and it ends up with a couple of alternatives from which it has to pick one and execute that alternative in order to resolve the failure ! a DP again ;-)&lt;br /&gt;&lt;br /&gt;I don't intend to establish a point around a DP,but just that I felt that it's been quite sometime since I posted something, was getting bored, have a couple of options to entertain myself, but then realized that I am at a DP and chose to post something like this ;-)&lt;br /&gt;&lt;br /&gt;Cheers :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-7272324857452899176?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/7272324857452899176/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=7272324857452899176' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/7272324857452899176'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/7272324857452899176'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2008/09/decision-point.html' title='Decision point ... &lt;hr class=&apos;ruler&apos; /&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_k6gsMbQgZmo/SN8sDFFYrVI/AAAAAAAAAJM/mpNK5okScdw/s72-c/1-decision-point-jim-coe.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-2556293115979090974</id><published>2008-09-14T21:11:00.004+05:30</published><updated>2008-09-14T21:14:09.992+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='FTP'/><category scheme='http://www.blogger.com/atom/ns#' term='POP3'/><category scheme='http://www.blogger.com/atom/ns#' term='IMAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Protocols'/><title type='text'>Working with Protocols ...</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Since my graduation, one of the things that fascinates me most is the technique that is followed to establish communication between two systems - "protocol". A protocol is like a language that the computers use to communicate between/among themselves.&lt;br /&gt;&lt;br /&gt;Implementing protocols for a client/server based model is very interesting.Most of the times, we end up writing clients for existing servers. For example, we develop an FTP client (like Filezilla) or a POP3/IMAP client (like Thunderbird) or the most frequently used client - the HTTP client or the browser (like IE, Firefox, Google Chrome).&lt;br /&gt;&lt;br /&gt;In this post, I would like to brief on what it takes to implement a client (like the ones above) based on a given protocol.&lt;br /&gt;&lt;br /&gt;Of late, I have had a requirement in which I had to check a mailbox for the existence of an email (from a specific user and with a particular subject line), parse the subject and content of the email and do some processing based on the these two values. The processing part is a piece of cake, but what is a bit challenging is writing an email client that can log on to a given mailbox, check the messages and retrieve the subject and body of the email.Isn't it interesting?&lt;br /&gt;&lt;br /&gt;To start with, I chose to go for an IMAP client and like any other protocol, the first thing that needs to be understood is the RFC (Request for Comment). An RFC is where the nitty-gritties of the protocol are documented.From the RFC, we get the commands that an IMAP server accepts and the response that the server sends to the client and this is the key information required to develop a client.&lt;br /&gt;&lt;br /&gt;Here are a bunch of request-response scenarios in conjunction with IMAP (excerpts from http://bobpeers.com/technical/telnet_imap.php) :&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Login&lt;/span&gt;:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;. login accountname@myserver.com *********&lt;br /&gt;. OK User logged in&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;LIST &lt;/span&gt;mailboxes:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;. list "" "*"&lt;br /&gt;* LIST (\HasChildren) "." "INBOX"&lt;br /&gt;* LIST (\HasNoChildren) "." "INBOX.Drafts"&lt;br /&gt;* LIST (\HasNoChildren) "." "INBOX.Sent Items"&lt;br /&gt;* LIST (\HasNoChildren) "." "INBOX.Trash"&lt;br /&gt;* LIST (\HasNoChildren) "." "INBOX.test1"&lt;br /&gt;* LIST (\HasNoChildren) "." "INBOX.test2"&lt;br /&gt;. OK Completed (0.460 secs 7 calls)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;EXAMINE &lt;/span&gt;and &lt;span style="font-weight: bold;"&gt;SELECT &lt;/span&gt;commands:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;. examine INBOX.test2&lt;br /&gt;* FLAGS (\Answered \Flagged \Draft \Deleted \Seen)&lt;br /&gt;* OK [PERMANENTFLAGS ()]&lt;br /&gt;* 0 EXISTS&lt;br /&gt;* 0 RECENT&lt;br /&gt;* OK [UIDVALIDITY 1138801117]&lt;br /&gt;* OK [UIDNEXT 1]&lt;br /&gt;. OK [READ-ONLY] Completed&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;. select INBOX.test2&lt;br /&gt;* FLAGS (\Answered \Flagged \Draft \Deleted \Seen)&lt;br /&gt;* OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen \*)]&lt;br /&gt;* 0 EXISTS&lt;br /&gt;* 0 RECENT&lt;br /&gt;* OK [UIDVALIDITY 1138801117]&lt;br /&gt;* OK [UIDNEXT 1]&lt;br /&gt;. OK [READ-WRITE] Completed&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;FETCH &lt;/span&gt;command:&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Fetching flags on first and second messages:&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;. fetch 1:2 flags&lt;br /&gt;* 1 FETCH (FLAGS (\Seen hasatt))&lt;br /&gt;* 2 FETCH (FLAGS (\Seen hasatt))&lt;br /&gt;. OK Completed&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Fetch headers:&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;. fetch 1 rfc822.header&lt;br /&gt;* 1 FETCH (RFC822.HEADER {824}&lt;br /&gt;Return-Path: &amp;lt;nobody@server2.messagingengine.com&amp;gt;&lt;br /&gt;Received: from web2.internal (web2.internal [10.202.2.211])&lt;br /&gt;       by server2.messagingengine.com (Cyrus v2.3-alpha) with LMTPA;&lt;br /&gt;       Wed, 01 Feb 2006 08:37:23 -0500&lt;br /&gt;X-Sieve: CMU Sieve 2.3&lt;br /&gt;X-Attached: This_is_how_attachments_appear.txt&lt;br /&gt;X-Resolved-to: accountname&lt;br /&gt;X-Mail-from: nobody&lt;br /&gt;Content-Transfer-Encoding: 8bit&lt;br /&gt;Content-Type: multipart/mixed; boundary="_----------=_1138801039165120"&lt;br /&gt;MIME-Version: 1.0&lt;br /&gt;X-Mailer: MIME::Lite 5022  (F2.73; T1.15; A1.64; B3.05; Q3.03)&lt;br /&gt;Date: Wed, 1 Feb 2006 13:37:19 UT&lt;br /&gt;From: "Email Administrator" &amp;lt;bounce@myserver.com&amp;gt;&lt;br /&gt;Reply-To: webmaster@myserver.com&lt;br /&gt;To: "Joe Bloggs" &amp;lt;accountname@myserver.com&amp;gt;&lt;br /&gt;Subject: IMPORTANT: Click here to begin using your account&lt;br /&gt;Message-ID: &amp;lt;cmu-lmtpd-28871-1138801043-0@server2.messagingengine.com&amp;gt;&lt;br /&gt;&lt;br /&gt;)&lt;br /&gt;. OK Completed (0.000 sec)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Fetch body:&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;. fetch 2 rfc822.text&lt;br /&gt;* 2 FETCH (RFC822.TEXT {11658}&lt;br /&gt;This is a multi-part message in MIME format.&lt;br /&gt;&lt;br /&gt;--_----------=_1138865560223950&lt;br /&gt;Content-Disposition: inline&lt;br /&gt;Content-Length: 5194&lt;br /&gt;Content-Transfer-Encoding: binary&lt;br /&gt;Content-Type: text/plain&lt;br /&gt;&lt;br /&gt;more text here.............&lt;br /&gt;&lt;br /&gt;. OK Completed (0.000 sec)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;LOGOUT &lt;/span&gt;command:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;. logout&lt;br /&gt;* BYE LOGOUT received&lt;br /&gt;. OK Completed&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Given the request-response pattern above, all that is left is to write code to open a network connection to the server @ port 143, send the requests out and read and interpret the responses :-) It's so simple !&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-2556293115979090974?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/2556293115979090974/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=2556293115979090974' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/2556293115979090974'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/2556293115979090974'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2008/09/working-with-protocols.html' title='Working with Protocols ...&lt;hr class=&apos;ruler&apos; /&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-629165311015883361</id><published>2008-08-29T14:54:00.001+05:30</published><updated>2008-08-29T14:55:04.021+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='web services'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>Microsoft CRM 4. 0 and Java clients ... </title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_k6gsMbQgZmo/SLfANlZo9lI/AAAAAAAAAGY/rj8Heespwuw/s1600-h/NETLogo.jpeg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://4.bp.blogspot.com/_k6gsMbQgZmo/SLfANlZo9lI/AAAAAAAAAGY/rj8Heespwuw/s400/NETLogo.jpeg" alt="" id="BLOGGER_PHOTO_ID_5239868031079347794" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_k6gsMbQgZmo/SLfAJjHR8CI/AAAAAAAAAGQ/bIdk6EUBPls/s1600-h/javalogo.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://1.bp.blogspot.com/_k6gsMbQgZmo/SLfAJjHR8CI/AAAAAAAAAGQ/bIdk6EUBPls/s400/javalogo.jpg" alt="" id="BLOGGER_PHOTO_ID_5239867961745993762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Having worked on Java and Microsoft technologies, I always found that programming using Microsoft languages like C# is lot easier than coding in Java. There could be many reasons why I felt so and some of them are that MS offers one standard IDE (VS2008) unlike in Java where you have various editors like Eclipse (with MyEclipse), JBuilder, JDeveloper, etc. I personally feel that MyEclipse and Eclipse is a powerful combo than VS 2008 but still it is easier/faster to develop a windows based client in C# than in Java.&lt;br /&gt;&lt;br /&gt;Of late, I have been working with CRM web services, trying to develop a custom web application that can consume web services offered by CRM 4.0. I have developed an ASP.NET website and have accomplished what I intended to.&lt;br /&gt;&lt;br /&gt;Now, I wanted to experiment with Java a bit (it's been quite some since I had started MyEclipse on my machine ;-) ). I have generated the Java classes using WSDL2Java from Axis1.x. I followed some examples posted in forums and got a sample working using the CRMDiscoveryService. I followed the same process to consume CRMService but hard luck. All the time I encountered "401 User Unauthorized".&lt;br /&gt;&lt;br /&gt;After lot of googling, I came to know that Axis1.x doesn't support NTLM authentication (not sure how it worked for CRMDiscoveryService !!). Some posts suggested that the latest stable release of Axis1.x doesn't support NTLM authentication and that we need to download the latest nightly build and the latest sources from SVN. I did that but no luck yet !!&lt;br /&gt;&lt;br /&gt;One of my friends suggested to use Axis2 instead of Axis1.x. I have downloaded the latest binaries and source code of Axis2 but the error remained the same - "401 User Unauthorized".&lt;br /&gt;&lt;br /&gt;This is real frustrating, 'coz when you say that webservices are aimed to bring about platform independence, getting a client (from a different platform) to work with MS CRM webservices is not that easy !!&lt;br /&gt;&lt;br /&gt;Microsoft is famous for the documentation, samples and look-and-feel and I am hoping that someone from Microsoft or Sun finds this post and comes up with some helpful samples and documentation on how to develop clients in Java to consume MS CRM 4.0 web services :-)&lt;br /&gt;&lt;br /&gt;Till then, keeping shouting in forums ;-)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-629165311015883361?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/629165311015883361/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=629165311015883361' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/629165311015883361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/629165311015883361'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2008/08/microsoft-crm-4-0-and-java-clients.html' title='Microsoft CRM 4. 0 and Java clients ... &lt;hr class=&apos;ruler&apos; /&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_k6gsMbQgZmo/SLfANlZo9lI/AAAAAAAAAGY/rj8Heespwuw/s72-c/NETLogo.jpeg' height='72' width='72'/><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-5344153705750957793</id><published>2008-08-15T15:21:00.001+05:30</published><updated>2008-08-15T15:22:44.105+05:30</updated><title type='text'>India is "still" a developing country ...</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://in.geocities.com/bvkirank/images/indiaflag.gif"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 68px; height: 49px;" src="http://in.geocities.com/bvkirank/images/indiaflag.gif" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;"India is a developing country" - I am sure, this was the sentence our parents studied while in school... I read the same sentence but I wish the next generations to come can say "India is a developed country".&lt;br /&gt;&lt;br /&gt;Celebrating 61 years of Independence, I blog to memorize those leaders who fought for independence, who dreamt of a free India hoping that it would make wonders and shine with the glory that it had in the past.I salute to each and every individual who have represented our country and spread the greatness of our country across the globe (eg: Kalpana Chawla, Sunitha Williams, to name a few)&lt;br /&gt;&lt;br /&gt;61 years - what does it mean ? Does it mean that India is growing older ? Does it mean that India had strived through the tests of time and stands stubborn after getting independence ?&lt;br /&gt;&lt;br /&gt;There are some such ways of interpreting this. Let me tell you my interpretation - India looks older 'coz it is still being ruled by older people !! Even now, we hardly see young blood in current politics.&lt;br /&gt;&lt;br /&gt;On every Independence day, I watch TV and hear the politicians giving lectures saying that the future of India is in the hands of youth !! But how many youngsters are there in the cabinet of the government in power ?&lt;br /&gt;&lt;br /&gt;Let's move on - we are the top rankers when it comes to population, poverty, corruption and all sorts of things..Look at China, world's no. 1 in population and is now a proud host of Olympics.Let's put a question to ourselves - Can we host Olympics on such a scale ? may be yes and may be no..&lt;br /&gt;&lt;br /&gt;We are next to China when it comes to population, but how many medals have we won in the past Olympics and how many are we going to win in the Beijing Olympics ?&lt;br /&gt;&lt;br /&gt;What are our hindrances, why are we not the top performers in other positive areas ? People say that the reasons are  - illiteracy, corruption, etc..&lt;br /&gt;&lt;br /&gt;Well, everyone is aware of the problems, the reason for us being marked as a "developing" country and I think that it's high time that we spend time observing the world around us, get inspired by countries like China and Japan and get things improved at a faster pace and let the world know that a super power is in the making :-)&lt;br /&gt;&lt;br /&gt;Wish you all a very happy independence day :-)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-5344153705750957793?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/5344153705750957793/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=5344153705750957793' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/5344153705750957793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/5344153705750957793'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2008/08/india-is-developing-country.html' title='India is &amp;quot;still&amp;quot; a developing country ...&lt;hr class=&apos;ruler&apos; /&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-2417864104859469187</id><published>2008-07-28T19:42:00.003+05:30</published><updated>2008-07-28T19:45:13.971+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='PDF'/><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL reporting services'/><category scheme='http://www.blogger.com/atom/ns#' term='reports'/><title type='text'>SQL Reporting Services Client ...</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;Few months ago, I had developed a simple windows application in .NET that can execute an SQL server Reporting Services (SSRS) report and export the output as PDF or Excel. The concept behind executing an SSRS report is pretty straight forward, one can find 'n' number of "How-to" tutorials on the web to consume SSRS webservices.&lt;br /&gt;&lt;br /&gt;The key is to make use of the SSRS webservices and here is the list of web services that help us:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Add web references to the web services at the urls below:&lt;/li&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;http://&amp;lt;machine running SQL Server 2005&amp;gt;/ReportServer/ReportExecution2005.asmx&lt;/li&gt;&lt;li&gt;http://&amp;lt;machine running SQL Server 2005&amp;gt;/ReportServer/ReportService2005.asmx&lt;/li&gt;&lt;/ul&gt;&lt;/ol&gt;After you add web references, follow the API document (I can send you a sample, if you think you are breaking your head ;-) ) and execute the reports.&lt;br /&gt;&lt;br /&gt;So far, I haven't done anything new,but now let me list down the interesting elements of my SSRS client:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The client lets you define multiple reports, set the param names and values (that the target report expects)&lt;/li&gt;&lt;li&gt;Configure the export format (PDF, Excel)&lt;/li&gt;&lt;li&gt;Merge the outputs of all the reports (if the output format is PDF, then all the output PDFs are merged as one PDF document and if it is Excel, then all the report outputs are added as difference worksheets in a single spreadsheet)&lt;/li&gt;&lt;li&gt;The application supports command-line mode (good especially if you want to schedule the execution)&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;Here is a sample screenshot of the application:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh5.ggpht.com/kiran.banda/SI3TbsX5IPI/AAAAAAAAAF8/FY0dfte3NJQ/%5BUNSET%5D.png" style="max-width: 800px;" /&gt;&lt;br /&gt;&lt;br /&gt;Happy report generation :-)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-2417864104859469187?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/2417864104859469187/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=2417864104859469187' title='11 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/2417864104859469187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/2417864104859469187'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2008/07/sql-reporting-services-client.html' title='SQL Reporting Services Client ...&lt;hr class=&apos;ruler&apos;/&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/kiran.banda/SI3TbsX5IPI/AAAAAAAAAF8/FY0dfte3NJQ/s72-c/%5BUNSET%5D.png' height='72' width='72'/><thr:total>11</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-2485970610050919669</id><published>2008-07-12T09:30:00.008+05:30</published><updated>2008-07-12T09:40:52.985+05:30</updated><title type='text'>Feel good factor ...</title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;It's been about one year since I had been posting content on my blog and most of the times, it's my friends and colleagues being the audience. It feels good to know that somebody is taking time to read my posts :-)&lt;br /&gt;&lt;br /&gt;The reason why I started blogging was to publish technical articles on the issues that remained unanswered in the forums on the web :-) Well, if I look back and question myself -"Did I do that?", until my latest post on an issue in CRM 4.0, the answer was a big "NO" !!&lt;br /&gt;&lt;br /&gt;I had publised an article on Smart Timepicker control and expected that I have developed something that my developer friends out there can use it (without paying a penny ;-)) but I didn't get atleast one comment on that post :-(&lt;br /&gt;&lt;br /&gt;Fortunately (I believe that it is due to the post on CRM 4.0) that I keep getting emails requesting for sources :-)&lt;br /&gt;&lt;br /&gt;I feel very encouraged now as the whole point, that I started with, in having my own blog, is getting served now.&lt;br /&gt;&lt;br /&gt;Thanks to all who read my posts and post comments and many many thanks to those who have requested the source code for the technical stuff that I had published, and most importantly, thanks to blogs that make me get creative [ &lt;a href="http://sudeepdsouza.blogspot.com/"&gt;http://sudeepdsouza.blogspot.com&lt;/a&gt;, &lt;a href="http://neel-d.blogspot.com/"&gt;http://neel-d.blogspot.com&lt;/a&gt;,&lt;a href="http://mvkinfo.blogspot.com/"&gt;http://mvkinfo.blogspot.com&lt;/a&gt;, &lt;a href="http://weblogs.asp.net/scottgu"&gt;http://weblogs.asp.net/scottgu&lt;/a&gt;, &lt;a href="http://nikhilk.net/"&gt;http://nikhilk.net&lt;/a&gt;, to name a few)&lt;br /&gt;&lt;br /&gt;In my opinion, a feedback is very important - be it negative or positive, the consequences are "thought" and "improvement" ;-)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-2485970610050919669?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/2485970610050919669/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=2485970610050919669' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/2485970610050919669'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/2485970610050919669'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2008/07/feel-good-factor.html' title='Feel good factor ...&lt;hr class=&apos;ruler&apos; /&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-6077405875792247810</id><published>2008-06-27T09:00:00.009+05:30</published><updated>2008-06-27T09:25:16.388+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Custom workflow activity'/><category scheme='http://www.blogger.com/atom/ns#' term='Case email'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM 4.0'/><title type='text'>CRM 4. 0 Case link in Email notification </title><content type='html'>&lt;div xmlns="http://www.w3.org/1999/xhtml"&gt;&lt;span style="font-weight: bold;"&gt;Requirement&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;In CRM 4.0, an email with a link to the case should be sent out to the owner of the case,when a case is created/assigned. (one liner requirements are tough to crack ;-))&lt;br /&gt;&lt;br /&gt;On the face of it, the requirement sounds simple,but it is not!!&lt;br /&gt;&lt;br /&gt;I searched through forums and blog posts and friends out there have suggested different approaches along with a significant list of known issues on how to achieve this!!&lt;br /&gt;&lt;br /&gt;One of the approaches that was suggested in a newsgroup @ &lt;a href="http://www.microsoft.com/communities/newsgroups/en-us/default.aspx?dg=microsoft.public.crm.developer&amp;amp;tid=5fe13304-99f0-4019-936e-e15c700c60a3&amp;amp;mid=69c32aa8-c088-48a0-ae73-8ee5a8c001a2" target="_blank"&gt;microsoft.com &lt;/a&gt;(you should have a live id to see this post) is as below:&lt;br /&gt;&lt;table style="border: 1px solid gray; background-color: rgb(239, 239, 239);"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: arial;"&gt;&gt;&gt; "... create a new attribute on the Case form that is populated with the Form's URL when the form is saved.  The code for this is implemented in the OnSave event for the Case form as seen below:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 102, 255);"&gt;if (crmForm.ObjectId !=null)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 102, 255);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 102, 255);"&gt; var guid=crmForm.ObjectId;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 102, 255);"&gt; guid=guid.substring(1,guid.length-1);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 102, 255);"&gt; crmForm.all.kts_formurl.DataValue = "http://servername/cs/cases/edit.aspx?id="+crmForm.ObjectId;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new; color: rgb(51, 102, 255);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;I am using port 80, if you are using any other port, you will need to define it in the URL.  If you are using CRM 4.0 you will also need to define the org name in the URL.  After populating the field with the URL, my workflow sends an email with that attribute in the body.  If you run your workflow when the case is created, it will run before the GUID is generated for your case and before the OnSave event can be fired.  This means you will end up with a blank URL everytime.  To work around that timing issue, you can include a Wait in your workflow to wait until the URL attribute you've created contains data. I hope this helps!"&lt;/span&gt;&lt;/span&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;The idea is good, I tried the approach above, but I realized that I am not that lucky enough to get things working :-(&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Issues with the approach above&lt;/span&gt;:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The new  attribute will not hold the Case Id when a case is just created. The reason why  this value will be empty is because Case Id is generated behind the scenes and  the OnSave event handler gets  executed before a Case Id is generated!&lt;br /&gt;&lt;/li&gt;&lt;li&gt;"OnSave" event handler wouldn’t get  fired when you assign case(s) to a user/queue using the “Assign” button on the  toolbar!!&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;The following is the procedure to be followed for the above solution to  work:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;After creating  a new case, user should open the form and click Save, and this is required to  assign the Case Id to the new attribute.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;To assign a  case, user has to open the Case form and change the assignment instead of using  the button on the toolbar.&lt;/li&gt;&lt;/ol&gt;Based on the idea above and some literature survey, I have come up with an approach that just "works" :-) and here it is:&lt;br /&gt;&lt;br /&gt;The solution is based on a custom workflow activity (that can be coded using MS Visual Studio 2008 and Windows Workflow Foundation).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Approach&lt;/span&gt;:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Add a new attribute to Case – say caseidforemail. The purpose of this extra attribute is to hold the uniqueidentifier that is generated for a new Case.&lt;/li&gt;&lt;li&gt;A custom workflow activity which appears as one of the steps while defining a workflow. This custom workflow activity sets the value on caseidforemail to the case guid (or object id or incidentid, etc)&lt;/li&gt;&lt;li&gt;Define a workflow with two steps:&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;Step 1 – Custom workflow activity (there is nothing much to configure on this step)&lt;/li&gt;&lt;li&gt;Step 2 – Send Email. Make sure that the content of the template that is used while sending an email should have a url like this : http://&amp;lt;servername&amp;gt;:&amp;lt;port&amp;gt;/CS/cases/edit.aspx?id=&lt;span style="color: rgb(0, 0, 0);"&gt;{!Case:Case ID for Email;} &lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;That’s it, attach the workflow to the Case as required and you can see the emails with a link to the Case.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Technical details&lt;/span&gt;:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Using the Plugin developer tool and Plugin registration tool, we can register our Custom workflow activity with CRM 4.0. I can provide you with the source code of the custom workflow activity as well as the steps on how to register it :-)&lt;/li&gt;&lt;li&gt;Restart IIS where CRM is running.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Here is a very nice article on &lt;a href="http://www.stunnware.com/crm2/topic.aspx?id=CustomWorkflowActivity" target="_blank"&gt;how to write custom workflow activity&lt;/a&gt; with screenshots too and below is the screenshot from my CRM environment:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh5.ggpht.com/kiran.banda/SGRcvb4vLNI/AAAAAAAAAEM/5pUEduCHXcg/%5BUNSET%5D.png" style="max-width: 800px;" /&gt;&lt;br /&gt;&lt;br /&gt;I hope this post gives a sigh of relief for many "googlers" (those who are tired of searching in Google) out there ;-)&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-6077405875792247810?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/6077405875792247810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=6077405875792247810' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/6077405875792247810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/6077405875792247810'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2008/06/crm-4-0-case-link-in-email-notification.html' title='CRM 4. 0 Case link in Email notification &lt;hr class=&apos;ruler&apos; /&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/kiran.banda/SGRcvb4vLNI/AAAAAAAAAEM/5pUEduCHXcg/s72-c/%5BUNSET%5D.png' height='72' width='72'/><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-330249726940582741</id><published>2008-06-19T11:27:00.009+05:30</published><updated>2008-12-12T09:39:55.597+05:30</updated><title type='text'>Wierd/funny error messages ... </title><content type='html'>I arrived at the office today, turned on my PC which tells me that the system needs to be restarted for the updates it had downloaded (while I was sleeping !!) to take effect. I felt good for my PC was working even while I was not ;-) . I restarted my machine and was trying to sign in to my MSN messenger and I got this error message:&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5213474102231473394" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_k6gsMbQgZmo/SFn7EuU0nPI/AAAAAAAAAEA/lu_wOUsHkek/s400/MSN+Messenger+Error.png" border="0" /&gt; The messages reads - "We could not sign you in to Windows Live Messenger because Internet Explorer is currently set to work offline ...blah blah blah".&lt;br /&gt;&lt;br /&gt;For a sec, the techy in me went wondering - "Why should my messenger not let me sign in due to some setting in my IE !!" - Well, Microsoft is famous for such error messages, let me not blame my co-developers @ Microsoft :-)&lt;br /&gt;&lt;br /&gt;Leaving the technical details apart, I found an interesting link where the author had compiled a bunch of funny MS error messages - &lt;a href="http://zoocow.com/jokes/funny-windows-error-messages/187/"&gt;http://zoocow.com/jokes/funny-windows-error-messages/187/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Some of the error messages that I liked from the url above:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;BREAKFAST.SYS halted… Cereal port not responding. &lt;/li&gt;&lt;li&gt;Bad command or file name! Go stand in the corner. &lt;/li&gt;&lt;li&gt;Bad or missing mouse. Spank the cat? (Y/N)&lt;/li&gt;&lt;li&gt;Enter any 11-digit prime number to continue. &lt;/li&gt;&lt;li&gt;Error reading FAT record. Try SKINNY one? (Y/N)&lt;/li&gt;&lt;li&gt;File not found. Should I fake it? (Y/N) &lt;/li&gt;&lt;li&gt;Invalid mouse movement.&lt;/li&gt;&lt;li&gt;Press any key except… No, No, No, NOT THAT ONE!&lt;/li&gt;&lt;li&gt;User Error: Replace User.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;And the funniest :&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Windows VirusScan 1.0 - “Windows found: Remove it? (Y/N)”&lt;/li&gt;&lt;/ul&gt;There are some real funny screenshots too, over there, go check them out :-)&lt;br /&gt;&lt;br /&gt;Happy troubleshooting ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-330249726940582741?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/330249726940582741/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=330249726940582741' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/330249726940582741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/330249726940582741'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2008/06/wierdfunny-error-messages.html' title='Wierd/funny error messages ... &lt;hr class=&apos;ruler&apos; /&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_k6gsMbQgZmo/SFn7EuU0nPI/AAAAAAAAAEA/lu_wOUsHkek/s72-c/MSN+Messenger+Error.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-7041742288400536899</id><published>2008-06-04T22:26:00.004+05:30</published><updated>2008-06-04T23:01:25.564+05:30</updated><title type='text'>Speed vs Quality </title><content type='html'>Today, I had an interesting conversation with one of my clients and the essence of that discussion (it's a debate, rather) is about &lt;strong&gt;Speed&lt;/strong&gt; and &lt;strong&gt;Quality&lt;/strong&gt; of the deliverables.&lt;br /&gt;&lt;br /&gt;Working in software services, being a developer, I always felt that &lt;strong&gt;Speed is inversely proportional to Quality&lt;/strong&gt;, and I am sure many people agree with me on this.&lt;br /&gt;&lt;br /&gt;Let me elaborate on this equation with one example which, I think, relates to most of us:&lt;br /&gt;&lt;br /&gt;We get to work on a task (seldom on something that we haven't done before) and even before we are clear on what needs to be done (forget about how !), deadlines are set and the client keeps asking for a status update, regularly !! A situation that is quite common in software services ;-) By hook or crook, when the product is delivered, the client looks at it and says - "you took so long to develop such a piece of sh**" !! It's again Speed and Quality !!!&lt;br /&gt;&lt;br /&gt;Putting it simply, we (the ones who deliver) think that speed is inversely proportional to quality while the consumer of our services expect that the delivery should be faster without compromising quality :-(&lt;br /&gt;&lt;br /&gt;Now, the obvious question here is how do we bridge the gap between Speed and Quality? Although I don't have a generic solution for this but from my experience, I would like to list down some of the approaches that I had followed to give a feeling that speed and quality are balanced (to the best possible extent ;-) ).&lt;br /&gt;&lt;br /&gt;- Set proper expectations (or don't show-off much or identify the expertise available)&lt;br /&gt;- Set the scope of the deliverables (just don't say that "everything" will be taken care, while you are not sure what is covered by saying - "everything")&lt;br /&gt;- Try to get the estimates right&lt;br /&gt;- Get a sign off on the list of items that will be delivered&lt;br /&gt;- Review the deliverables thoroughly and then make a release (this item links to "estimations")&lt;br /&gt;&lt;br /&gt;If you think I have missed an approach or an item in my approach, feel free to drop a comment :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-7041742288400536899?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/7041742288400536899/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=7041742288400536899' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/7041742288400536899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/7041742288400536899'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2008/06/speed-vs-quality.html' title='Speed vs Quality &lt;hr class=&apos;ruler&apos; /&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-4634402059091493359</id><published>2008-05-27T23:18:00.012+05:30</published><updated>2008-05-28T23:12:07.383+05:30</updated><title type='text'>Wannabe team leads, watch out for these team members ... </title><content type='html'>Life's good being a s/w developer (at the leaf level in the employee hierarchy) 'coz you have a set of predefined tasks with clear instructions and guidelines and you can always give an excuse saying, "this is the first time I am working on something like this !!" The only one that can screw you is your team lead. Being a developer you tend to think that "Life would be cool, if I were a team lead" as you think that all that the lead does is just "delegate" ;-) It doesn't take long for a developer to realize the fact it's tough being a lead than being a developer and in this post I try my best to give some of the kinds of developers that you interact with, being a team lead and how you deal with them for an enjoyable working environment.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Variety 1: Developers who take quite some time to understand requirements.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;You seldom run into a case where you end up explaining a requirement 'n' times and you feel that it's faster to implement on your own than wasting time explaining the same thing again and again. If the developer is not sharp, it's not a fault, let's try and help understand and think smart (if possible). But if the developer is asking smart questions, then all that you need is patience and the capacity to answer those questions :-)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Variety 2. Developers who are scared of/reluctant towards trying out new stuff.&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;Some developers think that learning new things might require hell lot of time or may be they won't get adequate support esp. when run into issues. For such developers, the lead should inculcate a thinking to experiment new things and this can be done by encouraging them to develop POCs, let them attack small yet challenging requirements.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Variety 3. Developers who overestimate their calibre.&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;In s/w, one can't be compared to the other.Now, some developers tend to think big of themselves and set the same level of expectation with the lead, and when it comes to accomplishing a task, they fail to match the expectations. It is a bit tough to deal with this variety and the pill for such developers is "appraisal" ;-)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Variety 4. Smart and enthusiastic&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;This is the "ideal" pool a team lead would love to work with and the key action item for the lead is to keep this pool busy all the time (you figure out how !)&lt;br /&gt;&lt;br /&gt;If you are a lead - I hope you must be facing atleast one variety in your daily life at work and&lt;br /&gt;If you are a develepor - I wish you fall under the last category :-)&lt;br /&gt;&lt;br /&gt;Happy leading...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-4634402059091493359?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/4634402059091493359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=4634402059091493359' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/4634402059091493359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/4634402059091493359'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2008/05/wannabe-team-leads-watch-out-for-these.html' title='Wannabe team leads, watch out for these team members ... &lt;hr class=&apos;ruler&apos; /&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-52147846345182957</id><published>2008-05-11T21:32:00.011+05:30</published><updated>2008-05-11T22:40:20.769+05:30</updated><title type='text'>Tax payer woes ... </title><content type='html'>Of late some of  my friends (including myself) have got letters from the IT department to submit the original Form 16 document in order to process the returns. The first question that arises here is that why didn't the official accepting the SARAL form (the form that we fill towards filing our tax returns) ask us to submit the original document the very day when we submit the SARAL ? I am not expecting an answer here, though ! Let me continue ...&lt;br /&gt;&lt;br /&gt;I had submitted the original Form 16 document a couple of months ago (I remember that it was in Feb,2008 and it is May, 2008 now). I approached the official on behalf of whom I got the letter. I was asked to wait for sometime till "someone" turns up. What the hell? I am talking to the official who sent me the letter and that official is waiting for someone else !! Now who is that "someone" - that "someone" is a junior guy who takes care of preparing the cheques, gets them signed by the officer and dispatches them. So this "someone" is the "key" guy infact. I gave my document to this "key" guy and the guy assured that the cheque will be mailed to my address at the earliest. Even though the turn around time is high, I returned back with an amount of satisfaction and a hope that I will get my money back in a week or so..&lt;br /&gt;&lt;br /&gt;I waited for a month and unfortunately I didn't receive the cheque yet,  so I went to the IT office again and this time, I tried contacting the "key" guy directly. Now the "key" guy tells me that I can go and enquire the status of my returns at a counter downstairs. Surprisingly, there is no banner or atleast a sign board to let people know that there is a counter just at the entrance where people can check the status of their IT returns !! Well, I had discovered that counter successfully and asked for the status and the rep. over there told me that I need to go back to the same official again as there is no track of my returns in the system :-(&lt;br /&gt;&lt;br /&gt;I went straight to the "key" guy and told him the story that I was told downstairs. The "key" guy went into an office, searched through some bundles and came back to me saying that my returns document got misplaced and that he needs time to get hold of the document and process my returns !!&lt;br /&gt;&lt;br /&gt;I waited for a month again and this time, I touched the enquiry counter downstairs. To my bad luck, I was told that the server is down and that I can call up &lt;span style="font-weight: bold;"&gt;040-23234031 (xtn: 774)&lt;/span&gt; and get the status of my returns. I got pissed off and went to the "key" guy again. The guy told me that he had sent off 1000s of cheques last week and he hopes that he had dispatched my cheque too !!&lt;br /&gt;&lt;br /&gt;The reason why I have blogged about my experience is because I hope that some of my friends might have gone through such similar situations and here is what I would like to point out hoping that it improves the way IT department works:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Let people know about the "Help desk" and the related telephone numbers&lt;/li&gt;&lt;li&gt;Avoid middle-men and let the officials deal with the public&lt;/li&gt;&lt;li&gt;Advertise the url / suggestion box where people can log complaints/suggestions&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;I hope that some of the information in this post might be helpful and that you avoid running to Ayakar bhavan in hot sun :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-52147846345182957?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/52147846345182957/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=52147846345182957' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/52147846345182957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/52147846345182957'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2008/05/tax-payer-woes.html' title='Tax payer woes ... &lt;hr class=&apos;ruler&apos; /&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-6979182028572277702</id><published>2008-04-12T20:01:00.006+05:30</published><updated>2008-04-12T20:07:21.366+05:30</updated><title type='text'>Validation Testing … </title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span style=""&gt;During my graduation, I had a course named “Software Engineering” and I remember there is a mention about two terms – “Verification” and “Validation”. I like the way these terms are defined:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;Verification – Are we doing the right thing?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;Validation – Are we doing the thing right ?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;Observe the placement of the words – ‘right’ and ‘thing’.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;Before I jump to the actual topic, let me touch by the other word in the title – “Testing”.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;Well, many techies out there feel that “testing” is a “boring” task, or relatively boring than “development”. This is a common feeling among people who are into software development.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;Let me not open a debate on this, but take an opportunity to express my views on “testing”.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;To me, testing is “comparing expected vs. actual” – as simple as that but of late, I realized that my definition is simpler than the actual work !! Now where is the complexity – the actual is what you see, but the complexity is in what is “expected”.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;When you ask somebody to give an example for testing, people start off with the simplest/junkest possible example – method ‘add’ that takes two numeric values and returns a result (numeric again). Test this by passing 2 and 3 and compare the result with an expected value of 5. And then, people say, that’s it dude, you now know how to test, just go and attack that s/w  ;-)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;As I pointed out, the key thing is to get the “expected” value right. Now if you don’t know what to expect, what do you test?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;If you scroll up, you might realize that the definition for "Validation" is apt – “Are we doing the thing right?” and the implied question is –“Do you know what is right ?”.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;Let me wind up with one of the cases that I came across recently:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;We have developed a data transformation package that takes a bunch of spreadsheets with a set of worksheets in them as input and loads the data in these sheets into a couple of tables in the database.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;The requirement is not that complex and with the documentation that we have, we were able to implement the package successfully. Now the tough part is “Validation Testing” – in simple terms – “How to justify that the package is loading the data properly into these tables?” Well, the package executes with “no errors” and that doesn’t mean that the package is doing what we expect, isn’t it?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;To justify that the package is producing the expected results, we have defined a set of parameters like – ‘number of rows in the sheet, number of rows inserted into the table, etc’ and started collecting metrics for these parameters. Believe me, the statistics did really justify that the package does what is expected and it also helped us identify the errors (implementation logic related errors due to incorrect understanding of requirements) and troubleshoot the same.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;If you think that the process of calculating metrics is “boring”, it can be automated by using a sophisticated tool or by developing a tool all by yourself and thus turn a “boring testing” task into an interesting “development” task &lt;/span&gt;&lt;span style="font-family: Wingdings;"&gt;&lt;span style=""&gt;:-)&lt;/span&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;I always used to wonder how “medicines” and “aeroplanes” are tested, ‘coz even though you know the expected result in such cases, an ‘error’ is very expensive &lt;/span&gt;&lt;span style="font-family: Wingdings;"&gt;&lt;span style=""&gt;:-(&lt;/span&gt;&lt;/span&gt;&lt;span style=""&gt;&lt;o:p&gt;&lt;/o:p&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/544829222357122795-6979182028572277702?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/6979182028572277702/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=6979182028572277702' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/6979182028572277702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/6979182028572277702'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2008/04/validation-testing.html' title='Validation Testing … &lt;hr class=&apos;ruler&apos; /&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-2071447833094595985</id><published>2008-03-23T22:32:00.002+05:30</published><updated>2008-03-23T22:50:57.711+05:30</updated><title type='text'>Art of saying "No" ... </title><content type='html'>It feels good to say "I can do anything and everything" but there will be times when you have to say "This is not my cup of tea" - in other words - the art of saying "no"..&lt;br /&gt;&lt;br /&gt;There is one short story that I collect in this context  :-&lt;br /&gt;&lt;br /&gt;There are two donkeys, say A and B, that work for a washerman. One donkey (A) is very proactive always and tries to impress his master all the time. It never says "no" to his master.&lt;br /&gt;On the other hand, B takes up the load only as much as it can..&lt;br /&gt;&lt;br /&gt;On one fine morning, the washerman has too many clothes to carry and since he knows the capacity of B, he loads it to the extent that it can bear, and loads A with the rest.&lt;br /&gt;&lt;br /&gt;Poor A, though it doesn't have the capacity to handle the load, says 'yes boss' and struggles hard to perform to the expectations of his master, and the master arrives at a conclusion that "A" is a poor performer while "B" is a consistent performer.&lt;br /&gt;&lt;br /&gt;Let me relate this story to my work. I am an IT guy, and every alternate day, we keep hearing of new technologies. To give you an example, if it was .NET 1.1 the other day, it was .NET 2.0 yesterday and now it is .NET 3.5.&lt;br /&gt;&lt;br /&gt;We had a situation where we were asked to build something in one of the cutting edge technologies and we really didn't have expertise in that. We tried hard to apply our basics, but sooner we realized that we didn't have adequate expertise. Now we have two questions - "should we say "we don't have expertise" or should we just take up the assignment and take a chance?&lt;br /&gt;&lt;br /&gt;We could take up the assignment, but what if we can't deliver - we end up as donkey "A" in the story above !&lt;br /&gt;&lt;br /&gt;The story really helped me in this situation.. We told our client that we didn't have adequate expertise to take up the assignment and the client was happy 'coz he has got ample time to plan for an alternative :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-2071447833094595985?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/2071447833094595985/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=2071447833094595985' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/2071447833094595985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/2071447833094595985'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2008/03/art-of-saying-no.html' title='Art of saying &quot;No&quot; ... &lt;hr class=&apos;ruler&apos;/&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-7806056632746645303</id><published>2008-02-24T20:13:00.006+05:30</published><updated>2008-02-24T20:50:28.423+05:30</updated><title type='text'>If I were to .... </title><content type='html'>At school, I was good at academics and one of my favorite subjects was "English" (though I never got satisfactory marks in this subject :-( ).&lt;br /&gt;&lt;br /&gt;Don't get scared, I am not going to take a session on parts of speech or direct/indirect speech or something like that ;-)&lt;br /&gt;&lt;br /&gt;There are two things that I like very much in English - one is the clause "If I were you /If I were to" and the other is the conjunction "but".&lt;br /&gt;&lt;br /&gt;Okay, let me tell you why I like these two and I hope you too will start observing your English while you speak ;-)&lt;br /&gt;&lt;br /&gt;Let's start with "but" (my all time favorite) - The word reminds me of two things - one is a lesson in English that I studied in my 11th class, titled "Voltaire and Federick, the Great" ..In the story "Voltaire and Federick, the Great", Voltaire represents the suffering in the kingdom ruled by Federick and the way Voltaire puts the problems is what I like the most - He goes on like this - "Federick, you are the most benevolent ruler on this earth &lt;span style="font-weight: bold;"&gt;but &lt;/span&gt;are you aware that people in your country are starving to death ...." Voltaire always had two statements with a &lt;span style="font-weight: bold;"&gt;but &lt;/span&gt;connecting the two - the first part of the statement shovers accolades while the second explains the problems - I think it is a very clever of explaining problems, isn't it ?&lt;br /&gt;&lt;br /&gt;The other thing that comes to my mind is my first appraisal document ;-) The document went on like this - "Kiran, you are a good programmer, &lt;span style="font-weight: bold;"&gt;but &lt;/span&gt;there is a lot of scope for you to improve w.r.t quality...blah..blah..blah" ;-) Ever since then, it has become a practice to search for the word &lt;span style="font-weight: bold;"&gt;but&lt;/span&gt; and ignore the first statement (if I feel like I have to improve) and in some cases, ignore the second half of the sentence (if I feel that I am listening to an idiot than me ;-) )&lt;br /&gt;&lt;br /&gt;Okay, the next interesting clause is "If I were to/ If I were you .." - I am sure that this is the clause that most of us use quite often - some might say "If I were the PM of this country ..." , while some others might say - "If I were the richest man on this earth" ; some might say - "If I were the president of US..." and some might even say "If I were GOD ... " ;-)&lt;br /&gt;&lt;br /&gt;The reason why I like this clause is very simple - It let's you think of anything that you wish  and this gives you the start to dream about anything and everything and as one of the day dreamers, I look for such a starter feel to switch to my dreamy world ;-)&lt;br /&gt;&lt;br /&gt;Now, the obvious question that I put to myself is how did I use "If I were to" recently ... Well, let me tell you that Feb-2008 has become my favorite month (not because of the Valentine's day) &lt;span style="font-weight: bold;"&gt;&lt;/span&gt;because I am spending time with my engineering pals and having fun as we are meeting after a very long time and in such happiest moments my feeling is "If I were to ask GOD, I would ask him to stop the time and let me enjoy with my friends ;-)"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-7806056632746645303?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/7806056632746645303/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=7806056632746645303' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/7806056632746645303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/7806056632746645303'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2008/02/if-i-were-to.html' title='If I were to .... &lt;hr class=&apos;ruler&apos; /&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-3783637104565507335</id><published>2008-01-05T20:38:00.000+05:30</published><updated>2008-01-06T08:57:26.850+05:30</updated><title type='text'>Going for driving classes ? My observations might help ...</title><content type='html'>May be because am an Arian, I day dream alot, fantasize things and try to get my dreams materialized ;-) While I was in Zurich, I got fascinated by cars so much that I wish to have a Mercedes two-seater with a gorgeous french babe by my side on a long drive and .... Well,I felt that the dream is cool but the there are two things missing - one - I donno driving, and the other ...you can guess , hehe...&lt;br /&gt;&lt;br /&gt;Ok, let me talk about driving here .. I have been riding a bike for the past twelve years or so and initially I  thought that driving a car shouldn't be that tough ! Of late, I joined a driving school and started learning how to drive a car. I have some observations that I intend to put down in this post with a hope that these observations help the reader of this post (provided you too have just started driving a car :-))&lt;br /&gt;&lt;br /&gt;On Day-1, the instructor showed me where the accelerator, the clutch and the brake are located, explained me a bit on when and how to use them and asked me to control the steering alone and leave the rest to him. I felt that the guy underestimated me without knowing the fact that I have 12 yr experience (bike)... but the moment I got on to the road, I realized that I overestimated myself :-( The most important thing while driving a car is to gaincommand over steering.&lt;br /&gt;&lt;br /&gt;For a couple of days, I practised controlling the steering and when my instructor felt that I was comfortable enough with the steering, he asked me to use the clutch, accelerator and the brake..One common experience that a novice driver will have is that the car stops the moment you switch to first gear and start releasing the clutch... sometimes you get frustrated too 'coz you  end up spending time starting the car and putting the vehicle on gear 1 :-( So the next important thing is - how to release the clutch and get the car moving smoothly in gear 1..&lt;br /&gt;&lt;br /&gt;Once you master that, just keep in mind that you switch to higher gears (2, 3, 4) if you think that the road is clear and the car can keep going coolly.. but if you think that you got to slow down, then switch to lower gears (1 or 2) so as not to let the car stop abruptly.&lt;br /&gt;&lt;br /&gt;So far, so good.. the tips above should keep you going on the road provided you are well within the speed limits and cautious (don't say you are arian and you day dream a lot ;-),just concentrate on the road and the traffic around you)&lt;br /&gt;&lt;br /&gt;Then follows an exercise on how to run the car in reverse gear.. this should be relatively simpler than the ones above..&lt;br /&gt;&lt;br /&gt;Besides, there is one last thing that is very important and is really really tough.. and this one is the technique that you should use while ascending a steep road with traffic infront and behind you..God, this the scary part of the story 'coz when you are heading up the steep and for some reason if you got to stop and wait for a moment,you will observe the car goes backwards and the guy behind you keeps honking..you get tensed !!! Well, a couple of practice sessions and you should be able to manage.. handle the clutch, brake and the accelerator so that you move forward "only"..&lt;br /&gt;&lt;br /&gt;After you are comfortable with the car, all the experiences while learning look funny.&lt;br /&gt;I enjoy driving a car now.. after all it's the practice that makes you perfect :-) and for me,  it's an attempt to chase a dream ;-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-3783637104565507335?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/3783637104565507335/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=3783637104565507335' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/3783637104565507335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/3783637104565507335'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2008/01/going-for-driving-classes-my.html' title='Going for driving classes ? My observations might help ...'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-2651529003416359205</id><published>2007-12-08T19:59:00.000+05:30</published><updated>2007-12-08T21:54:44.122+05:30</updated><title type='text'>SMS xyz to *1234*  .. how is it different from an SMS to a friend ?  </title><content type='html'>Couple of months ago, I was watching a commercial on TV (in which Hritik dances with a gorgeous woman). I liked the music very much. I observed some text scrolling at the bottom of the screen with instructions on how to download that music as a ringtone.&lt;br /&gt;&lt;br /&gt;I was very excited, grabbed my mobile and sent an SMS as per instructions,downloaded the tone and played it on my mobile. After I played the tone, I didn't like the ringtone much and to add to my disappointment I realized that I was charged about Rs 7/- !! (which is about 5 times the price that I pay if I sent an SMS to a friend :-( )&lt;br /&gt;&lt;br /&gt;How is such an SMS different from a normal SMS ? How am I charged and who's charging me? Is it the service provider or the vendor of the service (ringtones, wallpapers, etc)?  What's happening technically behind the scenes ? As usual, there are too many questions that made me explore :-)&lt;br /&gt;&lt;br /&gt;In this context, let me recollect one of my favorite quips which goes like this:&lt;br /&gt;&lt;br /&gt;"I learnt only A,B,C,D at school,&lt;br /&gt;rest everything, I learnt from Google ;-)"&lt;br /&gt;&lt;br /&gt;I searched through web, does a lot of reading and found out how things work and here are the details for you:&lt;br /&gt;&lt;br /&gt;&lt;span class="mainText"&gt;In SMS terms, there is a concept called "reverse billing". For example, suppose you want to develop a commercial  ringtone download application that charges a fee from the user for  each ringtone downloaded. One way to accept payment is to use a  &lt;/span&gt;&lt;span class="mainText"&gt;reverse &lt;/span&gt;&lt;span class="mainText"&gt;billing phone number obtained from a wireless carrier.&lt;br /&gt;&lt;br /&gt;To  buy a ringtone, the user will write an ordinary SMS text message  that contains the ID of the ringtone he/she wants to buy and send it  to your SMS application's &lt;/span&gt;&lt;span class="mainText"&gt;reverse &lt;/span&gt;&lt;span class="mainText"&gt;billing phone number. Your SMS  application will then send back one or more &lt;/span&gt;&lt;span class="mainText"&gt;reverse &lt;/span&gt;&lt;span class="mainText"&gt;billing SMS  messages that carry the ringtone. The user will be charged a fee for  the &lt;/span&gt;&lt;span class="mainText"&gt;reverse &lt;/span&gt;&lt;span class="mainText"&gt;billing SMS messages he/she received. The fee will be  included in the user's monthly mobile phone bill or be deducted from  his/her prepaid card credits. Depending on the agreement between you  and the wireless carrier, all or part of the money received will be  given to you :-)&lt;br /&gt;&lt;br /&gt;After having known this fact, everytime I see ads asking people to vote for someone (most common questions are: "Will India win the match? Will Sachin score 100 ? Vote for someone in a reality show and let the participant win a competition , blah, blah.. ) I laugh at some of the questions and I pity those SMSing to such questions..&lt;br /&gt;&lt;br /&gt;Boss, after all it's money, your money, so please spend it for some useful stuff.. do some charity or do something that gives you some satisfaction :-)&lt;br /&gt;&lt;br /&gt;In my opinion, dowloading a ringtone is, in a way, better than sending SMS saying that a cricketer will score a 100 or some political party will win the election or some silly stuff like these, isn't it? (no pun intended, please don't get me wrong! )&lt;br /&gt;&lt;br /&gt;Okay, let me not influence your thinking, all I wanted to say is, here is a very good article on SMS - &lt;a href="http://www.developershome.com/sms/smsIntro.asp"&gt;Introduction to SMS messaging&lt;/a&gt;&lt;/span&gt;&lt;span class="mainText"&gt; Hope you find this useful :-)&lt;/span&gt;&lt;br /&gt;&lt;span class="mainText"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-2651529003416359205?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/2651529003416359205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=2651529003416359205' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/2651529003416359205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/2651529003416359205'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2007/12/sms-xyz-to-1234-how-is-it-different.html' title='SMS xyz to *1234*  .. how is it different from an SMS to a friend ?  &lt;hr class=&apos;ruler&apos; /&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-6078420401971358213</id><published>2007-12-01T12:23:00.000+05:30</published><updated>2007-12-01T23:17:40.352+05:30</updated><title type='text'>Local language ... </title><content type='html'>Working for a software company, I come across people from different parts of the country and I do interact with people from different parts of the world as well. One of the common issues that I observed at work is "language".&lt;br /&gt;&lt;br /&gt;One of the most common complaints that I hear from my friends (from other states) is that locals tend to switch to their mother tongue, ignoring the presence of friends who cannot understand the native language !! And believe me, this was a complaint from one of my clients too (a couple of years ago).&lt;br /&gt;&lt;br /&gt;To me, there is an issue and there isn't one really !! Okay, let me explain .. there is an issue to those who are curious to know what one is talkin' about (irrespective of relevance) and due to this curiosity, one might complain that something fishy is going on ... On the other hand, one is very comfortable as well as expressive in his/her own mother tongue than any other language so I don't see an issue in discussing something in the local language.&lt;br /&gt;&lt;br /&gt;One has to act according to the situation and keep in mind the participants of the discussion. If someone gets upset using local language, then better discuss things in a language that everyone can understand.&lt;br /&gt;&lt;br /&gt;On the flip side,  I see people staying for years but still can't understand native language.I feel that if you are gonna stay for long, then better learn the local language as it helps alot.. 'coz not everyone (esp. small shop keepers, etc) is comfortable in national or international languages and you might have to interact with them quite often ;-)&lt;br /&gt;&lt;br /&gt;Views in this post are subjective, so please excuse me if I hurt your feelings by accident :-(&lt;br /&gt;Okay, now don't ask me "How many languages do you know?" (Besides Telugu (my mother tongue), Hindi and English, I know a bit of Tamil, one or two words in German and Chinese ;-) )  xie xie (thanks) for reading my post :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-6078420401971358213?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/6078420401971358213/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=6078420401971358213' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/6078420401971358213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/6078420401971358213'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2007/12/local-language.html' title='Local language ... &lt;hr class=&apos;ruler&apos; /&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-3653378511110788230</id><published>2007-11-25T17:44:00.000+05:30</published><updated>2007-12-01T11:42:58.558+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='web development'/><category scheme='http://www.blogger.com/atom/ns#' term='add-ons'/><category scheme='http://www.blogger.com/atom/ns#' term='testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Firefox'/><title type='text'>Firefox -  for web developers and testers... </title><content type='html'>Couple of months ago, I had a post on my blog titled -&lt;br /&gt;&lt;a href="http://kiran-banda.blogspot.com/2007/06/usage-of-correct-technology-is-as.html"&gt;Usage of correct technology is as important as using the technology correctly!&lt;br /&gt;&lt;/a&gt; where I mentioned that it is easier to debug a web page using "Firefox".&lt;br /&gt;&lt;br /&gt;In this post, I would like to (infact, love to) talk about some of the features in Firefox that I think are very powerful and can help developer's productivity.Besides, there are some features that are useful for testers and "curious" web surfers ;-)&lt;br /&gt;&lt;br /&gt;Firefox supports "extensions" - add-ons that run in Firefox browser, and these add-ons add lot of value to Firefox.&lt;br /&gt;&lt;br /&gt;Let me list down the add-ons that I am using and give you a brief overview of what that add-on does and what is so interesting about it...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;u&gt;Firebug&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This add-on helps debug a web page. You can debug a javascript code (setting breakpoints and step through the code), play with CSS, HTML on the fly and the see the changes then and there.&lt;br /&gt;&lt;br /&gt;I found this add-on very helpful while fixing layout issues, script errors and understand the script in websites with funky stuff.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;u&gt;Webdeveloper&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ever wanted to see the anatomy of a web page ? Install this add-on 'coz it lets you highlight images, table cells, tables, positioned elements, etc. Very helpful to understand the layout on a web page.&lt;br /&gt;&lt;br /&gt;The other interesting thing is that this add-on can show you the password that is filled in automatically by the browser. This might help if you had turned "auto fill password" feature on,  and say, after sometime, you forgot the password :-(&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-style: italic;"&gt;&lt;u&gt;Fireshot&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Suppose you are a tester and you encountered an issue on the web page that you are testing and you wanted to take a screenshot of the page illustrating the error detail. What you might do is press Alt+ Print screen, edit the image in MS Paint, etc and then email the screenshot.&lt;br /&gt;&lt;br /&gt;With Fireshot, you can take a screenshot, annotate the areas in the image and email, all from within Firefox, isn't it interesting ?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;&lt;u&gt;LORI&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Did you ever wanted to know how long it takes to load a web page? How many requests were made before fetching the actual web page? How many bytes were downloaded from the web page ?&lt;br /&gt;&lt;br /&gt;The answer to all the questions above is an add-on named- LORI&lt;br /&gt;&lt;br /&gt;The list above is very small and since it takes a while to explain each and every add-on, I suggest you to explore the add-ons yourself while I wind up now with a list of other add-ons that I have in my Firefox&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Broadband Speed test and Diagnostics&lt;/li&gt;&lt;li&gt;Tamper Data&lt;br /&gt;&lt;/li&gt;&lt;li&gt;ColorZilla&lt;/li&gt;&lt;li&gt;FoxyTunes&lt;/li&gt;&lt;li&gt;Quick Restart&lt;/li&gt;&lt;li&gt;Session Manager&lt;/li&gt;&lt;li&gt;SpiderZilla&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Tab Mixplus&lt;/li&gt;&lt;li&gt;Tab Effect&lt;/li&gt;&lt;li&gt;Tab Catalog&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Unplug&lt;/li&gt;&lt;li&gt;ClipMarks&lt;/li&gt;&lt;/ul&gt;Are you set to explore ? Install Firefox, Choose Tools -&gt; Add -ons and click on "Get extensions" to browse through the add-ons.&lt;br /&gt;&lt;br /&gt;Happy browsing :-)&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-3653378511110788230?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/3653378511110788230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=3653378511110788230' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/3653378511110788230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/3653378511110788230'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2007/11/firefox-for-web-developers-and-testers.html' title='Firefox -  for web developers and testers... &lt;hr class=&apos;ruler&apos; /&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-2434179927452863264</id><published>2007-11-09T14:04:00.000+05:30</published><updated>2007-11-09T14:23:58.283+05:30</updated><title type='text'>Just Dial ... </title><content type='html'>The other day, I published a post  &lt;a href="http://kiran-banda.blogspot.com/2007/10/mobile-phone-sms-way-to-go.html"&gt;Mobile phone &amp;amp; SMS - the way to go ...&lt;/a&gt; and felt that I have written an informative article. But then, after a couple of days, I ran into a situation and I haven't used the service explained in my blog. It's not that I haven't tried, but just that it didn't work or I found it difficult to get things to work!!&lt;br /&gt;&lt;br /&gt;I started thinking that if a person with some technical know-how can't get the information through a service like SMS, how can a layman gets through it? Is it that there is no such service in place that can give me information via a phone call? Well, there is a service (India in general, Hyderabad in particular) named &lt;a href="http://search.justdial.com/"&gt;Just Dial&lt;/a&gt; that one can avail via phone or internet.&lt;br /&gt;&lt;br /&gt;To access services from "Just Dial" in Hyderabad, all that one has to do is to just dial 040-24444444 (2 followed by seven 4's). The phone number is very easy to remember and the service is too good.&lt;br /&gt;&lt;br /&gt;Earlier, the representative who attends your call used to furnish the information verbally, but now, if you have a mobile phone, "Just Dial" SMSs the information right on to your mobile (you don't have to run for a pen and a paper and scribble the info yourself :-) )&lt;br /&gt;&lt;br /&gt;Technology is always good but it really matters how useful it is to the users, isn't it? I feel that "Just Dial" is just a phone call away and one need not be an internet savvy or a technocrat to avail the services from "Just Dial" :-)&lt;br /&gt;&lt;br /&gt;Putting it simply, one need not learn how to SMS for information, but just has to communicate the query over phone and that's it, you have the information right on your mobile (if you have one), simple :-)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-2434179927452863264?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/2434179927452863264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=2434179927452863264' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/2434179927452863264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/2434179927452863264'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2007/11/just-dial.html' title='Just Dial ... &lt;hr class=&apos;ruler&apos;/&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-7195866974650228535</id><published>2007-11-08T18:09:00.000+05:30</published><updated>2007-11-08T18:41:35.012+05:30</updated><title type='text'>A profession that I respect the most ... </title><content type='html'>Every profession is important in its own way, I don't deny that, but to me a "Doctor" is just next to God.This is purely a subjective opinion and here is why I am so impressed by this profession.&lt;br /&gt;&lt;br /&gt;The other day, one of my uncles suffered from a serious illness. It all started with a low sugar symptom, followed by unconsciousness. My aunt and other relatives, who were present there, got tensed so much and got my uncle drink a glass of water, hoping that things would settle down. But they didn't know that drops of water that he drank went into his lungs, thus leading to lung infection.&lt;br /&gt;&lt;br /&gt;My uncle was admitted to a super speciality hospital and the treatment began.&lt;br /&gt;&lt;br /&gt;Doctors analyzed the case based on the inputs from my relatives and some tests that were prescribed. Based on the results, to the surprise and shock of everyone, it came out that there are a few clots in my uncle's brain !!&lt;br /&gt;&lt;br /&gt;Oh my God, too many complications... the doctor who took up my uncle's case went blank for a while. For a sec, he didn't understand how to plan the treatment. He called up his expert friends and worked out a plan.He asked my relatives not to panic but to cooperate.&lt;br /&gt;&lt;br /&gt;The treatment started in an intensive care unit. The doctor worked on getting the lung infection cured.After two days, the doctor was successful in curing the lung infection. He subjected my uncle to a couple of antibiotics and kept him under observation for another couple of days. Things seemed to be in control until one unfortunate day when blood splashed out from my uncle's ears and nose !!!&lt;br /&gt;&lt;br /&gt;The doctor came running to attend to my uncle. He was successfull in controlling the bleeding, but realized that my uncle lost his memory.  Doctors worked for about a month and were able to restore my uncle's health but not the memory and strength. My uncle was not able to eat or walk on his own.He speaks but we can understand him very barely.&lt;br /&gt;&lt;br /&gt;The doctor recommended that my uncle be moved to a rehabilitation center at Hyderabad (Lakshmi Neuro Center, Hyderguda, Hyderabad).&lt;br /&gt;&lt;br /&gt;The treatment continued for one more month at this rehabilitation center and now my uncle is capable of walking on his own, eat, speak and laugh :-) He recollects his bank a/cs, ATM passwords, phone numbers of his friends and relatives and above all he started attending his work :-)&lt;br /&gt;&lt;br /&gt;It is the doctors who brought my uncle's life back again.We all feel that my uncle is reborn. He is enjoying his second life now and is very happy.&lt;br /&gt;&lt;br /&gt;Thanks to "doctors" who solve such complex cases and bring about happiness in families like my uncle's :-) and this is the reason why I respect the profession of a doctor, the most :-)&lt;br /&gt;&lt;br /&gt;I wish I were a doctor ! Being a s/w engineer, I wish "there be a debugger for life to troubleshoot issues and fix 'em ;-) "&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-7195866974650228535?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/7195866974650228535/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=7195866974650228535' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/7195866974650228535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/7195866974650228535'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2007/11/profession-that-i-respect-most.html' title='A profession that I respect the most ... &lt;hr class=&apos;ruler&apos; /&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-4189950974656558999</id><published>2007-10-14T22:29:00.000+05:30</published><updated>2007-10-14T22:50:39.997+05:30</updated><title type='text'>Mobile phone &amp; SMS - the way to go ...</title><content type='html'>I had been to Zurich, Switzerland and Toronto, Canada and everytime I come back from my trip, I tend to compare the differences between these developed countries and a developing country like India (my country). I don't think I am a good analyst but the thought process gets initiated automatically and it lasts for about a month or so.&lt;br /&gt;&lt;br /&gt;In my opinion, some of the fundamental things that my country should improve on are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Access to information&lt;/li&gt;&lt;li&gt;Being organized/systematic especially w.rt traffic on roads&lt;/li&gt;&lt;li&gt;People's active participation in politics, paying taxes, etc&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I believe the list above is a very very small one, but that's not the point that I am going to stress up on in this post. I am not that qualified to give statements on how should India progress but I do have some observations and if these are considered in some way or the other then I think the purpose of this post is served :-)&lt;/p&gt;&lt;p&gt;Okay, the item that I wanted to talk about here is related to the point - "Access to information"&lt;/p&gt;&lt;p&gt;While I was in Toronto, I noticed that people rely on web/mobile phones (service providers in particular) incase they need some information - say routes, hotels, etc. I can say "information is just a click away ;-) "&lt;/p&gt;&lt;p&gt;I came back from Toronto and found that we don't have such a practice here. A larger segment of the population don't know how to access information even though it is available on the net! It's not that information is not available at all, but it's just that people don't know how to access it.&lt;/p&gt;&lt;p&gt;A couple of months ago, I was discussing the same thing with my colleagues and we even thought of coming up with a service (SMS) using which the user of a mobile can send a query to a given number and can get the information back on his mobile. Infact, I was so excited at the idea that I did some research on SMS and stuff but then had to get back to my projects and the mainstream work :-(&lt;/p&gt;&lt;p&gt;Two days ago, I came to know that Google had launched an SMS service that does exactly what we intended to do (thanks to Google for their efforts in this direction). Check out the details @ &lt;a href="http://www.google.co.in/mobile/sms/index.html"&gt;http://www.google.co.in/mobile/sms/index.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Given the rate at which the mobile users are increasing, I hope, sooner or later, people get used to this service and at least one of the items that I mentioned above gets satisifed :-)&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-4189950974656558999?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/4189950974656558999/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=4189950974656558999' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/4189950974656558999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/4189950974656558999'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2007/10/mobile-phone-sms-way-to-go.html' title='Mobile phone &amp; SMS - the way to go ...&lt;hr class=&apos;ruler&apos; /&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-8484183644477944452</id><published>2007-09-30T19:16:00.001+05:30</published><updated>2011-07-07T21:39:10.184+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Two dimensional tree'/><title type='text'>Bi-directional Tree : C# .NET + WinForms </title><content type='html'>Have you ever required to have a tree view that opens down as well as upwards ? Interesting... isn't it ?&lt;br /&gt;&lt;br /&gt;Of late, I am developing one such control in C# .NET2.0 and here is the screenshot of how the control looks like (click on the image below for a full view)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_k6gsMbQgZmo/Rv-pJ5clkgI/AAAAAAAAACA/SncucrSI12Y/s1600-h/Bidirectional+Tree.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5115993689220813314" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_k6gsMbQgZmo/Rv-pJ5clkgI/AAAAAAAAACA/SncucrSI12Y/s400/Bidirectional+Tree.JPG" border="0" /&gt;&lt;/a&gt; I shall publish the list of features that the control supports little later as the control is not stable yet, so I feel it's too early to boast of this piece ;-)&lt;br /&gt;&lt;div&gt;&lt;a href="http://4.bp.blogspot.com/_k6gsMbQgZmo/Rv-o7ZclkfI/AAAAAAAAAB4/IFoSqt9z4kI/s1600-h/Bidirectional+Tree.JPG"&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-8484183644477944452?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/8484183644477944452/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=8484183644477944452' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/8484183644477944452'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/8484183644477944452'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2007/09/bi-directional-tree-c-net-winforms.html' title='Bi-directional Tree : C# .NET + WinForms &lt;hr class=&apos;ruler&apos; /&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_k6gsMbQgZmo/Rv-pJ5clkgI/AAAAAAAAACA/SncucrSI12Y/s72-c/Bidirectional+Tree.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-2448497947602228679</id><published>2007-09-29T20:39:00.000+05:30</published><updated>2007-09-29T20:46:42.287+05:30</updated><title type='text'>Silly yet embarrassing situation for me, always …</title><content type='html'>&lt;div align="left"&gt;Cricket,I believe, is the one of the most popular games in this world and especially in India,it has got first place than any other game! All my friends do watch this game and some even forego lunch/dinner/work etc. for this game :-(&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;I always wonder what’s there so much in this game that is enthralling the masses. Frankly, I am not that sport in general and I don’t watch cricket in particular.Every now and then when there is Cricket (telecast on TV), I run into some situations that I feel embarrassing, but can’t help it, and I am sure, if you are reading this blog post of mine and is a big fan of Cricket you will laugh at me or you would kill me?&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;The other day, there was the final match in T20 world cup Cricket and 90 % of my office was empty by about 6:00 PM (which is not an usual thing at all !!) I was in office waiting for one conf. call with my friend onsite and I thank him ‘coz he kept me busy till the match is over ;-) By the time the call was over the match came to an end and the results were out. I packed all my stuff and came out of my office and ran into a stranger (never saw him before in my office premises). To my surprise, that fellow started explaining the way the players played the game and the way India turned out to be a winner. While he was explaining, he was so excited that it seemed to me as if he were one of the cricketers who won. Since I don’t know cricket nor do I enjoy a discussion on that, I was looking here and there praying God to end this conversation.&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;Often I come across people asking me a question “Boss, what’s the score?” while I don’t even know that there is a cricket match going on and I donno who the participants are! In such situations I learnt to answer like this - “Sorry boss, am not following cricket these days”&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;The reason why I feel that such situations are silly yet embarrassing is because 9 out of 10 people around me love and live cricket and I feel like an odd man out! May be it is an interesting game, but it’s definitely not on my list of priorities. I don’t comment on one’s interest in Cricket but I observe that people go crazy and forego their priorities and that is a concerning thing.&lt;br /&gt;&lt;/div&gt;&lt;div align="left"&gt;Bottom line – if you are in my team and you have a match to watch and a conf. call to attend at the same time, then too bad, you have to be there for the call and enjoy the highlights the next day ;-)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-2448497947602228679?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/2448497947602228679/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=2448497947602228679' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/2448497947602228679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/2448497947602228679'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2007/09/silly-yet-embarrassing-situation-for-me.html' title='Silly yet embarrassing situation for me, always …&lt;hr class=&apos;ruler&apos;/&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-5724589617468758612</id><published>2007-07-14T14:19:00.001+05:30</published><updated>2009-01-26T09:56:53.436+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.Net'/><category scheme='http://www.blogger.com/atom/ns#' term='Custom Control'/><category scheme='http://www.blogger.com/atom/ns#' term='Time picker'/><title type='text'>Smart Time Picker - ASP.NET Custom Control </title><content type='html'>&lt;p&gt;One of the interesting things to experiment with in .NET (in general and ASP.NET, in particular) is – Custom controls.&lt;br /&gt;&lt;br /&gt;In one of my projects, I have come across a requirement where the application allows user to input time values. The way it is implemented is by presenting a text field, attach a regular expression validator (javascript) to the onblur event handler of the text box and let the user input the text in it. When the text field goes out of focus, the onblur event handler gets into action and alerts the user incase the input value is not a well-formed time value.&lt;br /&gt;&lt;br /&gt;Sounds like it works and it really does :-)&lt;br /&gt;&lt;br /&gt;Let’s look at the things that might prove frustrating both to the developer as well as user ;-)&lt;br /&gt;&lt;br /&gt;From user’s perspective – why should the control allow wrong input in the first place instead of validating the input when tabbed out?”&lt;br /&gt;&lt;br /&gt;From a developer stand-point, the approach explained above works but the complexity is when the event handler has to validate the time based on a particular format, validate the input as when it is keyed in, etc.&lt;br /&gt;&lt;br /&gt;Format ?? – yes, a programming language like .NET or Java supports presentation of date/time values based on standard formats , like HH:mm:ss (24 hr format), h:mm:ss tt (12 hr format with leading zero), yyyy-MM-dd (date format), etc.&lt;br /&gt;&lt;br /&gt;Let’s not bother about the date formats for now, but look at the time formats. If you observe, basically there are two formats – 24 hr format and 12 hr format and to complicate things, there are formats that mandate a leading zero if the value is a single digit ( eg: format = hh:mm:ss tt ; value = 09:22:22 AM).&lt;br /&gt;&lt;br /&gt;Now, it’s time for some gyaan – “Before you try to invent something, see if there is a “Newton” out there who had proved things for you ;-)” and this funda of mine works in most of the cases, especially in software development.&lt;br /&gt;&lt;br /&gt;I believe every one of us have seen the timer control that is part of “Date and Time properties” window in MS Windows that comes up when you double click on the datetime in system tray (bottom right).&lt;br /&gt;&lt;br /&gt;I have searched for time picker controls on the web, but couldn’t find one that am looking for&lt;br /&gt;&lt;br /&gt;I borrowed the idea from the timer control in Windows and came up with a custom .NET control that can be used to capture time values.&lt;br /&gt;&lt;br /&gt;Below is a screenshot of the control:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5086978038285807618" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_k6gsMbQgZmo/RpiTkug9MAI/AAAAAAAAABw/NMuuawsvz6U/s320/SmartTimePickerControl.png" border="0" /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;Here are some of the highlights of “Smart Time Picker”:&lt;br /&gt;&lt;br /&gt;1. Supports IE and Mozilla Firefox&lt;br /&gt;2. Look-and-feel of the editable area is customizable via CSS&lt;br /&gt;3. Supports the following formats – H[H]:m[m]:s[s] and h[h]:m[m]:s[s] tt – where [..] is optional, used to mandate a leading zero for values less than 10&lt;br /&gt;4. Handles keyboard and mouse events and updates the value in the time picker as appropriate – eg: up arrow increments the value by 1, down arrow decrements the value by 1, left arrow shifts the focus to left, etc.&lt;br /&gt;5. Pressing any key / clicking on the arrow images when the text field is empty, sets the picker to current system time&lt;br /&gt;6. Backspace / Delete key can be used to erase the contents&lt;br /&gt;7. Supports attachment standard ASP.NET validators [eg: Required field validators to mark the field as mandatory on a page]&lt;br /&gt;8. Renders editable area in disabled mode and doesn’t present the arrow controls when the control is disabled&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If you think you have a requirement and my control helps, please do write to me and I shall email you the binaries of custom control. You know, I am a staunch supporter of “Open Source Community”, so I don’t mind giving you the sources too :-) &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;And most importantly, if you have any suggestions/comments, please feel free to post them and let me enhance the control.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-5724589617468758612?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/5724589617468758612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=5724589617468758612' title='36 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/5724589617468758612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/5724589617468758612'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2007/07/smart-time-picker-aspnet-custom-control.html' title='Smart Time Picker - ASP.NET Custom Control &lt;hr class=&apos;ruler&apos;&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_k6gsMbQgZmo/RpiTkug9MAI/AAAAAAAAABw/NMuuawsvz6U/s72-c/SmartTimePickerControl.png' height='72' width='72'/><thr:total>36</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-2284667217917912879</id><published>2007-06-24T10:08:00.000+05:30</published><updated>2007-06-30T23:50:20.564+05:30</updated><title type='text'>"Maestro on a mission" </title><content type='html'>As, I mentioned in "My First post" that am a big fan of A.R.Rahman, let me talk a bit about my idol now...&lt;br /&gt;&lt;br /&gt;Of late, Rahman has come up with a couple of videos - one on poverty - "Pray for me brother" and the other on Taj Mahal - "Save Taj".&lt;br /&gt;&lt;br /&gt;Pray for me brother is a song about eradicating poverty in the world. On the technical side of it, to my knowledge, this is a video that is targetted to be played on mobile phones (Nokia NSeries).&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://www.youtube.com/v/bgvt-Kin7QU" width="425" height="350" type="application/x-shockwave-flash" wmode="transparent"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;Save Taj - is a song that is promoted by one of the leading radio/TV channels in India seeking votes from the public to let Taj Mahal remain in the list of “Seven wonders”.&lt;br /&gt;&lt;br /&gt;Though the tune in this song reminds one of the songs in the movie “Guru” but still, the song is worth listening. (I am not impressed with the video, though!!)&lt;br /&gt;&lt;br /&gt;&lt;embed src="http://www.youtube.com/v/G3j78xeuqhA" width="425" height="350" type="application/x-shockwave-flash" wmode="transparent"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I know that there are people who say that Rahman charges too much from producers and he is a costly resource to work with, blah blah… I say, “Who cares? As a fan, I am getting the best music and if a producer is charged for that quality, isn’t the producer making money out of the audio sales??”&lt;br /&gt;&lt;br /&gt;And there are some people who say – “Rahman copies beats / tunes from English songs! He is a copy cat !!” and for that, I say, “As a software engineer, I take this as “reuse”. If you like something that is not yet tried out in Indian music, I don’t think there is something wrong in trying that out here.. After all, he is trying to give good quality music to the audienceJ”&lt;br /&gt;&lt;br /&gt;And there are some people who say – “Rahman is a kid when compared to music directors from Hollywood, who win Oscars!!” and for that, I say, “Oscar is for Americans and to my knowledge, only Americans keep winning that ;-). If you look at the songs from ARR that got nominated to Oscar - this time, there are three songs composed by him and I think it is an achievement J If Rahman continues like the way he has been doing till now, am sure, getting an Oscar isn’t a tough target”&lt;br /&gt;&lt;br /&gt;Okay, let’s leave the debate and let me tell you why I adore him so much –&lt;br /&gt;&lt;br /&gt;“ARR is definitely the highest paid musician in the Indian film industry. Now what does he do with all that money? Quite a natural question, isn’t it? Well, to all those who know very little about ARR, let me tell you, that ARR has set up a recording studio @ Chennai , named “Panchatan”, which supposedly has the most sophisticated audio equipment in India. He also began a collection of sound samples, creating one of the most comprehensive sonic libraries in Asia.&lt;br /&gt;&lt;br /&gt;Now that’s about his contribution towards music – besides that, he has set up “ARR Foundation” and he is doing his bit towards charity.&lt;br /&gt;&lt;br /&gt;Join me in wishing ARR all success :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-2284667217917912879?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/2284667217917912879/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=2284667217917912879' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/2284667217917912879'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/2284667217917912879'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2007/06/maestro-on-mission.html' title='&quot;Maestro on a mission&quot; &lt;hr class=&apos;ruler&apos;/&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-3261541526227531104</id><published>2007-06-23T22:55:00.000+05:30</published><updated>2008-12-12T09:39:56.534+05:30</updated><title type='text'>"Box plot graph" - have you heard of this ?</title><content type='html'>Now-a-days, I am working on a project in which we generate reports including charts/graphs using SQL Server reporting services and a third party charting control suite (Dundas charts).&lt;br /&gt;&lt;br /&gt;Although I am a Math student, I am not that good at Math at all (I remember that I used to suffer from fever, especially when there was an exam on Mathematics ;-) ).&lt;br /&gt;&lt;br /&gt;I work with a team of two developers, whose relative experience on reporting services and graphs is zero !!&lt;br /&gt;&lt;br /&gt;I got the requirements from my counterpart, onsite, and the task is to generate a “Box plot” using the data that was given to us (it is a SQL Server database).&lt;br /&gt;&lt;br /&gt;My initial reaction was –&lt;br /&gt;“Box plot, what the hell ?&lt;br /&gt;I have heard of point graphs, line graphs, histograms, Pareto charts, blah..blah.. but what is this new thing ?.&lt;br /&gt;I just have a database, full of data and a control set using which I can draw a box plot, for sure, but how do I know if the box plot that I got makes sense w.r.t the data that I have?&lt;br /&gt;How do I deduce relevance between the box plot and the dataset that my stored procedure gives?”&lt;br /&gt;&lt;br /&gt;Hmmm, too many questions!!&lt;br /&gt;&lt;br /&gt;I told myself, “Mr.Banda, fun started just now, let’s see how it goes!”&lt;br /&gt;&lt;br /&gt;Okay, let’s see if we can understand this “Box plot” thing first&lt;br /&gt;&lt;br /&gt;I believe that I learnt “A, B,C,D” @ school, and rest everythin- I learnt from Google ;-) .. so started searching for some tutorials and documentation on “Box Plot”&lt;br /&gt;&lt;br /&gt;I know, you too are curious to know how a box plot looks .. here is an example of a box plot&lt;br /&gt;&lt;br /&gt;&lt;screenshot&gt;&lt;a href="http://4.bp.blogspot.com/_k6gsMbQgZmo/Rn1X9F60WnI/AAAAAAAAAAw/V5ul22EzdoI/s1600-h/boxplot.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5079312661816302194" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_k6gsMbQgZmo/Rn1X9F60WnI/AAAAAAAAAAw/V5ul22EzdoI/s320/boxplot.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I found a very good article on web that explains what a box plot is, what all values can be plotted using a box plot, and above all, how to read and understand a given box plot.&lt;br /&gt;&lt;br /&gt;Here is the link: &lt;a href="http://www.shodor.org/interactivate/discussions/BoxPlot/"&gt;http://www.shodor.org/interactivate/discussions/BoxPlot/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After getting my basics right on the box plot, my team and I have spent just 8 hrs (believe me, it’s true) and got the box plot rendered using the control set and the reporting services.&lt;br /&gt;&lt;br /&gt;Here is a screenshot of the box plot that we drew using the data that we have:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;screenshot&gt;&lt;img id="BLOGGER_PHOTO_ID_5079473443917027970" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_k6gsMbQgZmo/Rn3qL160WoI/AAAAAAAAAA4/Ffycw2KLzYo/s320/myproject.jpg" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;Doesn’t it look complicated than the one that is shown on the tutorials site? &lt;/p&gt;&lt;p&gt;I feel that we have now mastered “graphs” and incase you have any queries on boxplot, you know whom to contact :-)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-3261541526227531104?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/3261541526227531104/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=3261541526227531104' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/3261541526227531104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/3261541526227531104'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2007/06/box-plot-have-you-heard-of-this.html' title='&quot;Box plot graph&quot; - have you heard of this ?&lt;hr class=&apos;ruler&apos;/&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_k6gsMbQgZmo/Rn1X9F60WnI/AAAAAAAAAAw/V5ul22EzdoI/s72-c/boxplot.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-4532166934119552756</id><published>2007-06-19T23:14:00.000+05:30</published><updated>2008-12-12T09:39:57.219+05:30</updated><title type='text'>Usage of correct technology is as important as using the technology correctly! </title><content type='html'>&lt;div&gt;&lt;div&gt;&lt;div&gt;The other day, I turned up at the office and before I reached my seat, one of my friends (a developer in my team) walked up to me, looking frustrated, told me that he spent one full day trying to debug a javascript issue and finally gave up. He asked me if I can figure out the issue for him.&lt;br /&gt;&lt;br /&gt;Before I proceed further, the project that my friend is working on is an ASP.NET website running on .NET 2.0 and he has VS2005 on his machine.&lt;br /&gt;&lt;br /&gt;The first thing I asked him is – “How are you debugging javascript?” A very vague question and my friend answered me saying that he put several “alert” statements in his javascript code trying to figure out the statement that is causing the issue.&lt;br /&gt;&lt;br /&gt;“Hmm.. “alerts” .. not a bad option, but what if I want to inspect the state of variables, how do I do that? From what my friend told me, the only option is to have “alerts” again!!”&lt;br /&gt;&lt;br /&gt;Okay (sigh!), then I asked my friend to run the page. He reloaded the page in IE and the “alert windows” started coming up.. numerous of them.. hats off to my friend’s patience.. he kept on clicking “OK” on those alert windows but at the end of all that, he is still clueless!!&lt;br /&gt;&lt;br /&gt;I am sure, many of us (especially those who are developing web pages on various technologies like JSP, ASP(.NET), etc..) do write custom javascript code to achieve a particular requirement at the client side (like validations) and end up debugging issues by placing “alert” statements in the javascript code.&lt;br /&gt;&lt;br /&gt;I strongly believe that “usage of correct technology is as important as using the technology correctly”.&lt;br /&gt;&lt;br /&gt;Let me elaborate – when we say “debugging”, the first thing that strikes to our thinking is a development environment (IDE) that helps step through each line of code, allowing to inspect the state of the variables and to an extent let you change the state of the variable on-the-fly.&lt;br /&gt;&lt;br /&gt;How many web developers use sophisticated tools to debug a piece of javascript code? (I bet, most of the developers follow this “alert” strategy)&lt;br /&gt;In this blog, let me introduce the technique to debug javascript.&lt;br /&gt;&lt;br /&gt;The first thing that should be kept in mind is “use the technology properly”. Here in this case, we have VS 2005 (IDE) and Internet Explorer. Let me take these into account and walk you through the steps to debug a javascript code:&lt;br /&gt;&lt;br /&gt;In IE, go to Tools -&gt; Internet options -&gt; Advanced Tab… and ensure the checkboxes (as shown in the screenshot) are unchecked&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5079867515756370578" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_k6gsMbQgZmo/Rn9Ql160WpI/AAAAAAAAABA/PJ5H60Yox6A/s320/advancedoptions.png" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Place a debugger statement in the script as shown in the example below:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script language="javascript"&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;!--&lt;br /&gt;function Validate()&lt;br /&gt;{&lt;br /&gt;var i=0;&lt;br /&gt;debugger;&lt;br /&gt;// validation logic goes here&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//--&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;That’s all! When the page is run in IE, this is how the browser reacts to the debugger statement: &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5079868340390091442" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_k6gsMbQgZmo/Rn9RV160WrI/AAAAAAAAABQ/5QfzGatyJks/s320/VS2005DebugAlert.JPG" border="0" /&gt;&lt;br /&gt;And when you click “Yes” on the dialog above and confirm to debug in VS 2005, this is what you see in the IDE&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5079867786339310242" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_k6gsMbQgZmo/Rn9Q1l60WqI/AAAAAAAAABI/-gIB0UDVwMg/s320/debug.png" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;All the steps above work provided you have VS2005 installed on your machine.&lt;br /&gt;&lt;br /&gt;What if you don’t have VS 2005? Well, debugging is still possible ;-) Surprised? Use Firefox with an extension named “Firebug” :-)&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-4532166934119552756?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/4532166934119552756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=4532166934119552756' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/4532166934119552756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/4532166934119552756'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2007/06/usage-of-correct-technology-is-as.html' title='Usage of correct technology is as important as using the technology correctly! &lt;hr class=&apos;ruler&apos;/&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_k6gsMbQgZmo/Rn9Ql160WpI/AAAAAAAAABA/PJ5H60Yox6A/s72-c/advancedoptions.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-1878577184653132543</id><published>2007-06-17T23:12:00.000+05:30</published><updated>2007-06-24T10:07:20.182+05:30</updated><title type='text'>“Internship” - An interesting experiment!! </title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;Couple of weeks ago, my company announced that it is going to allow interns to work for about 2 months.&lt;br /&gt;&lt;br /&gt;We have got 3 students (names in alphabetical order - Ritika, Sravani and Sreekanth) who just completed their 4th semester.&lt;br /&gt;&lt;br /&gt;Frankly, I was not sure what we are going to do with them ‘coz I know that the thing am trying out requires fair amount of knowledge in C# and NHibernate and it takes time for us to explain these things all over from basics and then get them to do something useful :-(&lt;br /&gt;&lt;br /&gt;Sudeep (my boss :-) ) introduced those three students to me and asked me to explain them about the project that am working on (not the mainstream one, though). Of the three, one student was off for that session but just not to delay things, I blabbered something and assigned some tasks to them. One good thing that Sudeep asked these three guys to do is to record their experiences during their internship @ &lt;/span&gt;&lt;a href="http://summeratinforica.blogspot.com/"&gt;&lt;span style="font-family:trebuchet ms;"&gt;http://summeratinforica.blogspot.com&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;br /&gt;Having explained some concepts, I went through their blog site and as expected, those guys (might have) understood what I explained but couldn’t accomplish the tasks assigned (quite natural).&lt;br /&gt;&lt;br /&gt;Now I have a bigger target – I have to explain the things to them so that they understand and become productive at their tasks!! I thought, “Great, let’s do it ;-) ”&lt;br /&gt;&lt;br /&gt;From that initial session, I realized that these guys suffered from “information overload”. So in the next session, I explained them only the stuff that they are going to work on, told them not to panic incase if they think that concepts are going off their heads and let them go achieve simple stuff.&lt;br /&gt;&lt;br /&gt;To my surprise (and of course, satisfaction), those guys picked up so well that they had finished off the tasks in just one day :-) I felt – “Excellent, these guys are smarter than I thought them to be.”&lt;br /&gt;&lt;br /&gt;And then, I told them how to implement the functionality walked them through one particular case and asked them to go ahead and work on similar tasks. As usual, since these guys are smarter, with little hand-holding, they could finish their tasks.. To me these students look an “imp devil in a fairy tale, who is restless and keeps asking it’s boss for more and more work”..&lt;br /&gt;&lt;br /&gt;From this experiment, the internship exercise, I learnt a lot of lessons and am gonna apply these at my mainstream project. Of the lessons learnt, significant items are:&lt;br /&gt;&lt;br /&gt;Never subject your resources to “information overload”&lt;br /&gt;A developer should be given adequate clarity before he/she attempts to solve a problem&lt;br /&gt;A developer should understand the significance of approach/algorithm before he/she jumps to implement a solution&lt;br /&gt;&lt;br /&gt;I am sure, even those three students have enjoyed learning “bigger” things here in the project.The only thing that concerns me is that these guys have learnt stuff now (at the end of 4th semester) but the question is can they remember these things even after they are done with their graduation..Hmm, good question, I guess ;-) Well, not really. I would say, they don’t need to remember the language that they chose to implement solutions but they should remember other things that are of utmost importance:&lt;br /&gt;&lt;br /&gt;Understand the problem thoroughly&lt;br /&gt;Analyze all possible solutions- “When in doubt, ask more questions”&lt;br /&gt;Discuss and learn&lt;br /&gt;&lt;br /&gt;I know you will find this blog to be very vague since I praised those interns so much, documented some lessons learnt, gave some gyan to those interns without explaining what the project is and how complex it is, etc, etc..&lt;br /&gt;&lt;br /&gt;There is so much to write but am gonna continue this in my further blogs … Stay tuned.. &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-1878577184653132543?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/1878577184653132543/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=1878577184653132543' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/1878577184653132543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/1878577184653132543'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2007/06/internship-refreshing-experiment.html' title='“Internship” - An interesting experiment!! &lt;hr class=&apos;ruler&apos;/&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-544829222357122795.post-3534623058740787270</id><published>2007-06-14T12:50:00.001+05:30</published><updated>2007-06-24T10:07:29.892+05:30</updated><title type='text'>My first post </title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;Let me introduce my self :&lt;br /&gt;&lt;br /&gt;My name is Kiran Banda, working for a software firm @ Hyderabad, India. To talk briefly about my technical expertise - have started off my career with Java, learnt .NET and now am comfortable with both the worlds :-) , guess enough of boasting.. let me talk some sense from now on ;-)&lt;br /&gt;&lt;br /&gt;I try to keep myself abreast of the technical advancements and I always feel that one should share the knowledge and only thus can one improve.. guess am right !&lt;br /&gt;&lt;br /&gt;I keep reading blogs on the web, blogs that talk about latest stuff (techy), blogs about movies, blogs on music , etc, etc.. Oh, I forgot to mention that am a die-hard fan of A.R.Rahman and I love music.&lt;br /&gt;&lt;br /&gt;Since this is my first blog, I think this sounds like a descriptive version of a "profile" ;-) .... from my next blog on, I shall try to talk more sense :-)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/544829222357122795-3534623058740787270?l=www.kiranbanda.in' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.kiranbanda.in/feeds/3534623058740787270/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=544829222357122795&amp;postID=3534623058740787270' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/3534623058740787270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/544829222357122795/posts/default/3534623058740787270'/><link rel='alternate' type='text/html' href='http://www.kiranbanda.in/2007/06/my-first-post.html' title='My first post &lt;hr class=&apos;ruler&apos;/&gt;'/><author><name>Kiran banda</name><uri>http://www.blogger.com/profile/10729993634489031771</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
