<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Chad Myers' Blog</title><link>http://www.lostechies.com/blogs/chad_myers/default.aspx</link><description>Department of Problem Prevention</description><dc:language>en</dc:language><generator>CommunityServer 2008.5 (Build: 30929.2835)</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/ChadMyersBlog" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item><title>The Perfect Web Framework</title><link>http://feedproxy.google.com/~r/ChadMyersBlog/~3/kyIYC4VjY3A/the-perfect-web-framework.aspx</link><pubDate>Tue, 23 Jun 2009 05:32:26 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:22366</guid><dc:creator>chadmyers</dc:creator><slash:comments>9</slash:comments><wfw:commentRss>http://www.lostechies.com/blogs/chad_myers/rsscomments.aspx?PostID=22366</wfw:commentRss><comments>http://www.lostechies.com/blogs/chad_myers/archive/2009/06/23/the-perfect-web-framework.aspx#comments</comments><description>&lt;p&gt;I’ve been paid professionally to work with or have messed around with many web frameworks. To name most of them:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Perl/CGI&lt;/li&gt;    &lt;li&gt;RoR&lt;/li&gt;    &lt;li&gt;a tiny bit of Django&lt;/li&gt;    &lt;li&gt;ASP.NET WebForms&lt;/li&gt;    &lt;li&gt;ASP.NET MVC&lt;/li&gt;    &lt;li&gt;FubuMVC&lt;/li&gt;    &lt;li&gt;MonoRail&lt;/li&gt;    &lt;li&gt;a tiny bit of &lt;a href="http://trac.caffeine-it.com/openrasta"&gt;OpenRasta&lt;/a&gt; (sorry Sebastian, I keep failing to find time to dig into this more. I really mean to, I promise!)&lt;/li&gt;    &lt;li&gt;Apache Struts&lt;/li&gt;    &lt;li&gt;Java JSP&lt;/li&gt;    &lt;li&gt;Java Servlets&lt;/li&gt;    &lt;li&gt;Java Server Faces&lt;/li&gt;    &lt;li&gt;A bunch of other of the myriad of Java web frameworks&lt;/li&gt;    &lt;li&gt;PHP&lt;/li&gt;    &lt;li&gt;ASP&lt;/li&gt;    &lt;li&gt;A bunch more that I can’t remember or aren’t worth mentioning&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Each of them offers a little, but at the huge expense of getting in your way a lot of time.&lt;/p&gt;  &lt;p&gt;The more and more I use more of them, the more I come to the conclusion that the perfect web framework looks like this:&lt;/p&gt;  &lt;div class="csharpcode-wrapper"&gt;   &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Get(IDictionary&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;, &lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt; request)
{
  &lt;span class="rem"&gt;//TODO: Stuff here&lt;/span&gt;
}&lt;/pre&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=22366" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=kyIYC4VjY3A:xKABeiKiXd8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=kyIYC4VjY3A:xKABeiKiXd8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=kyIYC4VjY3A:xKABeiKiXd8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=kyIYC4VjY3A:xKABeiKiXd8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=kyIYC4VjY3A:xKABeiKiXd8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=kyIYC4VjY3A:xKABeiKiXd8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=kyIYC4VjY3A:xKABeiKiXd8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChadMyersBlog/~4/kyIYC4VjY3A" height="1" width="1"/&gt;</description><category domain="http://www.lostechies.com/blogs/chad_myers/archive/tags/Humor/default.aspx">Humor</category><category domain="http://www.lostechies.com/blogs/chad_myers/archive/tags/MVC/default.aspx">MVC</category><feedburner:origLink>http://www.lostechies.com/blogs/chad_myers/archive/2009/06/23/the-perfect-web-framework.aspx</feedburner:origLink></item><item><title>How to Write Unmaintainable Code</title><link>http://feedproxy.google.com/~r/ChadMyersBlog/~3/OqeqCvjta04/how-to-write-unmaintainable-code.aspx</link><pubDate>Fri, 19 Jun 2009 22:05:46 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:22260</guid><dc:creator>chadmyers</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://www.lostechies.com/blogs/chad_myers/rsscomments.aspx?PostID=22260</wfw:commentRss><comments>http://www.lostechies.com/blogs/chad_myers/archive/2009/06/19/how-to-write-unmaintainable-code.aspx#comments</comments><description>&lt;p&gt;A friend showed this one to me a long time ago, and I still chuckle every time I remember a snippet or two from it.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://mindprod.com/jgloss/unmain.html"&gt;How to Write Unmaintainable Code&lt;/a&gt; by Roedy Green&lt;/p&gt;  &lt;p&gt;Perhaps my most favorite section is the ‘Naming’ section:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://mindprod.com/jgloss/unmainnaming.html"&gt;http://mindprod.com/jgloss/unmainnaming.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;And within that, lies the pièce de résistance of that entire body of work (in my opinion):&lt;/p&gt;  &lt;p&gt;(NOTE: Make sure you check out the 5th bullet point, it’s a real gem)&lt;/p&gt;  &lt;blockquote&gt;   &lt;h4&gt;Hungarian Notation&lt;/h4&gt; Hungarian Notation is the tactical nuclear weapon of source code obfuscation techniques; use it! Due to the sheer volume of source code contaminated by this idiom nothing can kill a maintenance engineer faster than a well planned Hungarian Notation attack. The following tips will help you corrupt the original intent of Hungarian Notation:     &lt;ul&gt;     &lt;li&gt;Insist on using &amp;quot;c&amp;quot; for const in C++ and other languages that directly enforce the const-ness of a variable. &lt;/li&gt;      &lt;li&gt;Seek out and use Hungarian warts that have meaning in languages other than your current language. For example insist on the PowerBuilder &amp;quot;l_&amp;quot; and &amp;quot;a_ &amp;quot; {local and argument} scoping prefixes and always use the VB-esque style of having a Hungarian wart for every control type when coding to C++. Try to stay ignorant of the fact that megs of plainly visible MFC source code does not use Hungarian warts for control types. &lt;/li&gt;      &lt;li&gt;Always violate the Hungarian principle that the most commonly used variables should carry the least extra information around with them. Achieve this end through the techniques outlined above and by insisting that each class type have a custom wart prefix. Never allow anyone to remind you that &lt;b&gt;no&lt;/b&gt; wart tells you that something &lt;b&gt;is&lt;/b&gt; a class. The importance of this rule cannot be overstated: if you fail to adhere to its principles the source code may become flooded with shorter variable names that have a higher vowel/consonant ratio. In the worst case scenario this can lead to a full collapse of obfuscation and the spontaneous reappearance of English Notation in code! &lt;/li&gt;      &lt;li&gt;Flagrantly violate the Hungarian-esque concept that function parameters and other high visibility symbols must be given meaningful names, but that Hungarian type warts all by themselves make excellent temporary variable names. &lt;/li&gt;      &lt;li&gt;Insist on carrying outright orthogonal information in your Hungarian warts. Consider this real world example: &amp;quot;a_crszkvc30LastNameCol&amp;quot;. It took a team of maintenance engineers nearly 3 days to figure out that this whopper variable name described a const, reference, function argument that was holding information from a database column of type Varchar[30] named &amp;quot;LastName&amp;quot; which was part of the table’s primary key. When properly combined with the principle that &amp;quot;all variables should be public&amp;quot; this technique has the power to render thousands of lines of source code obsolete instantly! &lt;/li&gt;      &lt;li&gt;Use to your advantage the principle that the human brain can only hold 7 pieces of information concurrently. For example code written to the above standard has the following properties:        &lt;ul&gt;         &lt;li&gt;a single assignment statement carries 14 pieces of type and name information. &lt;/li&gt;          &lt;li&gt;a single function call that passes three parameters and assigns a result carries 29 pieces of type and name information. &lt;/li&gt;          &lt;li&gt;Seek to improve this excellent, but far too concise, standard. Impress management and coworkers by recommending a 5 letter day of the week prefix to help isolate code written on &amp;#39;Monam&amp;#39; and &amp;#39;FriPM&amp;#39;. &lt;/li&gt;          &lt;li&gt;It is easy to overwhelm the short term memory with even a moderately complex nesting structure, &lt;b&gt;especially&lt;/b&gt; when the maintenance programmer can’t see the start and end of each block on screen simultaneously. &lt;/li&gt;       &lt;/ul&gt;     &lt;/li&gt;   &lt;/ul&gt;&lt;/blockquote&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=22260" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=OqeqCvjta04:95zKWYbCsgo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=OqeqCvjta04:95zKWYbCsgo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=OqeqCvjta04:95zKWYbCsgo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=OqeqCvjta04:95zKWYbCsgo:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=OqeqCvjta04:95zKWYbCsgo:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=OqeqCvjta04:95zKWYbCsgo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=OqeqCvjta04:95zKWYbCsgo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChadMyersBlog/~4/OqeqCvjta04" height="1" width="1"/&gt;</description><category domain="http://www.lostechies.com/blogs/chad_myers/archive/tags/Humor/default.aspx">Humor</category><category domain="http://www.lostechies.com/blogs/chad_myers/archive/tags/Unmaintainability/default.aspx">Unmaintainability</category><feedburner:origLink>http://www.lostechies.com/blogs/chad_myers/archive/2009/06/19/how-to-write-unmaintainable-code.aspx</feedburner:origLink></item><item><title>Going Controller-less in MVC: The Way Fowler Meant It To Be</title><link>http://feedproxy.google.com/~r/ChadMyersBlog/~3/0mMDoV94UL8/going-controller-less-in-mvc-the-way-fowler-meant-it.aspx</link><pubDate>Thu, 18 Jun 2009 07:06:09 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:22168</guid><dc:creator>chadmyers</dc:creator><slash:comments>29</slash:comments><wfw:commentRss>http://www.lostechies.com/blogs/chad_myers/rsscomments.aspx?PostID=22168</wfw:commentRss><comments>http://www.lostechies.com/blogs/chad_myers/archive/2009/06/18/going-controller-less-in-mvc-the-way-fowler-meant-it.aspx#comments</comments><description>&lt;p&gt;This is sort of a stream-of-consciousness post. Several folks have been asking me what I mean by ‘Controllerless actions’ and what I’m thinking about doing in FubuMVC.&amp;#160; The conversation has already started publically on twitter, so I thought I’d try to capture a brain-dump of my thoughts in a blog post so the conversation can continue.&amp;#160; This post likely won’t be up to my normally high (read: barely legible) standards. Please forgive.&lt;/p&gt;  &lt;p&gt;Before we go further, read this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.martinfowler.com/eaaCatalog/frontController.html"&gt;http://www.martinfowler.com/eaaCatalog/frontController.html&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And then view this:&lt;/p&gt;  &lt;div class="csharpcode-wrapper"&gt;   &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; ProductController : Controller
{
    &lt;span class="kwrd"&gt;private&lt;/span&gt; IProductRepository _repository;

    &lt;span class="kwrd"&gt;public&lt;/span&gt; ProductController()
    {
        &lt;span class="rem"&gt;/// That is the only point you need to replace&lt;/span&gt;
        &lt;span class="rem"&gt;/// if the data source changes.&lt;/span&gt;
         _repository = &lt;span class="kwrd"&gt;new&lt;/span&gt; EntityProductRepository();
    }

    &lt;span class="kwrd"&gt;public&lt;/span&gt; ProductController(IProductRepository repository)
    {
        &lt;span class="kwrd"&gt;this&lt;/span&gt;._repository = repository;
    }

    &lt;span class="kwrd"&gt;public&lt;/span&gt; ActionResult Index()
    {
        &lt;span class="kwrd"&gt;return&lt;/span&gt; View(_repository.GetAll());
    }

    &lt;span class="kwrd"&gt;public&lt;/span&gt; ActionResult Create()
    {
        &lt;span class="kwrd"&gt;return&lt;/span&gt; View();
    }

    [AcceptVerbs(HttpVerbs.Post)]
    &lt;span class="kwrd"&gt;public&lt;/span&gt; ActionResult Create([Bind(Exclude = &lt;span class="str"&gt;&amp;quot;Id&amp;quot;&lt;/span&gt;)] Product productToCreate)
    {
        &lt;span class="kwrd"&gt;if&lt;/span&gt; (_repository.Create(productToCreate))
            &lt;span class="kwrd"&gt;return&lt;/span&gt; RedirectToAction(“Index”);

        &lt;span class="kwrd"&gt;return&lt;/span&gt; View();
    }

    &lt;span class="kwrd"&gt;public&lt;/span&gt; ActionResult Edit(&lt;span class="kwrd"&gt;int&lt;/span&gt; id)
    {
        &lt;span class="kwrd"&gt;return&lt;/span&gt; View(_repository.Get(id));
    }

    [AcceptVerbs(HttpVerbs.Post)]
    &lt;span class="kwrd"&gt;public&lt;/span&gt; ActionResult Edit(Product productToEdit)
    {
        &lt;span class="kwrd"&gt;if&lt;/span&gt; (_repository.Update(productToEdit))
            &lt;span class="kwrd"&gt;return&lt;/span&gt; RedirectToAction(“Index”);

        &lt;span class="kwrd"&gt;return&lt;/span&gt; View();
    }

    &lt;span class="kwrd"&gt;public&lt;/span&gt; ActionResult Delete(&lt;span class="kwrd"&gt;int&lt;/span&gt; id)
    {
        &lt;span class="kwrd"&gt;return&lt;/span&gt; View(_repository.Get(id));
    }

    [AcceptVerbs(HttpVerbs.Post)]
    &lt;span class="kwrd"&gt;public&lt;/span&gt; ActionResult Delete(Product productToDelete)
    {
        &lt;span class="kwrd"&gt;if&lt;/span&gt; (_repository.Delete(productToDelete.ID))
            &lt;span class="kwrd"&gt;return&lt;/span&gt; RedirectToAction(“Index”);

        &lt;span class="kwrd"&gt;return&lt;/span&gt; View();
    }
}&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;I’m pretty sure this ProductController is not exactly what Martin Fowler had in mind.&amp;#160; Yet, it’s probably an actually cleaner example of what most controllers that are currently being written “in the wild” for ASP.NET MVC and MonoRail (the two most popular MVC frameworks for .NET) look like.&lt;/p&gt;

