<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Obi Oberoi</title><link>http://eoberoi.com/blogs/default.aspx?GroupID=3</link><description>Visual Studio.Net 2005</description><dc:language>en-US</dc:language><generator>CommunityServer 1.1 (Build: 1.1.0.50615)</generator><item><title>How to connect to SQL 2005 from inside SQL 2008 Management Studio</title><link>http://eoberoi.com/blogs/obi-oberoi_weblog/archive/2010/03/20/315.aspx</link><pubDate>Sat, 20 Mar 2010 18:59:00 GMT</pubDate><guid isPermaLink="false">db44779d-1a21-48e2-bc99-58cd61f2619f:315</guid><dc:creator>Obi</dc:creator><slash:comments>0</slash:comments><description>I recently ran into a problem where I needed to connect to SQL 2005 from inside SQL 2008 Management Studio. &lt;br&gt;&lt;br&gt;

I have SQL 2008 installed on my machine and I run my sql scripts against the production environment which is hosted by my ISP. &lt;br&gt;
Although, the configuration is pretty straight-forward, however, if not done often, it can turn into oblivion. &lt;br&gt;
This blog post is mainly a reminder to me in case I re-image my hard-drive and have to repeat the process.&lt;br&gt;
Here are the following steps:&lt;br&gt;&lt;br&gt;
-	Inside SQL 2008 Management Studio, highlight Database(s) node. You will notice on the right hand pane, there are five columns, namely Name, Policy Health State, Recovery Model, Compatibility Level and Owner.&lt;br&gt;&lt;br&gt;

-	Highlight the ‘Name’ column and right click on it, uncheck &lt;b&gt;Collation&lt;/b&gt;.&lt;br&gt;&lt;br&gt;
-	Now, try to reconnect or simply refresh. &lt;br&gt;&lt;br&gt;

-	You should see all available data bases on the shared server.&lt;br&gt;&lt;br&gt;
Cheers,&lt;br&gt;&lt;br&gt;
Obi /&gt;
&lt;img src="http://eoberoi.com/aggbug.aspx?PostID=315" width="1" height="1"&gt;</description></item><item><title>How to export Telerik's RAD Editor to MS Word</title><link>http://eoberoi.com/blogs/obi-oberoi_weblog/archive/2009/12/29/314.aspx</link><pubDate>Tue, 29 Dec 2009 21:36:00 GMT</pubDate><guid isPermaLink="false">db44779d-1a21-48e2-bc99-58cd61f2619f:314</guid><dc:creator>Obi</dc:creator><slash:comments>0</slash:comments><description>I am currently working with Telerik’s RAD Editor server control for ASP.Net. &lt;br&gt;
Needless to say, the control provides a plethora of features for styling, formatting and such. &lt;br&gt;&lt;br&gt;

For all intents and purposes it’s a WYSIWIG tool and you can do practically anything what you can with MS Word.  All said and done, however, it does not provide any out-of-the-box functionality to convert the editor's content to MS Word.&lt;br&gt;&lt;br&gt;

What you can do though is to save the editor content as an .html file, read the entire content into a string and open it in MS Word.  
If you want to edit the .html content, you can even go as far as doing a simple string replacement.&lt;br&gt;&lt;br&gt;

Here’s the code that does just that…&lt;br&gt;
Private folderPath As String = "C:/Report/"&lt;br&gt;
Private template As String = "MyMemo.DOT"&lt;br&gt;&lt;br&gt;

Protected Sub SaveRADContentAsHTML()&lt;br&gt;
        Try&lt;br&gt;
            ' CREATE WORD DOCUMENT&lt;br&gt;
            Dim WordApp = CreateObject("word.application")&lt;br&gt;
            Dim WordDoc = WordApp.Documents.Open(Server.MapPath(folderPath &amp; template))&lt;br&gt;

            WordApp.Application.Visible = False&lt;br&gt;

            Dim wordDocPath As String = Server.MapPath(folderPath)&lt;br&gt;

            If Not File.Exists(Server.MapPath(folderPath &amp; " MyMemo.html")) Then&lt;br&gt;
                WordDoc.SaveAs(wordDocPath &amp; "MyMemo.html")&lt;br&gt;
            End If&lt;br&gt;&lt;br&gt;

            WordDoc.Close()&lt;br&gt;
            WordApp.Quit()&lt;br&gt;&lt;br&gt;

            WordDoc = Nothing&lt;br&gt;
            WordApp = Nothing&lt;br&gt;
        Catch ex As Exception&lt;br&gt;
            Throw ex&lt;br&gt;
        End Try&lt;br&gt;
    End Sub&lt;br&gt;&lt;br&gt;

Private Sub btnReplaceWord_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnReplaceWord.Click&lt;br&gt;
        Dim wordDocPath As String = Server.MapPath(folderPath)&lt;br&gt;
        Dim inputText As String = String.Empty&lt;br&gt;
        Dim sTemp As String = String.Empty&lt;br&gt;
        Try&lt;br&gt;
            inputText = ReadFile(wordDocPath &amp; "MyMemo.html")&lt;br&gt;
            sTemp = inputText.Replace("Purpose~1", radEditor1.Content) 'Please note the string "Purpose~1" is used as a marker for string replacement&lt;br&gt;
            Using sw As New StreamWriter(Server.MapPath(folderPath &amp; "Test1.html"))&lt;br&gt;
                sw.Write(sTemp)&lt;br&gt;
            End Using&lt;br&gt;&lt;br&gt;
            
        Catch ex As Exception&lt;br&gt;
            Throw ex&lt;br&gt;
        End Try&lt;br&gt;
    End Sub&lt;br&gt;&lt;br&gt;

Protected Function ReadFile(ByVal myFilePath As String) As String&lt;br&gt;
        Try&lt;br&gt;
            If Not File.Exists(myFilePath) Then&lt;br&gt;
                Return String.Empty&lt;br&gt;
            End If&lt;br&gt;&lt;br&gt;

            Using sr As New StreamReader(myFilePath)&lt;br&gt;
                Return sr.ReadToEnd()&lt;br&gt;
            End Using&lt;br&gt;&lt;br&gt;

        Catch ex As Exception&lt;br&gt;
            Throw ex&lt;br&gt;
        End Try&lt;br&gt;
    End Function&lt;br&gt;&lt;img src="http://eoberoi.com/aggbug.aspx?PostID=314" width="1" height="1"&gt;</description></item><item><title>Talk on LINQ to SQL Stored Procedures</title><link>http://eoberoi.com/blogs/obi-oberoi_weblog/archive/2009/06/18/302.aspx</link><pubDate>Thu, 18 Jun 2009 15:37:00 GMT</pubDate><guid isPermaLink="false">db44779d-1a21-48e2-bc99-58cd61f2619f:302</guid><dc:creator>Obi</dc:creator><slash:comments>0</slash:comments><description>On June 17th, I gave a talk on LINQ TO SQL Stored Procedures at Manulife. &lt;br&gt;&lt;br&gt;

Below, please see a link to the sample code that I used for demonstration:
&lt;br&gt;&lt;br&gt;
http://www.eoberoi.com/blogs/GrokTalk/sourcecode.html
&lt;br&gt;&lt;br&gt;

Thanks,
&lt;br&gt;&lt;br&gt;
Obi /&gt;
&lt;img src="http://eoberoi.com/aggbug.aspx?PostID=302" width="1" height="1"&gt;</description></item><item><title>AJAX - Fileupload.HasRows returns false???</title><link>http://eoberoi.com/blogs/obi-oberoi_weblog/archive/2009/05/01/301.aspx</link><pubDate>Fri, 01 May 2009 02:45:00 GMT</pubDate><guid isPermaLink="false">db44779d-1a21-48e2-bc99-58cd61f2619f:301</guid><dc:creator>Obi</dc:creator><slash:comments>0</slash:comments><description>I have recently jumped on the AJAX bandwagon and am frantically trying to AJAX enable all my web pages through the use of asynchronous partial-page updates.
&lt;br&gt;
A typical design pattern of an ASP.NET AJAX application involves it consuming web services directly from the client without requiring postbacks to the web server. Not only do postbacks slow down an application, but they also complicate the application design, implementation, and deployment. 
&lt;br&gt;
AJAX is so addictive and such a compelling technology that once you have gotten the hang of it, it is hard to refrain from using it.&lt;br&gt;&lt;br&gt;

However, all said and done, there are some pitfalls that one ought to be aware of.&lt;br&gt; 

This blog post is certainly not intended for what AJAX can or can’t do, but if you are looking to convert your web page and make them AJAX enabled, there are a few things you have got to keep in mind just in case you are stuck.&lt;br&gt;&lt;br&gt;

I had a web page with input controls on a panel all of which were wired to the validator controls. In addition, I also had a FileUpload control. &lt;br&gt;&lt;br&gt;

Prior to AJAX enabling the web page, everything was fine and dandy, but the minute I wrapped the asp panel in an Update Panel, everything worked but the FileUpload. In that, the control (FileUpload) did not detect the file name and returned an empty string when checking for FileUpload.HasFile.&lt;br&gt;&lt;br&gt;

The solution to the problem was not difficult either.&lt;br&gt;

In the markup, essentially all that was missing was the PostBackTrigger with the ControlID="btnSubmit".
&lt;br&gt;&lt;br&gt;


   


&lt;br&gt;&lt;br&gt;

So essentially, all that is happening now is that we are forcing a post back on the click event of the button while everything else happens asynchronously using the Update Panel. So, when the user presses the button, the page gets refreshed and filename is detected.&lt;br&gt;&lt;br&gt;

My next area of interest is JavaScript Object Notation (JSON). This is just another piece of functionality that is part of the AJAX Extension toolkit typically used for serializing and deserializing data. It is somewhat akin to XML/SOAP, except that JSON is a text-based data interchange format which delivers a more consistent experience due to the implementation differences of XML/SOAP by the various browsers.
&lt;br&gt;&lt;br&gt;

Cheers,&lt;br&gt;&lt;br&gt;

Obi /&gt;
&lt;img src="http://eoberoi.com/aggbug.aspx?PostID=301" width="1" height="1"&gt;</description></item><item><title>LINQ TO SQL Vs. Lambda Expressions</title><link>http://eoberoi.com/blogs/obi-oberoi_weblog/archive/2009/02/04/300.aspx</link><pubDate>Wed, 04 Feb 2009 21:50:00 GMT</pubDate><guid isPermaLink="false">db44779d-1a21-48e2-bc99-58cd61f2619f:300</guid><dc:creator>Obi</dc:creator><slash:comments>0</slash:comments><description>It is amazing how much you can achieve with Lambda expressions using a single line of code vs. several lines of Linq to Sql.
Although, linq to sql is a better choice over traditional CRUD operations using sql and the like.

