<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>How-To</title>
        <link>http://geekswithblogs.net/WTFNext/category/8761.aspx</link>
        <description>From beginner to advanced, this post had you in mind for continued learning.</description>
        <language>en-US</language>
        <copyright>Stacy Vicknair</copyright>
        <managingEditor>svickn@gmail.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <item>
            <title>MSXML 6 failure on SQL Server 2005 Tools install</title>
            <link>http://geekswithblogs.net/WTFNext/archive/2009/09/09/msxml-6-failure-on-sql-server-2005-tools-install.aspx</link>
            <description>&lt;p&gt;Today I ran into this problem when setting up the SQL Server Management Tools for SQL Server 2005. Like any good little code slinger, I googled (if you are particular to Microsoft, you can read that as “binged”) to see who’s had the problem, because it’s no news that when you aren’t on the crest of the tech wave that someone else has had the same issue.&lt;/p&gt;  &lt;p&gt;In particular, MSXML 6 would fail and the log would have a message similar to:&lt;/p&gt;  &lt;pre&gt;MSI (s) (40:58) [22:16:00:859]: MainEngineThread is returning 1605&lt;/pre&gt;

&lt;p&gt;Well, undoubtedly I found many other results for others who have had this issue, primarily those that have XP SP3. To get around this failure, you’ve got to install the tool available at the link below and then use it to remove any entry starting with MSXML 6. For me, I had two entries, one “parser” and one SP2. Afterwards, just start the install over again.&lt;/p&gt;

&lt;p&gt;I think what made the experience frustrating for me is that the SQL Server 2005 Setup fails in too friendly of a way. I’m used to the brutal honesty of the NUnit GUI. Give me a big red bar to illustrate how bad I failed or get out.&lt;/p&gt;

&lt;p&gt;For the uninstall tool:
  &lt;br /&gt;&lt;a title="http://support.microsoft.com/kb/290301" href="http://support.microsoft.com/kb/290301"&gt;http://support.microsoft.com/kb/290301&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A couple resources about the problem itself:
  &lt;br /&gt;&lt;a title="http://social.msdn.microsoft.com/Forums/en-US/sqlsetupandupgrade/thread/493b5a95-1af6-4ec1-aa24-92875e4497c0" href="http://social.msdn.microsoft.com/Forums/en-US/sqlsetupandupgrade/thread/493b5a95-1af6-4ec1-aa24-92875e4497c0"&gt;http://social.msdn.microsoft.com/Forums/en-US/sqlsetupandupgrade/thread/493b5a95-1af6-4ec1-aa24-92875e4497c0&lt;/a&gt;

  &lt;br /&gt;&lt;a title="http://www.eggheadcafe.com/conversation.aspx?messageid=33740907&amp;amp;threadid=33664744" href="http://www.eggheadcafe.com/conversation.aspx?messageid=33740907&amp;amp;threadid=33664744"&gt;http://www.eggheadcafe.com/conversation.aspx?messageid=33740907&amp;amp;threadid=33664744&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:75dcd724-1ef7-4520-8d89-bc111ba4be31" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/MSXML6" rel="tag"&gt;MSXML6&lt;/a&gt;,&lt;a href="http://technorati.com/tags/MSXML" rel="tag"&gt;MSXML&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SQLServer2005" rel="tag"&gt;SQLServer2005&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SQL+Server+2005" rel="tag"&gt;SQL Server 2005&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=134587"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=134587" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/WTFNext/aggbug/134587.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Stacy Vicknair</dc:creator>
            <guid>http://geekswithblogs.net/WTFNext/archive/2009/09/09/msxml-6-failure-on-sql-server-2005-tools-install.aspx</guid>
            <pubDate>Wed, 09 Sep 2009 19:37:39 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/WTFNext/comments/134587.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/WTFNext/archive/2009/09/09/msxml-6-failure-on-sql-server-2005-tools-install.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/WTFNext/comments/commentRss/134587.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/WTFNext/services/trackbacks/134587.aspx</trackback:ping>
        </item>
        <item>
            <title>How To: Create a plugin architecture in VB.NET</title>
            <link>http://geekswithblogs.net/WTFNext/archive/2009/05/06/how-to-create-a-plugin-architecture-in-vb.net.aspx</link>
            <description>&lt;p&gt;Creating a plugin architecture in .NET can be achieved in a few steps using the .NET framework. All it takes is a little time, a common interface and reflection. In this blog we’re going to look at how to make a simple plugin that performs basic integer calculations. &lt;span style="font-weight: bold; font-style: italic;"&gt;As a disclaimer, this method is not CLS compliant.&lt;/span&gt; If that is necessary for you, then stick around and I hope to have a new version that maintains compliance posted.&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;The code in this blog is mostly illustrative, and the full code is available on CodePlex at the following link:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://wtfnext.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=27051" title="http://wtfnext.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=27051"&gt;http://wtfnext.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=27051&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;Setting up a common interface&lt;/h1&gt;
&lt;p&gt;Our main console application has to know just basic things about our plugin. It doesn’t need to know any more about it than that it complies to an expected interface. For this example, our plugins must:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Expose a class named Plugin&lt;/li&gt;
    &lt;li&gt;The class must implement our common interface: IPlugin.&lt;/li&gt;
    &lt;li&gt;The plugin must end in “Plugin.dll” and be present in the application directory.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If we get all of these done, we can connect to the plugin successfully. The first step is to define the IPlugin interface, which acts as the basic contract between any plugin and the console application. We’ll place this in its own project to compile into a separate DLL, so that we can easily reference it from our plugin projects.&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;Public Interface &lt;/span&gt;IPlugin&lt;br /&gt;    &lt;span style="color: blue;"&gt;ReadOnly Property &lt;/span&gt;Name() &lt;span style="color: blue;"&gt;As String&lt;br /&gt;    ReadOnly Property &lt;/span&gt;ActionName() &lt;span style="color: blue;"&gt;As String&lt;br /&gt;    Sub &lt;/span&gt;Calculate(&lt;span style="color: blue;"&gt;ByVal &lt;/span&gt;value1 &lt;span style="color: blue;"&gt;As Integer&lt;/span&gt;, &lt;span style="color: blue;"&gt;ByVal &lt;/span&gt;value2 &lt;span style="color: blue;"&gt;As Integer&lt;/span&gt;)&lt;br /&gt;&lt;span style="color: blue;"&gt;End Interface&lt;/span&gt;&lt;/pre&gt;
