<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" 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:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>Scott Seely's Blog</title>
    <link>http://www.scottseely.com/Blog/</link>
    <description>.NET, Windows, "Stuff"</description>
    <image>
      <url>http://www.scottseely.com/images/PageLogo.jpg</url>
      <title>Scott Seely's Blog</title>
      <link>http://www.scottseely.com/Blog/</link>
    </image>
    <language>en-us</language>
    <copyright>Scott Seely</copyright>
    <lastBuildDate>Mon, 05 Jan 2009 17:00:46 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.0.7226.0</generator>
    <managingEditor>scott@scottseely.com</managingEditor>
    <webMaster>scott@scottseely.com</webMaster>
    <item>
      <trackback:ping>http://www.scottseely.com/Blog/Trackback.aspx?guid=18ee444f-5abb-4a27-850f-1255bff70543</trackback:ping>
      <pingback:server>http://www.scottseely.com/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.scottseely.com/Blog/PermaLink,guid,18ee444f-5abb-4a27-850f-1255bff70543.aspx</pingback:target>
      <dc:creator>Scott Seely</dc:creator>
      <wfw:comment>http://www.scottseely.com/Blog/CommentView,guid,18ee444f-5abb-4a27-850f-1255bff70543.aspx</wfw:comment>
      <wfw:commentRss>http://www.scottseely.com/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=18ee444f-5abb-4a27-850f-1255bff70543</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
One of the first questions I came up with yesterday when digging into F# was this:
what does an F# type look like to C#? As a noob, that's an interesting question to
me. Of course, being a noob, I had no clue about how to create a custom type. So,
I asked <a href="http://www.google.com" target="_blank">Google</a> what an F# type
definition looked like, then massaged that until I had something that I might not
completely understand, but that does show the problem at hand. I created a lame Name
class that only supports a first name. Boo-yah!
</p>
        <p>
First, I went to an existing file in an F# library called <em>stuff.fs</em>. There,
I added the following class:
</p>
        <p>
        </p>
        <div style="font-size: 11pt; background: white; color: black; font-family: verdana">
          <p style="margin: 0px">
            <span style="color: #2b91af">    </span> <span style="color: blue">type</span> Name(fname
: string) =
</p>
          <p style="margin: 0px">
            <span style="color: #2b91af">    </span>     <span style="color: blue">let</span><span style="color: blue">mutable</span> fName 
= fname
</p>
          <p style="margin: 0px">
            <span style="color: #2b91af">    </span>     <span style="color: blue">member</span> this.FName <span style="color: blue">with</span> get()
= fName
</p>
          <p style="margin: 0px">
            <span style="color: #2b91af">    </span>                                     <span style="color: blue">and</span> set(x)
= fName &lt;- x
</p>
        </div>
        <p>
For you C# heads out there, let's look at what the code above really is saying.
</p>
        <ul>
          <li>
Create a new type, Name. 
</li>
          <li>
Name has a single constructor that takes a string. 
</li>
          <li>
Name has a member variable, <strong>fName</strong>, whose value can change at runtime. 
</li>
          <li>
Name has a public property, <strong>FName</strong>, that has a getter and a setter. 
</li>
        </ul>
        <p>
OK, so now what does this look like in C#? I add the F# library to a C# project, instantiate
a copy of <em>Stuff.Name</em> (I'll get to the <em>Stuff</em> item in a moment), and
then I right click on <em>Stuff.Name</em> and pick <em>Go to Definition</em>. Since
we are in C# land, VS 2008 will pull up the C# vision. This looks exactly like the
following:
</p>
        <p>
        </p>
        <div style="font-size: 11pt; background: white; color: black; font-family: verdana">
          <p style="margin: 0px">
            <span style="color: blue">using</span> System;
</p>
          <p style="margin: 0px">
 
</p>
          <p style="margin: 0px">
            <span style="color: blue">public</span>
            <span style="color: blue">static</span>
            <span style="color: blue">class</span>
            <span style="color: #2b91af">Stuff</span>
          </p>
          <p style="margin: 0px">
{
</p>
          <p style="margin: 0px">
 
</p>
          <p style="margin: 0px">
    [<span style="color: #2b91af">Serializable</span>]
</p>
          <p style="margin: 0px">
    <span style="color: blue">public</span><span style="color: blue">class</span><span style="color: #2b91af">Name</span></p>
          <p style="margin: 0px">
    {
</p>
          <p style="margin: 0px">
        <span style="color: blue">public</span> Name(<span style="color: blue">string</span> fname);
</p>
          <p style="margin: 0px">
 
</p>
          <p style="margin: 0px">
        <span style="color: blue">public</span><span style="color: blue">string</span> FName
{ <span style="color: blue">get</span>; <span style="color: blue">set</span>; }
</p>
          <p style="margin: 0px">
    }
</p>
          <p style="margin: 0px">
}
</p>
        </div>
        <p>
That's kind of weird. I didn't expect to see Name declared as a inner class from a
static class whose name comes from the name of the F# file. Still, that's what we
have. Does this mean that F# code doesn't allow one to create CLR namespaces? No--
of course not! So, how do you get the <em>Name</em> class into a CLR namespace called <em>SomeNamespace</em>?
I did a little digging and found out how:
</p>
        <div style="font-size: 11pt; background: white; color: black; font-family: verdana">
          <p style="margin: 0px">
            <span style="color: blue">namespace</span> SomeNamespace 
</p>
          <p style="margin: 0px">
    <span style="color: blue">type</span> Name(fname : string) =
</p>
          <p style="margin: 0px">
        <span style="color: blue">let</span><span style="color: blue">mutable</span> fName 
= fname
</p>
          <p style="margin: 0px">
        <span style="color: blue">member</span> this.FName <span style="color: blue">with</span> get()
= fName
</p>
          <p style="margin: 0px">
                                        <span style="color: blue">and</span> set(x)
= fName &lt;- x
</p>
        </div>
        <p>
Yeah-- there's a keyword called namespace that allows you to add objects to a CLR
namespace. The odd bit here is that one doesn't say namespace blah =. Instead, you
omit the '='. The '=' will work, but you will get a message saying that the syntax
has been deprecated. With this small change in place, things look more correct to
my C# eyes. The static class disappears, and that's good! 
</p>
        <p>
        </p>
        <div style="font-size: 11pt; background: white; color: black; font-family: verdana">
          <p style="margin: 0px">
            <span style="color: blue">using</span> System;
</p>
          <p style="margin: 0px">
 
</p>
          <p style="margin: 0px">
            <span style="color: blue">namespace</span> SomeNamespace
</p>
          <p style="margin: 0px">
{
</p>
          <p style="margin: 0px">
    [<span style="color: #2b91af">Serializable</span>]
</p>
          <p style="margin: 0px">
    <span style="color: blue">public</span><span style="color: blue">class</span><span style="color: #2b91af">Name</span></p>
          <p style="margin: 0px">
    {
</p>
          <p style="margin: 0px">
        <span style="color: blue">public</span> Name(<span style="color: blue">string</span> fname);
</p>
          <p style="margin: 0px">
 
</p>
          <p style="margin: 0px">
        <span style="color: blue">public</span><span style="color: blue">string</span> FName
{ <span style="color: blue">get</span>; <span style="color: blue">set</span>; }
</p>
          <p style="margin: 0px">
    }
</p>
          <p style="margin: 0px">
}
</p>
        </div>
        <p>
Right now, I think my focus will be on writing F# code that plays well/looks natural
to C# developers. I'll keep that point of view until I see a reason to change. 
</p>
        <img width="0" height="0" src="http://www.scottseely.com/Blog/aggbug.ashx?id=18ee444f-5abb-4a27-850f-1255bff70543" />
        <br />
        <hr />
Visit my site, http://www.scottseely.com/.</body>
      <title>Predicting the name of an F# type</title>
      <guid isPermaLink="false">http://www.scottseely.com/Blog/PermaLink,guid,18ee444f-5abb-4a27-850f-1255bff70543.aspx</guid>
      <link>http://www.scottseely.com/Blog/2009/01/05/PredictingTheNameOfAnFType.aspx</link>
      <pubDate>Mon, 05 Jan 2009 17:00:46 GMT</pubDate>
      <description>&lt;p&gt;
One of the first questions I came up with yesterday when digging into F# was this:
what does an F# type look like to C#? As a noob, that's an interesting question to
me. Of course, being a noob, I had no clue about how to create a custom type. So,
I asked &lt;a href="http://www.google.com" target="_blank"&gt;Google&lt;/a&gt; what an F# type
definition looked like, then massaged that until I had something that I might not
completely understand, but that does show the problem at hand. I created a lame Name
class that only supports a first name. Boo-yah!
&lt;/p&gt;
&lt;p&gt;
First, I went to an existing file in an F# library called &lt;em&gt;stuff.fs&lt;/em&gt;. There,
I added the following class:
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;div style="font-size: 11pt; background: white; color: black; font-family: verdana"&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;#160;&lt;span style="color: blue"&gt;type&lt;/span&gt; Name(fname
: string) =
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;let&lt;/span&gt; &lt;span style="color: blue"&gt;mutable&lt;/span&gt; fName&amp;#160;
= fname
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;member&lt;/span&gt; this.FName &lt;span style="color: blue"&gt;with&lt;/span&gt; get()
= fName
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: #2b91af"&gt;&amp;#160;&amp;#160;&amp;#160; &lt;/span&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;and&lt;/span&gt; set(x)
= fName &amp;lt;- x
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
For you C# heads out there, let's look at what the code above really is saying.
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Create a new type, Name. 
&lt;/li&gt;
&lt;li&gt;
Name has a single constructor that takes a string. 
&lt;/li&gt;
&lt;li&gt;
Name has a member variable, &lt;strong&gt;fName&lt;/strong&gt;, whose value can change at runtime. 
&lt;/li&gt;
&lt;li&gt;
Name has a public property, &lt;strong&gt;FName&lt;/strong&gt;, that has a getter and a setter. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
OK, so now what does this look like in C#? I add the F# library to a C# project, instantiate
a copy of &lt;em&gt;Stuff.Name&lt;/em&gt; (I'll get to the &lt;em&gt;Stuff&lt;/em&gt; item in a moment), and
then I right click on &lt;em&gt;Stuff.Name&lt;/em&gt; and pick &lt;em&gt;Go to Definition&lt;/em&gt;. Since
we are in C# land, VS 2008 will pull up the C# vision. This looks exactly like the
following:
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;div style="font-size: 11pt; background: white; color: black; font-family: verdana"&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: blue"&gt;using&lt;/span&gt; System;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&amp;#160;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Stuff&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
{
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&amp;#160;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;Serializable&lt;/span&gt;]
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Name&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&amp;#160;&amp;#160;&amp;#160; {
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; Name(&lt;span style="color: blue"&gt;string&lt;/span&gt; fname);
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&amp;#160;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; FName
{ &lt;span style="color: blue"&gt;get&lt;/span&gt;; &lt;span style="color: blue"&gt;set&lt;/span&gt;; }
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&amp;#160;&amp;#160;&amp;#160; }
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
}
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
That's kind of weird. I didn't expect to see Name declared as a inner class from a
static class whose name comes from the name of the F# file. Still, that's what we
have. Does this mean that F# code doesn't allow one to create CLR namespaces? No--
of course not! So, how do you get the &lt;em&gt;Name&lt;/em&gt; class into a CLR namespace called &lt;em&gt;SomeNamespace&lt;/em&gt;?
I did a little digging and found out how:
&lt;/p&gt;
&lt;div style="font-size: 11pt; background: white; color: black; font-family: verdana"&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: blue"&gt;namespace&lt;/span&gt; SomeNamespace 
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;type&lt;/span&gt; Name(fname : string) =
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;let&lt;/span&gt; &lt;span style="color: blue"&gt;mutable&lt;/span&gt; fName&amp;#160;
= fname
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;member&lt;/span&gt; this.FName &lt;span style="color: blue"&gt;with&lt;/span&gt; get()
= fName
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;and&lt;/span&gt; set(x)
= fName &amp;lt;- x
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
Yeah-- there's a keyword called namespace that allows you to add objects to a CLR
namespace. The odd bit here is that one doesn't say namespace blah =. Instead, you
omit the '='. The '=' will work, but you will get a message saying that the syntax
has been deprecated. With this small change in place, things look more correct to
my C# eyes. The static class disappears, and that's good! 
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;div style="font-size: 11pt; background: white; color: black; font-family: verdana"&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: blue"&gt;using&lt;/span&gt; System;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&amp;#160;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&lt;span style="color: blue"&gt;namespace&lt;/span&gt; SomeNamespace
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
{
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&amp;#160;&amp;#160;&amp;#160; [&lt;span style="color: #2b91af"&gt;Serializable&lt;/span&gt;]
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;Name&lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&amp;#160;&amp;#160;&amp;#160; {
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; Name(&lt;span style="color: blue"&gt;string&lt;/span&gt; fname);
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&amp;#160;
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;string&lt;/span&gt; FName
{ &lt;span style="color: blue"&gt;get&lt;/span&gt;; &lt;span style="color: blue"&gt;set&lt;/span&gt;; }
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
&amp;#160;&amp;#160;&amp;#160; }
&lt;/p&gt;
&lt;p style="margin: 0px"&gt;
}
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
Right now, I think my focus will be on writing F# code that plays well/looks natural
to C# developers. I'll keep that point of view until I see a reason to change. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.scottseely.com/Blog/aggbug.ashx?id=18ee444f-5abb-4a27-850f-1255bff70543" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Visit my site, http://www.scottseely.com/.</description>
      <comments>http://www.scottseely.com/Blog/CommentView,guid,18ee444f-5abb-4a27-850f-1255bff70543.aspx</comments>
      <category>.NET</category>
      <category>F#</category>
    </item>
    <item>
      <trackback:ping>http://www.scottseely.com/Blog/Trackback.aspx?guid=e5ad598c-3f87-4f6c-a16f-f35e34ffb4e7</trackback:ping>
      <pingback:server>http://www.scottseely.com/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.scottseely.com/Blog/PermaLink,guid,e5ad598c-3f87-4f6c-a16f-f35e34ffb4e7.aspx</pingback:target>
      <dc:creator>Scott Seely</dc:creator>
      <wfw:comment>http://www.scottseely.com/Blog/CommentView,guid,e5ad598c-3f87-4f6c-a16f-f35e34ffb4e7.aspx</wfw:comment>
      <wfw:commentRss>http://www.scottseely.com/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=e5ad598c-3f87-4f6c-a16f-f35e34ffb4e7</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
A long while back, I mentioned that my wife, Jean, and I were looking at <a href="http://www.scottseely.com/Blog/2008/06/21/NewVentureStartingUp.aspx" target="_blank">starting
up a company</a>. Well, we've done a lot of thinking about what the product should
do and how this should be done. Because of other <a href="http://www.amazon.com/Effective-REST-Services-via-NET/dp/0321613252/" target="_blank">recent
activities</a>, I haven't had a lot of time to execute on the idea. The fact of the
matter is that we still like the underlying concept, but the implementation concept
has morphed several times since we had the idea. The biggest changes are these:
</p>
        <ol>
          <li>
            <a href="http://msdn.microsoft.com/fsharp" target="_blank">F#</a>: A VS2010 language
(currently in Beta)</li>
          <li>
            <a href="http://www.microsoft.com/azure/default.mspx" target="_blank">Azure</a>: A
Cloud platform</li>
        </ol>
        <p>
F# is a functional .NET language. I've always been a fan of functional programming
as it typically allows me to write my applications using fewer lines than what I would
do in pure imperative mode. For better or worse, imperative languages are still center
stage (and have been for decades). In order to pay the bills, it is easier to find
work using C++/C#/Java than using LISP/Prolog/Scala. However, with F# (an OCaml based
language), we have a chance of seeing functional programming go mainstream. I have
a project in mind that needs a .NET language, so why not use the project as a means
to really get into F#.
</p>
        <p>