&lt;p&gt;ProductController is a somewhat monolithic controller in that it has many actions.&amp;#160; It’s structured this way for several different reasons, a few of which I’ll list here:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;The limitations of the framework upon which it’s built.&amp;#160; ASP.NET MVC, MonoRail, FubuMVC, and others are structured around controllers and actions (yes, even the venerable, estimable Ruby on Rails [peace be upon it] has this mindset to one extent or another). &lt;/li&gt;

  &lt;li&gt;The limitations of our imaginations: That’s how we’ve always done MVC! &lt;/li&gt;

  &lt;li&gt;The habit of doing Model2 style MVC (from which the Heavy Controller/Action paradigm comes) &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Reading Fowler’s ideas on Front Controller, and looking at these Model2-esque controllers and actions, I scratched my head and said, ‘Huh. That isn’t right!’&lt;/p&gt;

&lt;h2&gt;&lt;/h2&gt;

&lt;h2&gt;Model 2&lt;/h2&gt;

&lt;p&gt;Model2-style MVC is concerned primarily with whole request handling and/or whole page rendering.&amp;#160; This was OK in the days of non-AJAX whole page post-backs (uphill, both ways, in the snow, with bare feet).&amp;#160; But in the modern day of heavily templated, composite UIs (think ASP.NET WebForms MasterPages, Spark Layouts, Partials, etc), and with heavy AJAX use for browser-initiated partial updates, the whole-page rendering concept doesn’t really hold up.&lt;/p&gt;

&lt;p&gt;We usually end up contorting and bending the framework to do things that don’t really hold up that well under the Model2 way of thinking.&lt;/p&gt;

&lt;h2&gt;Front Controller&lt;/h2&gt;

&lt;p&gt;In the Front Controller pattern, the only “Controller” present is the dumb front controller that has two methods on it: Get() and Post() and you could probably just boil those down to HandleRequest().&amp;#160; If this sounds oddly reminiscent of IHttpHandler, you’re thinking correctly.&amp;#160; An IHttpHandler is, in one manner of speaking, a Front Controller.&amp;#160; Properly implemented, the Front Controller would load a series of commands for that particular URL/request context and then execute them either via round robin or via chain-of-responsibility (in serial).&lt;/p&gt;

&lt;p&gt;In ASP.NET MVC, MonoRail, FubuMVC, and several other MVC frameworks for .NET, the Controller Action is essentially one BIG command that handles almost all aspects of the request.&amp;#160; Action Filters and FubuMVC’s Behaviors serve as a way of achieving the more compositional benefits of Commands, but they both have some limitations.&lt;/p&gt;

&lt;p&gt;If you’ve been doing any serious MVC work with any of the popular frameworks recently, you will have certainly felt the pain of controller actions getting too large, or having too many concerns.&amp;#160; You may also have noticed that your views require data that’s otherwise totally unrelated to the current request (i.e. the user’s current login status for a request to retrieve a list of all products in the persistence store).&amp;#160; So you might use Action Filters or FubuMVC Behaviors to compose all the data the view will eventually need.&amp;#160; Action Filters, being attributes on the Action and thus explicitly declared, present a strong challenge to proper compositional assembly of the data needed by the view for that request. FubuMVC behaviors certainly handle this better, but the configuration can get a little messy and verbose wiring them up explicitly or even conventionally to your actions. So they are not without their drawbacks also.&lt;/p&gt;

&lt;p&gt;This all leads inexorably to the questions: Why even have a controller at all?&amp;#160; Aren’t actions really just things-to-do in their own right? And aren’t Actions only a part of the responsibility of fulfilling the request (the rest being satisfied by Action Filters/Behaviors)?&lt;/p&gt;

&lt;p&gt;What if we promoted that idea of action filters/behaviors, and the stuff-to-do-for-this-request to equal footing – each simply being a command that gets executed for a particular request?&lt;/p&gt;

&lt;p&gt;There’s one little tiny problem in that, when in your Master Page, for example, you may need one tiny nugget of information that’s completely unrelated to the current request, but otherwise needs to be satisfied.&amp;#160; Rendering the view, then, becomes yet another command that can actually trigger more commands to be executed.&lt;/p&gt;

&lt;h2&gt;Explicitly Configured combined with View-Driven Command Resolution and Execution&lt;/h2&gt;

&lt;p&gt;After several talks with folks like Mark Nijhof, Jeremy Miller, Jimmy Bogard, and others, it soon became clear that we needed to rethink how we were approaching our MVC-based designs and to try to get more in touch with our “Inner Fowler” so to speak (but not too much).&lt;/p&gt;

&lt;p&gt;I have observed that there are, in any MVC request, explicit things that need to happen (NHibernate Session-per-Request, load the current IPrincipal for ASP.NET Authorization, load the current user’s culture and timezone information, etc).&amp;#160; There are also things that MAY need to happen based on whether the View needs some particular type of information.&amp;#160; The view generally shouldn’t be making decisions other than to simply declare that it needs a partial rendered (or a MasterPage, etc).&amp;#160; Theoretically with WebForms or Spark views, we could, at config-time, figure out just exactly what information the view and its various partials are going to require. This way you could resolve everything at config-time and avoid any nasty runtime problems with missing information and such. I’m somewhat down on this theory and I’m anticipating this won’t work out like I hope and that there will always be runtime gotchas here.&lt;/p&gt;

&lt;p&gt;At any rate, if we have to live with runtime surprises while we flush out this idea, that’s OK for right now.&amp;#160; But I really feel that the general idea (that is, demand-based command execution) is going on the right track.&lt;/p&gt;

&lt;h2&gt;Explicitly Configured Command Resolution and Execution&lt;/h2&gt;

&lt;p&gt;This one is easy: Just configure it!&amp;#160; We’ll have a fluent API or some sort of conventional way (or both) of automatically determining which commands need to be executed for a given request/URL.&amp;#160; FubuMVC currently has this with behaviors so this is achievable today, but I think we can do better and I intend to.&lt;/p&gt;

&lt;h2&gt;View-Driven Command Resolution and Execution&lt;/h2&gt;

&lt;p&gt;This one is a little tricky since the View will be requesting this at render time, on-the-fly and may result in YSOD’s if something it depends upon isn’t available.&amp;#160; &lt;/p&gt;

&lt;p&gt;I’m thinking that the View would have access to the IoC Container (or Common Service Locator as the case may be) and will request something like IFubuCommand&amp;lt;TModel&amp;gt; where TModel is the particular type of model that partial requires. So you might see something like this:&lt;/p&gt;

&lt;p&gt;&amp;lt;%= this.RenderPartialFor&amp;lt;LoginStatusModel&amp;gt;().Using&amp;lt;LoginStatusPartial&amp;gt;() %&amp;gt;&lt;/p&gt;