&lt;h1&gt;
&lt;p&gt;     &lt;/p&gt;
&lt;/h1&gt;
&lt;h1&gt;Consuming the interface according to our rules&lt;/h1&gt;
&lt;p&gt;So our calculation plugins will expose the name, what their action is and a calculate function that operates on two values. We can create an example plugin that performs addition:&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;Public Class &lt;/span&gt;Plugin&lt;br /&gt;    &lt;span style="color: blue;"&gt;Implements &lt;/span&gt;IPlugin&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;ReadOnly Public Property &lt;/span&gt;Name() &lt;span style="color: blue;"&gt;As String Implements &lt;/span&gt;IPlugin.Name&lt;br /&gt;        &lt;span style="color: blue;"&gt;Get&lt;br /&gt;            Return &lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;"Addition"&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: blue;"&gt;End Get&lt;br /&gt;    End Property&lt;br /&gt;&lt;br /&gt;    ReadOnly Public Property &lt;/span&gt;ActionName() &lt;span style="color: blue;"&gt;As String Implements &lt;/span&gt;IPlugin.ActionName&lt;br /&gt;        &lt;span style="color: blue;"&gt;Get&lt;br /&gt;            Return &lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;"Add Values"&lt;br /&gt;        &lt;/span&gt;&lt;span style="color: blue;"&gt;End Get&lt;br /&gt;    End Property&lt;br /&gt;&lt;br /&gt;    Public Sub &lt;/span&gt;Calculate (&lt;span style="color: blue;"&gt;ByVal &lt;/span&gt;value1 &lt;span style="color: blue;"&gt;As Integer&lt;/span&gt;, &lt;span style="color: blue;"&gt;ByVal &lt;/span&gt;value2 &lt;span style="color: blue;"&gt;As Integer&lt;/span&gt;) &lt;span style="color: blue;"&gt;Implements &lt;/span&gt;IPlugin.Calculate&lt;br /&gt;        &lt;span style="color: blue;"&gt;Dim &lt;/span&gt;result &lt;span style="color: blue;"&gt;As Integer &lt;/span&gt;= value1 + value2&lt;br /&gt;        MessageBox.Show (&lt;span style="color: rgb(163, 21, 21);"&gt;"The result is " &lt;/span&gt;+ result.ToString)&lt;br /&gt;    &lt;span style="color: blue;"&gt;End Sub&lt;br /&gt;End Class&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt;See how we named the class that implements the plugin as just Plugin? This is because this is what the consol application expects. We can have other classes and whatnot in our plugin that do the meat of our work, but the application that consumes the plugin only cares that the possible plugin follow our rules stated earlier.&lt;/p&gt;
&lt;h1&gt;Checking and consuming the plugin&lt;/h1&gt;
&lt;p&gt;In our console application, all we’ve got to do is grab our possible plugins, then check their validity. Once we’re sure it is valid, we can consume it via the interface.&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: blue;"&gt;Dim &lt;/span&gt;asm &lt;span style="color: blue;"&gt;As &lt;/span&gt;Assembly = Assembly.LoadFrom(possiblePlugin)&lt;br /&gt;&lt;span style="color: blue;"&gt;Dim &lt;/span&gt;myType &lt;span style="color: blue;"&gt;As &lt;/span&gt;System.Type = asm.GetType(asm.GetName.Name + &lt;span style="color: rgb(163, 21, 21);"&gt;".Plugin"&lt;/span&gt;)&lt;br /&gt;&lt;span style="color: blue;"&gt;Dim &lt;/span&gt;implementsIPlugin &lt;span style="color: blue;"&gt;As Boolean &lt;/span&gt;= &lt;span style="color: blue;"&gt;GetType&lt;/span&gt;(IPlugin).IsAssignableFrom(myType)&lt;br /&gt;&lt;span style="color: blue;"&gt;If &lt;/span&gt;implementsIPlugin &lt;span style="color: blue;"&gt;Then&lt;br /&gt;    &lt;/span&gt;Console.WriteLine(asm.GetName.Name + &lt;span style="color: rgb(163, 21, 21);"&gt;" is a valid plugin!"&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: blue;"&gt;Dim &lt;/span&gt;plugin &lt;span style="color: blue;"&gt;As &lt;/span&gt;IPlugin = &lt;span style="color: blue;"&gt;CType&lt;/span&gt;(Activator.CreateInstance(myType), IPlugin)&lt;br /&gt;    Console.WriteLine(&lt;span style="color: rgb(163, 21, 21);"&gt;"{0}: {1}"&lt;/span&gt;, plugin.Name, plugin.ActionName)&lt;br /&gt;    plugin.Calculate(5, 4)&lt;br /&gt;&lt;span style="color: blue;"&gt;End If&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;h1&gt;Wrapping things up&lt;/h1&gt;
&lt;p&gt;Well, this was a quick and dirty look at implementing your own plugin architecture into your application. Please leave feedback or questions. I’d be happy to hear both!&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div style="margin: 0px; padding: 0px; display: inline; float: none;" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:425965f3-ceb0-4370-b300-bdfc9054f29a" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/VB.NET"&gt;VB.NET&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Plugin"&gt;Plugin&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/architecture"&gt;architecture&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=131855"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=131855" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/WTFNext/aggbug/131855.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Stacy Vicknair</dc:creator>
            <guid>http://geekswithblogs.net/WTFNext/archive/2009/05/06/how-to-create-a-plugin-architecture-in-vb.net.aspx</guid>
            <pubDate>Wed, 06 May 2009 18:19:35 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/WTFNext/comments/131855.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/WTFNext/archive/2009/05/06/how-to-create-a-plugin-architecture-in-vb.net.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/WTFNext/comments/commentRss/131855.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/WTFNext/services/trackbacks/131855.aspx</trackback:ping>
        </item>
        <item>
            <title>Hot-To: Model a Work Breakdown Structure with Project 2007 and Visio 2007</title>
            <link>http://geekswithblogs.net/WTFNext/archive/2009/01/11/hot-to-model-a-work-breakdown-structure-with-project-2007-and.aspx</link>
            <description>&lt;p&gt;If you’re trying to make a WBS from your suite of 2007 applications, &lt;a title="The people who keep me having a good job." href="http://www.microsoft.com" target="_blank"&gt;Microsoft&lt;/a&gt; Download Center has a Visio add-on that might save you some time.&lt;/p&gt;  &lt;p&gt;To get a WBS pumped out quickly, just do the following:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Download and install &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=34c28a49-e14c-4a7d-8d49-90061fe08ab4&amp;amp;displaylang=en" target="_blank"&gt;Microsoft Office Visio 2007 WBS Modeler&lt;/a&gt;.&lt;/li&gt;    &lt;li&gt;Open Visio, and start from the new WBS Modeler.&lt;/li&gt;    &lt;li&gt;Open Project and open the project you want to make a WBS for.&lt;/li&gt;    &lt;li&gt;In Visio, click WBS Modeler, then &lt;strong&gt;Import From Microsoft Office Project…&lt;/strong&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Click through a couple more settings and here you have it. An easy WBS, and best of all it is free! When I was looking around the best alternative looks like it will run you around $200.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:0f7d1049-b340-43fe-9c74-e1e536fffcc9" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Project" rel="tag"&gt;Project&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Visio" rel="tag"&gt;Visio&lt;/a&gt;,&lt;a href="http://technorati.com/tags/WBS" rel="tag"&gt;WBS&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=128572"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=128572" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/WTFNext/aggbug/128572.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Stacy Vicknair</dc:creator>
            <guid>http://geekswithblogs.net/WTFNext/archive/2009/01/11/hot-to-model-a-work-breakdown-structure-with-project-2007-and.aspx</guid>
            <pubDate>Sun, 11 Jan 2009 18:05:25 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/WTFNext/comments/128572.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/WTFNext/archive/2009/01/11/hot-to-model-a-work-breakdown-structure-with-project-2007-and.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/WTFNext/comments/commentRss/128572.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/WTFNext/services/trackbacks/128572.aspx</trackback:ping>
        </item>
        <item>
            <title>How-To: Enumerate the Internet Explorer Installed OpenSearch Engines</title>
            <link>http://geekswithblogs.net/WTFNext/archive/2008/11/26/how-to-enumerate-the-internet-explorer-installed-opensearch-engines.aspx</link>
            <description>&lt;p&gt;For my recent &lt;a href="http://www.codeplex.com/launcher"&gt;Launcher&lt;/a&gt; project, I was constructing a ribbon that would allow the user to search the web via their engines installed in Internet Explorer. The engines themselves are an XML document following the &lt;a href="http://www.opensearch.org/Home"&gt;OpenSearch&lt;/a&gt; schema. For firefox, these xml documents just get stored locally. What does IE do with theirs?&lt;/p&gt;  &lt;p&gt;Well, IE sticks them in the registry. &lt;strong&gt;Why?&lt;/strong&gt; Maybe someone else can answer that. Here's a brief look at how to get the search engines out of the registry. The following snippets of code come from the &lt;a href="http://www.codeplex.com/launcher"&gt;launcher&lt;/a&gt; project. If you want to see how I abstracted the engines and the complete code, you can &lt;a href="http://www.codeplex.com/launcher"&gt;download it from Codeplex&lt;/a&gt;. If you want to critique the code or make suggestions on how I can code better, leave me a comment here. I'm not the best programmer and I'm starving to learn.&lt;/p&gt;  &lt;p&gt;First off, lets give a simple answer to this post: &lt;strong&gt;How do I enumerate the IE search engines?&lt;/strong&gt; The search engines are located in &lt;em&gt;Software\Microsoft\Internet Explorer\SearchScopes&lt;/em&gt;, the rest of the task is just enumerating the keys and values to extract important information.&lt;/p&gt;  &lt;p&gt;First off, I made a straightforward structure to represent my individual search engine:&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;Public Structure &lt;/span&gt;SearchEngine
    &lt;span style="color: blue"&gt;Private &lt;/span&gt;m_DisplayName &lt;span style="color: blue"&gt;As String
    Public Property &lt;/span&gt;DisplayName() &lt;span style="color: blue"&gt;As String
        Get
            Return &lt;/span&gt;m_DisplayName
        &lt;span style="color: blue"&gt;End Get
        Set&lt;/span&gt;(&lt;span style="color: blue"&gt;ByVal &lt;/span&gt;value &lt;span style="color: blue"&gt;As String&lt;/span&gt;)
            m_DisplayName = value
        &lt;span style="color: blue"&gt;End Set
    End Property

    Private &lt;/span&gt;m_SearchString &lt;span style="color: blue"&gt;As String
    Public Property &lt;/span&gt;SearchString() &lt;span style="color: blue"&gt;As String
        Get
            Return &lt;/span&gt;m_SearchString
        &lt;span style="color: blue"&gt;End Get
        Set&lt;/span&gt;(&lt;span style="color: blue"&gt;ByVal &lt;/span&gt;value &lt;span style="color: blue"&gt;As String&lt;/span&gt;)
            m_SearchString = value
        &lt;span style="color: blue"&gt;End Set
    End Property

    Private &lt;/span&gt;m_isDefault &lt;span style="color: blue"&gt;As Boolean
    Public Property &lt;/span&gt;isDefault() &lt;span style="color: blue"&gt;As Boolean
        Get
            Return &lt;/span&gt;m_isDefault
        &lt;span style="color: blue"&gt;End Get
        Set&lt;/span&gt;(&lt;span style="color: blue"&gt;ByVal &lt;/span&gt;value &lt;span style="color: blue"&gt;As Boolean&lt;/span&gt;)
            m_isDefault = value
        &lt;span style="color: blue"&gt;End Set
    End Property

    Public Overrides Function &lt;/span&gt;ToString() &lt;span style="color: blue"&gt;As String
        Return &lt;/span&gt;m_DisplayName.ToString
    &lt;span style="color: blue"&gt;End Function