The second thing that happened is the beta release of Azure at the 2008 PDC. A big
concern of mine has been hosting the set of servers that will eventually be needed
if the web site idea takes off. Yes, I'm familiar with how to make sites scalable,
how to buy a server, etc. I'm also familiar with the fact that more servers means
more people I'd have to hire who may or may not have the chops to manage a large-ish
web site. The cloud stuff is very appealing to me as it allows someone who worries
only about managing servers do whatever that is. I can then focus on conserving space,
writing better algorithms, and paying a smaller price to keep that service up and
running (yeah, I'm assuming that, like other managed services, the cost of going to
the cloud is less that the cost of personnel + equipment + power + licensing). 
</p>
        <p>
So, until I either lose interest or get so swamped with work/life/whatever, expect
to see the blog focus on F# and Azure stuff. Right now, I'm a noob. 
</p>
        <img width="0" height="0" src="http://www.scottseely.com/Blog/aggbug.ashx?id=e5ad598c-3f87-4f6c-a16f-f35e34ffb4e7" />
        <br />
        <hr />
Visit my site, http://www.scottseely.com/.</body>
      <title>What am I doing now?</title>
      <guid isPermaLink="false">http://www.scottseely.com/Blog/PermaLink,guid,e5ad598c-3f87-4f6c-a16f-f35e34ffb4e7.aspx</guid>
      <link>http://www.scottseely.com/Blog/2009/01/04/WhatAmIDoingNow.aspx</link>
      <pubDate>Sun, 04 Jan 2009 17:00:25 GMT</pubDate>
      <description>&lt;p&gt;
A long while back, I mentioned that my wife, Jean, and I were looking at &lt;a href="http://www.scottseely.com/Blog/2008/06/21/NewVentureStartingUp.aspx" target="_blank"&gt;starting
up a company&lt;/a&gt;. Well, we've done a lot of thinking about what the product should
do and how this should be done. Because of other &lt;a href="http://www.amazon.com/Effective-REST-Services-via-NET/dp/0321613252/" target="_blank"&gt;recent
activities&lt;/a&gt;, I haven't had a lot of time to execute on the idea. The fact of the
matter is that we still like the underlying concept, but the implementation concept
has morphed several times since we had the idea. The biggest changes are these:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;a href="http://msdn.microsoft.com/fsharp" target="_blank"&gt;F#&lt;/a&gt;: A VS2010 language
(currently in Beta)&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.microsoft.com/azure/default.mspx" target="_blank"&gt;Azure&lt;/a&gt;: A
Cloud platform&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
F# is a functional .NET language. I've always been a fan of functional programming
as it typically allows me to write my applications using fewer lines than what I would
do in pure imperative mode. For better or worse, imperative languages are still center
stage (and have been for decades). In order to pay the bills, it is easier to find
work using C++/C#/Java than using LISP/Prolog/Scala. However, with F# (an OCaml based
language), we have a chance of seeing functional programming go mainstream. I have
a project in mind that needs a .NET language, so why not use the project as a means
to really get into F#.
&lt;/p&gt;
&lt;p&gt;
The second thing that happened is the beta release of Azure at the 2008 PDC. A big
concern of mine has been hosting the set of servers that will eventually be needed
if the web site idea takes off. Yes, I'm familiar with how to make sites scalable,
how to buy a server, etc. I'm also familiar with the fact that more servers means
more people I'd have to hire who may or may not have the chops to manage a large-ish
web site. The cloud stuff is very appealing to me as it allows someone who worries
only about managing servers do whatever that is. I can then focus on conserving space,
writing better algorithms, and paying a smaller price to keep that service up and
running (yeah, I'm assuming that, like other managed services, the cost of going to
the cloud is less that the cost of personnel + equipment + power + licensing). 
&lt;/p&gt;
&lt;p&gt;
So, until I either lose interest or get so swamped with work/life/whatever, expect
to see the blog focus on F# and Azure stuff. Right now, I'm a noob. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.scottseely.com/Blog/aggbug.ashx?id=e5ad598c-3f87-4f6c-a16f-f35e34ffb4e7" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Visit my site, http://www.scottseely.com/.</description>
      <comments>http://www.scottseely.com/Blog/CommentView,guid,e5ad598c-3f87-4f6c-a16f-f35e34ffb4e7.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.scottseely.com/Blog/Trackback.aspx?guid=d704d62f-dc7d-4abb-b68f-eb0362b520cb</trackback:ping>
      <pingback:server>http://www.scottseely.com/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.scottseely.com/Blog/PermaLink,guid,d704d62f-dc7d-4abb-b68f-eb0362b520cb.aspx</pingback:target>
      <dc:creator>Scott Seely</dc:creator>
      <wfw:comment>http://www.scottseely.com/Blog/CommentView,guid,d704d62f-dc7d-4abb-b68f-eb0362b520cb.aspx</wfw:comment>
      <wfw:commentRss>http://www.scottseely.com/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=d704d62f-dc7d-4abb-b68f-eb0362b520cb</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
For anyone who read this thing, I apologize for the long break. Between my last post
and now, I wrote a book with my good friend, <a href="http://www.endurasoft.com" target="_blank">Kenn
Scribner</a>. The book, <a href="http://www.amazon.com/Effective-REST-Services-via-NET/dp/0321613252/" target="_blank">Effective
REST Services via .NET</a>, is currently in the technical review stage. This means
that some really smart people are reviewing the book and letting Kenn and I know where
things don't make sense or are just wrong. Kenn was asked to write this book back
in July of 2008 after developing a bunch of samples and other content for the folks
involved with WCF/Oslo. Kenn then asked me to collaborate with him and I accepted. 
</p>
        <p>
Anyhow, writing a book removes any drive I might otherwise have to blog. Now that
I'm able to get things done in smaller chunks based on the reviews that are flowing
in, I have the writing bug back again. 
</p>
        <p>
I haven't been completely out-- if you want to see what I've been writing up for my
day job, check out the <a href="http://developer.myspace.com/Community/blogs/devteam/default.aspx" target="_blank">MySpace
developer blog</a>. I'm one of several contributors there, posting as "Scott".
</p>
        <img width="0" height="0" src="http://www.scottseely.com/Blog/aggbug.ashx?id=d704d62f-dc7d-4abb-b68f-eb0362b520cb" />
        <br />
        <hr />
Visit my site, http://www.scottseely.com/.</body>
      <title>I'm back</title>
      <guid isPermaLink="false">http://www.scottseely.com/Blog/PermaLink,guid,d704d62f-dc7d-4abb-b68f-eb0362b520cb.aspx</guid>
      <link>http://www.scottseely.com/Blog/2009/01/04/ImBack.aspx</link>
      <pubDate>Sun, 04 Jan 2009 16:29:08 GMT</pubDate>
      <description>&lt;p&gt;
For anyone who read this thing, I apologize for the long break. Between my last post
and now, I wrote a book with my good friend, &lt;a href="http://www.endurasoft.com" target="_blank"&gt;Kenn
Scribner&lt;/a&gt;. The book, &lt;a href="http://www.amazon.com/Effective-REST-Services-via-NET/dp/0321613252/" target="_blank"&gt;Effective
REST Services via .NET&lt;/a&gt;, is currently in the technical review stage. This means
that some really smart people are reviewing the book and letting Kenn and I know where
things don't make sense or are just wrong. Kenn was asked to write this book back
in July of 2008 after developing a bunch of samples and other content for the folks
involved with WCF/Oslo. Kenn then asked me to collaborate with him and I accepted. 
&lt;/p&gt;
&lt;p&gt;
Anyhow, writing a book removes any drive I might otherwise have to blog. Now that
I'm able to get things done in smaller chunks based on the reviews that are flowing
in, I have the writing bug back again. 
&lt;/p&gt;
&lt;p&gt;
I haven't been completely out-- if you want to see what I've been writing up for my
day job, check out the &lt;a href="http://developer.myspace.com/Community/blogs/devteam/default.aspx" target="_blank"&gt;MySpace
developer blog&lt;/a&gt;. I'm one of several contributors there, posting as &amp;quot;Scott&amp;quot;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.scottseely.com/Blog/aggbug.ashx?id=d704d62f-dc7d-4abb-b68f-eb0362b520cb" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Visit my site, http://www.scottseely.com/.</description>
      <comments>http://www.scottseely.com/Blog/CommentView,guid,d704d62f-dc7d-4abb-b68f-eb0362b520cb.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.scottseely.com/Blog/Trackback.aspx?guid=e6bc60c5-0ec2-46ae-92fe-83a5c8b67cde</trackback:ping>
      <pingback:server>http://www.scottseely.com/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.scottseely.com/Blog/PermaLink,guid,e6bc60c5-0ec2-46ae-92fe-83a5c8b67cde.aspx</pingback:target>
      <dc:creator>Scott Seely</dc:creator>
      <wfw:comment>http://www.scottseely.com/Blog/CommentView,guid,e6bc60c5-0ec2-46ae-92fe-83a5c8b67cde.aspx</wfw:comment>
      <wfw:commentRss>http://www.scottseely.com/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=e6bc60c5-0ec2-46ae-92fe-83a5c8b67cde</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p class="Body" style="MARGIN: 0in 0in 3pt">
          <font face="Times New Roman" color="#000000" size="3">If you do any work with LINQ,
you have to go out and buy the <a href="http://www.amazon.com/LINQ-Pocket-Reference-OReilly/dp/0596519249/">LINQ
Pocket Reference</a> by Joseph and Ben Albahari, ISBN 978-0-596-51924-7, O’Reilly.
It’s a tiny, 160 page book that will literally fit into the back pocket of your jeans.
I love it, use it whenever I'm doing LINQ stuff. It's a permanent fixture on my desk
and in my laptop bag. Just go buy it, now! It's $10.19 at Amazon. If you program for
.NET, there is no excuse to NOT own this book. Skip lunch today if you need to budget
for the money. </font>
        </p>
        <img width="0" height="0" src="http://www.scottseely.com/Blog/aggbug.ashx?id=e6bc60c5-0ec2-46ae-92fe-83a5c8b67cde" />
        <br />
        <hr />
Visit my site, http://www.scottseely.com/.</body>
      <title>A LINQ Book you need</title>
      <guid isPermaLink="false">http://www.scottseely.com/Blog/PermaLink,guid,e6bc60c5-0ec2-46ae-92fe-83a5c8b67cde.aspx</guid>
      <link>http://www.scottseely.com/Blog/2008/09/27/ALINQBookYouNeed.aspx</link>
      <pubDate>Sat, 27 Sep 2008 20:38:54 GMT</pubDate>
      <description>&lt;p class=Body style="MARGIN: 0in 0in 3pt"&gt;
&lt;font face="Times New Roman" color=#000000 size=3&gt;If you do any work with LINQ, you
have to go out and buy the &lt;a href="http://www.amazon.com/LINQ-Pocket-Reference-OReilly/dp/0596519249/"&gt;LINQ
Pocket Reference&lt;/a&gt; by Joseph and Ben Albahari, ISBN 978-0-596-51924-7, O’Reilly.
It’s a tiny, 160 page book that will literally fit into the back pocket of your jeans.
I love it, use it whenever I'm doing LINQ stuff. It's a permanent fixture on my desk
and in my laptop bag. Just go buy it, now! It's $10.19 at Amazon. If you program for
.NET, there is no excuse to NOT own this book. Skip lunch today if you need to budget
for the money. &lt;/font&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.scottseely.com/Blog/aggbug.ashx?id=e6bc60c5-0ec2-46ae-92fe-83a5c8b67cde" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Visit my site, http://www.scottseely.com/.</description>
      <comments>http://www.scottseely.com/Blog/CommentView,guid,e6bc60c5-0ec2-46ae-92fe-83a5c8b67cde.aspx</comments>
      <category>.NET</category>
    </item>
    <item>
      <trackback:ping>http://www.scottseely.com/Blog/Trackback.aspx?guid=6aef2bfb-eb10-4641-83f0-1bd53d857816</trackback:ping>
      <pingback:server>http://www.scottseely.com/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.scottseely.com/Blog/PermaLink,guid,6aef2bfb-eb10-4641-83f0-1bd53d857816.aspx</pingback:target>
      <dc:creator>Scott Seely</dc:creator>
      <wfw:comment>http://www.scottseely.com/Blog/CommentView,guid,6aef2bfb-eb10-4641-83f0-1bd53d857816.aspx</wfw:comment>
      <wfw:commentRss>http://www.scottseely.com/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=6aef2bfb-eb10-4641-83f0-1bd53d857816</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I found this in the forums, but it wasn't super easy to dig out. Hopefully, this post
will help someone find things a bit easier. 
</p>
        <p>
Symptoms: You can't access a site on local IIS after installing Visual Studio 2008
IIS on Vista or later. 
</p>
        <p>
Event log at Windows Logs\System will have an entry that reads as follows: 
</p>
        <p>
Log Name: System 
</p>
        <p>
Source: Microsoft-Windows-WAS 
</p>
        <p>
Date: 8/18/2008 2:24:10 PM 
</p>
        <p>
Event ID: 5189 
</p>
        <p>
Task Category: None 
</p>
        <p>
Level: Error 
</p>
        <p>
Keywords: Classic 
</p>
        <p>
User: N/A 
</p>
        <p>
Computer: xxxx 
</p>
        <p>
Description: 
</p>
        <p>
The Windows Process Activation Service failed to generate an application pool config
file for application pool '*'. The error type is '0'. To resolve this issue, please
ensure that the applicationhost.config file is correct and recommit the last configuration
changes made. The data field contains the error number. 
</p>
        <p>
Event Xml: 
</p>
        <p>
&lt;Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"&gt; 
</p>
        <p>
