<?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-8758373</id><updated>2011-04-22T03:49:13.552+05:30</updated><title type='text'>My Potential My Passion</title><subtitle type='html'>You are never given a wish, without also being given the power to make it come true - Richard Bach</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sarangdatye.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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>44</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8758373.post-116461945134772291</id><published>2006-11-27T13:06:00.000+05:30</published><updated>2006-11-27T14:54:11.886+05:30</updated><title type='text'>WINDOWS VISTA + IIS7 + VS2005 = Confusion</title><content type='html'>With Windows Vista Ultimate decorating my laptop, I decided to open up an existing VS2005 web project (based on HTTP and not FileSystem) and as expected it didn't go smooth! I got an error saying "Unable to open web. The web server does not appear to have frontpage server extensions installed". After a quick bit of research (another name for googling), I found a solution which will benefit all. Here's what one should do to ensure that the project gets loaded:&lt;br /&gt;&lt;br /&gt;1. First an foremost, IIS6 compatiblity needs to be enabled. There is no frontpage server extension now. In IIS7 we will have Sharepoitn Designer and Expression Web Designer. To enable compatibility with IIS6 go to &lt;strong&gt;Control Panel&lt;/strong&gt; --&gt; &lt;strong&gt;Programs&lt;/strong&gt; --&gt; &lt;strong&gt;Programs and Features&lt;/strong&gt; --&gt; &lt;strong&gt;Turn Windows features on or off&lt;/strong&gt;. In the resulting dialog box, under &lt;strong&gt;Internet Information Services&lt;/strong&gt;, navigate to &lt;strong&gt;Web Management Tools&lt;/strong&gt; enable &lt;strong&gt;IIS6 Management Compatiblity&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;2. Next you need to run VS2005 with elevated privileges. Only then you will get access to IIS.  To do that right click the VS studio 2005 icon in Start --&gt; Programs --&gt; Microsoft Visual Studio 2005 and open Properties. Click on the Advanced button and check "Run as Administrator" and then click ok.&lt;br /&gt;&lt;br /&gt;3. Now launch VS2005 using this shortcut with elevated privileges and open the website that earlier didnt open.&lt;br /&gt;&lt;br /&gt;It should open this time without issues!!!&lt;br /&gt;&lt;br /&gt;One thing that's torturing my mind is, how secure is it to run devenv in elevated privileges!!!??&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-116461945134772291?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/116461945134772291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/116461945134772291'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2006/11/windows-vista-iis7-vs2005-confusion.html' title='WINDOWS VISTA + IIS7 + VS2005 = Confusion'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-116377242186245728</id><published>2006-11-17T19:06:00.000+05:30</published><updated>2006-11-17T19:37:01.923+05:30</updated><title type='text'>Threading enhanced in 2.0 - Part II</title><content type='html'>This in continuation to my previous post where I wrote about ParameterizedThreadStart delegate. Well, there's more stuff added to the Thread class in .NET 2.0.&lt;br /&gt;&lt;br /&gt;Remember the Thread.Abort method?? We know how messy things can get by calling this method! Imagine a situation where, we are in the middle of a particular process and we initiate a Thread.Abort. The thread will abort then-n-there and a ThreadAbortException will be thrown. The thread mechanism doesn't know where to exactly abort the thread so much so that, the integrity of the system is not harmed! Doing an abort in an unpredictable way can have serious implications on the behavior of the system and can leave the appdomain in an inconsistent state.&lt;br /&gt;&lt;br /&gt;In .NET 2.0, again we have a savior! The BeginCriticalRegion and EndCriticalRegion methods. These are two static methods which engulf a critical section of code where-in a thread abort shouldn't happen in any case. The region that lies withing these 2 methods must be executed under any circumstance. After EndCriticalRegion() ....well we get a ThreadAbortException as usual.&lt;br /&gt;&lt;br /&gt;Just for the sake of thought:&lt;br /&gt;&lt;br /&gt;Why are these methods and not just blocks like the using{} block in c#?&lt;br /&gt;&lt;br /&gt;So, instead of writing:&lt;br /&gt;&lt;br /&gt;                BeginCriticalRegion();&lt;br /&gt;&lt;br /&gt;                           SomeCriticalStatement1;&lt;br /&gt;                           SomeCriticalStatement2;&lt;br /&gt;&lt;br /&gt;               EndCriticalRegion();&lt;br /&gt;&lt;br /&gt;We could have written:&lt;br /&gt;&lt;br /&gt;             CriticalRegion&lt;br /&gt;            {&lt;br /&gt;                           SomeCriticalStatement1;&lt;br /&gt;                           SomeCriticalStatement2;&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Comments are welcome!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-116377242186245728?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/116377242186245728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/116377242186245728'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2006/11/threading-enhanced-in-20-part-ii.html' title='Threading enhanced in 2.0 - Part II'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-116367811989079089</id><published>2006-11-16T17:13:00.000+05:30</published><updated>2006-11-16T17:25:19.903+05:30</updated><title type='text'>Threading enhanced in 2.0</title><content type='html'>Here's a cool thing. In .NET 1.1 we had a threadstart delegate which could execute a method on a different thread. Well...this was good as long as the method didn't have any parameters!! But what if we would like to share data or pass some data to the thread!? Worry not my friend..ParameterizedThreadStart has come to aid in .NET 2.0&lt;br /&gt;&lt;br /&gt;There is a new delegate called ParameterizedThreadStart, declared as:&lt;br /&gt;&lt;br /&gt;[ComVisibleAttribute(false)]&lt;br /&gt;public delegate void ParameterizedThreadStart (Object obj)&lt;br /&gt;&lt;br /&gt;This delegate take a single paramater of type object and returns void. Essentially this parameter takes in data that is to be passed to a parameterized method which is to be invoked on a different thread.&lt;br /&gt;&lt;br /&gt;So now doing something like this is possible:&lt;br /&gt;&lt;br /&gt;public void DisplayHello(string name)&lt;br /&gt;{&lt;br /&gt;        Console.WriteLine ("Hello " + name);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;ParameterizedThreadStart objPTS = new ParameterizedThreadStart(DisplayHello);&lt;br /&gt;Thread objthread = new Thread(objPTS);&lt;br /&gt;&lt;br /&gt;objThread.Start("Sarang");&lt;br /&gt;&lt;br /&gt;This is cool ain't it?? Just for the sake of thought - would it have be a good thing to provide a param array of type - object, instead of a single object as a parameter to the ParameterizedThreadStart delegate??&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-116367811989079089?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/116367811989079089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/116367811989079089'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2006/11/threading-enhanced-in-20.html' title='Threading enhanced in 2.0'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-115918402668120544</id><published>2006-09-25T16:38:00.000+05:30</published><updated>2006-09-25T17:03:46.693+05:30</updated><title type='text'>Deserialization in .NET 2.0</title><content type='html'>Deserialization is not new to .NET.  It's as simple as using one of the formatters like BinaryFormatter or SoapFormatter and using the DeSerialize method. What .NET 2.0 adds is a way to initialize deserialized members automatically.&lt;br /&gt;e.g. let's say I have a Order class which is marked as serializable:&lt;br /&gt;[Serializable]&lt;br /&gt;class Order&lt;br /&gt;{&lt;br /&gt;          public int units = 3;&lt;br /&gt;          public int price_per_unit = 4;&lt;br /&gt;          public int total_price = 12;                // units * price_per_unit.&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Now when I serialize an instance of this class, all 3 members will be serialized and in-turn all 3 members will be deserialized. Well good!!! But there's a small issue. Why should I serialize / deserialize "total_price" everytime?? It's a calculated field. Ideally I should be able to save some bytes from getting serialized and deserialized everytime, if I can manage to automatically initialize total_price on deserialization.&lt;br /&gt;Now, if I simply mark the total_price field as [NonSerialized], it's not going to suffice, because, after the instance of this class is deserialized, the total_price will be initialized to 0 and not 12.&lt;br /&gt;To resolve this, there's a new interface called IDeserializationCallback. This interface exposes a method called OnDeserialization which we can implement in our class to do this automatic calculations and initializations of NonSerialized fields.&lt;br /&gt;&lt;br /&gt;So, here's how it's done:&lt;br /&gt;&lt;br /&gt;class Order : &lt;strong&gt;IDeserializationCallback&lt;/strong&gt;&lt;br /&gt;{&lt;br /&gt;          public int units = 3;&lt;br /&gt;          public int price_per_unit = 4;&lt;br /&gt;          &lt;strong&gt;[NonSerialized]&lt;/strong&gt;public int total_price = 0;                // units * price_per_unit.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;          &lt;strong&gt;void IDeserializationCallback.OnDeserialization(object Sender)&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;          {&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;                   total_price = units * price_per_unit; //here the price will be set to 12.&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;          }&lt;/strong&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;I marked total_price as NonSerialized, so when I serialize this object, only units and price_per_unit will be included.&lt;br /&gt;When, the Deserialize method of a formatter is called, it automatically invokes IDeserializationCallback.OnDeserialization( object Sender) method which takes care of initializing the total_price and thus this field is now avaliable to use after the class is deserialized.&lt;br /&gt;&lt;br /&gt;Cool stuff ain't it??&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-115918402668120544?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/115918402668120544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/115918402668120544'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2006/09/deserialization-in-net-20.html' title='Deserialization in .NET 2.0'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-115873032845763472</id><published>2006-09-20T10:46:00.000+05:30</published><updated>2006-09-20T11:02:08.466+05:30</updated><title type='text'>Store multiple values against a key!!!</title><content type='html'>Now this sounds a little different from the typical hashtables, dictionary and hybriddictionary classes of the world. Yes, I am talking about a new collection class in .NET 2.0 - NameValueCollection (NVC). Using a NVC allows me to store multiple values against a key in a collection object.&lt;br /&gt;e.g.&lt;br /&gt;NameValueCollection nvc = new NameValueCollection();&lt;br /&gt;nvc.Add("1", "Sarang");&lt;br /&gt;nvc.Add("2", "Reena");&lt;br /&gt;nvc.Add("2", "Teena");&lt;br /&gt;&lt;br /&gt;for ( int x = 0; x &lt; nvc.Count; ++x)&lt;br /&gt;{&lt;br /&gt;     Console.WriteLine(nv[x]);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//the output that will be generated is:&lt;br /&gt;//Sarang&lt;br /&gt;&lt;strong&gt;//Reena, Teena&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;So, essentially now in addition to storing key value pairs, we can also group more data under a single key.&lt;br /&gt;&lt;br /&gt;Cheers!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-115873032845763472?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/115873032845763472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/115873032845763472'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2006/09/store-multiple-values-against-key.html' title='Store multiple values against a key!!!'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-115823489219521660</id><published>2006-09-14T17:16:00.000+05:30</published><updated>2006-09-14T17:25:00.586+05:30</updated><title type='text'>More about delegates....</title><content type='html'>&lt;div align="justify"&gt;Many a times, in the programming world programmers end up saying that delegates “are” function pointers where in, reality is delegates “are like” function pointers. Why? Because they do a little more than just storing the address of the function to be invoked. Apart from doing more, delegates are object oriented (they are classes at the core) and are absolutely type safe.&lt;br /&gt;&lt;br /&gt;Essentially, when we assign a function to a delegate here are two possibilities:&lt;br /&gt;&lt;br /&gt;1. We might assign an instance method to the delegate: In this case the delegate stores a reference to the method’s entry point and also to the instance of the object, called the target. This is of the same type that can be assigned to the type that defined the method.&lt;br /&gt;2. We might assign a static method to the delegate: In this case the delegate stores a reference only to the entry point of the method which we are interested in doing a dynamic invoke on.&lt;br /&gt;To verify the above facts, here’s an example:&lt;br /&gt;&lt;br /&gt;Class Program&lt;br /&gt;{&lt;br /&gt;delegate void myDelegate (string s);&lt;br /&gt;static void Main(string[] args)&lt;br /&gt;{&lt;br /&gt;myDelegate md = new myDelegate(TargetMethod);&lt;br /&gt;myDelegate md1 = new myDelegate(TargetMethod2);&lt;br /&gt;&lt;br /&gt;1 Console.WriteLine(md.Target.ToString());&lt;br /&gt;2 Console.WriteLine(md.Method.ToString());&lt;br /&gt;&lt;br /&gt;3 Console.WriteLine(md1.Target.ToString());&lt;br /&gt;4 Console.WriteLine(md1.Method.ToString());&lt;br /&gt;5 Console.ReadLine();&lt;br /&gt;&lt;br /&gt;md1("Sameer");&lt;br /&gt;md("sarang");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;void TargetMethod(string s)&lt;br /&gt;{&lt;br /&gt;Console.WriteLine(s);&lt;br /&gt;}&lt;br /&gt;static void TargetMethod2(string s)&lt;br /&gt;{&lt;br /&gt;Console.WriteLine(s);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;In the example above lines 3 and 4 will throw an exception. Why??? because TargetMethod2 is a static method therefore an instance of the class is not required and is not available to be assigned to the Target property of the delegate instance. As a result, the Target property of the delegate will be null in this case for md1.&lt;br /&gt;&lt;br /&gt;Apart from that, the delegate class also exposes Combine method which allows assigning and execution of multiple methods thru one delegate. Again internally when I call Combine a new delegate is instance is created and returned but the programmer is kept away from these details. To allow multiple methods to be called, internally the delegate maintains an invocation list which is nothing but an array of delegates i.e. Delegate[] - Verify this by calling the GetInvocationList () method the delegate instance.&lt;/div&gt;&lt;div align="justify"&gt;Like the Combine we also have a Remove() method which dynamically allows us to remove a method from the delegate's invocation list.&lt;br /&gt;&lt;br /&gt;So to conclude, they are not simply, stupid function pointers!!! &lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-115823489219521660?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/115823489219521660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/115823489219521660'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2006/09/more-about-delegates.html' title='More about delegates....'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-115812651844203001</id><published>2006-09-13T11:17:00.000+05:30</published><updated>2006-09-13T11:18:38.476+05:30</updated><title type='text'>Compression in .NET 2.0</title><content type='html'>I was just checking out an interesting feature built into .net 2.0 – Compression capability in Streams.  (I am not getting into why we need to compress data…etc)&lt;br /&gt;.NET provides 2 classes to facilitate compression of streams. GZipStream and DeflateStream. Both these classes are based on open standards  thus taking away any issues related to breach of intellectual property. Feel absolutely free to use them in your projects / products.&lt;br /&gt;I will explain the working of one of these classes with an example. So here goes:&lt;br /&gt;First to ensure  that these classes are available to use, do a good old “using” or “imports” depending on whether it’s C# or VB.NET&lt;br /&gt;using System.IO;&lt;br /&gt;using System.IO.Compression;&lt;br /&gt;Then create a class called FileCompression.&lt;br /&gt;Write two methods called Compress and DeCompress which take 2 strings as paramters – one for infile and one for the out fileas follows:&lt;br /&gt;public static void Compress( string input, string output)&lt;br /&gt;        {&lt;br /&gt;            FileStream infile = File.OpenRead(input);&lt;br /&gt;            FileStream outfile = File.OpenWrite(output);&lt;br /&gt;            GZipStream zip = new GZipStream(outfile, CompressionMode.Compress);&lt;br /&gt;            int aByte = infile.ReadByte();&lt;br /&gt;&lt;br /&gt;            while (aByte != -1)&lt;br /&gt;            {&lt;br /&gt;                zip.WriteByte((byte)aByte);&lt;br /&gt;                aByte = infile.ReadByte();&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            zip.Close();&lt;br /&gt;            outfile.Close();&lt;br /&gt;            infile.Close();&lt;br /&gt;        }&lt;br /&gt;In the compress method, we are opening a GZipStream object and passing the outfile to it as a param. The second parameter tells GZipStream to compress the data when storing it into the outfile. The we simply read one byte at a time from the input file and passing it to the GZipStream object to compress and store it into the output file.&lt;br /&gt;&lt;br /&gt;        public static void DeCompress(string input, string output)&lt;br /&gt;        {&lt;br /&gt;            FileStream infile = File.OpenRead(input);&lt;br /&gt;            FileStream outfile = File.OpenWrite(output);&lt;br /&gt;            GZipStream zip = new GZipStream(infile, CompressionMode.Decompress);&lt;br /&gt;            int aByte = zip.ReadByte();&lt;br /&gt;&lt;br /&gt;            while (aByte != -1)&lt;br /&gt;            {&lt;br /&gt;                outfile.WriteByte((byte)aByte);&lt;br /&gt;                aByte = zip.ReadByte();&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            zip.Close();&lt;br /&gt;            outfile.Close();&lt;br /&gt;            infile.Close();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;In the DeCompress method we are doing just the opposite – read one byte at a time from the input (compressed) file using the GZipStream object and then write to a normal filestream. Note: The second parameter to the GZipStream object in this case is Decompress which tells GZipstream to decompress the data as and when it is read using the ReadByte method.&lt;br /&gt;&lt;br /&gt;The DeflateStream object is nothing different interface wise and has the same methods. The only difference is GZipStream uses some extra headers so that the compressed file can also be processed by the gzip tool. These headers also make the file a little heavy. DeflateStream on the other hand, doesn’t use headers as a result it is slightly smaller in size. It’s recommended to use DeflateStream.&lt;br /&gt;&lt;br /&gt;That’s about it for the day. Deflating for the moment…..:)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-115812651844203001?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/115812651844203001'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/115812651844203001'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2006/09/compression-in-net-20_13.html' title='Compression in .NET 2.0'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-115737407502910831</id><published>2006-09-04T17:51:00.000+05:30</published><updated>2006-09-04T18:17:55.050+05:30</updated><title type='text'>Type Forwarding in .NET 2.0</title><content type='html'>Here's another interesting thing that .NET 2.0 adds on. It's called Type Forwarding. It doesn't happen less often that, we declare a type in a particular assembly and then later on as the project clarity increases we decide to move the type declaration to more relevant an assembly.&lt;br /&gt;E.g. I might have an assembly called Vehicles.dll and a type called santro and hayabusa added to it. Later on down the line, as my project advances, it might so happen that I might have to split the content of this assembly into bikes.dll and cars.dll. Also by that time there might be a number of other assemblies being built up which refer to Vehicles.dll.&lt;br /&gt;Now, it doesn't make sense to recompile every assembly after splitting bikes and cars. In that case if a redirection mechanism is implemented via which, as soon as a type in the old assembly is referred to, it should be redirected to the new assembly where the definition of this type now exists. To make that possible, we ahve a new attribute in .NEt 2.0 called &lt;strong&gt;TypeForwardedTo &lt;/strong&gt;which basically makes this redirection possible.&lt;br /&gt;&lt;br /&gt;We can add the following line of declaration in either assemblyinfo file or add it as an attribute to to the class declaration:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[ assembly:TypeForwardedTo ( typeof ( bikes.hayabusa ) ) ]&lt;br /&gt;&lt;br /&gt;Simple ain't it?? You just saved yourself an effort to recompile the entire application. Just recompile the new assembly and the old assembly and we are done.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-115737407502910831?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/115737407502910831'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/115737407502910831'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2006/09/type-forwarding-in-net-20.html' title='Type Forwarding in .NET 2.0'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-115709528235838098</id><published>2006-09-01T11:53:00.000+05:30</published><updated>2006-09-01T13:07:51.146+05:30</updated><title type='text'>Shadows magic in VB.NET!!!</title><content type='html'>The other day I was reading about the Shadows keyword in visual basic.net. I would try to summarize some interesting things about the shadows keyword.&lt;br /&gt;&lt;br /&gt;When we go ahead and use the "shadows" keyword, the idea is to make the inherited types, that are being shadowed, unavailable in the dervied class. We can also use the "overloads" keyword to hide a single entity in the base class.&lt;br /&gt;&lt;br /&gt;e.g.&lt;br /&gt;_____________________________________________________&lt;br /&gt;Class B&lt;br /&gt;Sub MySub()&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Sub MySub1()&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Sub MySub(ByVal o As Object)&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Sub MySub1(ByVal o As Object)&lt;br /&gt;End Sub&lt;br /&gt;End Class&lt;br /&gt;&lt;br /&gt;Class D&lt;br /&gt;Inherits B&lt;br /&gt;&lt;br /&gt;Overloads Sub MySub(ByVal o As Object)&lt;br /&gt;End Sub&lt;br /&gt;&lt;br /&gt;Shadows MySub1(ByVal o As Object)&lt;br /&gt;End Sub&lt;br /&gt;End Class&lt;br /&gt;&lt;br /&gt;_____________________________________________________&lt;br /&gt;&lt;br /&gt;In the above example the "overloads" keyword in the class D (derived class) hides the MySub(ByVal o As Object) declaration in the class B (base class).&lt;br /&gt;&lt;br /&gt;Where as the "Shadows" keyword in the class D hides both Sub MySub1() and MySub1(ByVal o As Object) declarations in the class B.&lt;br /&gt;&lt;br /&gt;Therefore in my Main() if I do something like this:-&lt;br /&gt;1. dim objD as D = new D()&lt;br /&gt;2. objD.MySub1()&lt;br /&gt;&lt;br /&gt;, then the line no (2) will throw an error that this method "objD.MySub1()" doesn't exist.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Another variation to the same concept is: since we can easily shadow inherited methods, the class can therefore contain several overridable methods with the same signature!!!&lt;br /&gt;&lt;br /&gt;Here's an example again:&lt;br /&gt;_______________________________________________________&lt;br /&gt;&lt;br /&gt;Class Vehicle&lt;br /&gt;Public Overridable Sub Accelerate()&lt;br /&gt;Console.WriteLine("Vehicle Accelerated")&lt;br /&gt;End Sub&lt;br /&gt;End Class&lt;br /&gt;&lt;br /&gt;Class Car&lt;br /&gt;Inherits Vehicle&lt;br /&gt;&lt;br /&gt;Public Overrides Sub Accelerate()&lt;br /&gt;Console.WriteLine("Car was accelerated")&lt;br /&gt;End Sub&lt;br /&gt;End Class&lt;br /&gt;&lt;br /&gt;Class Santro&lt;br /&gt;Inherits Car&lt;br /&gt;&lt;br /&gt;Public Overridable Shadows Sub Accelerate()&lt;br /&gt;Console.WriteLine("Santro Accelerated")&lt;br /&gt;End Sub&lt;br /&gt;End Class&lt;br /&gt;&lt;br /&gt;Class SantroXing&lt;br /&gt;Inherits Santro&lt;br /&gt;&lt;br /&gt;Public Overrides Sub Accelerate()&lt;br /&gt;Console.WriteLine("Xing Accelerated")&lt;br /&gt;End Sub&lt;br /&gt;End Class&lt;br /&gt;&lt;br /&gt;Module TestVehicle&lt;br /&gt;Sub Main()&lt;br /&gt;Dim sx As New SantroXing()&lt;br /&gt;Dim v As Vehicle = sx&lt;br /&gt;Dim c As Car = sx&lt;br /&gt;Dim s As Santro = sx&lt;br /&gt;v.Accelerate()&lt;br /&gt;c.Accelerate()&lt;br /&gt;s.Accelerate()&lt;br /&gt;sx.Accelerate()&lt;br /&gt;End Sub&lt;br /&gt;End Module&lt;br /&gt;_______________________________________________________&lt;br /&gt;&lt;br /&gt;In this case when v.Accelerate() and c.Accelerate() sub procedures are called, if you expected the output to be "Vehicle Accelerated" and "Car was Accelerated" then i am sorry... essentially, inactuals the output will be "Car Accelerated" in both the cases. Similarly in the next calls to s.Accelerate() and sx.Accelerate() the output will be "Xing Accelerated" only in both the cases. Now isn't that awesome!!!!&lt;br /&gt;&lt;br /&gt;Thus, we have effectively shadowed or hidden the methods in the base class and allowed overridable methods with the same signatures....all at the same time.&lt;br /&gt;&lt;br /&gt;For information sake, one can also go ahead and prevent shadowing in the next derived class (SantroXing). It can be done by declaring the Accelerate method in the Vehicle class as MustOverride. This will essentially make the SantroXing class unusable. Try it!!!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;p.s. Shadowing works in c# using the "new" keyword.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-115709528235838098?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/115709528235838098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/115709528235838098'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2006/09/shadows-magic-in-vbnet.html' title='Shadows magic in VB.NET!!!'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-115679341225017941</id><published>2006-08-29T00:48:00.000+05:30</published><updated>2006-08-29T01:04:43.400+05:30</updated><title type='text'>Most important lesson in life!!!</title><content type='html'>Today, I learnt the most important lesson of my life. Rather I would say, I could make sense out of, what were only fancy words to me till this time. My Grandpa used to say:&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;"Shreshthatva vayaanoosaar yet nahi...tar shreshthatva kamvaava laagta"&lt;/div&gt;&lt;div align="center"&gt;&lt;/div&gt;&lt;div align="center"&gt;which translates to&lt;/div&gt;&lt;div align="center"&gt;&lt;/div&gt;&lt;div align="center"&gt;"Respect doesn't come by age or years of experience...but it needs to be earned!!!"&lt;/div&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;div align="left"&gt;These words of wisdom , I shall never forget!!!&lt;/div&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;div align="left"&gt;Nothing technical about this post.........but absolutely logical!!!&lt;/div&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-115679341225017941?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/115679341225017941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/115679341225017941'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2006/08/most-important-lesson-in-life.html' title='Most important lesson in life!!!'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-115649118995008183</id><published>2006-08-25T11:59:00.000+05:30</published><updated>2006-08-25T13:09:35.840+05:30</updated><title type='text'>What is cross-thread usage of the UI code? How does Invoke/BeginInvoke work?</title><content type='html'>&lt;p&gt;In continuation to my last post, I will try to summarize how Invoke and BeginInvoke works internally.&lt;br /&gt;&lt;br /&gt;Essentially, when we do an Invoke or BeginInvoke, we discussed that the marshalling control is obtained in order to go ahead and invoke the delegate on the main thread. After the marshalling control is obtained, a MarshalledInvoke call is made on this control. This method takes 4 params i.e. Control, delegate, object[] and a bool. The control is the control on which the method is to be invoked. Remember, that the marshalling control may or maynot be the same as the control on which the method is to be invoked. The delegate param points to the method that is to be invoked, the object[] param contains the list of params that are to be passed to the method that will be invoked and the bool param indicates whether the call is an Invoke or a BeginInvoke. The MarshalledInvoke method returns either a return value of the method being executed or an IAsyncResult object depending obviously on whether a Invoke or a BeingInvoke was made. &lt;/p&gt;&lt;p&gt;But that is not as simple as it sounds, MarshalledInvoke does some exciting (not really!!) bit of work internally. As mentioned in my last post, a GetWindowThreadProcessId is called to obtain the identity of the thread that created the marshalling control and then it is compared with the current thread. Only if these two are different threads then we need to get into the further details. Assuming that these two threads, actually are different, let's see what MarshalledInvoke does. MarshalledInvoke creates an instance of the ThreadMethodEntry (TME) object and stores the information related to the delegate method that we are interested in invoking along with the params that would be passed to it. Along with this information the TME also stores a copy of the CompressStack object of the invoking thread. The CompressedStack object essentially contains information related to code access security of the invoking thread. Thereafter, it proceeds to put this object in a message queue of the marshalling control. The information about this object being put into the queue is conveyed to the the marshalling control via a PostMessage - Win32 function. This happens only and only if the invoking thread is not the same as the UI thread. The UI thread will have a windows message pump to extract the messages posted into the message queue. These messages are handled by WndProc (default message handler) which in turn makes a call to InvokeMarshalledCallbacks method. The job of the InvokeMarshalledCallbacks method is to dequeue these TME objects from the message queue and invoke the delegates that are stored in these objects. If by chance the UI thread and the invoking thread are the same, then a PostMessage is not required because then InvokeMarshalledCallbacks can / will be called directly. The idea is to ensure that the UI thread (which created the target control) ends up calling the method of the target control. So, when an InvokeMarshalledCallbacks is called, the UI thread is initialized with the information stored in the CompressdStack object in the TME, which stores the code access security related information. As you might have guessed, this is important, because the UI thread might be running under a different security context, and the invoking thread will probably have a different security context. To avoid a security breach at this point, the CompressStack object stored in the TME comes to our aid. &lt;/p&gt;&lt;p&gt;Finally one last point to mention is that the TME also implements the IAsyncResult to ensure that the result of the operation / method begin executed via the delegate, is made available to MarshalledInvoke and that in turn is made available to us in the BeginInvoke that we did. All in all this completes our execution of a method of a particular control over a different thread by marshalling the call on to the UI thread.&lt;/p&gt;&lt;p&gt;I am sure this is just like scratching the surface and there are more theething problems and intricacies involved in the whole operation. &lt;/p&gt;&lt;p&gt;Conclusion: When doing an Invoke from a different thread, use BeginInvoke instead of Invoke. Invoke internally does a SendMessage (blocking call ....so can lead to deadlocks) while BeginInvoke does a PostMessage. Also when doing a BeginInvoke try not to have shared data being accessed to avoid integrity and other related issues.&lt;/p&gt;&lt;p&gt;That covers the "how's" and "what's" of Invoke and BeginInvoke. Like I said, there is surely more complexity involved than what's mentioned here, and it can only be revealed by doing more readings and research. &lt;/p&gt;&lt;p&gt;Cheers and keep watching this space for more interesting stuff!!!!&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-115649118995008183?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/115649118995008183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/115649118995008183'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2006/08/what-is-cross-thread-usage-of-ui-code_25.html' title='What is cross-thread usage of the UI code? How does Invoke/BeginInvoke work?'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-115640644225517066</id><published>2006-08-24T13:01:00.000+05:30</published><updated>2006-08-24T13:30:42.266+05:30</updated><title type='text'>What is cross-thread usage of the UI code?</title><content type='html'>In winforms when we end up creating controls, they would be created on the main UI thread. Now, later during the execution of the program if there's a need to call some method of a particular control that was created on the UI thread, from another thread, then be sure to expect a dirty exception being thrown at you.&lt;br /&gt;Reason: We can't directly call a method of a control (that was created on the UI thread) from another background thread.&lt;br /&gt;Solution: Well, don't worry, we are not stuck. We have a saviour method that all controls expose - Invoke and BeginInvoke - EndInvoke.&lt;br /&gt;The Invoke method complemented by the InvokeRequired property allow us to do just what we want.&lt;br /&gt;The InvokeRequired property essentially first checks if the handle for the control is create and then later on moves on to check if the windows thread process id of the thread on which this control was created is the same as the current thread id. For this it relies on good old GetWindowThreadProcessID and GetCurrentThreadID. Well, so far so good, if the handle is created. If not then we moving ourselves into a spot. The InvokeRequired will further move on to check the control hierarchy and see if there is any other control whose handle is created and if it can be used as a marshalling control. If that doesn't work then the last option is to get the parking window to use as a marshalling control.&lt;br /&gt;Coming back to our discussion, finally when the InvokeRequired returns, it returns a bool indicating that we either need to call Invoke/BeginInvoke on the control to execute a particular method that the control exposes or we can directly call the method exposed by the control.&lt;br /&gt;&lt;br /&gt;The Invoke method takes a delegate (that will be used to invoke a particular method ) and the second overload of this method takes array of objects that will be used to pass as arguments to the method being invoked.&lt;br /&gt;&lt;br /&gt;This will essentially queue up the method call of the control on the UI thread. Here's an example of what we jsut discussed:&lt;br /&gt;&lt;br /&gt;private void MyMethod(object sender, EventArgs e)&lt;br /&gt;{   &lt;br /&gt;         Control objControl = sender as Control;   &lt;br /&gt;         if ( objControl != null )&lt;br /&gt;         {      &lt;br /&gt;                    c.Focus();&lt;br /&gt;                    c.SomethingElse();   &lt;br /&gt;         }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Button1.Invoke(new EventHandler(MyMethod));&lt;br /&gt;&lt;br /&gt;Note:&lt;br /&gt;1. Assume that Button1 was created on the main UI thread.&lt;br /&gt;2. MyMethod is a generic method that can be used with all UI controls without the need to hardcode the specific control whose Focus method needs to be called.&lt;br /&gt;3. I am using the EventHandler Delegate to invoke the contents of MyMethod on the main UI thread.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Well, this is not the end, there's more to it. How does Invoke work internally and how does BeginInvoke work to give an async effect. I shall discuss these in detail in the coming few day.&lt;br /&gt;&lt;br /&gt;Till then cheers!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-115640644225517066?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/115640644225517066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/115640644225517066'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2006/08/what-is-cross-thread-usage-of-ui-code.html' title='What is cross-thread usage of the UI code?'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-115640093661056265</id><published>2006-08-24T11:52:00.000+05:30</published><updated>2006-08-24T11:58:56.620+05:30</updated><title type='text'>I am back again.... :)</title><content type='html'>I am back again with lotsa enthusiasm and passion to restart blogging.&lt;br /&gt;The cause for this effect is primarily change of work environment. I have joined a new company called &lt;a href="http://www.coreobjects.com"&gt;coreobjects&lt;/a&gt;. The overall work culture, the people and most importantly the work is what I am totally excited about.&lt;br /&gt;&lt;br /&gt;Secondly, I have finally got a new powerful lappie-toppie after a long time. I can now explore some interesting things in the .NET world without begging for speed and performance, which in turn means, that hopefully you'll see more blog posts happening here.&lt;br /&gt;&lt;br /&gt;Thirdly I have started playing football again (usually on weekend), after a serious kneee injury 2 years back.&lt;br /&gt;&lt;br /&gt;I am keeping my fingers crossed to not lose on to the enthusiasm with which I have re-started blogging.&lt;br /&gt;&lt;br /&gt;Cheeers!!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-115640093661056265?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/115640093661056265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/115640093661056265'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2006/08/i-am-back-again.html' title='I am back again.... :)'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-114119828033766512</id><published>2006-03-01T12:58:00.000+05:30</published><updated>2006-03-01T13:01:20.346+05:30</updated><title type='text'>Gmail problem...</title><content type='html'>I suspect that, if I the space allocated for temporary internet files is less (IE --&gt; Tools --&gt; Internet options --&gt; Settings) then, the gmail inbox fails to load. Again, like I said, I just suspect, not absolutely sure about it. Wierd ain't it?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-114119828033766512?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/114119828033766512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/114119828033766512'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2006/03/gmail-problem.html' title='Gmail problem...'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-114119578278199533</id><published>2006-03-01T12:17:00.000+05:30</published><updated>2006-03-01T12:19:42.790+05:30</updated><title type='text'>I am back!!!</title><content type='html'>...It's been a while (actually quite a long time) since I last blogged. And frankly, I have no real excuse to dish out for not blogging (not that it matters to anyone) :)) but, I was just being lazy and caught up with lotsa work.&lt;br /&gt;&lt;br /&gt;So now I am going to spend a few days trying to fill up this space with stuff that I have been doing for so many months.&lt;br /&gt;&lt;br /&gt;Keep visiting....thanks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-114119578278199533?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/114119578278199533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/114119578278199533'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2006/03/i-am-back.html' title='I am back!!!'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-111693595880624091</id><published>2005-05-24T17:29:00.000+05:30</published><updated>2005-05-24T17:29:18.810+05:30</updated><title type='text'>Abhishek (L) and Me (R)</title><content type='html'>&lt;a href="http://www.flickr.com/photos/65158012@N00/15455815/" title="photo sharing"&gt;&lt;img src="http://photos11.flickr.com/15455815_c977244c7f_m.jpg" alt="" style="border: solid 2px #000000;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;&lt;a href="http://www.flickr.com/photos/65158012@N00/15455815/"&gt;Abhishek (L) and Me (R)&lt;/a&gt; &lt;br /&gt;Originally uploaded by &lt;a href="http://www.flickr.com/people/65158012@N00/"&gt;Sarang&lt;/a&gt;.&lt;/span&gt;&lt;br clear="all" /&gt;&lt;p&gt;...trying not to look hungry....after the food was delayed by an hour in a restaurant in Koregaon Park. :))&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-111693595880624091?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/111693595880624091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/111693595880624091'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2005/05/abhishek-l-and-me-r.html' title='Abhishek (L) and Me (R)'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-111693592405724934</id><published>2005-05-24T17:28:00.000+05:30</published><updated>2005-05-24T17:28:44.080+05:30</updated><title type='text'>All of us after PUG and Pune IT PRO meet</title><content type='html'>&lt;a href="http://www.flickr.com/photos/65158012@N00/15455816/" title="photo sharing"&gt;&lt;img src="http://photos13.flickr.com/15455816_62fb0e4d72_m.jpg" alt="" style="border: solid 2px #000000;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;&lt;a href="http://www.flickr.com/photos/65158012@N00/15455816/"&gt;All of us after PUG and Pune IT PRO meet&lt;/a&gt; &lt;br /&gt;Originally uploaded by &lt;a href="http://www.flickr.com/people/65158012@N00/"&gt;Sarang&lt;/a&gt;.&lt;/span&gt;&lt;br clear="all" /&gt;&lt;p&gt;These were some of the gadgets and devices used for demoing Wifi setup.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-111693592405724934?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/111693592405724934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/111693592405724934'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2005/05/all-of-us-after-pug-and-pune-it-pro.html' title='All of us after PUG and Pune IT PRO meet'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-111692403096727341</id><published>2005-05-24T13:52:00.000+05:30</published><updated>2005-05-24T14:10:55.543+05:30</updated><title type='text'>Abhishek's visit for Microsoft Community Alliance</title><content type='html'>Abhishek Kant, Microsoft India - Community Program Manager was here on the 20th of May 2005 to officially propogate the idea of Microsoft Community Alliance.&lt;br /&gt;&lt;br /&gt;The Microsoft Community Alliance was an initiative which was started a month back and was in fact piloted for the first time in Pune. We started of with Kanbay software a month back and it really is an interesting initiative where developers get to interact with other developers, with Microsoft MVPs and Evangelists from Microsoft as well!&lt;br /&gt;&lt;br /&gt;On 20th of May, 3 big software firms where targetted for Microsoft Community Alliance:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ITB Computer Services&lt;/strong&gt; - Kalyani Nagar: Here we met up with key people like Mr. Anil Apte, Rahul M. and Titiksha M who seemed very eager to take this initiative and drive the community ahead in ITB.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Sungard Offshore Services&lt;/strong&gt; - This is the place where I am currently employed, so how could the community here not be made aware of such wonderful initiatives :)! The session here was delayed by 15 mins. Abhishek gave inputs on how the community would benefit from a variety of avenues that are available for free. This place had the highest attendance... over 25 enthusiasts!!!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Kanbay Software&lt;/strong&gt; - Here we had two sessions:&lt;br /&gt;1. Session by Abhishek on theMicrosoft Community Alliance offcourse. We interacted with Parvez Mulla, who happens to be a project manager in Kanbay and is responsible for the Microsoft technology team in Kanbay.&lt;br /&gt;2. I took a session on IDE Enhancements in Visual Studio .NET 2005.&lt;br /&gt;&lt;br /&gt;Overall the Community Initiative has started rolling quite well on the corporate front as well as academic front.&lt;br /&gt;&lt;br /&gt;Now the key that remains is: How does one aggregate all these communities, that as of today are interacting at various levels!? Your suggestions are welcome...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-111692403096727341?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/111692403096727341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/111692403096727341'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2005/05/abhisheks-visit-for-microsoft.html' title='Abhishek&apos;s visit for Microsoft Community Alliance'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-111691810481902295</id><published>2005-05-24T12:31:00.000+05:30</published><updated>2005-05-24T12:31:44.823+05:30</updated><title type='text'>The cool dude!</title><content type='html'>&lt;a href="http://www.flickr.com/photos/65158012@N00/15426887/" title="photo sharing"&gt;&lt;img src="http://photos9.flickr.com/15426887_4e1b6dfdd7_m.jpg" alt="" style="border: solid 2px #000000;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size: 0.9em; margin-top: 0px;"&gt;&lt;a href="http://www.flickr.com/photos/65158012@N00/15426887/"&gt;The cool dude!&lt;/a&gt; &lt;br /&gt;Originally uploaded by &lt;a href="http://www.flickr.com/people/65158012@N00/"&gt;Sarang&lt;/a&gt;.&lt;/span&gt;&lt;br clear="all" /&gt;&lt;p&gt;Just one of the cool pics taken during the PUG and Pune IT Pro meet on 21st May 2005.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-111691810481902295?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/111691810481902295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/111691810481902295'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2005/05/cool-dude.html' title='The cool dude!'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-111650164557060650</id><published>2005-05-19T16:48:00.000+05:30</published><updated>2005-05-19T16:50:45.570+05:30</updated><title type='text'>Changed the blog!</title><content type='html'>Lazy that I am, finally Hardik went ahead and gave me the blog template, that I am currently using, for my blog! :))&lt;br /&gt;&lt;br /&gt;NOW THAT IS REUSABILITY!!!! AIN'T IT???&lt;br /&gt;&lt;br /&gt;Thanks a ton Montu!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-111650164557060650?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/111650164557060650'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/111650164557060650'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2005/05/changed-blog.html' title='Changed the blog!'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-111573017427288217</id><published>2005-05-10T18:25:00.000+05:30</published><updated>2005-05-10T18:42:46.673+05:30</updated><title type='text'>Did you know about Event Properties in C#?</title><content type='html'>Hi,&lt;br /&gt;&lt;br /&gt;Here’s something of interest.&lt;br /&gt;&lt;br /&gt;Typically, following is the piece of code that we use to declare events and raise events in C#:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3366ff;"&gt;&lt;strong&gt;public delegate void SomeEventHandler(object sender, EventArgs e);&lt;br /&gt;&lt;br /&gt;public class SomeClass&lt;br /&gt;{&lt;br /&gt;     public event SomeEventHandler SomeEvent1;&lt;br /&gt;     public event SomeEventHandler SomeEvent2;&lt;br /&gt;     public event SomeEventHandler SomeEvent3;&lt;br /&gt;&lt;br /&gt;     protected virtual void OnSomeEvent1 (EventArgs e)&lt;br /&gt;    {&lt;br /&gt;       if (SomeEvent1!= null)&lt;br /&gt;      {&lt;br /&gt;         SomeEvent1(this, e);&lt;br /&gt;      }&lt;br /&gt;    }&lt;br /&gt;     .&lt;br /&gt;     .//raise SomeEvent2&lt;br /&gt;     .&lt;br /&gt;     .//raise SomeEvent3&lt;br /&gt;     .&lt;br /&gt;}&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;This results in a separate &lt;strong&gt;field&lt;/strong&gt; being created for every event delegate instance! Incidentally this also affects the amount of memory your application consumes, if I have too many events being raised from my class like in the above case.&lt;br /&gt;&lt;br /&gt;If you see the IL that was generated for the above class you will notice that it has registered or created 3 fields for 3 event delegate instances!&lt;br /&gt;&lt;br /&gt;To solve this C# gives a feature called&lt;strong&gt; event properties&lt;/strong&gt; - which has event accessors. Event accessors are methods you define to allow event delegate instances to be added or removed from the storage data structure. Obviously event properties have their own advantages and disadvantages.&lt;br /&gt;&lt;br /&gt;Now if I put the above code in a storage data structure using event properties this is how it looks:&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;public class PropertyEventsExample&lt;br /&gt;{&lt;br /&gt;     private Hashtable eventTable = new Hashtable();&lt;br /&gt;&lt;br /&gt;     public event SomeEventHandler Event1&lt;br /&gt;     {&lt;br /&gt;         add&lt;br /&gt;        {&lt;br /&gt;           eventTable["E1"] = (SomeEventHandler)eventTable["E1"] + value;&lt;br /&gt;        }&lt;br /&gt;        remove&lt;br /&gt;        {&lt;br /&gt;          eventTable["E1"] = (SomeEventHandler)eventTable["E1"] - value;&lt;br /&gt;        }&lt;br /&gt;     }&lt;br /&gt;&lt;br /&gt;      public event SomeEventHandler Event2&lt;br /&gt;      {&lt;br /&gt;        add&lt;br /&gt;        {&lt;br /&gt;           eventTable["E2"] = (SomeEventHandler)eventTable["E2"] + value;&lt;br /&gt;        }&lt;br /&gt;        remove&lt;br /&gt;        {&lt;br /&gt;          eventTable["E2"] = (SomeEventHandler)eventTable["E2"] - value;&lt;br /&gt;        }&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      public event SomeEventHandler Event3&lt;br /&gt;      {&lt;br /&gt;        add&lt;br /&gt;        {&lt;br /&gt;          eventTable["E3"] = (SomeEventHandler)eventTable["E3"] + value;&lt;br /&gt;        }&lt;br /&gt;        remove&lt;br /&gt;        {&lt;br /&gt;          eventTable["E3"] = (SomeEventHandler)eventTable["E3"] - value;&lt;br /&gt;        }&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;If you now see the IL for this class, you will notice that you have saved on the memory space allocated for the 3 event-delegate instances!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The advantage is event properties save memory!&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The drawback is that it affects the speed of execution!&lt;/strong&gt; Since we are adding the event delegates to a storage data structure, it has to be retrieved from this structure before the delegate can be invoked.&lt;br /&gt;&lt;br /&gt;In short the trade-off is between speed and memory. Event properties are very effective when it comes to a scenario where my class has lots of events for various reasons, but these events are &lt;strong&gt;not raised very frequently&lt;/strong&gt; and I also want to &lt;strong&gt;save on memory&lt;/strong&gt; being consumed by my application/class.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sadly Visual Basic .NET doesn’t have this feature! :(&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Source: MSDN and Google! :)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-111573017427288217?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/111573017427288217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/111573017427288217'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2005/05/did-you-know-about-event-properties-in.html' title='Did you know about Event Properties in C#?'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-111537073314905528</id><published>2005-05-06T09:41:00.000+05:30</published><updated>2005-05-06T15:14:40.716+05:30</updated><title type='text'>Singapore - The Microsoft's Asia MVP Meet</title><content type='html'>After managing to get the Visa for Singapore on the day before the departure I was pretty much relaxed. I went to Dhaval Faria's place in Goregaon, the day before the flight, after collecting the visa. Dhaval expertly manuvered the Kinetic to his house through the ocean of endless traffic.&lt;br /&gt;&lt;br /&gt;The next day we were all set to fly!&lt;br /&gt;&lt;br /&gt;My first international flight...I could feel the excitement!&lt;br /&gt;&lt;br /&gt;We met up with Mr. Yashwant Kanitkar Sir at the Singapore airport and then we all were escorted to The Oriental Hotel.&lt;br /&gt;&lt;br /&gt;Unfortunately we were slightly late for the cocktail party, nevertheless we managed to catch up with other MVPs.&lt;br /&gt;&lt;br /&gt;That very night Jignesh arrives at a bright idea of going for a walk and the destination decided is Mustafa market! So we (Jignesh, Akila, Dhaval, Yeshwant Kanitkar, Namrata, Saurabh and Dr Sarang (not me) head towards the mall! Dr. Sarang seemed pretty tired and equally tensed about the fact that the next day reporting was at 9 AM in the morning! So halfway through he managed to convince us to carry on with our walk to Mustafa and he escaped his way off to sleep! SInce he had some idea about the roads and directions, he told us to go to Serangoon (forgive my spellings) via the MRT! Happily we all boarded the MRT with great effort :)) (Imagin the ticket vending machine accepts money only in multiples of S$4!)&lt;br /&gt;&lt;br /&gt;Finally after like 20 min of MRT travel we reached Serangoon! The enquiry counter over there were more than happy to inform us that we should be going to Serangoon road (Farer station) and not Serangoon Station to go to mustafa market! p.s. Farrer station was 4 stations behind Serangoon! huh!!!! Again we board the MRT and go all the way back and finally we are on our way out to get going to Mustafa!&lt;br /&gt;&lt;br /&gt;The moment we reach Mustafa, all the cleanliness and hygiene disappears, scenes change to good old India! You know what I mean rite... Mustafa is a hugh mall where you get anything and everything from food to electronics to clothes to consumer goods...everything! Incidently, except for meagre things like body care products :)) (shampoos and lotions) everything is expensive! I asked for the price of O2XDA II Mini in the electronics dept and they quoted s$1224 before GST! After walking over the whole mall and when our legs could take no more we decided to move on and get going back to the hotel....3 AM in the morning we reached back home...ooops sorry hotel!&lt;br /&gt;&lt;br /&gt;Then the next day started with the welcome speech from Cally and Sean and then the day times for the next 3 days were pretty much occupied with tech sessions. Sessions ranging from Whidbey tips and tricks to Longhorn Speech recognition to VB.NET were exciting (once in a while :P)&lt;br /&gt;&lt;br /&gt;The lunch and high tea arrangements were fabulous! Also the special lunch arrangements for specific product groups (C#, VB, ASP.NET, SQL SERVER, etc) was a nice idea put up by Saurabh Nandu!&lt;br /&gt;&lt;br /&gt;On one of the days we were taken to Singapore Zoo for a night safari where we also had our dinner. The Magic show and the belly dancing thingi that was put up was great fun! Sean also did manage to get going with the belly dancing bit ;) ! Then there was this baby boa (SNAKE!)that everyone was facinated with and were getting a picture of themselves clicked with...imagine we all were in a long queue to get our snaps clicked with the boa! Btw, who has my snap where I kissed the snake!!! :)) Scary....is all I can say! Then we had a go, through the entire zoo and guess what we saw....... Animals ofcourse! huh!&lt;br /&gt;&lt;br /&gt;The next day were we (Indian MVPs) were supposed to be in charge of a booth to represent the UGs in India. Nauzad came up with a brainwave (@ 11 PM) of having a dartboard game to entertain people when they come to our booth...And then we (Me, Nauzad, Subhashini and Saurabh) go all the way back to Mustafa at 11 PM to buy a dartboard. Nauzad picks up a dard board in almost no time and then for the next 3 hours we are whiling away our time in Mustafa....guys remember....:)))) The next day we finally do setup the booth and the whole janta is around our booth trying thier luck at the dart board! Good fun..hhehe&lt;br /&gt;&lt;br /&gt;The next day we went to the Simlim square..a 6 floor shopping mall just for electrnics and cool gadgets! One can expect to get anything and everything that one can imagine of! right from laptops to PDAs to DigiCams to LCD monitors to electronic massagers to 2 inch sim card reader to....phew i am tired of typing already...point is you would see nothing but electronics!&lt;br /&gt;&lt;br /&gt;Nauzad me and Saurabh were in a shop where Nauzad bought a Laptop HDD (80 gigs) for 200 odd SGD (singapore dollars) and Nandu Bandhu picked up 2 wifi cards huh! I took like an hour to decide whether I should by an XPhoneII or XDA II mini and finally we walked off hehehe! Half was through the mall I made up the decision to by XDA II mini and there we went, all the way back to the the same shop! The price that was offered for the XDA II mini was 1188 after GST... seemed pretty much reasonable in comparison to Mustafa! I proudly handed over the Citi Credit Card and gosh!!!! the card was declined :(((! It was embarrasing to walk out of the shop yet again without the O2!!!!:)))&lt;br /&gt;&lt;br /&gt;The day after I just couldn't take it and called up Citi Support and got my credit limit verified and fixed. I am sure you guessed...I was back in Simlim with Dhaval, Jigs and Dr. Sarang. This time we decided to bargain and try to get a better deal in other shops and finally I got a deal for my O2 @ $1120 SGD after GST!!! :D (That means the actually CP for the product was 1070 SGD!!!..now isn't that cool! This time I made no mistake, I partially paid in cash and then my credit card managed to take the rest of the load!&lt;br /&gt;&lt;br /&gt;The same day we went to this river side restaurant....which was suppoed to be a nice, quite, calm and a romantic place, but was turned into a party point with colorful pogo walkies moving all around and not to forget the dancers performing there and beers dispensers installed all around the place! The food was great especially the sausages and the butter grilled fish..yumm!&lt;br /&gt;&lt;br /&gt;On the last day we were all set to leave....checked out at 1030 AM, went back to simlim with Nauzad and Saurabh and shopped for some more stuff! Finally we were driven to the airport at 445pm!&lt;br /&gt;&lt;br /&gt;Heights of all, when I and Saurab Nandu went in to get our boarding pass the lady at the counter said "You ticket is cancelled even before you came to singapore!!!!" We actually had a heated discussion after which the lady favoured us with 2 seats for destination India...huh! "Dil to kar raha tha ki...."&lt;br /&gt;&lt;br /&gt;The journey back was exciting, a maharashtrian couple (slightly aged) were sitting next to me and uncle was all excited about Singapore that he wouldn't let me sleep hehehe and on top of that, after dinner...all of a sudden Aunty couldn't hold back and she threw up in the plane! :((( I called the hostess and helped Aunty to the restroom and finally everythine was slient for the next couple of minutes before we touched base @ Mumbai airport!&lt;br /&gt;&lt;br /&gt;Once in Mumbai, Nauzad dropped me off at Dadar and I took an MSRTC bus back home to good old Pune! Reached Pune at 6:00 AM and was in office at 9:00 AM....&lt;br /&gt;&lt;br /&gt;One thing is for sure... Indian MVPs ROCK!!!!! Cheers!!!!&lt;br /&gt;&lt;br /&gt;Lastly and finally ... Many thanks to Abhi and Subhashini for providing such a wonderful opportunity and managing the whole show! Cheer!!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-111537073314905528?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/111537073314905528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/111537073314905528'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2005/05/singapore-microsofts-asia-mvp-meet.html' title='Singapore - The Microsoft&apos;s Asia MVP Meet'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-111295594233511750</id><published>2005-04-08T15:33:00.000+05:30</published><updated>2005-04-08T16:07:37.063+05:30</updated><title type='text'>Microsoft Community Alliance - Kanbay Inititative II</title><content type='html'>Finally here I am, with an update on the community initiative taken in Kanbay software - Pune.&lt;br /&gt;30th march was "D" day! The Microsoft group in Kanbay comprises of 30 odd developers, out of which 15 were present from the Pune center, during the session.&lt;br /&gt;&lt;br /&gt;Following are the details of the session conducted in Kanbay on 30th March 2005:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Topic&lt;/strong&gt;: OO features in .NET 2.0 (C#)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Speaker&lt;/strong&gt;: Sarang Datye (Me - ofcourse)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Duration&lt;/strong&gt;: 1 1/2 hours&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Total Attendance&lt;/strong&gt;: 15&lt;/li&gt;&lt;/ul&gt;The session, and this kind of an initiative was most appreciated and welcomed by the "janta", and we are looking forward to have many more such sessions in the coming weeks.&lt;br /&gt;&lt;br /&gt;Love Live the Community!!! Cheers!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-111295594233511750?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/111295594233511750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/111295594233511750'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2005/04/microsoft-community-alliance-kanbay.html' title='Microsoft Community Alliance - Kanbay Inititative II'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-111277155725266750</id><published>2005-04-06T12:30:00.000+05:30</published><updated>2005-04-06T12:42:37.253+05:30</updated><title type='text'>Introduction to .NET - IBMR Chinchwad!</title><content type='html'>2nd April 2005, I was invited by Institute of Business Management and Research - Chinchwad (IBMR), for enlightening the M.C.A. students with gyaan on .NET!&lt;br /&gt;&lt;br /&gt;The session was a 2 hour thingi, and totally there were 200+ students attending the session. Interestingly there was a lot of enthu amongst the students to take the first steps towards learning .NET!&lt;br /&gt;&lt;br /&gt;The HOD, Rupa madam, also mentioned that .NET is finally going to be part of the curriculum for MCA students, though as an optional course. Nevertheless, it's good that the university is atleast allowing the students to go ahead and learn upcoming technologies and that too...officially!!! :) Interesting ain't it?&lt;br /&gt;&lt;br /&gt;Soon enough I shall also conduct a 35 hours of training for this highly enthusiastic gang of learners in IBMR!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Cheers!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-111277155725266750?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/111277155725266750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/111277155725266750'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2005/04/introduction-to-net-ibmr-chinchwad.html' title='Introduction to .NET - IBMR Chinchwad!'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-111185324261179495</id><published>2005-03-26T21:14:00.000+05:30</published><updated>2005-03-26T21:37:22.613+05:30</updated><title type='text'>Microsoft Community Alliance in Pune - Kanbay Software takes the first initiative.</title><content type='html'>User groups is a great way to have tech-discussions online as well as offline. PuneUserGroup has been active (I wouldn't say hyperactive...I am striving for that to happen though) for more than 2 years now.&lt;br /&gt;&lt;br /&gt;There's a good deal of effort being made to get techies, technology and to-be techies together to discuss technology and thus effectively learn and share knowledge.&lt;br /&gt;&lt;br /&gt;One such initiative to foster community spirit is the MS Community Alliance. Many a times, most corporate "janta" cannot attend the UG meets or MSDN session, simply because they are too busy during weekdays and weekends :P, or maybe the travelling time and distance kills the entire spirit.&lt;br /&gt;&lt;br /&gt;The community alliance is an initiative, which allows corporates to form "on-campus" User group and community and drive the show there-on.  Also it doesn't stop there, but goes beyond this, where in, once many such corporates form their own "on-campus" communities, they need to integrate and interact with other such communities and thus expand the horizon of knowledge sharing.&lt;br /&gt;&lt;br /&gt;The first drive of this kind starts at Kanbay Software on 30th March 2005. The Microsoft technology group there has been taking a lot of initiative to get this going, and I am absolutely thrilled to see it happening for two reasons :)&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;This is the first initiative of its kind in Pune.&lt;/li&gt;&lt;li&gt;I am an ex-kanbayite! :D&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;On 30th March 2005 (Wednesday) I shall be speaking on:&lt;/p&gt;&lt;p&gt;1. Community objectives&lt;/p&gt;&lt;p&gt;2. OO Features in .NET Framework 2.0 (C#)&lt;/p&gt;&lt;p&gt;I shall return to this space with more inputs very very sooon....&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-111185324261179495?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/111185324261179495'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/111185324261179495'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2005/03/microsoft-community-alliance-in-pune.html' title='Microsoft Community Alliance in Pune - Kanbay Software takes the first initiative.'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-111182091295268578</id><published>2005-03-26T12:38:00.000+05:30</published><updated>2005-03-26T12:38:32.953+05:30</updated><title type='text'></title><content type='html'>&lt;a href='http://photos1.blogger.com/img/93/4353/640/Picture 003.jpg'&gt;&lt;img border='0' style='border:2px solid #660066; margin:2px' src='http://photos1.blogger.com/img/93/4353/320/Picture 003.jpg'&gt;&lt;/a&gt;&lt;br /&gt;Dude....&amp;nbsp;&lt;a href='http://www.hello.com/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbh.gif' alt='Posted by Hello' border='0' style='border:0px;padding:0px;background:transparent;' align='absmiddle'&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-111182091295268578?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/111182091295268578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/111182091295268578'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2005/03/dude.html' title=''/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-111138360596432099</id><published>2005-03-21T10:36:00.000+05:30</published><updated>2005-03-21T13:59:51.543+05:30</updated><title type='text'>Management Association of MCA Institutes - Conference</title><content type='html'>Saturday 19th March, a newly formed association "Management Association of MCA Institutes" had its first meet in Ahmednagar. 19th March was dedicated for Microsoft Technologies while 20th March was dedicated for Sun technologies.&lt;br /&gt;&lt;br /&gt;Nauzad Kapadia [MVP], Tejas Shah [Microsoft] and I (Sarang Datye) [MVP] were to drive the sessions on Microsoft technologies. Nauzad started off with a session on Microsoft .NET Framework introduction. Tejas took up an overview of application development in .NET where he focused on ASP.NET Web Services and mobile applications. I concluded with an insight on .NET where I demoed ILDASM, GAC, VS.NET IDE and finally talked about ASP.NET architecture.&lt;br /&gt;&lt;br /&gt;The attendees were professors, HOD's and Directors of various MCA institutes in Maharashtra. The Vice Chancelor of Pune also made his presence felt post lunch! And he addressed issues such as outdated cuurriculum and how to make the course ware more industry oriented, etc.&lt;br /&gt;&lt;br /&gt;Hands-on lab was setup by the organizers which unfortunately didn't turn out well, because the supporting hardware was inadequate. Nevertheless, to ensure that the attendees don't feel too unhappy about the fact that they couldn't really practice what they learnt in the pre-lunch session, me and Nauzad took up an on-stage demo on developing simple web and windows applications and web services using VS.NET 2003.&lt;br /&gt;&lt;br /&gt;Soon after the last session we packed up and left for Pune. Overall it was a good initiative and students will surely benefit if this sprit soars high!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-111138360596432099?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/111138360596432099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/111138360596432099'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2005/03/management-association-of-mca.html' title='Management Association of MCA Institutes - Conference'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-111138433806625172</id><published>2005-03-20T11:10:00.000+05:30</published><updated>2005-04-06T13:56:14.333+05:30</updated><title type='text'>Get Web Services to Work in Office!</title><content type='html'>&lt;p&gt;Hi, &lt;/p&gt;&lt;p&gt;Here's a cool way to integrate web services in Microsoft Office.&lt;/p&gt;&lt;p&gt;First and foremost, we need to download a tool which allows creation of a proxy class. One can choose to write his/her own class also, but there's already tool available which automates the effort of creating a VBA class module.&lt;/p&gt;&lt;p&gt;Download the Microsoft Office 2003 Web Services Toolkit 2.01 from the following URL: &lt;/p&gt;&lt;p&gt;&lt;a title="http://www.microsoft.com/downloads/details.aspx?familyid=" href="http://www.microsoft.com/downloads/details.aspx?familyid=%20fa36018a-e1cf-48a3-9b35-169d819ecf18&amp;displaylang=en" target="_blank" displaylang="en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=%20fa36018a-e1cf-48a3-9b35-169d819ecf18&amp;amp;displaylang=en&lt;/a&gt;&lt;/p&gt;Once you do that, execute the downloaded file. This will integrate the addin with VBA.&lt;br /&gt;&lt;br /&gt;After that's done we are ready to go and use the toolkit to call our webservices.&lt;br /&gt;1. Open Microsoft Excel.&lt;br /&gt;2. Open the Control ToolBox from View --&gt;Toolbars&lt;br /&gt;3. Add a command button to the sheet.&lt;br /&gt;4. Double click on the button to write the VBA code for the button click event.&lt;br /&gt;5. In the VBAProject window that is opened, go to Tools and click on Web Service References. (If you have installed the toolkit, you should see this menu option).&lt;br /&gt;6. This will open Microsoft Office Web Services Toolkit dialog.&lt;br /&gt;7. You can either search for your web service or simply provide a url for the same.&lt;br /&gt;8. Select the Web Service URL option and provide the URL to the ASMX file, e.g.&lt;br /&gt;&lt;a title="http://localhost/WebService1/Service1.asmx" href="http://localhost/WebService1/Service1.asmx" target="_blank"&gt;http://localhost/WebService1/Service1.asmx&lt;/a&gt;&lt;br /&gt;and then click on Search. The Search Result will list out the service if it finds one. Select the checkbox for the Service and click on the Add button.&lt;br /&gt;9. This will create a class module for you with the name "clsws_Service1".10. Now in your VBA button1_Click procedure, you can simply type the following:&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;Dim ws as New clsws_Service1&lt;/span&gt;&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;&lt;span style="color:#3366ff;"&gt;MsgBox(ws.HelloWorld())&lt;/span&gt;&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;You can use this toolkit to integrate your webservices with all the products in the Microsoft Suite.&lt;br /&gt;&lt;br /&gt;Now isn't that cool!!!??&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-111138433806625172?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/111138433806625172'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/111138433806625172'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2005/03/get-web-services-to-work-in-office.html' title='Get Web Services to Work in Office!'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-111104435641953675</id><published>2005-03-17T12:48:00.000+05:30</published><updated>2005-03-17T13:26:26.216+05:30</updated><title type='text'>'Out of memory exception' in .NET!!!</title><content type='html'>Sometimes for large applications one might end up getting "Out of Memory Exception". In that case here are a couple of things that you can verify:&lt;br /&gt;&lt;br /&gt;1. Any object that is larger than 85K goes to Generation  2 (0, 1 &amp; 2) and the clean up is very costly in this generation. So the percentage time is very high if objects are frequently going in generation2 and then die shortly thereafter! Also note that GC.Collect will not ensure / promise a Generation2 collection&lt;br /&gt;&lt;br /&gt;2. Check the link below:&lt;br /&gt;&lt;a href="http://forums.devbuzz.com/tm.asp?m=35911&amp;amp;p=1&amp;tmode=1" target="_blank"&gt;http://forums.devbuzz.com/tm.asp?m=35911&amp;amp;p=1&amp;amp;tmode=1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3. I am assuming you have Framework 1.1 with SP1 installed. If not, go to the link below to find out more.&lt;br /&gt;&lt;a href="http://support.microsoft.com/default.aspx?kbid=825680"&gt;http://support.microsoft.com/default.aspx?kbid=825680&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4. You might want to consider using the "using" block in C# (if you are programming in c#) to scope your objects and ensure that they get disposed as soon as they are out of the scope!&lt;br /&gt;&lt;br /&gt;5. I am also assuming that you are not using Finalizers / Destructors if you are using C#. This kills performance.&lt;br /&gt;To measure memory, check up GlobalMemoryStatus &lt;a href="http://msdn.microsoft.com/smartclient/understanding/netcf/FAQ/default.aspx#6.5" target="_blank"&gt;http://msdn.microsoft.com/smartclient/understanding/netcf/FAQ/default.aspx#6.5&lt;/a&gt;&lt;br /&gt;Also check out GC.GetTotalMemory&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemgcclassgettotalmemorytopic.asp" target="_blank"&gt;http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemgcclassgettotalmemorytopic.asp&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;6. CLR profiler is yet another tool that can help you get a snap shot of the managed heap before the objects are disposed and after the objects are disposed. So memory leaks can be found out pretty easily.&lt;br /&gt;&lt;br /&gt;Will add more here as and how I read more and research more.&lt;br /&gt;&lt;br /&gt;Cheers!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-111104435641953675?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/111104435641953675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/111104435641953675'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2005/03/out-of-memory-exception-in-net.html' title='&apos;Out of memory exception&apos; in .NET!!!'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-111088228788311533</id><published>2005-03-15T14:41:00.000+05:30</published><updated>2005-04-06T13:53:22.256+05:30</updated><title type='text'>ADO.NET session in Sinhagad College of Engineering (SCOE)</title><content type='html'>&lt;strong&gt;Saturday, 12th March 2005,&lt;/strong&gt; Mahesh finally confirms on a full day workshop on .NET in his college..Sinhagad College of Engineering (SCOE). Akila [Microsoft MVP] and Dhaval are scheduled to come down on the 13th morning to Pune.&lt;br /&gt;Mahesh calls me up and asks me, if I will be able to make my presence felt during this workshop...."Sure, I will drop in after 12:00" I confirm!&lt;br /&gt;&lt;br /&gt;13th afternoon I catch up with Akila, Dhaval and the rest of the gang in Sinhagad College of Engineering (SCOE) during lunch time.....Obviously couldn't resist myself from feeling hungry all of a sudden...had to join them right away. During lunch, Akila updates me on what she's already covered in the pre-lunch sessions....typically ASP.NET architecture and basics, and then she simply, nicely delegates the next session "Data Access in .NET using ADO.NET" to me...!&lt;br /&gt;&lt;br /&gt;I guess ever since DevCon I have got into this habit of &lt;strong&gt;spontaneously&lt;/strong&gt; compiling stuff for a session/ presentation and then speaking on the topic at &lt;strong&gt;"run-time"!&lt;/strong&gt; &lt;strong&gt;(Needless to say I AM LAZY!!!) &lt;/strong&gt;Just before the session Akila allows me to choose from a couple of presentations that she had managed to persist on her laptop for ADO.NET! I simply pick up one that looks nice (I mean actually "looks nice" :)) ...knowing the fact that I am hardly going to refer to slides...And then a typical tech-talk follows on ADO.NET with some "hands-on " on using the various objects in the ADO.NET object model. Amazingly the students pick up the general workflow or the sequence of doing things pretty fast. I wonder if it's the intuitive interface of VS.NET or my speaking skills! :D Soon after my session Akila takes control to proceed towards &lt;strong&gt;viewstates &lt;/strong&gt;and &lt;strong&gt;sessions&lt;/strong&gt; in .NET!&lt;br /&gt;&lt;br /&gt;4:15 I get a call from a close pal to get going for a promised movie-watch! That's when I call it quits and I am on my way for a freaking weekend!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;All weekends have been pretty exciting for the last 2 months....I have been visiting some college or the other and propogating .NET! hehehe!&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Saturday, 19th March 2005, there's a state level tech-seminar happening in Ahmednagar. And one full day is been reserved for Microsoft Technologies. Nauzad [MS MVP], Tejas Shah[Microsoft] and I &lt;/strong&gt;are supposed to be a part of this event to conduct some sessions/workshops on .NET! So keep watching this space for more updates on the community front in and around the Pune region.&lt;br /&gt;&lt;br /&gt;Cheers!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-111088228788311533?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/111088228788311533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/111088228788311533'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2005/03/adonet-session-in-sinhagad-college-of.html' title='ADO.NET session in Sinhagad College of Engineering (SCOE)'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-111034727874223249</id><published>2005-03-08T11:58:00.000+05:30</published><updated>2005-03-09T11:17:58.743+05:30</updated><title type='text'>Transitioning to Sungard!!!</title><content type='html'>The last 9 months were pretty tough :D....virtually staying away from the community!!! I have transitioned from my current job (ITB Computer Services) to yet another job (Sungard Offshore Services), which means moving from a Health Care domain to Finance Domain, which in turn opens up a good deal of opportunities in getting hooked on to this new and an interesting domain.&lt;br /&gt;&lt;br /&gt;Keep reading...!&lt;br /&gt;&lt;br /&gt;Cheers!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-111034727874223249?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/111034727874223249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/111034727874223249'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2005/03/transitioning-to-sungard.html' title='Transitioning to Sungard!!!'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-109982049003721188</id><published>2004-11-07T14:50:00.000+05:30</published><updated>2004-11-07T15:25:46.736+05:30</updated><title type='text'>Connect to Excel using ADO.NET</title><content type='html'>It is absolutely possible to connect to MSExcel and read / insert data using ADO.NET.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;How do we do that?&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;DB Provider to connect to Excel: We can go ahead and use ODBC provider for Excel. Typically this is installed with MS Excel. If you do not have Excel on your mahcine then you can download the provider from the MS site.&lt;/li&gt;&lt;li&gt;Create a connection string to connect to Excel as follows:&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#00cccc;"&gt;string connString = "Driver={Microsoft Excel Driver (*.xls)};DriverId=790;Dbq=C:\\MyTestExcel.xls;"&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;Then create a ODBC connection as follows:&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#00cccc;"&gt;OdbcConnection conn = new System.Data.Odbc.OdbcConnection(connString);&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;Then create a ODBC Command, which will allow us to retrieve the data that we want:&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#00cccc;"&gt;OdbcCommand cmd = new OdbcCommand("Select * from [Sheet1$]", conn);&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;Note: The &lt;strong&gt;Sheet name must end with a ($) dollar sign and must be enclosed in square brackets&lt;/strong&gt; else be ready to face syntax errors! :)&lt;/li&gt;&lt;li&gt;Now we need an adapter to plumb the data out of the excel file, so go ahead and create an ODBCDataAdapter as follows:&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#00cccc;"&gt;OdbcDataAdapter da = new OdbcDataAdapter(cmd);&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;Finally create a dataset and call the fill method of the dataadapter to fetch the data out of excel as follows:&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#00cccc;"&gt;DataSet ds = new DataSet();&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;conn.Open();&lt;br /&gt;da.Fill(ds);&lt;br /&gt;}&lt;br /&gt;catch (Exception ex)&lt;br /&gt;{&lt;br /&gt;MessageBox.Show(ex.Message);&lt;br /&gt;}&lt;br /&gt;finally&lt;br /&gt;{&lt;br /&gt;con.Close();&lt;br /&gt;}&lt;/span&gt;&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;I am just ensuring that the connection is opened and the fetching of data is done in a try...catch...finally block, just in case of exceptions ;)&lt;/p&gt;&lt;p&gt;Finally you can bind your dataset to a field or a datagrid on your form like:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="color:#00cccc;"&gt;dataGrid1.DataSource = ds;&lt;br /&gt;dataGrid1.DataMember = "Table";&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Again notice that since Excel doesn't have tables per say, whenever we fetch the data from excel, the default name of the datatable contained in the dataset will be "Table".&lt;/p&gt;&lt;p&gt;Note: One can even choose to use Interop, but that requires to have Excel installed on your machine!&lt;/p&gt;&lt;p&gt;That was easy ain't it?&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-109982049003721188?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/109982049003721188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/109982049003721188'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2004/11/connect-to-excel-using-adonet.html' title='Connect to Excel using ADO.NET'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-109920208532356533</id><published>2004-11-01T12:55:00.000+05:30</published><updated>2004-10-31T11:33:51.220+05:30</updated><title type='text'>One way web methods</title><content type='html'>We all know, that we can make web service calls asynchronously. When we do it in this fashion, the client waits on a separate thread for the call to return. But in some cases we might want to trigger some action on the client side...thats it. We might not be interested in knowing whether the action that was triggered successfully executed or not. All that we might be interested in knowing would be, if the action was triggered? So it's like a fire and forget situation. E.g. take this blog site that I am using. I might be wanting to rebuild the index of my site. So if the site just provides me with a link which says "Click here to rebuild the index" and on click of which, it just returns me a message that "The process has been initiated and you will receive a mail on completion of the task". This keeps me / client sw away from the details like whats going on , how much time its gonna take, why am i not shown some kinda result, etc etc. To achieve this functionality we can use the "oneway" property of the SoapDocumentMethod / SoapRPCMethod attribute to decorate the web method. Here's how one would go about doing it:&lt;br /&gt;&lt;br /&gt;[SoapDocumentMethod(OneWay = true)]&lt;br /&gt;[WebMethod]&lt;br /&gt;public void DoSomeComplexTimeConsumingTask&lt;br /&gt;{&lt;br /&gt;//take ages to comeplete this task :)&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;I am assuming that the WS is using the SOAP document encoding (default) as a result of which I am using the [SoapDocumentMethod] attribute. If the WS is using RPC encoding, we will have to use [SoapRPCMethod] attribute.&lt;br /&gt;&lt;br /&gt;Everything comes at a price. Here are a few things that are an effect of using this technique:&lt;br /&gt;1. The client no longer needs to wait till the web method executes.&lt;br /&gt;2. Any exceptions thrown are not sent back to the client. In fact the webmethod acannot convey any return values or ref params back to the client, obviously as the name suggests it's a One-way method. :)&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-109920208532356533?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/109920208532356533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/109920208532356533'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2004/10/one-way-web-methods.html' title='One way web methods'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-109863213305327051</id><published>2004-10-24T21:35:00.000+05:30</published><updated>2004-10-24T21:17:51.203+05:30</updated><title type='text'>Dynamic URL in Web Services</title><content type='html'>I used to wonder that whenever a proxy class is created for the webservice, the URL of the webservice is actually hardcoded in constructor of the class as follows:&lt;br /&gt;&lt;br /&gt;public MyClass&lt;br /&gt;{&lt;br /&gt;this.Url = &lt;a href="http://localhost/WebServices/Service1.asmx"&gt;http://localhost/WebServices/Service1.asmx&lt;/a&gt;";&lt;br /&gt;}&lt;br /&gt;To make this url dynamic here's simply what one needs to do:&lt;br /&gt;&lt;br /&gt;In the web services's proxy class's properties, change the URL behaviour to "Dynamic". Note: By default it is "static". After changing it to Dynamic, a .config file will be created in our application directory. For web apps, it is plain web.config file for all other apps it is Appname.exe.config.&lt;br /&gt;&lt;br /&gt;This file will contain a xml tag as follows:&lt;br /&gt;&lt;br /&gt;configuration&lt;br /&gt;appsettings&lt;br /&gt;&lt; key="WindowsApplication1.Myws.Service1" value="http://127.0.0.1/TestWS/service1.asmx"&gt;&lt;br /&gt;&lt; /appSettings &gt;&lt;br /&gt;&lt; /configuration &gt;&lt;br /&gt;&lt;br /&gt;note: I have skipped the "less than" and "greater than" signs for the configuration and appsettings elements as it doesn't get rendered on the pages properly.&lt;br /&gt;&lt;br /&gt;Once the configuration is done, our application needs a slight modification to incorporate this change.&lt;br /&gt;&lt;br /&gt;So our constructor will now need to look something like this:&lt;br /&gt;public MyClass&lt;br /&gt;{&lt;br /&gt;string mydynamicurl = ConfigurationSettings.AppSettings("WindowsApplication1.Myws.Service1");&lt;br /&gt;&lt;br /&gt;if(mydynamicurl.Length == 0)&lt;br /&gt;{&lt;br /&gt;this.Url = &lt;a href="http://localhost/WebServices/Service1.asmx"&gt;http://localhost/WebServices/Service1.asmx&lt;/a&gt;";&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;this.Url = mydynamicurl;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Once that is done, we can modify the Web Service URL without the need to recompile the application. All that needs to be done is to change the web.config file. :)&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/8758373-109863213305327051?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/109863213305327051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/109863213305327051'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2004/10/dynamic-url-in-web-services.html' title='Dynamic URL in Web Services'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-109828309922653956</id><published>2004-10-21T08:31:00.000+05:30</published><updated>2004-10-20T20:39:02.240+05:30</updated><title type='text'>Drag Drop and MouseUp mystery solved</title><content type='html'>The DoDragDrop method, when called for a control, eats up the mouseup event till the drag drop operation doesn't complete.&lt;br /&gt;&lt;br /&gt;I was facing this problem for a scenario where, I wanted to initiate the DoDragDrop operation on mousedown event on a custom control dervied from Component One Grid and wanted to do some selection operation on MouseUp event.&lt;br /&gt;&lt;br /&gt;When I coded the DoDragDrop action in MouseDown event it would simply eat up the mouseup event on which I had coded something else. As a result, I had to click twice on my control for the selection to happen.&lt;br /&gt;&lt;br /&gt;After some bit of R&amp;amp;D I finally got through this situation. Here's what I did:&lt;br /&gt;&lt;br /&gt;1. Maintained a boolean flag to check if mousedown or not - call it _IsMouseDown&lt;br /&gt;2. In the MouseDown event I set this flag to true.&lt;br /&gt;3. In the MouseUp event I set the flag to false&lt;br /&gt;4. I also handle the MouseMove event. I did some bit of extra coding in here. Here's what I do in MouseMove:&lt;br /&gt;a. First I check if the MouseMove is about to result in the cursor going outside the bounds of my control. If Yes then I set a flag _ShouldDragDrop to true else it remains false.&lt;br /&gt;b. To check if the bounds are going outside my control or not, I convert the mouse co-ordinates that I got from the MouseEventArgs to Screen co-ordinates using the PointToScreen method of the parent control. And then I again convert it to client co-ordinates as per the Parent control of my control. (Note: The Parent control is a container for the Component One Grid control and the grid control's dockstyle is set to fill)&lt;br /&gt;c. Then with respect to my parent control's topleft and bottom right corners if the mouse cursor is inside thse bounds then do not start the drag drop operation else when the cursor goes outside these bounds, start the DoDragDrop action.&lt;br /&gt;&lt;br /&gt;Now, since the DoDragDrop operation doesnt happen till the cursor goes outside the bounds of my control, the MouseUp event on my control doesn't get eaten up and at the same time when the control is going outside my control the dragdrop operation automatically starts. :)&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/8758373-109828309922653956?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/109828309922653956'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/109828309922653956'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2004/10/drag-drop-and-mouseup-mystery-solved.html' title='Drag Drop and MouseUp mystery solved'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-109811099967584783</id><published>2004-10-18T20:49:00.000+05:30</published><updated>2004-10-18T20:19:59.676+05:30</updated><title type='text'>DOOM III</title><content type='html'>My latest fascination is DOOM III, the game. I used to spend hours playing DOOM I &amp; II when I was in college.&lt;br /&gt;&lt;br /&gt;And NOW, DOOM III. Gosh, never seen anything so scary. With a sexy amplifier and a surround sound effect, I bet it's not easy to take on that game for more than an hour!&lt;br /&gt;&lt;br /&gt;Have to complete it soon. Wouldn't feel satisfied without completing it :)&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/8758373-109811099967584783?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/109811099967584783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/109811099967584783'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2004/10/doom-iii.html' title='DOOM III'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-109801820077340720</id><published>2004-10-18T07:04:00.000+05:30</published><updated>2004-10-17T18:43:56.133+05:30</updated><title type='text'>A simple way to enable Authentication in .NET Web Services</title><content type='html'>When Nauzad was in Pune for a the PUG Session on the 9th, he gave a cool demo on Web Services. Here are a few snap shots of that code:&lt;br /&gt;&lt;br /&gt;Typically, if we would want to provide our own authentication logic in web services, we would go about modifying the web.config file. We would be primarily interested in modifying the Authentication tag where we will change the mode of authentication from Windows to Forms. This will enable us to provide our own redirection url or our own custom built authentication logic.&lt;br /&gt;&lt;br /&gt;Once that's done we would typically go about using the FormsAuthentication class under System.Web.Security namespace to create an authentication cookie for the "logged in" user.&lt;br /&gt;The SetAuthCookie method of this class will go ahead and create a cookie for us. We have an option to either persist the cookie or we can choose not to persist the cookie :D Absolutely depends on how you would go bout implementing it.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Once our user is validated, we can ensure that that he is an authenticated user through the User property of the WebService object. We can simply check that using the User.Identity.IsAuthenticated flag. That in very simply words shows how to implement authentication in web services. Refer to the code below:&lt;br /&gt;&lt;br /&gt;------------------------------------------------------------------------------------&lt;br /&gt;WEB.CONFIG File&lt;br /&gt;------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;authentication mode="Forms"&gt;&lt;br /&gt;&lt;br /&gt;authentication mode="Forms"&lt;br /&gt;forms name="addcookie" loginUrl="login.aspx" protection="All" timeout="30" path="/" requireSSL="false" slidingExpiration="true"&lt;br /&gt;&lt;br /&gt;------------------------------------------------------------------------------------&lt;br /&gt;SERVICE1.ASMX&lt;br /&gt;------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[WebMethod]&lt;br /&gt;public int add(int a, int b)&lt;br /&gt;{&lt;br /&gt;if(User.Identity.IsAuthenticated)&lt;br /&gt;{&lt;br /&gt;return a+b;&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;return 0;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;[WebMethod]&lt;br /&gt;public bool Login (string username, string password)&lt;br /&gt;{&lt;br /&gt;if(username == "sdatye")&lt;br /&gt;{&lt;br /&gt;FormsAuthentication.SetAuthCookie(username, false);&lt;br /&gt;return true;&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;return false;&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/8758373-109801820077340720?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/109801820077340720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/109801820077340720'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2004/10/simple-way-to-enable-authentication-in.html' title='A simple way to enable Authentication in .NET Web Services'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-109801723974036611</id><published>2004-10-17T11:15:00.000+05:30</published><updated>2004-10-17T18:17:19.740+05:30</updated><title type='text'>eXperience at PICT college - Part 2</title><content type='html'>I was now all set for the presentation in PICT college for the eXperience event. I had purposely got my presentation scheduled last as the co-ordinators said that each presenter would get only 30 to 45 minutes. I simply shrugged my shoulders and told him, "Boss, if you want me to go blah blah over web services and yet ensure that no body understands anything then I do not mind cutting short on my session :)" Finally we decided to get me into the last slot so I can continue forever :). As expected, my session, which was scheduled to start at 3:30 started at 5:30 - all the speakers had by then realized that 30 minutes of talk is not going to be enough to convey their thoughts across. So, everyone conveniently add +30 minutes to their sessions. Finally, it was time for my session. I started off by apologizing, not for the delay, but for the fact that I am also going to add +30 minutes to my session to stretch it over 1 hour :D.I had created a presentation which was a decent mix of some of the web services presentations on the MVP portal + some slides of my own + some demos. Thanks to Nauzad for giving some tips and demos on the Authentication bit in web services. We had exciting demos on XML serializing, Asynchronous Web method calls and Authentication in web services. Just to mention one more thing out here, before the session started, me and Hardik decided to distribute our own feedback forms. And we had forgotten to get a copy of the feedback form. I called up Abhi and checked with him but he was in no position to mail me the forms. So I and Hardik quickly create a feedback form on my laptop and hardik managed to get some print outs from a nearby net cafe before the session started.Lastly, I got a rating of 4 and 5 on a scale of 1 -5 (1 = worst 5 = Best).So overall it was worth the effort. The HOD of PICT himself appreciated the effort and also requested to have further such sessions being conducted for his students.:D&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-109801723974036611?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/109801723974036611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/109801723974036611'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2004/10/experience-at-pict-college-part-2.html' title='eXperience at PICT college - Part 2'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-109801713803271004</id><published>2004-10-17T11:11:00.000+05:30</published><updated>2004-10-17T18:15:38.033+05:30</updated><title type='text'>eXperiance and PICT college - Part I</title><content type='html'>Yesterday was a pretty exciting day. I was all set to speak on .NET WebServices in an event - "eXperience" in PICT college in Pune. In the morning I decide to quickly go through my demos and ...ooops! The demos were not working! "Cannot connect to remote server..blah blah blah". After doing some initial R&amp;amp;D, I decided to seek help over the wire. I found a hugh load of info, but nothing that would really solve my problem! Suddenly I got this brain wave to rename the webservice url in my proxy with the IP instead of localhost. And it worked!!!! But, wait a minute, how did that work. Until yesterday things were working fine and all of a sudden how. I was completely baffeled! I called up Nauzad and asked him if he has any clues. While discussing things with him, I suddenly remembered that I had installed Win SFU 2 days back. Mr Wizy said that it modifies the hosts file and I need to correct things out there. After thanking him I got off the internet and uninstalled sfu and rebooted the system! This time all set to run the web services demos! AND AGAIN THINGS WERE NOT WORKING !!!!!! This put me into a thought as to what might have made the demos work when I had searched for info on the web! And then I got the answer! The culprit was not SFU but it was the EZ Firewall software installed on my machine. This software I start explicitly when I have to connect to the internet. So I decided to just give it a try and LO and BEHOLD the demos started working perfect after starting this firewall. Also, the hosts file was not completely modified by the SFU but by this firewall. I will post more details on what was modified in my host file later.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-109801713803271004?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/109801713803271004'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/109801713803271004'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2004/10/experiance-and-pict-college-part-i.html' title='eXperiance and PICT college - Part I'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-109801681272642712</id><published>2004-10-09T13:56:00.000+05:30</published><updated>2004-10-17T18:10:12.726+05:30</updated><title type='text'>PUG meet - .NET Remoting and Web Services</title><content type='html'>We had an exciting session on .NET Remoting taken up by Harsha Kumar, a student from Cummins College of Engg for Women. Then I did a quick presentation on web services and xml serialization in web services. We had a guest appearance from Nauzad [MVP from Bombay] who incidently gave a cool demo on authentication in web services.&lt;br /&gt;Some of the dudes in the UG, Hardik, Mahesh, Rohit, etc managed to get a nice black forest pastry for me since I recently became a Microsoft MVP.&lt;br /&gt;After the UG meet, we all went for dinner at Hotel Olivia. We had a great time there and topics ranging from Longhorn to Gayatri Deshpande came up! :)&lt;br /&gt;Who is Gayatri Deshpande is for me to know and you to guess!&lt;br /&gt;&lt;br /&gt;After a heavy dinner we all quit for the day!&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-109801681272642712?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/109801681272642712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/109801681272642712'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2004/10/pug-meet-net-remoting-and-web-services.html' title='PUG meet - .NET Remoting and Web Services'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-109801586605103918</id><published>2004-10-09T12:51:00.000+05:30</published><updated>2004-10-17T17:54:26.050+05:30</updated><title type='text'>Student Chapter Started in Cummins college of Engg</title><content type='html'>After a long wait, finally we managed to start with a .NET Chapter in Cummins College of Engg for Women. Hardik gave an impressive presentation on INETA's and Microsoft Academic Initiatives. I finished up with an introduction to .net.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-109801586605103918?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/109801586605103918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/109801586605103918'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2004/10/student-chapter-started-in-cummins.html' title='Student Chapter Started in Cummins college of Engg'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-109810859199187387</id><published>2004-10-02T19:33:00.000+05:30</published><updated>2004-10-18T19:39:51.990+05:30</updated><title type='text'>MVP!!!</title><content type='html'>September 30th, I come home exhausted with 12 hours of work. I get online to check my mails and Akila wishes me! "congrats!!!". I was like "huh!! for what??"&lt;br /&gt;Akila: "You are now a Microsoft MVP!!!"&lt;br /&gt;Me: "no kidding :O" hehehe&lt;br /&gt;&lt;br /&gt;I just couldn't believe that I am soon gonna end up sacrificing my sleep because of all the excitement. But it was worth it.  October 1, 2004 I get an official mail from Abhi informing me about being nominated as an MVP! Wow!&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/8758373-109810859199187387?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/109810859199187387'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/109810859199187387'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2004/10/mvp.html' title='MVP!!!'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-109801523305438732</id><published>2004-09-21T09:40:00.000+05:30</published><updated>2004-10-17T17:43:53.053+05:30</updated><title type='text'>.NET WorkShop in Gujarat - Anand</title><content type='html'>It was a wonderful experience to conduct a workshop on .NET in Gujarat. It was a two day, 20 hours thing that i conducted on a weekend in a college in Anand - Gujarat.&lt;br /&gt;The college (ECCHANGA) is 4 year old college which has amazing bit of facilities and infrastructure to support the students. Totally they occupy an are of 43 acres and are negotiating for 50 more acres :O !&lt;br /&gt;I was excited to do my first session of the kind outside my own city. And suprisingly I was greeted with a total strength of 300+ students. As they call it in hindi - "paisa vasool". :)&lt;br /&gt;The college had organized things extremely well. They had equipped their lab (8 labs) with VS.NET 2003 and SQL Server client installations for this session. What more can one ask for :)&lt;br /&gt;I covered various topics on .NET, right from Introduction to .NET to Window Application development, Web Application development, Web Services development to Mobile application development.&lt;br /&gt;Not to forget an amazing facility that I saw in their classrooms...a 512 kbps internet connection in each classroom!!!!! Also, I must say a really well planned thing, because all the network lines were concealed and built-in when the building was constructed.&lt;br /&gt;&lt;br /&gt;In short all I can say about it is WOW!&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-109801523305438732?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/109801523305438732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/109801523305438732'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2004/09/net-workshop-in-gujarat-anand.html' title='.NET WorkShop in Gujarat - Anand'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry><entry><id>tag:blogger.com,1999:blog-8758373.post-109801567592950085</id><published>2004-09-13T05:44:00.000+05:30</published><updated>2004-10-17T17:51:15.930+05:30</updated><title type='text'>Ashwani's visit to Pune</title><content type='html'>Ashwani Sharma was visting Pune on the 10th and 11th of Sept 2004. Unfortunately I could not really spend much time with him on the 10th. But on the 11th we managed to go to VIT college of engineering and also ALLANA institute. These are the places where we intend to / have Studnet chapters started for .NET.&lt;br /&gt;Hardik, Mahesh, Ashwani, and a few other, we had a great time in burger king. Fun is the word!&lt;br /&gt;&lt;br /&gt;It was great to have him here and spare time for PUG.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8758373-109801567592950085?l=sarangdatye.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/109801567592950085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8758373/posts/default/109801567592950085'/><link rel='alternate' type='text/html' href='http://sarangdatye.blogspot.com/2004/09/ashwanis-visit-to-pune.html' title='Ashwani&apos;s visit to Pune'/><author><name>Sarang Datye</name><uri>http://www.blogger.com/profile/08771233458059459307</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></entry></feed>