End Structure&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;This structure just contains the display name, the search string and whether or not it is the default.&lt;/p&gt;

&lt;p&gt;I fill a list of search engines as so:&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;Private Sub &lt;/span&gt;GatherEnginesFromRegistry()
    &lt;span style="color: green"&gt;'Clear list
    &lt;/span&gt;m_engineList.Clear()

    &lt;span style="color: blue"&gt;Dim &lt;/span&gt;regKey &lt;span style="color: blue"&gt;As &lt;/span&gt;RegistryKey = Registry.CurrentUser.OpenSubKey(&lt;span style="color: #a31515"&gt;"Software\Microsoft\Internet Explorer\SearchScopes"&lt;/span&gt;, &lt;span style="color: blue"&gt;False&lt;/span&gt;)
    &lt;span style="color: green"&gt;'Gather Default key
    &lt;/span&gt;&lt;span style="color: blue"&gt;Dim &lt;/span&gt;defaultKey &lt;span style="color: blue"&gt;As String &lt;/span&gt;= regKey.GetValue(&lt;span style="color: #a31515"&gt;"DefaultScope"&lt;/span&gt;)

    &lt;span style="color: green"&gt;'Gather all search engines
    &lt;/span&gt;&lt;span style="color: blue"&gt;For Each &lt;/span&gt;subKey &lt;span style="color: blue"&gt;As String In &lt;/span&gt;regKey.GetSubKeyNames
        &lt;span style="color: blue"&gt;Dim &lt;/span&gt;engine &lt;span style="color: blue"&gt;As New &lt;/span&gt;SearchEngine
        &lt;span style="color: blue"&gt;Dim &lt;/span&gt;engineKey &lt;span style="color: blue"&gt;As &lt;/span&gt;RegistryKey = regKey.OpenSubKey(subKey)
        &lt;span style="color: blue"&gt;If &lt;/span&gt;engineKey.GetValue(&lt;span style="color: #a31515"&gt;""&lt;/span&gt;) = &lt;span style="color: blue"&gt;String&lt;/span&gt;.Empty &lt;span style="color: blue"&gt;Then
            &lt;/span&gt;engine.DisplayName = engineKey.GetValue(&lt;span style="color: #a31515"&gt;"DisplayName"&lt;/span&gt;)
        &lt;span style="color: blue"&gt;Else
            &lt;/span&gt;engine.DisplayName = engineKey.GetValue(&lt;span style="color: #a31515"&gt;""&lt;/span&gt;)
        &lt;span style="color: blue"&gt;End If
        &lt;/span&gt;engine.SearchString = engineKey.GetValue(&lt;span style="color: #a31515"&gt;"URL"&lt;/span&gt;)
        &lt;span style="color: blue"&gt;If &lt;/span&gt;(subKey = defaultKey) &lt;span style="color: blue"&gt;Then
            &lt;/span&gt;engine.isDefault = &lt;span style="color: blue"&gt;True
        Else
            &lt;/span&gt;engine.isDefault = &lt;span style="color: blue"&gt;False
        End If
        &lt;/span&gt;m_engineList.Add(engine)
        engineKey.Close()
    &lt;span style="color: blue"&gt;Next

    &lt;/span&gt;regKey.Close()
&lt;span style="color: blue"&gt;End Sub&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;Here you see &lt;strong&gt;regKey &lt;/strong&gt;as a key to the SearchScopes subkey within CURRENT_USER. Within SearchScopes the &lt;strong&gt;DefaultScope&lt;/strong&gt; value contains the subkey name for the default search engine.&lt;/p&gt;

&lt;p&gt;After fetching the name of the default engine, I just iterate through eachsubKey and convert it into my structure, and add it to a generic list. The important values being &lt;strong&gt;DisplayName&lt;/strong&gt; and &lt;strong&gt;URL&lt;/strong&gt;. However, if the &lt;strong&gt;(Default)&lt;/strong&gt; value for the subkey is specified, I take it instead of the &lt;strong&gt;DisplayName&lt;/strong&gt;. Why? because LiveSearch does this oddity:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/WTFNext/WindowsLiveWriter/HowToEnumeratetheInternetExplorerInstall_BB23/image_8.png"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="123" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/WTFNext/WindowsLiveWriter/HowToEnumeratetheInternetExplorerInstall_BB23/image_thumb_3.png" width="504" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;DisplayName&lt;/strong&gt; is a DLL call of sorts and the &lt;strong&gt;(Default)&lt;/strong&gt; is the name? What's up with that? :\&lt;/p&gt;