&lt;System&gt; 
</p>
        <p>
&lt;Provider Name="Microsoft-Windows-WAS" Guid="{524B5D04-133C-4A62-8362-64E8EDB9CE40}"
EventSourceName="WAS" /&gt; 
</p>
        <p>
&lt;EventID Qualifiers="49152"&gt;5189&lt;/EventID&gt; 
</p>
        <p>
&lt;Version&gt;0&lt;/Version&gt; 
</p>
        <p>
&lt;Level&gt;2&lt;/Level&gt; 
</p>
        <p>
&lt;Task&gt;0&lt;/Task&gt; 
</p>
        <p>
&lt;Opcode&gt;0&lt;/Opcode&gt; 
</p>
        <p>
&lt;Keywords&gt;0x80000000000000&lt;/Keywords&gt; 
</p>
        <p>
&lt;TimeCreated SystemTime="2008-08-18T19:24:10.000Z" /&gt; 
</p>
        <p>
&lt;EventRecordID&gt;79948&lt;/EventRecordID&gt; 
</p>
        <p>
&lt;Correlation /&gt; 
</p>
        <p>
&lt;Execution ProcessID="0" ThreadID="0" /&gt; 
</p>
        <p>
&lt;Channel&gt;System&lt;/Channel&gt; 
</p>
        <p>
&lt;Computer&gt;xxxx&lt;/Computer&gt; 
</p>
        <p>
&lt;Security /&gt; 
</p>
        <p>
&lt;/System&gt; 
</p>
        <p>
&lt;EventData&gt; 
</p>
        <p>
&lt;Data Name="AppPoolID"&gt;*&lt;/Data&gt; 
</p>
        <p>
&lt;Data Name="ErrorType"&gt;0&lt;/Data&gt; 
</p>
        <p>
&lt;Binary&gt;90040780&lt;/Binary&gt; 
</p>
        <p>
&lt;/EventData&gt; 
</p>
        <p>
&lt;/Event&gt; 
</p>
        <p>
This is caused by SP1 incorrectly updating applicationHost.config. To fix, do the
following: 
</p>
        <ol>
          <li>
Open an administrative command prompt. 
</li>
          <li>
Type in: notepad %windir%\system32\inetsrv\config\applicationHost.config 
</li>
          <li>
            <div>Add this text at /configuration/configSections/sectionGroup[@name=system.applicationHost]/ 
</div>
            <p>
&lt;section name="configHistory" overrideModeDefault="Deny" /&gt; 
</p>
          </li>
          <li>
Save applicationHost.config 
</li>
          <li>
Close Notepad 
</li>
          <li>
In the administrative command prompt, type in: iisreset /start 
</li>
        </ol>
        <p>
For reference, the sectionGroup in applicationHost.config should look like this: 
</p>
        <p>
&lt;sectionGroup name="system.applicationHost"&gt; 
</p>
        <p>
&lt;section name="applicationPools" allowDefinition="AppHostOnly" overrideModeDefault="Deny"
/&gt; 
</p>
        <p>
&lt;section name="customMetadata" allowDefinition="AppHostOnly" overrideModeDefault="Deny"
/&gt; 
</p>
        <p>
&lt;section name="listenerAdapters" allowDefinition="AppHostOnly" overrideModeDefault="Deny"
/&gt; 
</p>
        <p>
&lt;section name="log" allowDefinition="AppHostOnly" overrideModeDefault="Deny" /&gt; 
</p>
        <p>
&lt;section name="sites" allowDefinition="AppHostOnly" overrideModeDefault="Deny"
/&gt; 
</p>
        <p>
&lt;section name="webLimits" allowDefinition="AppHostOnly" overrideModeDefault="Deny"
/&gt; 
</p>
        <p>
          <span style="background-color:yellow">&lt;section name="configHistory" overrideModeDefault="Deny"
/&gt;</span>
        </p>
        <p>
&lt;/sectionGroup&gt; 
</p>
        <p>
The original source of some of this information is: <a href="http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=2859933&amp;SiteID=17">http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=2859933&amp;SiteID=17</a>. 
</p>
        <img width="0" height="0" src="http://www.scottseely.com/Blog/aggbug.ashx?id=6aef2bfb-eb10-4641-83f0-1bd53d857816" />
        <br />
        <hr />
Visit my site, http://www.scottseely.com/.</body>
      <title>Visual Studio 2008 SP1 causes IIS/WAS to Fail to Start</title>
      <guid isPermaLink="false">http://www.scottseely.com/Blog/PermaLink,guid,6aef2bfb-eb10-4641-83f0-1bd53d857816.aspx</guid>
      <link>http://www.scottseely.com/Blog/2008/08/18/VisualStudio2008SP1CausesIISWASToFailToStart.aspx</link>
      <pubDate>Mon, 18 Aug 2008 19:39:44 GMT</pubDate>
      <description>&lt;p&gt;
I found this in the forums, but it wasn't super easy to dig out. Hopefully, this post
will help someone find things a bit easier. 
&lt;/p&gt;
&lt;p&gt;
Symptoms: You can't access a site on local IIS after installing Visual Studio 2008
IIS on Vista or later. 
&lt;/p&gt;
&lt;p&gt;
Event log at Windows Logs\System will have an entry that reads as follows: 
&lt;/p&gt;
&lt;p&gt;
Log Name: System 
&lt;/p&gt;
&lt;p&gt;
Source: Microsoft-Windows-WAS 
&lt;/p&gt;
&lt;p&gt;
Date: 8/18/2008 2:24:10 PM 
&lt;/p&gt;
&lt;p&gt;
Event ID: 5189 
&lt;/p&gt;
&lt;p&gt;
Task Category: None 
&lt;/p&gt;
&lt;p&gt;
Level: Error 
&lt;/p&gt;
&lt;p&gt;
Keywords: Classic 
&lt;/p&gt;
&lt;p&gt;
User: N/A 
&lt;/p&gt;
&lt;p&gt;
Computer: xxxx 
&lt;/p&gt;
&lt;p&gt;
Description: 
&lt;/p&gt;
&lt;p&gt;
The Windows Process Activation Service failed to generate an application pool config
file for application pool '*'. The error type is '0'. To resolve this issue, please
ensure that the applicationhost.config file is correct and recommit the last configuration
changes made. The data field contains the error number. 
&lt;/p&gt;
&lt;p&gt;
Event Xml: 
&lt;/p&gt;
&lt;p&gt;
&amp;lt;Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;lt;System&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;lt;Provider Name="Microsoft-Windows-WAS" Guid="{524B5D04-133C-4A62-8362-64E8EDB9CE40}"
EventSourceName="WAS" /&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;lt;EventID Qualifiers="49152"&amp;gt;5189&amp;lt;/EventID&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;lt;Version&amp;gt;0&amp;lt;/Version&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;lt;Level&amp;gt;2&amp;lt;/Level&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;lt;Task&amp;gt;0&amp;lt;/Task&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;lt;Opcode&amp;gt;0&amp;lt;/Opcode&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;lt;Keywords&amp;gt;0x80000000000000&amp;lt;/Keywords&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;lt;TimeCreated SystemTime="2008-08-18T19:24:10.000Z" /&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;lt;EventRecordID&amp;gt;79948&amp;lt;/EventRecordID&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;lt;Correlation /&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;lt;Execution ProcessID="0" ThreadID="0" /&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;lt;Channel&amp;gt;System&amp;lt;/Channel&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;lt;Computer&amp;gt;xxxx&amp;lt;/Computer&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;lt;Security /&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;lt;/System&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;lt;EventData&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;lt;Data Name="AppPoolID"&amp;gt;*&amp;lt;/Data&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;lt;Data Name="ErrorType"&amp;gt;0&amp;lt;/Data&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;lt;Binary&amp;gt;90040780&amp;lt;/Binary&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;lt;/EventData&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;lt;/Event&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
This is caused by SP1 incorrectly updating applicationHost.config. To fix, do the
following: 
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Open an administrative command prompt. 
&lt;/li&gt;
&lt;li&gt;
Type in: notepad %windir%\system32\inetsrv\config\applicationHost.config 
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Add this text at /configuration/configSections/sectionGroup[@name=system.applicationHost]/ 
&lt;/div&gt;
&lt;p&gt;
&amp;lt;section name="configHistory" overrideModeDefault="Deny" /&amp;gt; 
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
Save applicationHost.config 
&lt;/li&gt;
&lt;li&gt;
Close Notepad 
&lt;/li&gt;
&lt;li&gt;
In the administrative command prompt, type in: iisreset /start 
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
For reference, the sectionGroup in applicationHost.config should look like this: 
&lt;/p&gt;
&lt;p&gt;
&amp;lt;sectionGroup name="system.applicationHost"&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;lt;section name="applicationPools" allowDefinition="AppHostOnly" overrideModeDefault="Deny"
/&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;lt;section name="customMetadata" allowDefinition="AppHostOnly" overrideModeDefault="Deny"
/&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;lt;section name="listenerAdapters" allowDefinition="AppHostOnly" overrideModeDefault="Deny"
/&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;lt;section name="log" allowDefinition="AppHostOnly" overrideModeDefault="Deny" /&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;lt;section name="sites" allowDefinition="AppHostOnly" overrideModeDefault="Deny"
/&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;lt;section name="webLimits" allowDefinition="AppHostOnly" overrideModeDefault="Deny"
/&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
&lt;span style="background-color:yellow"&gt;&amp;lt;section name="configHistory" overrideModeDefault="Deny"
/&amp;gt;&lt;/span&gt; 
&lt;/p&gt;
&lt;p&gt;
&amp;lt;/sectionGroup&amp;gt; 
&lt;/p&gt;
&lt;p&gt;
The original source of some of this information is: &lt;a href="http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=2859933&amp;amp;SiteID=17"&gt;http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=2859933&amp;amp;SiteID=17&lt;/a&gt;. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.scottseely.com/Blog/aggbug.ashx?id=6aef2bfb-eb10-4641-83f0-1bd53d857816" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Visit my site, http://www.scottseely.com/.</description>
      <comments>http://www.scottseely.com/Blog/CommentView,guid,6aef2bfb-eb10-4641-83f0-1bd53d857816.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.scottseely.com/Blog/Trackback.aspx?guid=7edfba8a-dda3-4bf4-b564-78e2a5b1c622</trackback:ping>
      <pingback:server>http://www.scottseely.com/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.scottseely.com/Blog/PermaLink,guid,7edfba8a-dda3-4bf4-b564-78e2a5b1c622.aspx</pingback:target>
      <dc:creator>Scott Seely</dc:creator>
      <wfw:comment>http://www.scottseely.com/Blog/CommentView,guid,7edfba8a-dda3-4bf4-b564-78e2a5b1c622.aspx</wfw:comment>
      <wfw:commentRss>http://www.scottseely.com/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=7edfba8a-dda3-4bf4-b564-78e2a5b1c622</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.cnug.org">CNUG.org</a> sent this to me, and I'm passing it on
as a member of <a href="http://www.lcnug.org/">LCNUG.org</a>. This will be a lot of
fun for Chicago area developers! 
</p>
        <p>
          <strong>What</strong>: Chicago Day of Dot Net/Chicago Tech Fest (Name to be decided) 
</p>
        <p>
          <strong>When</strong>: September 6<sup>th</sup> 2008 – 8:30 am – 5:00 pm 
</p>
        <p>
          <strong>Where</strong>: Wheaton IIT 
</p>
        <p>
          <strong>Overview </strong>
        </p>
        <p>
The Chicago area .Net based users groups are looking for speakers for our forth coming
conference on September 6th. 
</p>
        <p>
This is a one day event that will be hosted by located at The Illinois Institute of
Technology (IIT) Wheaton Campus and is a free, community based event. This means we
are looking for both seasoned speakers as well as ones trying to get their feet wet.
Our sessions will last between 1 – 1.5 hours and are meant to teach and enlighten
the audience. 
</p>
        <p>
We are in process of planning a great day of learning and we need your help. We are
looking for energetic, charismatic, passionate and engaging speakers. If this is you,
we want you to help us out. We need your passion towards software development to fill
our session slots. We are planning on having 5-6 tracks with 5 sessions per track
(25-30 total sessions). 
</p>
        <p>
Possible areas of interested are 
<br />
.Net based technologies (Linq, .Net 3.5, Asp.Net, Smart Client, MVC) 
</p>
        <p>
Agile techniques (TDD, BDD, DDD, CI) 
</p>
        <p>
MOSS/Sharepoint 
</p>
        <p>
User Experience 
</p>
        <p>
Biztalk 
</p>
        <p>
XNA 
</p>
        <p>
TFS 
</p>
        <p>
If you are someone who would like to present, please send the following information
to Keith Franklin (<a href="mailto:KeithF@Magenic.com">KeithF@Magenic.com</a>). 
</p>
        <p>
Your Name 
</p>
        <p>
Company 
</p>
        <p>
Email 
</p>
        <p>
Phone: 
</p>
        <p>
Session Name 
</p>
        <p>
Session Abstraction
</p>
        <img width="0" height="0" src="http://www.scottseely.com/Blog/aggbug.ashx?id=7edfba8a-dda3-4bf4-b564-78e2a5b1c622" />
        <br />
        <hr />
Visit my site, http://www.scottseely.com/.</body>
      <title>Chicago Area .NET User Groups Call for Speakers</title>
      <guid isPermaLink="false">http://www.scottseely.com/Blog/PermaLink,guid,7edfba8a-dda3-4bf4-b564-78e2a5b1c622.aspx</guid>
      <link>http://www.scottseely.com/Blog/2008/06/25/ChicagoAreaNETUserGroupsCallForSpeakers.aspx</link>
      <pubDate>Wed, 25 Jun 2008 23:34:34 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.cnug.org"&gt;CNUG.org&lt;/a&gt; sent this to me, and I'm passing it on
