<?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-7114771</id><updated>2011-09-17T15:36:40.406-04:00</updated><category term='व्यंग्य'/><category term='हिन्दी'/><category term='४ पंक्तियाँ'/><title type='text'>-=[ Durlabh ]=-</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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>46</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7114771.post-4942002216341302407</id><published>2011-06-24T10:08:00.003-04:00</published><updated>2011-06-24T10:24:01.504-04:00</updated><title type='text'>SQL Server: Top (variable) vs TOP n</title><content type='html'>For past week or so, we have been struggling with performance issues in one of our applications using SQL Server. Some of the queries are quite complex and SQL Query Optimizer spends almost 1500-2000 ms in Parse and Compile whereas execution takes about 500ms. We tried our best to reduce compile time but we couldn't so we left it to a later date.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now, the biggest problem remaining was that the SQL Query Plan wasn't getting re-used. In the application, users can use pagination and on every page change, query was getting compiled repeatedly. What I found was a bit strange. The way our code called was something like:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;SELECT TOP 10 * FROM vwCustomerList&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;SELECT TOP 20 * FROM vwCustomerList&lt;/span&gt;&lt;/div&gt;&lt;div&gt;...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, we were a bit stumped. Just our of curiosity, I changed the queries to:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" &gt;SELECT TOP (@Top) FROM vwCustomerList&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;And passed @Top as the parameter. Now, suddenly the query plans were reused and application was back to good speed.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The good thing was almost all the queries from our application are executed through the same set of libraries and hence I was able to modify code at just one place and all the queries benefit from this performance boost!&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-4942002216341302407?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/4942002216341302407/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=4942002216341302407' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/4942002216341302407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/4942002216341302407'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2011/06/sql-server-top-variable-vs-top-n.html' title='SQL Server: Top (variable) vs TOP n'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-3714125753504348032</id><published>2009-10-23T12:17:00.001-04:00</published><updated>2009-10-23T12:27:44.598-04:00</updated><title type='text'>Setting up Windows 2008 – Some of the steps</title><content type='html'>&lt;ol&gt;   &lt;li&gt;SQL Server 2008: Ensure that port is opened in firewall and TCP IP settings are specified in Surface area configuration &lt;/li&gt;    &lt;li&gt;Install FTP 7.5 separately &lt;/li&gt;    &lt;li&gt;With classic ASP, error reporting is turned off by default. Enable in Web Server &lt;/li&gt;    &lt;li&gt;CDO is not installed by default. Download and install and&amp;#160; don’t forget to give permissions to NETWORK SERVICE account. &lt;/li&gt;    &lt;li&gt;SMTP/ IMAP/ POP3/ FTP require ports to be opened in firewall &lt;/li&gt;    &lt;li&gt;For PHP also, turn on detailed error logs by&lt;br /&gt;&lt;pre&gt;%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/httpErrors -errorMode:Detailed&lt;/pre&gt;&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/7114771-3714125753504348032?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/3714125753504348032/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=3714125753504348032' title='19 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/3714125753504348032'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/3714125753504348032'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2009/10/setting-up-windows-2008-some-of-steps.html' title='Setting up Windows 2008 – Some of the steps'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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>19</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114771.post-3845287659690277249</id><published>2009-08-06T19:22:00.001-04:00</published><updated>2009-08-06T19:22:25.151-04:00</updated><title type='text'>Checking space used by SQL Tables and reorganizing those</title><content type='html'>&lt;div&gt;SET NOCOUNT ON&lt;/div&gt;&lt;div&gt;/*DATABASE TABLE SPY SCRIPT&lt;/div&gt;&lt;div&gt; Micheal Soelter&lt;/div&gt;&lt;div&gt; 1/24/03&lt;/div&gt;&lt;div&gt;DESCRIPTION&lt;/div&gt;&lt;div&gt; Returns TABLE Size Information &lt;/div&gt;&lt;div&gt;SORTING USAGE&lt;/div&gt;&lt;div&gt; @Sort bit VALUES&lt;/div&gt;&lt;div&gt; 0 = Alphabetically BY TABLE name&lt;/div&gt;&lt;div&gt; 1 = Sorted BY total space used by TABLE&lt;/div&gt;&lt;div&gt;*/&lt;/div&gt;&lt;div&gt;DECLARE @cmdstr varchar(100)&lt;/div&gt;&lt;div&gt;DECLARE @Sort bit&lt;/div&gt;&lt;div&gt;SELECT @Sort = 1 /* Edit this value FOR sorting options */&lt;/div&gt;&lt;div&gt;/* DO NOT EDIT ANY CODE BELOW THIS LINE */ &lt;/div&gt;&lt;div&gt;--Create Temporary Table&lt;/div&gt;&lt;div&gt;CREATE TABLE #TempTable &lt;/div&gt;&lt;div&gt; (&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;[Table_Name] varchar(50),&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Row_Count int,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Table_Size varchar(50),&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Data_Space_Used varchar(50),&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Index_Space_Used varchar(50),&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;Unused_Space varchar(50)&lt;/div&gt;&lt;div&gt; )&lt;/div&gt;&lt;div&gt;--Create Stored Procedure String&lt;/div&gt;&lt;div&gt; SELECT @cmdstr = 'sp_msforeachtable ''sp_spaceused "?"'''&lt;/div&gt;&lt;div&gt;--Populate Tempoary Table&lt;/div&gt;&lt;div&gt; INSERT INTO #TempTable EXEC(@cmdstr)&lt;/div&gt;&lt;div&gt;--Determine sorting method&lt;/div&gt;&lt;div&gt;IF @Sort = 0 &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;     BEGIN &lt;/div&gt;&lt;div&gt;     --Retrieve Table Data and Sort Alphabet&lt;/div&gt;&lt;div&gt;    --     ically&lt;/div&gt;&lt;div&gt;     SELECT * FROM #TempTable ORDER BY Table_Name&lt;/div&gt;&lt;div&gt; END&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ELSE&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;     BEGIN&lt;/div&gt;&lt;div&gt;     /*Retrieve TABLE Data AND Sort BY the size OF the Table*/&lt;/div&gt;&lt;div&gt;     SELECT * FROM #TempTable ORDER BY CAST(SUBSTRING(Table_Size,1,CHARINDEX(' ',Table_Size,1)) AS INT) DESC&lt;/div&gt;&lt;div&gt; END&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;DECLARE @TableName varchar(100)&lt;/div&gt;&lt;div&gt;DECLARE TestCursor CURSOR FOR SELECT Table_Name FROM #TempTable FAST_FORWARD&lt;/div&gt;&lt;div&gt;OPEN TestCursor&lt;/div&gt;&lt;div&gt;FETCH NEXT FROM TestCursor INTO @TableName&lt;/div&gt;&lt;div&gt;WHILE @@FETCH_STATUS = 0 BEGIN&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;DBCC CLEANTABLE(0, @TableName)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;FETCH NEXT FROM TestCursor INTO @TableName&lt;/div&gt;&lt;div&gt;END&lt;/div&gt;&lt;div&gt;CLOSE TestCursor&lt;/div&gt;&lt;div&gt;DEALLOCATE TestCursor&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;--Delete Temporay Table&lt;/div&gt;&lt;div&gt;DROP TABLE #TempTable&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-3845287659690277249?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/3845287659690277249/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=3845287659690277249' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/3845287659690277249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/3845287659690277249'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2009/08/checking-space-used-by-sql-tables-and.html' title='Checking space used by SQL Tables and reorganizing those'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-2720115886847208430</id><published>2008-08-02T18:51:00.002-04:00</published><updated>2008-08-02T18:53:55.516-04:00</updated><title type='text'>Updates about me</title><content type='html'>Recently one of my friend suggested me to split my blog into Hindi and English version. Although his idea was good considering the fact that audience is different but my question is - isn't blog like a personal diary? How many people are really treating it like that? Anyways, regardless of that, I've created a new blog durlabhjain.blogspot.com where I'll be posting my Hindi entries and this blog will continue to be more about my technical/ professional learnings...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-2720115886847208430?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/2720115886847208430/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=2720115886847208430' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/2720115886847208430'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/2720115886847208430'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2008/08/updates-about-me.html' title='Updates about me'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-8270396000125266864</id><published>2008-07-28T01:16:00.002-04:00</published><updated>2008-07-28T01:24:37.542-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='४ पंक्तियाँ'/><category scheme='http://www.blogger.com/atom/ns#' term='हिन्दी'/><title type='text'>वक्त!</title><content type='html'>अकेला था, अकेला हूँ, अकेला ही जाऊँगा,&lt;br /&gt;करता फ़िर रहा जो इकठ्ठा कहाँ ले जाऊँगा&lt;br /&gt;सब यहीं पर था, यहीं पर है, यहीं रह जायेगा,&lt;br /&gt;शायद ही किसी को मेरा नाम याद रह पायेगा!&lt;br /&gt;मगर फ़िर भी इच्छा यही है की इस को, उस को, और न जाने किस किस को अपना कह सकूं मैं,&lt;br /&gt;इसी इकठ्ठा करने की एक अजीब सी कशिश में, क्यूँ न ख़ुद को खुश रख सकूँ मैं!&lt;br /&gt;&lt;span&gt;पैसे&lt;/span&gt; &lt;span&gt;का&lt;/span&gt; &lt;span&gt;क्या&lt;/span&gt; &lt;span&gt;वोह&lt;/span&gt; &lt;span&gt;तो&lt;/span&gt; &lt;span&gt;आज&lt;/span&gt; &lt;span&gt;अगर&lt;/span&gt; &lt;span&gt;मेरी&lt;/span&gt; &lt;span&gt;जेब&lt;/span&gt; &lt;span&gt;में&lt;/span&gt; &lt;span&gt;तो&lt;/span&gt; &lt;span&gt;कल&lt;/span&gt; &lt;span&gt;किसी&lt;/span&gt; &lt;span&gt;और&lt;/span&gt; &lt;span&gt;की&lt;/span&gt; &lt;span&gt;जेब&lt;/span&gt; &lt;span&gt;में&lt;/span&gt; &lt;span&gt;जायेगा&lt;/span&gt;,&lt;br /&gt;&lt;span&gt;अरे&lt;/span&gt; मन इतना समझ ले की यह जो वक्त बीत रहा है ये न फ़िर वापस आयेगा!!&lt;span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-8270396000125266864?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/8270396000125266864/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=8270396000125266864' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/8270396000125266864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/8270396000125266864'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2008/07/blog-post_28.html' title='वक्त!'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-8414591302514421529</id><published>2008-07-28T01:00:00.002-04:00</published><updated>2008-07-28T01:24:37.542-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='४ पंक्तियाँ'/><category scheme='http://www.blogger.com/atom/ns#' term='हिन्दी'/><title type='text'>दो पंक्तियाँ</title><content type='html'>ना पूछो मुझसे की ये मुझको हुआ क्या है&lt;br /&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;कब का छूट गया होता साथ इस जिंदगी का जो उम्मीद मेरा दामन थाम नही लेती!&lt;br /&gt;अब जब थामा है हाथ तो बीच मझधार में मुझे छोड़ ना देना&lt;br /&gt;मेरा जो कल अच्छा होने का सपना है वो तोड़ ना देना&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-8414591302514421529?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/8414591302514421529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=8414591302514421529' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/8414591302514421529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/8414591302514421529'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2008/07/blog-post.html' title='दो पंक्तियाँ'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-8636422951491039345</id><published>2008-07-12T18:20:00.001-04:00</published><updated>2008-07-12T18:22:43.026-04:00</updated><title type='text'>Hyperlink Column in ASP.NET</title><content type='html'>By default, hyperlink column doesn't allow using Javascript. For this, I inherited from BoundField to have more control.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Public Class HyperlinkBoundField&lt;br /&gt;    Inherits BoundField&lt;br /&gt;    Public NavigateUrlFormatString As String&lt;br /&gt;    Public NoLinkValue As String&lt;br /&gt;&lt;br /&gt;    Public Sub New()&lt;br /&gt;        MyBase.New()&lt;br /&gt;    End Sub&lt;br /&gt;&lt;br /&gt;    Public Sub New(ByVal field As BoundField, ByVal noLinkValue As String, ByVal urlFormat As String)&lt;br /&gt;        Me.DataField = field.DataField&lt;br /&gt;        Me.HeaderText = field.HeaderText&lt;br /&gt;        Me.HeaderImageUrl = field.HeaderImageUrl&lt;br /&gt;        Me.SortExpression = field.SortExpression&lt;br /&gt;        Me.NoLinkValue = noLinkValue&lt;br /&gt;        Me.NavigateUrlFormatString = urlFormat&lt;br /&gt;    End Sub&lt;br /&gt;&lt;br /&gt;    Protected Overrides Function FormatDataValue(ByVal dataValue As Object, ByVal encode As Boolean) As String&lt;br /&gt;        Dim value As String = MyBase.FormatDataValue(dataValue, encode)&lt;br /&gt;        If String.IsNullOrEmpty(value) OrElse value = NoLinkValue Then&lt;br /&gt;            Return value&lt;br /&gt;        Else&lt;br /&gt;            Return String.Format(NavigateUrlFormatString, value)&lt;br /&gt;        End If&lt;br /&gt;    End Function&lt;br /&gt;End Class&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-8636422951491039345?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/8636422951491039345/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=8636422951491039345' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/8636422951491039345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/8636422951491039345'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2008/07/hyperlink-column-in-aspnet.html' title='Hyperlink Column in ASP.NET'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-8749155870645831660</id><published>2008-05-10T09:56:00.004-04:00</published><updated>2008-05-10T10:16:05.939-04:00</updated><title type='text'>ASP.NET - I'm starting to loose love for it!!</title><content type='html'>I have been swearing by Microsoft Technologies since CA took over Clipper and then dumped it!!! Clipper used to by a bread and butter language for me until 1995 (2 years after CA dumped it). At that time, I had a terrible time on deciding which way to go. Delphi was quite popular and was quite similar to Pascal and then there was VB! I decided that considering Microsoft's might, Microsoft won't easily dump its product. Anyways, Microsoft left its VB coders way behind after VB 6.0. VB.NET was similar but strikingly different as was. It was a new learning but ok - a gradual change. But then there was a promise of platform independence and I was lured by it! Web was getting more and more popular and developing applications in VB.NET seemed to be much faster/ easier than ASP. At-least it was more structured and much more testable with lots of compile time checks. Initially it looked like that continuously increasing build times even for small changes were a small sacrifice in face of structure. However, as I went deeper and deeper it seems that even trivial tasks are not that easy because of Microsoft's decision to take the web development to event driven applications. Numerous times it has happened that it has become difficult to understand what is happening during which event (in the framework) and without a tool such as reflector, it would have been impossible to resolve lots of issues we had in many of the applications. Some of the recent issues I've faced are:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;URL Rewriting: Ok. It might not really be a .NET thing and IIS thing but unfortunately .NET doesn't run on Apache. Features that apache's mod_rewrite has been providing for so long are still difficult to achieve in IIS.&lt;/li&gt;&lt;li&gt;SetMaxAge for caching: Unfortunately, whatever value I set, it sets it to Zero. Refer to http://msmvps.com/blogs/omar/archive/2006/08/02/cache-control-header-cannot-be-set-properly-in-asp-net-2-0-a-solution.aspx&lt;/li&gt;&lt;li&gt;Removing a cookie from Cache: I thought it would be easy enough!!! Just set expiry of the cookie to a past date and you should be fine! In fact, I needed to remove all the cookies starting with "custom". The way I went ahead is...&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;HttpCookieCollection cookies = Request.Cookies;&lt;br /&gt;for(int i=0; i&amp;lt;cookies.Count; i++) {&lt;br /&gt;    HttpCookie cookie = cookies[i];&lt;br /&gt;    if(cookie.Name.StartsWith("custom") {&lt;br /&gt;           cookie.Expiry = DateTime.Now.AddYears(-1);&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;seems cool? No. turns out that if you modify cookies in Request, it doesn't help. You have a Response.Cookies collection as well. Unless you add a cookie to Response collection, it won't be sent to client and hence client will not know you changed the cookie. Anyways, I added a couple of statements to add cookies in Response collection. Then, another problem. When you add a cookie to Response collection, it gets added to Request collection as well!!! Another issue. So, as many people suggest, I had to take another variable cookieCount before the loop to avoid an endless loop! What a waste of time for simple Cookie manipulation that was so easy in languages such as PHP, ASP etc. etc.&lt;/li&gt;&lt;/ul&gt;There are lot more things that I'm discovering on daily basis. However, then my biggest worry is about MVC architecture that's becoming a lot more popular in ASP.NET again leaving me wondering how long will Microsoft continue to support the original ASP.NET Page Model? I doubt it'll take long before Microsoft will have to decide the model it wants to support!!&lt;br /&gt;&lt;br /&gt;All this has been forcing me to re-think my strategy and look back at PHP, ASP or Ruby on Rails to get sanity back to development as most of the front-ends have actually moved to HTML and JS and these languages just handle the server side manipulation. Wait for a few more days and you might see me changing my framework to PHP!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-8749155870645831660?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/8749155870645831660/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=8749155870645831660' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/8749155870645831660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/8749155870645831660'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2008/05/aspnet-im-starting-to-loose-love-for-it.html' title='ASP.NET - I&apos;m starting to loose love for it!!'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-2926866067608933829</id><published>2008-05-03T18:02:00.003-04:00</published><updated>2008-05-03T18:22:31.373-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='४ पंक्तियाँ'/><category scheme='http://www.blogger.com/atom/ns#' term='हिन्दी'/><category scheme='http://www.blogger.com/atom/ns#' term='व्यंग्य'/><title type='text'>दीवाना हमें बताती हैं!</title><content type='html'>&lt;span class=""&gt;&lt;/span&gt;&lt;span class=""&gt;दिखाती हैं नखरे, दिखाती हैं अदाएँ,&lt;/span&gt;&lt;br /&gt;&lt;span class=""&gt;लड़कों को अपने पीछे घुमाएँ&lt;/span&gt;&lt;br /&gt;&lt;span class=""&gt;मगर आयें पीछे तो दूर भगाती हैं&lt;/span&gt;&lt;br /&gt;&lt;span class=""&gt;&lt;span class=""&gt;&lt;/span&gt;दीवानी ख़ुद हैं और हमें दीवाना बताती हैं!&lt;/span&gt;&lt;br /&gt;&lt;span class=""&gt;पहने कपड़े सेक्सी सेक्सी, फिर स्टाइल में चलती हैं&lt;/span&gt;&lt;br /&gt;&lt;span class=""&gt;दिखाने को importance अपनी, हर पल अदाएँ बदलती हैं&lt;/span&gt;&lt;br /&gt;&lt;span class=""&gt;देख के अदाएँ सीटी बजायें हम जो, लफंगा हमें बताती हैं&lt;/span&gt;&lt;br /&gt;दीवानी ख़ुद हैं और हमें दीवाना बताती हैं!&lt;br /&gt;&lt;span class=""&gt;पहनें sandle हील की ऊँचे, ख़ुद नागिन सी लहरायें,&lt;/span&gt;&lt;br /&gt;&lt;span class=""&gt;देख के सेक्सी पतली टांगें लम्बी, जो कोई पीछे आए,&lt;/span&gt;&lt;br /&gt;&lt;span class=""&gt;कभी कभी तो पब्लिक में ही, पब्लिक से पिटवाती हैं,&lt;/span&gt;&lt;br /&gt;दीवानी ख़ुद हैं और हमें दीवाना बताती हैं!&lt;br /&gt;&lt;span class=""&gt;काले काले नैना इनके, नजरें हैं मतवाली,&lt;/span&gt;&lt;br /&gt;&lt;span class=""&gt;लगे इन्ही में है दुनिया सारी, जब तक न बने ये घरवाली,&lt;/span&gt;&lt;br /&gt;&lt;span class=""&gt;फिर घरवाली बन के सुबह शाम ये, हमको यूँ सताती हैं,&lt;/span&gt;&lt;br /&gt;&lt;span class=""&gt;जान बूझ के फंस जाते हैं हम, ये ऐसा हमें घुमाती हैं,&lt;/span&gt;&lt;br /&gt;&lt;span class=""&gt;दीवाना बनाती हैं ख़ुद हमें और दीवाना हमें बताती हैं &lt;/span&gt;&lt;br /&gt;&lt;span class=""&gt;&lt;/span&gt;&lt;span class=""&gt;और जब लिख दें ये जब ब्लॉग पर तो हम पर खूब चिल्लाती हैं,&lt;/span&gt;&lt;br /&gt;&lt;span class=""&gt;दीवानी ख़ुद है और हमें दीवाना बताती हैं!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-2926866067608933829?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/2926866067608933829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=2926866067608933829' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/2926866067608933829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/2926866067608933829'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2008/05/blog-post.html' title='दीवाना हमें बताती हैं!'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-5486780243445687419</id><published>2008-02-19T20:45:00.002-05:00</published><updated>2008-02-19T20:46:15.814-05:00</updated><title type='text'>SQLite - A cool database engine</title><content type='html'>Since last year or so, I've been exploring SQLite as a database engine for couple of small apps for personal use. I must say, I'm impressed by this little engine so much that I sometimes curse myself... why didn't I find it earlier :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-5486780243445687419?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/5486780243445687419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=5486780243445687419' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/5486780243445687419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/5486780243445687419'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2008/02/sqlite-cool-database-engine.html' title='SQLite - A cool database engine'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-5168278907603937230</id><published>2008-01-12T12:34:00.001-05:00</published><updated>2008-01-12T12:34:44.574-05:00</updated><title type='text'>Partition/ Data Protection and other tools I use</title><content type='html'>&lt;p&gt;Personal data storage is always a tricky issue. For example, on my computer I usually store my accounts data, code that I wouldn't like to expose. In fact, for few of my old clients, I give them the source code in an encrypted mode so that it is their responsibility to backup/ save and they can get it modified by other programmers also if they wish to. In the past, I have used tools like:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;RAR/ PKZIP with Password: A bad choice but the only choice in DOS days. Ultimately, we had to de-compress to work and then again compress. This was a manual process and error-prone resulting in leakages sometimes. So, I moved on with better tools:&lt;/li&gt;    &lt;li&gt;BestCrypt: With advent This could create a protected file that can be mounted like a volume. However, the cost/ licensing of the tool prohibited me from installing the tool on the client sites. So, I primarily used it on my laptop and just copied the volume on their machines. But this was easier and provided good level of protection.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;And now:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;TrueCrypt: Recently, during a visit to one of my client, I found that they were using TrueCrypt! That was interesting. I had never heard of this tool. I searched and found that it was FREE!! Offered everything I wanted and I can install it for my clients too. Reviews are great. That means, this is the tool of my choice now.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Then there is another issue. With so many sites, partitions and areas where we need to put in password the risk is - how do I record passwords so that I don't forget!! One of the easier route is - keep the password same but that's risky. In addition, many tools/ sites have different restrictions on password strength, length, combination, expiry etc. So this is not a good strategy. I want to keep strong passwords for any sites where I can shop (like Amazon, PayPal) and banks. So, I started using KeePass - another freeware that I can use to generate and store my passwords without the hassle of remembering every password.&lt;/p&gt;  &lt;p&gt;Now, as of today, here is a list some tools I use:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Protection: KeePass, TrueCrypt&lt;/li&gt;    &lt;li&gt;Version Control: VisualSVN Server (Subversion), TortoiseSVN, Perforce Diff/ Merge (For better diff and merge functionality)&lt;/li&gt;    &lt;li&gt;AntiVirus: Nod32 - found it to be quite fast. With other antivirus such as Kaspersky, McAfeee etc., my Visual Studio project compilation times were quite high. Even AVG was good in the past but its reliability score isn't that good.&lt;/li&gt;    &lt;li&gt;FTP: FileZilla&lt;/li&gt;    &lt;li&gt;CD/DVD Emulator: Daemon Tools&lt;/li&gt;    &lt;li&gt;CD/DVD Writer: InfraRecorder&lt;/li&gt;    &lt;li&gt;Media Player: Media Player Classic from K-Lite Codec Pack&lt;/li&gt;    &lt;li&gt;Remote Access: TeamViewer&lt;/li&gt;    &lt;li&gt;Web Conferencing: Yugma&lt;/li&gt;    &lt;li&gt;Messengers: Google Talk, Trillian, Skype&amp;#160; - I hate multiple clients but have to use them :(&lt;/li&gt;    &lt;li&gt;Browser: Mozilla Firefox with Firebug&lt;/li&gt;    &lt;li&gt;PDF Reader: FoxIt Reader - thank got - no more Acrobat reader&lt;/li&gt;    &lt;li&gt;RSS Feed Reader: JetBrains Omea Reader (Though I'll be looking at NewGator products as well now as they went free)&lt;/li&gt;    &lt;li&gt;Compression: WinRAR&lt;/li&gt;    &lt;li&gt;Other Development Tools: Reflector, MyGeneration (Code Generator)&lt;/li&gt;    &lt;li&gt;Blog Writing: Windows Live Writer (for now)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Apart from these, I just use Visual Studio 2008, SQL Server 2005 (Developer Edition), Microsoft Office and sometimes Internet Explorer! I'm always looking for leaner, faster alternatives.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-5168278907603937230?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/5168278907603937230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=5168278907603937230' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/5168278907603937230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/5168278907603937230'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2008/01/partition-data-protection-and-other.html' title='Partition/ Data Protection and other tools I use'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-3568936022690746314</id><published>2008-01-12T12:12:00.001-05:00</published><updated>2008-01-12T12:12:19.970-05:00</updated><title type='text'>SQL 2005 - Some quirky findings</title><content type='html'>&lt;p&gt;&lt;/p&gt;  &lt;p&gt;This week I was working on a performance related issue for one of the clients. They had about 3 million records in their order table and about 7 million records in a child table. They are going to provide the tracking/ search options online so we have created a tool for them to do so. However, there is a complex security criteria as well and the search time was horrible!! Most of the searches took 100+ seconds meaning the site was useless. While trying lots of alternatives I found out couple of things: &lt;/p&gt;  &lt;p&gt;New SQL 2005 ROWNUMBER() function isn't that useful. In most of the sites, we need to show the total record count and then return the results for the requested page. So our query will be something: &lt;/p&gt;  &lt;pre&gt;DECLARE @PageNum AS INT; &lt;br /&gt;DECLARE @PageSize AS INT; &lt;br /&gt;SET @PageNum = 2; &lt;br /&gt;SET @PageSize = 10; &lt;br /&gt;&lt;br /&gt;SELECT COUNT(*) FROM [Order] WHERE [OrderDate] BETWEEN '1/1/2000' AND '1/1/2005' &lt;br /&gt;WITH OrdersRN AS &lt;br /&gt;( &lt;br /&gt;    SELECT ROW_NUMBER() OVER(ORDER BY OrderDate, OrderID) AS RowNum &lt;br /&gt;          ,OrderID &lt;br /&gt;          ,OrderDate &lt;br /&gt;          ,CustomerID &lt;br /&gt;          ,EmployeeID &lt;br /&gt;      FROM dbo.Orders &lt;br /&gt;      WHERE [OrderDate] BETWEEN '1/1/2000' AND '1/1/2005' &lt;br /&gt;) &lt;br /&gt;&lt;br /&gt;SELECT * &lt;br /&gt;  FROM OrdersRN &lt;br /&gt;WHERE RowNum BETWEEN (@PageNum - 1) * @PageSize + 1 &lt;br /&gt;                  AND @PageNum * @PageSize &lt;br /&gt;ORDER BY OrderDate &lt;br /&gt;         ,OrderID;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The key thing you'll notice above is - we are executing the WHERE clause twice. Once when trying to find out the total records and then the records for the page requested. If the queries go complex, this means, we are spending twice the time we should have! In the old SQL 2000 way, the way we used to write the same query as:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;DECLARE @PageNum AS INT; &lt;br /&gt;DECLARE @PageSize AS INT; &lt;br /&gt;&lt;br /&gt;DECLARE @RecordCount AS INT;&lt;br /&gt;SET @PageNum = 2; &lt;br /&gt;SET @PageSize = 10; &lt;br /&gt;&lt;br /&gt;DECLARE @PagingTable TABLE ([Row#] int identity, [Id#] int)&lt;br /&gt;&lt;br /&gt;INSERT INTO @PagingTable [Id#] (SELECT [OrderId] FROM [Order] WHERE [OrderDate] BETWEEN '1/1/2000' AND '1/1/2005' ORDER BY [Orderdate], [OrderId]&lt;br /&gt;&lt;br /&gt;SET @RecordCount = @@ROWCOUNT&lt;br /&gt;&lt;br /&gt;SELECT [Order].*&lt;br /&gt;&lt;br /&gt;FROM [Order] INNER JOIN @PagingTable [PagingTable#] ON [Order].[OrderId] = [PagingTable#].[Id#] &lt;br /&gt;WHERE [Row#] BETWEEN (@PageNum - 1) * @PageSize + 1 &lt;br /&gt;                  AND @PageNum * @PageSize &lt;br /&gt;ORDER BY [Row#]&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;In this second query, if you notice, the query is run only once. This reduces the overall time it takes to return the results.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;The second finding was even more intriguing. In my where clause I had something like: &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;WHERE [CustomerId] IN (SELECT [CustomerId] FROM [Customer] WHERE [CustomerName] LIKE 'A%'&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;. This was returning the results in about 100 seconds and was quite irritating. Then I tried a simple change. First I inserted the results in a temp table variable like: &lt;br /&gt;&lt;br /&gt;&lt;pre&gt;DECLARE @Customers TABLE ([CustomerId] int)&lt;br /&gt;INSERT INTO @Customers [CustomerId] SELECT [CustomerId] FROM [Customer] WHERE [CustomerName] LIKE 'A%'&lt;/pre&gt;&lt;br /&gt;And now my WHERE condition looks like &lt;br /&gt;&lt;br /&gt;&lt;pre&gt;WHERE [CustomerId] IN (SELECT [CustomerId] FROM @Customers)&lt;/pre&gt;&lt;br /&gt; Now, the query returns the result in around ~250ms! Isn't it surprising. Anyway, this confirmed one thing - never get bogged down by what you already know! Every project, every situation is different and experimentation beyond the known always helps.  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-3568936022690746314?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/3568936022690746314/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=3568936022690746314' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/3568936022690746314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/3568936022690746314'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2008/01/sql-2005-some-quirky-findings.html' title='SQL 2005 - Some quirky findings'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-2943744052110008009</id><published>2007-04-17T17:55:00.000-04:00</published><updated>2007-04-17T18:01:14.419-04:00</updated><title type='text'>Using Inno-Setup for Excel Add-In Installation</title><content type='html'>Recently, I came across a need to write an installer for Excel Add-In. I found a sample of installer written using Setup-Factory at (&lt;a href="http://www.jkp-ads.com/articles/AddinsAndSetupFactory.asp"&gt;http://www.jkp-ads.com/articles/AddinsAndSetupFactory.asp&lt;/a&gt;) and that was my main inspiration source to write this in Inno-Setup. My current code is not completely cleaned up and doesn't include an option for adding the Add-In in the [Add-In Manager] registry key but it should do its job well. Here is the setup script:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[Setup]&lt;br /&gt;AppName=My Excel Add-In&lt;br /&gt;AppVerName=My Excel Add-In ver 1&lt;br /&gt;DefaultDirName={pf}\Durlabh&lt;br /&gt;[Files]&lt;br /&gt;Source: MyExcelAddIn.xla; DestDir: {app}; AfterInstall: CheckRegistry(true);&lt;br /&gt;&lt;br /&gt;[Code]&lt;br /&gt;procedure CheckRegistry(Install: Boolean);&lt;br /&gt;var&lt;br /&gt;  OfficeVersions: TArrayOfString;&lt;br /&gt;  I: Integer;&lt;br /&gt;  J: Integer;&lt;br /&gt;  Installed: Boolean;&lt;br /&gt;  Key: String;&lt;br /&gt;  Value: String;&lt;br /&gt;  Keys: TArrayOfString;&lt;br /&gt;  AlertMessage: String;&lt;br /&gt;  CurrentValue: String;&lt;br /&gt;  NewKey: String;&lt;br /&gt;  KeyNumber: Integer;&lt;br /&gt;  NewKeys: TArrayOfString;&lt;br /&gt;begin&lt;br /&gt;  // Location of Add-In&lt;br /&gt;  Value := ExpandConstant('"{app}\MyExcelAddIn.xla"')&lt;br /&gt;&lt;br /&gt;  // List office versions&lt;br /&gt;  if RegGetSubkeyNames(HKEY_CURRENT_USER, 'Software\Microsoft\Office', OfficeVersions) then&lt;br /&gt;  begin&lt;br /&gt;&lt;br /&gt;    // Check all the office version&lt;br /&gt;    for I := 0 to GetArrayLength(OfficeVersions)-1 do&lt;br /&gt;    begin&lt;br /&gt;    &lt;br /&gt;      // Initialize Installation Info&lt;br /&gt;      KeyNumber := 0;&lt;br /&gt;      Installed := false;&lt;br /&gt;      &lt;br /&gt;      // Check if Excel is installed and has Options&lt;br /&gt;      Key := 'Software\Microsoft\Office\' + OfficeVersions[I] + '\Excel\Options';&lt;br /&gt;      if RegKeyExists(HKEY_CURRENT_USER, Key) then&lt;br /&gt;      begin&lt;br /&gt;      &lt;br /&gt;        // List all the add-ins currently being shown - for this read all value name&lt;br /&gt;        if RegGetValueNames(HKEY_CURRENT_USER, Key, Keys) then&lt;br /&gt;        begin&lt;br /&gt;&lt;br /&gt;          // Process each value name&lt;br /&gt;          for J := 0 to GetArrayLength(Keys)-1 do&lt;br /&gt;          begin&lt;br /&gt;          &lt;br /&gt;            // Check if it is really an ADD-IN&lt;br /&gt;            if (Length(Keys[J]) &gt;= 4) AND (Copy(Keys[J], 1, 4) = 'OPEN') then&lt;br /&gt;            begin&lt;br /&gt;&lt;br /&gt;              // Read the add-in path&lt;br /&gt;              if RegQueryStringValue(HKEY_CURRENT_USER, Key, Keys[J], CurrentValue) then&lt;br /&gt;              begin&lt;br /&gt;              &lt;br /&gt;                // Check if it is the add-in we are installing&lt;br /&gt;                if CompareText(Value, CurrentValue) = 0 then&lt;br /&gt;         Installed := true&lt;br /&gt;        else&lt;br /&gt;                begin &lt;br /&gt;        &lt;br /&gt;          // Store all other add-ins in another array&lt;br /&gt;          // Will be used for uninstall&lt;br /&gt;                  SetArrayLength(NewKeys, KeyNumber + 1);&lt;br /&gt;                  NewKeys[KeyNumber] := CurrentValue;&lt;br /&gt;                  KeyNumber := KeyNumber + 1;&lt;br /&gt;                end&lt;br /&gt;       end&lt;br /&gt;      end&lt;br /&gt;     end&lt;br /&gt;    end&lt;br /&gt;    &lt;br /&gt;    &lt;br /&gt;      if Installed then&lt;br /&gt;      begin&lt;br /&gt;        // Are we trying to uninstall?&lt;br /&gt;        if not Install then&lt;br /&gt;        begin&lt;br /&gt;        &lt;br /&gt;          // Re-serialize all other add-ins&lt;br /&gt;          for J := 0 to KeyNumber-1 do&lt;br /&gt;          begin&lt;br /&gt;            NewKey := 'OPEN';&lt;br /&gt;            if J &gt; 0 then&lt;br /&gt;              NewKey := NewKey + IntToStr(J);&lt;br /&gt;            RegWriteStringValue(HKEY_CURRENT_USER, Key, NewKey, NewKeys[J]);&lt;br /&gt;          end&lt;br /&gt;          &lt;br /&gt;          // Delete additional keys&lt;br /&gt;            repeat&lt;br /&gt;            NewKey := 'OPEN';&lt;br /&gt;            if J &gt; 0 then&lt;br /&gt;              NewKey := NewKey + IntToStr(J);&lt;br /&gt;              &lt;br /&gt;          until (Not RegDeleteValue(HKEY_CURRENT_USER, Key, NewKey))&lt;br /&gt;        end&lt;br /&gt;        AlertMessage := 'Installed'&lt;br /&gt;     end&lt;br /&gt;      else  // Not installed&lt;br /&gt;      begin&lt;br /&gt;        // We are trying to install - add to the last&lt;br /&gt;        if Install then&lt;br /&gt;        begin&lt;br /&gt;          NewKey := 'OPEN';&lt;br /&gt;          if KeyNumber &gt; 0 then&lt;br /&gt;            NewKey := NewKey + IntToStr(KeyNumber);&lt;br /&gt;          RegWriteStringValue(HKEY_CURRENT_USER, Key, NewKey, Value);&lt;br /&gt;          end&lt;br /&gt;          AlertMessage := 'Not-Installed';&lt;br /&gt;      end&lt;br /&gt;        AlertMessage := 'For office version ' + OfficeVersions[I] + ', add-in is ' + AlertMessage;&lt;br /&gt;      //MsgBox(AlertMessage, mbInformation, MB_OK);&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;end;&lt;br /&gt;&lt;br /&gt;procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);&lt;br /&gt;begin&lt;br /&gt;  case CurUninstallStep of&lt;br /&gt;    usPostUninstall:&lt;br /&gt;      begin&lt;br /&gt;        CheckRegistry(false);&lt;br /&gt;      end;&lt;br /&gt;  end;&lt;br /&gt;end;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Your comments/ feedback will be highly appreciated.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-2943744052110008009?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/2943744052110008009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=2943744052110008009' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/2943744052110008009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/2943744052110008009'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2007/04/using-inno-setup-for-excel-add-in.html' title='Using Inno-Setup for Excel Add-In Installation'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114771.post-5618841869802915824</id><published>2006-11-21T20:14:00.000-05:00</published><updated>2006-12-16T09:06:03.537-05:00</updated><title type='text'>SPA-3102 Configuration for VoiceStick and InternetCalls</title><content type='html'>&lt;strong&gt;&lt;u&gt;Step 1&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;Get an incoming number from &lt;a href="http://www.voicestick.com"&gt;http://www.voicestick.com&lt;/a&gt;. At this moment, I found this to be easiest to set and most reliable. You can sign-up for a free account without outgoing options. They will ask for Credit Card information for authentication but they won't charge unless you opt for some credits.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;Step 2&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;Get an internet calls account from &lt;a href="http://www.internetcalls.com"&gt;http://www.internetcalls.com&lt;/a&gt; for outgoing calls.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;Step 3&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;Configure your SPA-3102 adaptor&lt;br /&gt;&lt;ol&gt;&lt;li&gt;After plugging in wires, in your internet browser go to &lt;span style="font-family:courier new;"&gt;&lt;a href="http://192.168.0.1/admin/voice/advanced"&gt;http://192.168.0.1/admin/voice/advanced&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Click on Line 1 Tab and update the following settings&lt;br /&gt;&lt;strong&gt;Proxy and Registration Section&lt;/strong&gt;&lt;br /&gt;Proxy: &lt;span style="font-family:courier new;"&gt;i2telecom.com&lt;br /&gt;&lt;/span&gt;Use Outbound Proxy: &lt;span style="font-family:courier new;"&gt;Yes&lt;/span&gt;&lt;br /&gt;Outbound proxy: &lt;span style="font-family:courier new;"&gt;206.165.50.116&lt;br /&gt;&lt;/span&gt;Use OB proxy in Dialog: &lt;span style="font-family:courier new;"&gt;Yes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Subscriber Information section&lt;/strong&gt;&lt;br /&gt;Display Name: &lt;span style="font-family:courier new;"&gt;&lt;em&gt;Whatever you want&lt;br /&gt;&lt;/em&gt;&lt;/span&gt;User ID: &lt;em&gt;&lt;span style="font-family:courier new;"&gt;Your &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;voicestick&lt;/span&gt;&lt;/em&gt;&lt;span style="font-family:courier new;"&gt;&lt;em&gt; number&lt;br /&gt;&lt;/em&gt;&lt;/span&gt;Password: &lt;span style="font-family:courier new;"&gt;&lt;em&gt;Your voicestick password&lt;br /&gt;&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;Gateway Accounts:&lt;/strong&gt;&lt;br /&gt;Gateway1: &lt;span style="font-family:courier new;"&gt;sip.internetcalls.com&lt;br /&gt;&lt;/span&gt;GW1 Auth ID: &lt;span style="font-family:courier new;"&gt;&lt;em&gt;your internetcalls username&lt;br /&gt;&lt;/em&gt;&lt;/span&gt;GW1 Password: &lt;span style="font-family:courier new;"&gt;&lt;em&gt;your internetcalls password&lt;br /&gt;&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;Dial Plan:&lt;br /&gt;&lt;/strong&gt;Dial Plan: &lt;pre&gt;(000S0&lt;:@gw0&gt;|1xxxxxxxxxxS0&lt;:@gw1&gt;|&lt;#9:&gt;xx.&lt;:@gw1&gt;)&lt;/pre&gt;&lt;br /&gt;&lt;u&gt;Note:&lt;/u&gt; This dial plans means all the numbers with 000 will be routed through gateway 0 (PSTN) and all the numbers starting with 1 followed by 10 digit number will be dialled using gw1 - your internetcalls account. In addition, you can use #9 to get line 1.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Click on Submit all changes and should all be set to go.&lt;/li&gt;&lt;li&gt;Verify that Info page shows Registration State as Registered in Line 1 Status&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;H2&gt;Using SipNumber for incoming calls&lt;/H2&gt;&lt;br /&gt;&lt;strong&gt;Proxy and Registration Section&lt;/strong&gt;&lt;br /&gt;Proxy: &lt;span style="font-family:courier new;"&gt;proxy.freedigits.net&lt;br /&gt;&lt;/span&gt;Use Outbound Proxy: &lt;span style="font-family:courier new;"&gt;Yes&lt;/span&gt;&lt;br /&gt;Outbound proxy: &lt;span style="font-family:courier new;"&gt;outbound.freedigits.net&lt;br /&gt;&lt;/span&gt;Use OB proxy in Dialog: &lt;span style="font-family:courier new;"&gt;Yes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Subscriber Information section&lt;/strong&gt;&lt;br /&gt;Display Name: &lt;span style="font-family:courier new;"&gt;&lt;em&gt;Whatever you want&lt;br /&gt;&lt;/em&gt;&lt;/span&gt;User ID: &lt;em&gt;&lt;span style="font-family:courier new;"&gt;Your &lt;/span&gt;&lt;span style="font-family:courier new;"&gt;sipnumber&lt;/span&gt;&lt;/em&gt;&lt;span style="font-family:courier new;"&gt;&lt;em&gt; number&lt;br /&gt;&lt;/em&gt;&lt;/span&gt;Password: &lt;span style="font-family:courier new;"&gt;&lt;em&gt;Your sipnumber password&lt;br /&gt;&lt;/em&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-5618841869802915824?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/5618841869802915824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=5618841869802915824' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/5618841869802915824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/5618841869802915824'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2006/11/spa-3102-configuration-for-voicestick.html' title='SPA-3102 Configuration for VoiceStick and InternetCalls'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-115041642053589448</id><published>2006-06-15T20:05:00.000-04:00</published><updated>2006-06-15T20:07:00.536-04:00</updated><title type='text'>Must Watch Movie - Life is Beutiful</title><content type='html'>Life is Beutiful is a move that I liked very much. The first half shows amazing hilarious situations and second half depicts the motto - "Live life to the fullest". Must see.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-115041642053589448?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/115041642053589448/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=115041642053589448' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/115041642053589448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/115041642053589448'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2006/06/must-watch-movie-life-is-beutiful.html' title='Must Watch Movie - Life is Beutiful'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114771.post-115041634909847037</id><published>2006-06-15T19:35:00.000-04:00</published><updated>2006-06-15T20:05:49.116-04:00</updated><title type='text'>More than 2 weeks - no post - a summary to catch-up</title><content type='html'>It has been more than 2 weeks and I haven't been able to update my blog. So, I will be quickly summarizing where past 2 and half weeks went.&lt;br /&gt;&lt;br /&gt;On the long weekend of May 29th, we spent Saturday in watching movies mainly. Nothing much - just relaxing. On Sunday, we went to Thurmond lake with two other families in Augusta - one of Sunil Ji and another one of Sushanto. Sushanto has just moved to Augusta and he didn't had a car. So I helped him in some grocery shopping as well. Thurmond lake is a nice place to be and it is like beach. Since we didn't take our swim-ware so we spent most of the time on the shore. We enjoyed a lot by playing cards and chatting a lot. After returning to Augusta, I helped Sushanto in getting his electronic stuff hooked up properly.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;strong&gt;May 28th&lt;/strong&gt;&lt;/u&gt;&lt;br /&gt;On May 29th, Monday I came to know that I need to go for a training to Dallas Texas. So Monday I spent in planning for the trip and purchasing some stuff. Being a holiday, most of the shops were closed. Anyways, I managed to get some stuff from Walmart - that's the advantage of it being 24x7 :)&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;strong&gt;May 29th&lt;/strong&gt;&lt;/u&gt;&lt;br /&gt;&lt;u&gt;&lt;/u&gt;&lt;br /&gt;&lt;u&gt;Cab ride to Augusta Airport&lt;/u&gt;&lt;br /&gt;On Tuesday I left for Dallas. From my home to Augusta airport, I took a cab and driver was originally from Albania settled in USA since last 15 years or so. We had an interesting chat. He mentioned that he considers USA the country of GOD because USA has so many resources that people don't know how to utilize it. That's the reason why they don't care about utilizing so much of paper and water and other resources! I kind of agree with him. He was also impressed with the freedom and systems that are there in USA. It made my trip interesting. When I arrived at Augusta Airport, it was a pleasant surprise to find that the Airport is much better now.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Flight to Dallas via Atlanta&lt;/u&gt;&lt;br /&gt;On my way to Dallas I read couple of books - "Pro VSTS" and "Framework Guidelines" for .NET. Both were a nice read and they gave me new ideas. I'm sure those will go a long way in further refining some of the stuff I'm doing.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Dallas Forthworth airport to Hotel&lt;/u&gt;&lt;br /&gt;I took a cab and by chance the driver was a Pakistani guy. It was again a pleasant surprise. We talked a lot about stuff ranging from bollywood to politics etc. The whole ride was really enjoyable and the guy was really nice. It again reminded of the fact that differences exist between the politics but not in the heart of people.&lt;br /&gt;&lt;br /&gt;After I reached hotel, I called my wife and immediately went to sleep! After all it was a long travel.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;May 30th&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;My training was on Familiarization with Legacy Modernization and the trainer was &lt;em&gt;Tim O'Brien&lt;/em&gt;  from Fujitsu Computer Services. He was an amazing guy. Other people in training were &lt;em&gt;Nicolas Legar&lt;/em&gt; from &lt;em&gt;Borne&lt;/em&gt; group that Fujitsu had acquired earlier, &lt;em&gt;Derrick Walsh&lt;/em&gt; from &lt;em&gt;DMR&lt;/em&gt; Group and Siva from Rapidigm group. It was nice to meet people from different groups. It was an eye opener and I was amazed with the offering of Fujitsu for migrating Cobol Apps from mainframe to Windows platform.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;May 31st&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;The training continued and it ended at about lunch time. Then we had lots of time so I asked Derrick to accompany me to downtown Dallas for a short trip. We took Dallas public transport to go to downtown and went to the place where John F. Kennedy was shot. We also went to Kennedy museum. It was a memorable trip with Derrick that I will remember forever. Once we were back Derrick left for his flight for journey back to Canada.&lt;br /&gt;&lt;br /&gt;On 31st I also met Sunil Bansal - one of my collegues who recently moved to US on a project for Fujitsu. I told him about some of the things he should do and stuff like that. It was a nice meeting and a pleasant surprise.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;Jun 1st&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;I took my flight back to Augusta. It was not a pleasant trip. I left hotel at 5:30am and reached home only at around 5:30pm. For a small flight time, the delay was much longer because of bad weather. Being a vegetarian I almost got starved because the food choices were limited. Anyways, I reached home and then just relaxed :)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;Jun 2nd to Jun 6th&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;I spent these 5 days on catching up the work that piled up during my training. There were some issues in one of the application that we were supposed to deliver to a client. Ultimately we resolved those and after that we had long discussions on how to proceed further. So nothing much in those days except fire-fighting or writing some code. I also visited doctor and got a clean chit regarding my hand and ear and now both are okay :)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;Jun 7th to Jun 9th&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;Client side lead was supposed to leave for a trip to Italy so I spent lot of time with him in understand where the team is and what we are supposed to achieve when he is gone for two weeks. I also had long meetings with client side project manager to discuss what offshore team did for the project and what are we supposed to do next. Again - hectic period. :) However, on 7th of June, I watched the movie "Life is Beutiful" and it was worth the watch!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;Jun 10th&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;I spend most of the time watching movies - 5 to be exact  -thanks to blockbuster. It was a relaxing day and did nothing. Just went to Vishal's place as he was supposed to attend a marriage. Arti helped his wife in getting ready for the function. I just relaxed as I wanted to give rest to my body :)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;Jun 11th&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;We were invited by our friend &lt;em&gt;Sunil Joshi&lt;/em&gt; to his place and we enjoyed lots of food stuff. It was an amazing get together for a foodie like me. We enjoyed "Bedai", "Dahi Wada", "Golgappas" and lots of other stuff. In the evening we returned and again - relaxed.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;Jun 12th and 13th&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;It was normal day with work in office. After office hours I had very little time for myself as Sunil Ji caught serious viral infection "Strep throat" and later his daugter as well. We went to their place to help his wife and to play with his children so that he can relax.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;Jun 14th&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;Again a normal day at office but I finally caught up with my learning ways. Restarted studying SQL Server 2005 and some new cool stuff with Google Maps API etc. Will be posting more on it as I go along. At the end of the day, I received an e-mail regarding a training on "Macroscope" that I was waiting for. Fortunately it is in Virginia close to my best friend Karan's house so it'll give me a chance to meet him after almost 1 and a half years. I am quite excited about it. I hope to catch up with&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;Jun 15th&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;Here I'm. Spent most of the time at work-place in meetings for one of the applications. In the evening, just got home and trying to catch up with blog. I hope that in future I'll be more regular.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-115041634909847037?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/115041634909847037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=115041634909847037' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/115041634909847037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/115041634909847037'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2006/06/more-than-2-weeks-no-post-summary-to.html' title='More than 2 weeks - no post - a summary to catch-up'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-114864551668933960</id><published>2006-05-26T08:11:00.000-04:00</published><updated>2006-05-26T08:11:56.700-04:00</updated><title type='text'>Automated Testing of UI, and Visual Web Developer</title><content type='html'>What is an SDET?You might be wondering what exactly an "SDET" is. Microsoft has a few core "disciplines" who participate in software development: Program Managers (PMs), Software Design Engineers (SDEs, or Devs), and Software Design Engineers in Test (SDETs, or Testers). There is a fourth discipline, Software Test Engineers (STEs) which is currently being phased out.&lt;br /&gt;&lt;br /&gt;Read more at .... &lt;a href="http://blogs.msdn.com/scottlo/archive/2005/06/29/434121.aspx"&gt;http://blogs.msdn.com/scottlo/archive/2005/06/29/434121.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-114864551668933960?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blogs.msdn.com/scottlo/archive/2005/06/29/434121.aspx' title='Automated Testing of UI, and Visual Web Developer'/><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/114864551668933960/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=114864551668933960' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114864551668933960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114864551668933960'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2006/05/automated-testing-of-ui-and-visual-web.html' title='Automated Testing of UI, and Visual Web Developer'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-114852079424778424</id><published>2006-05-24T21:30:00.000-04:00</published><updated>2006-05-24T21:33:14.266-04:00</updated><title type='text'>CSSVista and SiteVista - Live CSS Editing and site browser compatibility testing</title><content type='html'>&lt;strong&gt;&lt;u&gt;CSSVista&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;This is a free Windows application for web developers which lets you edit your CSS code live in both Internet Explorer and Firefox simultaneously.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.sitevista.com/cssvista/"&gt;http://www.sitevista.com/cssvista/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;u&gt;SiteVista&lt;/u&gt;&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Painless testing: Quickly see if your web site works with all popular web browsers. Receive screen captures from different browsers in minutes.&lt;/li&gt;&lt;li&gt;Don't lose visitors: If your site breaks in some browsers, those visitors can't use your site (or purchase from you).&lt;/li&gt;&lt;li&gt;Look more professional: Prove to your clients and co-workers that you've conducted thorough testing.&lt;/li&gt;&lt;/ul&gt;&lt;a href="http://www.sitevista.com/index.asp"&gt;http://www.sitevista.com/index.asp&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-114852079424778424?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.sitevista.com/cssvista/' title='CSSVista and SiteVista - Live CSS Editing and site browser compatibility testing'/><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/114852079424778424/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=114852079424778424' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114852079424778424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114852079424778424'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2006/05/cssvista-and-sitevista-live-css.html' title='CSSVista and SiteVista - Live CSS Editing and site browser compatibility testing'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-114847411592939577</id><published>2006-05-24T08:34:00.000-04:00</published><updated>2006-05-24T08:35:15.943-04:00</updated><title type='text'>Ten Essential Tools for Visual Studio (Microsoft Recommendation)</title><content type='html'>Have a look at the top ten tools that MSDN Suggests for Visual Studio:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/msdnmag/issues/05/12/VisualStudioAddins/default.aspx"&gt;http://msdn.microsoft.com/msdnmag/issues/05/12/VisualStudioAddins/default.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-114847411592939577?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/114847411592939577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=114847411592939577' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114847411592939577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114847411592939577'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2006/05/ten-essential-tools-for-visual-studio.html' title='Ten Essential Tools for Visual Studio (Microsoft Recommendation)'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-114839163662526504</id><published>2006-05-23T09:38:00.000-04:00</published><updated>2006-05-23T09:40:36.636-04:00</updated><title type='text'>Two Nice ASP.NET Tracing and Logging Articles</title><content type='html'>&lt;a href="http://www.newtonsoft.com/blog/archive/2006/05/02/98.aspx" target="_new"&gt;Logging Client-Side JavaScript Errors to ASP.NET&lt;/a&gt;: In this article James walks-through a cool ASP.NET control + module he built that enables developers to add support to log client-side script errors back to the server.  This enables administrators and developers to better track issues customers might be having with your site within client-side code that isn't easily logged.  He provides both a binary and full source code implementation of his control + module that you can checkout.  He also integrates it nicely with the new ASP.NET 2.0 Health Monitoring system.  &lt;a href="http://www.newtonsoft.com/blog/archive/2006/05/02/98.aspx"&gt;http://www.newtonsoft.com/blog/archive/2006/05/02/98.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/msdnmag/issues/06/06/CuttingEdge/default.aspx" target="_new"&gt;Provider Based Service for ASP.NET Tracing&lt;/a&gt;: In this article Dino discusses some of the new ASP.NET 2.0 Tracing features (for example: the integration and unification of ASP.NET 2.0's tracing features with the System.Diagnostics tracing and trace-listener support used elsewhere within the .NET Framework).  He also then discusses how to build a custom trace listener application.  &lt;a href="http://msdn.microsoft.com/msdnmag/issues/06/06/CuttingEdge/default.aspx"&gt;http://msdn.microsoft.com/msdnmag/issues/06/06/CuttingEdge/default.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-114839163662526504?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://weblogs.asp.net/scottgu/archive/2006/05/08/Two-Nice-ASP.NET-Tracing-and-Logging-Articles.aspx' title='Two Nice ASP.NET Tracing and Logging Articles'/><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/114839163662526504/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=114839163662526504' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114839163662526504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114839163662526504'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2006/05/two-nice-aspnet-tracing-and-logging.html' title='Two Nice ASP.NET Tracing and Logging Articles'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-114836487167347785</id><published>2006-05-23T02:14:00.000-04:00</published><updated>2006-05-23T02:14:31.683-04:00</updated><title type='text'>WYSIWYG Web Printing with PDF &amp; Response Filters</title><content type='html'>&lt;a href="http://codebetter.com/blogs/brendan.tompkins/archive/2006/05/22/145267.aspx"&gt;http://codebetter.com/blogs/brendan.tompkins/archive/2006/05/22/145267.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-114836487167347785?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/114836487167347785/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=114836487167347785' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114836487167347785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114836487167347785'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2006/05/wysiwyg-web-printing-with-pdf-response.html' title='WYSIWYG Web Printing with PDF &amp; Response Filters'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-114836404982221713</id><published>2006-05-23T01:58:00.000-04:00</published><updated>2006-05-23T02:00:49.833-04:00</updated><title type='text'>Intellisense for SQL Queries for Free!</title><content type='html'>&lt;p&gt;Intellisense for SQL Server, plus other features&lt;br /&gt;Code completion for fast, accurate script building&lt;br /&gt;Discoverability in SQL Server query creation&lt;br /&gt;Keyword formatting, code snippet integration other extended features&lt;br /&gt;FREE until 1st September 2006&lt;br /&gt;No time-bombs, no restrictions&lt;/p&gt;&lt;p&gt;Check out &lt;a href="http://www.red-gate.com/products/SQL_Prompt/index.htm"&gt;http://www.red-gate.com/products/SQL_Prompt/index.htm&lt;/a&gt;&lt;/p&gt;SQL Prompt provides Intellisense® style auto-completion for Microsoft SQL Server editors. It will tell you the exact formatting you should use for your SQL commands, while you are writing them and will therefore help you write fast, perfectly formatted SQL statements. SQL Prompt improves the productivity of all SQL script creation.&lt;span style="font-family:georgia;color:#000000;"&gt; &lt;/span&gt;&lt;a href="https://www.red-gate.com/Dynamic/Downloads/DownloadEvaluationLogin.aspx?Download=SQLPrompt"&gt;&lt;span style="font-family:georgia;color:#000000;"&gt;SQL Prompt can be downloaded free&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:georgia;color:#000000;"&gt; until 1st September 2006 and we are providing forum support on the &lt;/span&gt;&lt;a href="http://www.red-gate.com/messageboard/viewforum.php?f=44"&gt;&lt;span style="font-family:georgia;color:#000000;"&gt;SQL Prompt support forum&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:georgia;color:#000000;"&gt;.&lt;br /&gt;SQL Prompt simply sits behind the scenes and provides unobtrusive help when you press Ctrl-Space or when you type "." after a table/view/alias name.&lt;br /&gt;&lt;/span&gt;Features include :&lt;br /&gt;Table/View name completion&lt;br /&gt;Column name completion&lt;br /&gt;Stored procedure name completion &lt;a href="http://www.red-gate.com/solutions/sql/audit_trail.htm"&gt;&lt;/a&gt;&lt;br /&gt;USE completion&lt;br /&gt;JOIN/JOIN ON completion&lt;br /&gt;Auto-uppercasing of keywords&lt;br /&gt;Auto-popup after keywords&lt;br /&gt;SQL Prompt works with Microsoft Query Analyzer, SQL Server 2005 Management Studio, Visual Studio 2005, Visual Studio .NET 2003, SQL Server 2000 Enterprise Manager, UltraEdit32.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-114836404982221713?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/114836404982221713/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=114836404982221713' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114836404982221713'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114836404982221713'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2006/05/intellisense-for-sql-queries-for-free.html' title='Intellisense for SQL Queries for Free!'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-114779117011289539</id><published>2006-05-16T10:50:00.000-04:00</published><updated>2006-05-16T10:52:50.126-04:00</updated><title type='text'>Real Source Control</title><content type='html'>There's an interesting article at Builder:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://builder.com.com/5100-6374_14-6072384.html?part=rss&amp;tag=feed&amp;amp;subj=bldr"&gt;http://builder.com.com/5100-6374_14-6072384.html?part=rss&amp;tag=feed&amp;amp;subj=bldr&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The key things are:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Source code system is necessary.&lt;/li&gt;&lt;li&gt;Reviewing source code changes and check-ins at a regular basis is more than necessary.&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-114779117011289539?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/114779117011289539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=114779117011289539' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114779117011289539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114779117011289539'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2006/05/real-source-control.html' title='Real Source Control'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-114778695808948224</id><published>2006-05-16T09:41:00.000-04:00</published><updated>2006-05-16T09:42:38.106-04:00</updated><title type='text'>What should I choose for my primary key</title><content type='html'>I've found the primary identity column to be the most useful and efficient in my applications. However, for a more detailed information, I suggest a very good article at:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.aspfaq.com/show.asp?id=2504"&gt;http://www.aspfaq.com/show.asp?id=2504&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-114778695808948224?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/114778695808948224/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=114778695808948224' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114778695808948224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114778695808948224'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2006/05/what-should-i-choose-for-my-primary.html' title='What should I choose for my primary key'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-114778364482605148</id><published>2006-05-16T08:38:00.000-04:00</published><updated>2006-05-16T10:01:45.670-04:00</updated><title type='text'>Paging in SQL Server</title><content type='html'>For Last 2 weeks, we were struggling with Server Side paging with a few queries. We found that some methods worked fine with most of the queries but in some queries, they will fail. So here are my observations:&lt;br /&gt;&lt;br /&gt;We have 3 popular methods of paging:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;SELECT TOP 10 * FROM [MyTable] WHERE [PrimaryKey] NOT IN (SELECT TOP 10 * FROM [MyTable] ORDER BY [Name]) ORDER BY [Name]&lt;/li&gt;&lt;li&gt;Insert in a temp table variable. That way, you can get the count as well as records in 1 go and complex where clause or Order By clause won't be executed twice unlike first query&lt;/li&gt;&lt;li&gt;SELECT TOP 10 * FROM (SELECT TOP 10 * FROM (SELECT TOP 20 * FROM [MyTable] ORDER BY [Name]) ORDER BY [Name] DESC) ORDER BY [Name]&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;I found that for the 1st one, many people also use INNER JOIN instead of NOT IN but INNER JOIN usually takes more time and becomes too complex if "FROM" clause or "WHERE" clause is complex too. Out of the above methods, I found that the 3rd method returns result in fastest time. However, like the first method, even for 3rd method, we need to execute another query to fetch the record count. So, in many cases, even 3rd method might prove to be slow. Second method has been a consistent performer so we chose the second method. So, here's my summary of observations:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;If you don't have too many joins with complex where conditions, use the 3rd or 1st method. They perform at par in most of the cases. I prefer the first method.&lt;/li&gt;&lt;li&gt;If you have too many complex joins or conditions, use the 2nd method.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;From my perspective, I plan to use 2nd method throughout my applications to be consistent.&lt;/p&gt;&lt;p&gt;Here is a nice article showing a comparison and methods for upto 10 different techniques:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.aspfaq.com/show.asp?id=2120"&gt;http://www.aspfaq.com/show.asp?id=2120&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/7114771-114778364482605148?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/114778364482605148/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=114778364482605148' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114778364482605148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114778364482605148'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2006/05/paging-in-sql-server.html' title='Paging in SQL Server'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-114778304400662150</id><published>2006-05-16T08:34:00.000-04:00</published><updated>2006-05-16T08:37:24.016-04:00</updated><title type='text'>Ten Commandments of Egoless Programming</title><content type='html'>What we need is a set of rules or guidelines to help developers keep themselves (their egos, actually) separate from their code:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Understand and accept that you will make mistakes. The point is to find them early, before they make it into production. Fortunately, except for the few of us developing rocket guidance software at JPL, mistakes are rarely fatal in our industry, so we can, and should, learn, laugh, and move on. &lt;/li&gt;&lt;li&gt;You are not your code. Remember that the entire point of a review is to find problems, and problems will be found. Don't take it personally when one is uncovered. &lt;/li&gt;&lt;li&gt;No matter how much "karate" you know, someone else will always know more. Such an individual can teach you some new moves if you ask. Seek and accept input from others, especially when you think it's not needed. &lt;/li&gt;&lt;li&gt;Don't rewrite code without consultation. There's a fine line between "fixing code" and "rewriting code." Know the difference, and pursue stylistic changes within the framework of a code review, not as a lone enforcer. &lt;/li&gt;&lt;li&gt;Treat people who know less than you with respect, deference, and patience. Nontechnical people who deal with developers on a regular basis almost universally hold the opinion that we are prima donnas at best and crybabies at worst. Don't reinforce this stereotype with anger and impatience. &lt;/li&gt;&lt;li&gt;The only constant in the world is change. Be open to it and accept it with a smile. Look at each change to your requirements, platform, or tool as a new challenge, not as some serious inconvenience to be fought. &lt;/li&gt;&lt;li&gt;The only true authority stems from knowledge, not from position. Knowledge engenders authority, and authority engenders respect—so if you want respect in an egoless environment, cultivate knowledge. &lt;/li&gt;&lt;li&gt;Fight for what you believe, but gracefully accept defeat. Understand that sometimes your ideas will be overruled. Even if you do turn out to be right, don't take revenge or say, "I told you so" more than a few times at most, and don't make your dearly departed idea a martyr or rallying cry. &lt;/li&gt;&lt;li&gt;Don't be "the guy in the room." Don't be the guy coding in the dark office emerging only to buy cola. The guy in the room is out of touch, out of sight, and out of control and has no place in an open, collaborative environment. &lt;/li&gt;&lt;li&gt;Critique code instead of people—be kind to the coder, not to the code. As much as possible, make all of your comments positive and oriented to improving the code. Relate comments to local standards, program specs, increased performance, etc.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Source: Builder.Com (&lt;a href="http://builder.com.com/5100-6404-1045782.html"&gt;http://builder.com.com/5100-6404-1045782.html&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/7114771-114778304400662150?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/114778304400662150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=114778304400662150' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114778304400662150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114778304400662150'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2006/05/ten-commandments-of-egoless.html' title='Ten Commandments of Egoless Programming'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-114744526207435619</id><published>2006-05-12T10:45:00.000-04:00</published><updated>2006-05-12T10:47:42.086-04:00</updated><title type='text'>Magic Bullet - Juicer/ Mixer/ Grinder</title><content type='html'>Most of us need a juicer/ mixer/ grinder when we come to US and most of us end up paying US$12-13 for a Walmart item. However, as per my experience it doesn't work out as expected. I was recommended Magic Bullet - again by my magical friend Vishal. It's amazing. I liked it as soon as I read about it. With Juicer, it sells for about US$69 at most of the places, but at EBay you can easily get it for around US$45. It's a good buy as far as my experience goes. I love it :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-114744526207435619?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/114744526207435619/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=114744526207435619' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114744526207435619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114744526207435619'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2006/05/magic-bullet-juicer-mixer-grinder.html' title='Magic Bullet - Juicer/ Mixer/ Grinder'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-114740344417418423</id><published>2006-05-11T23:08:00.000-04:00</published><updated>2006-05-11T23:10:44.183-04:00</updated><title type='text'>Hope - That's all that matters - Shawshank Redemption</title><content type='html'>Again, thanks to my friend Vishal. He recommended this movie and I'm indebted to him for recommending such a good movie!!! It further strengthened my belief - Hope is all that matters - Just believe in your self - And god helps those... who help themselves!!!&lt;br /&gt;&lt;br /&gt;Thanks Vishal!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-114740344417418423?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/114740344417418423/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=114740344417418423' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114740344417418423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114740344417418423'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2006/05/hope-thats-all-that-matters-shawshank.html' title='Hope - That&apos;s all that matters - Shawshank Redemption'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-114721880765516146</id><published>2006-05-09T19:40:00.000-04:00</published><updated>2006-05-09T20:41:47.936-04:00</updated><title type='text'>Some small things I noticed during my stay</title><content type='html'>&lt;ul&gt;&lt;li&gt;Goods trains have usually 100-110 compartments&lt;/li&gt;&lt;li&gt;People follow rules strictly on road - lanes etc. If you are not in proper lane, you don't turn&lt;/li&gt;&lt;li&gt;Unless you make a major mistake, nobody will blow their horn&lt;/li&gt;&lt;li&gt;Outside your house, you'll wonder whether anybody else lives here? Usually you'll find people only in Malls, On-Road or in offices.&lt;/li&gt;&lt;li&gt;Rates vary even between adjacent shops. Deals are the way to go.&lt;/li&gt;&lt;li&gt;People work from 8 to 5. After 5, it's hard to find somebody in office.&lt;/li&gt;&lt;li&gt;Cell phone is quite costly. Usually plans are around US$40-50/ 700 mins. Even incoming is counting in those minutes.&lt;/li&gt;&lt;li&gt;People don't use cell phones/ phones much unlike India.&lt;/li&gt;&lt;li&gt;People are quite straight forward.&lt;/li&gt;&lt;li&gt;Directions are told like North, South, East, West. You won't hear things like take right, take left usually.&lt;/li&gt;&lt;li&gt;Greenry is in abundance. Everything is clean.&lt;/li&gt;&lt;li&gt;People use wipes - tissue papers etc. like anything and they are quite effective.&lt;/li&gt;&lt;li&gt;For most of the tasks - tools are quite effective. People can put up wall paper, seat covers, sofa covers etc. all on their own. Just take a visit to Home Depot and you'll wonder.&lt;/li&gt;&lt;li&gt;Concrete use in housing units is quite minimal. Mostly people use wood and other light weight material.&lt;/li&gt;&lt;li&gt;Almost every building/ house is centrally air-conditioned.&lt;/li&gt;&lt;li&gt;Some of the discount stores like Fred and Walmart help a lot in saving.&lt;/li&gt;&lt;li&gt;Free offers are too many - for example - through Snapfish, order prints for free. Free shipping on many things...&lt;/li&gt;&lt;li&gt;Labor is too costly. For example, purchasing a mattress might be US$200 but shipping might be US$50 if you don't get a good deal. I got 6MP Sony camera for US$169 and quote for repair of my friend's 5MP camera repair is US$180&lt;/li&gt;&lt;li&gt;Many a times, going and purchasing in shop might prove costlier. For example, I needed a USB cable. In Walmart, Best Buy etc. Belkin cable was for US$14. I got the same delivered at home by CompUsa for just US$2.99. Similarly, iPod silicon case was US$8 at walmart and through another site, i got it delivered at home for US$2.99.&lt;/li&gt;&lt;li&gt;You will hardly find anybody walking on the streets&lt;/li&gt;&lt;li&gt;All the parking lots are huge. Stores are also huge in size&lt;/li&gt;&lt;li&gt;Roads are quite wide and clean&lt;/li&gt;&lt;li&gt;If you miss one turn/ exit on a road, you might have to take a trip of 20-30 miles&lt;/li&gt;&lt;li&gt;Getting the right cut is difficult! And it costs around US$10-12 for a hair cut. Look for coupons for hair-cut too. We get US$2 discount from the coupon that we get with our grocery bill&lt;/li&gt;&lt;li&gt;Since manual labor is costly - getting your clothes altered is costly too. For example, for a trouser alteration, it's usually US$10-12. So you should be careful about the size you choose. On trousers both length and waist are written so you can avoid the hassle of getting these altered.&lt;/li&gt;&lt;li&gt;Almost everything can be returned for a full refund. Many a times, even if you have used - and most of the times - no questions asked. This includes food, electronics, clothes! So if you don't like it - return it.&lt;/li&gt;&lt;li&gt;Since most of the apartments have electric gas, for cooking chapatis you must get a grill that is available on Indian stores. That'll save lots of effort and chapatis will be much better.&lt;/li&gt;&lt;li&gt;Many magazines can be subscribed for free including Khabar, Little India. Subscribe these to get info about happenings in Indian community. Also subscribe to free material because it might have coupons/ offers etc.&lt;/li&gt;&lt;li&gt;Vegetables and Fruits are available in lots of varieties. For example, usually in my area, apples are available in 6-7 varieties. So be careful while choosing. Usually you don't want to get organic stuff.&lt;/li&gt;&lt;li&gt;People use Tofu as an alternative to Paneer.&lt;/li&gt;&lt;li&gt;Cheese is usually processed with items from Animal origin.&lt;/li&gt;&lt;li&gt;Even bread is available in many varieties. In my area it's available from US$0.88 to US$3 per pack (usually same weight/ size/ number of slices).&lt;/li&gt;&lt;li&gt;Our friend brought "Jaman" for curd from India because the curd over here tastes a lot different. We usually use 2% fat milk.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Looking forward to your comments and experiences...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-114721880765516146?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/114721880765516146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=114721880765516146' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114721880765516146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114721880765516146'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2006/05/some-small-things-i-noticed-during-my.html' title='Some small things I noticed during my stay'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-114721801615849937</id><published>2006-05-09T18:47:00.000-04:00</published><updated>2006-05-16T08:50:07.666-04:00</updated><title type='text'>Coming to US - My learnings</title><content type='html'>Some of the learnings:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Web is the key! Search for info on the net... that'll save you from lot of hassles, time and money&lt;/li&gt;&lt;li&gt;Don't bring too many clothes. Mostly clothing including jackets, belts, shoes etc. are cheaper and better quality over here. Bring minimal clothes. Instead bring lots of food items - specially masalas etc that you might need. These items are costlier and initially you might save a lot of money by not having to purchase these from US. It's not necessary to bring items such as Salt and Sugar in big quantities as those are common ingredients but masalas are not common. So I suggest bringing things like Indian Masalas, Snacks etc. in more quantity. Next time on my trip, probably I won't bring more than 2-3 sets of clothes and everything else will be food and some basic utensils :)&lt;/li&gt;&lt;li&gt;From utensils perspective, bring steel bowls, glasses, parat, belan, spoons, knife, chimta, karchi, chalni, pressure cooker and a knife. Usually steel utensils are not available here and even if they are available, they are costly.&lt;/li&gt;&lt;li&gt;Get the International Driving License online. Don't pay in India. One obtained from Authority in India is valid for only 1 year and costs around US$20. In the same cost, you get IDL online that's valid for 20 years!! No tests, no hassles. (&lt;a href="http://www.idlid.com/"&gt;http://www.idlid.com/&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Look for a driving instructor even before arriving in US. Finding appointment is not that easy in many places. For me, wait period was more than 1 month. Though driving is not that tough if you get some idea about rules and drive slowly initially. However, if you go in big city directly - it's quite tough considering the speed and rules.&lt;/li&gt;&lt;li&gt;Apply for SSN the very first day you arrive in US! You'll need a SSN almost everywhere.&lt;/li&gt;&lt;li&gt;Open a bank account the very first day. Search for a credit union if it's available nearby. You can use &lt;a href="http://www.cuswirl.com"&gt;www.cuswirl.com&lt;/a&gt; to find the nearest branch. They will open account without much troubles and deposit (usually no deposit). Once you get your SSN, you'll need a credit card and usually Credit Unions give you credit card without any deposits with a good limit. I got one with a very high limit. You need credit card to build your credit history and that counts almost every where. You can also get good finance rates for your Home Loan/ Car Loans etc. from Credit Unions. I liked their services too. I opened my account in First Tech (&lt;a href="http://www.firsttechcu.com"&gt;www.firsttechcu.com&lt;/a&gt;).&lt;/li&gt;&lt;li&gt;Get a Credit Card as soon as you get your SSN. Get from the bank where you opened your account (preferably Credit Union as suggested earlier). &lt;/li&gt;&lt;li&gt;Build your credit hitory: Try to use your credit card for all the payments. Also - remember to maintain your credit history by always paying on time. Without credit history, you'll get hurdles almost everywhere. I couldn't get a Dish TV network, electricity connection, phone connection etc. without a deposit.&lt;/li&gt;&lt;li&gt;Prices vary like anything: Here, the key word for purchasing is "Deal". You'll find almost everybody talking about deal and offers. For example, I got my internet connection with Basic Cable for US$37.99/ month for first 6 months and after that it'll be $54.99. If I would have chosen the other option, Internet was at introductory rate of US$29, but after that without cable, it'll cost US$52.99. So this was a good deal. I subscribed for a magazine. Official subscription coupon in magazine is US$57.99. Most of the sites offered US$36.99. Then I got the offer through another site for just US$19.99. So the key word is deal. Even for gasoline (petrol) you'll find that gas stations across the street also have different rates. Be careful even for grocery. For example, in one store 1 Gallon Milk is US$3.50 and in another it's US$2.50. Look for rebates, mail-in rebates. Some of the good sites to keep track of all these are: &lt;a href="http://www.fatwallet.com"&gt;www.fatwallet.com&lt;/a&gt;, &lt;a href="http://www.dealnews.com"&gt;www.dealnews.com&lt;/a&gt;, &lt;a href="http://www.deals2buy.com"&gt;www.deals2buy.com&lt;/a&gt;, &lt;a href="http://www.dealsea.com"&gt;www.dealsea.com&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Stay in touch with friends for purchasing. Many a times, referrals help both of you. For example, when I opened my first bank account, both me and my friend got a US$10 credit immediately. When I opened my other bank account, I got a US$45 credit and my friend got a US$25 credit. For Dish TV, I got activation fee waived off and my friend got US$100 credit.&lt;/li&gt;&lt;li&gt;You can get almost anything used - in new like condition. Don't think of purchasing everything new. If purchasing new, try Sam's Club or Costco through your friends. Walmart is the king of discount but still try the online deals also. For old goods, look at &lt;a href="http://www.iwanta.net"&gt;www.iwanta.net&lt;/a&gt;, &lt;a href="http://www.sulekha.com"&gt;www.sulekha.com&lt;/a&gt; and also at donation stores like Goodwill Emporium.&lt;/li&gt;&lt;li&gt;Look for a temple nearby. Get bonded with your community. They can help you a lot and they can guide you for lots of deals etc. Don't forget the help others provide you... provide the same help to others.&lt;/li&gt;&lt;li&gt;Get a car. Unlike India, even 10-12 year old cars run very well. I myself got a Honda Accord 1995 Automatic, 4 Door with 128k miles on it for US$3200. After initial check up and service, it costed me US$4000. It runs great. Mileage is also great and I am sure the depreciation won't be much. As I had saved some money in India, I didn't even take a loan, saving some amount on Interest.&lt;/li&gt;&lt;li&gt;Since you won't have driving history or even insurance, getting Auto Insurance might not be that easy. Go to &lt;a href="http://www.progressive.com"&gt;www.progressive.com&lt;/a&gt; and you'll get it online for a competitive rate. Having a US driving license will reduce your insurance rate. I chose not to purchase the comprehensive insurance for the car as the cost of insurance for 2 years = cost of car. So I took only liability insurance. That's what most of the Indians do.&lt;/li&gt;&lt;li&gt;For moving around, get maps and routes online through google or yahoo maps. Directions can get you anywhere in US.&lt;/li&gt;&lt;li&gt;Search for Indian stores around. Most of the cities have Indian stores. You can get most of the snacks and different stuff from these stores. We usually purchase only Masalas, Ghee, some specific vegetables and flour (Atta, Maida, Suji) from these. Most of the vegetables and usual stuff such as Sugar, Salt etc. are also available at stores such as Walmart and are comparitively cheaper.&lt;/li&gt;&lt;li&gt;Always check your bill details at Indian stores. You might be surprised that usually these stores do not have details on bill whereas all other stores have. That's the reason you need to double-check.&lt;/li&gt;&lt;li&gt;For home phone, company was asking a deposit of US$180. Instead I chose to get Vonage. It gave me first month free, no equipment cost and just US$15/ month for 500 minutes and no deposit. Deposits like these may eat up money quite fast initially and it's also a hassle to keep a tab on all the refundable deposits.&lt;/li&gt;&lt;li&gt;Don't get ill. Getting an appointment to a doctor is quite difficult. I got an ear infection in Jan end. I went to emergency care but after that getting regular appointment has been a pain. Usually the waiting period is 2-3 weeks for primary care and 4-5 weeks for specialists.&lt;/li&gt;&lt;li&gt;Read instructions carefully. Even small mistakes can cost you dearly. Here, everything goes by rule. For example, due to my bank's mistake my rental payment was delayed by 1 day. My renting agency, immediately levied a late charge of US$75 and did not hear anything i told them. Then I contacted bank that this is due to their mistake and they immediately refunded it. So - be careful and never miss a payment. It hurts both financially and from the perspective of credit history.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;To stay connected with India I did the following:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Purchased an &lt;a href="http://www.internetcalls.com"&gt;http://www.internetcalls.com&lt;/a&gt; account for my family in India. They have a broadband connection. So now, they can call most of the countries in the World for free for upto 20 hrs/ a month - including USA. They call me frequently as they need.&lt;/li&gt;&lt;li&gt;I purchased comcast internet to interact/ chat with them.&lt;/li&gt;&lt;li&gt;Got DishTV equipment installed with South Asian Mega-Pack. It has more than 10 Indian Channels including Zee TV, Sony TV, SET Max, Zee Cinema, B4U Music, B4U Movies, Asian FM, Aaj Tak etc.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Some of the key stuff for Vegetarians:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;There are various things to note if you are vegetarian. Most of the food ingredients for ready-to-eat food contain non-vegetarian stuff. Beef and gelatin are common. So read ingredients carefully. Even flavoured curd contains gelatin. Usually you'll like Mexican food to suit your needs. You'll find Taco Bell all around and it has some dishes such as Chalupa that you can have without cheese and meet and added beans. For more options/ details, refer to:&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.vegetarian-restaurants.net/OtherInfo/FastFoodRest.htm"&gt;http://www.vegetarian-restaurants.net/OtherInfo/FastFoodRest.htm&lt;/a&gt;&lt;/p&gt;&lt;p&gt;I miss my favorite McDonalds burgers and fries as those are not suitable for vegetarians.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Key people whose help was beyond imagination in my settling down in US&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Vishal Doshi (Medical College of Georgia)&lt;/p&gt;&lt;p&gt;Sunil Joshi and Ratanmani Joshi (Medical College of Georgia)&lt;/p&gt;&lt;p&gt;Karan Singh Bakshi (My best friend)&lt;/p&gt;&lt;p&gt;Rahul Tripathy (Rapidigm)&lt;/p&gt;&lt;p&gt;Prosenjit Sinha (Rapidigm)&lt;/p&gt;&lt;p&gt;Ram (Rapidigm)&lt;/p&gt;&lt;p&gt;Mohan Wakhade (Medical College of Georgia)&lt;/p&gt;&lt;p&gt;Sharad Purohit (Medical College of Georgia)&lt;/p&gt;&lt;p&gt;Kenneth O'Brien (Morris Communications)&lt;/p&gt;&lt;p&gt;----&lt;/p&gt;&lt;p&gt;Some good links to get started&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.durlabh.com/WelcomeToAmerica.html"&gt;http://www.durlabh.com/WelcomeToAmerica.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.immihelp.com/guide"&gt;http://www.immihelp.com/guide&lt;/a&gt;&lt;/p&gt;&lt;p&gt;----&lt;/p&gt;&lt;p&gt;I hope that others will add to this post to make the initial experience in US less painful.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-114721801615849937?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/114721801615849937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=114721801615849937' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114721801615849937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114721801615849937'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2006/05/coming-to-us-my-learnings.html' title='Coming to US - My learnings'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114771.post-114721428285317895</id><published>2006-05-09T18:37:00.000-04:00</published><updated>2006-05-09T18:39:25.623-04:00</updated><title type='text'>Consulting Lessons Learned - The Proposal Process and starting correctly</title><content type='html'>&lt;a href="http://angrycoder.com/article.aspx?cid=6&amp;y=2002&amp;amp;m=4&amp;d=25"&gt;http://angrycoder.com/article.aspx?cid=6&amp;amp;y=2002&amp;m=4&amp;amp;d=25&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://angrycoder.com/article.aspx?cid=6&amp;y=2001&amp;amp;m=4&amp;d=5"&gt;http://angrycoder.com/article.aspx?cid=6&amp;amp;y=2001&amp;m=4&amp;amp;d=5&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-114721428285317895?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/114721428285317895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=114721428285317895' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114721428285317895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114721428285317895'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2006/05/consulting-lessons-learned-proposal.html' title='Consulting Lessons Learned - The Proposal Process and starting correctly'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-114721375919335652</id><published>2006-05-09T18:28:00.000-04:00</published><updated>2006-05-09T18:29:19.193-04:00</updated><title type='text'>Trying to go independent? Here's a good read...</title><content type='html'>&lt;a href="http://www.angrycoder.com/article.aspx?cid=6&amp;y=2003&amp;amp;m=12&amp;d=10"&gt;http://www.angrycoder.com/article.aspx?cid=6&amp;amp;y=2003&amp;m=12&amp;amp;d=10&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-114721375919335652?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/114721375919335652/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=114721375919335652' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114721375919335652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114721375919335652'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2006/05/trying-to-go-independent-heres-good.html' title='Trying to go independent? Here&apos;s a good read...'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-114721344679877038</id><published>2006-05-09T18:17:00.000-04:00</published><updated>2006-05-09T18:24:06.796-04:00</updated><title type='text'>Communication is key - Team model</title><content type='html'>Another important read regarding communication at:&lt;br /&gt;&lt;a href="http://codebetter.com/blogs/raymond.lewallen/archive/2006/05/09/144363.aspx"&gt;http://codebetter.com/blogs/raymond.lewallen/archive/2006/05/09/144363.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And yes, don't forget about&lt;br /&gt;Want productivity? Try some team continuity .&lt;br /&gt;&lt;a href="http://codebetter.com/blogs/jeremy.miller/archive/2006/05/06/144188.aspx"&gt;http://codebetter.com/blogs/jeremy.miller/archive/2006/05/06/144188.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-114721344679877038?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/114721344679877038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=114721344679877038' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114721344679877038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114721344679877038'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2006/05/communication-is-key-team-model.html' title='Communication is key - Team model'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-114721302222354549</id><published>2006-05-09T18:13:00.000-04:00</published><updated>2006-05-09T18:17:02.233-04:00</updated><title type='text'>Diseases of Bad Programmers/ Architects</title><content type='html'>I came across these interesting but informative articles on common diseases of bad programmers and architects:&lt;br /&gt;&lt;br /&gt;Architects: &lt;a href="http://codebetter.com/blogs/sahil.malik/archive/2004/12/28/39389.aspx"&gt;http://codebetter.com/blogs/sahil.malik/archive/2004/12/28/39389.aspx&lt;/a&gt;&lt;br /&gt;Programmers: &lt;a href="http://codebetter.com/blogs/sahil.malik/archive/2005/06/07/64255.aspx"&gt;http://codebetter.com/blogs/sahil.malik/archive/2005/06/07/64255.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Another good read:&lt;br /&gt;&lt;br /&gt;If it's silly to suggest putting my SATs on my resume, why is ..&lt;br /&gt;&lt;br /&gt;Scott Hanselman, MCSD, MCT, MCP, MC*.*&lt;br /&gt;&lt;br /&gt;.. reasonable? Having a cert means you have a capacity to hold lots of technical stuff in your head. Full stop. I propose we sign our names like this:&lt;br /&gt;&lt;br /&gt;Scott Hanselman, 11 Successful Large Projects, 3 Open Source Applications, 1 Colossal Failure&lt;br /&gt;Wouldn't that be nice?&lt;br /&gt;&lt;br /&gt;Refer to &lt;a href="http://www.codinghorror.com/blog/archives/000576.html"&gt;http://www.codinghorror.com/blog/archives/000576.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-114721302222354549?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/114721302222354549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=114721302222354549' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114721302222354549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114721302222354549'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2006/05/diseases-of-bad-programmers-architects.html' title='Diseases of Bad Programmers/ Architects'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-114641708104714873</id><published>2006-04-30T12:46:00.000-04:00</published><updated>2006-04-30T13:13:28.683-04:00</updated><title type='text'>28-Apr-06 - Atlanta Trip</title><content type='html'>Saturday was a fine day for me. Me and my wife went to Atlanta with my friend Vishal and his wife Payal. The day started with a memorable note - my wife planned to cook my favorite Cutlets and Bread Idli. I love them too much. We left for Atlanta at around 10:30 in Vishal's trip and discussed on lots of things on our way. Some of the cool things were:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;John Titor&lt;/li&gt;&lt;li&gt;Software Developement Methodoly - How to track/ document and divide work&lt;/li&gt;&lt;li&gt;Vishal's Nasa auditorium visit in Houston&lt;/li&gt;&lt;li&gt;Previous visit to Jagjit Singh's shows in Houston&lt;/li&gt;&lt;li&gt;We will watch couple of horror movies together and he told me about "Beutiful Life" movie.&lt;/li&gt;&lt;li&gt;I told him about "House of Nine", "Saw", "Saw II"&lt;/li&gt;&lt;li&gt;Barnes and Noble near Augusta Mall (Wrightsboro Road)&lt;/li&gt;&lt;li&gt;Magazines I subscribed&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;We were supposed to pick tickets from Vishal's friend Gautam in Atlanta and we first went to his home. It was at a very nice location with a great view. He also offered Upma to us that was very tasty too. Due to heavy breakfast we couldn't eat much right then but got some packed. :)&lt;/p&gt;&lt;p&gt;Then we left for Farmers Market in Atlanta. It was suprising to find so many food varieties of Indian and Pakistani Origin in addition to other stuff and huge variety of vegetables. We found that Indian stuff was costlier than the Indian grocery store so we purchased only minimal stuff but lots of vegetables. Then we moved to an Indian Store - Patel Bros. in Decatour near Lawrenceville Highway. There the goods were cheap and we got good stuff - including my Jaljeera Masala etc.&lt;/p&gt;&lt;p&gt;From there, we moved to the nearby Mirch Masala restaurant that offered a buffet. Buffet was okay from Indian taste perspective but very good in comparison to my previous experiences in US. Still, I'll rate it below Bombay Central of Augusta. Varieties were good and I liked the Gajar Halwa a lot. I have a problem with smell of Garlic and too much of Garlic in food. So I stuck to just matar paneer :)&lt;/p&gt;&lt;p&gt;Then we moved on to Georgia Aquarium. We had an advance booking of 4 pm but we could reach only by 5:30pm. We weren't sure whether they'll let us in. When I reached gate and asked the security personnel she told me "sorry you can't go in". I was shocked. Then when we were about to get back, she told us she was joking. Georgia Aquarium is a place where we can be late. :) The overall aquarium experience was very good. We clicked almost 150 pictures. The aquarium is huge and much better than what I had seen at Sentosa Island in Singapore.&lt;/p&gt;&lt;p&gt;After spending about 2 hrs in Aquarium, we moved on to Vishal's favorite Jagjit Singh's concert. We were there at about 7:30pm. From his past experience, Vishal was skeptical whether we will get tickets at all but as such it was well organized and there was no trouble as such. The concert was scheduled to start at about 8:00pm but it could start only at 8:30pm. Jagjit Singh was not in best of his health and was coughing regularly initially. After about 30 minutes or so, everything picked up rythm. The supporting crew was just marvelous with different instruments such as keyboard, flute, sitar, tabla, saxophone etc. It was just breathless moment. Saxophone reminded me of my favorite tunes from Kenny G.&lt;/p&gt;&lt;p&gt;I took 2-3 naps in-between just because I was feeling a bit tired.. but none of tha naps lasted more than 2 minutes... so I didn't miss too much :). Overall, the experience was better than I had anticipated.&lt;/p&gt;&lt;p&gt;Concert rounded up at about midnight. We were not feeling hungry so decided to directly head for Augusta. We looked for directions but found out that couple of roads were blocked so we couldn't follow directions. Had to take couple of extra turns to find out our way but without much of trouble. On our way back also, Vishal drove. He didn't let me drive at all. We had interesting conversations and some of the key things we discussed were:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Indian Politics&lt;/li&gt;&lt;li&gt;US Politics - his view of Bush Administration&lt;/li&gt;&lt;li&gt;Rising prices of Gasoline&lt;/li&gt;&lt;li&gt;The plant that converts waste into Gasoline (&lt;a href="http://www.mindfully.org/Energy/2003/Anything-Into-Oil1may03.htm"&gt;http://www.mindfully.org/Energy/2003/Anything-Into-Oil1may03.htm&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;John Titor again&lt;/li&gt;&lt;li&gt;Coding and bad-side of Open Source&lt;/li&gt;&lt;li&gt;Minority Report, Demolition Man movie&lt;/li&gt;&lt;li&gt;Futurists and what they predict about future&lt;/li&gt;&lt;li&gt;Iran's gain from Iraq war&lt;/li&gt;&lt;li&gt;Google and its dominance&lt;/li&gt;&lt;li&gt;How Operating system is irrelevant now&lt;/li&gt;&lt;li&gt;Phoney programmers using Open Source to fool others&lt;/li&gt;&lt;li&gt;Riya.com - a cool photo search engine&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Overall, it was a trip that will remain in my memories forever.&lt;/p&gt;&lt;p&gt;I would like to thank Vishal for this memorable trip and I look forward to many more memorable trips during my US stay.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-114641708104714873?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/114641708104714873/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=114641708104714873' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114641708104714873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114641708104714873'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2006/04/28-apr-06-atlanta-trip.html' title='28-Apr-06 - Atlanta Trip'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-114617247081488726</id><published>2006-04-27T17:12:00.000-04:00</published><updated>2006-04-27T17:14:30.826-04:00</updated><title type='text'>Software Development - Too hard or too easy</title><content type='html'>I read some interesting articles at&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ftponline.com/vsm/2006_04/magazine/departments/guestop/"&gt;http://www.ftponline.com/vsm/2006_04/magazine/departments/guestop/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://codebetter.com/blogs/jeffrey.palermo/archive/2006/04/27/143522.aspx"&gt;http://codebetter.com/blogs/jeffrey.palermo/archive/2006/04/27/143522.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-114617247081488726?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/114617247081488726/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=114617247081488726' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114617247081488726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114617247081488726'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2006/04/software-development-too-hard-or-too.html' title='Software Development - Too hard or too easy'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-114607859161334453</id><published>2006-04-26T15:08:00.000-04:00</published><updated>2006-04-26T15:09:51.626-04:00</updated><title type='text'>Interviews</title><content type='html'>I was looking for some information and came across couple of interesting links related to interviews:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Microsoft Interview Questions: &lt;a href="http://www.sellsbrothers.com/fun/msiview/"&gt;http://www.sellsbrothers.com/fun/msiview/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;The Guerrilla Guide to Interviewing: &lt;a href="http://www.joelonsoftware.com/articles/fog0000000073.html"&gt;http://www.joelonsoftware.com/articles/fog0000000073.html&lt;/a&gt;&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/7114771-114607859161334453?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/114607859161334453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=114607859161334453' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114607859161334453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114607859161334453'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2006/04/interviews.html' title='Interviews'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-114607568033888531</id><published>2006-04-26T14:18:00.000-04:00</published><updated>2006-04-26T14:21:20.350-04:00</updated><title type='text'>Mixed Mode Authentication in .NET</title><content type='html'>In my current project, we need both internal and external users to access the application. Ideally, for internal users, there shouldn't be any login required. To handle such a case, I was looking for some useful links and found the following to be useful:&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/mixedsecurity.asp"&gt;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnaspp/html/mixedsecurity.asp&lt;/a&gt;&lt;br /&gt;&lt;a href="http://aspalliance.com/553"&gt;http://aspalliance.com/553&lt;/a&gt;&lt;br /&gt;Though the approaches are a bit different but they accomplish the same thing. I am more confident about the first approach.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-114607568033888531?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/114607568033888531/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=114607568033888531' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114607568033888531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114607568033888531'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2006/04/mixed-mode-authentication-in-net.html' title='Mixed Mode Authentication in .NET'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-114591038205232229</id><published>2006-04-24T16:24:00.000-04:00</published><updated>2006-04-24T16:30:52.573-04:00</updated><title type='text'>VB.NET vs C#</title><content type='html'>I've read various articles regarding VB.Net vs C# debate and which one is better. I've been working with VB since version 5.0 and I like it a lot. My logical move was also towards VB.Net and I worked on approximately 15 large size VB.Net Projects. At the same time I worked on two small C# projects and never felt uneasy. When I was switching to .NET 2.0, I found that as per one of the articles:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;C# is in more demand because of logical reason - C# programmers are not in as much abundance as VB or VB.Net Programmers&lt;/li&gt;&lt;li&gt;C# is considered to be more advance - people give different reasonings such as VB.Net allows late-binding etc. but anyways.&lt;/li&gt;&lt;li&gt;C# programmers are paid more - because of reason #1 and #2&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;So it makes a logical choice to be paid more :) So I switched to C# and it was a very easy move. No issues at all except missing some semi-colons occassionally and hating some of the &lt;strong&gt;&lt;em&gt;features&lt;/em&gt;&lt;/strong&gt; of VB.Net. Anyways, some of the handy pointers that made by switch easier:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Whitepaper on differences between C# and VB.NET (&lt;a href="http://support.microsoft.com/?kbid=308470"&gt;http://support.microsoft.com/?kbid=308470&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Reflector - Initially my productivity in VB.Net was better. So I would write the code in VB.Net first in cases and will use Reflector to convert to C# to see the semantics differences. Then C# became a habit.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I hope it makes it easier for people who need to switch between C# and VB.Net from project to project.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-114591038205232229?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/114591038205232229/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=114591038205232229' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114591038205232229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114591038205232229'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2006/04/vbnet-vs-c.html' title='VB.NET vs C#'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-114590719821891040</id><published>2006-04-24T15:26:00.000-04:00</published><updated>2006-04-24T15:47:00.576-04:00</updated><title type='text'>CSLA .Net - My favorite base framework for .NET</title><content type='html'>&lt;p&gt;I was introduced to CSLA Framework about 2 years back by 2 smart client side resources on one of the projects I was handling. As soon as I read the intro and delved into sample programs, I liked the CSLA framework for its simplicity, extensibility and the features it offered. At that time the samples that it included had various flaws. For example, if a class was switchable then there was a lot of code repetation in DataPortal_Fetch and Fetch() methods. In such cases, the easy way out was calling Fetch() method from DataPortal_Fetch etc. That was an easy fix.&lt;/p&gt;&lt;p&gt;Apart from that, I read into many hate stories in terms of maintenance being tough etc but with applying some nicer aspects of Inheritence and using code generators like Code-Smith I found it to be an easy-to-use base framework which you can develop on. Right now, almost all my application are based on CSLA as the base and then some additional framework on top of it. I'll be sharing some of the insights on the changes or my experiences in my future posts. However, at this point, I would like to share some of the important links from CSLA learning/ understanding perspective:&lt;/p&gt;&lt;p&gt;CSLA.NET Goals: &lt;a href="http://www.lhotka.net/Articles.aspx?id=077469bf-a425-48a5-8b63-3f2382a079ff"&gt;http://www.lhotka.net/Articles.aspx?id=077469bf-a425-48a5-8b63-3f2382a079ff&lt;/a&gt;&lt;br /&gt;Why is the data access in the business class? &lt;a href="http://www.lhotka.net/Articles.aspx?id=b99dfec2-c079-4b85-98df-ea3582c28386"&gt;http://www.lhotka.net/Articles.aspx?id=b99dfec2-c079-4b85-98df-ea3582c28386&lt;/a&gt;&lt;br /&gt;Concurrency &lt;a href="http://www.lhotka.net/Articles.aspx?id=890d3e3c-8a49-486c-ae48-a44e7e1f7844"&gt;http://www.lhotka.net/Articles.aspx?id=890d3e3c-8a49-486c-ae48-a44e7e1f7844&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Should factory methods catch data exceptions? &lt;a href="http://www.lhotka.net/Articles.aspx?id=df4ed914-e910-4ece-9328-d8446e091497"&gt;http://www.lhotka.net/Articles.aspx?id=df4ed914-e910-4ece-9328-d8446e091497&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Rolling back object state when DataPortal_Update fails &lt;a href="http://www.lhotka.net/Articles.aspx?id=e3a848aa-2150-47d1-b79e-a605016e05b0"&gt;http://www.lhotka.net/Articles.aspx?id=e3a848aa-2150-47d1-b79e-a605016e05b0&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Inheritance and data access in CSLA .NET &lt;a href="http://www.lhotka.net/Articles.aspx?id=e130b265-15cb-453d-9719-d5a944385fd3"&gt;http://www.lhotka.net/Articles.aspx?id=e130b265-15cb-453d-9719-d5a944385fd3&lt;/a&gt;&lt;/p&gt;As suggested in "Inheritence and data access in CSLA.Net", I've base framework as something like&lt;br /&gt;&lt;br /&gt;Durlabh.BusinessObject&lt;t&gt; : Csla.BusinessObject&lt;t&gt;&lt;br /&gt;&lt;br /&gt;and so on. This way, all my application refer to the custom framework instead of directly relying on Csla. This makes it easier to upgrade. In addition, I've centered all my data access around Microsoft Practices Enterprise Library and the custom framework has in-built:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Database Interaction: Main classes only interact with IDataReader to read the data. This way, my business objects are not tied with the database provider. Additionally, connection opening and closing is part of the core classes.&lt;/li&gt;&lt;li&gt;Concurrency Handling: Almost all of my applications require concurrency handling. This has also been centralized in the core classes.&lt;/li&gt;&lt;li&gt;Security: Business Object level security is something that most of the application frameworks/ designs tend to ignore. Our custom framework implementation has provision for this.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;In addition, all my Editable Business Objects share some of the optional common properties that are stored in the core object instead of specifying in each object:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Id: Primary Key&lt;/li&gt;&lt;li&gt;ModifiedOn - Modification log related info&lt;/li&gt;&lt;li&gt;ModifiedBy - Modification log related info&lt;/li&gt;&lt;li&gt;Version - for concurrency handling&lt;/li&gt;&lt;li&gt;UserId - current logged in user Id as per the security context&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;This way, we have our business object's fetch method something like this:&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;"&gt;using(SafeDataReader dr = base.GetReaderByStoredProc(DataOperationMode.Get))&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;"&gt;{&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;"&gt;// read common attributes such as Id, version etc.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;"&gt;base.ReadCommonAttributes(dr)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;"&gt;customerName = dr.GetAnsiString("CustomerName");&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;"&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;This way, my business objects do not need to deal with connections etc. Stored procedure name is also determined in the base classes based on operation mode. Similarly, during update we'll have calls something like:&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;"&gt;using(DbCommand cm = base.GetCommand(DataOperationMode.Update))&lt;br /&gt;{&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;"&gt;db.AddInParameter(cm, "CustomerName", dbType.AnsiString, customerName);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:courier new;"&gt;base.ExecuteNonQuery(cm);&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Db is the database object available through base class. ExecuteNonQuery in the base class takes care of various things such as:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Adding common parameters such as for Id, Version, NewVersion, UserId etc.&lt;/li&gt;&lt;li&gt;Checking for concurrency related update failures&lt;/li&gt;&lt;li&gt;Raising exception/ basic exception handling&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;This makes our data access code much cleaner in the Business Objects. In addition, since code is centralized in couple of classes, we can easily modify the code. We also try to minimize the changes required to auto-generated classes through one of my favorite tools - CodeSmith. With minimal modifications, we can easily re-generate the classes if any modifications are required.&lt;/p&gt;&lt;p&gt;More on my base classes and code smith later. I just grabbed a copy of Expert C# 2005 Business Objects book and I must go through it to ensure I understand new concepts.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-114590719821891040?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/114590719821891040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=114590719821891040' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114590719821891040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114590719821891040'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2006/04/csla-net-my-favorite-base-framework.html' title='CSLA .Net - My favorite base framework for .NET'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-114589139369202075</id><published>2006-04-24T10:59:00.000-04:00</published><updated>2006-04-24T11:09:53.746-04:00</updated><title type='text'>My Weekend - Nothing Technical about it :)</title><content type='html'>This was the first weekend where I was much more relaxed after coming to Augusta. In fact, this week there was no major grocery purchasing scheduled, no other stuff to be purchased.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Saturday&lt;/u&gt;&lt;br /&gt;On Saturday I relaxed a bit and talked to my family for long time. After that I went to near by book store - Books A Million and it was a very good experience. Then I watched the movie "Pink Panther" and enjoyed a lot.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Sunday&lt;/u&gt;&lt;br /&gt;On Sunday, I subscribed to lots of magazines related to programming that I always wanted to get - MSDN, SQL Server Magazine, ASP.NetPro, Code-Magazine and Dr. Dobbs Journal. Then I also purchased a couple of books from MS-Press because for the first time I found a complete comparison/ step by step guide on C# in a book in so simple terms. I was quite excited to learn about structs vs classes in details. I'll read more when I get the book.  Then I went ahead and had long calls with my family back in India. It always feels good when you can talk to your loved ones :)&lt;br /&gt;&lt;br /&gt;In the afternoon I went to the temple. It was Mahavir Jayanti celebration their. My Wife Arti sang a Bhajan which everybody appreciated. All the people complimented her on her voice. After that we just went for some groceries (not too much ;)) and came back. She cooked Pao-Bhaji for me :D&lt;br /&gt;&lt;br /&gt;I had a call with my friend Vishal Doshi  here in Augusta. He's an amazing guy who helps almost everybody. He was instrumental in helping me in settling in Augusta. In fact, he's the one who helped me in getting my car, most of the stuff, getting around, introducing to people etc. I'm planning to go to Jagjit Singh's Ghazal program next weekend with him. I'm sure it'll be an enjoyable trip.&lt;br /&gt;&lt;br /&gt;Look forward to more technical stuff during the week :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-114589139369202075?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/114589139369202075/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=114589139369202075' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114589139369202075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114589139369202075'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2006/04/my-weekend-nothing-technical-about-it.html' title='My Weekend - Nothing Technical about it :)'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7114771.post-114573106613486578</id><published>2006-04-22T14:32:00.000-04:00</published><updated>2006-04-22T14:37:46.146-04:00</updated><title type='text'>Browser Compatibility - A pain</title><content type='html'>In one of my current projects, I was asked to look into the javascript issues to identity what it takes the current script to make it work for firefox. There were a few learnings such as:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;ParentElement property doesn't work properly in all the cases&lt;/li&gt;&lt;li&gt;Modal dialog boxes aren't supported in most of the browsers. To overcome this issue I worked on couple of work-arounds that I'll be posting after I do some initial tests on that. It took me more than 4 hours to work around on modal dialogs where parent page takes some action based on return value.&lt;/li&gt;&lt;li&gt;It's better to use Rows and Cells properties rather than ChildNodes to traverse through table elements.&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/7114771-114573106613486578?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/114573106613486578/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=114573106613486578' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114573106613486578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114573106613486578'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2006/04/browser-compatibility-pain.html' title='Browser Compatibility - A pain'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-114562701774688540</id><published>2006-04-21T09:33:00.000-04:00</published><updated>2006-04-21T09:43:37.750-04:00</updated><title type='text'>.NET ViewState and Most 3rd Party Components - Are a pain</title><content type='html'>&lt;ul&gt;&lt;li&gt;Since I started using .NET 1st problem I discovered is - ViewState. People misused it and it grows like hell for most of the .NET apps I see on the web&lt;/li&gt;&lt;li&gt;I went to a company that was planning to launch a web based file synchronization tool. They boasted about their technology and blah blah. I asked them to show their app. It took a bit of time. I was curious that when they said that performance is great and so on.. then why the page is taking so much of load time? I asked them whether I can view the source of the rendered page by clicking on View Source? You know what I discovered? Page size was 1 MB - 500kb of Viewstate and 500kb of rest of the page? They had a treeview display of the folder structure of the hard drive in treeview and on every postback recreated the treeview. Even then they didn't take care of turning the viewstate off. I've notice that most of the people spend lots of time for performance tuning in areas where the difference might be in a few milliseconds - but they don't think of these things. One of the biggest disadvantage of having huge viewstate is - every postback and refresh of page means this Input variable is posted back to the server and rendered back to the browser. So it takes up lots of bandwidth resulting in overall scalability loss.&lt;/li&gt;&lt;li&gt;I hate most of the 3rd party components for .NET. They render so much amount of data on the client side that I tend not to utilize most of them. For example, in one of my recent assignments client insisted on showing a TreeView like structure using ComponentArt component only. This tree structure was displayed in a GridView control with 4-5 entries for each row. When I did some profiling, I found that for every treeview all the settings were also going in the viewstate, were also being rendered in the browser and hence making each row have 5kb of extra html and viewstate! Isn't it too much for just 5 lines? Since most of the settings are related to CSS display, isn't it better to provide a CSS file to be included and just store the CSS file path? For example, for calendar picker, I use &lt;a href="http://www.dynarch.com/projects/calendar/"&gt;http://www.dynarch.com/projects/calendar/&lt;/a&gt; embedded in a user control. On the client side, it requires only minimum amount of javascript rendered. Everything is an include file. It improves performance a lot.&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/7114771-114562701774688540?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/114562701774688540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=114562701774688540' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114562701774688540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114562701774688540'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2006/04/net-viewstate-and-most-3rd-party.html' title='.NET ViewState and Most 3rd Party Components - Are a pain'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-114562638908959590</id><published>2006-04-21T09:27:00.000-04:00</published><updated>2006-04-21T09:33:09.106-04:00</updated><title type='text'>Learnings of the CSS World</title><content type='html'>&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/asp.net/reference/design/default.aspx"&gt;http://msdn.microsoft.com/asp.net/reference/design/default.aspx&lt;/a&gt; is a very good resource for learning&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.csszengarden.com/"&gt;http://www.csszengarden.com/&lt;/a&gt; is a good site to see how CSS makes it easier for developers to concentrate more on content rather than playing with tables etc.&lt;/li&gt;&lt;li&gt;It's a pain to get cross-browser compatibility across browsers with complex designs&lt;/li&gt;&lt;li&gt;Skinning is good in .NET 2.0. However, it's very painful to discover that you can't change the Skin Id after Init events. Changing skin is required in many cases after a particular event.&lt;/li&gt;&lt;li&gt;Nested tables are a pain. Use Divs??? but Divs are not supported in all the browsers :(&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Law behind accessible/ XHTML compatible sites:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;There are many good reasons for building accessible Web sites: financial, moral, legal, and so on. Let's concentrate, however, on the legal motivations. In the United States, any Web site developed by a federal agency is required by Section 508 of the Rehabilitation Act to be accessible to persons with disabilities. This law applies to federal agencies and companies that contract with federal agencies (see &lt;a href="http://www.section508.gov"&gt;http://www.section508.gov&lt;/a&gt;).&lt;/li&gt;&lt;li&gt;Other countries have similar requirements. For example, in Canada, the Treasury Board Common Look and Feel Standards require that Web sites developed by federal agencies be accessible. In Australia, the Disability Discrimination Act requires that all Web sites hosted on Australian servers (regardless of whether or not it is a government Web site) be accessible. (For more details on accessibility laws, see &lt;a href="http://www.w3.org/WAI/Policy"&gt;http://www.w3.org/WAI/Policy&lt;/a&gt;.)&lt;/li&gt;&lt;/ul&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/7114771-114562638908959590?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/114562638908959590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=114562638908959590' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114562638908959590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114562638908959590'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2006/04/learnings-of-css-world.html' title='Learnings of the CSS World'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-114562587210466686</id><published>2006-04-21T09:00:00.000-04:00</published><updated>2006-04-21T09:25:27.996-04:00</updated><title type='text'>Yesterday's Learnings</title><content type='html'>&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Dot Net Lucene&lt;/strong&gt; is &lt;strong&gt;not as fast&lt;/strong&gt; as the search system I had created!&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Web Application Project&lt;/strong&gt; works much &lt;strong&gt;faster during Development&lt;/strong&gt; as compared to Web Site in Visual Studio 2005&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Migration from VS 2003 to VS 2005 Web Application Project&lt;/strong&gt; is much &lt;strong&gt;easier&lt;/strong&gt; than migration to VS 2005 Web Site Project&lt;/li&gt;&lt;li&gt;Default installation of &lt;strong&gt;SeekAFile&lt;/strong&gt; &lt;strong&gt;server&lt;/strong&gt; also &lt;strong&gt;saves&lt;/strong&gt; the &lt;strong&gt;body&lt;/strong&gt; content in the index. This is quite unnecessary from my perspective because HTML, PDF, Word documents have lots of formatting information that needs to be used when displaying the actual document.&lt;/li&gt;&lt;li&gt;Preparing an &lt;strong&gt;approach document/ flow chart&lt;/strong&gt; &lt;strong&gt;makes&lt;/strong&gt; it &lt;strong&gt;easier to understand&lt;/strong&gt; the &lt;strong&gt;requirements&lt;/strong&gt;. With this, it also makes it easier for developers to understand the required code flow.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Most&lt;/strong&gt; of the &lt;strong&gt;people&lt;/strong&gt; &lt;strong&gt;do not know&lt;/strong&gt; that a&lt;strong&gt; single web.config&lt;/strong&gt; &lt;strong&gt;can be utilized&lt;/strong&gt; to specify &lt;strong&gt;different settings for a sub-directory&lt;/strong&gt; as well. Most people tend to lean forward towards creating a sub-web or virtual directory.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;IndependentSoft's WebDAV api for .NET&lt;/strong&gt; is very &lt;strong&gt;helpful&lt;/strong&gt; for &lt;strong&gt;exchange integration&lt;/strong&gt;.&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-114562587210466686?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/114562587210466686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=114562587210466686' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114562587210466686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114562587210466686'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2006/04/yesterdays-learnings_21.html' title='Yesterday&apos;s Learnings'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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-7114771.post-114554945109121444</id><published>2006-04-20T12:07:00.000-04:00</published><updated>2006-04-20T12:10:51.103-04:00</updated><title type='text'>Yesterday's Learnings</title><content type='html'>&lt;ol&gt;&lt;li&gt;&lt;span style="color:#330033;"&gt;Couldn't find any good articles on Soft-Delete optimization that lists approaches for referential integrity, improving fetch operations etc.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#330033;"&gt;No good articles on Role, Permissions, Groups, Module type security on BO Level, DB Level and UI Level&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#330033;"&gt;Explored DotLucene - Very good search engine - easy to use&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#330033;"&gt;Created PDF plug-in for DotLucene - as per guidelines - really good&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#330033;"&gt;No good articles on Custom Paging with .NET and SQL Server 2000 - Article on 4GuysFromRolla is more or less impractical - most of the times, we don't fetch indexed records based on primary key only&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#330033;"&gt;Worked on initial portions of an article planned to be released on Code Project for SQL Server 2000 paging&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="color:#330033;"&gt;Worked on some performance testing on composite Lookup tables - found that performance loss was negligible&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7114771-114554945109121444?l=durlabh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://durlabh.blogspot.com/feeds/114554945109121444/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7114771&amp;postID=114554945109121444' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114554945109121444'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7114771/posts/default/114554945109121444'/><link rel='alternate' type='text/html' href='http://durlabh.blogspot.com/2006/04/yesterdays-learnings.html' title='Yesterday&apos;s Learnings'/><author><name>Durlabh Jain</name><uri>http://www.blogger.com/profile/14013162256992398856</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></feed>