&lt;p&gt;And finally, to use the search within an application just replace the &lt;strong&gt;{searchTerms} &lt;/strong&gt;in the URL with the appropriate URI formatted text and send it on its way via &lt;strong&gt;Process.Start&lt;/strong&gt;!&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;Private Sub &lt;/span&gt;btnSearch_Click(&lt;span style="color: blue"&gt;ByVal &lt;/span&gt;sender &lt;span style="color: blue"&gt;As &lt;/span&gt;System.Object, &lt;span style="color: blue"&gt;ByVal &lt;/span&gt;e &lt;span style="color: blue"&gt;As &lt;/span&gt;Microsoft.Office.Tools.Ribbon.RibbonControlEventArgs) &lt;span style="color: blue"&gt;Handles &lt;/span&gt;btnSearch.Click
    Process.Start(searchURL.Replace(&lt;span style="color: #a31515"&gt;"{searchTerms}"&lt;/span&gt;, ConvertStringToURI(searchText)))
&lt;span style="color: blue"&gt;End Sub&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;
  &lt;/p&gt;&lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:6d715787-06d9-423d-a02f-832a87f2eef4" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/How-To" rel="tag"&gt;How-To&lt;/a&gt;,&lt;a href="http://technorati.com/tags/IE%20Search%20Engine%20Enumeration" rel="tag"&gt;IE Search Engine Enumeration&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127411"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127411" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/WTFNext/aggbug/127411.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Stacy Vicknair</dc:creator>
            <guid>http://geekswithblogs.net/WTFNext/archive/2008/11/26/how-to-enumerate-the-internet-explorer-installed-opensearch-engines.aspx</guid>
            <pubDate>Wed, 26 Nov 2008 19:27:41 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/WTFNext/comments/127411.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/WTFNext/archive/2008/11/26/how-to-enumerate-the-internet-explorer-installed-opensearch-engines.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/WTFNext/comments/commentRss/127411.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/WTFNext/services/trackbacks/127411.aspx</trackback:ping>
        </item>
        <item>
            <title>How to: Set up Google Analytics on your GeeksWithBlogs blog</title>
            <link>http://geekswithblogs.net/WTFNext/archive/2008/11/21/how-to-set-up-google-analytics-on-your-geekswithblogs-blog.aspx</link>
            <description>&lt;p&gt;If you haven't seen Google analytics before, you ought to know this: it rocks. You'll get great reports on everything from geographic location to browser to flash version (Why no Silverlight version, eh Google?) See example awesomeness here:&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/WTFNext/WindowsLiveWriter/HowtoSetupGoogleAnalyticsonyourGeeksWith_B658/image_2.png"&gt;&lt;img style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height="393" alt="image" width="504" border="0" src="http://geekswithblogs.net/images/geekswithblogs_net/WTFNext/WindowsLiveWriter/HowtoSetupGoogleAnalyticsonyourGeeksWith_B658/image_thumb.png" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Obviously I've only recently set this up. However, since it is up and running and working great, I figured I'd show you how to get yours up and running as well.&lt;/p&gt;
&lt;p&gt;Firstly, sign up for &lt;a href="http://www.google.com/analytics"&gt;Google Analytics&lt;/a&gt;. Then afterwards, Google will provide a script to monitor the site usage. But if you can't access the head for your site, where do you put it? Good question. Almost million dollar.&lt;/p&gt;
&lt;p&gt;So since there's only one question when it comes to Google Analytics and GWB, I figured I'd just throw out the answer.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Q. Where do I put the JavaScript thingy?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A. Put it in your news section. Google screams a tantrum that you've got to stick it in the &amp;lt;head&amp;gt; of your html, but the whole thing works out fine right in the news section (which you can edit in your GWB admin panel).&lt;/p&gt;
&lt;p&gt; So my next question is, &lt;strong&gt;&lt;em&gt;Does anyone know how to get Google Webmaster Tools working on GWB?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:85a7d264-7826-4fa2-8e0e-1a5306306363" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/geekswithblogs"&gt;geekswithblogs&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/google%20analytics"&gt;google analytics&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127285"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=127285" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/WTFNext/aggbug/127285.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Stacy Vicknair</dc:creator>
            <guid>http://geekswithblogs.net/WTFNext/archive/2008/11/21/how-to-set-up-google-analytics-on-your-geekswithblogs-blog.aspx</guid>
            <pubDate>Fri, 21 Nov 2008 18:58:08 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/WTFNext/comments/127285.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/WTFNext/archive/2008/11/21/how-to-set-up-google-analytics-on-your-geekswithblogs-blog.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/WTFNext/comments/commentRss/127285.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/WTFNext/services/trackbacks/127285.aspx</trackback:ping>
        </item>
        <item>
            <title>Custom Code Snippets Series Part 3: XML Example</title>
            <link>http://geekswithblogs.net/WTFNext/archive/2008/11/04/custom-code-snippets-series-part-3-xml-example.aspx</link>
            <description>&lt;p&gt;Hey guys,&lt;/p&gt;  &lt;p&gt;Here we are, and I’m taking the time to finish up my first series at my new host &lt;a title="My hosting solution, you got a technical blog? Could be yours too!" href="http://www.geekswithblogs.net" rel="" target="_blank"&gt;geekswithblogs&lt;/a&gt;! For this part of the series we’ll be taking a look at a practical example of an XML snippet, namely the snippet to create snippets.&lt;/p&gt;  &lt;p&gt;I’ve created my own version, but if you’ve toyed with XML snippets before you would know that Microsoft has already included a snippet snippet. This is a good alternative to the “Hard” way described in Part 1, but what if you want a little more of a custom feel to your snippet snippet?&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;h1&gt;Getting Started&lt;/h1&gt;  &lt;p&gt;This time around I’ve published the code on &lt;a href="http://www.codeplex.com/"&gt;Codeplex&lt;/a&gt;, at the following address:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://www.codeplex.com/wtfnextsnippetseries" href="http://www.codeplex.com/wtfnextsnippetseries"&gt;http://www.codeplex.com/wtfnextsnippetseries&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You can download the premade snippet directly, and then we’ll be looking into the elements of the snippet briefly.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;h1&gt;A look through the XML&lt;/h1&gt;  &lt;p&gt;This snippet is fairly straightforward, and many of the items you might recognize if you are familiar with snippets or have gone through the first part of this series. Our header section is straightforward, and we make good use of literals.&lt;/p&gt;  &lt;p&gt;There is one literal that we need to note here: &lt;strong&gt;CDATAEND&lt;/strong&gt;. There’s a bit of a quirk that requires a workaround when making an XML snippet, and that’s if we need to use a CDATA section within our snippet itself.&lt;/p&gt;  &lt;p&gt;The problem is that a &lt;a href="http://www.w3schools.com/XML/xml_cdata.asp"&gt;CDATA section cannot contain another CDATA section&lt;/a&gt;. As a result, making a snippet of another snippet becomes complicated. How do you do it? Simply put a literal in the CDATA of your snippet that represents the terminator for the internal CDATA in the snippet.&lt;/p&gt;  &lt;p&gt;So, we see in the snippet itself this:&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: gray"&gt;    &amp;lt;Snippet&amp;gt;
      &amp;lt;Code Language="$Language$"&amp;gt;
        &amp;lt;![CDATA[$selected$$CDATAEND$
      &amp;lt;/Code&amp;gt;
    &amp;lt;/Snippet&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;and we have the literal &lt;strong&gt;CDATAEND&lt;/strong&gt; defined as this:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Literal &lt;/span&gt;&lt;span style="color: red"&gt;Editable&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;false&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;
  &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;CDATAEND&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
  &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Default&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;]]&lt;span style="color: red"&gt;&amp;amp;gt;&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Default&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Literal&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;The &lt;strong&gt;$selected$&lt;/strong&gt; is a placeholder for any selected text when we use the &lt;strong&gt;SurroundsWith&lt;/strong&gt; datatype. This allows us to highlight some VB or whatever and when we insert the snippet it automatically knows we want the code selected to be surrounded by our snippet, and have the selection inserted at the &lt;strong&gt;$selected$&lt;/strong&gt; point.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h1&gt;Summary&lt;/h1&gt;