as a member of &lt;a href="http://www.lcnug.org/"&gt;LCNUG.org&lt;/a&gt;. This will be a lot of
fun for Chicago area developers! 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;What&lt;/strong&gt;: Chicago Day of Dot Net/Chicago Tech Fest (Name to be decided) 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;When&lt;/strong&gt;: September 6&lt;sup&gt;th&lt;/sup&gt; 2008 – 8:30 am – 5:00 pm 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Where&lt;/strong&gt;: Wheaton IIT 
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Overview &lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
The Chicago area .Net based users groups are looking for speakers for our forth coming
conference on September 6th. 
&lt;/p&gt;
&lt;p&gt;
This is a one day event that will be hosted by located at The Illinois Institute of
Technology (IIT) Wheaton Campus and is a free, community based event. This means we
are looking for both seasoned speakers as well as ones trying to get their feet wet.
Our sessions will last between 1 – 1.5 hours and are meant to teach and enlighten
the audience. 
&lt;/p&gt;
&lt;p&gt;
We are in process of planning a great day of learning and we need your help. We are
looking for energetic, charismatic, passionate and engaging speakers. If this is you,
we want you to help us out. We need your passion towards software development to fill
our session slots. We are planning on having 5-6 tracks with 5 sessions per track
(25-30 total sessions). 
&lt;/p&gt;
&lt;p&gt;
Possible areas of interested are 
&lt;br /&gt;
.Net based technologies (Linq, .Net 3.5, Asp.Net, Smart Client, MVC) 
&lt;/p&gt;
&lt;p&gt;
Agile techniques (TDD, BDD, DDD, CI) 
&lt;/p&gt;
&lt;p&gt;
MOSS/Sharepoint 
&lt;/p&gt;
&lt;p&gt;
User Experience 
&lt;/p&gt;
&lt;p&gt;
Biztalk 
&lt;/p&gt;
&lt;p&gt;
XNA 
&lt;/p&gt;
&lt;p&gt;
TFS 
&lt;/p&gt;
&lt;p&gt;
If you are someone who would like to present, please send the following information
to Keith Franklin (&lt;a href="mailto:KeithF@Magenic.com"&gt;KeithF@Magenic.com&lt;/a&gt;). 
&lt;/p&gt;
&lt;p&gt;
Your Name 
&lt;/p&gt;
&lt;p&gt;
Company 
&lt;/p&gt;
&lt;p&gt;
Email 
&lt;/p&gt;
&lt;p&gt;
Phone: 
&lt;/p&gt;
&lt;p&gt;
Session Name 
&lt;/p&gt;
&lt;p&gt;
Session Abstraction
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.scottseely.com/Blog/aggbug.ashx?id=7edfba8a-dda3-4bf4-b564-78e2a5b1c622" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Visit my site, http://www.scottseely.com/.</description>
      <comments>http://www.scottseely.com/Blog/CommentView,guid,7edfba8a-dda3-4bf4-b564-78e2a5b1c622.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.scottseely.com/Blog/Trackback.aspx?guid=09036f22-0908-4321-9489-afabcc166969</trackback:ping>
      <pingback:server>http://www.scottseely.com/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.scottseely.com/Blog/PermaLink,guid,09036f22-0908-4321-9489-afabcc166969.aspx</pingback:target>
      <dc:creator>Scott Seely</dc:creator>
      <wfw:comment>http://www.scottseely.com/Blog/CommentView,guid,09036f22-0908-4321-9489-afabcc166969.aspx</wfw:comment>
      <wfw:commentRss>http://www.scottseely.com/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=09036f22-0908-4321-9489-afabcc166969</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
My wife and I have had ideas for different ventures over the years. Because we always
had a youngster in the house and not in school, we focused a lot on making the years
before school started as happy years. This Fall, our youngest enters full day Kindergarten
in Lake Villa, IL. This means that Mom and I will finally be able to get one or two
of these ideas off the ground. We like the idea of an arrangement where I act as Architect
on most projects and as a developer as needed. To this end, we are launching Friseton.com.
Jean and I got to name the titles we wanted. She's the president of the company. She's
been in charge of running the household for the last 13 years, so this title just
seems right. I always liked the idea of a Chief Software Architect. Bill Gates gave
himself that title when he stepped down as Microsoft's CEO. 
</p>
        <p>
This doesn't mean I get to quit my day job. We don't have the resources to do this
and, quite frankly, I don't know that any of our ideas will ever generate that kind
of income. We are hoping for something that will generate enough revenue to pay expenses
and allow us to save for a more comfortable retirement. The current crop of ideas
centers around things we would like to make available to charities so that they can
run more efficiently. We are on the committees for a few different charities and know
what we wish we had access to for coordination and collaboration. Our goal is to make
something that helps all the issues one runs into and charge enough to make the services
generate a positive cash flow within 18 months of our initial deployment. If annual
net revenue ever got to $50,000 US, we'd be thrilled. 
</p>
        <p>
I'll post news and update as we progress. Right now, Jean and I are learning SilverLight
2.0. She's quite a bit ahead of me on this one, so it's likely she'll handle the UI
portion of the site. You can check out where we are at by keeping tabs on <a href="http://www.friseton.com">www.friseton.com</a>.
If you subscribe to this blog, I promise that I'll post updates as we make progress.
At this point, the site represents a total of 60 minutes time in Powerpoint (to generate
the banner) and VS 2008. 
</p>
        <p>
The site is hosted over at <a href="http://www.crystaltech.com">www.crystaltech.com</a>.
We have a developer account setup now. I have to say that I really like the admin
tools they have. This is far better than others I have used. That said, I've only
hosted through <a href="http://www.verio.com">Verio</a> and <a href="http://www.godaddy.com">GoDaddy</a>.
Verio and GoDaddy were ok. CrystalTech has developed a web interface that is extremely
easy to navigate. I've read almost no documentation and figured out how to setup e-mail
accounts, FTP, etc. I like the fact that I don't have to think too hard in order to
get stuff working. 
</p>
        <img width="0" height="0" src="http://www.scottseely.com/Blog/aggbug.ashx?id=09036f22-0908-4321-9489-afabcc166969" />
        <br />
        <hr />
Visit my site, http://www.scottseely.com/.</body>
      <title>New venture starting up</title>
      <guid isPermaLink="false">http://www.scottseely.com/Blog/PermaLink,guid,09036f22-0908-4321-9489-afabcc166969.aspx</guid>
      <link>http://www.scottseely.com/Blog/2008/06/21/NewVentureStartingUp.aspx</link>
      <pubDate>Sat, 21 Jun 2008 19:14:10 GMT</pubDate>
      <description>&lt;p&gt;
My wife and I have had ideas for different ventures over the years. Because we always
had a youngster in the house and not in school, we focused a lot on making the years
before school started as happy years. This Fall, our youngest enters full day Kindergarten
in Lake Villa, IL. This means that Mom and I will finally be able to get one or two
of these ideas off the ground. We like the idea of an arrangement where I act as Architect
on most projects and as a developer as needed. To this end, we are launching Friseton.com.
Jean and I got to name the titles we wanted. She's the president of the company. She's
been in charge of running the household for the last 13 years, so this title just
seems right. I always liked the idea of a Chief Software Architect. Bill Gates gave
himself that title when he stepped down as Microsoft's CEO. 
&lt;/p&gt;
&lt;p&gt;
This doesn't mean I get to quit my day job. We don't have the resources to do this
and, quite frankly, I don't know that any of our ideas will ever generate that kind
of income. We are hoping for something that will generate enough revenue to pay expenses
and allow us to save for a more comfortable retirement. The current crop of ideas
centers around things we would like to make available to charities so that they can
run more efficiently. We are on the committees for a few different charities and know
what we wish we had access to for coordination and collaboration. Our goal is to make
something that helps all the issues one runs into and charge enough to make the services
generate a positive cash flow within 18 months of our initial deployment. If annual
net revenue ever got to $50,000 US, we'd be thrilled. 
&lt;/p&gt;
&lt;p&gt;
I'll post news and update as we progress. Right now, Jean and I are learning SilverLight
2.0. She's quite a bit ahead of me on this one, so it's likely she'll handle the UI
portion of the site. You can check out where we are at by keeping tabs on &lt;a href="http://www.friseton.com"&gt;www.friseton.com&lt;/a&gt;.
If you subscribe to this blog, I promise that I'll post updates as we make progress.
At this point, the site represents a total of 60 minutes time in Powerpoint (to generate
the banner) and VS 2008. 
&lt;/p&gt;
&lt;p&gt;
The site is hosted over at &lt;a href="http://www.crystaltech.com"&gt;www.crystaltech.com&lt;/a&gt;.
We have a developer account setup now. I have to say that I really like the admin
tools they have. This is far better than others I have used. That said, I've only
hosted through &lt;a href="http://www.verio.com"&gt;Verio&lt;/a&gt; and &lt;a href="http://www.godaddy.com"&gt;GoDaddy&lt;/a&gt;.
Verio and GoDaddy were ok. CrystalTech has developed a web interface that is extremely
easy to navigate. I've read almost no documentation and figured out how to setup e-mail
accounts, FTP, etc. I like the fact that I don't have to think too hard in order to
get stuff working. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.scottseely.com/Blog/aggbug.ashx?id=09036f22-0908-4321-9489-afabcc166969" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Visit my site, http://www.scottseely.com/.</description>
      <comments>http://www.scottseely.com/Blog/CommentView,guid,09036f22-0908-4321-9489-afabcc166969.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.scottseely.com/Blog/Trackback.aspx?guid=e229fd3d-5063-42d7-878b-17b9c029dc8f</trackback:ping>
      <pingback:server>http://www.scottseely.com/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.scottseely.com/Blog/PermaLink,guid,e229fd3d-5063-42d7-878b-17b9c029dc8f.aspx</pingback:target>
      <dc:creator>Scott Seely</dc:creator>
      <wfw:comment>http://www.scottseely.com/Blog/CommentView,guid,e229fd3d-5063-42d7-878b-17b9c029dc8f.aspx</wfw:comment>
      <wfw:commentRss>http://www.scottseely.com/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=e229fd3d-5063-42d7-878b-17b9c029dc8f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Tonight, I ran into a scenario where adding the SqlTrackingService to my WorkflowRuntime
set of services caused the completion of a simple workflow to hang. To diagnose, I
instructed Visual Studio to break when exceptions were thrown. With this, I was treated
to a break in System.Data.Sql.SqlConnection.OnError. The SqlException being thrown
stated "MSDTC on server '<em>[machine name]</em>' is unavailable." If you look, you'll
see that MSDTC is a manual start service on Vista. To fix this issue, just start MSDTC
in the Services Control Panel applet and run your workflow code again. You'll be treated
to full tracing at this point.
</p>
        <img width="0" height="0" src="http://www.scottseely.com/Blog/aggbug.ashx?id=e229fd3d-5063-42d7-878b-17b9c029dc8f" />
        <br />
        <hr />
Visit my site, http://www.scottseely.com/.</body>
      <title>SqlTrackingService Doesn’t Work on Windows Vista</title>
      <guid isPermaLink="false">http://www.scottseely.com/Blog/PermaLink,guid,e229fd3d-5063-42d7-878b-17b9c029dc8f.aspx</guid>
      <link>http://www.scottseely.com/Blog/2008/06/16/SqlTrackingServiceDoesntWorkOnWindowsVista.aspx</link>
      <pubDate>Mon, 16 Jun 2008 00:48:00 GMT</pubDate>
      <description>&lt;p&gt;
Tonight, I ran into a scenario where adding the SqlTrackingService to my WorkflowRuntime
set of services caused the completion of a simple workflow to hang. To diagnose, I
instructed Visual Studio to break when exceptions were thrown. With this, I was treated
to a break in System.Data.Sql.SqlConnection.OnError. The SqlException being thrown
stated "MSDTC on server '&lt;em&gt;[machine name]&lt;/em&gt;' is unavailable." If you look, you'll
see that MSDTC is a manual start service on Vista. To fix this issue, just start MSDTC
in the Services Control Panel applet and run your workflow code again. You'll be treated
to full tracing at this point.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.scottseely.com/Blog/aggbug.ashx?id=e229fd3d-5063-42d7-878b-17b9c029dc8f" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Visit my site, http://www.scottseely.com/.</description>
      <comments>http://www.scottseely.com/Blog/CommentView,guid,e229fd3d-5063-42d7-878b-17b9c029dc8f.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.scottseely.com/Blog/Trackback.aspx?guid=9208990b-a4ae-444d-81f6-246a42218c5f</trackback:ping>
      <pingback:server>http://www.scottseely.com/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.scottseely.com/Blog/PermaLink,guid,9208990b-a4ae-444d-81f6-246a42218c5f.aspx</pingback:target>
      <dc:creator>Scott Seely</dc:creator>
      <wfw:comment>http://www.scottseely.com/Blog/CommentView,guid,9208990b-a4ae-444d-81f6-246a42218c5f.aspx</wfw:comment>
      <wfw:commentRss>http://www.scottseely.com/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=9208990b-a4ae-444d-81f6-246a42218c5f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Some friends recently saw my <a href="http://www.scottseely.com/Downloads/Scott%20Seely-%20resume.pdf">resume</a> and
asked about the 40+ languages that I claim to have written code in. Essentially, they
asked why I have that claim and questioned if it was even factual. I have that claim
because many employers want someone who knows 'Special Language X' in addition to
all the other qualifications. In any interview, I usually explain this as follows:
"I want to make it clear that no matter what odd wrinkle you have in your system,
I know enough about languages and programming in general to tackle your special case." 
</p>
        <p>
Still, 40 sounds like a big number. How, exactly, did I arrive at that figure? First
off, understand that many of the languages I have programmed in have had little more
than two weeks of the following: 
</p>
        <ol style="margin-left: 38pt">
          <li>
Learn the language. This involves finding a good tutorial and burning a day getting
conversant. The language choice was frequently driven by either class work, larger
system requirements, or "this looks like fun". 
</li>
          <li>
Write the application. Again, this might be "deliver a PHP web page," an assignment,
or an interesting experiment. 
</li>
          <li>
Deliver the application. 
</li>
        </ol>
        <p>
I have used enough of these to know that learning a new language is something that
one can do in a day or two. Mastering a new language and its toolset still takes some
serious time—I would guess about 3000 hours of full time use prototyping, developing
and debugging in that language. Many folks tend to learn a language by learning just
enough to get by. In mastery, I would say that the person also actively tries to understand
the language grammar, libraries, and how the language interacts with the systems it
runs on. 3000 hours just getting stuff done will not allow for mastery. 
</p>
        <p>
With that in mind, I've probably only mastered a handful of languages: 
</p>
        <ol>
          <li>
C 
</li>
          <li>
C++ 
</li>
          <li>
C# 
</li>
          <li>
Visual Basic (3.0<span style="font-family:Wingdings">à</span>6.0) 
</li>
        </ol>
        <p>
For another set of languages, I'm just at the intermediate level. I define the intermediate
level as this: the user can write moderately complex systems with minimal access to
reference material. Code can be debugged, augmented, and generally 'read' with little
to no difficulty. This encompasses a larger set of languages—some of which are cheating
but included since I see so many places where things like each XML technology counts
as a separate 'language': 
</p>
        <ol>
          <li>
Ada 
</li>
          <li>
ASP 
</li>
          <li>
ASP.NET 
</li>
          <li>
Basic (think QBasic and its relatives) 
</li>
          <li>
COBOL 
</li>
          <li>
DOS Batch programming 
</li>
          <li>
EcmaScript/JavaScript 
</li>
          <li>
FORTRAN 
</li>
          <li>
HTML 
</li>
          <li>
Java 
</li>
          <li>
Ladder Logic (programming Programmable Logic Controllers/PLCs) 
</li>
          <li>