&lt;p&gt;The RenderPartialForExpression would then access the IoC container and retrieve an implementation of IFubuCommand&amp;lt;LoginStatusModel&amp;gt; and then pass that to the LoginStatusPartial (which may turn around and request other IFubuCommand&amp;lt;XYZ&amp;gt;’s.&lt;/p&gt;

&lt;h2&gt;Command Registration&lt;/h2&gt;

&lt;p&gt;Commands would be registered at config-time via the normal IoC container configuration.&amp;#160; Using StructureMap, for example, you would simply scan all or certain assemblies for any class implementing ICommand&amp;lt;TModel&amp;gt; and load them automatically into the container as handlers.&lt;/p&gt;

&lt;h2&gt;Diagnostics&lt;/h2&gt;

&lt;p&gt;This is also somewhat complicated since the views may request different things at runtime (they may request an IFubuCommand&amp;lt;MODEL&amp;gt; where MODEL may not be known until runtime in which case things may go awry.&lt;/p&gt;

&lt;p&gt;You could probe the Container for all IFubuCommand&amp;lt;TModels&amp;gt;’s and then simply observe Views as they execute and deliver a report after-the-fact to show what was used, by whom, and how much.&amp;#160; While this won’t necessarily be exhaustive, it would likely help a developer who’s troubleshooting a particular issue (or perhaps a transient, occasional error).&lt;/p&gt;

&lt;h2&gt;URL Resolution&lt;/h2&gt;

&lt;p&gt;This is perhaps the biggest change. Since there are no controllers or actions, the URL becomes the only distinguishing characteristic between two “actions” (or chains of commands) to be performed server-side.&amp;#160; That means the URL (or URL stub like /blah/baz/{Id}) becomes a first-class citizen – probably even its own class/type.&amp;#160; &lt;/p&gt;

&lt;p&gt;One thought I’ve been kicking around about this is that you would have a class per URL Stub which has c’tor parameters or properties representing the various options of the URL.&amp;#160; For example, consider this “URL object” or “Action object”:&lt;/p&gt;

&lt;div class="csharpcode-wrapper"&gt;
  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; EditProduct
{
  &lt;span class="rem"&gt;// /products/edit&lt;/span&gt;
  &lt;span class="kwrd"&gt;public&lt;/span&gt; EditProduct()
  {
  }
  
  &lt;span class="rem"&gt;// /products/edit/9&lt;/span&gt;
  &lt;span class="kwrd"&gt;public&lt;/span&gt; EditProduct(&lt;span class="kwrd"&gt;int&lt;/span&gt; id)
  {
    Id = id;
  }
  
  &lt;span class="kwrd"&gt;public&lt;/span&gt; Id{ get; set;}
}&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;And to render a hyperlink to this action, for example, you might: &amp;lt;%= this.LinkTo&amp;lt;EditProduct&amp;gt;(Model.ProductId) %&amp;gt;&lt;/p&gt;

&lt;p&gt;or even:&amp;#160; &amp;lt;%= new EditProduct(Model.ProductId) %&amp;gt;&lt;/p&gt;

&lt;p&gt;Which is a lot cleaner than: &amp;lt;%= this.HyperLinkTo&amp;lt;ProductController&amp;gt;((p,i)=&amp;gt;p.EditProduct(i)) %&amp;gt;&lt;/p&gt;

&lt;h2&gt;Wrapping Up&lt;/h2&gt;

&lt;p&gt;So this is my brain dump and currently the rough plan I’m using to spike out some of these things in FubuMVC.&amp;#160; Some of it is working out, other things I’m still skeptical.&lt;/p&gt;

&lt;p&gt;I’d love to hear what you’re thinking with your MVC-based designs.&amp;#160; How are YOU handling the composition problems?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=22168" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=0mMDoV94UL8:cCGKk5nQNJ0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=0mMDoV94UL8:cCGKk5nQNJ0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=0mMDoV94UL8:cCGKk5nQNJ0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=0mMDoV94UL8:cCGKk5nQNJ0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=0mMDoV94UL8:cCGKk5nQNJ0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=0mMDoV94UL8:cCGKk5nQNJ0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=0mMDoV94UL8:cCGKk5nQNJ0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChadMyersBlog/~4/0mMDoV94UL8" height="1" width="1"/&gt;</description><category domain="http://www.lostechies.com/blogs/chad_myers/archive/tags/MVC/default.aspx">MVC</category><category domain="http://www.lostechies.com/blogs/chad_myers/archive/tags/FubuMVC/default.aspx">FubuMVC</category><category domain="http://www.lostechies.com/blogs/chad_myers/archive/tags/Controllerless/default.aspx">Controllerless</category><feedburner:origLink>http://www.lostechies.com/blogs/chad_myers/archive/2009/06/18/going-controller-less-in-mvc-the-way-fowler-meant-it.aspx</feedburner:origLink></item><item><title>On the performance of “Opinionated Builders”</title><link>http://feedproxy.google.com/~r/ChadMyersBlog/~3/ATMwPhAegjQ/on-the-performance-of-opinionated-builders.aspx</link><pubDate>Sun, 14 Jun 2009 05:35:36 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:22070</guid><dc:creator>chadmyers</dc:creator><slash:comments>4</slash:comments><wfw:commentRss>http://www.lostechies.com/blogs/chad_myers/rsscomments.aspx?PostID=22070</wfw:commentRss><comments>http://www.lostechies.com/blogs/chad_myers/archive/2009/06/14/on-the-performance-of-opinionated-builders.aspx#comments</comments><description>&lt;p&gt;I was reading &lt;a href="http://hex.lostechies.com"&gt;Eric Hexter’s&lt;/a&gt; post titled “&lt;a href="http://www.lostechies.com/blogs/hex/archive/2009/06/13/opinionated-input-builders-part-6-performance-of-the-builders.aspx"&gt;Opinionated Input Builders Part 6: Performance of the Builders&lt;/a&gt;” and I was going to leave a lengthy comment, but decided it would be better as its own blog post:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;I’m going to assume that the data is all correct (or representative of reality). As another reader pointed out, this [poor performance] could simply be because debug=true is set in the web.config or some other non-obvious, but simple explanation. For this exercise, let’s assume that this performance is the correct reality.&lt;/p&gt;    &lt;p&gt;Since [Eric’s] approach is very opinionated and conventional, I would expect it to result in very consistent and expected results (code written in the same way, files in the same place, etc).&lt;/p&gt;    &lt;p&gt;This consistency is key because you could write some sort of pre-compiler that could inline the partials or something before pushing to production.If there isn&amp;#39;t already a tool to do this, I would imagine it wouldn&amp;#39;t be that hard to write.&lt;/p&gt;    &lt;p&gt;&amp;quot;But now I have to write a tool to do what &lt;a href="http://ASP.NET"&gt;ASP.NET&lt;/a&gt; could do for me already!&amp;#160; This input builder stuff just ain&amp;#39;t worth it!&amp;quot; a skeptic might say.&lt;/p&gt;    &lt;p&gt;But consider this:&amp;#160; Doing it WITHOUT input builders may slow you down 20% vs. doing it WITH them (I’m just making numbers up here, but you get the point).&amp;#160; Over an 8 week project with 4 people (1280 man-hours), that&amp;#39;s a savings of 256 man-hours.&amp;#160; I&amp;#39;m pretty sure that you could easily write some sort of in-liner or pre-compiler in 256 man-hours (6.4 man-weeks) and you&amp;#39;d end up with either a net-zero or a net-gain on the project.&lt;/p&gt;    &lt;p&gt;I&amp;#39;m of the firm belief that you do what&amp;#39;s expedient for the project (YAGNI unless you&amp;#39;re absolutely certain you WILL NEED it), and deal with performance issues later in a systematic way.&amp;#160; Performance problems are always easier to deal with later and with more data from which to make a better decision and especially so if you&amp;#39;re consistent and conventional in your development (which Opinionated Input Builders certainly are).&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;So for those who might immediately turn their noses up at Eric’s posts due to suspected performance issues, I suggest you at least give it a second look or give it a little time as an optimizer might show up later, negating most if not all performance issues.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=22070" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=ATMwPhAegjQ:qRg9Z2FixfE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=ATMwPhAegjQ:qRg9Z2FixfE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=ATMwPhAegjQ:qRg9Z2FixfE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=ATMwPhAegjQ:qRg9Z2FixfE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=ATMwPhAegjQ:qRg9Z2FixfE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=ATMwPhAegjQ:qRg9Z2FixfE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=ATMwPhAegjQ:qRg9Z2FixfE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChadMyersBlog/~4/ATMwPhAegjQ" height="1" width="1"/&gt;</description><category domain="http://www.lostechies.com/blogs/chad_myers/archive/tags/Premature+optimization/default.aspx">Premature optimization</category><feedburner:origLink>http://www.lostechies.com/blogs/chad_myers/archive/2009/06/14/on-the-performance-of-opinionated-builders.aspx</feedburner:origLink></item><item><title>Some quick updates</title><link>http://feedproxy.google.com/~r/ChadMyersBlog/~3/f-dTArBPQ-I/some-quick-updates.aspx</link><pubDate>Wed, 10 Jun 2009 03:41:26 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:21690</guid><dc:creator>chadmyers</dc:creator><slash:comments>3</slash:comments><wfw:commentRss>http://www.lostechies.com/blogs/chad_myers/rsscomments.aspx?PostID=21690</wfw:commentRss><comments>http://www.lostechies.com/blogs/chad_myers/archive/2009/06/09/some-quick-updates.aspx#comments</comments><description>&lt;p&gt;I know I’ve been remiss in my blog posting duties. Please trust me when I say it’s for good reason and that you’d understand.&lt;/p&gt;  &lt;p&gt;I appreciate you sticking with me. In the meantime, here are a few tidbits that you might find worth noting:&lt;/p&gt;  &lt;h2&gt;Announcing: Zen&lt;/h2&gt;  &lt;p&gt;&lt;a href="http://kohari.org"&gt;Nate Kohari&lt;/a&gt; (whom I’d like to call a friend, though I’m not sure he feels the same way, lol) has just announced the coming-out party of a skunk-works project he and &lt;a href="http://nikibeth.com/"&gt;his wife Nicole&lt;/a&gt;&amp;#160; have been cooking up for quite some time now. It’s a lightweight (but powerful) lean project management system using Kanban. Nate can describe it better, so I’ll let you hear it straight from him:&lt;/p&gt;  &lt;p&gt;Zen Home Page:&amp;#160; &lt;a href="http://agilezen.com"&gt;http://agilezen.com&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Nate’s Blog post: &lt;a href="http://kohari.org/2009/06/09/zen-and-the-art-of-project-management/"&gt;http://kohari.org/2009/06/09/zen-and-the-art-of-project-management/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Side note: I’m taking votes for who has more attractive eyewear Nate or Nicole.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Steven Bohlen speaking for VAN on DDD&lt;/h2&gt;  &lt;p&gt;Zachariah Young wanted me to let ya’ll know that Steven Bohlen (of “&lt;a href="http://www.summerofnhibernate.com/"&gt;Summer of NHibernate&lt;/a&gt;” and “Streaking through campus naked” fame) will be presenting about Domain-driven Design at the next VAN (June 10).&lt;/p&gt;  &lt;p&gt;The details for attending are here (I suggest you check it out!):&lt;/p&gt;  &lt;p&gt;&lt;a title="http://zachariahyoung.com/zy/post/2009/06/08/Introduction-to-DDD-with-Steve-Bohlen-on-June-10.aspx" href="http://zachariahyoung.com/zy/post/2009/06/08/Introduction-to-DDD-with-Steve-Bohlen-on-June-10.aspx"&gt;http://zachariahyoung.com/zy/post/2009/06/08/Introduction-to-DDD-with-Steve-Bohlen-on-June-10.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Site note: His “streaking on campus” days are over, to be clear, there will be no streaking at the VAN)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;.NET Slackers Article on StructureMap 101&lt;/h2&gt;  &lt;p&gt;After many broken promises and terrible delays, I finally delivered my first article to the ever patient, polite, and positive Sonu Kapor (one of the organizers of &lt;a href="http://www.dotnetslackers.com"&gt;www.dotnetslackers.com&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;You can check it out here:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://dotnetslackers.com/articles/designpatterns/IntroductionToStructureMap.aspx"&gt;http://dotnetslackers.com/articles/designpatterns/IntroductionToStructureMap.aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=21690" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=f-dTArBPQ-I:simuFdubVEc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=f-dTArBPQ-I:simuFdubVEc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=f-dTArBPQ-I:simuFdubVEc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=f-dTArBPQ-I:simuFdubVEc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=f-dTArBPQ-I:simuFdubVEc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=f-dTArBPQ-I:simuFdubVEc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=f-dTArBPQ-I:simuFdubVEc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChadMyersBlog/~4/f-dTArBPQ-I" height="1" width="1"/&gt;</description><category domain="http://www.lostechies.com/blogs/chad_myers/archive/tags/Misc/default.aspx">Misc</category><category domain="http://www.lostechies.com/blogs/chad_myers/archive/tags/Agile/default.aspx">Agile</category><category domain="http://www.lostechies.com/blogs/chad_myers/archive/tags/NHibernate/default.aspx">NHibernate</category><feedburner:origLink>http://www.lostechies.com/blogs/chad_myers/archive/2009/06/09/some-quick-updates.aspx</feedburner:origLink></item><item><title>Lifecycle of an open source project</title><link>http://feedproxy.google.com/~r/ChadMyersBlog/~3/-Ioeva9PBrA/lifecycle-of-an-open-source-project.aspx</link><pubDate>Thu, 28 May 2009 16:58:05 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:21293</guid><dc:creator>chadmyers</dc:creator><slash:comments>7</slash:comments><wfw:commentRss>http://www.lostechies.com/blogs/chad_myers/rsscomments.aspx?PostID=21293</wfw:commentRss><comments>http://www.lostechies.com/blogs/chad_myers/archive/2009/05/28/lifecycle-of-an-open-source-project.aspx#comments</comments><description>&lt;p&gt;I’ve had several people ask me about the state of various open source projects that I’m involved with or advocate.&amp;#160; They ask questions such as “Is it alpha or beta?”, “Should we start using it?”, and “Where can I get started learning more?”.&lt;/p&gt;  &lt;p&gt;I find these questions difficult to answer since they’re very relative and subjective depending on your environment, tolerance for change, tolerance for bugs, issues with “bleeding edge” technology, etc.&amp;#160; &lt;/p&gt;  &lt;p&gt;In an effort to try to come up with a more objective framework for answering these types of questions, I decided to take a stab at putting into words my experience with various frameworks and how they have progressed in their lifecycle.&lt;/p&gt;  &lt;h2&gt;Phase 1: Concept&lt;/h2&gt;  &lt;p&gt;Some ideas have been kicked around by a few people. Some spike code has been written. A project site is up (Google Code, CodePlex, etc) and there is maybe a working prototype to show off and talk about.&amp;#160; Definitely no documentation, wiki, or anything like that. There may be a blog post or two about the concepts.&lt;/p&gt;  &lt;h2&gt;Phase 2: Bootstrap&lt;/h2&gt;  &lt;p&gt;There are one or two serious authors/committers.&amp;#160; There might already be one or two actual users experimenting with the framework.&amp;#160; The build is continually in a “works on my machine!&amp;quot; state.&amp;#160; Some more blog posts have been done and maybe a wiki with a few articles, but otherwise no docs to speak of.&lt;/p&gt;  &lt;h2&gt;Phase 3: Early Development &lt;/h2&gt;  &lt;p&gt;A few more committers have signed on, but still there is only one or two primary contributors. A few more users have started playing with it now and are providing feedback.&amp;#160; A mailing list has certainly been set up by now, if not earlier. The build is more stable and works in many environments.&amp;#160; More blog posts and wiki articles have emerged, but still no serious documentation effort yet.&lt;/p&gt;  &lt;h2&gt;Phase 4: Early Adoption &lt;/h2&gt;  &lt;p&gt;More committers are signing on now and contributing more and more.&amp;#160; The project is at a state with many of the baseline features are done and the product is quite usable now.&amp;#160; There are a few dozen users experimenting with it and even building some interesting applications upon it.&amp;#160; Multiple people are blogging about it. The wiki is starting to materialize into categories and sub-topics.&amp;#160; Some sparse documentation has started to emerge in the form of some limited API docs and some FAQ’s and getting started guides.&lt;/p&gt;  &lt;h2&gt;Phase 5: Development &lt;/h2&gt;  &lt;p&gt;There are several devoted committers now, cranking out serious features and functionality.&amp;#160; There are dozens of users – approaching 100 or more.&amp;#160; There is an automated (nightly?) build. Binaries are available for download regularly.&amp;#160; Many people are blogging about it and buzz is growing.&amp;#160; The wiki is really taking shape and being fleshed out.&amp;#160; At this point documentation is “moderate” and is growing into more scenarios and topics. &lt;/p&gt;  &lt;h2&gt;Phase 6: Adoption&lt;/h2&gt;  &lt;p&gt;Many people are submitting patches and other forms of contributions. The inner circle of committers is growing.&amp;#160; There are more than 100 users, perhaps several hundred.&amp;#160; There are frequent “point” releases available for download. There’s now likely a basic installer which helps configure your environment for the framework.&amp;#160; Frequent, in-depth blog posts by noted authors.&amp;#160; The Wiki is now very rich and there are frequent contributions.&amp;#160; Documentation at this point is “adequate”.&amp;#160; You would likely start seeing “contrib” projects sprouting up here and there and coalescing .&lt;/p&gt;  &lt;h2&gt;Phase 7: Maturity&lt;/h2&gt;  &lt;p&gt;There are so many patches and contributors that a hierarchy has been set up to evaluate and approve changes.&amp;#160; Multiple releases creates management issues with patches and defects requiring more organization. There over a thousan users by now and like thousands.&amp;#160; There are releases and installers for various scenarios (maybe x86/x64, or a Mono compatible release, etc).&amp;#160; There is lots of documentation activity and many contrib projects have emerged.&lt;/p&gt;  &lt;h2&gt;Phase 8: Mainstream &lt;/h2&gt;  &lt;p&gt;By now, many of the original contributors have moved on or are less involved. A new generation of contributors have taken over and are taking the project into different directions and expanding it greatly.&amp;#160; There are hundreds of thousands of users. Perhaps there are even consulting companies forming business services around the project and offering commercial support.&amp;#160; There are now multiple “dot-oh” releases. There is no doubt this project is here to stay and provides real value to people.&amp;#160; The project has its own active web site with lots of content, guides, add-ons, forums, blogs, etc.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=21293" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=-Ioeva9PBrA:pZaraBWLHAU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=-Ioeva9PBrA:pZaraBWLHAU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=-Ioeva9PBrA:pZaraBWLHAU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=-Ioeva9PBrA:pZaraBWLHAU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=-Ioeva9PBrA:pZaraBWLHAU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=-Ioeva9PBrA:pZaraBWLHAU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=-Ioeva9PBrA:pZaraBWLHAU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChadMyersBlog/~4/-Ioeva9PBrA" height="1" width="1"/&gt;</description><category domain="http://www.lostechies.com/blogs/chad_myers/archive/tags/Open+source/default.aspx">Open source</category><feedburner:origLink>http://www.lostechies.com/blogs/chad_myers/archive/2009/05/28/lifecycle-of-an-open-source-project.aspx</feedburner:origLink></item><item><title>Austin CodeCamp ‘09: Quite Possibly Better than Bacon</title><link>http://feedproxy.google.com/~r/ChadMyersBlog/~3/Kqes1iabV6Y/austin-codecamp-09-quite-possibly-better-than-bacon.aspx</link><pubDate>Sun, 17 May 2009 21:13:11 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:21046</guid><dc:creator>chadmyers</dc:creator><slash:comments>7</slash:comments><wfw:commentRss>http://www.lostechies.com/blogs/chad_myers/rsscomments.aspx?PostID=21046</wfw:commentRss><comments>http://www.lostechies.com/blogs/chad_myers/archive/2009/05/17/austin-codecamp-09-quite-possibly-better-than-bacon.aspx#comments</comments><description>&lt;h2&gt;You should go to Austin CodeCamp ‘09.&lt;/h2&gt;  &lt;p&gt;That’s a pretty sensationalistic title, I’ll give you that. I’m very serious though, &lt;a href="http://www.adnug.org/AustinCodeCamp09/"&gt;Austin CodeCamp ‘09&lt;/a&gt; may actually prove to be better than bacon and even -- yes, I’m going all the way here – cookie dough ice cream!&amp;#160; LosTechies’ very own &lt;a href="http://hex.lostechies.com/"&gt;Eric Hexter&lt;/a&gt;&lt;strong&gt;&lt;/strong&gt; and &lt;a href="http://johnteague.lostechies.com/"&gt;John Teague&lt;/a&gt; have put in some late nights getting this shindig together (and possibly other people – leave a comment please if you were involved, don’t be shy!) and they’ve done a bang-up job.&lt;/p&gt;  &lt;h2&gt;LosTechies will be there in force&lt;/h2&gt;  &lt;p&gt;The Fraternity of the Donkey (or, in the future, the Universal Order of the Donkey should we ever manage to convince a blogger of the female variety to post here) had the idea that many of us would pitch in and do a bunch of CodeCamp sessions.&lt;/p&gt;  &lt;p&gt;Many of us love the Central Texas region (specifically Austin and San Antonio) and we love &lt;a href="http://www.adnug.org/"&gt;ADNUG&lt;/a&gt; and &lt;a href="http://www.adnug.org/AustinCodeCamp09/"&gt;Austin CodeCamp&lt;/a&gt;. We wish to see these things continue in the future, so we’re going to present as much as we can.&amp;#160; &lt;/p&gt;  &lt;p&gt;You can see here that there is quite &lt;a href="http://www.adnug.org/AustinCodeCamp09/Proposal/List"&gt;an illustrious list of available sessions&lt;/a&gt;.&amp;#160; Eric Hexter has posted &lt;a href="http://www.lostechies.com/blogs/hex/archive/2009/05/16/austin-code-camp-sessions-voting-results.aspx"&gt;the results of the voting&lt;/a&gt; and it looks like we’re going to have really good turnout.&lt;/p&gt;  &lt;p&gt;Check out what the Los Techies crew has in store for you at the end of May:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Sneak peek at C# 4.0 – &lt;a href="http://jimmybogard.lostechies.com/"&gt;Jimmy Bogard&lt;/a&gt; (1 hour)&lt;/li&gt;    &lt;li&gt;Git for people – &lt;a href="http://agilejoe.lostechies.com/"&gt;Joe Ocampo&lt;/a&gt; (1 hour)&lt;/li&gt;    &lt;li&gt;Project Automation – Learn about Build and Deployment Automation – &lt;a href="http://hex.lostechies.com/"&gt;Eric Hexter&lt;/a&gt; (2 hours)&lt;/li&gt;    &lt;li&gt;S.O.L.I.D. Software Development: Achieving Object Oriented Principles, One Step At A Time – &lt;a href="http://derickbailey.lostechies.com"&gt;Derick Bailey&lt;/a&gt; (2 hours)&lt;/li&gt;    &lt;li&gt;Designing Views in ASP.NET MVC – &lt;a href="http://jimmybogard.lostechies.com/"&gt;Jimmy Bogard&lt;/a&gt; (1 hour)&lt;/li&gt;    &lt;li&gt;Put your MVC Views in Hyperdrive with T4 Templates – &lt;a href="http://hex.lostechies.com/"&gt;Eric Hexter&lt;/a&gt; (1 hour)&lt;/li&gt;    &lt;li&gt;Search Enabling Applications with Lucene.NET&amp;#160; - &lt;a href="http://rhouston.lostechies.com"&gt;Ray Houston&lt;/a&gt; (2 hours)&lt;/li&gt;    &lt;li&gt;Test Driven JavaScript – &lt;a href="http://johnteague.lostechies.com/"&gt;John Teague&lt;/a&gt; (2 hours)&lt;/li&gt;    &lt;li&gt;Introduction to FubuMVC – &lt;a href="http://chadmyers.lostechies.com/"&gt;Chad Myers&lt;/a&gt; (2 hours)&lt;/li&gt;    &lt;li&gt;Introduction to Scrumban – &lt;a href="http://agilejoe.lostechies.com/"&gt;Joe Ocampo&lt;/a&gt; (2 hours)&lt;/li&gt;    &lt;li&gt;Enterprise Architecture Patterns: Presentation, Business Logic, and Persistence – &lt;a href="http://johnteague.lostechies.com/"&gt;John Teague&lt;/a&gt; and &lt;a href="http://chadmyers.lostechies.com/"&gt;Chad Myers&lt;/a&gt; (2 hours)&lt;/li&gt;    &lt;li&gt;Decoupling Workflow From Forms With An Application Controller And IoC Container – &lt;a href="http://derickbailey.lostechies.com"&gt;Derick Bailey&lt;/a&gt; (2 hours)&lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;Twenty Hours!&lt;/h2&gt;  &lt;p&gt;I dunno about you, but all of these presentations look like awesome presentations in their own right, but coupled together, they present a mighty, unstoppable force of knowledge enhancement!&amp;#160; No? Too much?&amp;#160; Ok, how ‘bout this:&amp;#160; Unless my math is wrong, that’s &lt;strong&gt;&lt;em&gt;TWENTY (20, ONE SCORE)&lt;/em&gt;&lt;/strong&gt; information-packed hours presented by experienced, leaders in the industry.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=21046" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=Kqes1iabV6Y:INGsdIGrFak:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=Kqes1iabV6Y:INGsdIGrFak:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=Kqes1iabV6Y:INGsdIGrFak:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=Kqes1iabV6Y:INGsdIGrFak:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=Kqes1iabV6Y:INGsdIGrFak:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=Kqes1iabV6Y:INGsdIGrFak:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=Kqes1iabV6Y:INGsdIGrFak:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChadMyersBlog/~4/Kqes1iabV6Y" height="1" width="1"/&gt;</description><category domain="http://www.lostechies.com/blogs/chad_myers/archive/tags/CodeCamp/default.aspx">CodeCamp</category><category domain="http://www.lostechies.com/blogs/chad_myers/archive/tags/LosTechies/default.aspx">LosTechies</category><feedburner:origLink>http://www.lostechies.com/blogs/chad_myers/archive/2009/05/17/austin-codecamp-09-quite-possibly-better-than-bacon.aspx</feedburner:origLink></item><item><title>I need some peer review on this</title><link>http://feedproxy.google.com/~r/ChadMyersBlog/~3/feM_h1G87tc/i-need-some-peer-review-on-this.aspx</link><pubDate>Tue, 05 May 2009 04:21:00 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:20799</guid><dc:creator>chadmyers</dc:creator><slash:comments>15</slash:comments><wfw:commentRss>http://www.lostechies.com/blogs/chad_myers/rsscomments.aspx?PostID=20799</wfw:commentRss><comments>http://www.lostechies.com/blogs/chad_myers/archive/2009/05/05/i-need-some-peer-review-on-this.aspx#comments</comments><description>&lt;p&gt;So I have a problem where I have an open type:&lt;/p&gt;
&lt;div class="csharpcode-wrapper"&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; ThunderdomeActionInvoker&amp;lt;TController, TInput, TOutput&amp;gt; 
    : IControllerActionInvoker
    &lt;span class="kwrd"&gt;where&lt;/span&gt; TController : &lt;span class="kwrd"&gt;class&lt;/span&gt;
    &lt;span class="kwrd"&gt;where&lt;/span&gt; TInput : &lt;span class="kwrd"&gt;class&lt;/span&gt;, &lt;span class="kwrd"&gt;new&lt;/span&gt;()
    &lt;span class="kwrd"&gt;where&lt;/span&gt; TOutput : &lt;span class="kwrd"&gt;class&lt;/span&gt;
{
    &lt;span class="rem"&gt;/*...*/&lt;/span&gt;
}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;And I need to make a generic one of these bad-boys and then &amp;ldquo;new&amp;rdquo; it up.&amp;nbsp; The only problem is, I don&amp;rsquo;t know whether my candidate/proposed type for TInput meets the &amp;ldquo;class&amp;rdquo; and/or &amp;ldquo;new()&amp;rdquo; constraints.&amp;nbsp; There doesn&amp;rsquo;t appear to be a Type.TryMakeGenericType() method and calling MakeGenericType() blindly will toss you up a nice fat ArgumentException to catch.&lt;/p&gt;
&lt;p&gt;I did some cursory searching, but my Google-fu has failed me this day.&amp;nbsp; Is there nothing to do this?&amp;nbsp; If not, then I scrapped something together and I wanted to see what you all thought of this just in case I&amp;rsquo;m really the first person to have needed this.&amp;nbsp; I haven&amp;rsquo;t fully unit tested this (this was a spike, so I didn&amp;rsquo;t test-drive this&amp;hellip; I know&amp;hellip; SHAME), so don&amp;rsquo;t just COPY AND PASTE this or bad things will happen including 7 years bad luck and maybe some rain coming in through your windows.&lt;/p&gt;
&lt;div class="csharpcode-wrapper"&gt;
&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;bool&lt;/span&gt; MeetsSpecialGenericConstraints(Type genericArgType, Type proposedSpecificType)
{
    var gpa = genericArgType.GenericParameterAttributes;
    var constraints = gpa &amp;amp; GenericParameterAttributes.SpecialConstraintMask;

    &lt;span class="rem"&gt;// No constraints, away we go!&lt;/span&gt;
    &lt;span class="kwrd"&gt;if&lt;/span&gt; (constraints == GenericParameterAttributes.None)
        &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;

    &lt;span class="rem"&gt;// &amp;quot;class&amp;quot; constraint and this is a value type&lt;/span&gt;
    &lt;span class="kwrd"&gt;if&lt;/span&gt; ((constraints &amp;amp; GenericParameterAttributes.ReferenceTypeConstraint) != 0
        &amp;amp;&amp;amp; proposedSpecificType.IsValueType )
    {
        &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;
    }
           
    &lt;span class="rem"&gt;// &amp;quot;struct&amp;quot; constraint and this is a value type&lt;/span&gt;
    &lt;span class="kwrd"&gt;if&lt;/span&gt; ((constraints &amp;amp; GenericParameterAttributes.NotNullableValueTypeConstraint) != 0
        &amp;amp;&amp;amp; ! proposedSpecificType.IsValueType)
    {
        &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;
    }

    &lt;span class="rem"&gt;// &amp;quot;new()&amp;quot; constraint and this type has no default constructor&lt;/span&gt;
    &lt;span class="kwrd"&gt;if&lt;/span&gt; ((constraints &amp;amp; GenericParameterAttributes.DefaultConstructorConstraint) != 0
        &amp;amp;&amp;amp; proposedSpecificType.GetConstructor(Type.EmptyTypes) == &lt;span class="kwrd"&gt;null&lt;/span&gt; )
    {
        &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;false&lt;/span&gt;;
    }

    &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;true&lt;/span&gt;;
}&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;Thoughts?&amp;nbsp; Obvious bugs?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=20799" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=feM_h1G87tc:0uw5DoZ434I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=feM_h1G87tc:0uw5DoZ434I:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=feM_h1G87tc:0uw5DoZ434I:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=feM_h1G87tc:0uw5DoZ434I:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=feM_h1G87tc:0uw5DoZ434I:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=feM_h1G87tc:0uw5DoZ434I:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=feM_h1G87tc:0uw5DoZ434I:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChadMyersBlog/~4/feM_h1G87tc" height="1" width="1"/&gt;</description><category domain="http://www.lostechies.com/blogs/chad_myers/archive/tags/.NET/default.aspx">.NET</category><category domain="http://www.lostechies.com/blogs/chad_myers/archive/tags/GenericFun/default.aspx">GenericFun</category><feedburner:origLink>http://www.lostechies.com/blogs/chad_myers/archive/2009/05/05/i-need-some-peer-review-on-this.aspx</feedburner:origLink></item><item><title>To MVC or to WebForms?</title><link>http://feedproxy.google.com/~r/ChadMyersBlog/~3/Qal_XO2IGD8/to-mvc-or-to-webforms.aspx</link><pubDate>Mon, 27 Apr 2009 22:23:26 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:20646</guid><dc:creator>chadmyers</dc:creator><slash:comments>34</slash:comments><wfw:commentRss>http://www.lostechies.com/blogs/chad_myers/rsscomments.aspx?PostID=20646</wfw:commentRss><comments>http://www.lostechies.com/blogs/chad_myers/archive/2009/04/27/to-mvc-or-to-webforms.aspx#comments</comments><description>&lt;p&gt;In case you haven’t been following it, there’s a sort of blog storm happening around whether or not you should learn ASP.NET MVC (or indeed MVC in general) or stick with Web Forms.&lt;/p&gt;  &lt;p&gt;You can follow the storm here:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blog.wekeroad.com/blog/i-spose-ill-just-say-it-you-should-learn-mvc/"&gt;Rob Connery’s Post&lt;/a&gt; (which also has links to some of the progenitor posts)&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blog.theaccidentalgeek.com/post/2009/04/23/I-Spose-Irsquo3bll-Just-Say-It-Still-Waiting-For-a-GOOD-Reason-to-Learn-MVC.aspx"&gt;Joe Brinkman’s Post&lt;/a&gt; (which is sort of a response to Rob, plus some extra commentary)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Ok, so now that you’re caught up, I’d like to try to sum up this whole argument with this piece of advice:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Productive Bliss&lt;/strong&gt;: If you’re happy with WebForms, and feel that it’s delivering you good value and you’re not sure what this “pain” or “friction” is that everyone keeps talking about, then you definitely should stay on Web Forms. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Disappointed Disillusionment&lt;/strong&gt;: If you generally like WebForms, but you keep bumping into problems (long postbacks, viewstate continually causing issues for you, hard to test, etc, etc), then you should start looking into the MVC pattern in general, and maybe start dipping your toe in some of the content over at &lt;a href="http://www.asp.net/mvc"&gt;www.asp.net/mvc&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Disenfranchised Frustration&lt;/strong&gt;: Let’s say you came to ASP.NET from PHP, Java, ColdFusion, or some other framework and you like ASP.NET, but you can’t believe how ridiculously hard some tasks are compared to PHP, CF, or some other framework you used.&amp;#160; You like .NET and don’t want to go back, but insist there must be a better way, definitely go check out &lt;a&gt;ASP.NET MVC&lt;/a&gt; right now.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Diabolical Disgust&lt;/strong&gt;:&amp;#160; If you’re appalled at how tightly coupled, SOLID-violating, and horribly mis-abstracted ASP.NET WebForms is, not to mention how completely impossible it is to write testable code, then you might think about skipping both ASP.NET Web Forms and ASP.NET MVC, going straight to something further like &lt;a href="http://trac.caffeine-it.com/openrasta"&gt;OpenRASTA&lt;/a&gt; or even &lt;a href="http://fubumvc.pbwiki.com/"&gt;FubuMVC&lt;/a&gt; (if you dare).&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=20646" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=Qal_XO2IGD8:V4hLq9acFmw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=Qal_XO2IGD8:V4hLq9acFmw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=Qal_XO2IGD8:V4hLq9acFmw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=Qal_XO2IGD8:V4hLq9acFmw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=Qal_XO2IGD8:V4hLq9acFmw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=Qal_XO2IGD8:V4hLq9acFmw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=Qal_XO2IGD8:V4hLq9acFmw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChadMyersBlog/~4/Qal_XO2IGD8" height="1" width="1"/&gt;</description><category domain="http://www.lostechies.com/blogs/chad_myers/archive/tags/ASP.NET+MVC/default.aspx">ASP.NET MVC</category><category domain="http://www.lostechies.com/blogs/chad_myers/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://www.lostechies.com/blogs/chad_myers/archive/tags/FubuMVC/default.aspx">FubuMVC</category><feedburner:origLink>http://www.lostechies.com/blogs/chad_myers/archive/2009/04/27/to-mvc-or-to-webforms.aspx</feedburner:origLink></item><item><title>Virtual ALT.NET Meeting about S#harp Architecture</title><link>http://feedproxy.google.com/~r/ChadMyersBlog/~3/AXrO0n1Vx4k/virtual-alt-net-meeting-about-s-harp-architecture.aspx</link><pubDate>Mon, 20 Apr 2009 05:24:01 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:20394</guid><dc:creator>chadmyers</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://www.lostechies.com/blogs/chad_myers/rsscomments.aspx?PostID=20394</wfw:commentRss><comments>http://www.lostechies.com/blogs/chad_myers/archive/2009/04/20/virtual-alt-net-meeting-about-s-harp-architecture.aspx#comments</comments><description>&lt;p&gt;The VAN is still going strong, thanks to &lt;a href="http://www.zachariahyoung.com/zy/post/2009/04/19/A-Kick-Butt-evening-of-Sharp-Architecture-with-the-one-and-only-Billy-McCafferty-at-the-Helm.aspx"&gt;Zachariah Young&lt;/a&gt; for all his dedication and hard work! We’re looking for feedback on the format and topics. Please opine on the &lt;a href="http://groups.google.com/group/virtualaltnet/"&gt;Virtual ALT.NET Mailing List&lt;/a&gt; (they’re up to 286 members now!).&lt;/p&gt;  &lt;p&gt;This week there’ll be a speaker:&amp;#160; Billy McCafferty on S#harp Architecture.&amp;#160; Zach asked if I could post a little something about the upcoming meeting and I’m happy to oblige:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Speaker Bio for this week. Who is and what makes this Billy McCafferty guy tick?      &lt;br /&gt;Well he is a long time developer and a hopeless romantic when it comes       &lt;br /&gt;to writing beautiful software. Billy currently leads a double life       &lt;br /&gt;between helping to run a small training and consulting company known       &lt;br /&gt;as Codai (which will be getting a new website very very soon) and       &lt;br /&gt;filling the role of lead developer and architect with Parsons       &lt;br /&gt;Brinckerhoff. After Billy gets his life back – which should be after       &lt;br /&gt;the release of S#arp Architecture 1.0 – expect to see him soon at       &lt;br /&gt;&lt;a href="http://ALT.NET"&gt;ALT.NET&lt;/a&gt; and other development conferences. &lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;He will be demonstrating the latest cut of S#harp Architecture 1.0      &lt;br /&gt;with a 45-50 minute non-PPT presentation. &lt;/p&gt;    &lt;p&gt;Bring your opinions and attention. Questions and Answer will be served      &lt;br /&gt;also. The drinks as usual are up to the participants. &lt;/p&gt;    &lt;p&gt;Should be a fun evening. See you all there. &lt;/p&gt;    &lt;p&gt;Meeting details. &lt;/p&gt;    &lt;p&gt;Where and When      &lt;br /&gt;Start Time: Wednesday, April 22, 2009 9:00 PM GMT/UTC - 5:00 (&lt;strong&gt;CDT&lt;/strong&gt;)       &lt;br /&gt;End Time: Wednesday, April 22, 2009 12:00 PM GMT/UTC - 5:00 (&lt;strong&gt;CDT&lt;/strong&gt;)       &lt;br /&gt;Attendee URL:&lt;a href="http://snipr.com/virtualaltnet"&gt;http://snipr.com/virtualaltnet&lt;/a&gt;&amp;#160; (Live Meeting) &lt;/p&gt;&lt;/blockquote&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=20394" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=AXrO0n1Vx4k:qIkzfGmZahw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=AXrO0n1Vx4k:qIkzfGmZahw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=AXrO0n1Vx4k:qIkzfGmZahw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=AXrO0n1Vx4k:qIkzfGmZahw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=AXrO0n1Vx4k:qIkzfGmZahw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=AXrO0n1Vx4k:qIkzfGmZahw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=AXrO0n1Vx4k:qIkzfGmZahw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChadMyersBlog/~4/AXrO0n1Vx4k" height="1" width="1"/&gt;</description><category domain="http://www.lostechies.com/blogs/chad_myers/archive/tags/VAN/default.aspx">VAN</category><feedburner:origLink>http://www.lostechies.com/blogs/chad_myers/archive/2009/04/20/virtual-alt-net-meeting-about-s-harp-architecture.aspx</feedburner:origLink></item><item><title>Excelling in a job interview</title><link>http://feedproxy.google.com/~r/ChadMyersBlog/~3/JRfr7JzAuEk/excelling-in-a-job-interview.aspx</link><pubDate>Fri, 17 Apr 2009 04:12:41 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:20358</guid><dc:creator>chadmyers</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://www.lostechies.com/blogs/chad_myers/rsscomments.aspx?PostID=20358</wfw:commentRss><comments>http://www.lostechies.com/blogs/chad_myers/archive/2009/04/17/excelling-in-a-job-interview.aspx#comments</comments><description>&lt;p&gt;My friend and co-worker &lt;a href="http://blogs.dovetailsoftware.com/blogs/gsherman/"&gt;Gary Sherman&lt;/a&gt; recently tweeted this and I thought I would share it with you:&lt;/p&gt;  &lt;p&gt;How to Nail an Interview:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.howtonailaninterview.com/"&gt;http://www.howtonailaninterview.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;(for my English-as-a-second-language friends, ‘nail’ here means ‘to achieve great success’ – the text of the link is sincere, but the videos are most definitely sarcastic)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;img title="Photograph copyright Ed Murray/The Star-Ledger" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;margin-left:0px;margin-right:0px;border-right-width:0px;" height="484" alt="Photograph copyright Ed Murray/The Star-Ledger" src="http://www.lostechies.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/chad_5F00_myers/large_5F00_firehousefire_5F00_3.jpg" width="316" align="right" border="0" /&gt;&lt;/p&gt;  &lt;p&gt;Oh yeah, one other thing I’d like to mention while we’re on the subject of job interviews:&amp;#160; If you’re applying for&amp;#160; a professional job, be a professional.&amp;#160; Professionals are good at what they do, but above all, they take everything in stride and seek solutions not add to problems.&amp;#160; “It takes a gentleman to suffer ignorance and smile”, the saying goes. And so it takes a professional to suffer indignity with patience.&amp;#160; No matter how bad that interview went, no matter how idiotic or asinine the interviewer may have been, do not, under &lt;em&gt;any circumstances&lt;/em&gt;, send an email to the interviewer like this (sic. exactly preserved):&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Sorry that was not an interview. That was big joke, interview are not performed Like that. Interviews are two ways, in the end there is an opportunity given to Candidate to ask question. Any one can write a Blog, it may be something new for you but they are out there for more than fifty years, unfortunately you just learn about them. Keep riding the clock and wasting people&amp;#39;s time, after all you don&amp;#39;t need to hire anyone. I have been doing this successfully for twenty years and Have plenty of Ave. &lt;/p&gt;    &lt;p&gt;- [Applicant for software tester position] &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I’m going to need a mop and 3 buckets to clean up the irony dripping from this one.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=20358" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=JRfr7JzAuEk:GE9JVfYtAFw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=JRfr7JzAuEk:GE9JVfYtAFw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=JRfr7JzAuEk:GE9JVfYtAFw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=JRfr7JzAuEk:GE9JVfYtAFw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=JRfr7JzAuEk:GE9JVfYtAFw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=JRfr7JzAuEk:GE9JVfYtAFw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=JRfr7JzAuEk:GE9JVfYtAFw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChadMyersBlog/~4/JRfr7JzAuEk" height="1" width="1"/&gt;</description><category domain="http://www.lostechies.com/blogs/chad_myers/archive/tags/Advice/default.aspx">Advice</category><feedburner:origLink>http://www.lostechies.com/blogs/chad_myers/archive/2009/04/17/excelling-in-a-job-interview.aspx</feedburner:origLink></item><item><title>Virtual ALT.NET Meeting Tonight</title><link>http://feedproxy.google.com/~r/ChadMyersBlog/~3/Wql_dUJ7TUE/virtual-alt-net-meeting-tonight.aspx</link><pubDate>Wed, 01 Apr 2009 14:18:32 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:20112</guid><dc:creator>chadmyers</dc:creator><slash:comments>3</slash:comments><wfw:commentRss>http://www.lostechies.com/blogs/chad_myers/rsscomments.aspx?PostID=20112</wfw:commentRss><comments>http://www.lostechies.com/blogs/chad_myers/archive/2009/04/01/virtual-alt-net-meeting-tonight.aspx#comments</comments><description>&lt;p&gt;Zachariah Young has been rockin’ the Virtual ALT.NET (VAN) meetings for the past several months. There’s been good turnout and good discussions.&amp;#160; He’s kicking it up a notch and asking members of the community to present something interesting at each meeting.&lt;/p&gt;  &lt;p&gt;This week, Zachariah has asked Yegor Yarko to speak.&amp;#160; He joined us in last week&amp;#39;s call and was very helpful in answering questions.&amp;#160; He will be doing a demo of Team City and also showing us other scenarios using Team City. &lt;/p&gt;  &lt;p&gt;Also if you have any other topics or questions about Team City, Yegor has asked that you submit them to the VAN Google group: &lt;a href="http://groups.google.com/group/virtualaltnet"&gt;http://groups.google.com/group/virtualaltnet&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;VAN’s are Microsoft LiveMeeting events. The details are below:&lt;/p&gt;  &lt;p&gt;Start Time: Wednesday,&amp;#160; April 1, 2009 9:00 PM GMT -5 (CDT)    &lt;br /&gt;End Time: Wednesday,&amp;#160; April 1, 2009 12:00 PM GMT -5 (CdT)     &lt;br /&gt;Attendee URL: &lt;a href="https://izzy.chadmyers.com/exchweb/bin/redir.asp?URL=http://snipr.com/virtualaltnet"&gt;http://snipr.com/virtualaltnet&lt;/a&gt; (Live Meeting) &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=20112" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=Wql_dUJ7TUE:Ug2udLnb3ZQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=Wql_dUJ7TUE:Ug2udLnb3ZQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=Wql_dUJ7TUE:Ug2udLnb3ZQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=Wql_dUJ7TUE:Ug2udLnb3ZQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=Wql_dUJ7TUE:Ug2udLnb3ZQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=Wql_dUJ7TUE:Ug2udLnb3ZQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=Wql_dUJ7TUE:Ug2udLnb3ZQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChadMyersBlog/~4/Wql_dUJ7TUE" height="1" width="1"/&gt;</description><category domain="http://www.lostechies.com/blogs/chad_myers/archive/tags/VAN/default.aspx">VAN</category><feedburner:origLink>http://www.lostechies.com/blogs/chad_myers/archive/2009/04/01/virtual-alt-net-meeting-tonight.aspx</feedburner:origLink></item><item><title>How to apply for a professional job</title><link>http://feedproxy.google.com/~r/ChadMyersBlog/~3/T7JLyPYb724/how-to-apply-for-a-professional-job.aspx</link><pubDate>Tue, 24 Mar 2009 02:34:55 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:19990</guid><dc:creator>chadmyers</dc:creator><slash:comments>3</slash:comments><wfw:commentRss>http://www.lostechies.com/blogs/chad_myers/rsscomments.aspx?PostID=19990</wfw:commentRss><comments>http://www.lostechies.com/blogs/chad_myers/archive/2009/03/23/how-to-apply-for-a-professional-job.aspx#comments</comments><description>&lt;p&gt;Think for a good solid 10 seconds before answering these two questions: “What does the word ‘professional’ mean to you?” and “Do you consider yourself a professional?”&amp;#160;&amp;#160; I’ll wait while you think.&lt;/p&gt;  &lt;p&gt;If you answered “Yes” to the second question, then please proceed with this blog post. Otherwise, you’re welcome to continue reading, but the following admonishments do not apply to you. So no hard feelings, OK?&lt;/p&gt;  &lt;h2&gt;First rule of applying for a professional job&lt;/h2&gt;  &lt;blockquote&gt;   &lt;p&gt;You’re either a professional or not. If you are, act and think like one. Your future job is on the line.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Since you consider yourself a professional, I would expect at least some portion of a high school education (or GED). College is great, but I’m talking remedial stuff: Basic spelling and grammar skills.&amp;#160; I would hope these would have entered your realm of knowledge.&amp;#160; Now, I know, I make mistakes and misspell things quite frequently on this blog. I should do better.&amp;#160; You read my blog because you were likely referred to me by someone else. You have a small reason to give me the benefit of the doubt and assume that I’m capable of spelling and grammar, but I was just too lazy or in a fit of writing to stop and take the time to correct.&lt;/p&gt;  &lt;p&gt;If I were applying for a job, however, I would not expect you to give me the benefit of the doubt.&amp;#160; You have no reason to trust me or even assume I’m capable of saying my “ABCs,” let alone skillfully accomplishing the professional tasks you set before me as my potential employer.&amp;#160; Thus, the only way people will even consider you for a professional position is if you give them every reason to believe you’re a professional. Spelling and grammar mistakes on your cover letter and/or Resume/CV are simply unacceptable.&amp;#160; Do not make this mistake. If you can’t handle even this simple task, you might as well go home.&lt;/p&gt;  &lt;p&gt;Tips:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Have a peer or two review your letters, resume/CV, and any other artifacts you plan on submitting to potential employers. If you have a mother or father or sibling around, have them look at it, too. Sometimes having a non-technical person review things helps a lot as they don’t gloss over things as easily as someone used to seeing all the key words and acronyms. &lt;/li&gt;    &lt;li&gt;If you refer your potential employer to online materials, make sure those are of the highest quality.&amp;#160; &lt;/li&gt;    &lt;li&gt;If you refer your potential employer to your blog or other personal/semi-professional works, and you know your they have lower quality than your normal, professional works (as is the case with my blog), point this out to your employer and let them know that what your own intentions and expectations of your blog are. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Second rule of applying for a professional job&lt;/h2&gt;  &lt;blockquote&gt;   &lt;p&gt;Find out as much about the job as you can in a reasonable period of time&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;For crying out loud, take 2 minutes to look up the company and a little bit about them so you can talk intelligently in your cover letter. Who is the CEO? Who is your primary contact there and what role do they play (supervisor, HR manager, etc)? Sometimes that information isn’t available. Try to pry it out of a recruiter or see if you can find other job posting for the same position on other sites and see if any more info is available there.&amp;#160; Don’t spend 2 weeks researching – that’s just creepy. But don’t spend 0 seconds either.&amp;#160; &lt;/p&gt;  &lt;p&gt;If you’re a professional like you say you are, you’re likely going to be at this company for at least a year, hopefully 5 or more.&amp;#160; It behooves you to at least have SOME idea what they do so you don’t get halfway through the hiring process only to find out that they are preparing the Earth for an alien invasion or something.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Third rule of applying for a professional job&lt;/h2&gt;  &lt;blockquote&gt;   &lt;p&gt;Take some time to hand-craft a cover letter specifically for that employer and that position&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;If you don’t care enough to write up a letter for this position and you’re going to use a form-letter or, worse yet, no letter (or just a simple email), then I don’t care enough to hire you. Sorry, go sell “lazy and uncaring” somewhere else, we’re all stocked up here.&lt;/p&gt;  &lt;h3&gt;Third Rule Clarified #1:&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;Spell check. Check your spelling. They actually make computers that can check basic spelling mistakes, you know? Oh yeah, and maybe, just once, read through what you wrote before sending it off.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;It takes 1 minute to read back through the letter you just wrote.&amp;#160; Odds are, you’ll find that you sound like an idiot and you’ll revise it. You’ll sound much better the second time. A third time might do good, but after that you’ll start obsessing over every word and syllable. By the time you’re done you’ll probably end up with a Sonnet and your potential employer’s email server will flag it as spam anyhow.&amp;#160; Trust me, spelling and grammar are all that’s necessary. No one will check for your adherence to iambic pentameter (and if they did, you probably wouldn’t want to work there anyhow). &lt;/p&gt;  &lt;h3&gt;Third Rule Clarified #2:&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;I have a name. Use it. If you know it, that is. If you don’t know, it use as courteous language as you can. &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;“Dear Mr. Myers”, “Dear Ms. Smothers”, or even “Dear Sir or Madam” will go far in encouraging your potential employer about your professional abilities.&amp;#160; Professionals respect and address other professionals properly. If you are the professional you claim to be, you should know this. Prove it to them through your writing.&lt;/p&gt;  &lt;p&gt;Also, I expect some professional courtesy.&amp;#160; Simply ending your cover letter with “-Bob”&amp;#160; or “-THX1138” is not cool. I’m not your buddy or pal (yet?), so don’t get too familiar with me.&amp;#160; Address me properly. End your letter with two blank lines followed by words like “Sincerely,” or “Cordially,” and so forth.&amp;#160;&amp;#160; Likewise, expect to be addressed properly in return. It works both ways. If they do not treat you professionally in return, then you don’t want to work there anyhow.&lt;/p&gt;  &lt;h3&gt;Third Rule Clarified #3:&lt;/h3&gt;  &lt;blockquote&gt;   &lt;p&gt;Learn how to write a basic business letter. Most popular word processors have built-in templates!&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I’m sorry, but if you don’t even know about some of the basic features of Word or (your favorite word processor), then you’re probably not going to be able to deal with the complexities of SQL Server or the .NET Framework either.&lt;/p&gt; &lt;a href="http://www.lostechies.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/chad_5F00_myers/letter2_5F00_2.jpg"&gt;&lt;img title="letter2" style="border-top-width:0px;display:inline;border-left-width:0px;border-bottom-width:0px;margin:0px 0px 0px 15px;border-right-width:0px;" height="684" alt="letter2" src="http://www.lostechies.com/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/chad_5F00_myers/letter2_5F00_thumb.jpg" width="460" align="right" border="0" /&gt;&lt;/a&gt;   &lt;p&gt;Your letter should look something like the image to the right.&amp;#160; Tell me who you are, where you’re from, and what day you wrote this letter.&amp;#160; Tell me who you think you’re writing it to.&amp;#160;&amp;#160; Tell me you’re talking to me (Dear so and so). Tell me what you want to say. Summarize what you just told me. Tell me your feelings in this letter (sincerely, cordially, hostile, livid, etc), and then sign your name or print it again electronically.&amp;#160; Finally, if you have any attachments or anything else I should be aware of (resumes, list of references, associated review materials, etc) let me know that they are included or enclosed.&lt;/p&gt;  &lt;p&gt;For a cover letter, I’d limit it to maybe two or three paragraphs followed by a small summary paragraph.&amp;#160; In these two to three paragraphs, tell me what position you’re applying for, why you want it, and finally why you think you can do it better than anyone else.&amp;#160; Let’s be honest with ourselves, if you can’t do that, do you really want or deserve this job in the first place?&lt;/p&gt;  &lt;br /&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Fourth rule of applying for a professional job&lt;/h2&gt;  &lt;blockquote&gt;   &lt;p&gt;Prepare a resume/CV specifically for that job&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This rule might also adequately be stated “Don’t waste the hiring manager’s time.”&amp;#160; The manager to whom you’re submitting your application has taken the time to list out the things they’re interested in when looking at a candidate. They’ve given you a huge advantage in the hiring process in that you now know what they’re thinking and what they’re looking for. Seize this advantage and tailor your resume to accentuate your skills and experience in those areas where they have indicated interest. Put those skills first, discuss how your experience with those skills is important, list related work experience.&amp;#160; When I review a resume, I’m not looking for continuity of work, I’m looking for related work experience. I find myself asking the resume questions such as “Have you worked with skill XYZ in the past 2 years?” or “How much experience do you have with skill ABC?”&amp;#160; Later in the hiring process, I may inquire with a candidate about work continuity (to make sure there wasn’t a 3 year stint in federal prison, for example).&lt;/p&gt;  &lt;h3&gt;The Big List o’ Skills&lt;/h3&gt;  &lt;p&gt;Also, I’d like to discuss the “big list o’ skills” block anti-pattern at the top of every technical resume. Please don’t list me 50 skills because after 10 I’m likely to think you’re lying or that you don’t take these skills seriously.&amp;#160; Show me a few skills that you are *REALLY* proficient at.&amp;#160; Do you have some skills at which you consider yourself an “expert” (better than almost everyone else at it)? Show me those. After that, maybe show me a few other skills you have knowledge of but don’t consider yourself an expert. Then stop.&amp;#160; Don’t show me a list of things you’ve seen sitting on the shelf before or maybe typed a few keystrokes into.&amp;#160; Also, don’t show me your DEC VAX/VMS experience from 1993 or your Lotus 1-2-3 scripting skills from 1992.&amp;#160; I don’t care about these and, likely, neither does anyone else.&lt;/p&gt;  &lt;h3&gt;Work experience&lt;/h3&gt;  &lt;p&gt;When listing your work experience, keep it short, concise, and to the point.&amp;#160; Tell me what your role was (not just your job title, tell me what your responsibility was), how you met or exceeded the expectations of that role, and how you grew as a result. I don’t want your life story, give it to me quick and neat.&amp;#160; Next, give me a few bullet points about how you accomplished that. Keep it short! Really, I’m serious. I don’t want your life story, I just want to know how you approached your role and how you knocked problems out of the park.&amp;#160; Finally, if there was anything particularly interesting about that job, your role in that job, or some special accomplishment, let me know. It better be interesting and really special or don’t bother mentioning. “Leveraged strategic partnerships to forge a more cohesive success strategy” won’t do.&amp;#160; “Doubled efficiency allowing field agents to process twice as many requests in the same time resulting in a four-fold increase in revenue” will do, however. Oh yeah, things like “426 children now have full smiles” or “More than 7,000 puppies were rescued thanks to the technology we developed” will do wonders.&amp;#160; Not all of our work has that kind of social impact. If yours doesn’t, then don’t mention banal details. Tell me about how you *really* changed something (revenue and profits, improved people’s lives, helped the planet, etc).&amp;#160; If you can’t, that’s OK, but don’t waste my time with boring stuff.&lt;/p&gt;  &lt;p&gt;Next you’ll have to deal with the question about how many pages your resume should be.&amp;#160; My current thinking goes like this:&amp;#160; If you’ve hand-crafted a resume specifically for this job, it’s hard to imagine how you could go over 1 page.&amp;#160; Two pages is probably OK, 3 or more is definitely too many.&amp;#160; Odds are, your work experience isn’t &lt;em&gt;that &lt;/em&gt;interesting that you’d need 3 pages to describe it.&amp;#160; If it is, then you’re probably applying for the wrong job and you belong negotiating Israeli/Palestinian Peace or solving world hunger or something.&amp;#160; More than likely you’re tempted to write a small novel about each job you were at. Resist this temptation. It sounds harsh, but really few people care about your specific experiences at your former jobs. After they hire you and get to know you, they will hear all your war stories. The resume is not the place for telling your life story.&amp;#160; Give it to me short, sweet, and relevant. It doesn’t mean I don’t care about you, but I’m trying to find a new hire now, not a friend. We can become friends later in the process.&lt;/p&gt;  &lt;h3&gt;Proofing – you &lt;em&gt;are&lt;/em&gt; a “professional”, right?&lt;/h3&gt;  &lt;p&gt;Make sure that you’ve read and re-read your resume. Spell check it and grammar check it. Three times.&amp;#160; Then, have someone outside of your expertise area read your resume (your mother, father, friend, niece, anyone).&amp;#160; You should have a colleague read it, but keep in mind that they will likely miss the same things you did because they are like-minded. Having someone outside your normal sphere of thought will help you to catch things that your particular perspectives blind you from seeing.&amp;#160; Let me summarize this paragraph: If your resume gets to me with a spelling or grammar mistake, that’s *almost* grounds for immediate disqualification.&amp;#160; This is especially true if you’re applying for a detail-oriented position like programmer or tester.&amp;#160; If you’re applying for a tester position and you can’t even find spelling mistakes in your own resume, there’s no way I’m going to trust you to ensure that the software I write leaves my office defect-free.&lt;/p&gt;  &lt;h3&gt;Submitting your resume&lt;/h3&gt;  &lt;p&gt;Finally, when submitting the resume, use the Word document format or RTF.&amp;#160; PDF is OK.&amp;#160; TXT is so-so, but acceptable. If text, please make sure it’s formatted to be easily printable on a standard A4 or 8.5x11 sheet of paper. That means something like 74 columns and 100-ish rows (I’m not sure on those sizes, please look it up for yourself).&amp;#160; It can also be acceptable to send a link to an online resume. If you go the link route, it better be impressive and justify the fact that you didn’t send me an attachment.&amp;#160; Let me put it this way: You have inconvenienced me by requiring me to click a link and open my browser to view your resume. It better be worth my extra time.&amp;#160; Whatever you do, do NOT send me a link to a Word doc or PDF that I have to download to view. Attach it or host it online. Anything else is bad form.&amp;#160; Oh yeah, one more thing on this: If you’re going to attach the resume, make sure you actually attach it!&amp;#160; I can’t tell you how many applications I get with no file attached!&amp;#160; If you instantly correct it, I’ll give you the benefit of the doubt, but if you don’t realize you screwed up, that’s instant grounds for my surreptitiously dismissing your application. C’mon, if you can’t even figure out email, how are you going to develop or test complex systems for me?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=19990" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=T7JLyPYb724:DCdFyXQ3L8E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=T7JLyPYb724:DCdFyXQ3L8E:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=T7JLyPYb724:DCdFyXQ3L8E:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=T7JLyPYb724:DCdFyXQ3L8E:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=T7JLyPYb724:DCdFyXQ3L8E:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=T7JLyPYb724:DCdFyXQ3L8E:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=T7JLyPYb724:DCdFyXQ3L8E:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChadMyersBlog/~4/T7JLyPYb724" height="1" width="1"/&gt;</description><category domain="http://www.lostechies.com/blogs/chad_myers/archive/tags/Advice/default.aspx">Advice</category><category domain="http://www.lostechies.com/blogs/chad_myers/archive/tags/Hiring/default.aspx">Hiring</category><feedburner:origLink>http://www.lostechies.com/blogs/chad_myers/archive/2009/03/23/how-to-apply-for-a-professional-job.aspx</feedburner:origLink></item><item><title>Dovetail Hiring Software Tester/Test Engineer</title><link>http://feedproxy.google.com/~r/ChadMyersBlog/~3/cBUCzQr8qMA/dovetail-hiring-software-tester-test-engineer.aspx</link><pubDate>Thu, 19 Mar 2009 22:12:59 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:19952</guid><dc:creator>chadmyers</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://www.lostechies.com/blogs/chad_myers/rsscomments.aspx?PostID=19952</wfw:commentRss><comments>http://www.lostechies.com/blogs/chad_myers/archive/2009/03/19/dovetail-hiring-software-tester-test-engineer.aspx#comments</comments><description>&lt;p&gt;&lt;a href="http://www.dovetailsoftware.com/about/careers.aspx"&gt;http://www.dovetailsoftware.com/about/careers.aspx&lt;/a&gt;&lt;/p&gt;  &lt;h1&gt;Dovetail Hiring Senior Software Tester or Test Engineer&lt;/h1&gt;  &lt;p&gt;Work for one of the most progressive software development shops in the US. We’re building a new software product line using pioneering practices and technologies, such as:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;WatiN &lt;/li&gt;    &lt;li&gt;Selenium &lt;/li&gt;    &lt;li&gt;StoryTeller (acceptance testing framework) &lt;/li&gt;    &lt;li&gt;Test-driven development &lt;/li&gt;    &lt;li&gt;Continuous integration&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Who we’re looking for&lt;/strong&gt; Dovetail Software is staffing a new team for an innovative software project. We’re looking for someone who can help us achieve the most usable, highest quality software product. We&amp;#39;re looking for people who can empathize with the user, question whether functionality actually makes sense. We&amp;#39;re looking for people who can flush out defects, inconsistencies, and mistakes in the software. This person should also be thinking about how to automate as much as possible to constantly increase test coverage and enforce quality throughout the development process.&lt;/p&gt;  &lt;p&gt;Participation in the community (attendance of events, avid blog reader + commenter, or maybe you even have a blog yourself) will put you firmly in the running for this position. We’re looking for people that believe learning and continuous improvement are primary responsibilities of a tester. We’re hiring motivated people for a terrific opportunity with a team of recognized software development and agile community leaders.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Our development methodology&lt;/strong&gt; We are an Agile/XP shop. We work in a continuously-improving pipeline mode, not iterations or long crushing release cycles. We have a collaborative relationship with our customers. We place an emphasis on usability and how people interact with our software. We write tests before we write functional code to clarify our design intentions. We automate whatever we can. We keep the build clean. We work in an environment that maximizes communication to minimize the volume of spec documents. We build software that can effectively respond to change. We use open source tools where appropriate, and Microsoft tools where they make sense. We have executive support and visibility all the way up to the owner of the company.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;About Dovetail Software&lt;/strong&gt; Serving companies since 1995, Dovetail Software develops CRM products for global 1000 enterprises. Our product, Dovetail CRM, is a comprehensive customer service and support, logistics management, customer self service, and knowledge management suite. Dovetail is a small company with big customers and great benefits for its employees. Our outstanding compensation package includes company-assisted health, dental, and life insurance, matching 401k, and more.&lt;/p&gt;  &lt;p&gt;Email us and tell us why you’d make a great addition to our team: &lt;a href="mailto:tech-jobs@dovetailsoftware.com"&gt;tech-jobs@dovetailsoftware.com&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=19952" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=cBUCzQr8qMA:WvGV3TCRSvY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=cBUCzQr8qMA:WvGV3TCRSvY:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=cBUCzQr8qMA:WvGV3TCRSvY:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=cBUCzQr8qMA:WvGV3TCRSvY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=cBUCzQr8qMA:WvGV3TCRSvY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=cBUCzQr8qMA:WvGV3TCRSvY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=cBUCzQr8qMA:WvGV3TCRSvY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChadMyersBlog/~4/cBUCzQr8qMA" height="1" width="1"/&gt;</description><category domain="http://www.lostechies.com/blogs/chad_myers/archive/tags/Dovetail/default.aspx">Dovetail</category><category domain="http://www.lostechies.com/blogs/chad_myers/archive/tags/Hiring/default.aspx">Hiring</category><feedburner:origLink>http://www.lostechies.com/blogs/chad_myers/archive/2009/03/19/dovetail-hiring-software-tester-test-engineer.aspx</feedburner:origLink></item><item><title>ALT.NET “Mean” – How do we fix it?</title><link>http://feedproxy.google.com/~r/ChadMyersBlog/~3/NMSlDAvUraU/alt-net-mean-how-do-we-fix-it.aspx</link><pubDate>Sun, 01 Mar 2009 19:21:53 GMT</pubDate><guid isPermaLink="false">ded273ab-9e87-4979-8222-e4e2e46f1b46:19451</guid><dc:creator>chadmyers</dc:creator><slash:comments>33</slash:comments><wfw:commentRss>http://www.lostechies.com/blogs/chad_myers/rsscomments.aspx?PostID=19451</wfw:commentRss><comments>http://www.lostechies.com/blogs/chad_myers/archive/2009/03/01/alt-net-mean-how-do-we-fix-it.aspx#comments</comments><description>&lt;p&gt;I’m watching the video that Scott Hanselman graciously recorded of the “&lt;a href="http://www.kyte.tv/shanselman#uri=channels/240253/361169"&gt;ALT.NET: Why so mean?&lt;/a&gt;” session at ALT.NET Seattle.&lt;/p&gt;  &lt;p&gt;I’m rolling my eyes a lot at the discussion because it seems to miss a lot of the basic points and the severity of the minor crisis our industry has been facing for some time (lack of significant engineering discipline, serious academic pursuits, and scientific analysis of success and failure, etc).&lt;/p&gt;  &lt;p&gt;If we are mean, or I am mean (which no one has accused me/us of, but I’ll put it on myself), then I ask: What else should we be doing?&lt;/p&gt;  &lt;h2&gt;The Analogy&lt;/h2&gt;  &lt;p&gt;Consider this analogy which may best explain how I feel about the situation:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;You come home from work some evening and sit down with your daughter who’s writing a story on paper. To your abject horror, all her letters are upside down!&amp;#160; Her handwriting is decent, but the letters are all inverted.&amp;#160; You decide to pull her out of school and send her to a private school. &lt;/p&gt;    &lt;p&gt;Upon interviewing the teachers at the new school, you realize they, too, teach inverted writing. You find out that it’s a new wave of teaching that has caught the education community by storm and most every school is teaching it.&amp;#160; The teachers are delighted by this and believe that it’s what the children and parents really want. They’re proud of themselves for having solved so many problems for parents and children. They honestly believe they’re doing the right thing for the kids.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Obviously your first priority is to fix the damage done to your daughter and teach her correctly or send her to a school that does not adhere to this new, objectively wrong philosophy.&amp;#160; But what about all the other students now coming up through the school systems being damaged by this harmful teaching?&amp;#160; &lt;/p&gt;  &lt;p&gt;Sure, all these kids will be able to read and write to each other, but they will be completely functionless in the real world for at least a generation or two.&amp;#160; What a travesty! What a crime against an entire generation of children!&amp;#160; &lt;/p&gt;  &lt;h2&gt;The Breakdown&lt;/h2&gt;  &lt;p&gt;Ok, that’s overly dramatic, I realize and the analogy is a little overboard, but hopefully you get the basic point of everything.&amp;#160; Sure you could start trying to rally parents and start teaching children both methods of reading/writing, but you still have your full time job in order to feed your children.&amp;#160; How, then, could you ever compete an army of full-time teachers teaching the other method?&lt;/p&gt;  &lt;p&gt;Remember, this is an analogy, so we shouldn’t argue the analogy.&amp;#160; Yes, there are problems with it, yes it’s overly dramatic, yes it’s only illustrative not completely accurate, etc.&amp;#160; I’m not trying to demonize Microsoft, and not everything they’re doing is setting things back, but some things are. Microsoft is not perfect and some of the things they do do not help and, in fact, set things back. Can we at least agree on that?&lt;/p&gt;  &lt;p&gt;And what then are people who see the “wrong” things supposed to do with the people who are being ill-affected by the “wrong” things?&amp;#160; Let them flounder and suffer?&amp;#160; Try to educate them all?&amp;#160; Try to stop Microsoft from doing wrong things?&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;The Result: What to do?&lt;/h2&gt;  &lt;p&gt;What if Microsoft is doing more wrong things than we can possibly ever hope to keep up with (—NOTE: They’re also doing a lot of RIGHT and GREAT things… don’t get me wrong)?&amp;#160;&amp;#160; We have full time jobs. Should we quit our jobs to fight against incorrectness?&lt;/p&gt;  &lt;p&gt;What if we do try to stop Microsoft from doing these wrong things and, instead, offer feedback and try to correct them before the damage is done?&amp;#160; Sounds good. Now, what if some of the folks that are doing wrong things within Microsoft won’t listen, or dismiss the advice and proceed to damage the community?&lt;/p&gt;  &lt;p&gt;If we raise awareness of the problem, we’re “mean”.&amp;#160; What then?&lt;/p&gt;  &lt;p&gt;Worse yet, what if there are others in the community who have some profit-interest (book deals, speaking engagements, lucrative contracts) in seeing the “wrong” technology being released so they can help customers who are unable to use the technology effectively (… because it’s “wrong”!)?&amp;#160;&amp;#160; What if these people who have conflicts of interest malign us and call us “mean” and tell us to stop being “a**holes” and, basically, to shut up?&lt;/p&gt;  &lt;h2&gt;The Crux&lt;/h2&gt;  &lt;p&gt;Should we just sit down, be quite, and allow such horrific waste and loss of productivity persist in our profession?&lt;/p&gt;  &lt;p&gt;If not, how should we combat this problem (keeping in mind we have full time jobs as well and have limited personal time to dedicate to this)?&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.lostechies.com/aggbug.aspx?PostID=19451" width="1" height="1"&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=NMSlDAvUraU:Ju0G8HrIpuw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=NMSlDAvUraU:Ju0G8HrIpuw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=NMSlDAvUraU:Ju0G8HrIpuw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=NMSlDAvUraU:Ju0G8HrIpuw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=NMSlDAvUraU:Ju0G8HrIpuw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/ChadMyersBlog?a=NMSlDAvUraU:Ju0G8HrIpuw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/ChadMyersBlog?i=NMSlDAvUraU:Ju0G8HrIpuw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/ChadMyersBlog/~4/NMSlDAvUraU" height="1" width="1"/&gt;</description><category domain="http://www.lostechies.com/blogs/chad_myers/archive/tags/ALT.NET/default.aspx">ALT.NET</category><category domain="http://www.lostechies.com/blogs/chad_myers/archive/tags/Mean/default.aspx">Mean</category><feedburner:origLink>http://www.lostechies.com/blogs/chad_myers/archive/2009/03/01/alt-net-mean-how-do-we-fix-it.aspx</feedburner:origLink></item></channel></rss>