&lt;p&gt;So this concludes the brief look at snippets, and I want to tell you guys that I’ll appreciate any feedback. The “Hard” way isn’t really that bad, and all in all (if you’re like me) it gives you complete quick control over your snippet creation. The “Easy” way is an external application, and is designed with syntax highlighting for a language specific creation, so you won’t be popping out the XML or C# snippets from the VB snippet creator.&lt;/p&gt;

&lt;p&gt;Please post comments if you have criticisms or anything to say, I’m looking forward to improving the quality of this blog and of myself, and feedback will help with both!&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:d5295045-18ea-4128-b807-e76885e00919" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Custom+Code+Snippets+Series" rel="tag"&gt;Custom Code Snippets Series&lt;/a&gt;,&lt;a href="http://technorati.com/tags/snippet" rel="tag"&gt;snippet&lt;/a&gt;,&lt;a href="http://technorati.com/tags/xml" rel="tag"&gt;xml&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=126613"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=126613" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/WTFNext/aggbug/126613.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Stacy Vicknair</dc:creator>
            <guid>http://geekswithblogs.net/WTFNext/archive/2008/11/04/custom-code-snippets-series-part-3-xml-example.aspx</guid>
            <pubDate>Tue, 04 Nov 2008 18:45:58 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/WTFNext/comments/126613.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/WTFNext/archive/2008/11/04/custom-code-snippets-series-part-3-xml-example.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/WTFNext/comments/commentRss/126613.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/WTFNext/services/trackbacks/126613.aspx</trackback:ping>
        </item>
        <item>
            <title>Custom Code Snippets Series Part 2 of 3: The &amp;ldquo;Easy&amp;rdquo; Way</title>
            <link>http://geekswithblogs.net/WTFNext/archive/2008/10/20/custom-code-snippets-series-part-2-of-3-the-ldquoeasyrdquo.aspx</link>
            <description>&lt;p&gt;Here we are at part two of the Custom Code Snippet Series. In the &lt;a href="http://geekswithblogs.net/WTFNext/archive/2008/10/14/custom-code-snippets-series-part-1-of-3-the-ldquohardrdquo.aspx"&gt;previous part&lt;/a&gt; we covered how to make your own snippet by creating an XML .snippet file and adding to it the necessary content to get a custom snippet up and running.&lt;/p&gt;  &lt;p&gt;This time around, we’re going to cover the “Easy” method of creating custom code snippets: through a GUI. Thankfully, the MSDN itself has a Code Snippet Editor for both Visual Basic 2005 and 2008 available at the following links. This tutorial will make use of the Visual Basic 2005 Code Snippet Editor.&lt;/p&gt;  &lt;p&gt;To get the 2005 version:   &lt;br /&gt;&lt;a title="http://msdn.microsoft.com/en-us/vbasic/ms789085.aspx" href="http://msdn.microsoft.com/en-us/vbasic/ms789085.aspx"&gt;http://msdn.microsoft.com/en-us/vbasic/ms789085.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;to get the 2008 version:   &lt;br /&gt;&lt;a title="http://msdn.microsoft.com/en-us/vbasic/bb973770.aspx" href="http://msdn.microsoft.com/en-us/vbasic/bb973770.aspx"&gt;http://msdn.microsoft.com/en-us/vbasic/bb973770.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So, after installing the Code Snippet Editor, we’re ready to get started.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;h1&gt;Add the path to My Code Snippets&lt;/h1&gt;  &lt;h1&gt;&lt;/h1&gt;  &lt;h1&gt;&lt;/h1&gt;  &lt;p&gt;Right off the bat, you can tell we are going to have a small issue. Looking through the tree in the snippet editor does not show the custom code snippets! That’s alright, we’ll just add our path.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Right-click&lt;/strong&gt; in the tree view area of the program and select &lt;strong&gt;Add Path…&lt;/strong&gt;. Browse to the path we discussed for saving snippets in the previous part:&lt;strong&gt;My Documents &amp;gt; Visual Studio &lt;em&gt;YYYY&lt;/em&gt; &amp;gt; Code Snippets &amp;gt; &lt;em&gt;Language of Choice&lt;/em&gt; &amp;gt; My Code Snippets&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/WTFNext/WindowsLiveWriter/CustomCodeSnippetsSeriesPart2of3TheEasyW_9A47/image_2.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; margin-left: 0px; border-left: 0px; margin-right: 0px; border-bottom: 0px" height="172" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/WTFNext/WindowsLiveWriter/CustomCodeSnippetsSeriesPart2of3TheEasyW_9A47/image_thumb.png" width="308" border="0" /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Now we can see our custom code snippets in the editor. If you’ve done the previous part in this series you should see the &lt;strong&gt;cmdWrite&lt;/strong&gt; snippet show up in the tree under the &lt;strong&gt;My Code Snippets&lt;/strong&gt; folder:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/WTFNext/WindowsLiveWriter/CustomCodeSnippetsSeriesPart2of3TheEasyW_9A47/image_4.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="136" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/WTFNext/WindowsLiveWriter/CustomCodeSnippetsSeriesPart2of3TheEasyW_9A47/image_thumb_1.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;h1&gt;Create new snippet in My Code Snippets&lt;/h1&gt;  &lt;p&gt;Why do I stress putting the new snippets in our &lt;strong&gt;My Code Snippets&lt;/strong&gt; folder? If you want a centralized location that is somewhat protected from other users of the computer, in your &lt;strong&gt;My Documents &lt;/strong&gt;folder makes sense. You might even want to make your own location that you point Visual Studio to, that way you can implement version control to make sure changes benefit your code and rollback if they do not.&lt;/p&gt;  &lt;p&gt;To create a new snippet, just right click the folder and select &lt;strong&gt;Add New Snippet&lt;/strong&gt;. Name your snippet, today we’re going to make a simple For loop, so I’ll name this one &lt;strong&gt;ForLoop&lt;/strong&gt;. Obviously, you’ll make snippets that matter more.&lt;/p&gt;  &lt;p&gt;Once you create the snippet, double click on it. Here you’ll see a GUI representation of the XML document. Fairly straightforward.&lt;/p&gt;  &lt;p&gt;To start, let’s fill in our info. Here’s what I put:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/WTFNext/WindowsLiveWriter/CustomCodeSnippetsSeriesPart2of3TheEasyW_9A47/image_8.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="201" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/WTFNext/WindowsLiveWriter/CustomCodeSnippetsSeriesPart2of3TheEasyW_9A47/image_thumb_3.png" width="443" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Now let’s put in our VB code into the editor at the top. Here’s what I put:&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="background: white; color: blue"&gt;Dim &lt;/span&gt;&lt;span style="background: white; color: black"&gt;count &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;as integer &lt;/span&gt;&lt;span style="background: white; color: black"&gt;= 0
&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;Dim &lt;/span&gt;&lt;span style="background: white; color: black"&gt;countMax &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;as integer &lt;/span&gt;&lt;span style="background: white; color: black"&gt;= 100

&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;For &lt;/span&gt;&lt;span style="background: white; color: black"&gt;count = 0 &lt;/span&gt;&lt;span style="background: white; color: blue"&gt;to &lt;/span&gt;&lt;span style="background: white; color: black"&gt;countMax
    &lt;/span&gt;&lt;span style="background: white; color: #006400"&gt;'Something to do