SQL 
</li>
          <li>
Visual Basic.NET 
</li>
          <li>
WSDL 
</li>
          <li>
x86 Assembler 
</li>
          <li>
XML 
</li>
          <li>
XPath 
</li>
          <li>
XQuery 
</li>
          <li>
XSD 
</li>
        </ol>
        <p>
Finally, there are the languages I'm a beginner in. Let's define beginner as a language
one can read and write with the assistance of the Internet and a good reference book.
At some point, I have written at least a small application (~2 weeks of effort) in
these languages: 
</p>
        <ol>
          <li>
LISP 
</li>
          <li>
MSIL 
</li>
          <li>
Bash shell 
</li>
          <li>
Eiffel 
</li>
          <li>
F# 
</li>
          <li>
Forth 
</li>
          <li>
FoxPro 
</li>
          <li>
Haskell 
</li>
          <li>
HyperTalk 
</li>
          <li>
JCL 
</li>
          <li>
Logo 
</li>
          <li>
Mathematica 
</li>
          <li>
Motorola Assembly 
</li>
          <li>
Objective C 
</li>
          <li>
OCaml 
</li>
          <li>
Pascal 
</li>
          <li>
Perl 
</li>
          <li>
PHP 
</li>
          <li>
PL/1 
</li>
          <li>
PowerShell 
</li>
          <li>
Prolog 
</li>
          <li>
Python 
</li>
          <li>
Ruby 
</li>
          <li>
Simula 
</li>
          <li>
SmallTalk 
</li>
        </ol>
        <p>
Is this a long list? Sure. But I also know of many folks who know far more than this.
Consider any language designer or language geek. Many of these folks have actually
mastered more languages than I've gotten to beginner on. 
</p>
        <p>
Finally, I want to take note of one recent observation. In the past 5 years, I have
slowed down the pace at which I learn new languages. This is happening largely because
C# and .NET are providing many of the facilities I would normally need to be more
productive. C# 3.0 has added functional language features in the form of LINQ. Its
libraries are surprisingly rich. .NET provides so many other features that I'm finding
that its pace of innovation is keeping me busy enough without needing to look elsewhere
to get the productivity gains I used to look for in other languages. .NET adds wonderful
libraries, language features, and more at such a pace that I don't have time for learning
language X when technologies like WPF and WF are beckoning to me.
</p>
        <img width="0" height="0" src="http://www.scottseely.com/Blog/aggbug.ashx?id=9208990b-a4ae-444d-81f6-246a42218c5f" />
        <br />
        <hr />
Visit my site, http://www.scottseely.com/.</body>
      <title>Languages that I have used</title>
      <guid isPermaLink="false">http://www.scottseely.com/Blog/PermaLink,guid,9208990b-a4ae-444d-81f6-246a42218c5f.aspx</guid>
      <link>http://www.scottseely.com/Blog/2008/06/14/LanguagesThatIHaveUsed.aspx</link>
      <pubDate>Sat, 14 Jun 2008 19:42:30 GMT</pubDate>
      <description>&lt;p&gt;
Some friends recently saw my &lt;a href="http://www.scottseely.com/Downloads/Scott%20Seely-%20resume.pdf"&gt;resume&lt;/a&gt; and
asked about the 40+ languages that I claim to have written code in. Essentially, they
asked why I have that claim and questioned if it was even factual. I have that claim
because many employers want someone who knows 'Special Language X' in addition to
all the other qualifications. In any interview, I usually explain this as follows:
"I want to make it clear that no matter what odd wrinkle you have in your system,
I know enough about languages and programming in general to tackle your special case." 
&lt;/p&gt;
&lt;p&gt;
Still, 40 sounds like a big number. How, exactly, did I arrive at that figure? First
off, understand that many of the languages I have programmed in have had little more
than two weeks of the following: 
&lt;/p&gt;
&lt;ol style="margin-left: 38pt"&gt;
&lt;li&gt;
Learn the language. This involves finding a good tutorial and burning a day getting
conversant. The language choice was frequently driven by either class work, larger
system requirements, or "this looks like fun". 
&lt;/li&gt;
&lt;li&gt;
Write the application. Again, this might be "deliver a PHP web page," an assignment,
or an interesting experiment. 
&lt;/li&gt;
&lt;li&gt;
Deliver the application. 
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
I have used enough of these to know that learning a new language is something that
one can do in a day or two. Mastering a new language and its toolset still takes some
serious time—I would guess about 3000 hours of full time use prototyping, developing
and debugging in that language. Many folks tend to learn a language by learning just
enough to get by. In mastery, I would say that the person also actively tries to understand
the language grammar, libraries, and how the language interacts with the systems it
runs on. 3000 hours just getting stuff done will not allow for mastery. 
&lt;/p&gt;
&lt;p&gt;
With that in mind, I've probably only mastered a handful of languages: 
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
C 
&lt;/li&gt;
&lt;li&gt;
C++ 
&lt;/li&gt;
&lt;li&gt;
C# 
&lt;/li&gt;
&lt;li&gt;
Visual Basic (3.0&lt;span style="font-family:Wingdings"&gt;à&lt;/span&gt;6.0) 
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
For another set of languages, I'm just at the intermediate level. I define the intermediate
level as this: the user can write moderately complex systems with minimal access to
reference material. Code can be debugged, augmented, and generally 'read' with little
to no difficulty. This encompasses a larger set of languages—some of which are cheating
but included since I see so many places where things like each XML technology counts
as a separate 'language': 
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Ada 
&lt;/li&gt;
&lt;li&gt;
ASP 
&lt;/li&gt;
&lt;li&gt;
ASP.NET 
&lt;/li&gt;
&lt;li&gt;
Basic (think QBasic and its relatives) 
&lt;/li&gt;
&lt;li&gt;
COBOL 
&lt;/li&gt;
&lt;li&gt;
DOS Batch programming 
&lt;/li&gt;
&lt;li&gt;
EcmaScript/JavaScript 
&lt;/li&gt;
&lt;li&gt;
FORTRAN 
&lt;/li&gt;
&lt;li&gt;
HTML 
&lt;/li&gt;
&lt;li&gt;
Java 
&lt;/li&gt;
&lt;li&gt;
Ladder Logic (programming Programmable Logic Controllers/PLCs) 
&lt;/li&gt;
&lt;li&gt;
SQL 
&lt;/li&gt;
&lt;li&gt;
Visual Basic.NET 
&lt;/li&gt;
&lt;li&gt;
WSDL 
&lt;/li&gt;
&lt;li&gt;
x86 Assembler 
&lt;/li&gt;
&lt;li&gt;
XML 
&lt;/li&gt;
&lt;li&gt;
XPath 
&lt;/li&gt;
&lt;li&gt;
XQuery 
&lt;/li&gt;
&lt;li&gt;
XSD 
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Finally, there are the languages I'm a beginner in. Let's define beginner as a language
one can read and write with the assistance of the Internet and a good reference book.
At some point, I have written at least a small application (~2 weeks of effort) in
these languages: 
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
LISP 
&lt;/li&gt;
&lt;li&gt;
MSIL 
&lt;/li&gt;
&lt;li&gt;
Bash shell 
&lt;/li&gt;
&lt;li&gt;
Eiffel 
&lt;/li&gt;
&lt;li&gt;
F# 
&lt;/li&gt;
&lt;li&gt;
Forth 
&lt;/li&gt;
&lt;li&gt;
FoxPro 
&lt;/li&gt;
&lt;li&gt;
Haskell 
&lt;/li&gt;
&lt;li&gt;
HyperTalk 
&lt;/li&gt;
&lt;li&gt;
JCL 
&lt;/li&gt;
&lt;li&gt;
Logo 
&lt;/li&gt;
&lt;li&gt;
Mathematica 
&lt;/li&gt;
&lt;li&gt;
Motorola Assembly 
&lt;/li&gt;
&lt;li&gt;
Objective C 
&lt;/li&gt;
&lt;li&gt;
OCaml 
&lt;/li&gt;
&lt;li&gt;
Pascal 
&lt;/li&gt;
&lt;li&gt;
Perl 
&lt;/li&gt;
&lt;li&gt;
PHP 
&lt;/li&gt;
&lt;li&gt;
PL/1 
&lt;/li&gt;
&lt;li&gt;
PowerShell 
&lt;/li&gt;
&lt;li&gt;
Prolog 
&lt;/li&gt;
&lt;li&gt;
Python 
&lt;/li&gt;
&lt;li&gt;
Ruby 
&lt;/li&gt;
&lt;li&gt;
Simula 
&lt;/li&gt;
&lt;li&gt;
SmallTalk 
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Is this a long list? Sure. But I also know of many folks who know far more than this.
Consider any language designer or language geek. Many of these folks have actually
mastered more languages than I've gotten to beginner on. 
&lt;/p&gt;
&lt;p&gt;
Finally, I want to take note of one recent observation. In the past 5 years, I have
slowed down the pace at which I learn new languages. This is happening largely because
C# and .NET are providing many of the facilities I would normally need to be more
productive. C# 3.0 has added functional language features in the form of LINQ. Its
libraries are surprisingly rich. .NET provides so many other features that I'm finding
that its pace of innovation is keeping me busy enough without needing to look elsewhere
to get the productivity gains I used to look for in other languages. .NET adds wonderful
libraries, language features, and more at such a pace that I don't have time for learning
language X when technologies like WPF and WF are beckoning to me.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.scottseely.com/Blog/aggbug.ashx?id=9208990b-a4ae-444d-81f6-246a42218c5f" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Visit my site, http://www.scottseely.com/.</description>
      <comments>http://www.scottseely.com/Blog/CommentView,guid,9208990b-a4ae-444d-81f6-246a42218c5f.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.scottseely.com/Blog/Trackback.aspx?guid=2b6aaac6-3f35-4871-b83e-d6b457d3bc8e</trackback:ping>
      <pingback:server>http://www.scottseely.com/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.scottseely.com/Blog/PermaLink,guid,2b6aaac6-3f35-4871-b83e-d6b457d3bc8e.aspx</pingback:target>
      <dc:creator>Scott Seely</dc:creator>
      <wfw:comment>http://www.scottseely.com/Blog/CommentView,guid,2b6aaac6-3f35-4871-b83e-d6b457d3bc8e.aspx</wfw:comment>
      <wfw:commentRss>http://www.scottseely.com/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=2b6aaac6-3f35-4871-b83e-d6b457d3bc8e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Every once in a while, Visual Studio 2008 will lock up on me. When it was in beta
and even after release, I ran into a situation where it put up a dialog saying "Blah
blah blah" with the options: 
</p>
        <ul>
          <li>
Switch to application 
</li>
          <li>
Continue waiting 
</li>
        </ul>
        <p>
From someone, probably either directly from <a href="http://www.wintellect.com/cs/blogs/jrobbins/default.aspx">John
Robbins</a> or via one of the many blogs he has recommended through his presentations,
I learned that this was being caused by a managed debugging assistant. Looking around
on the web, it seems that this bug has been known for quite a while. Here is the issue
and why it happens as explained by a Jim Stall from the Visual Studio team (<a href="http://blogs.msdn.com/jmstall/archive/2005/11/11/ContextSwitchDeadLock.aspx">link
to post</a>): 
</p>
        <p style="margin-left: 36pt">
          <em>It is possible for this MDA to be falsely activated when all of the following
conditions are met:<br />
* An application creates COM components from STA threads either directly or indirectly
through libraries.<br />
* The application was stopped in the debugger and the user either continued the application
or performed a step operation.<br />
*Unmanaged debugging is not enabled. </em>
        </p>
        <p style="margin-left: 36pt">
          <em>The reasoning is that:<br />
1) When you're stopped in the debugger while managed-only debugging, <a href="http://blogs.msdn.com/jmstall/archive/2005/10/04/managed_suspension.aspx">unmanaged
threads are still running</a>. This means that any unmanaged threads that are waiting
on some timeout from managed code will continue to run. The unmanaged thread will
see the timeout fire, but it won't realize that the managed thread is actually stopped
by the debugger. Thus the managed thread looks it's deadlocked. This is not an issue
when unmanaged debugging because then the timeout thread is also frozen when stopped
in the debugger, and so the timeout won't fire. </em>
        </p>
        <p style="margin-left: 36pt">
          <em>2) The finalizer for an STA COM objects needs to run code on the STA thread. So
there's some cross-thread stuff between the finalizer thread and the STA thread. </em>
        </p>
        <p style="margin-left: 36pt">
          <em>So the STA thread may be blocked by the debugger (since the whole managed process
is frozen at a breakpoint), while the timeout check (on an unmanaged thread) is still
ticking. </em>
        </p>
        <p style="margin-left: 36pt">
          <em>This is a race because it needs the finalization and debugger event to happen
at just the right windows.<br />
We assessed that this scenario as a rare situation. I'd expect you to see this only
on very rare occasions (due to prerequisite timing issues).<br />
If you are hitting this bogusly, one workaround is to disable this specific MDA. </em>
        </p>
        <p>
Let's walk you through disabling the specific MDA, since this problem still exists
and is not as rare as these guys think. I don't get the issue when debugging normally,
but I will get it when I run Visual Studio as an admin. Running Visual Studio 2008
as admin is required if you want to deploy applications straight over to the same
machine's IIS instance—something I do often enough. Note: I haven't run into this
issue in a non-admin context in several months. I think the two conditions are somehow
linked. 
</p>
        <p>
Please note—you have to run this sequence for every project. VS2008 will not remember
your settings across invocations. 
</p>
        <ol>
          <li>
With an open project, go into the menus and select Debug<span style="font-family:Wingdings">à</span>Exceptions. 
</li>
          <li>
            <div>Expand the Managed Debugging Assistants node. You will see the following screen: 
</div>
            <p>
              <img src="http://www.scottseely.com/Blog/content/binary/060708_2119_VisualStudi1.png" alt="" />
            </p>
          </li>
          <li>
Select ContextSwitchDeadlock and uncheck it. 
</li>
          <li>
Click OK. 
</li>
        </ol>
        <p>
I hope this helps a few other brave souls out there. 
</p>
        <img width="0" height="0" src="http://www.scottseely.com/Blog/aggbug.ashx?id=2b6aaac6-3f35-4871-b83e-d6b457d3bc8e" />
        <br />
        <hr />
Visit my site, http://www.scottseely.com/.</body>
      <title>Visual Studio Lockups: ContextSwitchDeadlock</title>
      <guid isPermaLink="false">http://www.scottseely.com/Blog/PermaLink,guid,2b6aaac6-3f35-4871-b83e-d6b457d3bc8e.aspx</guid>
      <link>http://www.scottseely.com/Blog/2008/06/07/VisualStudioLockupsContextSwitchDeadlock.aspx</link>
      <pubDate>Sat, 07 Jun 2008 21:19:38 GMT</pubDate>
      <description>&lt;p&gt;
