<?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-9918733</id><updated>2011-07-30T01:37:11.293+05:30</updated><category term='launch'/><category term='technology'/><category term='isv india'/><category term='event'/><category term='office'/><category term='2007'/><category term='windows vista'/><title type='text'>Because Computers Are So Much Fun</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://devfun.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://devfun.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Deepak</name><uri>http://www.blogger.com/profile/01734304174271996942</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>26</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9918733.post-8521487585094514169</id><published>2007-03-27T15:26:00.000+05:30</published><updated>2007-03-27T15:43:07.089+05:30</updated><title type='text'>Innovation Days Presentations</title><content type='html'>Hi Everyone, I am back at my desk after 2 weeks of gruelling travel. The responses I've got from the 6 cities that I've presented in, have made it worth every second spent in planes and at airports and in traffic jams! Here are the locations for the presentations and code snippets used during my sessions:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://deepak.members.winisp.net/ISVInnovationDays/Mar06/Keynote.zip"&gt;Key Note&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://deepak.members.winisp.net/ISVInnovationDays/Mar06/WindowsVista.zip"&gt;Running Well On Windows Vista&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://deepak.members.winisp.net/ISVInnovationDays/Mar06/WPF-E.zip"&gt;"WPF/E" Building Better Web Experiences&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://deepak.members.winisp.net/ISVInnovationDays/Mar06/WPF-E.zip"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9918733-8521487585094514169?l=devfun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devfun.blogspot.com/feeds/8521487585094514169/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9918733&amp;postID=8521487585094514169&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/8521487585094514169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/8521487585094514169'/><link rel='alternate' type='text/html' href='http://devfun.blogspot.com/2007/03/innovation-days-presentations.html' title='Innovation Days Presentations'/><author><name>Deepak</name><uri>http://www.blogger.com/profile/01734304174271996942</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-9918733.post-247470409913354151</id><published>2007-03-01T15:14:00.000+05:30</published><updated>2007-03-01T15:38:52.453+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='launch'/><category scheme='http://www.blogger.com/atom/ns#' term='event'/><category scheme='http://www.blogger.com/atom/ns#' term='technology'/><category scheme='http://www.blogger.com/atom/ns#' term='windows vista'/><category scheme='http://www.blogger.com/atom/ns#' term='office'/><category scheme='http://www.blogger.com/atom/ns#' term='2007'/><title type='text'>Vista + Office dev launch</title><content type='html'>You can download the code that I used for my Windows Vista dev launch session in Delhi and Hyderabad from &lt;a href="http://download.microsoft.com/download/E/1/8/E18906BB-E1EB-4B07-9237-3752D1246607/WindowsVista.zip"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;For more on Guided Help, check out the ACW (active content wizard) &lt;a href="http://blogs.msdn.com/activecontentwizard/"&gt;team blog&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;ACWStudio - the tool that I demoed, is part of Windows Automated Installation Kit which you can grab from &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=c7d4bc6d-15f3-4284-9123-679830d629f2&amp;displaylang=en"&gt;here&lt;/a&gt;. Remember that guided help is not something that you can simply ship as a stand-alone download for your product. Currently, any custom guided help module, can only be deployed as part of your enterprise Windows Vista rollout. We do appreciate your &lt;a href="http://blogs.msdn.com/activecontentwizard/archive/2006/06/20/Guided-Help-SDK.aspx"&gt;feedback&lt;/a&gt; about how you would use guided help if it were to ship as a standalone SDK.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9918733-247470409913354151?l=devfun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devfun.blogspot.com/feeds/247470409913354151/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9918733&amp;postID=247470409913354151&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/247470409913354151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/247470409913354151'/><link rel='alternate' type='text/html' href='http://devfun.blogspot.com/2007/03/vista-dev-launch.html' title='Vista + Office dev launch'/><author><name>Deepak</name><uri>http://www.blogger.com/profile/01734304174271996942</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-9918733.post-113093288795376472</id><published>2005-11-02T17:28:00.000+05:30</published><updated>2007-02-25T18:21:56.133+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='isv india'/><title type='text'>ISV Community Days in November</title><content type='html'>The focus this time will be on Visual Studio Team System, tuning your .NET Framework 2.0 apps for maximum performance and Debugging.&lt;br /&gt;&lt;br /&gt;More details, including information on how to register for these events can be had from &lt;a href="http://www.microsoft.com/india/msdn/isvcommunitydays/"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9918733-113093288795376472?l=devfun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devfun.blogspot.com/feeds/113093288795376472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9918733&amp;postID=113093288795376472&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/113093288795376472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/113093288795376472'/><link rel='alternate' type='text/html' href='http://devfun.blogspot.com/2005/11/isv-community-days-in-november.html' title='ISV Community Days in November'/><author><name>Deepak</name><uri>http://www.blogger.com/profile/01734304174271996942</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-9918733.post-112808396574812610</id><published>2005-09-30T18:06:00.000+05:30</published><updated>2006-11-14T18:38:36.803+05:30</updated><title type='text'>ISV Community Day Presentations</title><content type='html'>You can find the presentations that we used at the recenty concluded ISV Community Days &lt;a href="http://www.microsoft.com/india/msdn/isvcommunitydays/presentations.aspx"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;We are about to start planning the topics we'll cover the next time. If you'd like us to cover something specific do leave me a comment and I'll see if we can include it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9918733-112808396574812610?l=devfun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devfun.blogspot.com/feeds/112808396574812610/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9918733&amp;postID=112808396574812610&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/112808396574812610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/112808396574812610'/><link rel='alternate' type='text/html' href='http://devfun.blogspot.com/2005/09/isv-community-day-presentations.html' title='ISV Community Day Presentations'/><author><name>Deepak</name><uri>http://www.blogger.com/profile/01734304174271996942</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-9918733.post-112687992079626742</id><published>2005-09-16T19:39:00.000+05:30</published><updated>2006-11-14T18:38:36.717+05:30</updated><title type='text'>ISV Community Days are back!</title><content type='html'>Join us to find out how Microsoft can help you move to Visual Studio 2005 and SQL Server 2005. We also spend time exploring the changes made to databinding in Visual Studio 2005 (both WinForms and WebForms).&lt;br /&gt;&lt;br /&gt;Find more details &lt;a href="http://www.microsoft.com/india/msdn/ISVCommunityDays"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9918733-112687992079626742?l=devfun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devfun.blogspot.com/feeds/112687992079626742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9918733&amp;postID=112687992079626742&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/112687992079626742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/112687992079626742'/><link rel='alternate' type='text/html' href='http://devfun.blogspot.com/2005/09/isv-community-days-are-back.html' title='ISV Community Days are back!'/><author><name>Deepak</name><uri>http://www.blogger.com/profile/01734304174271996942</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-9918733.post-112442477414630136</id><published>2005-08-19T09:42:00.000+05:30</published><updated>2006-11-14T18:38:36.636+05:30</updated><title type='text'>Blogger's MS Word add-in</title><content type='html'>I am writing this in Word and using the blogger Word add-in to publish. The add-in (and more details about it) can be had from &lt;a href="http://buzz.blogger.com/bloggerforword.html"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9918733-112442477414630136?l=devfun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devfun.blogspot.com/feeds/112442477414630136/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9918733&amp;postID=112442477414630136&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/112442477414630136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/112442477414630136'/><link rel='alternate' type='text/html' href='http://devfun.blogspot.com/2005/08/bloggers-ms-word-add-in.html' title='Blogger&apos;s MS Word add-in'/><author><name>Deepak</name><uri>http://www.blogger.com/profile/01734304174271996942</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-9918733.post-112427801049101752</id><published>2005-08-17T16:53:00.000+05:30</published><updated>2006-11-14T18:38:36.559+05:30</updated><title type='text'>TechEd Redux</title><content type='html'>If you are in Trivandrum, Kolkata, Ahmedabad or Chandigarh, you can attend TechEd in your city on 18th, 23rd, 24th or 26th August respectively. For more details visit the &lt;a href="http://www.microsoft.com/india/msdn/events/default.aspx"&gt;Tech.Ed on the road&lt;/a&gt; site.&lt;br /&gt;&lt;br /&gt;The agenda can be seen &lt;a href="http://www.microsoft.com/india/msdn/events/agenda.aspx"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9918733-112427801049101752?l=devfun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devfun.blogspot.com/feeds/112427801049101752/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9918733&amp;postID=112427801049101752&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/112427801049101752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/112427801049101752'/><link rel='alternate' type='text/html' href='http://devfun.blogspot.com/2005/08/teched-redux.html' title='TechEd Redux'/><author><name>Deepak</name><uri>http://www.blogger.com/profile/01734304174271996942</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-9918733.post-112054166888462923</id><published>2005-07-05T11:01:00.000+05:30</published><updated>2006-11-14T18:38:36.483+05:30</updated><title type='text'>Compatibility between .NET Framework 1.1 and 2.0</title><content type='html'>With Framework 2.0 around the corner, you will probably consider moving to it. Even if you don't make a move in near future, you might be interested in knowing the various issues that you should keep in mind while developing your 1.1 applications today, so that the migration at a later date is as smooth as possible. I just came across &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnnetdep/html/netfxcompat.asp"&gt;this fantastic article at MSDN&lt;/a&gt;, that address some of these issues.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9918733-112054166888462923?l=devfun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devfun.blogspot.com/feeds/112054166888462923/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9918733&amp;postID=112054166888462923&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/112054166888462923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/112054166888462923'/><link rel='alternate' type='text/html' href='http://devfun.blogspot.com/2005/07/compatibility-between-net-framework-11.html' title='Compatibility between .NET Framework 1.1 and 2.0'/><author><name>Deepak</name><uri>http://www.blogger.com/profile/01734304174271996942</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-9918733.post-112048404529219010</id><published>2005-07-04T19:00:00.000+05:30</published><updated>2006-11-14T18:38:36.401+05:30</updated><title type='text'>ISV Community Days</title><content type='html'>The presentations for this quarter's ISV Community Days are now &lt;a href="http://www.microsoft.com/india/msdn/isvcommunitydays/presentations.aspx"&gt;available for downloads&lt;/a&gt;. The event after touching Chennai, Mumbai and Hyderabad will conclude in Bangalore on 7th July at Le Meridian (we'll start at 10:00 AM).&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9918733-112048404529219010?l=devfun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devfun.blogspot.com/feeds/112048404529219010/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9918733&amp;postID=112048404529219010&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/112048404529219010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/112048404529219010'/><link rel='alternate' type='text/html' href='http://devfun.blogspot.com/2005/07/isv-community-days.html' title='ISV Community Days'/><author><name>Deepak</name><uri>http://www.blogger.com/profile/01734304174271996942</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-9918733.post-111995935333314043</id><published>2005-06-28T17:07:00.000+05:30</published><updated>2006-11-14T18:38:36.336+05:30</updated><title type='text'>Tech Ed 2005, Mobility Session: Links to additional information</title><content type='html'>These are some of the links that you'll find useful if you do mobile development. I found material presented here very useful when preparing for my session:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/library/en-us/dnnetcomp/html/netcfperf.asp"&gt;Measuring .NET Compact Framework Performance&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/stevenpr/archive/2004/07/26/197254.aspx"&gt;Overview of how the Compact Framework GC works&lt;/a&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://weblogs.asp.net/ricom/archive/2003/12/02/40778.aspx"&gt;String vs. StringBuilder&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/romanbat/archive/2005/01/06/348114.aspx"&gt;Generics in .NET Compact Framework&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.bluebytesoftware.com/blog/PermaLink.aspx?guid=88e62cdf-5919-4ac7-bc33-20c06ae539ae"&gt;Finalizers, Dispose etc.&lt;/a&gt; (ok not really Compact Framework but still a great read)&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/mikezintel/archive/2005/03/30/403941.aspx"&gt;.NET Compact Framework Network Performance&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/netcfteam/archive/2005/05/04/414820.aspx"&gt;Performance FAQ&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9918733-111995935333314043?l=devfun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devfun.blogspot.com/feeds/111995935333314043/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9918733&amp;postID=111995935333314043&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/111995935333314043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/111995935333314043'/><link rel='alternate' type='text/html' href='http://devfun.blogspot.com/2005/06/tech-ed-2005-mobility-session-links-to.html' title='Tech Ed 2005, Mobility Session: Links to additional information'/><author><name>Deepak</name><uri>http://www.blogger.com/profile/01734304174271996942</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-9918733.post-111693031672937127</id><published>2005-05-24T15:49:00.000+05:30</published><updated>2006-11-14T18:38:36.241+05:30</updated><title type='text'>The current version of ActiveSync is not supported</title><content type='html'>While developing a Pocket PC or Smartphone application using Visual Studio 2005 Beta 2, you might get the following error:&lt;br /&gt;&lt;br /&gt;"The current version of ActiveSync is not supported"&lt;br /&gt;&lt;img width="600" height="84" src="http://deepak.members.winisp.net/blog/images/techie/activesync2.jpg"&gt;&lt;br /&gt;&lt;br /&gt;You'll also get this error when you try to connect to your device via Tools -&gt; Connect to Device...&lt;br /&gt;&lt;img src="http://deepak.members.winisp.net/blog/images/techie/activesync.jpg"&gt;&lt;br /&gt;&lt;br /&gt;This happens because (as the error message rightly informs us) you don't have the latest version of ActiveSync installed. The latest "public" version is 3.8, while Visual Studio 2005 requires version 4.0. Microsoft has recently made the developer preview of ActiveSync 4.0 available, which can be downloaded from &lt;A href="http://download.microsoft.com/download/c/4/5/c45f8f83-6383-43d7-840b-cb9638484e4d/setup.exe"&gt;here&lt;/a&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9918733-111693031672937127?l=devfun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devfun.blogspot.com/feeds/111693031672937127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9918733&amp;postID=111693031672937127&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/111693031672937127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/111693031672937127'/><link rel='alternate' type='text/html' href='http://devfun.blogspot.com/2005/05/current-version-of-activesync-is-not.html' title='The current version of ActiveSync is not supported'/><author><name>Deepak</name><uri>http://www.blogger.com/profile/01734304174271996942</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-9918733.post-111561192392561546</id><published>2005-05-09T09:40:00.000+05:30</published><updated>2006-11-14T18:38:36.151+05:30</updated><title type='text'>SQL Server 2000 SP4</title><content type='html'>SQL Server 2000 SP4 is now available. Get it from:&lt;br /&gt;&lt;a href="http://www.microsoft.com/sql/downloads/2000/sp4.asp"&gt;http://www.microsoft.com/sql/downloads/2000/sp4.asp&lt;/a&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9918733-111561192392561546?l=devfun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devfun.blogspot.com/feeds/111561192392561546/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9918733&amp;postID=111561192392561546&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/111561192392561546'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/111561192392561546'/><link rel='alternate' type='text/html' href='http://devfun.blogspot.com/2005/05/sql-server-2000-sp4.html' title='SQL Server 2000 SP4'/><author><name>Deepak</name><uri>http://www.blogger.com/profile/01734304174271996942</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-9918733.post-111209526428963349</id><published>2005-03-29T16:45:00.000+05:30</published><updated>2006-11-14T18:38:36.062+05:30</updated><title type='text'>Country from IP</title><content type='html'>In a web application, it’s often useful to be able to find out the geographic location of your visitors. For instance, you could use that data to either render the page in a language native to that geography or you could supply user with geographically relevant information. (Google for instance redirects you to google.co.in if you are coming from an IP that belongs to an ISP in India). There are of course caveats – the user might be coming from behind a proxy server which is different from his actual geography. (Often happens to me at work!). Worse still the user could be traveling and checking your website from a cybercafé in Thailand. There are ways you can handle these exceptions gracefully but for now let’s focus on finding user’s country given his IP. &lt;br /&gt;&lt;br /&gt;First of all you need to get hold of the IP to Country database. You can obtain it in CSV format from: &lt;a href="http://ip-to-country.webhosting.info/" target="_blank"&gt;http://ip-to-country.webhosting.info/&lt;/a&gt; (thanks &lt;a href="http://mvark.blogspot.com" target="_blank"&gt;Anil&lt;/a&gt;). The database is updated regularly and you should check for updates every month or so. The database contains a series of IP ranges and the country corresponding to each range. You can import it (DTS) into SQL Server. Your table could look something like:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;CREATE TABLE [pubs].[dbo].[ip-to-country] (&lt;br /&gt;[StartIP] bigint NULL, &lt;br /&gt;[EndIP] bigint NULL, &lt;br /&gt;[CountryCode] varchar (2) NULL, &lt;br /&gt;[CountryCodeThreeLetter] varchar (3) NULL, &lt;br /&gt;[CountryName] varchar (100) NULL&lt;br /&gt;)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Note that we are using &lt;b&gt;bigint&lt;/b&gt; data type for the IP data since the IP addresses in the csv file are &lt;i&gt;not&lt;/i&gt; in the dotted decimal notation. Once you have the data in this table, you can simply use the stored procedure below to find the country corresponding to an IP (ok so this is not the most elegant piece of t-sql you’ll see but then t-sql has never been my strong point):&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;create function dbo.IPToCountry (@ip as varchar(15))&lt;br /&gt;returns varchar(30)&lt;br /&gt;as&lt;br /&gt;  begin&lt;br /&gt; declare @country varchar(30)&lt;br /&gt;&lt;br /&gt; --declare @ip as varchar(15)&lt;br /&gt; --set @ip = '202.54.0.1'&lt;br /&gt; &lt;br /&gt; declare @count1 as int&lt;br /&gt; declare @count2 as int&lt;br /&gt; &lt;br /&gt; set @count1 = 0&lt;br /&gt; set @count2 = 0&lt;br /&gt; &lt;br /&gt; declare @value as bigint&lt;br /&gt; declare @tempvalue as bigint&lt;br /&gt; &lt;br /&gt; set @count1 = charindex('.',@ip)&lt;br /&gt; &lt;br /&gt; set @tempvalue = substring(@ip,1,@count1-1)&lt;br /&gt; set @value = @tempvalue * power(2,24)&lt;br /&gt; &lt;br /&gt; set @count2 = @count1 + 1&lt;br /&gt; set @count1 = charindex('.',@ip,@count2)&lt;br /&gt; &lt;br /&gt; set @tempvalue = substring(@ip,@count2,@count1-@count2)&lt;br /&gt; set @value = @value + (@tempvalue * power(2,16))&lt;br /&gt; &lt;br /&gt; set @count2 = @count1 + 1&lt;br /&gt; set @count1 = charindex('.',@ip,@count2)&lt;br /&gt; &lt;br /&gt; set @tempvalue = substring(@ip,@count2,@count1-@count2)&lt;br /&gt; set @value = @value + (@tempvalue * power(2,8))&lt;br /&gt; &lt;br /&gt; set @count2 = @count1 + 1&lt;br /&gt; &lt;br /&gt; set @tempvalue = substring(@ip,@count2,1+len(@ip)-@count2 )&lt;br /&gt; set @value = @value + (@tempvalue * power(2,0))&lt;br /&gt; &lt;br /&gt; --select @value&lt;br /&gt; &lt;br /&gt; select &lt;br /&gt;  @country=CountryName&lt;br /&gt; from&lt;br /&gt;  [ip-to-country]&lt;br /&gt; where&lt;br /&gt;  @value &gt;=StartIP and @value &lt;=EndIP&lt;br /&gt;&lt;br /&gt; return @country&lt;br /&gt;  end&lt;br /&gt;go&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;Sometime later I’ll post a quick console application that allows you to lookup country from IP without using a database in the backend.&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9918733-111209526428963349?l=devfun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devfun.blogspot.com/feeds/111209526428963349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9918733&amp;postID=111209526428963349&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/111209526428963349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/111209526428963349'/><link rel='alternate' type='text/html' href='http://devfun.blogspot.com/2005/03/country-from-ip.html' title='Country from IP'/><author><name>Deepak</name><uri>http://www.blogger.com/profile/01734304174271996942</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-9918733.post-111079511750371331</id><published>2005-03-14T15:35:00.000+05:30</published><updated>2006-11-14T18:38:35.934+05:30</updated><title type='text'>VSTO Workshop</title><content type='html'>You can find the code snippets used during the VSTO workshop in Bangalore on Saturday &lt;a href="http://deepak.members.winisp.net/lab.zip"&gt;here&lt;/a&gt;. A few of you asked about the complete process by which an office document loads an assembly and executes it. This slide sheds light on it:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://deepak.members.winisp.net/blog/images/techie/vsto.jpg"&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9918733-111079511750371331?l=devfun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devfun.blogspot.com/feeds/111079511750371331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9918733&amp;postID=111079511750371331&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/111079511750371331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/111079511750371331'/><link rel='alternate' type='text/html' href='http://devfun.blogspot.com/2005/03/vsto-workshop.html' title='VSTO Workshop'/><author><name>Deepak</name><uri>http://www.blogger.com/profile/01734304174271996942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9918733.post-110794955017681617</id><published>2005-02-09T16:31:00.000+05:30</published><updated>2006-11-14T18:38:35.837+05:30</updated><title type='text'>Globalization Workshop</title><content type='html'>I finished conducted the first software globalization and localization workshop yesterday. The presentations, lab walkthroughs and code samples used during the workshop can be found &lt;a href="http://www.microsoft.com/india/msdn/isv/globalization/"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;One addendum to the above content is designing WinForms application for Middle-Eastern market (for use with BiDi scripts). To fully support RTL (Right To Left) locales such as Arabic, you need to set the RightToLeft property of your form to Yes. In addition you need to enable "mirroring". Unfortunately there is no System.Windows.Forms property that corresponds to mirroring. But you can easily achieve it by overriding the CreateParams property:&lt;br /&gt;&lt;!-- Code --&gt;&lt;br /&gt;&lt;span class="fixed"&gt;&lt;br /&gt;Protected Overrides ReadOnly Property CreateParams()As&lt;br&gt;System.Windows.Forms.CreateParams&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Get&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'Retrieve the CreateParams class to change the style&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Dim CP As System.Windows.Forms.CreateParams&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CP = MyBase.CreateParams&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'If the control needs RTL add these styles&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;If _Mirrored Then&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CP.ExStyle = CP.ExStyle Or &amp;H400000 Or &amp;H100000&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;End If&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Return CP&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;End Get&lt;br&gt;End Property&lt;br&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;!--Code--&gt;&lt;br /&gt;&lt;br /&gt;&lt;!--Code--&gt;&lt;br /&gt;In C# you do the same as:&lt;br /&gt;&lt;br /&gt;&lt;span class="fixed"&gt;&lt;br /&gt;protected override CreateParams CreateParams&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;get&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;CreateParams cp = base.CreateParams;&lt;br /&gt;&amp;nbsp;&amp;nbsp;if(_Mirrored)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CreateParams cp = base.CreateParams;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cp.ExStyle = cp.ExStyle | 0x400000 | 0x100000;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;return cp;&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;}&lt;br&gt;&lt;br /&gt;&lt;!--Code--&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;*minor modifications made to the code on 6 May 05, thanks Anonymous!&lt;br /&gt;&lt;br /&gt;This is what your form would appear like once it is "mirroring" correctly:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/deepakg/4505838/" title="Photo Sharing"&gt;&lt;img src="http://photos4.flickr.com/4505838_a396f8d6ae_o.gif" border="0" width="319" height="307" alt="RTLForm" /&gt;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Here some links that are &lt;b&gt;must visit&lt;/b&gt; if software globalization/localization is your cup of tea:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/globaldev/"&gt;Microsoft Global Development Website&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/middleeast/msdn/arabicsupp.aspx"&gt;Arabic Support in Visual Studio&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://www.microsoft.com/middleeast/msdn/arabicsupp.aspx"&gt;Michael Kaplan's Blog&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9918733-110794955017681617?l=devfun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devfun.blogspot.com/feeds/110794955017681617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9918733&amp;postID=110794955017681617&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/110794955017681617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/110794955017681617'/><link rel='alternate' type='text/html' href='http://devfun.blogspot.com/2005/02/globalization-workshop.html' title='Globalization Workshop'/><author><name>Deepak</name><uri>http://www.blogger.com/profile/01734304174271996942</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-9918733.post-110742119561900682</id><published>2005-02-03T14:27:00.000+05:30</published><updated>2006-11-14T18:38:35.735+05:30</updated><title type='text'>Search for a Notepad replacement</title><content type='html'>Without commenting on merits or demerits of Notepad, I'll simply state that I am badly looking for a &lt;b&gt;free&lt;/b&gt; Notepad replacement. I've checked &lt;a href="http://www.flos-freeware.ch/notepad2.html" target="_blank"&gt;Notepad2&lt;/a&gt; and &lt;a href="http://www.notetab.com/ntl.php" target="_blank"&gt;NoteTab Light&lt;/a&gt;, but both of them balked when it came to full Unicode and complex script support. Even when these editors claim Unicode support, they don’t work with Indic/Far-Eastern IMEs (I get ???? when typing).&lt;br /&gt;&lt;br /&gt;Right click in Notepad and pay attention to the last 3 menu items - &lt;b&gt;Right to left reading order&lt;/b&gt;, &lt;b&gt;Show Unicode control characters&lt;/b&gt; and &lt;b&gt;Insert Unicode control characters&lt;/b&gt;. These options are important to me! &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.dotnetjunkies.com/weblog/sriram" target="_blank"&gt;Sriram&lt;/a&gt; pointed me today to &lt;a href="http://syn.sourceforge.net/" target="_blank"&gt;Syn&lt;/a&gt;. While it doesn't do Unicode and doesn't claim to be a Notepad replacement it does show some promise of being my long overdue XEmacs replacement ;-).&lt;br /&gt;&lt;br /&gt;So folks, any ideas? What is that lean, mean, fast notepad replacement that you use (it must satisfy my somewhat esoteric requirements that the original notepad handles so well)?&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9918733-110742119561900682?l=devfun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devfun.blogspot.com/feeds/110742119561900682/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9918733&amp;postID=110742119561900682&amp;isPopup=true' title='17 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/110742119561900682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/110742119561900682'/><link rel='alternate' type='text/html' href='http://devfun.blogspot.com/2005/02/search-for-notepad-replacement.html' title='Search for a Notepad replacement'/><author><name>Deepak</name><uri>http://www.blogger.com/profile/01734304174271996942</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>17</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9918733.post-110619486074810069</id><published>2005-01-20T09:46:00.000+05:30</published><updated>2006-11-14T18:38:35.658+05:30</updated><title type='text'>Welcome back Raj!</title><content type='html'>May I add in a low, menacing Agent Smith voice - "we missed you!". Those of you who know Raj would probably know that he has blogged for a brief interval before but just when things were getting nicely warmed up he pulled the plug :-(.. Well, he is back again - &lt;a href="http://spaces.msn.com/members/rajch/" target="_blank"&gt;here&lt;/a&gt;. Hope you'll be around for a while this time Raj!&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9918733-110619486074810069?l=devfun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devfun.blogspot.com/feeds/110619486074810069/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9918733&amp;postID=110619486074810069&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/110619486074810069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/110619486074810069'/><link rel='alternate' type='text/html' href='http://devfun.blogspot.com/2005/01/welcome-back-raj.html' title='Welcome back Raj!'/><author><name>Deepak</name><uri>http://www.blogger.com/profile/01734304174271996942</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-9918733.post-110580701158691794</id><published>2005-01-15T21:52:00.000+05:30</published><updated>2006-11-14T18:38:35.588+05:30</updated><title type='text'>Retro...</title><content type='html'>While playing with different shades of blue I came up with two designs which look very "Austin Poweresesque". Do try setting them as your tiled wallpaper (which is if you are feeling retro too!)&lt;br /&gt;&lt;br /&gt;&lt;img src="http://deepak.members.winisp.net/blog/images/wallpaper.jpg"&gt;&lt;br /&gt;&lt;br&gt;&lt;br /&gt;&lt;img src="http://deepak.members.winisp.net/blog/images/retro2.jpg"&gt;&lt;br /&gt;&lt;br /&gt;Experimenting with different colors is turning out to be one of my latest hobbies.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Technical Notes: The latest version of &lt;a href="http://www.jasc.com/" target="_blank"&gt;Paint Shop Pro&lt;/a&gt; has an interesting feature whereby you can mix two colors on a palette like you would when painting in real life. You can always choose colors the normal "computer" way, i.e. by specifying their RGB or HSL values but the ability to blend colors in this way, adds an interesting dimension to the whole experience.&lt;/i&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9918733-110580701158691794?l=devfun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devfun.blogspot.com/feeds/110580701158691794/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9918733&amp;postID=110580701158691794&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/110580701158691794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/110580701158691794'/><link rel='alternate' type='text/html' href='http://devfun.blogspot.com/2005/01/retro.html' title='Retro...'/><author><name>Deepak</name><uri>http://www.blogger.com/profile/01734304174271996942</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-9918733.post-110561552487009753</id><published>2005-01-13T16:05:00.000+05:30</published><updated>2006-11-14T18:38:35.499+05:30</updated><title type='text'>Checking for presence of Indic support from .NET</title><content type='html'>The CultureInfo class under the System.Globalization namespace is indispensable when writing applications that require Globalization/Localization support. To create an instance of this class, you simply pass the name of the culture; e.g. to create an instance of hi-IN culture, I will do something like this:&lt;br /&gt;&lt;br /&gt;&lt;span class="fixed"&gt;&lt;br /&gt;CultureInfo ciHindi = new CultureInfo("hi-IN");&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There are other CultureInfo constructors too for example there is one which takes the LCID of the culture you are interested in. So the above snippet could also be written as:&lt;br /&gt;&lt;br /&gt;&lt;span class="fixed"&gt;&lt;br /&gt;CultureInfo ciHindi = new CultureInfo(1081);&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;On English version of Windows - one most widespread in India - Indic and Far-Eastern language support needs to be installed separately from Control Panel:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://deepak.members.winisp.net/blog/images/techie/Regional.gif"&gt;&lt;br /&gt;&lt;br /&gt;If you do not have Indic support enabled, the user might get issues when displaying Indian language characters (e.g. trying to display CultureInfo.LocalName will simply show you a string of boxes). It might be a good idea to prompt the user to enable Indic support prior to running your application. Here is how you can check for its presence on a client machine:&lt;br /&gt;&lt;br /&gt;&lt;div class="fixed" style="text-align:left"&gt;&lt;br /&gt;using System;&lt;br&gt;using System.Globalization;&lt;br&gt;&lt;br&gt;public class SamplesCultureInfo&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public static void Main()&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bool bIndicInstalled = false;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Displays several properties of the neutral cultures.&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;foreach ( CultureInfo ci in CultureInfo.GetCultures( CultureTypes.InstalledWin32Cultures ) )  &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(ci.LCID == 1081) //hi-IN - since all Indic cultures are installed en-masse, &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;      //presence of one indicates presence of others too&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bIndicInstalled = true;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(bIndicInstalled)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&amp;quot;Indic support is present on this machine&amp;quot;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Console.WriteLine(&amp;quot;Indic support absent from this machine&amp;quot;);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;}&lt;br&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9918733-110561552487009753?l=devfun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devfun.blogspot.com/feeds/110561552487009753/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9918733&amp;postID=110561552487009753&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/110561552487009753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/110561552487009753'/><link rel='alternate' type='text/html' href='http://devfun.blogspot.com/2005/01/checking-for-presence-of-indic-support.html' title='Checking for presence of Indic support from .NET'/><author><name>Deepak</name><uri>http://www.blogger.com/profile/01734304174271996942</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-9918733.post-110551078599498847</id><published>2005-01-12T11:40:00.000+05:30</published><updated>2006-11-14T18:38:35.426+05:30</updated><title type='text'>Tooltips Redux</title><content type='html'>I had spoken a few days ago about tooltips in Web-UIs. They have one small shortcoming – you cannot control the visual appearance of the tooltip. The system default settings apply to your tooltip. There is (there usually always is!) a workaround. IE 5 had introduced a new technology called “behaviors”. In their simplest avatar, a behavior could be just a jscript file with the .htc extension. But there is more to behaviors, and I’d rather have you read about them &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndhtml/html/ie5behave.asp" target="_blank"&gt;here.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So why this digression from tooltips to behaviors? Well because there is a sample behavior that you can download from MSDN which gives you total control over appearance of your tooltips - they can contain HTML markup. This can come in especially handy when you are trying to show Indian scripts in a tooltip, which typically require slightly larger font for them to be legible. Here is &lt;a href="http://deepak.members.winisp.net/tooltip.htm" target="_blank"&gt;an example&lt;/a&gt; (Thanks &lt;a href="http://www.extremeexperts.com" target="_blank"&gt;Vinod&lt;/a&gt; for supplying me with Tamizh translation!). More details about the tooltip behavior can be had from &lt;a href="http://msdn.microsoft.com/library/default.asp?url=/workshop/author/behaviors/library/tooltip/tooltip.asp" target="_blank"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Behaviors are close to 5 years old but can be used creatively with ASP.NET for creating some interesting UIs. (Hint: The &lt;a href="http://msdn.microsoft.com/workshop/webcontrols/overview/overview.asp" target="_blank"&gt;IE Webcontrols&lt;/a&gt; use them internally). I’ll talk about an interesting use in one of my future posts shortly.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9918733-110551078599498847?l=devfun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devfun.blogspot.com/feeds/110551078599498847/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9918733&amp;postID=110551078599498847&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/110551078599498847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/110551078599498847'/><link rel='alternate' type='text/html' href='http://devfun.blogspot.com/2005/01/tooltips-redux.html' title='Tooltips Redux'/><author><name>Deepak</name><uri>http://www.blogger.com/profile/01734304174271996942</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-9918733.post-110534077142427098</id><published>2005-01-10T13:27:00.000+05:30</published><updated>2006-11-14T18:38:35.349+05:30</updated><title type='text'>Converting ISCII to Unicode</title><content type='html'>The usage of computers proliferated into non-English speaking nations much before a unified global standard for representing data (Unicode) took shape. Different countries adopted different approaches to encoding data – most notable of them being the DBCS/MBCS we see for far-eastern languages (such as Simplified/Traditional Chinese, Japanese etc.). The idea was this – two characters of 1 byte each (between 128-255) when interpreted together designated one character – e.g. you combining Ê (0xCA) and ¯ (0xAF) gives you the ideogram for stone: 石 (Unicode 0x77F3) in Simplified Chinese. The system besides being prone to programming errors had some limitations – because the same lead-byte, trail-byte combination, depending on which “codepage” you are looking at ,can represent multiple languages, it is not possible to have documents with more than one far-eastern language (e.g. the same lead-byte (0xCA) trail-byte (0xAF) sequence gives you坒 (Unicode 0x5752) under Traditional Chinese codepage – two totally different characters!).&lt;br /&gt;&lt;br /&gt;In India too, we had a similar indigenous encoding schemes, the most widespread of them being ISCII (Indian Script Code for Information Interchange) – the idea is very similar in that you use characters between 128-255 to denote Indian language characters. Depending on the ISCII encoding you chose, the same set of bytes could represent a different language. &lt;br /&gt;&lt;br /&gt;The Encoding class in .NET allows you to convert between these encodings and Unicode. Recently while having a discussion with &lt;a href="http://www.vishvakannada.com" target="_blank"&gt;Dr. Pavanaja&lt;/a&gt;, it occurred to me that you can use the Encoding class to also do the conversion from ISCII to Unicode. &lt;br /&gt;&lt;br /&gt;Let’s see an example (I chose to write it as a web-page and not a console app because the final Unicode result will not show up on console):&lt;br /&gt;&lt;br /&gt;&amp;lt;%@Page Language=&amp;quot;C#&amp;quot;%&amp;gt;&lt;br /&gt;&amp;lt;%@Import Namespace=&amp;quot;System.Text&amp;quot;%&amp;gt;&lt;br /&gt;&amp;lt;%@Import Namespace=&amp;quot;System.Globalization&amp;quot;%&amp;gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;script runat=&amp;quot;server&amp;quot;&amp;gt;&lt;br /&gt;void Page_Load(Object o, EventArgs e)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//Response.Write(&amp;quot;Hello World&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Encoding encFrom = Encoding.GetEncoding(1252);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Encoding encTo = Encoding.GetEncoding(57008);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String str = &amp;quot;ØÛÆèÄÜ&amp;quot;;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//Get it into a byte array...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Byte[] b = encFrom.GetBytes(str);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String strUnicode = encTo.GetString(b);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Response.Write(strUnicode);&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;57002 denotes the ISCII Hindi Encoding. Other ISCII Encodings are:&lt;br /&gt;&lt;br /&gt;&lt;table style="margin-top:-630px;margin-bottom:0px;border:1px solid black;border-collapse:collapse" border="1" bordercolor="#000000"&gt;&lt;br /&gt;&lt;tbody&gt;&lt;tr&gt;&lt;br /&gt;&lt;th&gt;Codepage&lt;/th&gt;&lt;br /&gt;&lt;th&gt;Name&lt;/th&gt;&lt;th&gt;Language&lt;/th&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;57002&lt;/td&gt;&lt;br /&gt;&lt;td&gt;x-iscii-de&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Devnagri&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;57003&lt;/td&gt;&lt;br /&gt;&lt;td&gt;x-iscii-be&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Bengali&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;57004&lt;/td&gt;&lt;br /&gt;&lt;td&gt;x-iscii-ta&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Tamizh&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;57005&lt;/td&gt;&lt;br /&gt;&lt;td&gt;x-iscii-te&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Telugu&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;57006&lt;/td&gt;&lt;br /&gt;&lt;td&gt;x-iscii-as&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Assamese&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;57007&lt;/td&gt;&lt;br /&gt;&lt;td&gt;x-iscii-or&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Oriya&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;57008&lt;/td&gt;&lt;br /&gt;&lt;td&gt;x-iscii-ka&lt;/td&gt;&lt;br /&gt;&lt;td&gt;Kannada&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;'ØÛÆèÄÜ' is an Indic String – with the right software/font you should be able to view it. You can also create an HTML document (thanks agin to Dr. Pavanaja for the tip!) with the following Meta tag, to view the contents of the ISCII string without explicitly doing conversion to Unicode (though IE does it internally for you before rendering it using the sytem installed Indic Open-Type fonts):&lt;br /&gt;&lt;br /&gt;&amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=x-iscii-de&amp;quot;&amp;gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9918733-110534077142427098?l=devfun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devfun.blogspot.com/feeds/110534077142427098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9918733&amp;postID=110534077142427098&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/110534077142427098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/110534077142427098'/><link rel='alternate' type='text/html' href='http://devfun.blogspot.com/2005/01/converting-iscii-to-unicode.html' title='Converting ISCII to Unicode'/><author><name>Deepak</name><uri>http://www.blogger.com/profile/01734304174271996942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9918733.post-110510676806232191</id><published>2005-01-07T19:31:00.000+05:30</published><updated>2006-11-14T18:38:35.267+05:30</updated><title type='text'>Tooltips</title><content type='html'>Tooltips can be a useful element even in Web UIs. For most tags you can specify the &lt;i&gt;title&lt;/i&gt; attribute which gets rendered as a tooltip for that tag by IE. For the img tag, the &lt;i&gt;alt&lt;/i&gt; attribute acts as its tooltip, but in case you also supply a &lt;i&gt;title&lt;/i&gt; attribute, it overrides the value of the &lt;i&gt;alt&lt;/i&gt; attribute.&lt;br /&gt;&lt;br /&gt;Let’s look at yesterday’s example with &lt;a href="http://deepak.members.winisp.net/EllipsisToolTip.htm" target="_blank"&gt;tooltips enabled&lt;/a&gt;. I have also set the &lt;i&gt;table-layout&lt;/i&gt; of our table’s style to &lt;i&gt;fixed &lt;/i&gt;, so you no longer need another div inside the td (do a view source – that should clear things up a bit)&lt;br /&gt;&lt;br /&gt;Have a great Weekend!&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9918733-110510676806232191?l=devfun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devfun.blogspot.com/feeds/110510676806232191/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9918733&amp;postID=110510676806232191&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/110510676806232191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/110510676806232191'/><link rel='alternate' type='text/html' href='http://devfun.blogspot.com/2005/01/tooltips.html' title='Tooltips'/><author><name>Deepak</name><uri>http://www.blogger.com/profile/01734304174271996942</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-9918733.post-110499478775433818</id><published>2005-01-06T13:23:00.000+05:30</published><updated>2006-11-14T18:38:35.171+05:30</updated><title type='text'>Ellipsis...</title><content type='html'>It is common to have user interfaces that clip overflowing text and display ellipsis where the text crops. When you move your cursor over the clipped text, you will typically get a tooltip displaying the complete text. Since it is widely accepted that pictures are worth a thousand words, let me share a screenshot (of my Internet Explorer Bookmark pane – pressing Ctrl + I gets you there) to illustrate my point:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://deepak.members.winisp.net/blog/images/techie/cropping.gif" /&gt;&lt;br /&gt;&lt;br /&gt;You can implement a similar UI in your web-based applications, by using the CSS text-overflow attribute. This is what you need to do:&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Ensure that the text you want to clip is encapsulated in &amp;lt;nobr&gt; &amp;lt;/nobr&amp;gt; tags or set the &lt;i&gt;white-space&lt;/i&gt; style attribute of the tag containing your text to nowrap&lt;/li&gt;&lt;br /&gt;&lt;li&gt;In the style attribute of your container tag – say div, set the &lt;i&gt;width&lt;/i&gt; attribute to your desired width&lt;/li&gt;&lt;br /&gt;&lt;li&gt;In the style attribute of your container tag, set the &lt;i&gt;text-overflow&lt;/i&gt; attribute to “ellipsis” and &lt;i&gt;overflow&lt;/i&gt; attribute to hidden.&lt;/i&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Let’s see a quick example of this &lt;a href="http://deepak.members.winisp.net/ellipsis.htm" target="_blank"&gt;in action&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Unfortunately, cropping text will not give you tooltips automatically. You can set the title attribute of the div to get the tooltips. Tooltips in web UIs is another interesting topic. I’ll take it up tomorrow!&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9918733-110499478775433818?l=devfun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devfun.blogspot.com/feeds/110499478775433818/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9918733&amp;postID=110499478775433818&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/110499478775433818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/110499478775433818'/><link rel='alternate' type='text/html' href='http://devfun.blogspot.com/2005/01/ellipsis.html' title='Ellipsis...'/><author><name>Deepak</name><uri>http://www.blogger.com/profile/01734304174271996942</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9918733.post-110490002516462772</id><published>2005-01-05T10:05:00.000+05:30</published><updated>2006-11-14T18:38:35.088+05:30</updated><title type='text'>When friendly is not friendly</title><content type='html'>Internet Explorer introduced “Friendly HTTP Error Messages” for certain HTTP errors (400, 403, 404, 405, 406, 408, 409, 410, 500, 501, 505). For instance if your ASP page does something bad that results in HTTP 500 error, IE will typically display a friendly message to the user, which looks something like this:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://deepak.members.winisp.net/blog/images/techie/500.gif"&gt;&lt;br /&gt;&lt;br /&gt;Additionally, the error message might contain other information that was generated by the offending page. If the error message produced by your page is more than 512 bytes (the thresholds are stored in the key HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Main\ErrorThreshold) then IE does not show the friendly error page but the entire output from the webserver as it is. Which is why you might not get these friendly messages when woking with ASP.NET; given the verbose nature of error messages generated by them. &lt;br /&gt;&lt;br /&gt;Friendly or not, as a web developer, IE’s substituted messages might come in the way of debugging your page. They can be disabled from Tools -&gt; Internet Options -&gt; Advanced:&lt;br /&gt;&lt;br /&gt;&lt;img src="http://deepak.members.winisp.net/blog/images/techie/disablefriendly.gif"&gt;&lt;br /&gt;&lt;br /&gt;I use the cluster of 3 radio-buttons (Underline Links) as a landmark to quickly locate the right checkbox in this crowd of checkboxes. &lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9918733-110490002516462772?l=devfun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devfun.blogspot.com/feeds/110490002516462772/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9918733&amp;postID=110490002516462772&amp;isPopup=true' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/110490002516462772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/110490002516462772'/><link rel='alternate' type='text/html' href='http://devfun.blogspot.com/2005/01/when-friendly-is-not-friendly.html' title='When friendly is not friendly'/><author><name>Deepak</name><uri>http://www.blogger.com/profile/01734304174271996942</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>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9918733.post-110482088130106155</id><published>2005-01-04T13:09:00.000+05:30</published><updated>2006-11-14T18:38:34.990+05:30</updated><title type='text'>Automating ftp.exe sessions</title><content type='html'>ftp.exe is a command line tool that you use to connect to ftp servers. What is not very widely known about this tool is that it allows you to automate an ftp session by supplying a script which has the relevant ftp commands.&lt;br /&gt;&lt;br /&gt;Let’s say we need to logon to the host – ftp.yourhost.com and download all the files in the dump directory on the server, we would first create a simple text file – say commands.txt which look something like this:&lt;br /&gt;&lt;br /&gt;&lt;span class="fixed"&gt;&lt;br /&gt;o ftp.yourhost.com&lt;br /&gt;user username&lt;br /&gt;pass password&lt;br /&gt;cd dump&lt;br /&gt;bin&lt;br /&gt;prompt&lt;br /&gt;mget *.*&lt;br /&gt;close&lt;br /&gt;quit&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Then when using ftp.exe from command prompt, we can supply this text file as an argument to it:&lt;br /&gt;&lt;br /&gt;ftp –s:commands.txt&lt;br /&gt;&lt;br /&gt;that should do it!&lt;br /&gt;&lt;br /&gt;Also see: &lt;a href="http://support.microsoft.com/?kbid=96269" target="_blank"&gt;Using FTP Batch Scripts&lt;/a&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9918733-110482088130106155?l=devfun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devfun.blogspot.com/feeds/110482088130106155/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9918733&amp;postID=110482088130106155&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/110482088130106155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/110482088130106155'/><link rel='alternate' type='text/html' href='http://devfun.blogspot.com/2005/01/automating-ftpexe-sessions.html' title='Automating ftp.exe sessions'/><author><name>Deepak</name><uri>http://www.blogger.com/profile/01734304174271996942</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-9918733.post-110475126167946476</id><published>2005-01-03T16:50:00.000+05:30</published><updated>2006-11-14T18:38:34.905+05:30</updated><title type='text'>The customary Hello World!</title><content type='html'>I started blogging some 18 months ago. There are things about technology in general and computers in particular that I’d love to write about, but given the general nature of posts in the &lt;a href="http://deepakg.blogspot.com/" target="_blank"&gt;other blog&lt;/a&gt;, I decided to keep material of technical nature away from it. There were attempts, half-attempts, failed attempts at starting a technical blog; none materialized into a blog URL I could attest my name to. &lt;br /&gt;&lt;br /&gt;My friend &lt;a href="http://www.dotnetindia.com/" target="_blank"&gt;Anand&lt;/a&gt; – who incidentally was the one who initiated me to Blogging, was kind to extend me an offer to blog with him jointly. I made all but two posts and got entrenched in quagmire of things at work that kept me off from it. My sincerest apologies Anand!&lt;br /&gt;&lt;br /&gt;While spending 8 days of vacation where I tried diligently avoiding computers, it became clear to me that I still fundamentally love computers (distance makes hearts grow fonder ;-)) – and more importantly I love sharing all the exciting things that I discover or do (with them, on them, to them ;-)). So here it is - another entry to the technical blogsphere. I hope, especially if you’ve read so far, that you’ll find the stuff I post in future, worth your time! &lt;br /&gt;&lt;br /&gt;Now to address a question, which I prognosticate will be certainly asked of me tomorrow – why Blogger. Don’t you work for MS – and so aren’t you supposed to show your allegiance by using &lt;a href="http://spaces.msn.com" target="_blank"&gt;spaces.msn.com&lt;/a&gt;? Aren’t you being perfidious!?&lt;br /&gt;&lt;br /&gt;space.msn.com are great – especially in the light of the fact that they are in v. 1.0. But I find them limiting in the regard that they don’t allow me to edit their HTML templates. I am a DHTML geek at heart and it hurts me to not tweak the defaults. The boxes you see on this blog (on your right), are built using inline jscript generated by an ASP.NET page, residing on anther server, which is querying amzon web-services and is fetching meta-data of my books and CDs in real-time – that kind of stuff just wouldn’t have been possible. Then there is an even more fundamental issue of aesthetics – I just can’t get myself to like either msn’s default font or any of the bundled image-background templates. That should settle it. It is not a downright repudiation of spaces.msn.com, but a conscious choice based on a set of reasons.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9918733-110475126167946476?l=devfun.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://devfun.blogspot.com/feeds/110475126167946476/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=9918733&amp;postID=110475126167946476&amp;isPopup=true' title='17 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/110475126167946476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9918733/posts/default/110475126167946476'/><link rel='alternate' type='text/html' href='http://devfun.blogspot.com/2005/01/customary-hello-world.html' title='The customary Hello World!'/><author><name>Deepak</name><uri>http://www.blogger.com/profile/01734304174271996942</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>17</thr:total></entry></feed>
