<?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-13490364</id><updated>2012-05-01T04:38:47.188-07:00</updated><title type='text'>Geeky Thoughts</title><subtitle type='html'>From Ideas to Innovations...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://thoughtsofanerd.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default'/><link rel='alternate' type='text/html' href='http://thoughtsofanerd.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Enjoy Life!!</name><uri>http://www.blogger.com/profile/13643498440435913092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://www2.cs.uh.edu/~ppsarda/Share/Punnu.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>24</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-13490364.post-8793281257857916178</id><published>2007-01-24T17:11:00.000-08:00</published><updated>2007-01-24T17:12:05.277-08:00</updated><title type='text'>I have moved</title><content type='html'>Find me at &lt;a href="http://puneetsarda.com"&gt;http://puneetsarda.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13490364-8793281257857916178?l=thoughtsofanerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtsofanerd.blogspot.com/feeds/8793281257857916178/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13490364&amp;postID=8793281257857916178&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/8793281257857916178'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/8793281257857916178'/><link rel='alternate' type='text/html' href='http://thoughtsofanerd.blogspot.com/2007/01/i-have-moved.html' title='I have moved'/><author><name>Enjoy Life!!</name><uri>http://www.blogger.com/profile/13643498440435913092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://www2.cs.uh.edu/~ppsarda/Share/Punnu.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13490364.post-114959526929776320</id><published>2006-06-06T04:48:00.000-07:00</published><updated>2006-10-14T11:33:05.475-07:00</updated><title type='text'>On Error Reporting in UI</title><content type='html'>&lt;div style="text-align: justify;"&gt;With .NET, it became quite common for Developers to use exception handling. Error handling was now possible in a very systematic way.&lt;br /&gt;&lt;br /&gt;However, when it comes to informing the user about an exception or even trivial errors on the his part, there are 3 classes of applications I have seen.&lt;br /&gt;&lt;br /&gt;The first one is the one which shouts at the users for making mistakes. Message Boxes popping everywhere for every small mistake the user made or any exception he caused. Informative messages to recover from error is one thing but showing message boxes for validation mistakes is just too much.&lt;br /&gt;&lt;br /&gt;The second one is where error reporting has some subtleness in it. There would be icons to indicate what has gone wrong, what fields are mandatory etc... This is a much "classier" approach than the previous one where you keep increasing messageboxes and hence the number of clicks for the user. Errorproviders in Winforms and Validation Controls in ASP.NET are a good example of the 2nd kind.&lt;br /&gt;&lt;br /&gt;However the third kind and the one I prefer the most are the ones which take a step before implementing the above subtleness. They take care to make the UI experience such that the user has minimal opportunity to cause errors or validations. For a simple example, we use a third party product as a plugin in our system. When our user searches for information using that product, even before the results have come, he hits the "Add" button to add something to the shopping cart. This almost always results in an exception or the plugin crashing. Simply disabling the "Add" button till the results are back would not only avoid this crash but also give a visual cue to the user that he needs to wait. In situations like this, instead of working on educating the user for such things, I believe, it is the programmers job to manage such intricacies.&lt;br /&gt;&lt;br /&gt;So for your apps, make sure your error reporting is subtle and the opportunity for the user to make errors or exceptions happen is minimal.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13490364-114959526929776320?l=thoughtsofanerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtsofanerd.blogspot.com/feeds/114959526929776320/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13490364&amp;postID=114959526929776320&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/114959526929776320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/114959526929776320'/><link rel='alternate' type='text/html' href='http://thoughtsofanerd.blogspot.com/2006/06/on-error-reporting-in-ui.html' title='On Error Reporting in UI'/><author><name>Enjoy Life!!</name><uri>http://www.blogger.com/profile/13643498440435913092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://www2.cs.uh.edu/~ppsarda/Share/Punnu.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13490364.post-114947440042996083</id><published>2006-06-04T19:10:00.000-07:00</published><updated>2006-10-14T11:33:05.411-07:00</updated><title type='text'>Code Samples for WPF Session.</title><content type='html'>I have uploaded the samples and presentation for the WPF session at NJ Code Camp. You can get it via this &lt;a target="_blank" href="http://njcodecamp.org/files/5/nj_code_camp_2/default.aspx"&gt;link&lt;/a&gt;. I have modified images for copyright reasons. Also I have not included the font for same reason.&lt;br /&gt;&lt;br /&gt;WPF Bloggers -- Find them via this &lt;a target="_blank" href="http://blogs.msdn.com/tims/articles/475132.aspx"&gt;link&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;I am thankful to all those who attened my session and voted for me. I won the Best Speaker award thanks to your votes. Thank you for your appreciation.&lt;br /&gt;&lt;br /&gt;If I promised you something  in the session that I would post on my blog but forgot to do so, please let me know.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13490364-114947440042996083?l=thoughtsofanerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtsofanerd.blogspot.com/feeds/114947440042996083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13490364&amp;postID=114947440042996083&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/114947440042996083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/114947440042996083'/><link rel='alternate' type='text/html' href='http://thoughtsofanerd.blogspot.com/2006/06/code-samples-for-wpf-session.html' title='Code Samples for WPF Session.'/><author><name>Enjoy Life!!</name><uri>http://www.blogger.com/profile/13643498440435913092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://www2.cs.uh.edu/~ppsarda/Share/Punnu.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13490364.post-114937285867778762</id><published>2006-06-03T15:11:00.000-07:00</published><updated>2006-10-14T11:33:05.353-07:00</updated><title type='text'>WPF Session at NJ Code Camp</title><content type='html'>&lt;div style="text-align: justify;"&gt;I had a great time speaking at the NJ Code Camp on 3rd June. For those of you who attended my session, I will be posting my slides and code on the njcodecamp.org on monday night. I will also post all the reference material and links to various resources with the same. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13490364-114937285867778762?l=thoughtsofanerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtsofanerd.blogspot.com/feeds/114937285867778762/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13490364&amp;postID=114937285867778762&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/114937285867778762'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/114937285867778762'/><link rel='alternate' type='text/html' href='http://thoughtsofanerd.blogspot.com/2006/06/wpf-session-at-nj-code-camp.html' title='WPF Session at NJ Code Camp'/><author><name>Enjoy Life!!</name><uri>http://www.blogger.com/profile/13643498440435913092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://www2.cs.uh.edu/~ppsarda/Share/Punnu.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13490364.post-114847367676321256</id><published>2006-05-24T05:10:00.000-07:00</published><updated>2006-10-14T11:33:05.294-07:00</updated><title type='text'>Video issues with WPF</title><content type='html'>&lt;div style="text-align: justify;"&gt;The &lt;a target="_blank" href="http://channel9.msdn.com/showpost.aspx?postid=116327"&gt;north face demo&lt;/a&gt; is really cool to watch online but what if you want to run it on your machine. Well I tried that and guess what...as soon as I tried to run it I got BSOD. I thought maybe its worth another shot but no ...hit F5 in Visual Studio and there's BSOD.&lt;br /&gt;&lt;br /&gt;So I read the message on BSOD and it was talking about nv4_disp.dll. Something wrong with this file..well the name indicated it had to be the Nvidia Graphics card on my machine. So &lt;a target="_blank" href="http://www.google.com/search?sourceid=navclient-ff&amp;ie=UTF-8&amp;amp;rls=GGGL,GGGL:2006-12,GGGL:en&amp;amp;q=nv4_disp.dll"&gt;googled&lt;/a&gt; a bit on the net and found thats lots of people have &lt;a target="_blank" href="http://byronmiller.typepad.com/byronmiller/2005/10/stupid_windows_.html"&gt;issues&lt;/a&gt; with the same dll...(how good it feels when you know you are not the only one caught in this mess :d).&lt;br /&gt;&lt;br /&gt;The first step for any such issue is the device driver. I checked my version and saw that it was dated to something in 2005. I have a Nvidia Ge GForce 6400 card and when i tried to look in Nvidia's &lt;a target="_blank" href="http://www.nvidia.com/content/drivers/drivers.asp"&gt;site&lt;/a&gt; for the &lt;a target="_blank" href="http://www.nvidia.com/object/winxp_2k_84.21.html"&gt;latest driver&lt;/a&gt; for this one... guess what...I don't find any. (See the Products supported link on the left pane for your card) I downloaded whatever they had just to give it a shot but when installing, it gave me messages that this driver does not support this card. So my search continued and I found something at &lt;a target="_blank" href="http://downloads.guru3d.com/search.php"&gt;Guru3D&lt;/a&gt;. These guys have a great repository of drivers for virtually any graphics card in the world.&lt;br /&gt;&lt;br /&gt;So now with the latest drivers, I can run a simple movie as well as a complex app like the northface. My suggestion...even when upgrading drivers...make sure u get a stable version not the beta's ...does not have to be the latest if it works for your cards and gets your app running. To get video you will need Media Player 10 installed, I have not tested Media Player 11.&lt;br /&gt;&lt;br /&gt;If driver upgrades don't solve your problems...start googling!!&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13490364-114847367676321256?l=thoughtsofanerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtsofanerd.blogspot.com/feeds/114847367676321256/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13490364&amp;postID=114847367676321256&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/114847367676321256'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/114847367676321256'/><link rel='alternate' type='text/html' href='http://thoughtsofanerd.blogspot.com/2006/05/video-issues-with-wpf.html' title='Video issues with WPF'/><author><name>Enjoy Life!!</name><uri>http://www.blogger.com/profile/13643498440435913092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://www2.cs.uh.edu/~ppsarda/Share/Punnu.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13490364.post-114843731578050681</id><published>2006-05-23T19:19:00.000-07:00</published><updated>2006-10-14T11:33:05.234-07:00</updated><title type='text'>Beta 2 out!!</title><content type='html'>The beta 2 of WinFx runtimes is out. Get all the stuff you need to program some cool apps from &lt;a target="_blank" href="http://msdn.microsoft.com/windowsvista/downloads/products/getthebeta/default.aspx#developWinFXApps"&gt;here&lt;/a&gt;. Also the May 2006 CTP of Expression Interactive Designer is out. Get it &lt;a target="_blank" href="http://www.microsoft.com/downloads/details.aspx?FamilyId=4EF0492D-9CB5-4EA6-88B6-A4CD95E5491B&amp;amp;displaylang=en"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13490364-114843731578050681?l=thoughtsofanerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtsofanerd.blogspot.com/feeds/114843731578050681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13490364&amp;postID=114843731578050681&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/114843731578050681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/114843731578050681'/><link rel='alternate' type='text/html' href='http://thoughtsofanerd.blogspot.com/2006/05/beta-2-out.html' title='Beta 2 out!!'/><author><name>Enjoy Life!!</name><uri>http://www.blogger.com/profile/13643498440435913092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://www2.cs.uh.edu/~ppsarda/Share/Punnu.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13490364.post-114644557162011102</id><published>2006-04-30T17:54:00.000-07:00</published><updated>2006-10-14T11:33:05.103-07:00</updated><title type='text'>On being a Software Engineer</title><content type='html'>&lt;div style="text-align: justify;"&gt;Money magazine and Salary.com recently listed the &lt;a href="http://money.cnn.com/magazines/moneymag/bestjobs/"&gt;50 best jobs&lt;/a&gt; and Software Engineer is the No.1. It feels nice to be in a profession which the world holds in such high regard.&lt;br /&gt;&lt;br /&gt;I work as a Software Engineer at Fidelity Investments in Rhode Island. I enjoy my work and on a daily basis look forward to going to my cube and working on my project. It gives me pleasure that after years of education and academic achievements, finally I now work on something that will be used by a real user. Or many real users.&lt;br /&gt;&lt;br /&gt;To a common man, software development is a combination of acronyms ( which they dont understand or partially do) + internet + .Net + Java + Google. I guess you could also throw Intel and Apple in there. To explain to a common man what you do as a software engineer can be a big ordeal. I remember the days when I had selected it as my undergraduate major (back in India), anyone and everyone had just one question for me : Do you work in hardware or software? It was hard not to laugh at the question and politely say both....which would make them all the more surprised and curious as to how can you be doing both....maybe you are too smart.&lt;br /&gt;&lt;br /&gt;I look at it as one of the most profound and practical ways to manage Complexity. This is one domain which runs just on the basis of ideas. If you have an idea and want to see it take form and do something for you, grab a programming language, an IDE to help you program in it and you are pretty much set. Resources will probably be the last thing to hold you back and lack of ideas will probably be the first one. My expertise is in .NET, C# being my fav language to program in and Visual Studio my fav IDE.&lt;br /&gt;&lt;br /&gt;However, that last statement above changes a lot of things when said just by itself. The probabilty of finding C#/.NET on a developer's resume is almost that same as finding his name and email address. You would probably also find a list of certifications in there. However, neither of them give you any clue whatsoever on what software developement is all about--- Managing Complexity, Designing Solutions and doing that in a disciplined fashion --- and what are his skills with respect to that.&lt;br /&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;A side effect of such a multitude of people with the same skill set (on paper) is the lack of regard for the ones who genuinely are much more than just those acronyms. To tell someone you are a .NET Developer is probably not the best way to introduce yourself as a Software Engineer. Sadly people have built in their minds a notion of a .NET Dev as a guy with a bunch of certifications and one who can churn out code out of the Visual Studio IDE. Software design, architecture, principles are nowhere to be seen. I have also met people with research background who believe that being a Software Developer (especially with expertise in a "hot" technology) is no big deal...anyone can do it.&lt;br /&gt;&lt;br /&gt;I design solutions. I come up with innovative ways to handle conflicting parameters. Today I implement it in .NET, tomorrow maybe some other platform. But the central idea is to come up with reusable and extensible designs which solve real world problems. And there are many more people like me in this field, way better than what I am. But I aspire to be better than them someday. To meet such developers in conferences and to have some of them as my mentors shows me that there is an elite lot which is not bound by technologies or corporations but rather with fundamentals which frame this very field. That they talk in terms of concepts and ideas, designs and interactions instead of windows and linux, .net and java.&lt;br /&gt;&lt;br /&gt;Donald Knuth right calls Software Development as an Art. There could not be any better analogy for it. Only an artist can give form to that abstract idea in himself and bring it to life as a beautiful piece of software. Lets just remember, no paper can tell you who is an artist and who isn't. His work sure can!! And the true artist is the one who creates his piece of work for the sheer joy of making it, not for the financial or other benefits.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13490364-114644557162011102?l=thoughtsofanerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtsofanerd.blogspot.com/feeds/114644557162011102/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13490364&amp;postID=114644557162011102&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/114644557162011102'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/114644557162011102'/><link rel='alternate' type='text/html' href='http://thoughtsofanerd.blogspot.com/2006/04/on-being-software-engineer.html' title='On being a Software Engineer'/><author><name>Enjoy Life!!</name><uri>http://www.blogger.com/profile/13643498440435913092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://www2.cs.uh.edu/~ppsarda/Share/Punnu.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13490364.post-114582063484631839</id><published>2006-04-23T12:21:00.000-07:00</published><updated>2006-10-14T11:33:05.029-07:00</updated><title type='text'>Ink Recoginition in WPF</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/4338/963/1600/inkinwpf.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/4338/963/400/inkinwpf.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Spent some time playing with the Ink Api from Microsoft and made a small handwriting recognition application in WPF. Find the code &lt;a target="_blank" href="http://www2.cs.uh.edu/%7Eppsarda/Share/InkTest.zip"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13490364-114582063484631839?l=thoughtsofanerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtsofanerd.blogspot.com/feeds/114582063484631839/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13490364&amp;postID=114582063484631839&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/114582063484631839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/114582063484631839'/><link rel='alternate' type='text/html' href='http://thoughtsofanerd.blogspot.com/2006/04/ink-recoginition-in-wpf.html' title='Ink Recoginition in WPF'/><author><name>Enjoy Life!!</name><uri>http://www.blogger.com/profile/13643498440435913092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://www2.cs.uh.edu/~ppsarda/Share/Punnu.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13490364.post-114548609378072514</id><published>2006-04-19T15:21:00.000-07:00</published><updated>2006-10-14T11:33:04.965-07:00</updated><title type='text'>Using Events to return values from async Web service calls</title><content type='html'>&lt;div style="text-align: justify;"&gt;I was working on an application that I was implementing using the Model - View - Controller Pattern (MVC). I have a form (View) which needs to show some value. The value is stored in a state object (model). I have a controller class which gets the value from the state object and passes on to the form. However, the value is initially loaded in the state by the controller using another class. This is a WebServiceAccessor (WSA) class which talks to a web service to get the value.&lt;br /&gt;&lt;br /&gt;Inorder to prevent my calling thread from blocking when I make calls to a webservice, I intend to use async calls to talk to the webservice. Following code shows a sample&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;public void BeginGetValue(Parameter theParameter)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;  MyService theService = new Myservice();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;  theService.BeginGetValue(theParameter, new Asynccallback(EndGetValue), theService);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;public void EndGetValue(IAsyncresult handle)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;  MyService theService = (MyService)handle;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;  int i = theResult.EndGetvalue();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;So assuming both the above methods are in the WSA class, I am able to succesfully get the value into my variable i. Now I need to set the state property to i. I could access the state object here and set the property. However this breaks encapsulation. Additionally another approach can be that i register a method in my controller class as the callback. The downside is again the same, you break encapsulation as the controller will come to know about the web service proxy.&lt;br /&gt;&lt;br /&gt;So lets step back for a minute and see the entire process from a high level perspective. The controller requests for something from the process, the process requests for it but does not know when it will get back. Now when it gets it back it needs a way to notify the controller. Sounds like the need for a design pattern...Observer. Yes, the controller can be an observer to the process class. Everytime the webservice returns and the method passed as the callback is called, the process can fire an event and pass the result of the web service query in it. The controller can register for the event and get the result object. Now its upto the controller what it needs to do with it.&lt;br /&gt;&lt;br /&gt;Sample code&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;// Process class&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;public event ResultEventHandler GotResult&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;private void OnGotResult(Resultobject theResult)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;    // check if anyone has registered for the event.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;    if(GotResult != null)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;    {&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;        GotResult(theResult);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;public void BeginGetResult(Parameter theParameter)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;       ........&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;public void EndGetResult(IAsyncresult handle)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;  MyService theService = (MyService)handle;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;Resultobj theResult= theResult.EndGetvalue();&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;if(theResult != null)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;    OnGotResult(theResult);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;// Controller Class&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;public delegate void ResultEventHandler(ResultObject theResult);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;private void GetResult(Parameters theParameter)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;    Process theProcess = new Process();&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;    theProcess.GotResult += new ResultEventHandler(ShowResult);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;    theProcess.BeginGetResult(theParameter);&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;private void ShowResult(ResultObject theResult)&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;    Console.Writeline (theResult.ToString());&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(102, 0, 0);"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13490364-114548609378072514?l=thoughtsofanerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtsofanerd.blogspot.com/feeds/114548609378072514/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13490364&amp;postID=114548609378072514&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/114548609378072514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/114548609378072514'/><link rel='alternate' type='text/html' href='http://thoughtsofanerd.blogspot.com/2006/04/using-events-to-return-values-from.html' title='Using Events to return values from async Web service calls'/><author><name>Enjoy Life!!</name><uri>http://www.blogger.com/profile/13643498440435913092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://www2.cs.uh.edu/~ppsarda/Share/Punnu.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13490364.post-114522996911691664</id><published>2006-04-16T16:12:00.000-07:00</published><updated>2006-10-14T11:33:04.902-07:00</updated><title type='text'>WPF Lesson learnt the hard way</title><content type='html'>&lt;div style="text-align: justify;"&gt;I have started playing with xaml a little bit. A problem I have been in every app i make is that the look and feel of the app lacks the chrome effect. All controls look like they are being rendered on a win 2000 box. After spending time looks at the themes my app was referencing i realised that it has to be something more granular then missing references or something.&lt;br /&gt;&lt;br /&gt;Spent sometime on google and found this link at &lt;a target="_blank" href="http://channel9.msdn.com/ShowPost.aspx?PostID=172241"&gt;channel9.&lt;/a&gt; The lesson learnt is unless you use luna theme on your xp box, you wont get the chrome look in your controls. Ofc, if you want full control explore the controltemplate and make the best of it. However for the basic look and feel, this is the way out. For a look and feel indepedent of the underlying system and consistent in all environments, controltemplate is the way to go.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13490364-114522996911691664?l=thoughtsofanerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtsofanerd.blogspot.com/feeds/114522996911691664/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13490364&amp;postID=114522996911691664&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/114522996911691664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/114522996911691664'/><link rel='alternate' type='text/html' href='http://thoughtsofanerd.blogspot.com/2006/04/wpf-lesson-learnt-hard-way.html' title='WPF Lesson learnt the hard way'/><author><name>Enjoy Life!!</name><uri>http://www.blogger.com/profile/13643498440435913092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://www2.cs.uh.edu/~ppsarda/Share/Punnu.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13490364.post-114503242941320225</id><published>2006-04-14T09:23:00.000-07:00</published><updated>2006-10-14T11:33:04.826-07:00</updated><title type='text'>A fool with a tool is a dangerous fool</title><content type='html'>&lt;div style="text-align: justify;"&gt;I was reading &lt;a target="_blank" href="http://agiledeveloper.com/blog/"&gt;Venkat's&lt;/a&gt; presentation about &lt;a target="_blank" href="http://agiledeveloper.com/download.aspx"&gt;Open Source tools for Agile Development&lt;/a&gt; and this line caught my attention "A fool with a tool is a dangerous fool" . Well it so happens I know someone who is a little apprehensive of unit testing. However when I really recommend using it, this person came with the most innovative way around it. How about we finish all the code in the first 3 months and then we will spend 1 week writing all the unit tests? I am like how abt Nunit coming to life, jumping out of your machine and giving you a nice kick.&lt;br /&gt;&lt;br /&gt;Unit tests are to make our lives simpler. You get a nice way to see some real functional code, not just some compiled dlls. Thats the very essence of unit testing. A week worth of effort at then end of a project to write say 200 unit tests does not buy you anything. The right tool used with wrong intentions is as good as not using it at all.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13490364-114503242941320225?l=thoughtsofanerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtsofanerd.blogspot.com/feeds/114503242941320225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13490364&amp;postID=114503242941320225&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/114503242941320225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/114503242941320225'/><link rel='alternate' type='text/html' href='http://thoughtsofanerd.blogspot.com/2006/04/fool-with-tool-is-dangerous-fool.html' title='A fool with a tool is a dangerous fool'/><author><name>Enjoy Life!!</name><uri>http://www.blogger.com/profile/13643498440435913092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://www2.cs.uh.edu/~ppsarda/Share/Punnu.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13490364.post-114200069778181332</id><published>2006-03-10T06:22:00.000-08:00</published><updated>2006-10-14T11:33:04.751-07:00</updated><title type='text'>Internet access for application built in firewall environment</title><content type='html'>&lt;div style="text-align: justify;"&gt;When working in a firewalled environment, you need to take special steps to help you application access the internet. Yesterday I was trying to do two things. The first one was to access a webservice (hosted on the WWW on another firm's server)from my application. After poking around a little bit I figured it's the proxy information which the application needs to know. Got the details about that from Todd and this is what my app.config contained&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-family: courier new; font-weight: bold;"&gt;&amp;lt;system.net&amp;gt;&lt;/span&gt;&lt;br /&gt; &lt;defaultproxy style="font-family: courier new; font-weight: bold;"&gt;    &lt;/defaultproxy&gt;&lt;span style="font-family: courier new; font-weight: bold;"&gt;&amp;lt;&lt;/span&gt;&lt;defaultproxy style="font-family: courier new; font-weight: bold;"&gt;defaultProxy&lt;/defaultproxy&gt;&lt;span style="font-family: courier new; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;defaultproxy style="font-family: courier new; font-weight: bold;"&gt;      &lt;/defaultproxy&gt;&lt;span style="font-family: courier new; font-weight: bold;"&gt;&amp;lt;&lt;/span&gt;&lt;defaultproxy style="font-family: courier new; font-weight: bold;"&gt;proxy proxyaddress="http://http.proxy.companyname.com:portnumber" bypassonlocal="true"/&lt;/defaultproxy&gt;&lt;span style="font-family: courier new; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;defaultproxy style="font-family: courier new; font-weight: bold;"&gt;    &lt;/defaultproxy&gt;&lt;br /&gt;&lt;defaultproxy style="font-family: courier new; font-weight: bold;"&gt;    &lt;/defaultproxy&gt;&lt;span style="font-family: courier new; font-weight: bold;"&gt;&amp;lt;&lt;/span&gt;&lt;defaultproxy style="font-family: courier new; font-weight: bold;"&gt;/defaultProxy&lt;/defaultproxy&gt;&lt;span style="font-family: courier new; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;defaultproxy style="font-family: courier new; font-weight: bold;"&gt;  &lt;/defaultproxy&gt;&lt;span style="font-family: courier new; font-weight: bold;"&gt;&amp;lt;&lt;/span&gt;&lt;defaultproxy style="font-family: courier new; font-weight: bold;"&gt;/system.net&lt;/defaultproxy&gt;&lt;span style="font-family: courier new; font-weight: bold;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;defaultproxy&gt;  &lt;proxy proxyaddress="http://http.proxy.fmr.com:8000" bypassonlocal="true"&gt;&lt;/proxy&gt;&lt;/defaultproxy&gt;&lt;br /&gt;However, my second issue was to add a web reference to a similar web service again hosted on the WWW on another firm's server. In this case its machine.config which needs the modification.  By default machine.config has the default proxy setup as&lt;br /&gt;&lt;br /&gt;&lt;proxy usesystemdefault="true"&gt;&lt;/proxy&gt;&lt;span style="font-weight: bold;"&gt;  &amp;lt;proxy usesystemdefault="true" /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Additionally, .net specifies that :Note that "Automatic configuration" and "automatic configuration scripts" cannot be read.&lt;br /&gt;&lt;br /&gt;So even though IE uses a predefined script, .net can't use that for you. The same solution applies, add the proxy information to machine.config and now web references add fine.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13490364-114200069778181332?l=thoughtsofanerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtsofanerd.blogspot.com/feeds/114200069778181332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13490364&amp;postID=114200069778181332&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/114200069778181332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/114200069778181332'/><link rel='alternate' type='text/html' href='http://thoughtsofanerd.blogspot.com/2006/03/internet-access-for-application-built.html' title='Internet access for application built in firewall environment'/><author><name>Enjoy Life!!</name><uri>http://www.blogger.com/profile/13643498440435913092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://www2.cs.uh.edu/~ppsarda/Share/Punnu.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13490364.post-112921396169930436</id><published>2005-10-13T06:56:00.000-07:00</published><updated>2006-10-14T11:33:04.684-07:00</updated><title type='text'>Configuring Code Access Security</title><content type='html'>&lt;p align="justify"&gt;Code Access Security is one those features of .NET which restates that MS is taking security pretty seriously. I figured out today one of the simple ways to allow code access security. Say we deploy an application in the virtual directory of your server and users can use the browser to reach the application, download and run it (a basic smart client) . In a situation where such an application tries to create a file, we get an error indicating the application does not have the appropriate security permissions.&lt;/p&gt;&lt;p align="justify"&gt;In such a senario, we can do the following:1) Open up Control Panel -&gt; Administrative Tools -&gt; Microsoft .NET Framework 1.1 Configuration&lt;/p&gt;&lt;p align="justify"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger/4338/963/320/11.JPG" border="0" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p align="justify"&gt;2) Click on the link for "Configure Code Accesss Security Policy" to start the wizard or just expand the link for "Runtime Security Policy". This shows you that you can configure policy at the Enterprise, Machine or User Level thus providing different ways to override the security policy.&lt;/p&gt;&lt;p align="justify"&gt;3) Say we want to work at the User Level. We can create a new Code group by right clicking on "All_Code". Provide a name and select the membership condition. You can select "Strong Name" to ensure that assemblies with a particular set of public and private keys can be a part of this. You can use "URL" to specify that files downloaded from the given url can are in the current group etc... .Select the permission set after that. Again we can create a customized permission set and use that for code groups. &lt;/p&gt;&lt;p align="justify"&gt;&lt;/p&gt;&lt;p&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger/4338/963/320/12.JPG" border="0" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p align="justify"&gt;We can also create child groups within each code group to customize the security level as needed.&lt;/p&gt;&lt;p align="justify"&gt;&lt;/p&gt;&lt;a href="http://photos1.blogger.com/blogger/4338/963/1600/14.JPG"&gt;&lt;img style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://photos1.blogger.com/blogger/4338/963/320/14.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/4338/963/1600/13.JPG"&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13490364-112921396169930436?l=thoughtsofanerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtsofanerd.blogspot.com/feeds/112921396169930436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13490364&amp;postID=112921396169930436&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/112921396169930436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/112921396169930436'/><link rel='alternate' type='text/html' href='http://thoughtsofanerd.blogspot.com/2005/10/configuring-code-access-security.html' title='Configuring Code Access Security'/><author><name>Enjoy Life!!</name><uri>http://www.blogger.com/profile/13643498440435913092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://www2.cs.uh.edu/~ppsarda/Share/Punnu.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13490364.post-112627524839608631</id><published>2005-09-09T07:08:00.000-07:00</published><updated>2006-10-14T11:33:04.622-07:00</updated><title type='text'>What developers think of users :P</title><content type='html'>The Daily WTF had &lt;a target="_blank" href="http://thedailywtf.com/forums/42777/ShowPost.aspx"&gt;this&lt;/a&gt; interesting post on messages that popup when we use softwares.&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;br /&gt;I got this screen after I installed the latest version of Winamp...made me think how dumb we think the user might be.&lt;br /&gt;&lt;br /&gt;&lt;a target="_blank" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/4338/963/1600/winampuser.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/4338/963/400/winampuser.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13490364-112627524839608631?l=thoughtsofanerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtsofanerd.blogspot.com/feeds/112627524839608631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13490364&amp;postID=112627524839608631&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/112627524839608631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/112627524839608631'/><link rel='alternate' type='text/html' href='http://thoughtsofanerd.blogspot.com/2005/09/what-developers-think-of-users-p.html' title='What developers think of users :P'/><author><name>Enjoy Life!!</name><uri>http://www.blogger.com/profile/13643498440435913092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://www2.cs.uh.edu/~ppsarda/Share/Punnu.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13490364.post-112514587912480056</id><published>2005-08-27T05:28:00.000-07:00</published><updated>2006-10-14T11:33:04.558-07:00</updated><title type='text'>Search Wars!!</title><content type='html'>&lt;div style="text-align: justify;"&gt;It's not uncommon nowadays to find two or more software guys discuss this. The fight between MS and G....what abt you....who will win.... why... what will be the implications...&lt;br /&gt;&lt;br /&gt;Thanks to a friend, got this &lt;a target="_blank" href="http://cache.technologyreview.com/articles/05/01/issue/ferguson0105.asp?p=1"&gt;link&lt;/a&gt; which has a very detailed article on this issue. I enjoyed the depth with which the author covered issues and how both giants should have big things planned to take on each other. Have a look&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13490364-112514587912480056?l=thoughtsofanerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtsofanerd.blogspot.com/feeds/112514587912480056/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13490364&amp;postID=112514587912480056&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/112514587912480056'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/112514587912480056'/><link rel='alternate' type='text/html' href='http://thoughtsofanerd.blogspot.com/2005/08/search-wars.html' title='Search Wars!!'/><author><name>Enjoy Life!!</name><uri>http://www.blogger.com/profile/13643498440435913092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://www2.cs.uh.edu/~ppsarda/Share/Punnu.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13490364.post-112232223926640311</id><published>2005-07-25T11:08:00.000-07:00</published><updated>2006-10-14T11:33:04.425-07:00</updated><title type='text'>The Object Oriented Solution</title><content type='html'>&lt;div style="text-align: justify;"&gt;In the previous entry I shared with you someone's code for a simple Color Game. I also pointed out what were the flaws in that code. Now I will design the solution to the original problem and share my code with you.&lt;br /&gt;&lt;br /&gt;The problem definition gives us the requirements very clearly and as this is a small problem... there are not any twisted needs of the user. So lets get to designing it.&lt;br /&gt;&lt;br /&gt;The only object the user interacts with is the Color object. It is a collection of colors which the user has to guess. The computer picks at random a set of colors. The user begins with an initial guess and within 25 chances needs to pick the same. We provide two constructors to the Color class to do the same.&lt;br /&gt;&lt;br /&gt;Now when we have two Color objects, one of the computer and the other from the user... we need to compare them to tell the user how close he is. Here we take inspiration form the String class of .NET . Just like the &lt;a target="_blank" href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfSystemStringClassCompareTopic.asp"&gt;Compare method&lt;/a&gt; in that class can be used to compare two string objects, we provide the Color class with its own Compare method. To display the colors in the UI, we override the ToString method.&lt;br /&gt;&lt;br /&gt;The ColorList class stores the list of all the allowed colors and the inputsize. This information can be moved to a separate config file. Soon I will post on how you can have individual config files for each class library. Right now we will use the class ColorList.&lt;br /&gt;&lt;br /&gt;The user interacts with our system using a Console Application. Here the main method is composed of different methods each responsible for managing some independent part of the UI. Hence the main method is not cluttered and easily understandable. The input provided by the user needs to be validated and the code for that is kept in a separate assembly. This helps maintian separation of concerns and at the same time the Utils assembly is completely reusable.&lt;br /&gt;&lt;br /&gt;Find the code &lt;a target="_blank" href="http://www2.cs.uh.edu/%7Eppsarda/Share/OO_ColorGame.zip"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Lessons learnt:&lt;br /&gt;&lt;br /&gt;1) The first step should always be identifying the different objects the system is made up of. Only then can we come up with the right mechanisms for interactions between those objects.&lt;br /&gt;&lt;br /&gt;2) It is important, very important, to have separation of concerns... at the assembly level, at the class level and even at the method level. Cohesion is what keeps the code clean and organized. Here it was natural to have three different assemblies to manage the UI, objectmodel and auxillary functions.&lt;br /&gt;&lt;br /&gt;That's it for now. Happy Coding :)&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13490364-112232223926640311?l=thoughtsofanerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtsofanerd.blogspot.com/feeds/112232223926640311/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13490364&amp;postID=112232223926640311&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/112232223926640311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/112232223926640311'/><link rel='alternate' type='text/html' href='http://thoughtsofanerd.blogspot.com/2005/07/object-oriented-solution.html' title='The Object Oriented Solution'/><author><name>Enjoy Life!!</name><uri>http://www.blogger.com/profile/13643498440435913092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://www2.cs.uh.edu/~ppsarda/Share/Punnu.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13490364.post-112226528762264081</id><published>2005-07-24T20:55:00.000-07:00</published><updated>2006-10-14T11:33:04.358-07:00</updated><title type='text'>A Design Problem</title><content type='html'>&lt;div style="text-align: justify;"&gt;I will be going through a simple design problem to show how we make simple mistakes in using OOAD.&lt;br /&gt;&lt;br /&gt;&lt;a target="_blank" href="http://www.agiledeveloper.com/blog/"&gt;Venkat&lt;/a&gt;, for his course on SE, gave this as a small project to his class. A friend of mine has taken the class and I had a chance to see his work. You may find the problem definition &lt;a target="_blank" href="http://www2.cs.uh.edu/%7Esvenkat/lib/assignments/SE/Summer2005/Project/project.txt"&gt;here&lt;/a&gt; and the code by this guy &lt;a target="_blank" href="http://www2.cs.uh.edu/%7Eppsarda/Share/ColorGame.zip"&gt;here&lt;/a&gt;. I am thankful to him for sharing his code with me to help me highlight some common mistakes we make while designing object oriented solutions. After all we are here to learn from our mistakes and all of us have made them at some point of time.&lt;br /&gt;&lt;br /&gt;The current code has the following issues with it :&lt;br /&gt;1) It is not at all object oriented. The implemented solution does not deal with any objects relevant to the problem. Rather it is just a collection of libraries talking to each other. We see the intension to separate the Presentation Layer from the Business Logic but absence of real world objects (wrt the problem) make that separation pointless.&lt;br /&gt;&lt;br /&gt;2) Methods are not cohesive. The main method in UI.cs does a lot many things. From setting the initial display to iterating over the loop 25 times to validating input... it is a very big method. This one definitely needs refactoring.&lt;br /&gt;&lt;br /&gt;3) The "pieceofmind" class is not cohesive either. Again the reason being the lack of objects. Additionally both the namespace and the class share the same name... which in the long run can lead to a lot of confusion.&lt;br /&gt;&lt;br /&gt;Essentially... the code is an example of doing procedural programming in C#. Tommorow I will discuss the design of the problem...and the code I wrote.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13490364-112226528762264081?l=thoughtsofanerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtsofanerd.blogspot.com/feeds/112226528762264081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13490364&amp;postID=112226528762264081&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/112226528762264081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/112226528762264081'/><link rel='alternate' type='text/html' href='http://thoughtsofanerd.blogspot.com/2005/07/design-problem.html' title='A Design Problem'/><author><name>Enjoy Life!!</name><uri>http://www.blogger.com/profile/13643498440435913092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://www2.cs.uh.edu/~ppsarda/Share/Punnu.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13490364.post-112127160050330242</id><published>2005-07-13T09:15:00.000-07:00</published><updated>2006-10-14T11:33:04.292-07:00</updated><title type='text'>Functional Requirements</title><content type='html'>&lt;div style="text-align: justify;"&gt;Was reading about the Microsoft Solution Framework. They had a nice way of highlighting the importance of gathering Functional Requirements. See the pic :)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/4338/963/1600/freq.jpg"&gt;&lt;br /&gt;&lt;img src="http://photos1.blogger.com/blogger/4338/963/400/freq.jpg" alt="" align="middle" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: left;"&gt;Coutersy : MCSD Training Kit for Exam 70-300&lt;br /&gt; &lt;/div&gt; &lt;div style="text-align: justify;"&gt;&lt;br /&gt;&lt;/div&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13490364-112127160050330242?l=thoughtsofanerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtsofanerd.blogspot.com/feeds/112127160050330242/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13490364&amp;postID=112127160050330242&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/112127160050330242'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/112127160050330242'/><link rel='alternate' type='text/html' href='http://thoughtsofanerd.blogspot.com/2005/07/functional-requirements.html' title='Functional Requirements'/><author><name>Enjoy Life!!</name><uri>http://www.blogger.com/profile/13643498440435913092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://www2.cs.uh.edu/~ppsarda/Share/Punnu.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13490364.post-112068704430332614</id><published>2005-07-06T14:53:00.000-07:00</published><updated>2006-10-14T11:33:04.234-07:00</updated><title type='text'>Coding Guidelines for a Programmer</title><content type='html'>&lt;div style="text-align: justify;"&gt;1. Never ever write a line of code that someone else can understand.            &lt;br /&gt;&lt;br /&gt;2. Make the simplest line of code appear complex. Use long names.            &lt;br /&gt;&lt;br /&gt;3. Type fast think slow.        &lt;br /&gt;&lt;br /&gt;4. Never use direct references to anything ever. Bury everything in macros. Bury the macros in include files. References those include files in directly from Other includes files. Use macros to reference. Those include files.&lt;br /&gt;&lt;br /&gt;5. Never include a comment that will help someone else understand your code.If they understand it they don't need you.&lt;br /&gt;&lt;br /&gt;6. Never code a function to return a value. All functions must return a pointer to a structure which contains a pointer to a value.&lt;br /&gt;&lt;br /&gt;7. Never discuss things in concrete terms. Always speak in abstract. If they can understand you they don't need you.&lt;br /&gt;&lt;br /&gt;8. Never complete a project on time. If you do they will think it was easy and anyone can do it and they don't need you.&lt;br /&gt;&lt;br /&gt;9. When someone stops by your desk to ask a question, talk forever but don't answer the question. If they get their questions answered they don't need you.&lt;br /&gt;&lt;br /&gt;10. Never clean your office. Absolutely never throw away an old listing.&lt;br /&gt;&lt;br /&gt;11. Never say hello to anyone in hallway. Absolutely never address anyone by name. If you must address someone by name, mumble or use the wrong name. Always maintain the mystique of being spaced out from concentrating on complex logic.&lt;br /&gt;&lt;br /&gt;12. When you are having lunch at the office canteen, never fully concentrate on your lunch. Try to get absent minded suddenly in the middle of the lunch and say to your colleague something like:"But I don't think that data page was actually locked by another RX call, rather I see the possibility of a wrong access mode." Other wise they will think you are not serious about your job and then they won't need you".&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13490364-112068704430332614?l=thoughtsofanerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtsofanerd.blogspot.com/feeds/112068704430332614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13490364&amp;postID=112068704430332614&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/112068704430332614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/112068704430332614'/><link rel='alternate' type='text/html' href='http://thoughtsofanerd.blogspot.com/2005/07/coding-guidelines-for-programmer.html' title='Coding Guidelines for a Programmer'/><author><name>Enjoy Life!!</name><uri>http://www.blogger.com/profile/13643498440435913092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://www2.cs.uh.edu/~ppsarda/Share/Punnu.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13490364.post-111990329503509672</id><published>2005-06-27T13:12:00.000-07:00</published><updated>2006-10-14T11:33:04.170-07:00</updated><title type='text'>ASP.NET Learning Resources</title><content type='html'>&lt;div style="text-align: justify;"&gt;A few good asp.net learning resources:&lt;br /&gt;&lt;br /&gt;1) ASP.NET Main Site : http://asp.net/Default.aspx?tabindex=0&amp;amp;tabid=1&lt;br /&gt;&lt;br /&gt;2) ASP.NET 2.0 : http://beta.asp.net/&lt;br /&gt;&lt;br /&gt;3) MSDN Page: http://msdn.microsoft.com/asp.net/default.aspx&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13490364-111990329503509672?l=thoughtsofanerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtsofanerd.blogspot.com/feeds/111990329503509672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13490364&amp;postID=111990329503509672&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/111990329503509672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/111990329503509672'/><link rel='alternate' type='text/html' href='http://thoughtsofanerd.blogspot.com/2005/06/aspnet-learning-resources.html' title='ASP.NET Learning Resources'/><author><name>Enjoy Life!!</name><uri>http://www.blogger.com/profile/13643498440435913092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://www2.cs.uh.edu/~ppsarda/Share/Punnu.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13490364.post-111923579598007888</id><published>2005-06-19T19:04:00.000-07:00</published><updated>2006-10-14T11:33:04.016-07:00</updated><title type='text'>ASP.NET Behind the Scenes</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;Found a few cool things about ASP.NET that happen behind the scenes&lt;br /&gt;&lt;br /&gt;1) &lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Shadow Copy&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;One of the problems in ASP was that when you wanted to deploy a new dll, you had to stop the server and then deploy it as the file would be locked by the server. ASP.NET came up with a nice to avoid this. They use something call shadow copy.&lt;br /&gt;&lt;br /&gt;Say you have your assembly in the bin directory. Now when you load the page in your browser, IIS creates a copy of your assembly and keep that in a separate location on the drive. This copied dll is the one that is used to handle the requests of your page. This means the assembly in the bin directory of your project is not in use. So now if you have a new version, you can comfortably replace the one in your bin with it. IIS in the background monitors your bin directory for changes. So when you put in a new version, it will make a copy of the new one and replace the old copy. Hence refresh your aspx page and viola you are using the new assembly.&lt;br /&gt;&lt;br /&gt;2) &lt;/span&gt;&lt;span style="font-weight: bold;font-size:100%;" &gt;Different Extension for files&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;Say for some reason you dont want others to know that you are using asp.net for your website. So how do you make sure that when they look at the url, they dont see and "aspx" extension.&lt;br /&gt;&lt;br /&gt;Well there is an easy way out. In IIS select the virtual directory for which you want to do this. Right Click and goto Properties. Select the Configuration opion and you will see this window.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-size:100%;"&gt;&lt;a href="http://photos1.blogger.com/img/178/4377/1024/Config.jpg"&gt;&lt;img style="border: 1px solid rgb(0, 0, 0); margin: 2px;" src="http://photos1.blogger.com/img/178/4377/400/Config.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:100%;"&gt; The Configuration Window &lt;a href="http://www.hello.com/" target="ext"&gt;&lt;img src="http://photos1.blogger.com/pbh.gif" alt="Posted by Hello" style="border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;" align="middle" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Now just like you have the aspx extension here has the execution path mapped to the isapi.dll, introduce your own new extension say "jinx" and map it to the same.&lt;br /&gt;&lt;br /&gt;In the machine.config, in the &lt;httphandlers&gt; section, add this line in the httphandler section&lt;br /&gt;&lt;/httphandlers&gt;&lt;/span&gt; &lt;div style="text-align: left;"&gt;&lt;span style="font-size:100%;"&gt;&lt;httphandlers&gt;&lt;add verb="*" path="*.jinx" type="System.Web.UI.PageHandlerFactory"&gt;&lt;/add&gt;&lt;/httphandlers&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;add verb="*" path="*.aspx" type="System.Web.UI.PageHandlerFactory"&gt;&lt;/add&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:130%;"&gt;add verb="*" path="*.jinx" type="System.Web.UI.PageHandlerFactory"&lt;/span&gt;&lt;httphandlers&gt;&lt;/httphandlers&gt;&lt;br /&gt;&lt;httphandlers&gt;&lt;/httphandlers&gt;&lt;/span&gt;&lt;/div&gt; &lt;span style="font-size:100%;"&gt;&lt;httphandlers&gt;&lt;br /&gt;Now you can have pages with jinx extension managed by isapi and handed over to the aspnet worker process.&lt;br /&gt;&lt;br /&gt;3) &lt;span style="font-weight: bold;"&gt;The Code generate for you aspx page&lt;br /&gt;&lt;/span&gt;ASP.NET compiles your entire aspx page into a class (C# or VB.NET). You have the option of compiling your codebehind into that. By default we dont do so. However if in the Page Directive you mention the following "src" option , it will be compiled into the class generated by ASP.NET.&lt;br /&gt;&lt;br /&gt;&lt;/httphandlers&gt;&lt;/span&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:130%;"&gt;&lt;%@ Page Language="C#" Inherits="Test.CodeBehind" src="codebehind.aspx.cs" %&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;If you would like to have a look at the class generated for you by ASP.NET, you can do so using the following statement&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;Response.Write(&lt;br /&gt;System.Reflection.Assembly.GetExecutingAssembly().Location&lt;br /&gt;) ;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This will print the path of the directory containing the executing assembly. Navigate to the directory and you will find the code as well the assemblies there. The CS/VB.NET class are interesting enough to have a look at.&lt;br /&gt;&lt;br /&gt;Those were some of the things i explored in ASP.NET over the weekend.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13490364-111923579598007888?l=thoughtsofanerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtsofanerd.blogspot.com/feeds/111923579598007888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13490364&amp;postID=111923579598007888&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/111923579598007888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/111923579598007888'/><link rel='alternate' type='text/html' href='http://thoughtsofanerd.blogspot.com/2005/06/aspnet-behind-scenes.html' title='ASP.NET Behind the Scenes'/><author><name>Enjoy Life!!</name><uri>http://www.blogger.com/profile/13643498440435913092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://www2.cs.uh.edu/~ppsarda/Share/Punnu.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13490364.post-111884350764056103</id><published>2005-06-15T06:51:00.000-07:00</published><updated>2006-10-14T11:33:03.935-07:00</updated><title type='text'>WinCV in .NET Framework</title><content type='html'>&lt;div style="text-align: justify;"&gt;Came to know about a nice tool in the .NET Framework. WinCV is a Windows Forms Class Viewer. It allows you to gather all info about a class, the variuos methods in it. It uses Reflection to gather this info.&lt;br /&gt;&lt;br /&gt;You can access it from "C:\Program Files\Microsoft Visual Studio .NET 2003\SDK\v1.1\Bin". Double click the file and it will open as a Windows Application. You can also use the command  line version.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;a target="_blank" href="http://photos1.blogger.com/img/178/4377/1024/WinCV.jpg"&gt;&lt;img style="border: 1px solid rgb(0, 0, 0); margin: 2px;" src="http://photos1.blogger.com/img/178/4377/400/WinCV.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt; WinCV showing details of the Object Class &lt;a href="http://www.hello.com/" target="_blank"&gt;&lt;img src="http://photos1.blogger.com/pbh.gif" alt="Posted by Hello" style="border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;" align="middle" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You will also find a WinCV.exe.config file there which you can use to configure this. While this is a good application to get details about, there is another way you can use it. Say you are on a big project and a number of developers are making different projects for the main solution. Well configure the config file and point to their assemblies. Now when you type the name of their classes, you can get a list of all the methods other developers have made. This combined with &lt;a target="_blank" href="http://www.objectmentor.com/writeUps/TestDrivenDevelopment"&gt;Test Driven Development&lt;/a&gt; will be a way to save time on documentation while enhancing team communication.&lt;br /&gt;&lt;br /&gt;Find out more about WinCV &lt;a target="_blank" href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cptools/html/cpconwindowsformsclassviewerwincvexe.asp"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13490364-111884350764056103?l=thoughtsofanerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtsofanerd.blogspot.com/feeds/111884350764056103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13490364&amp;postID=111884350764056103&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/111884350764056103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/111884350764056103'/><link rel='alternate' type='text/html' href='http://thoughtsofanerd.blogspot.com/2005/06/wincv-in-net-framework.html' title='WinCV in .NET Framework'/><author><name>Enjoy Life!!</name><uri>http://www.blogger.com/profile/13643498440435913092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://www2.cs.uh.edu/~ppsarda/Share/Punnu.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13490364.post-111841747949295248</id><published>2005-06-10T08:29:00.000-07:00</published><updated>2006-10-14T11:33:03.872-07:00</updated><title type='text'>More of Longhorn Application Development today</title><content type='html'>Found a great document talking about Longhorn and its pillars from a programmers perspective. Check it out &lt;a target="_blank" href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnintlong/html/longhornch01.asp"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Provided a link for the XML feed of my blog.&lt;br /&gt;&lt;br /&gt;Found &lt;a target="_blank" href="http://www.userinterfacehallofshame.com/index.php?p=51"&gt;here&lt;/a&gt; a great satire on bad software development. Found some nice tools to increase one's productivity &lt;a target="_blank" href="http://www.hanselman.com/blog/MyGrokTalkTenToolsInTenMinutes.aspx"&gt;here&lt;/a&gt;. Later found that MS recommends &lt;a target="_blank" href="http://msdn.microsoft.com/msdnmag/issues/04/07/MustHaveTools/default.aspx"&gt;these&lt;/a&gt; as the Must Have Tools for any developer.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13490364-111841747949295248?l=thoughtsofanerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtsofanerd.blogspot.com/feeds/111841747949295248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13490364&amp;postID=111841747949295248&amp;isPopup=true' title='35 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/111841747949295248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/111841747949295248'/><link rel='alternate' type='text/html' href='http://thoughtsofanerd.blogspot.com/2005/06/more-of-longhorn-application.html' title='More of Longhorn Application Development today'/><author><name>Enjoy Life!!</name><uri>http://www.blogger.com/profile/13643498440435913092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://www2.cs.uh.edu/~ppsarda/Share/Punnu.jpg'/></author><thr:total>35</thr:total></entry><entry><id>tag:blogger.com,1999:blog-13490364.post-111835487076841768</id><published>2005-06-09T14:51:00.000-07:00</published><updated>2006-10-14T11:33:03.784-07:00</updated><title type='text'>What better that Visual Learning :)</title><content type='html'>&lt;div style="text-align: justify;"&gt;I guess MS has gone a long way helping developers learn its technologies by providing &lt;a target="_blank" href="http://www.microsoft.com/events/webcasts/ondemand.mspx"&gt;Webcasts&lt;/a&gt;, &lt;a target="_blank" href="http://msdn.microsoft.com/msdntv/default.aspx"&gt;MSDN TV&lt;/a&gt; and many other modes of discovering MS Technologies. I can spend hours and hours watching the recorded sessions, everytime learning some new technology or a new trick of the trade.&lt;br /&gt;&lt;br /&gt;Spent half the day watching Longhorn discussions on &lt;a target="_blank" href="http://msdn.microsoft.com/theshow/"&gt;The .NET Show&lt;/a&gt;. Pretty informative and got a great overview of &lt;a target="_blank" href="http://msdn.microsoft.com/longhorn/"&gt;Avalon, WinFX and Indigo&lt;/a&gt;. The Code samples showed how the abstraction helps the developer. For example, all you need it an attribute to make your class Secure in Indigo. I mean thats just incredible.&lt;br /&gt;&lt;a target="_blank" href="http://www.microsoft.com/events/teched2005/default.mspx"&gt;&lt;br /&gt;TechEd 2005&lt;/a&gt; is going on and you can get the experience of being there virtually thanks to the &lt;a target="_blank" href="http://www.microsoft.com/events/series/teched2005.mspx"&gt;Webcasts&lt;/a&gt; again.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/13490364-111835487076841768?l=thoughtsofanerd.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://thoughtsofanerd.blogspot.com/feeds/111835487076841768/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=13490364&amp;postID=111835487076841768&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/111835487076841768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/13490364/posts/default/111835487076841768'/><link rel='alternate' type='text/html' href='http://thoughtsofanerd.blogspot.com/2005/06/what-better-that-visual-learning.html' title='What better that Visual Learning :)'/><author><name>Enjoy Life!!</name><uri>http://www.blogger.com/profile/13643498440435913092</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://www2.cs.uh.edu/~ppsarda/Share/Punnu.jpg'/></author><thr:total>0</thr:total></entry></feed>