Every once in a while, Visual Studio 2008 will lock up on me. When it was in beta
and even after release, I ran into a situation where it put up a dialog saying "Blah
blah blah" with the options: 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Switch to application 
&lt;/li&gt;
&lt;li&gt;
Continue waiting 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
From someone, probably either directly from &lt;a href="http://www.wintellect.com/cs/blogs/jrobbins/default.aspx"&gt;John
Robbins&lt;/a&gt; or via one of the many blogs he has recommended through his presentations,
I learned that this was being caused by a managed debugging assistant. Looking around
on the web, it seems that this bug has been known for quite a while. Here is the issue
and why it happens as explained by a Jim Stall from the Visual Studio team (&lt;a href="http://blogs.msdn.com/jmstall/archive/2005/11/11/ContextSwitchDeadLock.aspx"&gt;link
to post&lt;/a&gt;): 
&lt;/p&gt;
&lt;p style="margin-left: 36pt"&gt;
&lt;em&gt;It is possible for this MDA to be falsely activated when all of the following
conditions are met:&lt;br /&gt;
* An application creates COM components from STA threads either directly or indirectly
through libraries.&lt;br /&gt;
* The application was stopped in the debugger and the user either continued the application
or performed a step operation.&lt;br /&gt;
*Unmanaged debugging is not enabled. &lt;/em&gt;
&lt;/p&gt;
&lt;p style="margin-left: 36pt"&gt;
&lt;em&gt;The reasoning is that:&lt;br /&gt;
1) When you're stopped in the debugger while managed-only debugging, &lt;a href="http://blogs.msdn.com/jmstall/archive/2005/10/04/managed_suspension.aspx"&gt;unmanaged
threads are still running&lt;/a&gt;. This means that any unmanaged threads that are waiting
on some timeout from managed code will continue to run. The unmanaged thread will
see the timeout fire, but it won't realize that the managed thread is actually stopped
by the debugger. Thus the managed thread looks it's deadlocked. This is not an issue
when unmanaged debugging because then the timeout thread is also frozen when stopped
in the debugger, and so the timeout won't fire. &lt;/em&gt;
&lt;/p&gt;
&lt;p style="margin-left: 36pt"&gt;
&lt;em&gt;2) The finalizer for an STA COM objects needs to run code on the STA thread. So
there's some cross-thread stuff between the finalizer thread and the STA thread. &lt;/em&gt;
&lt;/p&gt;
&lt;p style="margin-left: 36pt"&gt;
&lt;em&gt;So the STA thread may be blocked by the debugger (since the whole managed process
is frozen at a breakpoint), while the timeout check (on an unmanaged thread) is still
ticking. &lt;/em&gt;
&lt;/p&gt;
&lt;p style="margin-left: 36pt"&gt;
&lt;em&gt;This is a race because it needs the finalization and debugger event to happen
at just the right windows.&lt;br /&gt;
We assessed that this scenario as a rare situation. I'd expect you to see this only
on very rare occasions (due to prerequisite timing issues).&lt;br /&gt;
If you are hitting this bogusly, one workaround is to disable this specific MDA. &lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
Let's walk you through disabling the specific MDA, since this problem still exists
and is not as rare as these guys think. I don't get the issue when debugging normally,
but I will get it when I run Visual Studio as an admin. Running Visual Studio 2008
as admin is required if you want to deploy applications straight over to the same
machine's IIS instance—something I do often enough. Note: I haven't run into this
issue in a non-admin context in several months. I think the two conditions are somehow
linked. 
&lt;/p&gt;
&lt;p&gt;
Please note—you have to run this sequence for every project. VS2008 will not remember
your settings across invocations. 
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
With an open project, go into the menus and select Debug&lt;span style="font-family:Wingdings"&gt;à&lt;/span&gt;Exceptions. 
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;Expand the Managed Debugging Assistants node. You will see the following screen: 
&lt;/div&gt;
&lt;p&gt;
&lt;img src="http://www.scottseely.com/Blog/content/binary/060708_2119_VisualStudi1.png" alt="" /&gt; 
&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
Select ContextSwitchDeadlock and uncheck it. 
&lt;/li&gt;
&lt;li&gt;
Click OK. 
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
I hope this helps a few other brave souls out there. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.scottseely.com/Blog/aggbug.ashx?id=2b6aaac6-3f35-4871-b83e-d6b457d3bc8e" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Visit my site, http://www.scottseely.com/.</description>
      <comments>http://www.scottseely.com/Blog/CommentView,guid,2b6aaac6-3f35-4871-b83e-d6b457d3bc8e.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.scottseely.com/Blog/Trackback.aspx?guid=2e469d9e-eba9-4303-a466-43c27dfc0298</trackback:ping>
      <pingback:server>http://www.scottseely.com/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.scottseely.com/Blog/PermaLink,guid,2e469d9e-eba9-4303-a466-43c27dfc0298.aspx</pingback:target>
      <dc:creator>Scott Seely</dc:creator>
      <wfw:comment>http://www.scottseely.com/Blog/CommentView,guid,2e469d9e-eba9-4303-a466-43c27dfc0298.aspx</wfw:comment>
      <wfw:commentRss>http://www.scottseely.com/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=2e469d9e-eba9-4303-a466-43c27dfc0298</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Over the past month, I've finally taken the plunge and decided to finally read those
classic technical books that everyone seems to have read (though that many have only
skimmed). I've also been reading oddball classics that are recommended by acquaintances
and folks in the know. As for the big classics that I've read since May 1: 
</p>
        <ul>
          <li>
            <a href="http://www.amazon.com/Algorithm-Design-Manual-Steve-Skiena/dp/0387948600">The
Algorithm Design Manual</a> by Steve Skiena 
</li>
          <li>
            <a href="http://www.amazon.com/Programming-Pearls-2nd-ACM-Press/dp/0201657880">Programming
Pearls</a> by Jon Bentley 
</li>
          <li>
            <a href="http://www.amazon.com/Peopleware-Productive-Projects-Teams-Second/dp/0932633439/">Peopleware</a> by
Tom DeMarco and Timothy Lister 
</li>
          <li>
            <a href="http://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/">The
Mythical Man-Month</a> by Frederick Brooks 
</li>
        </ul>
        <p>
I've also been paging through my <a href="http://www.amazon.com/Art-Computer-Programming-Volumes-Boxed/dp/0201485419/">Knuth's</a> again.
Why, oh why would I be doing this? First off, I love the act of designing systems,
writing code, and just geeking out in my chosen profession. Second, I know that I
needed to read these classics so I could stop being an architect with no grounding
in classic computer literature. I mean, I knew what the books were all about, but
that was only through someone else's eyes, not my own. So, with this journey still
in motion, what have I been learning? 
</p>
        <p>
First, I needed a refresher on my algorithms. I was able to get most of the exercises
in Programming Pearls and Skiena with a little bit of thought and some time by a compiler.
It felt good to go through Bentley's text and figure out the really advanced, best
performing solutions to many problems. It was a morale boost to see that I could still
figure this kind of thing out with just a little bit of effort. 
</p>
        <p>
From <span style="text-decoration:underline">Peopleware</span>, I took many ideas
I have for this programming shop I want to start up 'someday' and refined the heck
out of a bunch of ideas. For example, did you know that most people find performance
reviews to be demotivating? I didn't. I thought I was the oddball that hates performance
reviews and would prefer life much better if I never got another one. It turns out
that no one likes these—they are stressful. Unfortunately, I also learned some things
about businesses I've been introduced to in my area. There are a lot of poisonous
businesses out there taking a great profession and turning it into something where
you feel odd to be one of the following: 
</p>
        <ol>
          <li>
A proud, 36 year old developer. In my opinion, that's still young. Yet, many folks
in the profession stop coding much before this age. I'm SOOOO glad I'm not one of
those people. 
</li>
          <li>
Unwilling to ship because the quality bar is not only low, it doesn't exist. Apparently,
the shipping feature matters even when things aren't right. 
</li>
          <li>
Unit testing is an OLD idea. <a href="http://junit.org/">JUnit</a>, <a href="http://nunit.org/index.php">NUnit</a>,
and other unit testing tools are not new ideas. Shoot, Fred Brooks talks about unit
testing going on for IBM back in the 1950s and 1960s. And yet, I still have a really
hard time convincing folks that unit testing is important and it is an OLD idea. Unfortunately,
fixing build breaks takes time when unit tests are present. They slow down development
and make it take longer to get to the official test, file bug, fix, repeat cycle. 
</li>
        </ol>
        <p>
I find that my focus on my career is getting sharper. I'm seeing how I can make a
difference, how to achieve it without stepping on toes and hurting feelings, and I'm
seeing how fast people can be expected to change. People hate change and will only
do so slowly when you are trying to move a group. People are more willing to change
when they are being assimilated into a group—it feels better to be a part of the group
than apart from the group. (yes, the use of 'a part' and 'apart' is intentional) At
the moment, I'm trying to find a place where I can be a positive force for change
and I need to make sure that I do this at a proper speed. If you know of a development
shop that is top notch and just wants to get better, give me a call. I'd love <a href="mailto:scott@scottseely.com">to
talk to you</a> and find out what you are doing to make things happen.
</p>
        <img width="0" height="0" src="http://www.scottseely.com/Blog/aggbug.ashx?id=2e469d9e-eba9-4303-a466-43c27dfc0298" />
        <br />
        <hr />
Visit my site, http://www.scottseely.com/.</body>
      <title>Reading the classics</title>
      <guid isPermaLink="false">http://www.scottseely.com/Blog/PermaLink,guid,2e469d9e-eba9-4303-a466-43c27dfc0298.aspx</guid>
      <link>http://www.scottseely.com/Blog/2008/06/04/ReadingTheClassics.aspx</link>
      <pubDate>Wed, 04 Jun 2008 00:56:13 GMT</pubDate>
      <description>&lt;p&gt;
Over the past month, I've finally taken the plunge and decided to finally read those
classic technical books that everyone seems to have read (though that many have only
skimmed). I've also been reading oddball classics that are recommended by acquaintances
and folks in the know. As for the big classics that I've read since May 1: 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://www.amazon.com/Algorithm-Design-Manual-Steve-Skiena/dp/0387948600"&gt;The
Algorithm Design Manual&lt;/a&gt; by Steve Skiena 
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.amazon.com/Programming-Pearls-2nd-ACM-Press/dp/0201657880"&gt;Programming
Pearls&lt;/a&gt; by Jon Bentley 
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.amazon.com/Peopleware-Productive-Projects-Teams-Second/dp/0932633439/"&gt;Peopleware&lt;/a&gt; by
Tom DeMarco and Timothy Lister 
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.amazon.com/Mythical-Man-Month-Software-Engineering-Anniversary/dp/0201835959/"&gt;The
Mythical Man-Month&lt;/a&gt; by Frederick Brooks 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
I've also been paging through my &lt;a href="http://www.amazon.com/Art-Computer-Programming-Volumes-Boxed/dp/0201485419/"&gt;Knuth's&lt;/a&gt; again.
Why, oh why would I be doing this? First off, I love the act of designing systems,
writing code, and just geeking out in my chosen profession. Second, I know that I
needed to read these classics so I could stop being an architect with no grounding
in classic computer literature. I mean, I knew what the books were all about, but
that was only through someone else's eyes, not my own. So, with this journey still
in motion, what have I been learning? 
&lt;/p&gt;
&lt;p&gt;
First, I needed a refresher on my algorithms. I was able to get most of the exercises
in Programming Pearls and Skiena with a little bit of thought and some time by a compiler.
It felt good to go through Bentley's text and figure out the really advanced, best
performing solutions to many problems. It was a morale boost to see that I could still
figure this kind of thing out with just a little bit of effort. 
&lt;/p&gt;
&lt;p&gt;
From &lt;span style="text-decoration:underline"&gt;Peopleware&lt;/span&gt;, I took many ideas
I have for this programming shop I want to start up 'someday' and refined the heck
out of a bunch of ideas. For example, did you know that most people find performance
reviews to be demotivating? I didn't. I thought I was the oddball that hates performance
reviews and would prefer life much better if I never got another one. It turns out
that no one likes these—they are stressful. Unfortunately, I also learned some things
about businesses I've been introduced to in my area. There are a lot of poisonous
businesses out there taking a great profession and turning it into something where
you feel odd to be one of the following: 
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
A proud, 36 year old developer. In my opinion, that's still young. Yet, many folks
in the profession stop coding much before this age. I'm SOOOO glad I'm not one of
those people. 
&lt;/li&gt;
&lt;li&gt;
Unwilling to ship because the quality bar is not only low, it doesn't exist. Apparently,
the shipping feature matters even when things aren't right. 
&lt;/li&gt;
&lt;li&gt;
Unit testing is an OLD idea. &lt;a href="http://junit.org/"&gt;JUnit&lt;/a&gt;, &lt;a href="http://nunit.org/index.php"&gt;NUnit&lt;/a&gt;,
and other unit testing tools are not new ideas. Shoot, Fred Brooks talks about unit
testing going on for IBM back in the 1950s and 1960s. And yet, I still have a really
hard time convincing folks that unit testing is important and it is an OLD idea. Unfortunately,
fixing build breaks takes time when unit tests are present. They slow down development
and make it take longer to get to the official test, file bug, fix, repeat cycle. 
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
I find that my focus on my career is getting sharper. I'm seeing how I can make a
difference, how to achieve it without stepping on toes and hurting feelings, and I'm
seeing how fast people can be expected to change. People hate change and will only
do so slowly when you are trying to move a group. People are more willing to change
when they are being assimilated into a group—it feels better to be a part of the group
than apart from the group. (yes, the use of 'a part' and 'apart' is intentional) At
the moment, I'm trying to find a place where I can be a positive force for change
and I need to make sure that I do this at a proper speed. If you know of a development
shop that is top notch and just wants to get better, give me a call. I'd love &lt;a href="mailto:scott@scottseely.com"&gt;to
talk to you&lt;/a&gt; and find out what you are doing to make things happen.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.scottseely.com/Blog/aggbug.ashx?id=2e469d9e-eba9-4303-a466-43c27dfc0298" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Visit my site, http://www.scottseely.com/.</description>
      <comments>http://www.scottseely.com/Blog/CommentView,guid,2e469d9e-eba9-4303-a466-43c27dfc0298.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.scottseely.com/Blog/Trackback.aspx?guid=0fd9b9b8-efa1-489f-b1f8-984903c49bb9</trackback:ping>
      <pingback:server>http://www.scottseely.com/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.scottseely.com/Blog/PermaLink,guid,0fd9b9b8-efa1-489f-b1f8-984903c49bb9.aspx</pingback:target>
      <dc:creator>Scott Seely</dc:creator>
      <wfw:comment>http://www.scottseely.com/Blog/CommentView,guid,0fd9b9b8-efa1-489f-b1f8-984903c49bb9.aspx</wfw:comment>
      <wfw:commentRss>http://www.scottseely.com/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=0fd9b9b8-efa1-489f-b1f8-984903c49bb9</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I had a chance to see <a href="http://www.davidchappell.com/">David Chappell</a> speak