Here's how...
Create a new console application project in VS.Net 2008 and import the following name spaces in the module:&lt;br&gt;
Imports System.Collections &lt;br&gt;
Imports System.Linq
&lt;br&gt;&lt;br&gt;


Let's declare an array of string as below:&lt;br&gt;
Dim Provinces As String() = {"Ontario", "New Brunswick", "British Columbia", "PEI", "Quebec", "Manitoba", "Alberta", "Northern Territories"}
&lt;br&gt;&lt;br&gt;

Using LINQ to SQL, iterate through the array list and write the result to a console as below:
&lt;br&gt;
 	Dim oProvince = From s In Provinces _
&lt;br&gt;
            Where (s.StartsWith("N")) _
&lt;br&gt;
            Select s
&lt;br&gt;&lt;br&gt;
        For Each province In oProvince
&lt;br&gt;
            Console.WriteLine(province)
&lt;br&gt;
        Next
&lt;br&gt;&lt;br&gt;

        Console.ReadLine()
&lt;br&gt;&lt;br&gt;

See the number of lines it took to display the provinces beginning with "N"!!!
&lt;br&gt;
With Lambda expressions, all of this can be achieved in a single line of code. See below:
&lt;br&gt;&lt;br&gt;

        For Each prov In Provinces.Where(Function(p) p.StartsWith("N"))&lt;br&gt;
            Console.WriteLine(prov)&lt;br&gt;
        Next
&lt;br&gt;&lt;br&gt;
        Console.ReadLine()
&lt;br&gt;&lt;br&gt;
Lambda expressions are very powerful which take anonymous delegates to give you the desired result.
&lt;br&gt;
While I use LINQ TO SQL where necessary but don't miss a chance when it comes to Lambda expression usage.
&lt;br&gt;
Cheers,
&lt;br&gt;&lt;br&gt;
Obi /&gt;&lt;img src="http://eoberoi.com/aggbug.aspx?PostID=300" width="1" height="1"&gt;</description></item><item><title>Tech Days is here...</title><link>http://eoberoi.com/blogs/obi-oberoi_weblog/archive/2008/10/22/299.aspx</link><pubDate>Wed, 22 Oct 2008 20:59:00 GMT</pubDate><guid isPermaLink="false">db44779d-1a21-48e2-bc99-58cd61f2619f:299</guid><dc:creator>Obi</dc:creator><slash:comments>0</slash:comments><description>&lt;P&gt;TechDays is happening in Toronto.&lt;/P&gt;
&lt;P&gt;Tech Days is a technology training conference for Canadian IT professionals and developers.&lt;/P&gt;
&lt;P&gt;Although, it is a national event and will be held in all major cities of Canada with a&amp;nbsp;single and two day workshops, however, it will be a two day event in Toronto.&lt;/P&gt;
&lt;P&gt;I am taking some time off work to attend this event. With five tracks&amp;nbsp;from Windows, Web, Data Management etc., my main emphasis will be on the Web and Windows tracks with topics like AJAX for ASP.Net, Silverlight, WPF and MVC framework.&lt;/P&gt;
&lt;P&gt;I think, it is a compelling event with early-bird fee of just $249 which also includes breakfast and lunch.&lt;/P&gt;
&lt;P&gt;For further information or to register, click the url below:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.microsoft.com/canada/techdays"&gt;www.microsoft.com/canada/techdays&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Cheers,&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;FONT color=#000080&gt;Obi /&amp;gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;img src="http://eoberoi.com/aggbug.aspx?PostID=299" width="1" height="1"&gt;</description></item><item><title>IE 7.0 Freezes</title><link>http://eoberoi.com/blogs/obi-oberoi_weblog/archive/2008/06/09/298.aspx</link><pubDate>Mon, 09 Jun 2008 03:23:00 GMT</pubDate><guid isPermaLink="false">db44779d-1a21-48e2-bc99-58cd61f2619f:298</guid><dc:creator>Obi</dc:creator><slash:comments>0</slash:comments><description>Recently what appeared to a be a problem with IE 7.0 on my Lenovo T61p drove me up the wall. Every time, I would open a second instance of the browser, it would not only freeze the browser but also all the active windows on my machine!!! I later found out that it was the "Shockwave Flash Object" by Adobe that was the culprit. So overcome this otherwise annoying problem, in IE 7.0 I went to Tools - Manage Add-ons - Enable or Disable Add-ons and disabled the "Shockwave Flash Object" and voila... This action seems to have fixed my problem wherein I can now have multiple instances of IE or for that matter have multiple tab pages in a single instance of IE 7.0.
&lt;br&gt;
Cheers, 
&lt;br&gt;&lt;br&gt;
Obi Oberoi&lt;img src="http://eoberoi.com/aggbug.aspx?PostID=298" width="1" height="1"&gt;</description></item><item><title>Software in 2008</title><link>http://eoberoi.com/blogs/obi-oberoi_weblog/archive/2008/01/03/294.aspx</link><pubDate>Thu, 03 Jan 2008 20:09:00 GMT</pubDate><guid isPermaLink="false">db44779d-1a21-48e2-bc99-58cd61f2619f:294</guid><dc:creator>Obi</dc:creator><slash:comments>0</slash:comments><description>&lt;P&gt;Here are some of the predictions of what future holds for the industry software in 2008. 
&lt;P&gt;1. &lt;STRONG&gt;User Experience Reaches the Enterprise.&lt;/STRONG&gt; In 2008 we will see several major enterprises start efforts to build UX centric applications that increase worker productivity, reduced transaction costs and increase pull through as the UX meme of the consumer facing world leaks into the enterprise. The days of the battleship gray, forms of data application as the king of the enterprise are numbered because of an imperative towards richer visualization of complex and interconnected data. While there will always be a need for the traditional sort of application, by the end of 2008, it is no longer the only element of the corporate landscape.&amp;nbsp;&lt;A href="http://blogs.msdn.com/blogfiles/brada/WindowsLiveWriter/SoftwareDevelopmentPredictionsfor2008_116C9/image_2.png"&gt;&lt;/A&gt; 
&lt;P&gt;2. &lt;STRONG&gt;Testability Becomes a Requirement for Software Development Frameworks.&lt;/STRONG&gt; No longer satisfied with simple reductions in costs for initial development, a growing community demand frameworks and tools that facilitate sustainable and agile practices. 2008 is the year that frameworks and tools take notice and start to deliver solutions that are testable out of the box. Technologies such as Test Driven Development, MVC/MVP patterns, and frameworks that support mocking become mainstream. After seeing this year’s cool demos at software development industry conferences a common question will be: “...And how do you test that?” Let’s hope the presenters have an answer. 
&lt;P&gt;3. &lt;STRONG&gt;The Companion Applications Become Practical.&lt;/STRONG&gt; While RIA and AJAX application categories continue to grow, many consumer facing web applications and enterprise applications developers realize there is a need for desktop exploitive applications as well as reach web applications that work everywhere. What meaningful application wouldn’t benefit from a pairing like that of Outlook and Outlook Web Access? In the past it has been prohibitively expensive to build these applications, but with the circa 2008 technology such as .NET Framework 3.5 and Silverlight, it is finally becoming practical to have a single codebase that fully exploits the desktop and offers a rich web experience. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Georgia color=#000080 size=4&gt;Obi Oberoi&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://eoberoi.com/aggbug.aspx?PostID=294" width="1" height="1"&gt;</description></item><item><title>Definition of Interoperability</title><link>http://eoberoi.com/blogs/obi-oberoi_weblog/archive/2007/12/26/293.aspx</link><pubDate>Thu, 27 Dec 2007 00:12:00 GMT</pubDate><guid isPermaLink="false">db44779d-1a21-48e2-bc99-58cd61f2619f:293</guid><dc:creator>Obi</dc:creator><slash:comments>0</slash:comments><description>What does the term 'interoperability' really mean? What does it mean to 'interoperate' or be 'interoperable' when designing solutions? A number of definitions are available depending upon whom you speak to or where you search. Some define interoperability in terms of relationships; others have a much more specific view based on the technology that they are describing. 
&lt;br&gt;&lt;br&gt;
To define this term, as per Simon Guest, there is a three-part explanation: one formal, one pictorial, and one comparitive. 
&lt;br&gt;&lt;br&gt;
1. Formal: Interoperability enables communication, data exchange, or program execution among various systems in a way that requires the user to have little or no awareness of the underlying operations of those systems. Interoperability is about connecting and building applications that work with each other to such an extent that the presentation to the user is seamless. 
&lt;br&gt;&lt;br&gt;
2. Pictorial: When describing interoperability, think of it as making reference to a popular lake-dwelling species, the duck. As a duck is seen swimming across a lake, only the top half of the duck looks very serene. The duck appears to glide across the lake with little or no effort. Despite this calm exterior, the duck’s legs are frantically kicking in all directions to get to the other side of the lake. Such is the way of interoperability. A well –designed solution that interoperates among many diverse systems should appear “calm and serene” to the user – the user should have no awareness that a click of a button or a switch of a page might create many calls to various systems throughout the enterprise, somewhat akin to the frantically kicking legs of our feathered friend. 
&lt;br&gt;&lt;br&gt;
3. Comparative: Comparative draws upon the previous two but offers a slightly different slant which is the following: 
&lt;br&gt;&lt;br&gt;
• Migration: Opportunities exist in the migration space. Customers do have code that can benefit from running on the .Net framework, and some of this code already exists within J2EE applications today. 
&lt;br&gt;&lt;br&gt;
• Portability and Interoperability: Portability is the notion of running a single component or piece of code on platforms based on multiple implementations from various vendors. The point isn’t to detail the sustainability of either the Java or the .Net platform for developing applications. The success lies in the operability between the two platforms. 
&lt;br&gt;&lt;br&gt;
• Reuse of existing systems: Most established companies have a number of legacy systems. The term legacy is meant technology that’s not being actively developed upon today. For example, a system located in the data center that’s still in production but no longer offers a strategic advantage to the company is a legacy system. A plan to move these systems to a new platform might be a longer-term strategy. A solution that has the ability to interoperate with these systems has the potential to extend the life of these systems and more importantly, the knowledge of the developers who work with them. 
&lt;br&gt;&lt;br&gt;
• Delivery based on technical merit: Designing an architecture that can enable interoperability promotes the selection of platforms based on technical merit. One could argue that every platform and technology—whether it’s .Net, J2EE, or anything else – has its own merits for deployment. This could be maturity, reliability, scalability, security, technical advancement, and so forth. An approach to developing applications and services that have the ability to interoperate with one another allows platforms to be selected based on their merit and applicability to the job, allowing greater choice regardless of the vendor. 
&lt;br&gt;&lt;br&gt;
• Pilot for adoption: When organizations want to deploy a new technology such as the .net framework, it’s rare that they simply rip and replace an entire application or system. In many cases, a replacement is normally triggered by a pilot, or proof-of-concept, project. Such a pilot tends to be a short-term project with an aim to prove that the technology can work well with existing systems and applications. The ability for this pilot or proof-of-concept project to interoperate with existing production systems is imperative, and in many cases, can often determine its success. 
&lt;br&gt;&lt;br&gt;
• Migrations: Even if a system will be replaced or updated, it’s rare to find a case where this can be done with a single “flick of a switch” – many migrations have to be well planned and carefully executed, and often involve moving an application a few parts at a time. This way of dividing a system for migration purposes often creates a demand for interoperability (because some parts that have been migrated still might need to communicate with others that have not). 
&lt;br&gt;&lt;br&gt;
Obi Oberoi 
   