&lt;/span&gt;&lt;span style="background: white; color: blue"&gt;Next&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;Now we’ll transform this code into a dynamic snippet. I want &lt;strong&gt;count&lt;/strong&gt; to be a choice for the variable name, so highlight &lt;strong&gt;count&lt;/strong&gt; and on the &lt;strong&gt;Replacements&lt;/strong&gt; tab at the bottom hit the yellow plus sign.&lt;/p&gt;

&lt;p&gt;count will become surrounded by $ symbols, and become a decadent orange color. At the bottom, you’ll see that most information has been filled in for us. For type, we’ll leave it blank, and for tooltip, we’ll just describe the replacement. Now, do the same for &lt;strong&gt;countMax&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We’re practically done! Flip over to the &lt;strong&gt;Test&lt;/strong&gt; tab and hit the big test button. Did it work okay? If so, we’re ready to find it in VS and start using it, just make sure to save your snippet!&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h1&gt;Check it out in Visual Studio&lt;/h1&gt;

&lt;p&gt;Go ahead and close the Snippet Editor and open up a new console project in Visual Studio, VB of course.&lt;/p&gt;

&lt;p&gt;If you’ve set up the same snippet as me, go ahead and type &lt;strong&gt;ForLoop?&lt;/strong&gt; and hit &lt;strong&gt;Tab&lt;/strong&gt; twice and you should see your new snippet come to life!&lt;/p&gt;

&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/WTFNext/WindowsLiveWriter/CustomCodeSnippetsSeriesPart2of3TheEasyW_9A47/image_10.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="212" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/WTFNext/WindowsLiveWriter/CustomCodeSnippetsSeriesPart2of3TheEasyW_9A47/image_thumb_4.png" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:843b2943-eebe-4c53-acd3-0b658386f552" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Custom+Code+Snippets+Series" rel="tag"&gt;Custom Code Snippets Series&lt;/a&gt;,&lt;a href="http://technorati.com/tags/VB+.NET" rel="tag"&gt;VB .NET&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Tutorials" rel="tag"&gt;Tutorials&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125954"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125954" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/WTFNext/aggbug/125954.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Stacy Vicknair</dc:creator>
            <guid>http://geekswithblogs.net/WTFNext/archive/2008/10/20/custom-code-snippets-series-part-2-of-3-the-ldquoeasyrdquo.aspx</guid>
            <pubDate>Mon, 20 Oct 2008 15:58:08 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/WTFNext/comments/125954.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/WTFNext/archive/2008/10/20/custom-code-snippets-series-part-2-of-3-the-ldquoeasyrdquo.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/WTFNext/comments/commentRss/125954.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/WTFNext/services/trackbacks/125954.aspx</trackback:ping>
        </item>
        <item>
            <title>For those geeks that want decent looking &amp;lt;pre&amp;gt; code</title>
            <link>http://geekswithblogs.net/WTFNext/archive/2008/10/14/for-those-geeks-that-want-decent-looking-ltpregt-code.aspx</link>
            <description>&lt;p&gt;I mashed together a variety of random web resources on how to make a decent pre tag for code and the output looks like this (ignore how incredibly bad this code is... I was testing SVN and making sporadic changes... Steve McConnell would strangle me):&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="COLOR: blue"&gt;Module &lt;/span&gt;Module1
    &lt;span style="COLOR: blue"&gt;Sub &lt;/span&gt;Main()
        Console.BackgroundColor = ConsoleColor.DarkBlue
        Console.ForegroundColor = ConsoleColor.White
        Console.Clear()

        &lt;span style="COLOR: blue"&gt;My&lt;/span&gt;.User.InitializeWithWindowsUser()

        &lt;span style="COLOR: blue"&gt;Dim &lt;/span&gt;sw &lt;span style="COLOR: blue"&gt;As New &lt;/span&gt;Stopwatch()
        sw.Start()

        &lt;span style="COLOR: blue"&gt;Dim &lt;/span&gt;username &lt;span style="COLOR: blue"&gt;As String &lt;/span&gt;= &lt;span style="COLOR: blue"&gt;My&lt;/span&gt;.User.IsInRole(ApplicationServices.BuiltInRole.Administrator).ToString

        Console.WriteLine(&lt;span style="COLOR: #a31515"&gt;"User is admin: " &lt;/span&gt;&amp;amp; username &amp;amp; &lt;span style="COLOR: #a31515"&gt;"!"&lt;/span&gt;)
        sw.Stop()
        Console.WriteLine(&lt;span style="COLOR: #a31515"&gt;"Time: " &lt;/span&gt;&amp;amp; sw.Elapsed.ToString)
        Console.ReadLine()

        
    &lt;span style="COLOR: blue"&gt;End Sub
End Module&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;There’s word wrap, and it’s at least differentiated from the rest of the post nicely IMO. the code is as follows:&lt;/p&gt;
&lt;pre&gt;&lt;p&gt;pre {border: solid 1px #CCCCCC; &lt;/p&gt;
&lt;p&gt; font-size: 1.3 em;   &lt;br /&gt; margin: 10px; 
&lt;br /&gt; padding:10px; 
&lt;br /&gt; background: #EEEEEE; &lt;/p&gt;
&lt;p&gt; white-space: pre-wrap;  &lt;br /&gt; white-space: -moz-pre-wrap !important;
&lt;br /&gt; white-space: -pre-wrap;
&lt;br /&gt; white-space: -o-pre-wrap; 
&lt;br /&gt; word-wrap: break-word;
&lt;br /&gt;}&lt;/p&gt;&lt;/pre&gt;
&lt;p&gt;Hope it helps some of you other code bloggers :)&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:121934da-67a6-4bfe-8b18-5b4919a5aff6" style="PADDING-RIGHT: 0px; DISPLAY: inline; PADDING-LEFT: 0px; FLOAT: none; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"&gt;Technorati Tags: &lt;a rel="tag" href="http://technorati.com/tags/Code"&gt;Code&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/Pre"&gt;Pre&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/CSS"&gt;CSS&lt;/a&gt;,&lt;a rel="tag" href="http://technorati.com/tags/GWB"&gt;GWB&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125841"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125841" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/WTFNext/aggbug/125841.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Stacy Vicknair</dc:creator>
            <guid>http://geekswithblogs.net/WTFNext/archive/2008/10/14/for-those-geeks-that-want-decent-looking-ltpregt-code.aspx</guid>
            <pubDate>Tue, 14 Oct 2008 18:48:51 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/WTFNext/comments/125841.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/WTFNext/archive/2008/10/14/for-those-geeks-that-want-decent-looking-ltpregt-code.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/WTFNext/comments/commentRss/125841.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/WTFNext/services/trackbacks/125841.aspx</trackback:ping>
        </item>
        <item>
            <title>Custom Code Snippets Series Part 1 of 3: The &amp;ldquo;Hard&amp;rdquo; Way</title>
            <link>http://geekswithblogs.net/WTFNext/archive/2008/10/14/custom-code-snippets-series-part-1-of-3-the-ldquohardrdquo.aspx</link>
            <description>&lt;p&gt;In this brief series I’m going to go over creating your own custom code snippets for use in Visual Studio 2005 or later. We’ll be using the XML Schema from Visual Studio 2005, but I assure you it works for both.&lt;/p&gt;  &lt;p&gt;This series will contain three parts:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The “Hard” Way &lt;/li&gt;    &lt;li&gt;The “Easy” Way &lt;/li&gt;    &lt;li&gt;Practical Example of an XML Snippet &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The reason we’re going to call this version the “Hard” way is because there are snippet generator apps available, including one made by the teams themselves.&lt;/p&gt;  &lt;p&gt;So before we begin, I’d like to say that I prefer to use the “Hard” way. For me, it helps me have a greater understanding with limited reliance on other software. Also, if the schema changes (which is very very doubtful) I will have instant knowledge of what needs fixing via intellisense tools.&lt;/p&gt;  &lt;h1&gt;Step 1: Create a new .snippet file&lt;/h1&gt;  &lt;p&gt;A .snippet file is just like having a .vb or .c file. A glorified text document. To start off, I like to have a text file with the following already in it:&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #a31515"&gt;xml &lt;/span&gt;&lt;span style="color: red"&gt;version&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;1.0&lt;/span&gt;" &lt;span style="color: red"&gt;encoding&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;utf-8&lt;/span&gt;" &lt;span style="color: blue"&gt;?&amp;gt; 
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;CodeSnippets &lt;/span&gt;&lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;
  &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;CodeSnippet &lt;/span&gt;&lt;span style="color: red"&gt;Format&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;1.0.0&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Header&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Title&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Title&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Shortcut&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Shortcut&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Description&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Description&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Author&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Author&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;HelpUrl&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;HelpUrl&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SnippetTypes&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SnippetType&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;SnippetType&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
      &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;SnippetTypes&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Header&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Snippet&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Code &lt;/span&gt;&lt;span style="color: red"&gt;Language&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;""&lt;span style="color: blue"&gt;&amp;gt;
        &amp;lt;![CDATA[]]&amp;gt;
      &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Code&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Snippet&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
  &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;CodeSnippet&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;CodeSnippets&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;&lt;font face="Courier New" color="#0000ff"&gt;&lt;/font&gt;&lt;/p&gt;