at the Microsoft offices in Downers Grove this past week. If he is coming anywhere
near you to talk on Software + Services, I recommend that you go see the talk. I've
got a summary of what he covers here, but you've got to see him in person to get the
talk. The man is an amazing communicator and helped me connect some dots that I hadn't
quite connected in a while—whether that was due to sloth on my part of great speaking
on David's part, I don't know<span style="font-family:Wingdings">J</span>. 
</p>
        <p>
Anyhow, here's a few hundred words explaining some of what I got out of it. 
</p>
        <p>
Training Date: May 20, 2008, 1-4 PM 
</p>
        <p>
Location: Microsoft offices, Downers Grove, IL 
</p>
        <p>
Presenter: David Chappell, <a href="http://www.davidchappell.com/">http://www.davidchappell.com/</a></p>
        <h1>Summary 
</h1>
        <p>
The reliability of the Internet, relatively low cost of connectivity, and widespread
presence of high bandwidth connections has provided a path for application architectures
to evolve. Specifically, this set of changes allows application vendors to provide
common applications to end users. Today, these common applications include e-mail,
CRM, storage, web site hosting, mapping (ex. 1 Main St., Mundelein, IL), and database
hosting. Providers host these services on the Internet, also called the 'cloud' by
the software services community. These services commonly provide the following features: 
</p>
        <ul>
          <li>
Data mobility: Consumers own their data and can change providers or move the data
in house as needed. 
</li>
          <li>
Application integration: The service in the cloud is part of a larger application
used at the enterprise. 
</li>
          <li>
Application customization: The service in the cloud may allow the consumer to customize
the application to handle special business needs. 
</li>
        </ul>
        <p>
Two terms describe the different business models for the services in the cloud: Software
as a Service, SaaS, and Software + Services, S+S. SaaS offers a complete software
package in the cloud. SaaS instances may allow for integration and customization.
SaaS does not provide much of a role for corporate IT departments outside of application
development. S+S describes a hybridization between today's common model of self-hosting
applications and the SaaS world. SalesForce.com offers an example of a SaaS application.
SalesForce.com manages all the data, the application uptime, etc. An S+S example is
a bit more involved, but probably more common for businesses as it allows for control
of the perceived competitive advantages of a business. 
</p>
        <p>
S+S includes the types of applications that use cloud services as well as custom,
in-house services. For example, a business could host Exchange Server locally but
make use of a service provider to handle advanced Exchange functionality such as Outlook
Web Access, web calendaring, or discussion lists. 
</p>
        <p>
With terminology and ideas covered, what else does a business need to look out for?
The business should evaluate the service provider in the same way that they would
evaluate a packaged, installable software. Beyond that the consumer needs to decide
if the service meets their needs. 
</p>
        <p>
In both packaged software and services, one must look at how the vendor is trying
to lock in the consumer. This lock in happens in different ways. They may lock down
data, making it difficult to move to a new vendor. They may also create a platform
type of lock in. The platform lock in can cause many different kinds of problems.
If the lock in is through the tooling and programming languages, a consumer may find
it difficult to port customizations to equally good platforms. Likewise, it may prove
difficult to find reasonably priced developer talent. For example, SalesForce.com
uses the Apex programming language. Apex is specific to SalesForce.com and isn't commonly
available elsewhere. Other tools, like Microsoft Dynamics CRM and Google Apps, use
common extension languages, allowing for a larger developer pool. Microsoft Dynamics
uses .NET based languages and Google Apps uses Python. 
</p>
        <img width="0" height="0" src="http://www.scottseely.com/Blog/aggbug.ashx?id=0fd9b9b8-efa1-489f-b1f8-984903c49bb9" />
        <br />
        <hr />
Visit my site, http://www.scottseely.com/.</body>
      <title>David Chappell on Software + Services</title>
      <guid isPermaLink="false">http://www.scottseely.com/Blog/PermaLink,guid,0fd9b9b8-efa1-489f-b1f8-984903c49bb9.aspx</guid>
      <link>http://www.scottseely.com/Blog/2008/05/23/DavidChappellOnSoftwareServices.aspx</link>
      <pubDate>Fri, 23 May 2008 00:35:38 GMT</pubDate>
      <description>&lt;p&gt;
I had a chance to see &lt;a href="http://www.davidchappell.com/"&gt;David Chappell&lt;/a&gt; speak
at the Microsoft offices in Downers Grove this past week. If he is coming anywhere
near you to talk on Software + Services, I recommend that you go see the talk. I've
got a summary of what he covers here, but you've got to see him in person to get the
talk. The man is an amazing communicator and helped me connect some dots that I hadn't
quite connected in a while—whether that was due to sloth on my part of great speaking
on David's part, I don't know&lt;span style="font-family:Wingdings"&gt;J&lt;/span&gt;. 
&lt;/p&gt;
&lt;p&gt;
Anyhow, here's a few hundred words explaining some of what I got out of it. 
&lt;/p&gt;
&lt;p&gt;
Training Date: May 20, 2008, 1-4 PM 
&lt;/p&gt;
&lt;p&gt;
Location: Microsoft offices, Downers Grove, IL 
&lt;/p&gt;
&lt;p&gt;
Presenter: David Chappell, &lt;a href="http://www.davidchappell.com/"&gt;http://www.davidchappell.com/&lt;/a&gt; 
&lt;/p&gt;
&lt;h1&gt;Summary 
&lt;/h1&gt;
&lt;p&gt;
The reliability of the Internet, relatively low cost of connectivity, and widespread
presence of high bandwidth connections has provided a path for application architectures
to evolve. Specifically, this set of changes allows application vendors to provide
common applications to end users. Today, these common applications include e-mail,
CRM, storage, web site hosting, mapping (ex. 1 Main St., Mundelein, IL), and database
hosting. Providers host these services on the Internet, also called the 'cloud' by
the software services community. These services commonly provide the following features: 
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Data mobility: Consumers own their data and can change providers or move the data
in house as needed. 
&lt;/li&gt;
&lt;li&gt;
Application integration: The service in the cloud is part of a larger application
used at the enterprise. 
&lt;/li&gt;
&lt;li&gt;
Application customization: The service in the cloud may allow the consumer to customize
the application to handle special business needs. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Two terms describe the different business models for the services in the cloud: Software
as a Service, SaaS, and Software + Services, S+S. SaaS offers a complete software
package in the cloud. SaaS instances may allow for integration and customization.
SaaS does not provide much of a role for corporate IT departments outside of application
development. S+S describes a hybridization between today's common model of self-hosting
applications and the SaaS world. SalesForce.com offers an example of a SaaS application.
SalesForce.com manages all the data, the application uptime, etc. An S+S example is
a bit more involved, but probably more common for businesses as it allows for control
of the perceived competitive advantages of a business. 
&lt;/p&gt;
&lt;p&gt;
S+S includes the types of applications that use cloud services as well as custom,
in-house services. For example, a business could host Exchange Server locally but
make use of a service provider to handle advanced Exchange functionality such as Outlook
Web Access, web calendaring, or discussion lists. 
&lt;/p&gt;
&lt;p&gt;
With terminology and ideas covered, what else does a business need to look out for?
The business should evaluate the service provider in the same way that they would
evaluate a packaged, installable software. Beyond that the consumer needs to decide
if the service meets their needs. 
&lt;/p&gt;
&lt;p&gt;
In both packaged software and services, one must look at how the vendor is trying
to lock in the consumer. This lock in happens in different ways. They may lock down
data, making it difficult to move to a new vendor. They may also create a platform
type of lock in. The platform lock in can cause many different kinds of problems.
If the lock in is through the tooling and programming languages, a consumer may find
it difficult to port customizations to equally good platforms. Likewise, it may prove
difficult to find reasonably priced developer talent. For example, SalesForce.com
uses the Apex programming language. Apex is specific to SalesForce.com and isn't commonly
available elsewhere. Other tools, like Microsoft Dynamics CRM and Google Apps, use
common extension languages, allowing for a larger developer pool. Microsoft Dynamics
uses .NET based languages and Google Apps uses Python. 
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.scottseely.com/Blog/aggbug.ashx?id=0fd9b9b8-efa1-489f-b1f8-984903c49bb9" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Visit my site, http://www.scottseely.com/.</description>
      <comments>http://www.scottseely.com/Blog/CommentView,guid,0fd9b9b8-efa1-489f-b1f8-984903c49bb9.aspx</comments>
    </item>
    <item>
      <trackback:ping>http://www.scottseely.com/Blog/Trackback.aspx?guid=01a676e3-7774-4cbb-9021-e4a08005e15f</trackback:ping>
      <pingback:server>http://www.scottseely.com/Blog/pingback.aspx</pingback:server>
      <pingback:target>http://www.scottseely.com/Blog/PermaLink,guid,01a676e3-7774-4cbb-9021-e4a08005e15f.aspx</pingback:target>
      <dc:creator>Scott Seely</dc:creator>
      <wfw:commentRss>http://www.scottseely.com/Blog/SyndicationService.asmx/GetEntryCommentsRss?guid=01a676e3-7774-4cbb-9021-e4a08005e15f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I have a friend who teaches Computer Science. One of the things we've discussed is
the need for students/entry level hires to really understand basic data structures.
This is true even though most popular languages do the basic ones quite well (linked
list, hashtable, queue, stack). A consequence of these things being in most languages
is that many of today's students aren't being required to actually build these data
structures as part of their education. Many problems in the work place involve situations
where one needs to know the characteristics of the data structure in order to implement
the most efficient algorithms. One acquires this knowledge through actually building
the data structures at least once. 
</p>
        <p>
I believe that many of the folks who grew up programming for the web are getting to
a point where their script skills will need to fill in these gaps in their education.
Browser apps are approaching desktop applications in terms of presentation, interactivity,
and capability. The next step in the evolution of browser applications will require
developers to have knowledge of the basic data structures and their variance implementation
options. The reason: unlike the desktop languages we all use, the browser's programming
language, JavaScript, doesn't have any of these. (If I'm mistaken, <a href="mailto:scott@scottseely.com">let
me know</a>!) 
</p>
        <p>
Right now, I'm reviewing the data structures and algorithms that I learned during
the first two years of college. I'm also trying to bring myself up on my level of
understanding JavaScript. I think that some of these diversions might prove interesting
to the world at large. Today, I've implemented a linked list. A linked list has the
following characteristics: 
</p>
        <ol>
          <li>
Add at the front or end of the list takes O(1) time. 
</li>
          <li>
Extraction of the nth element takes O(n) time. 
</li>
          <li>
Insert at a given position, k, takes O(k) time. 
</li>
          <li>
Delete at a given position, k, takes O(k) time. 
</li>
        </ol>
        <p>
Linked lists are effective when typical usage of the list is in scanning all elements.
A linked list is 'nice' to memory management. That is, the room needed for the list
+ one more linked list node is: 
</p>
        <p style="MARGIN-LEFT: 36pt">
Z = (size of node) = ((size of data) + (reference to next node)) 
</p>
        <p style="MARGIN-LEFT: 36pt">
(total memory in use when adding a node) = Z x (number of nodes + 1) 
</p>
        <p>
This is an improvement over the typical JavaScript Array type whose worst case characteristics
for adding one more element to the list is 
</p>
        <p style="MARGIN-LEFT: 36pt">
Z = (size of node) = (size of data) 
</p>
        <p style="MARGIN-LEFT: 36pt">
(total memory needed when adding a node) = Z x ((2 + growth size) x number of nodes) 
</p>
        <p>
In many algorithms for array growth, the algorithm calls for a doubling of the array's
allocated memory. The reason that so much memory is required is that arrays require
contiguous memory in order to maintain O(1) lookup time at any given element. 
</p>
        <h1>A Doubly Linked List Implementation 
</h1>
        <p>
A doubly linked list is a list that one can use to go both forward and backward from
one node to the next. To accomplish this, I've created three classes: 
</p>
        <p>
          <span style="FONT-FAMILY: Verdana">
            <span style="COLOR: blue">function</span> LinkedListNode()
{ </span>
        </p>
        <p>
          <span style="FONT-FAMILY: Verdana">} </span>
        </p>
        <p>
 
</p>
        <p>
          <span style="FONT-FAMILY: Verdana">LinkedList.LinkedListNode = { </span>
        </p>
        <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
          <p>
            <span style="FONT-FAMILY: Verdana">Data: <span style="COLOR: blue">null</span>, </span>
          </p>
          <p>
            <span style="FONT-FAMILY: Verdana">Next: <span style="COLOR: blue">null</span>, </span>
          </p>
          <p>
            <span style="FONT-FAMILY: Verdana">Previous: <span style="COLOR: blue">null </span></span>
          </p>
        </blockquote>
        <p>
          <span style="FONT-FAMILY: Verdana">}; </span>
        </p>
        <p>
 
</p>
        <p>
LinkedListNode keeps track of the data, the Next, and the Previous nodes. The algorithms
involved all assume that the linked list Next and Previous members will only be other
LinkedListNodes or null. 
</p>
        <p>
          <span style="FONT-FAMILY: Verdana">
            <span style="COLOR: blue">function</span> LinkedListIterator(){} </span>
        </p>
        <p>
 