&lt;img src="http://eoberoi.com/aggbug.aspx?PostID=293" width="1" height="1"&gt;</description></item><item><title>ASP.Net Tutorial - A way to go!!!</title><link>http://eoberoi.com/blogs/obi-oberoi_weblog/archive/2007/09/20/291.aspx</link><pubDate>Thu, 20 Sep 2007 02:05:00 GMT</pubDate><guid isPermaLink="false">db44779d-1a21-48e2-bc99-58cd61f2619f:291</guid><dc:creator>Obi</dc:creator><slash:comments>0</slash:comments><description>&lt;H2&gt;&lt;FONT color=#006400 size=3&gt;&lt;EM&gt;What a better way to learn ASP.Net than reading the tutorial below...&lt;/EM&gt;&lt;/FONT&gt;&lt;/H2&gt;
&lt;H2&gt;New Features in ASP.NET 2.0&lt;/H2&gt;
&lt;P class=ArticleText&gt;ASP.NET 2.0 offers some of the following new features:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;P class=ArticleText&gt;Master Pages, Themes and Web Parts&lt;/P&gt;
&lt;LI&gt;
&lt;P class=ArticleText&gt;Security controls standardized&lt;/P&gt;
&lt;LI&gt;
&lt;P class=ArticleText&gt;Standard controls for navigation&lt;/P&gt;
&lt;LI&gt;
&lt;P class=ArticleText&gt;Personalization, roles and internationalization services&lt;/P&gt;
&lt;LI&gt;
&lt;P class=ArticleText&gt;Simpler and better data access controls&lt;/P&gt;
&lt;LI&gt;
&lt;P class=ArticleText&gt;Complete support for XML standards&lt;/P&gt;
&lt;LI&gt;
&lt;P class=ArticleText&gt;Better compilation and deployment&lt;/P&gt;
&lt;LI&gt;
&lt;P class=ArticleText&gt;Better Site Management&lt;/P&gt;
&lt;LI&gt;
&lt;P class=ArticleText&gt;New and improved development tools&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P class=ArticleText&gt;Let's discuss these new features in detail:&lt;/P&gt;
&lt;H2&gt;Master Pages&lt;/H2&gt;
&lt;P class=ArticleText&gt;ASP.NET didn't offer a way to have a consistent look and feel for the complete web site.&lt;/P&gt;
&lt;P class=ArticleText&gt;ASP.NET 2.0 solved this problem by introducing master pages. A master page is a template for other pages, with shared layout and functionality. The master page defines placeholders for content pages. The result page is a combination (merge) of the master page and the content page. More about master pages read in &lt;A href="http://www.beansoftware.com/ASP.NET-Tutorials/Master-Pages.aspx"&gt;&lt;FONT color=#0066cc&gt;Master Pages in ASP.NET 2.0 tutorial&lt;/FONT&gt;&lt;/A&gt; &lt;/P&gt;
&lt;H2&gt;Themes&lt;/H2&gt;
&lt;P class=ArticleText&gt;To give a customized look to the web applications, ASP.NET 2.0 came up with the themes/skins feature (more about this feature you can find in &lt;A href="http://www.beansoftware.com/ASP.NET-Tutorials/Themes-Skins.aspx"&gt;&lt;FONT color=#0066cc&gt;Themes and Skins in ASP.NET 2.0 tutorial&lt;/FONT&gt;&lt;/A&gt;).&lt;/P&gt;
&lt;P class=ArticleText&gt;ASP.NET 2.0 aimed to achieve the following design goals:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;P class=ArticleText&gt;Simplify to customize the appearance of a site&lt;/P&gt;
&lt;LI&gt;
&lt;P class=ArticleText&gt;Allow themes to be applied to controls, pages, and entire sites&lt;/P&gt;
&lt;LI&gt;
&lt;P class=ArticleText&gt;Allowing the customization of all visual elements&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;H2&gt;Web Parts&lt;/H2&gt;
&lt;P class=ArticleText&gt;ASP.NET 2.0 Web Parts provide a consistent look for a site, while still allowing user customization of style and content (more in &lt;A href="http://www.beansoftware.com/ASP.NET-Tutorials/Web-Parts.aspx"&gt;&lt;FONT color=#0066cc&gt;Web Parts in ASP.NET tutorial&lt;/FONT&gt;&lt;/A&gt;).&lt;/P&gt;
&lt;P class=ArticleText&gt;New controls:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;P class=ArticleText&gt;Zone controls - areas on a page where the content is consistent&lt;/P&gt;
&lt;LI&gt;
&lt;P class=ArticleText&gt;Web part controls - content areas for each zone&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;H2&gt;Navigation&lt;/H2&gt;
&lt;P class=ArticleText&gt;ASP.NET 2.0 introduces built-in navigation controls (more in &lt;A href="http://www.beansoftware.com/ASP.NET-Tutorials/Web-Site-Navigation.aspx"&gt;&lt;FONT color=#0066cc&gt;Web Site Navigation in ASP.NET 2.0 tutorial&lt;/FONT&gt;&lt;/A&gt;) &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;P class=ArticleText&gt;Site Maps&lt;/P&gt;
&lt;LI&gt;
&lt;P class=ArticleText&gt;Dynamic HTML menus&lt;/P&gt;
&lt;LI&gt;
&lt;P class=ArticleText&gt;Tree Views&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;H2&gt;Security&lt;/H2&gt;
&lt;P class=ArticleText&gt;Security plays a key role in application development. So the confidential and personal information need to be protected (read more on &lt;A href="http://www.beansoftware.com/ASP.NET-Tutorials/Security-Features.aspx"&gt;&lt;FONT color=#0066cc&gt;Security Features in ASP.NET 2.0&lt;/FONT&gt;&lt;/A&gt;).&lt;/P&gt;
&lt;P class=ArticleText&gt;In ASP.NET 2.0 the following controls has been added:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;P class=ArticleText&gt;A Login control, which provides login functionality&lt;/P&gt;
&lt;LI&gt;
&lt;P class=ArticleText&gt;A LoginStatus control, to control the login status&lt;/P&gt;
&lt;LI&gt;
&lt;P class=ArticleText&gt;A LoginName control to display the current user name&lt;/P&gt;
&lt;LI&gt;
&lt;P class=ArticleText&gt;A LoginView control, to provide different views depending on login status&lt;/P&gt;
&lt;LI&gt;
&lt;P class=ArticleText&gt;A CreateUser wizard, to allow creation of user accounts&lt;/P&gt;
&lt;LI&gt;
&lt;P class=ArticleText&gt;A PasswordRecovery control, to provide the "I forgot my password" functionality&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;H2&gt;Roles and Personalization&lt;/H2&gt;
&lt;P class=ArticleText&gt;Internet communities are gaining popularity. ASP.NET 2.0 has personalization features for storing user details. This caters to an easy way to customize user (and user group) properties (more about user management read in &lt;A href="http://www.beansoftware.com/ASP.NET-Tutorials/Authorization-Authentication-Registration.aspx"&gt;&lt;FONT color=#0066cc&gt;User registration and authentication for an ASP.NET 2.0&lt;/FONT&gt;&lt;/A&gt; tutorial).&lt;/P&gt;
&lt;H2&gt;Internationalization&lt;/H2&gt;
&lt;P class=ArticleText&gt;To cater and reach out to a large audience is important and requires reaching people with different languages. So to handle this, ASP.NET 2.0 introduces an improved support for multiple languages (read more in &lt;A href="http://www.beansoftware.com/ASP.NET-Tutorials/Globalisation-Multilingual-CultureInfo.aspx"&gt;&lt;FONT color=#0066cc&gt;Building Multilingual Web Sites with ASP.NET&lt;/FONT&gt;&lt;/A&gt; tutorial).&lt;/P&gt;
&lt;H2&gt;Data Access&lt;/H2&gt;
&lt;P class=ArticleText&gt;There are many data driven web sites that use databases or XML files as data sources. With ASP.NET this involved code, and often the same code had to be used over and over in different web pages.&lt;/P&gt;
&lt;P class=ArticleText&gt;A key goal of ASP.NET 2.0 was to ease the use of data sources and eliminate this redundancy. ASP.NET 2.0 has a whole new data controls, removing much of the need for programming and in-depth knowledge of data connections. Read more in &lt;A href="http://www.beansoftware.com/ASP.NET-Tutorials/Data-Source-Controls.aspx"&gt;&lt;FONT color=#0066cc&gt;Data Source Controls in ASP.NET 2.0&lt;/FONT&gt;&lt;/A&gt; and &lt;A href="http://www.beansoftware.com/ASP.NET-Tutorials/DataSet-DataAdapter.aspx"&gt;&lt;FONT color=#0066cc&gt;DataSet and DataAdapter in ASP.NET 2.0&lt;/FONT&gt;&lt;/A&gt; tutorials &lt;/P&gt;
&lt;H2&gt;Mobility Support&lt;/H2&gt;
&lt;P class=ArticleText&gt;Often with Mobile devices is a problem arises when it comes to screen size and display capabilities. In ASP.NET, the Microsoft Mobile Internet Toolkit (MMIT) is used for such purposes. But In ASP.NET 2.0, MMIT is no longer needed because mobile support is built into all controls. &lt;/P&gt;
&lt;H2&gt;Images&lt;/H2&gt;
&lt;P class=ArticleText&gt;In ASP.NET 2.0, following new controls for image handling have been included:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;P class=ArticleText&gt;The ImageMap control - image map support&lt;/P&gt;
&lt;LI&gt;
&lt;P class=ArticleText&gt;The DynamicImage control - image support for different browsers&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P class=ArticleText&gt;These controls are important for better image display on mobile devices, like hand-held computers and cell phones.&lt;/P&gt;
&lt;H2&gt;Automatic Compilation&lt;/H2&gt;
&lt;P class=ArticleText&gt;ASP.NET 2.0 supports automatic compilation. The first run will compile all files within a directory, including support for WSDL, and XSD files.&lt;/P&gt;
&lt;H2&gt;Compiled Deployment (Installation) and Source Protection&lt;/H2&gt;
&lt;P class=ArticleText&gt;ASP.NET 2.0 also provides pre-compilation. A complete web site can be pre-compiled. This gives an easy way to deploy (upload to a server) compiled applications, and this protects the source code as only compiled files are deployed.&lt;/P&gt;
&lt;H2&gt;Site Management&lt;/H2&gt;
&lt;P class=ArticleText&gt;ASP.NET 2.0 introduces three new features for web site configuration and management:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;P class=ArticleText&gt;New local management console&lt;/P&gt;
&lt;LI&gt;
&lt;P class=ArticleText&gt;New programmable management functions (API)&lt;/P&gt;
&lt;LI&gt;
&lt;P class=ArticleText&gt;New web-based management tool&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;H2&gt;Development Tools&lt;/H2&gt;
&lt;P class=Articletext&gt;Along with ASP.NET, Project and design features were released in Visual Studio.NET keeping in mind the need of corporate developers. With ASP.NET 2.0, Visual Studio 2005 was released.&lt;/P&gt;
&lt;P class=ArticleText&gt;Visual Studio 2005's key design features include:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;P class=ArticleText&gt;Support for the features described above&lt;/P&gt;
&lt;LI&gt;
&lt;P class=ArticleText&gt;Upload files from anywhere (FTP, File System, Front Page...)&lt;/P&gt;
&lt;LI&gt;
&lt;P class=ArticleText&gt;No project files, allowing code to be manipulated outside Visual Studio&lt;/P&gt;
&lt;LI&gt;
&lt;P class=ArticleText&gt;Integrated Web Site Administration Tool&lt;/P&gt;
&lt;LI&gt;
&lt;P class=ArticleText&gt;No "build" step - ability to compile on first run&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P class=ArticleText&gt;For non-corporate developers who cannot access Visual Studio.NET, ASP.NET introduces a new and free tool called Visual Web Developer. More about this free tool read in &lt;A href="http://www.beansoftware.com/ASP.NET-Tutorials/Visual-Web-Developer.aspx"&gt;&lt;FONT color=#0066cc&gt;Introduction to Visual Web Developer 2005 - Express Edition tutorial&lt;/FONT&gt;&lt;/A&gt;.&lt;/P&gt;
&lt;P class=ArticleText&gt;Cheers,&lt;/P&gt;
&lt;P class=ArticleText&gt;&lt;STRONG&gt;&lt;FONT color=#000080&gt;&lt;EM&gt;Obi&lt;/EM&gt;&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P class=ArticleText&gt; &lt;/P&gt;&lt;img src="http://eoberoi.com/aggbug.aspx?PostID=291" width="1" height="1"&gt;</description></item><item><title>MSDN Real Development Reloaded Tour 2007</title><link>http://eoberoi.com/blogs/obi-oberoi_weblog/archive/2007/08/27/290.aspx</link><pubDate>Tue, 28 Aug 2007 01:44:00 GMT</pubDate><guid isPermaLink="false">db44779d-1a21-48e2-bc99-58cd61f2619f:290</guid><dc:creator>Obi</dc:creator><slash:comments>0</slash:comments><description>&lt;P&gt;&lt;SPAN&gt;Hi Folks,&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Microsoft Canada has just announced the upcoming&amp;nbsp;realDevelopment 2007 Tour.&lt;BR&gt;&lt;BR&gt;"This tour is all about Web development and how to make better use of&lt;BR&gt;current technologies like AJAX and Visual Studio 2005 in your projects. If&lt;BR&gt;you are a web developer you don't want to miss this."&lt;BR&gt;&lt;BR&gt;The Toronto event will be held on Tuesday, October 30 at the Metro Toronto&lt;BR&gt;Convention Centre from 8:00am to noon. For more details and to register,&lt;BR&gt;please visit:&lt;BR&gt;&lt;BR&gt;&lt;A href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032348798&amp;amp;Cultur"&gt;http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032348798&amp;amp;Cultur&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;Cheers,&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;FONT face=Tahoma color=#000080&gt;&lt;EM&gt;&lt;STRONG&gt;Obi&lt;/STRONG&gt;&lt;/EM&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;/SPAN&gt;&lt;img src="http://eoberoi.com/aggbug.aspx?PostID=290" width="1" height="1"&gt;</description></item><item><title>Virtual PC 2007 for download</title><link>http://eoberoi.com/blogs/obi-oberoi_weblog/archive/2007/06/19/288.aspx</link><pubDate>Tue, 19 Jun 2007 15:08:00 GMT</pubDate><guid isPermaLink="false">db44779d-1a21-48e2-bc99-58cd61f2619f:288</guid><dc:creator>Obi</dc:creator><slash:comments>0</slash:comments><description>&lt;P&gt;Virtual PC 2007 was released in final form for download early this year.&amp;nbsp; You can read more about Virtual PC 2007, and download it, from the newly updated Virtual PC website: &lt;A href="http://www.microsoft.com/windows/products/winfamily/virtualpc/default.mspx"&gt;http://www.microsoft.com/windows/products/winfamily/virtualpc/default.mspx&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Some key features of Virtual PC 2007 include:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Support for x64 Windows as a host operating system 
&lt;LI&gt;Support for hardware virtualization support 
&lt;LI&gt;Support for Windows&amp;nbsp;Vista as a guest and host operating system&amp;nbsp; 
&lt;LI&gt;Support for PXE network booting of virtual machines 
&lt;LI&gt;Support for the use of fullscreen virtual machines on multi-monitor systems (VM still stays on just one monitor though)&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Cheers,&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;FONT face=Garamond color=#000080 size=5&gt;Obi&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;&lt;img src="http://eoberoi.com/aggbug.aspx?PostID=288" width="1" height="1"&gt;</description></item><item><title>What's with IIS and Apache</title><link>http://eoberoi.com/blogs/obi-oberoi_weblog/archive/2007/05/26/287.aspx</link><pubDate>Sat, 26 May 2007 18:53:00 GMT</pubDate><guid isPermaLink="false">db44779d-1a21-48e2-bc99-58cd61f2619f:287</guid><dc:creator>Obi</dc:creator><slash:comments>0</slash:comments><description>&lt;P&gt;How does IIS7 stack up against Apache? Bill Staples, who runs the server products within the Developer Division – Web Server, Media Server and Commerce Server recently wrote a great blog that talks about IIS versus Apache. It is a very well written piece and for those of you interested in understanding what's going on in the web server space and how IIS compares against other offerings, this is a good read. &lt;/P&gt;
&lt;P&gt;Cheers, &lt;/P&gt;
&lt;P&gt;&lt;FONT face=Tahoma color=#000080&gt;Obi Oberoi&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://eoberoi.com/aggbug.aspx?PostID=287" width="1" height="1"&gt;</description></item><item><title>Seminar on SOA</title><link>http://eoberoi.com/blogs/obi-oberoi_weblog/archive/2007/05/25/286.aspx</link><pubDate>Fri, 25 May 2007 16:49:00 GMT</pubDate><guid isPermaLink="false">db44779d-1a21-48e2-bc99-58cd61f2619f:286</guid><dc:creator>Obi</dc:creator><slash:comments>0</slash:comments><description>&lt;P&gt;Next week, I am attending a breakfast seminar on bridging Service Oriented Architecture organized by &lt;A href="http://objectsharp.com/index.aspx"&gt;Object Sharp &lt;/A&gt;Consulting. Thanks to &lt;A href="http://msmvps.com/blogs/windsor/"&gt;Rob Windsor &lt;/A&gt;who informed me about it.&lt;/P&gt;
&lt;P&gt;I am currently writing a thesis on &lt;EM&gt;&lt;FONT color=#800080&gt;'Interoperability between Disparate Systems'&lt;/FONT&gt;&lt;/EM&gt; . I am sure this seminar will feed some ideas to facilitate in polishing up my thesis.&lt;/P&gt;
&lt;P&gt;Cheers,&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Georgia color=#000080 size=5&gt;Obi Oberoi&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://eoberoi.com/aggbug.aspx?PostID=286" width="1" height="1"&gt;</description></item><item><title>Learning VB.Net online</title><link>http://eoberoi.com/blogs/obi-oberoi_weblog/archive/2007/05/09/285.aspx</link><pubDate>Wed, 09 May 2007 19:06:00 GMT</pubDate><guid isPermaLink="false">db44779d-1a21-48e2-bc99-58cd61f2619f:285</guid><dc:creator>Obi</dc:creator><slash:comments>0</slash:comments><description>&lt;P&gt;&lt;A class="" href="http://msdn2.microsoft.com/en-us/vbasic/bb466226.aspx" target=_blank&gt;This how-to video series&lt;/A&gt; is dedicated to getting Visual Basic developers productive on areas of data-based Windows Application development. The series starts with the basics of database development with SQL-Server 2005 Express then walks through the details of connecting to and querying databases, and Windows Forms development basics using the built-in designers in Visual Basic 2005.&lt;/P&gt;
&lt;P&gt;This series is aimed at VB.NET Winforms and database beginners...&lt;A class="" href="http://msdn2.microsoft.com/en-us/vbasic/bb466226.aspx" target=_blank&gt;Enjoy the series&lt;/A&gt;!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Garamond color=#000080 size=5&gt;Obi&lt;/FONT&gt;&lt;/P&gt;&lt;BR&gt;&lt;img src="http://eoberoi.com/aggbug.aspx?PostID=285" width="1" height="1"&gt;</description></item><item><title>Toronto Code Camp Videos just Released</title><link>http://eoberoi.com/blogs/obi-oberoi_weblog/archive/2007/05/03/284.aspx</link><pubDate>Thu, 03 May 2007 02:54:00 GMT</pubDate><guid isPermaLink="false">db44779d-1a21-48e2-bc99-58cd61f2619f:284</guid><dc:creator>Obi</dc:creator><slash:comments>0</slash:comments><description>&lt;P&gt;As you'd probably know, there was a Toronto Code Camp held recently and was&amp;nbsp;publicized all over the town. The &lt;A href="http://www.torontocodecamp.net/Default.aspx?tabid=69"&gt;Toronto Code Camp&lt;/A&gt;&amp;nbsp;has just released the videos (17 of them). The members include the presenters and attendees.&amp;nbsp; Watch what they have to say!!!&lt;/P&gt;
&lt;P&gt;Cheers,&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Georgia color=#000080 size=4&gt;Obi&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://eoberoi.com/aggbug.aspx?PostID=284" width="1" height="1"&gt;</description></item><item><title>How to execute a DTS Package</title><link>http://eoberoi.com/blogs/obi-oberoi_weblog/archive/2007/04/29/283.aspx</link><pubDate>Sun, 29 Apr 2007 05:33:00 GMT</pubDate><guid isPermaLink="false">db44779d-1a21-48e2-bc99-58cd61f2619f:283</guid><dc:creator>Obi</dc:creator><slash:comments>0</slash:comments><description>&lt;P&gt;Executing a DTS package from .Net has never been simpler. Here's how:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;'----------------------------------------------------------------------------------------------------------------------&lt;BR&gt;' NOTE: Requires reference to Microsoft DTS Package Object Library&lt;BR&gt;'----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;
&lt;P&gt;Dim oPackage As New DTS.Package&lt;/P&gt;
&lt;P&gt;oPackage.LoadFromSQLServer sServerName, sUID, sPWD, DTSSQLStgFlag_Default, "", "", "", "MyPackageName", 0&lt;/P&gt;
&lt;P&gt;oPackage.Execute&lt;/P&gt;
&lt;P&gt;Set oPackage = Nothing &lt;BR&gt;&lt;/P&gt;
&lt;P&gt;Cheers,&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Garamond color=#000080 size=4&gt;Obi&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://eoberoi.com/aggbug.aspx?PostID=283" width="1" height="1"&gt;</description></item><item><title>How to Format Dates in .Net</title><link>http://eoberoi.com/blogs/obi-oberoi_weblog/archive/2007/04/29/282.aspx</link><pubDate>Sun, 29 Apr 2007 05:27:00 GMT</pubDate><guid isPermaLink="false">db44779d-1a21-48e2-bc99-58cd61f2619f:282</guid><dc:creator>Obi</dc:creator><slash:comments>0</slash:comments><description>&lt;P&gt;&amp;nbsp;'-------------------------------------------------------------------------------------&lt;BR&gt;' Determines the date of the Sunday of the week for the incoming date&lt;BR&gt;'-------------------------------------------------------------------------------------&lt;BR&gt;Function GetSundayDate(strDateIn)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; dim intDayOfWeek&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; intDayOfWeek = weekday(strDateIn, 1)&lt;BR&gt;&amp;nbsp;&amp;nbsp; intDayOfWeek = (intDayOfWeek * (-1)) + 1&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; GetSundayDate = formatdate(dateadd("d",strDateIn ,intDayOfWeek))&lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;BR&gt;End Function&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;'-------------------------------------------------------------------------------------&lt;BR&gt;' Formats a date in mm/dd/yyyy format&lt;BR&gt;'-------------------------------------------------------------------------------------&lt;BR&gt;Function FormatDate(strDateIn)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; FormatDate = datepart("m", strDateIn) &amp;amp; "/" &amp;amp; datepart("d", strDateIn) &amp;amp; "/" &amp;amp; datepart("yyyy", strDateIn)&lt;BR&gt;&amp;nbsp;&amp;nbsp; &lt;BR&gt;End Function&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;'-------------------------------------------------------------------------------------&lt;BR&gt;' Returns a formatted "hh:mm AM/PM" string for the incoming 24-hour formatted time&lt;BR&gt;'-------------------------------------------------------------------------------------&lt;BR&gt;Function FormatTime(intTime)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; dim strTime &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; if intTime &amp;lt; 1000 then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strTime = cstr(intTime)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FormatTime = left(strTime,1) &amp;amp; ":" &amp;amp; right(strTime,2) &amp;amp; " AM"&lt;BR&gt;&amp;nbsp;&amp;nbsp; elseif intTime &amp;lt; 1200 then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strTime = cstr(intTime)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FormatTime = left(strTime,2) &amp;amp; ":" &amp;amp; right(strTime,2) &amp;amp; " AM"&lt;BR&gt;&amp;nbsp;&amp;nbsp; elseif intTime &amp;lt; 1300 then&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strTime = cstr(intTime)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FormatTime = left(strTime,2) &amp;amp; ":" &amp;amp; right(strTime,2) &amp;amp; " PM"&lt;BR&gt;&amp;nbsp;&amp;nbsp; else&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; strTime = cstr(intTime - 1200)&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FormatTime = left(strTime,1) &amp;amp; ":" &amp;amp; right(strTime,2) &amp;amp; " PM"&lt;BR&gt;&amp;nbsp;&amp;nbsp; end if&lt;/P&gt;
&lt;P&gt;End Function&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;'-------------------------------------------------------------------------------------&lt;BR&gt;' Returns a mm/dd/yy formatted date for the incoming Sunday date and the requested day of the week&lt;BR&gt;'-------------------------------------------------------------------------------------&lt;BR&gt;Function GetDate(strDateIn, intDayOfWeek)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; GetDate = formatdate(dateadd("d", intDayOfWeek, strDateIn))&lt;/P&gt;
&lt;P&gt;End Function &lt;BR&gt;&lt;/P&gt;
&lt;P&gt;Happy Coding,&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Garamond color=#000080 size=4&gt;Obi&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://eoberoi.com/aggbug.aspx?PostID=282" width="1" height="1"&gt;</description></item><item><title>How to Deserialize an XML Document into an Object</title><link>http://eoberoi.com/blogs/obi-oberoi_weblog/archive/2007/04/29/281.aspx</link><pubDate>Sun, 29 Apr 2007 05:19:00 GMT</pubDate><guid isPermaLink="false">db44779d-1a21-48e2-bc99-58cd61f2619f:281</guid><dc:creator>Obi</dc:creator><slash:comments>0</slash:comments><description>&lt;P&gt;A simple yet useful way to demonstrate how to take an XML document, and deserialize it to rehydrate an object:&lt;/P&gt;
&lt;P&gt;string xmlStuff = TaxReturnXMLDoc.OuterXml;&lt;BR&gt;TextReader reader = new StreamReader(@"C:\temp\Efile-SerializedTaxReturnObject-Clean.xml");&lt;BR&gt;XmlSerializer serializer = new XmlSerializer(typeof(TaxReturnEntity));&lt;BR&gt;TaxReturnEntity tre = (TaxReturnEntity)serializer.Deserialize(reader);&lt;BR&gt;reader.Close(); &lt;/P&gt;
&lt;P&gt;&lt;FONT face=Garamond color=#000080 size=4&gt;Obi&lt;/FONT&gt;&lt;BR&gt;&lt;/P&gt;&lt;img src="http://eoberoi.com/aggbug.aspx?PostID=281" width="1" height="1"&gt;</description></item><item><title>How to Pass Values Between Two Web forms</title><link>http://eoberoi.com/blogs/obi-oberoi_weblog/archive/2007/04/29/280.aspx</link><pubDate>Sun, 29 Apr 2007 05:03:00 GMT</pubDate><guid isPermaLink="false">db44779d-1a21-48e2-bc99-58cd61f2619f:280</guid><dc:creator>Obi</dc:creator><slash:comments>0</slash:comments><description>&lt;P&gt;Expose the values you want to access in other pages as proprties of the current page class. This method requires you to code extra properties that you can access in another web form. &lt;/P&gt;
&lt;P&gt;The entire process works as follows:&lt;/P&gt;
&lt;P&gt;1. Create the web form with controls &lt;/P&gt;
&lt;P&gt;2. Create property Get procedures that will return control values &lt;/P&gt;
&lt;P&gt;3. Provide some button or link button that posts the form back &lt;/P&gt;
&lt;P&gt;4. In the button click event handler call Server.Transfer method that will transfer execution to the specified form &lt;/P&gt;
&lt;P&gt;5. In the second form you can get a reference to the first form instance by using Context.Handler property. Then you will use the get properties we created to access the control values. &lt;/P&gt;
&lt;P&gt;--------------Source Web Form----------------&lt;/P&gt;
&lt;P&gt;Add following properties to the web form:&lt;/P&gt;
&lt;P&gt;public string Name&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; get&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return TextBox1.Text;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;public string EMail&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; get&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return TextBox2.Text;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Now, call Server.Transfer. &lt;/P&gt;
&lt;P&gt;private void Button1_Click (object sender, System.EventArgs e)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; Server.Transfer("anotherwebform.aspx");&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;----------------------------------------&lt;/P&gt;
&lt;P&gt;Destination Web Form&lt;/P&gt;
&lt;P&gt;----------------------------------------&lt;/P&gt;
&lt;P&gt;private void Page_Load (object sender, System.EventArgs e)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; //create instance of source web form&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; WebForm1 wf1;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; //get reference to current handler instance&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; wf1=(WebForm1)Context.Handler;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; Label1.Text=wf1.Name;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; Label2.Text=wf1.EMail;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;Cheers,&lt;/P&gt;
&lt;P&gt;&lt;FONT face=Garamond color=#000080 size=4&gt;Obi&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://eoberoi.com/aggbug.aspx?PostID=280" width="1" height="1"&gt;</description></item><item><title>Orcas is here baby!</title><link>http://eoberoi.com/blogs/obi-oberoi_weblog/archive/2007/04/28/279.aspx</link><pubDate>Sat, 28 Apr 2007 03:15:00 GMT</pubDate><guid isPermaLink="false">db44779d-1a21-48e2-bc99-58cd61f2619f:279</guid><dc:creator>Obi</dc:creator><slash:comments>0</slash:comments><description>&lt;P&gt;&lt;SPAN&gt;Folks,&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;I haven't been very active in my blog posts lately.&lt;/SPAN&gt;&lt;SPAN&gt; This is largely due to the fact that my l&lt;/SPAN&gt;&lt;SPAN&gt;ife has been flat out like a lizard drinking (aussie expression for being busy)!&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;T&lt;/SPAN&gt;&lt;SPAN&gt;here is never a dull moment in my household, so lately I have been tinkering with some cool Microsoft products such as the Microsoft Office Professional 2007 and the like. &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;The Redmond guys keep rolling out the good stuff.  Before, I even realize a sense of pleasure or satisfaction (if you will), a newer version of Visual Studio or Sql Server is rolled out.&lt;/SPAN&gt;&lt;SPAN&gt; &lt;BR&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN&gt;Talking about Visual Studio, the next version code name "&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=B533619A-0008-4DD6-9ED1-47D482683C78&amp;displaylang=en"&gt;Orcas&lt;/A&gt;" is ready for download. Orcas mainly targets Windows Vista and the .NET Framework 3.0 Development.  It consists of the following new features:&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;·&lt;SPAN&gt;         &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;Create Microsoft Office Applications with full integration of VSTO into VS&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;·&lt;SPAN&gt;         &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;Handle Data More Smoothly with LINQ&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;·&lt;SPAN&gt;         &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;Enable New Web Experience with client-side execution using ASP.NET AJAX and other enhancements.&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;·&lt;SPAN&gt;         &lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;Improve Application Life-Cycle Management (ALM)&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;I can go on and on to extol its goodness, but suffice to say, this is a cool stuff and I suggest that you check out the &lt;/SPAN&gt;&lt;SPAN&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=B533619A-0008-4DD6-9ED1-47D482683C78&amp;displaylang=en"&gt;Orcas_March07CTP&lt;/A&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Cheers,&lt;/SPAN&gt;&lt;SPAN&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Obi &lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://eoberoi.com/aggbug.aspx?PostID=279" width="1" height="1"&gt;</description></item><item><title>How to determine time difference in VB.Net</title><link>http://eoberoi.com/blogs/obi-oberoi_weblog/archive/2007/03/29/239.aspx</link><pubDate>Thu, 29 Mar 2007 19:47:00 GMT</pubDate><guid isPermaLink="false">db44779d-1a21-48e2-bc99-58cd61f2619f:239</guid><dc:creator>Obi</dc:creator><slash:comments>0</slash:comments><description>&lt;P&gt;I had to write a utility to calculate the time difference between the time an error log was&amp;nbsp;updated on a file server and the current time. VS.Net exposes some nifty functionality which can be leveraged to do just that. This is a&amp;nbsp;small but useful utility in a programmers day to day&amp;nbsp;life. Please see the code snippet below:&lt;/P&gt;
&lt;P&gt;Private myFilePath as String = "c:\MyApp\Error.Log"&lt;/P&gt;
&lt;P&gt;If File.Exists(myFilePath) Then&lt;/P&gt;
&lt;P&gt;'get the time stamp&lt;BR&gt;Dim dtStartTime As DateTime = File.GetLastWriteTime(myFilePath)&lt;BR&gt;Dim tsEndTime As TimeSpan = DateTime.Today.Now.Subtract(dtStartTime)&lt;/P&gt;
&lt;P&gt;If tsEndTime.TotalMinutes &amp;gt;= 15 Then&lt;/P&gt;
&lt;P&gt;&amp;nbsp;'Send an Email out to IT Support&lt;BR&gt;&amp;nbsp;Dim sRecipient As String =&amp;nbsp;"myname@myDomain.com;her@herDomain.com"&lt;BR&gt;&amp;nbsp;Dim sMessageBody As String = "Log has not been updated in more than 15 minutes"&lt;/P&gt;
&lt;P&gt;&amp;nbsp;SendEmail("&lt;A href="mailto:xyz@myBusiness.com"&gt;xyz@myBusiness.com&lt;/A&gt;", sRecipient, "Error with my Program", sMessageBody)&lt;BR&gt;End If&lt;/P&gt;
&lt;P&gt;End If&lt;/P&gt;
&lt;P&gt;Public Sub SendEmail(ByVal sFromEmailAddress As String, ByVal sToEmailAddress As String, _&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ByVal sEmailSubject As String, ByVal sEmailBody As String)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dim objMail As New MailMessage&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Try&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SmtpMail.SmtpServer.Insert(0, "MY_EXCHANGE_SERVER")&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objMail.From = sFromEmailAddress&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objMail.To = sToEmailAddress&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objMail.Subject = sEmailSubject&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objMail.Body = sEmailBody&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objMail.BodyFormat = MailFormat.Text&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; objMail.Fields.Add("&lt;A href="http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"&gt;http://schemas.microsoft.com/cdo/configuration/smtpauthenticate&lt;/A&gt;", "0")&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SmtpMail.Send(objMail)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Catch ex As Exception&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Throw ex.InnerException&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; End Try&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; End Sub&lt;/P&gt;
&lt;P&gt;Cheers,&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000080 size=5&gt;&lt;EM&gt;Obi Oberoi&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://eoberoi.com/aggbug.aspx?PostID=239" width="1" height="1"&gt;</description></item><item><title>Scripting Sql Server - with caution!</title><link>http://eoberoi.com/blogs/obi-oberoi_weblog/archive/2007/03/20/199.aspx</link><pubDate>Tue, 20 Mar 2007 21:44:00 GMT</pubDate><guid isPermaLink="false">db44779d-1a21-48e2-bc99-58cd61f2619f:199</guid><dc:creator>Obi</dc:creator><slash:comments>0</slash:comments><description>&lt;P&gt;&lt;SPAN&gt;&lt;FONT size=2&gt;Couple days ago, our development team scripted the entire&amp;nbsp;development database (including all the objects i.e. tables, views, stored procs, functions etc.). While this exercise seems trivial enough, a word of caution is warranted here.&amp;nbsp; We overlooked Table Scripting Options to script indexes and primary keys.&amp;nbsp; As a result, when we tried to populate our tables, it just took forever. So much so, that it came to a point where the server could not handle the excessive load and literally came to a screeching halt.&amp;nbsp; To get a better perspective, a couple thousand records took up to 15 mins.&amp;nbsp; It was only later that we realized the flaw and&amp;nbsp;corrected the problem by&amp;nbsp;assigning a clustered index to the primary key column.&amp;nbsp; The advantage with using a clustered index is&amp;nbsp;that even the disordered&amp;nbsp;records are&amp;nbsp;displayed&amp;nbsp;in sequence by SQL.&amp;nbsp; In other words,&amp;nbsp;adding a clustered index to the table&amp;nbsp;physically reorders the data pages, putting them in physical order based on the indexed column.&lt;/FONT&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;FONT size=2&gt;A nonclustered index on the other hand is a special type of index in which the logical order of the index does not match the physical stored order of the rows on disk. The leaf node of a nonclustered index does not consist of the data pages. Instead, the leaf nodes contain index rows. So e.g. for a table which contains a single row is a good candidate for non-clustered index.&amp;nbsp; Remember, while clustered-indexes enhance performance for large tables, but there is an overhead on the server.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Cheers,&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;FONT color=#000080 size=4&gt;Obi Oberoi&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;img src="http://eoberoi.com/aggbug.aspx?PostID=199" width="1" height="1"&gt;</description></item><item><title>Orcas comes with goodies</title><link>http://eoberoi.com/blogs/obi-oberoi_weblog/archive/2007/03/12/156.aspx</link><pubDate>Mon, 12 Mar 2007 20:11:00 GMT</pubDate><guid isPermaLink="false">db44779d-1a21-48e2-bc99-58cd61f2619f:156</guid><dc:creator>Obi</dc:creator><slash:comments>0</slash:comments><description>&lt;P&gt;Orcas which is slated to be released sometime this year comes with a plethora of new language features and improvements for both C# and VB developers. The CTP version of Orcas was shipped just recently.&amp;nbsp; Language features like Automatic Properties, Object Initializers, Collection Initializers just to name a few&amp;nbsp;will likely enhance the development experience and increase productivity and take less time to type the code.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;New C# Language Feature: Automatic Properties&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;As&amp;nbsp;a C# developer today, you are probably quite used to writing classes with basic properties&amp;nbsp;like the code-snippet below:&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;public&amp;nbsp;class&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Person&amp;nbsp;{&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;private&amp;nbsp;string&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;_firstName&lt;/FONT&gt;&lt;FONT color=blue&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;string&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;_lastName&lt;/FONT&gt;&lt;FONT color=blue&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;private&amp;nbsp;int&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;_age&lt;/FONT&gt;&lt;FONT color=blue&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public&amp;nbsp;string&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;FirstName&amp;nbsp;{&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;get&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;return&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;_firstName&lt;/FONT&gt;&lt;FONT color=blue&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;set&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_firstName&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;=&amp;nbsp;value;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;public&amp;nbsp;string&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;LastName&amp;nbsp;{&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;get&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;return&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;_lastName&lt;/FONT&gt;&lt;FONT color=blue&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;set&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_lastName&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;=&amp;nbsp;value;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;public&amp;nbsp;int&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Age&amp;nbsp;{&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;get&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;return&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;_age&lt;/FONT&gt;&lt;FONT color=blue&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;set&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_age&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;=&amp;nbsp;value;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Note about that.. we aren't actually adding any logic in the getters/setters of our properties - instead we just get/set the value directly to a field.&amp;nbsp; This begs the question - then why not just use fields instead of properties?&amp;nbsp; Well - there are a lot of&amp;nbsp;downsides to exposing public fields. Two of the big problems are: &lt;/SPAN&gt;&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;&lt;SPAN&gt;You can't easily databind against fields.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;If you expose public fields from your classes you can't later change them to properties (for example: to add validation logic to the setters) without recompiling any assemblies compiled against the old class.&amp;nbsp; &lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;For example, using automatic properties, the above code can&amp;nbsp;now be re-writen&amp;nbsp;as below:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT color=#0000ff&gt;public&amp;nbsp;class&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Person&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;public&amp;nbsp;string&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;FirstName&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;get;&amp;nbsp;set;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;}&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;public&amp;nbsp;string&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;LastName&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;get;&amp;nbsp;set;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;public&amp;nbsp;int&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Age&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;get;&amp;nbsp;set;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/FONT&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;Or to make it even more concise, you can write as follows:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;FONT color=#0000ff&gt;public&amp;nbsp;class&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Person&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;public&amp;nbsp;string&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;FirstName&amp;nbsp;{&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;get;&amp;nbsp;set;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;public&amp;nbsp;string&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;LastName&amp;nbsp; {&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;get;&amp;nbsp;set;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;public&amp;nbsp;int&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/FONT&gt;&lt;FONT color=black&gt;Age&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;get;&amp;nbsp;set;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/FONT&gt; &lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal&gt;&lt;SPAN&gt;&lt;/SPAN&gt;&amp;nbsp;&lt;/P&gt;&lt;SPAN&gt;
&lt;P&gt;&lt;STRONG&gt;New C# and VB Language Feature: Object Initializers&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Types within the .NET Framework rely heavily on the use of properties.&amp;nbsp; When instantiating and using new classes, it is very common to write code like below:&lt;/P&gt;
&lt;P&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=black&gt;Person&amp;nbsp;person&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;=&amp;nbsp;new&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Person()&lt;/FONT&gt;&lt;FONT color=blue&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;person.FirstName&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;=&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#808080&gt;"Obi"&lt;/FONT&gt;&lt;FONT color=blue&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;person.LastName&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;=&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#808080&gt;"Oberoi"&lt;/FONT&gt;&lt;FONT color=blue&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;person.Age&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;=&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=maroon&gt;35&lt;/FONT&gt;&lt;FONT color=blue&gt;;&lt;/FONT&gt; &lt;/DIV&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Have you ever wanted to make this more concise (and maybe fit on one line)?&amp;nbsp; With&amp;nbsp;the C# and VB "Orcas" compilers you can now take advantage of a great "syntactic sugar" language feature called "object Initializers"&amp;nbsp;that allows you to-do this and re-write the above code like so:&lt;/P&gt;
&lt;P&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&lt;FONT color=black&gt;Person&amp;nbsp;person&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;=&amp;nbsp;new&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Person&amp;nbsp;{&amp;nbsp;FirstName&lt;/FONT&gt;&lt;FONT color=blue&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;"Obi"&lt;/FONT&gt;&lt;FONT color=black&gt;,&amp;nbsp;LastName&lt;/FONT&gt;&lt;FONT color=blue&gt;=&lt;/FONT&gt;&lt;FONT color=#808080&gt;"Oberoi"&lt;/FONT&gt;&lt;FONT color=black&gt;,&amp;nbsp;Age&lt;/FONT&gt;&lt;FONT color=blue&gt;=&lt;/FONT&gt;&lt;FONT color=maroon&gt;35&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;}&lt;/FONT&gt;&lt;FONT color=blue&gt;;&lt;/FONT&gt; &lt;/DIV&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;The compiler will then automatically generate the appropriate property&amp;nbsp;setter code that preserves the same semantic meaning as the previous (more verbose) code sample above.&lt;/P&gt;
&lt;P&gt;In addition to setting simple property values when initializing a type, the object initializer feature allows us to optionally set more complex nested property types.&amp;nbsp; For example, assume each Person type we defined above also has a property called "Address" of type "Address".&amp;nbsp; We could then write the below code to create a new "Person" object and set its properties like so:&lt;/P&gt;
&lt;P&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=black&gt;Person&amp;nbsp;person&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;=&amp;nbsp;new&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Person&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;FirstName&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;=&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#808080&gt;"Obi"&lt;/FONT&gt;&lt;FONT color=black&gt;,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;LastName&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;=&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#808080&gt;"Oberoi"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Age&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;=&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=maroon&gt;35&lt;/FONT&gt;&lt;FONT color=black&gt;,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Address&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;=&amp;nbsp;new&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Address&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Street&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;=&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#808080&gt;"25 Kingsbridge Garden Circle"&lt;/FONT&gt;&lt;FONT color=black&gt;,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;City&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;=&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#808080&gt;"Mississauga"&lt;/FONT&gt;&lt;FONT color=black&gt;,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Province&lt;/FONT&gt;&lt;FONT color=blue&gt;=&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#808080&gt;"Ontario"&lt;/FONT&gt;&lt;FONT color=black&gt;,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;PostalCode&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;=&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=maroon&gt;"L5R4B1"&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/FONT&gt;&lt;FONT color=blue&gt;;&lt;/FONT&gt; &lt;/DIV&gt;
&lt;P&gt;&lt;STRONG&gt;New C# and VB Language Feature: Collection Initializers&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Object Initializers are great, and make it much easier to concisely add objects to collections.&amp;nbsp; For example, if you wanted to add three people to a generics-based List collection of type "Person", you could write the below code:&lt;/P&gt;
&lt;P&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&lt;FONT color=black&gt;List&amp;lt;Person&amp;gt;&amp;nbsp;people&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;=&amp;nbsp;new&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;List&amp;lt;Person&amp;gt;()&lt;/FONT&gt;&lt;FONT color=blue&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;people.Add(&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;new&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Person&amp;nbsp;{&amp;nbsp;FirstName&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;=&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#808080&gt;"Obi"&lt;/FONT&gt;&lt;FONT color=black&gt;,&amp;nbsp;LastName&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;=&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#808080&gt;"Oberoi"&lt;/FONT&gt;&lt;FONT color=black&gt;,&amp;nbsp;Age&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;=&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=maroon&gt;35&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;}&amp;nbsp;)&lt;/FONT&gt;&lt;FONT color=blue&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;people.Add(&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;new&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Person&amp;nbsp;{&amp;nbsp;FirstName&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;=&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#808080&gt;"Sia"&lt;/FONT&gt;&lt;FONT color=black&gt;,&amp;nbsp;LastName&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;=&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#808080&gt;"Oberoi"&lt;/FONT&gt;&lt;FONT color=black&gt;,&amp;nbsp;Age&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;=&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#800000&gt;3&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;}&amp;nbsp;)&lt;/FONT&gt;&lt;FONT color=blue&gt;;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;people.Add(&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;new&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Person&amp;nbsp;{&amp;nbsp;FirstName&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;=&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#808080&gt;"Sunita"&lt;/FONT&gt;&lt;FONT color=black&gt;,&amp;nbsp;LastName&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;=&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#808080&gt;"Oberoi"&lt;/FONT&gt;&lt;FONT color=black&gt;,&amp;nbsp;Age&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;=&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=maroon&gt;35&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;}&amp;nbsp;)&lt;/FONT&gt;&lt;FONT color=blue&gt;;&lt;BR&gt;&amp;nbsp;&lt;/FONT&gt; &lt;/DIV&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Using&amp;nbsp;the new Object Initializer feature alone saved&amp;nbsp;12 extra lines of code&amp;nbsp;with this sample versus what you'd need to type with the C# 2.0 compiler.&lt;/P&gt;
&lt;P&gt;The C# and VB "Orcas" compilers allow us to go even further, though, and also now support "collection initializers" that allow us to avoid having multiple Add statements, and save even further keystrokes:&lt;/P&gt;
&lt;P&gt;
&lt;DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;FONT color=black&gt;List&amp;lt;Person&amp;gt;&amp;nbsp;people&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;=&amp;nbsp;new&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;List&amp;lt;Person&amp;gt;&amp;nbsp;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;new&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Person&amp;nbsp;{&amp;nbsp;FirstName&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;=&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#808080&gt;"Obi"&lt;/FONT&gt;&lt;FONT color=black&gt;,&amp;nbsp;LastName&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;=&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#808080&gt;"Oberoi"&lt;/FONT&gt;&lt;FONT color=black&gt;,&amp;nbsp;Age&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;=&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=maroon&gt;35&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;},&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;new&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Person&amp;nbsp;{&amp;nbsp;FirstName&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;=&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#808080&gt;"Sia"&lt;/FONT&gt;&lt;FONT color=black&gt;,&amp;nbsp;LastName&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;=&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#808080&gt;"Oberoi"&lt;/FONT&gt;&lt;FONT color=black&gt;,&amp;nbsp;Age&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;=&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=maroon&gt;3&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;},&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;new&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;Person&amp;nbsp;{&amp;nbsp;FirstName&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;=&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#808080&gt;"Sunita"&lt;/FONT&gt;&lt;FONT color=black&gt;,&amp;nbsp;LastName&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;=&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=#808080&gt;"Oberoi"&lt;/FONT&gt;&lt;FONT color=black&gt;,&amp;nbsp;Age&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=blue&gt;=&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=maroon&gt;35&amp;nbsp;&lt;/FONT&gt;&lt;FONT color=black&gt;}&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/FONT&gt;&lt;FONT color=blue&gt;;&lt;/FONT&gt; &lt;/DIV&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;When the compiler encounters the above syntax, it will automatically generate the collection insert code like the previous sample for us.&lt;/P&gt;
&lt;P&gt;Cheers,&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;FONT color=#000080 size=4&gt;Obi Oberoi&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/SPAN&gt;&lt;img src="http://eoberoi.com/aggbug.aspx?PostID=156" width="1" height="1"&gt;</description></item><item><title>Top 10 most influential People in the .Net space</title><link>http://eoberoi.com/blogs/obi-oberoi_weblog/archive/2007/03/07/112.aspx</link><pubDate>Wed, 07 Mar 2007 03:15:00 GMT</pubDate><guid isPermaLink="false">db44779d-1a21-48e2-bc99-58cd61f2619f:112</guid><dc:creator>Obi</dc:creator><slash:comments>0</slash:comments><description>&lt;DIV class=postTitle&gt;Below, please see a list that&amp;nbsp;of top 10 lists most influential people around (i.e. top 10 greatest IT people, etc).&amp;nbsp;This list was compiled by &lt;A href="http://www.dotnetrocks.com"&gt;DNR&lt;/A&gt; based on the experiences and impressions of fellow colleagues in .NET development. Thus, perhaps it would be more appropriate to&amp;nbsp;rename it&amp;nbsp;"Top 10 Really Influential People in the&amp;nbsp;.NET World for everyday&amp;nbsp;.NET users".&amp;nbsp;&amp;nbsp;The criteria are as follows: It was mostly rated on the amount of public exposure&amp;nbsp;individuals got and&amp;nbsp;their impact on the .NET community (whether it is&amp;nbsp;awareness raising, teachings&amp;nbsp;or production of tools). So while you&amp;nbsp;may think that purely&amp;nbsp;technical evangelists would flood this list, it was not the case.&lt;/DIV&gt;
&lt;DIV class=postText&gt;
&lt;P&gt;&lt;STRONG&gt;1. &lt;/STRONG&gt;&lt;A href="http://en.wikipedia.org/wiki/Anders_Hejlsberg"&gt;&lt;STRONG&gt;Anders Hejlsberg&lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt; &lt;/STRONG&gt;- Creator of C# Language&lt;/P&gt;
&lt;P&gt;He is what James Gosling is for Java and&amp;nbsp; Bjarne Stroustrup's for C++. You can read about the &lt;A href="http://www.artima.com/intv/csdes.html"&gt;C # design process&lt;/A&gt;. And now, most recently, Anders gets this nod for his contribution&amp;nbsp;on LINQ (formerly C Omega), something not seen in other strongly typed languages. You will also be able to see Anders in the public eye through Channel 9 videos.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;2. &lt;/STRONG&gt;&lt;A href="http://weblogs.asp.net/scottgu/"&gt;&lt;STRONG&gt;Scott Guthrie&lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt; &lt;/STRONG&gt;- One of the creators of ASP.NET and the General Manager, .NET&lt;/P&gt;
&lt;P&gt;Pretty obvious choice eh?&amp;nbsp;What is cool is the progressive career path he has taken at Microsoft. This is a guy who rose through the ranks. You have&amp;nbsp;him to thank for not&amp;nbsp;having to do&amp;nbsp;any more new development in classic ASP. And he is another individual that pops up on Channel 9.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;3. &lt;/STRONG&gt;&lt;A href="http://www.charlespetzold.com/books.html"&gt;&lt;STRONG&gt;Charles Petzold&lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt; &lt;/STRONG&gt;- .NET books/publications&lt;/P&gt;
&lt;P&gt;Talk about hardcore, this guy even has a &lt;A href="http://en.wikipedia.org/wiki/Charles_Petzold"&gt;windows tattoo&lt;/A&gt;. Quality writer who even made a book available for free for&amp;nbsp;veterans entering the .NET world from C/C++.&amp;nbsp;(&lt;A href="http://www.charlespetzold.com/dotnet/index.html"&gt;http://www.charlespetzold.com/dotnet/index.html&lt;/A&gt;). He deserves to be on this list for his windows tattoo, his early entry into authoring .NET books&amp;nbsp;(focusing on the windows&amp;nbsp;forms side of things as opposed to ASP.NET)&amp;nbsp;and quality of his work. &lt;A href="http://www.charlespetzold.com/etc/DoesVisualStudioRotTheMind.html"&gt;Does Visual Studio Rot the Mind&lt;/A&gt;?&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;4. &lt;/STRONG&gt;&lt;A href="http://tirania.org/blog/"&gt;&lt;STRONG&gt;Miguel de Icaza&lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt; &lt;/STRONG&gt;- Creator of Mono (Open Source .NET for Unix/Linux)&lt;/P&gt;
&lt;P&gt;He deserves to be on the list for for bringing .NET to the Penguin community. While it is questionable whether he should be behind Charles on this list, to the best of my knowledge, he is lacking that&amp;nbsp;Windows tattoo.&amp;nbsp;An interview of his can be &lt;A href="http://www.oetrends.com/news.php?action=view_record&amp;amp;idnum=90"&gt;read here&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;5. &lt;/STRONG&gt;&lt;A href="http://www.dotnetrocks.com/"&gt;&lt;STRONG&gt;Richard Campbell and Carl Franklin&lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt; &lt;/STRONG&gt;-&amp;nbsp;DNR show, DNRtv, blogs&amp;nbsp;and producing HanselMinutes podcast&lt;/P&gt;
&lt;P&gt;Yes, they came as a pair. Part of the criteria was based on the impact individuals had on the .NET community through drawing excitement out of the masses. The evangelism and excitement these two draw out of .NET community is impressive. In fact, even if you are not a&amp;nbsp;.NET Developer, you may feel re-energized about your job in the technical field after listening to these guys.&amp;nbsp;&amp;nbsp;For helping shape the dot net culture today, they certainly deserve to be on the list. I was fortunate enough to&amp;nbsp;attended&amp;nbsp;a talk by&amp;nbsp;Richard Campbell before.&amp;nbsp;Like their show, they make .NET rock.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;6. &lt;/STRONG&gt;&lt;A href="http://weblogs.asp.net/pwilson/"&gt;&lt;STRONG&gt;Paul Wilson&lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt; &lt;/STRONG&gt;- &lt;A href="http://www.wilsondotnet.com/"&gt;WilsonDotNet&lt;/A&gt;&amp;nbsp;with&amp;nbsp;WilsonORMapper and other tools&lt;/P&gt;
&lt;P&gt;While it is free to use, the source comes at a price of $50, which is really a bargain.&amp;nbsp;He is a technical&amp;nbsp;blogger. He's authored books (ASP.NET Developer's Cookbook) on .NET and&amp;nbsp;contributed to MSDN Libary articles. He came out with Master pages before ASP.NET 2.0 introduced this.He's also got a couple open source projects that he hosts.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;7. &lt;/STRONG&gt;&lt;A href="http://weblogs.asp.net/despos/"&gt;&lt;STRONG&gt;Dino Esposito&lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt; &lt;/STRONG&gt;- All the Microsoft Press books written and contributions on MSDN &lt;/P&gt;
&lt;P&gt;A&amp;nbsp;lot of people coming into the ASP.NET and .NET development world become familiar with this guy's work. Just look at the number of Microsoft Press books he's published and his work on MSDN magazine.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;8. &lt;/STRONG&gt;&lt;A href="http://www.nikhilk.net/"&gt;&lt;STRONG&gt;Nikhil Kothari&lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt; -&lt;/STRONG&gt; Architect on ASP.NET team&lt;/P&gt;
&lt;P&gt;For his informative and really cool&amp;nbsp;blog entries. Although he could probably earn this spot for being an architect on the ASP.NET team. He has had&amp;nbsp;roles on the server controls framework, Ajax Framework and even come up with his own tools: ScriptSharp, Web Development Helper. He was also one of the individuals who helped to bring ASP.NET Web Matrix to fruition (free IDE for web developers). This all happened before the Express Edition of MS tools these days. Apparently, he was also involved with the development of IIS7. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;9. &lt;/STRONG&gt;&lt;A href="http://blogs.msdn.com/tomholl/"&gt;&lt;STRONG&gt;Tom Hollander&lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt; &lt;/STRONG&gt;-&lt;STRONG&gt; &lt;/STRONG&gt;Patterns &amp;amp; Practices Product Manager&lt;/P&gt;
&lt;P&gt;His&amp;nbsp;work on Enterprise Library, etc has led to the continual guidance and aid of .NET Developers. Enterprise Library was certainlly being used at the last workplace. And I was fortunate enough to attend the Microsoft Design for Operations for Developers Workshop.&amp;nbsp;Check out&amp;nbsp;the new "Validation Application Block" from a blog entry of his.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;10. &lt;/STRONG&gt;&lt;A href="http://www.aisto.com/roeder/dotnet/"&gt;&lt;STRONG&gt;Lutz Roeder&lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt; &lt;/STRONG&gt;- Creator of Reflector &lt;/P&gt;
&lt;P&gt;One of the most talked about tools when ppl enter the .net community. Although he is involved with Microsoft Expression, he deserves to be on this list simply for coming out with free tools that are the talk of the .NET community&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Honorable Mentions:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Mark Anders - Co-creator of ASP.NETand PUM of .NET Framework.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.codeproject.com/info/about.asp"&gt;The guys who created CodeProject&lt;/A&gt;&amp;nbsp;- Until now with codeplex, this&amp;nbsp;is still a great source (pun intended)&amp;nbsp;for&amp;nbsp;.NET resources.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.iunknown.com/"&gt;John Lam&lt;/A&gt; - work on RubyCLR and will be joining Microsoft in Jan 2007.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.dotnetnuke.com/"&gt;Sean Walker&lt;/A&gt; - DotNetNuke, an open source CMS written in VB.NET. Many technical sites (i.e. &lt;A href="http://www.vancouvertechfest.ca/"&gt;Vancouver Code Camp&lt;/A&gt; - now renamed Vancouver Tech Fest) were set up on this. DNN has also spawned a plethora of book publications for DNN extensions, etc.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/hugunin/"&gt;Jim Hugunin&lt;/A&gt; - Creator of IronPython (which is now&amp;nbsp;moved to&amp;nbsp;CodePlex)&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/brada/"&gt;Brad Abrams&lt;/A&gt; - Co-author of "Framework Design Guidelines" and frequent technical blogger at &lt;A href="http://blogs.msdn.com/brada/"&gt;http://blogs.msdn.com/brada/&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://scottwater.com/blog/"&gt;Scott Watermasysk&lt;/A&gt;&amp;nbsp;- Creator of .Text and currently works at Telligent Systems, makers of Community Server, which has become an instrumental social networking (blogs, photo galleries, rss feeds, tagging) platform for people to set up. Professional sites from Microsoft (such as asp.net) and many personal blogs use this.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.wekeroad.com/blogs/default.aspx"&gt;Rob Conery&lt;/A&gt;&amp;nbsp;- Creator of Subsonic&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.codesmithtools.com/aboutus.aspx"&gt;Eric J. Smith&lt;/A&gt; – Creator of CodeSmith&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.lhotka.net/"&gt;Rockford Lhotka&lt;/A&gt;&amp;nbsp;- Creator of CSLA.NET &lt;/P&gt;
&lt;P&gt;Andrew Lin - Group Program Manager IIS&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/jamesnewkirk/"&gt;James Newkirk&lt;/A&gt; -&amp;nbsp;Creator of NUnit (yes, there is Team System Unit Testing tool, but this was the free precursor). Also, he&amp;nbsp;was part of the Patterns and Practices team and is now involved with the &lt;A href="http://codeplex.com/"&gt;CodePlex&lt;/A&gt; effort.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/somasegar/"&gt;Soma Somasegar&lt;/A&gt; - Corporate Vice President, Developer Division Microsoft, and regular blogger.&lt;/P&gt;
&lt;P&gt;(edit: realized that &lt;A href="http://blogs.msdn.com/Patrick%5FDussud/"&gt;Patrick Dussud&lt;/A&gt; started blogging...he should be an honorable mention as one of the founders of the CLR. Always interesting to read about the roots &lt;A href="http://discuss.develop.com/archives/wa.exe?A2=ind0008&amp;amp;L=DOTNET&amp;amp;P=R9831&amp;amp;I=-3"&gt;here&lt;/A&gt; and &lt;A href="http://blogs.msdn.com/patrick_dussud/archive/2006/11/21/how-it-all-started-aka-the-birth-of-the-clr.aspx#comments"&gt;here&lt;/A&gt;).&lt;/P&gt;
&lt;P&gt;Cheers,&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000080 size=4&gt;&lt;EM&gt;Obi Oberoi&lt;/EM&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/DIV&gt;&lt;img src="http://eoberoi.com/aggbug.aspx?PostID=112" width="1" height="1"&gt;</description></item></channel></rss>