&lt;p&gt;What this allows you to do is get intellisense from Visual Studio when creating the snippet, as well as you have a starting structure that is common to most snippets, and it is just a matter of filling in the blanks.&lt;/p&gt;

&lt;p&gt;You can create this in notepad, and then save it out to where you want to store your snippets. If you want exclusive access to your snippets as well as to have them “installed” automatically, drop them in your &lt;strong&gt;My Documents &amp;gt; Visual Studio &lt;em&gt;YYYY&lt;/em&gt; &amp;gt; Code Snippets &amp;gt; &lt;em&gt;Language of Choice&lt;/em&gt; &amp;gt; My Code Snippets&lt;/strong&gt; directory. For this example, I’ll be working with Visual Studio 2005 and a VB .NET snippet. I’ll be naming my output cmdWrite.snippet, and my snippet will write a string to the console and then wait for the user to hit enter.&lt;/p&gt;

&lt;h1&gt;Step 2: Open .snippet in Visual Studio and fill in the blanks&lt;/h1&gt;

&lt;p&gt;By using Visual Studio to edit the snippet, we’ll get the rich experience of intellisense and syntax highlighting to make this process a bit easier.&lt;/p&gt;

&lt;p&gt;Now we’ll start adding the meat and potatoes, and for reference check out the &lt;a href="http://msdn.microsoft.com/en-us/library/ms171418(VS.80).aspx" target="_blank"&gt;Schema Reference from the MSDN&lt;/a&gt;. &lt;/p&gt;

&lt;h2&gt;The Header Section&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;Header&lt;/strong&gt; contains all of that important information to say what this snippet is all about. The Title contains what the snippet will be named in intellisense, the shortcut is the snippet shortcut, the description is what shows as a tooltip when selecting the snippet.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;SnippetTypes&lt;/strong&gt; section goes over what your snippet plans to do. Does it just insert at the point? Does it wrap around the text highlighted? Could it do either?&lt;/p&gt;

&lt;h2&gt;&lt;/h2&gt;

&lt;h2&gt;The Snippet Section&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;Snippet&lt;/strong&gt; section is where you put the real code for the snippet into play.&lt;/p&gt;

&lt;p&gt;To get our show started, we’ve got to let the snippet know our intentions. Setting the language to “VB” does just that.&lt;/p&gt;

&lt;p&gt;Now, the real code goes into the CDATA[] brackets. This is everything you want exported into Visual Studio when printed.&lt;/p&gt;

&lt;p&gt;For this example we’re just adding the following:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: gray"&gt;Console.Writeline($String$)
Console.ReadLine()&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;Now, huh? What’s that $String$ business? Well, we want to have some intelligence to our simple script, so we gave it a literal declaration. To add this into the snippet XML, add it before the code block. This will specify we want a string to replace our $String$ placeholder:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Declarations&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Literal&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;String&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ToolTip&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;Replace with string to write.&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ToolTip&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Default&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;"Hello World!"&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Default&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Literal&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Declarations&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;Now we’re ready to save this out and try it out! Go ahead and save and close Visual Studio. Reopen and start a new VB console application and insert the snippet you’ve just made!&lt;/p&gt;

&lt;p&gt;For final comparison, here is my finished code:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #a31515"&gt;xml &lt;/span&gt;&lt;span style="color: red"&gt;version&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;1.0&lt;/span&gt;" &lt;span style="color: red"&gt;encoding&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;utf-8&lt;/span&gt;" &lt;span style="color: blue"&gt;?&amp;gt; 
&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;CodeSnippets &lt;/span&gt;&lt;span style="color: red"&gt;xmlns&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt; 
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;CodeSnippet &lt;/span&gt;&lt;span style="color: red"&gt;Format&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;1.0.0&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt; 
        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Header&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Title&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;Command Writeline&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Title&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Shortcut&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;cmdWrite&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Shortcut&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Description&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;Writes a string to the commandline and then waits for the user to hit enter&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Description&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Author&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;Stacy Vicknair&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Author&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SnippetTypes&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;SnippetType&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;Expansion&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;SnippetType&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
      &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;SnippetTypes&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Header&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Snippet&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Declarations&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Literal&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;String&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ID&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;ToolTip&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;Replace with string to write.&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;ToolTip&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Default&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;"Hello World!"&lt;span style="color: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Default&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
                &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Literal&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Declarations&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Code &lt;/span&gt;&lt;span style="color: red"&gt;Language&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;VB&lt;/span&gt;" &lt;span style="color: red"&gt;Kind&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;"&lt;span style="color: blue"&gt;method body&lt;/span&gt;"&lt;span style="color: blue"&gt;&amp;gt;
                &amp;lt;![CDATA[
                    &lt;/span&gt;&lt;span style="color: gray"&gt;Console.Writeline($String$)
                    Console.ReadLine()
                &lt;/span&gt;&lt;span style="color: blue"&gt;]]&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Code&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Snippet&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;CodeSnippet&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt; 
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;CodeSnippets&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;References:&lt;/p&gt;