</p>
        <p>
          <span style="FONT-FAMILY: Verdana">LinkedListIterator.prototype = { </span>
        </p>
        <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
          <p>
            <span style="FONT-FAMILY: Verdana">_current: <span style="COLOR: blue">null</span>, </span>
          </p>
          <p>
            <span style="FONT-FAMILY: Verdana">Current: <span style="COLOR: blue">function</span>()
{ </span>
          </p>
          <p>
            <span style="FONT-FAMILY: Verdana">
              <span style="COLOR: blue">var</span> retval = <span style="COLOR: blue">null</span>; </span>
          </p>
          <p>
            <span style="FONT-FAMILY: Verdana">
              <span style="COLOR: blue">if</span> (<span style="COLOR: blue">this</span>._current
!= <span style="COLOR: blue">null</span>) </span>
          </p>
          <p>
            <span style="FONT-FAMILY: Verdana">{ </span>
          </p>
          <p>
            <span style="FONT-FAMILY: Verdana">retval = <span style="COLOR: blue">this</span>._current.Data; </span>
          </p>
          <p>
            <span style="FONT-FAMILY: Verdana">} </span>
          </p>
          <p>
            <span style="FONT-FAMILY: Verdana">
              <span style="COLOR: blue">return</span> retval; </span>
          </p>
          <p>
            <span style="FONT-FAMILY: Verdana">}, </span>
          </p>
          <p>
            <span style="FONT-FAMILY: Verdana">Next: <span style="COLOR: blue">function</span>()
{ </span>
          </p>
          <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
            <p>
              <span style="FONT-FAMILY: Verdana">
                <span style="COLOR: blue">if</span> (<span style="COLOR: blue">this</span>._current
!= <span style="COLOR: blue">null</span>) </span>
            </p>
            <p>
              <span style="FONT-FAMILY: Verdana">{ </span>
            </p>
            <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
              <p>
                <span style="FONT-FAMILY: Verdana">
                  <span style="COLOR: blue">this</span>._current
= <span style="COLOR: blue">this</span>._current.Next; </span>
              </p>
            </blockquote>
            <p>
              <span style="FONT-FAMILY: Verdana">} </span>
            </p>
            <p>
              <span style="FONT-FAMILY: Verdana">
                <span style="COLOR: blue">return</span>
                <span style="COLOR: blue">this</span>._current
!= <span style="COLOR: blue">null</span>; </span>
            </p>
          </blockquote>
          <p>
            <span style="FONT-FAMILY: Verdana">}, </span>
          </p>
          <p>
            <span style="FONT-FAMILY: Verdana">Previous: <span style="COLOR: blue">function</span>()
{ </span>
          </p>
          <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
            <p>
              <span style="FONT-FAMILY: Verdana">
                <span style="COLOR: blue">if</span> (<span style="COLOR: blue">this</span>._current
!= <span style="COLOR: blue">null</span>) </span>
            </p>
            <p>
              <span style="FONT-FAMILY: Verdana">{ </span>
            </p>
            <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
              <p>
                <span style="FONT-FAMILY: Verdana">
                  <span style="COLOR: blue">this</span>._current
= <span style="COLOR: blue">this</span>._current.Previous; </span>
              </p>
            </blockquote>
            <p>
              <span style="FONT-FAMILY: Verdana">} </span>
            </p>
            <p>
              <span style="FONT-FAMILY: Verdana">
                <span style="COLOR: blue">return</span>
                <span style="COLOR: blue">this</span>._current
!= <span style="COLOR: blue">null</span>; </span>
            </p>
          </blockquote>
          <p>
            <span style="FONT-FAMILY: Verdana">}, </span>
          </p>
          <p>
            <span style="FONT-FAMILY: Verdana">HasData: <span style="COLOR: blue">function</span>()
{ </span>
          </p>
          <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
            <p>
              <span style="FONT-FAMILY: Verdana">
                <span style="COLOR: blue">return</span>
                <span style="COLOR: blue">this</span>._current
!= <span style="COLOR: blue">null</span>; </span>
            </p>
          </blockquote>
          <p>
            <span style="FONT-FAMILY: Verdana">} </span>
          </p>
        </blockquote>
        <p>
          <span style="FONT-FAMILY: Verdana">}; </span>
        </p>
        <p>
LinkedListIterator allows one to go forward and backward within a LinkedList. The
iterator can become invalid when it runs off the front or back of the LinkedList. 
</p>
        <p>
          <span style="FONT-FAMILY: Verdana">
            <span style="COLOR: blue">function</span> LinkedList(){} </span>
        </p>
        <p>
 
</p>
        <p>
          <span style="FONT-FAMILY: Verdana">LinkedList.prototype = { </span>
        </p>
        <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
          <p>
            <span style="FONT-FAMILY: Verdana">_head: <span style="COLOR: blue">null</span>, </span>
          </p>
          <p>
            <span style="FONT-FAMILY: Verdana">_back: <span style="COLOR: blue">null</span>, </span>
          </p>
          <p>
            <span style="FONT-FAMILY: Verdana">_length: 0, </span>
          </p>
          <p>
            <span style="FONT-FAMILY: Verdana">Add: <span style="COLOR: blue">function</span>(data)
{ </span>
          </p>
          <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
            <p>
              <span style="FONT-FAMILY: Verdana">
                <span style="COLOR: blue">var</span> newNode = <span style="COLOR: blue">new</span> LinkedListNode(); </span>
            </p>
            <p>
              <span style="FONT-FAMILY: Verdana">newNode.Data = data; </span>
            </p>
            <p>
              <span style="FONT-FAMILY: Verdana">
                <span style="COLOR: blue">if</span> (<span style="COLOR: blue">this</span>._head
== <span style="COLOR: blue">null</span>) </span>
            </p>
            <p>
              <span style="FONT-FAMILY: Verdana">{ </span>
            </p>
            <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
              <p>
                <span style="FONT-FAMILY: Verdana">
                  <span style="COLOR: blue">this</span>._head = newNode; </span>
              </p>
              <p>
                <span style="FONT-FAMILY: Verdana">
                  <span style="COLOR: blue">this</span>._back = newNode; </span>
              </p>
            </blockquote>
            <p>
              <span style="FONT-FAMILY: Verdana">} </span>
            </p>
            <p>
              <span style="FONT-FAMILY: Verdana">
                <span style="COLOR: blue">else </span>
              </span>
            </p>
            <p>
              <span style="FONT-FAMILY: Verdana">{ </span>
            </p>
            <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
              <p>
                <span style="FONT-FAMILY: Verdana">newNode.Previous = <span style="COLOR: blue">this</span>._back; </span>
              </p>
              <p>
                <span style="FONT-FAMILY: Verdana">
                  <span style="COLOR: blue">this</span>._back.Next
= newNode; </span>
              </p>
              <p>
                <span style="FONT-FAMILY: Verdana">
                  <span style="COLOR: blue">this</span>._back = newNode; </span>
              </p>
            </blockquote>
            <p>
              <span style="FONT-FAMILY: Verdana">} </span>
            </p>
            <p>
              <span style="FONT-FAMILY: Verdana">++<span style="COLOR: blue">this</span>._length; </span>
            </p>
            <p>
              <span style="FONT-FAMILY: Verdana">
                <span style="COLOR: blue">return</span> newNode; </span>
            </p>
          </blockquote>
          <p>
            <span style="FONT-FAMILY: Verdana">}, </span>
          </p>
          <p>
            <span style="FONT-FAMILY: Verdana">RemoveAt: <span style="COLOR: blue">function</span>(index)
{ </span>
          </p>
          <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
            <p>
              <span style="FONT-FAMILY: Verdana">
                <span style="COLOR: blue">var</span> currentIndex
= 0; </span>
            </p>
            <p>
              <span style="FONT-FAMILY: Verdana">
                <span style="COLOR: blue">var</span> nextNode = <span style="COLOR: blue">this</span>._head; </span>
            </p>
            <p>
              <span style="FONT-FAMILY: Verdana">
                <span style="COLOR: blue">while</span> (nextNode
!= <span style="COLOR: blue">null</span> &amp;&amp; currentIndex &lt; index) </span>
            </p>
            <p>
              <span style="FONT-FAMILY: Verdana">{ </span>
            </p>
            <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
              <p>
                <span style="FONT-FAMILY: Verdana">++currentIndex; </span>
              </p>
              <p>
                <span style="FONT-FAMILY: Verdana">nextNode = nextNode.Next; </span>
              </p>
            </blockquote>
            <p>
              <span style="FONT-FAMILY: Verdana">} </span>
            </p>
            <p>
              <span style="FONT-FAMILY: Verdana">
                <span style="COLOR: blue">if</span> (currentIndex
== index) </span>
            </p>
            <p>
              <span style="FONT-FAMILY: Verdana">{ </span>
            </p>
            <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
              <p>
                <span style="FONT-FAMILY: Verdana">nextNode.Previous.Next = nextNode.Next; </span>
              </p>
              <p>
                <span style="FONT-FAMILY: Verdana">
                  <span style="COLOR: blue">if</span> (nextNode.Next
!= <span style="COLOR: blue">null</span>) </span>
              </p>
              <p>
                <span style="FONT-FAMILY: Verdana">{ </span>
              </p>
              <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
                <p>
                  <span style="FONT-FAMILY: Verdana">nextNode.Next.Previous = nextNode.Previous; </span>
                </p>
              </blockquote>
              <p>
                <span style="FONT-FAMILY: Verdana">} </span>
              </p>
            </blockquote>
            <p>
              <span style="FONT-FAMILY: Verdana">} </span>
            </p>
            <p>
              <span style="FONT-FAMILY: Verdana">
                <span style="COLOR: blue">return</span> nextNode; </span>
            </p>
          </blockquote>
          <p>
            <span style="FONT-FAMILY: Verdana">}, </span>
          </p>
          <p>
            <span style="FONT-FAMILY: Verdana">Length: <span style="COLOR: blue">function</span>(){ </span>
          </p>
          <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
            <p>
              <span style="FONT-FAMILY: Verdana">
                <span style="COLOR: blue">return</span>
                <span style="COLOR: blue">this</span>._length; </span>
            </p>
          </blockquote>
          <p>
            <span style="FONT-FAMILY: Verdana">}, </span>
          </p>
          <p>
            <span style="FONT-FAMILY: Verdana">InsertAt: <span style="COLOR: blue">function</span>(index,
data) { </span>
          </p>
          <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
            <p>
              <span style="FONT-FAMILY: Verdana">
                <span style="COLOR: blue">var</span> currentIndex
= 0; </span>
            </p>
            <p>
              <span style="FONT-FAMILY: Verdana">
                <span style="COLOR: blue">var</span> nextNode = <span style="COLOR: blue">this</span>._head; </span>
            </p>
            <p>
              <span style="FONT-FAMILY: Verdana">
                <span style="COLOR: blue">var</span> newNode = <span style="COLOR: blue">new</span> LinkedListNode(); </span>
            </p>
            <p>
              <span style="FONT-FAMILY: Verdana">newNode.Data = data; </span>
            </p>
            <p>
 
</p>
            <p>
              <span style="FONT-FAMILY: Verdana">
                <span style="COLOR: blue">if</span> (index == 0) </span>
            </p>
            <p>
              <span style="FONT-FAMILY: Verdana">{ </span>
            </p>
            <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
              <p>
                <span style="FONT-FAMILY: Verdana">
                  <span style="COLOR: green">// Insert at head </span>
                </span>
              </p>
              <p>
                <span style="FONT-FAMILY: Verdana">
                  <span style="COLOR: blue">if</span> (<span style="COLOR: blue">this</span>._head
== <span style="COLOR: blue">null</span>) </span>
              </p>
              <p>
                <span style="FONT-FAMILY: Verdana">{ </span>
              </p>
              <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
                <p>
                  <span style="FONT-FAMILY: Verdana">
                    <span style="COLOR: blue">this</span>.Add(data); </span>
                </p>
              </blockquote>
              <p>
                <span style="FONT-FAMILY: Verdana">} </span>
              </p>
              <p>
                <span style="FONT-FAMILY: Verdana">
                  <span style="COLOR: blue">else </span>
                </span>
              </p>
              <p>
                <span style="FONT-FAMILY: Verdana">{ </span>
              </p>
              <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
                <p>
                  <span style="FONT-FAMILY: Verdana">newNode.Next = <span style="COLOR: blue">this</span>._head; </span>
                </p>
                <p>
                  <span style="FONT-FAMILY: Verdana">
                    <span style="COLOR: blue">this</span>._head.Previous
= newNode; </span>
                </p>
                <p>
                  <span style="FONT-FAMILY: Verdana">
                    <span style="COLOR: blue">this</span>._head = newNode; </span>
                </p>
                <p>
                  <span style="FONT-FAMILY: Verdana">++<span style="COLOR: blue">this</span>._length; </span>
                </p>
              </blockquote>
              <p>
                <span style="FONT-FAMILY: Verdana">} </span>
              </p>
            </blockquote>
            <p>
              <span style="FONT-FAMILY: Verdana">} </span>
            </p>
            <p>
              <span style="FONT-FAMILY: Verdana">
                <span style="COLOR: blue">else</span>
                <span style="COLOR: blue">if</span> (index
&gt;= <span style="COLOR: blue">this</span>._length) </span>
            </p>
            <p>
              <span style="FONT-FAMILY: Verdana">{ </span>
            </p>
            <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
              <p>
                <span style="FONT-FAMILY: Verdana">
                  <span style="COLOR: green">// Add to the end. </span>
                </span>
              </p>
              <p>
                <span style="FONT-FAMILY: Verdana">
                  <span style="COLOR: blue">this</span>.Add(data); </span>
              </p>
            </blockquote>
            <p>
              <span style="FONT-FAMILY: Verdana">} </span>
            </p>
            <p>
              <span style="FONT-FAMILY: Verdana">
                <span style="COLOR: blue">else</span>
              </span>
            </p>
            <p>
              <span style="FONT-FAMILY: Verdana">{ </span>
            </p>
            <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
              <p>
                <span style="FONT-FAMILY: Verdana">
                  <span style="COLOR: green">// Insert in the middle </span>
                </span>
              </p>
              <p>
                <span style="FONT-FAMILY: Verdana">
                  <span style="COLOR: blue">while</span> (nextNode
!= <span style="COLOR: blue">null</span> &amp;&amp; currentIndex &lt; index) </span>
              </p>
              <p>
                <span style="FONT-FAMILY: Verdana">{ </span>
              </p>
              <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
                <p>
                  <span style="FONT-FAMILY: Verdana">++currentIndex; </span>
                </p>
                <p>
                  <span style="FONT-FAMILY: Verdana">nextNode = nextNode.Next; </span>
                </p>
              </blockquote>
              <p>
                <span style="FONT-FAMILY: Verdana">} </span>
              </p>
              <p>
                <span style="FONT-FAMILY: Verdana">
                  <span style="COLOR: blue">if</span> (currentIndex
== index) </span>
              </p>
              <p>
                <span style="FONT-FAMILY: Verdana">{ </span>
              </p>
              <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
                <p>
                  <span style="FONT-FAMILY: Verdana">nextNode.Previous.Next = newNode; </span>
                </p>
                <p>
                  <span style="FONT-FAMILY: Verdana">newNode.Previous = nextNode.Previous; </span>
                </p>
                <p>
                  <span style="FONT-FAMILY: Verdana">newNode.Next = nextNode; </span>
                </p>
                <p>
                  <span style="FONT-FAMILY: Verdana">nextNode.Previous = newNode; </span>
                </p>
                <p>
                  <span style="FONT-FAMILY: Verdana">++<span style="COLOR: blue">this</span>._length; </span>
                </p>
              </blockquote>
              <p>
                <span style="FONT-FAMILY: Verdana">} </span>
              </p>
            </blockquote>
            <p>
              <span style="FONT-FAMILY: Verdana">} </span>
            </p>
            <p>
              <span style="FONT-FAMILY: Verdana">
                <span style="COLOR: blue">return</span> nextNode; </span>
            </p>
          </blockquote>
   