&lt;p&gt;&lt;a title="http://msdn.microsoft.com/en-us/library/ms171418(VS.80).aspx" href="http://msdn.microsoft.com/en-us/library/ms171418(VS.80).aspx"&gt;http://msdn.microsoft.com/en-us/library/ms171418(VS.80).aspx&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a title="http://weblogs.asp.net/srkirkland/archive/2007/10/29/creating-a-custom-code-snippet.aspx" href="http://weblogs.asp.net/srkirkland/archive/2007/10/29/creating-a-custom-code-snippet.aspx"&gt;http://weblogs.asp.net/srkirkland/archive/2007/10/29/creating-a-custom-code-snippet.aspx&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:54303dfd-15bf-40fc-b829-82667d5f3259" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Custom+Code+Snippets+Series" rel="tag"&gt;Custom Code Snippets Series&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Snippets" rel="tag"&gt;Snippets&lt;/a&gt;,&lt;a href="http://technorati.com/tags/VB+.NET" rel="tag"&gt;VB .NET&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125838"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125838" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/WTFNext/aggbug/125838.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Stacy Vicknair</dc:creator>
            <guid>http://geekswithblogs.net/WTFNext/archive/2008/10/14/custom-code-snippets-series-part-1-of-3-the-ldquohardrdquo.aspx</guid>
            <pubDate>Tue, 14 Oct 2008 18:12:43 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/WTFNext/comments/125838.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/WTFNext/archive/2008/10/14/custom-code-snippets-series-part-1-of-3-the-ldquohardrdquo.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/WTFNext/comments/commentRss/125838.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/WTFNext/services/trackbacks/125838.aspx</trackback:ping>
        </item>
        <item>
            <title>Free mail hosting from Windows Live Part 2</title>
            <link>http://geekswithblogs.net/WTFNext/archive/2008/10/07/free-mail-hosting-from-windows-live-part-2.aspx</link>
            <description>&lt;p&gt;Continuing on from what I started in the &lt;a href="http://www.wtfnext.com/archive/2008/10/05/free-mail-hosting-from-windows-live-part-1.aspx" target="_blank"&gt;Part 1 post&lt;/a&gt;, I’m going to show you how to get set up with Windows Live mail for your domain (assuming GoDaddy, but correlations will be present). It’s easy, relatively quick, and will result in a free service that ought to minimize your mail frustration.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;h1&gt;Step 1: Get an account started on domains.live.com&lt;/h1&gt;  &lt;p&gt;To get started, browse over to &lt;a href="http://domains.live.com"&gt;http://domains.live.com&lt;/a&gt;. Towards the bottom of the page, click get started and then enter in your domain information.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/WTFNext/WindowsLiveWriter/FreemailhostingfromWindowsLivePart2_AE4E/image_4.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="234" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/WTFNext/WindowsLiveWriter/FreemailhostingfromWindowsLivePart2_AE4E/image_thumb_1.png" width="345" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Leave the radio button next to &lt;strong&gt;Set up Windows Live Hotmail for my domain&lt;/strong&gt; selected, because that would be the main point of this article ;)&lt;/p&gt;  &lt;p&gt;After clicking &lt;strong&gt;Continue&lt;/strong&gt;, you’ll be prompted for whether or not you want to associate the domain with a new Live ID or with your current Live ID. This is a personal choice, but if I had done this over I would have created a new one. Otherwise, during the setup you’ll find yourself juggling between Live IDs to test out the new mail accounts. Pick your poison, then review the settings and choose whether or not to accept them.&lt;/p&gt;  &lt;h1&gt;Step 2: Set up your MX Records&lt;/h1&gt;  &lt;p&gt;Now that you’ve registered with domains.live.com, you should come to a screen telling you about how bad of a person you are because your service is &lt;strong&gt;Pending DNS configuration&lt;/strong&gt; and you have not been authenticated to even be associated with the domain.&lt;/p&gt;  &lt;p&gt;So, let’s get that fixed. Now, log into &lt;a href="http://www.godaddy.com/" target="_blank"&gt;GoDaddy&lt;/a&gt; or your other domain provider and get to where you can edit the domain configuration. For GoDaddy, sign in and go to the Domain Manager. &lt;/p&gt;  &lt;p&gt;Select the domain your aiming to set up. Towards the middle of all that craziness, you should spot a section entitled &lt;strong&gt;Total DNS&lt;/strong&gt;, and below the section select the link &lt;strong&gt;Total DNS Control and MX Records&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/WTFNext/WindowsLiveWriter/FreemailhostingfromWindowsLivePart2_AE4E/image_6.png"&gt;&lt;img title="image" style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="158" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/WTFNext/WindowsLiveWriter/FreemailhostingfromWindowsLivePart2_AE4E/image_thumb_2.png" width="454" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;As you see above, even with a domain you never use there are some default settings for MX with GoDaddy. This is because they do give you your own accounts, I believe up to 50, and I believe they even allow pop access. If you think you want to stick with this, reevaluate the pros and cons I listed in &lt;a href="http://www.wtfnext.com/archive/2008/10/05/free-mail-hosting-from-windows-live-part-1.aspx" target="_blank"&gt;Part 1&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Firstly, remove all of the old MX Records. No turning back now! (Well, you could always turn back… call support if necessary) Refer back to your Windows Live Admin center window and you’ll see the new MX Record that you need to add. On the MX section back in GoDaddy click Add New MX Record and enter in the information as seen in Live Admin Center. Host name is the Host field in WLAC, and Goes To Address is the MX Server in WLAC.&lt;/p&gt;  &lt;p&gt;Optionally, you can add the TXT record to GoDaddy as well, but it should not be required.&lt;/p&gt;  &lt;p&gt;After refreshing fervently for a while in the WLAC eventually you will have proven your administrative status (from the GoDaddy changes, not the fervent refreshing). From here you can add new mail accounts or configure the account however you please. Mail accounts will be able to log in at mail.live.com.&lt;/p&gt;  &lt;h2&gt;&lt;/h2&gt;  &lt;h1&gt;Optional Step 3: Set up mail.yourdomain.com&lt;/h1&gt;  &lt;p&gt;so you’ve got mail, and you want it to be accessibly AT LEAST from your domain right? So now we set up the CNAME to do the redirection.&lt;/p&gt;  &lt;p&gt;By now your domain should have authenticated, and you can select &lt;strong&gt;Custom addresses&lt;/strong&gt; in the WLAC. Make sure Hotmail is selected in the drop-down, and hit &lt;strong&gt;Add&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;An Ajax control will prompt you for the CNAME you want to use, in this case I’ll use &lt;strong&gt;mail&lt;/strong&gt;. You’ll see the page reload and you’ll now have a specified link between mail and hotmail, but you aren’t done just yet.&lt;/p&gt;  &lt;p&gt;Pop back in to the GoDaddy domain Management, and add a new CNAME record. The alias will be whatever you chose before and the &lt;strong&gt;Points to Host Name&lt;/strong&gt; value will be &lt;strong&gt;go.domains.live.com&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/WTFNext/WindowsLiveWriter/FreemailhostingfromWindowsLivePart2_AE4E/image_8.png"&gt;&lt;img title="image" style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" height="215" alt="image" src="http://geekswithblogs.net/images/geekswithblogs_net/WTFNext/WindowsLiveWriter/FreemailhostingfromWindowsLivePart2_AE4E/image_thumb_3.png" width="332" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Hit okay, go get some coffee, come back and you should be good to go!&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:1a8c43a9-a434-4550-8563-8bfc0005e761" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Microsoft" rel="tag"&gt;Microsoft&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Windows+Live" rel="tag"&gt;Windows Live&lt;/a&gt;,&lt;a href="http://technorati.com/tags/domains" rel="tag"&gt;domains&lt;/a&gt;,&lt;a href="http://technorati.com/tags/mail" rel="tag"&gt;mail&lt;/a&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125689"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=125689" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/WTFNext/aggbug/125689.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Stacy Vicknair</dc:creator>
            <guid>http://geekswithblogs.net/WTFNext/archive/2008/10/07/free-mail-hosting-from-windows-live-part-2.aspx</guid>
            <pubDate>Tue, 07 Oct 2008 17:23:51 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/WTFNext/comments/125689.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/WTFNext/archive/2008/10/07/free-mail-hosting-from-windows-live-part-2.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/WTFNext/comments/commentRss/125689.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/WTFNext/services/trackbacks/125689.aspx</trackback:ping>
        </item>
    </channel>
</rss>