<?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:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>TimRayburn.net</title><link>http://timrayburn.net/</link><description>Technology is a means, not an end.</description><generator>Graffiti CMS 1.2 (build 1.2.0.2308)</generator><lastBuildDate>Wed, 23 Dec 2009 17:11:30 GMT</lastBuildDate><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/TimRayburnsBlog" /><feedburner:info uri="timrayburnsblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><geo:lat>32.634203</geo:lat><geo:long>-97.144036</geo:long><item><title>Gravatars in ASP.NET MVC using HtmlHelper</title><link>http://feedproxy.google.com/~r/TimRayburnsBlog/~3/h3Cus1f1tkk/</link><pubDate>Wed, 23 Dec 2009 17:11:30 GMT</pubDate><guid isPermaLink="false">http://timrayburn.net/blog/gravatars-in-asp-net-mvc-using-htmlhelper/</guid><dc:creator>Tim</dc:creator><slash:comments>1</slash:comments><category domain="http://timrayburn.net/blog/">Blog</category><description>&lt;p&gt;I’m working on a side-project right now that is using Gravatars and found the &lt;a href="http://frickinsweet.com/ryanlanciaux.com/post/MVC-HtmlHelper-for-Gravatar.aspx"&gt;wonderful article by Ryan Lanciaux&lt;/a&gt; on creating an HtmlHelper extension.&amp;#160; His extension was good, but did not use integrate with the FluentHtml model of MvcContrib, so I refactored his original into the following class, which does the same thing, but allows for fluent building of all the options.&amp;#160; Someone will undoubtedly point out that this could have used a couple of Enumerations, and their right, but I decided the API was static enough that I’d just create the methods. Anyway, I hope someone else gets some use out of this.&lt;/p&gt;  &lt;pre class="brush: csharp"&gt;using System.Collections.Generic;
using System.Security.Cryptography;
using System.Web.Mvc;
using System.Web.Routing;
using MvcContrib.FluentHtml.Elements;
using System;
using System.Web;

public class Gravatar : Element&lt;gravatar&gt;
{
    private string _email;
    private string _default;
    private string _rating;
    private int _size;
    private string _alt;

    public Gravatar(string email) : base(&amp;quot;img&amp;quot;)
    {
        _email = email;
    }

    public Gravatar DefaultToUrl(string url)
    {
        _default = url;
        return this;
    }

    public Gravatar DefaultToIdenticon()
    {
        _default = &amp;quot;identicon&amp;quot;;
        return this;
    }

    public Gravatar DefaultToMonsterId()
    {
        _default = &amp;quot;monsterid&amp;quot;;
        return this;
    }

    public Gravatar DefaultToWavatar()
    {
        _default = &amp;quot;wavatar&amp;quot;;
        return this;
    }

    public Gravatar DefaultTo404()
    {
        _default = &amp;quot;404&amp;quot;;
        return this;
    }

    public Gravatar Size(int size)
    {
        if (size &amp;lt; 1 || size &amp;gt; 512) throw new ArgumentException(&amp;quot;Gravatars can only be between 1 and 512 in size.&amp;quot;, &amp;quot;size&amp;quot;);
        _size = size;
        return this;
    }

    public Gravatar GRated()
    {
        _rating = &amp;quot;g&amp;quot;;
        return this;
    }

    public Gravatar PGRated()
    {
        _rating = &amp;quot;pg&amp;quot;;
        return this;
    }

    public Gravatar RRated()
    {
        _rating = &amp;quot;r&amp;quot;;
        return this;
    }

    public Gravatar XRated()
    {
        _rating = &amp;quot;x&amp;quot;;
        return this;
    }

    public Gravatar AlternateText(string alt)
    {
        _alt = alt;
        return this;
    }

    protected override TagRenderMode TagRenderMode
    {
        get
        {
            return TagRenderMode.SelfClosing;
        }
    }

    public override string ToString()
    {
        var src = string.Format(&amp;quot;http://www.gravatar.com/avatar/{0}?&amp;quot;, EncryptMD5(_email));

        if (!String.IsNullOrEmpty(_rating)) src += string.Format(&amp;quot;r={0}&amp;amp;&amp;quot;, HttpUtility.UrlEncode(_rating));
        if (_size != 0) src += string.Format(&amp;quot;s={0}&amp;amp;&amp;quot;, _size);
        if (!String.IsNullOrEmpty(_default)) src += string.Format(&amp;quot;d={0}&amp;amp;&amp;quot;, HttpUtility.UrlEncode(_default));

        base.builder.MergeAttribute(&amp;quot;src&amp;quot;, src);
        base.Attr(&amp;quot;alt&amp;quot;, _alt ?? &amp;quot;Gravatar&amp;quot;);

        return base.ToString();
    }

    private static string EncryptMD5(string Value)
    {
        using(var md5 = new MD5CryptoServiceProvider())
        {
            byte[] valueArray = System.Text.Encoding.ASCII.GetBytes(Value);
            valueArray = md5.ComputeHash(valueArray);
            string encrypted = &amp;quot;&amp;quot;;
            for (int i = 0; i &amp;lt; valueArray.Length; i++)
                encrypted += valueArray[i].ToString(&amp;quot;x2&amp;quot;).ToLower();
            return encrypted;
        }
    }
}

public static class GravatarHtmlHelper
{
    public static Gravatar Gravatar(this HtmlHelper html, string email)
    {
        return new Gravatar(email);
    }
}&lt;/pre&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=h3Cus1f1tkk:YkuD4jWf1-4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?i=h3Cus1f1tkk:YkuD4jWf1-4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=h3Cus1f1tkk:YkuD4jWf1-4:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=h3Cus1f1tkk:YkuD4jWf1-4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=h3Cus1f1tkk:YkuD4jWf1-4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=h3Cus1f1tkk:YkuD4jWf1-4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?i=h3Cus1f1tkk:YkuD4jWf1-4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TimRayburnsBlog/~4/h3Cus1f1tkk" height="1" width="1"/&gt;</description><feedburner:origLink>http://timrayburn.net/blog/gravatars-in-asp-net-mvc-using-htmlhelper/</feedburner:origLink></item><item><title>I’m an MVP for 2009!</title><link>http://feedproxy.google.com/~r/TimRayburnsBlog/~3/80CT4tRlt2o/</link><pubDate>Fri, 03 Jul 2009 16:46:51 GMT</pubDate><guid isPermaLink="false">http://timrayburn.net/blog/i-rsquo-m-an-mvp-for-2009/</guid><dc:creator>The Admin</dc:creator><slash:comments>2</slash:comments><category domain="http://timrayburn.net/blog/">Blog</category><description>&lt;p&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="MVP_FullColor_ForScreen" border="0" alt="MVP_FullColor_ForScreen" align="right" src="http://timrayburn.net/files/media/image/WindowsLiveWriter/ImanMVPfor2009_A59D/MVP_FullColor_ForScreen_3.png" width="145" height="225" /&gt; A couple of days late, but I’m thrilled to announce that Microsoft has recognized me as a Most Valuable Professional again for 2009.&amp;#160; I’m always immensely honored to be counted among this incredible group of technologists.&amp;#160; MVPs are known around the world as passionate experts in their field, and I can only hope to live up to that ongoing recognition.&lt;/p&gt;  &lt;p&gt;For those of you who follow my blog for technical reasons, you’ll be pleased to know I continue to be recognized as a Connected Systems Development MVP, and that you should see a lot of interesting content regarding Code Contracts, Windows Communication Foundation, and Windows Workflow Foundation all in .NET 4 in the coming weeks.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=80CT4tRlt2o:7rHaXvSNH3E:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?i=80CT4tRlt2o:7rHaXvSNH3E:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=80CT4tRlt2o:7rHaXvSNH3E:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=80CT4tRlt2o:7rHaXvSNH3E:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=80CT4tRlt2o:7rHaXvSNH3E:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=80CT4tRlt2o:7rHaXvSNH3E:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?i=80CT4tRlt2o:7rHaXvSNH3E:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TimRayburnsBlog/~4/80CT4tRlt2o" height="1" width="1"/&gt;</description><feedburner:origLink>http://timrayburn.net/blog/i-rsquo-m-an-mvp-for-2009/</feedburner:origLink></item><item><title>New Project, New Technologies</title><link>http://feedproxy.google.com/~r/TimRayburnsBlog/~3/7fJS-Vg77VI/</link><pubDate>Sat, 27 Jun 2009 15:02:39 GMT</pubDate><guid isPermaLink="false">http://timrayburn.net/blog/new-project-new-technologies/</guid><dc:creator>The Admin</dc:creator><slash:comments>6</slash:comments><category domain="http://timrayburn.net/blog/">Blog</category><description>&lt;p&gt;Starting Monday morning I will be starting a new project for a client of my employer &lt;a href="http://improvingenterprises.com/"&gt;Improving Enterprises&lt;/a&gt;.&amp;#160; I’ve spent a good deal of time talking with my new teammates about what technologies we will be using for the project, and I thought that work might be of interest to others, so here are some of the highlights.&lt;/p&gt;  &lt;h2&gt;Technology Stack : VS2010, .NET 4, C#&lt;/h2&gt;  &lt;p&gt;The first thing that was decided, during the initial scoping phase of the project, was that this project was a nearly ideal candidate for Visual Studio 2010 and .NET 4.0.&amp;#160; How did we come to that decision?&amp;#160; The desired architecture for the project is such that certain features of WCF 4.0 and Entity Framework 4.0 would help with the implementation, and the timeline of the project is such that we have a no concerns over the current lack of the a “Go Live” license.&amp;#160; For language it was decided we will primarily be working in C#. With that decided, we get to the far more interesting pieces.&lt;/p&gt;  &lt;h2&gt;Inversion of Control : StructureMap&lt;/h2&gt;  &lt;p&gt;Obviously we are going to need an IoC container for the project, and we have settled on &lt;a href="http://structuremap.sourceforge.net"&gt;StructureMap&lt;/a&gt; for that.&amp;#160; The competition in this regard was &lt;a href="http://www.castleproject.org/container/index.html"&gt;Castle Windsor&lt;/a&gt; as &lt;a href="http://improvingenterprises.com/"&gt;Improving&lt;/a&gt; has the benefit of employing Craig Neuwirt, we knew we had an expert.&amp;#160; The final decision to go with &lt;a href="http://structuremap.sourceforge.net"&gt;StructureMap&lt;/a&gt; instead hinged on two related things, complexity and learning curve.&amp;#160; While we were quite certain we could pick up Castle quickly enough (2 of the 3 did not know it already), we were not as certain how easy it would be for those who follow us.&amp;#160; &lt;a href="http://structuremap.sourceforge.net"&gt;StructureMap&lt;/a&gt; had a single well defined scope (IoC), versus the larger bite that the Castle Project would be for those who follow.&amp;#160; We recognize we could have &lt;strong&gt;just&lt;/strong&gt; done Windsor, but we found no compelling reasons to do that versus &lt;a href="http://structuremap.sourceforge.net"&gt;StructureMap&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;As noted, we will be doing a good bit of WCF 4.0 on this project, so it naturally followed we would need to integrated StructureMap into the channel stack to let it handle the creation of our service instances.&amp;#160; &lt;a href="http://www.lostechies.com/blogs/jimmy_bogard/archive/2008/07/29/integrating-structuremap-with-wcf.aspx"&gt;Jimmy Bogard has an excellent post&lt;/a&gt; on this subject, and we followed that guidance closely, though we updated the StructureMapServiceHostFactory to use ObjectFactory.Initialize as was recommended by the excellent ObsoleteAttribute usage in the latest StructureMap.&lt;/p&gt;  &lt;h2&gt;Source Control : GIT&lt;/h2&gt;  &lt;p&gt;Even within a group of people as passionate about creating great technology as we have at Improving, there are certain debates that deeply divide us.&amp;#160; Source Control is definitely one of them.&amp;#160; We have a certain segment of the company that are passionate advocates for &lt;a href="http://www.teamsystemlive.com/"&gt;Team System&lt;/a&gt;, obviously including &lt;a href="http://techtea.typepad.com/teamsystem/"&gt;Chris Tullier&lt;/a&gt; our resident Team System MVP.&amp;#160; But there are others who are passionate believers in Subversion.&amp;#160; Still others are not happy with either of those options, and still seek the “better mouse trap” for Source Control.&amp;#160; We discussed the pros and cons of various solutions and decided in the end to try GIT, because of its distributed model, and see how we liked it in comparison to the others.&amp;#160; It is an experiment, and we shall see.&lt;/p&gt;  &lt;h2&gt;Logging : log4net&lt;/h2&gt;  &lt;p&gt;Really, is there another option?&amp;#160; The definitive logging library for .NET, it does what it needs to and does not bring along any additional baggage.&amp;#160; As we are also using StructureMap, we found &lt;a href="http://aspzone.com/tech/structuremap-ninject-log4net/"&gt;this blog post by John Rudolf Lewis&lt;/a&gt; helpful in discussing how to inject &lt;a href="http://logging.apache.org/log4net/index.html"&gt;log4net&lt;/a&gt; using StructureMap (or Ninject) without losing fidelity in the logs.&lt;/p&gt;  &lt;h2&gt;Conclusion&lt;/h2&gt;  &lt;p&gt;So there are a few of our technology decisions, things I’ll be learning on in the coming months more and more.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=7fJS-Vg77VI:1yZlwNYdoJU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?i=7fJS-Vg77VI:1yZlwNYdoJU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=7fJS-Vg77VI:1yZlwNYdoJU:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=7fJS-Vg77VI:1yZlwNYdoJU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=7fJS-Vg77VI:1yZlwNYdoJU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=7fJS-Vg77VI:1yZlwNYdoJU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?i=7fJS-Vg77VI:1yZlwNYdoJU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TimRayburnsBlog/~4/7fJS-Vg77VI" height="1" width="1"/&gt;</description><feedburner:origLink>http://timrayburn.net/blog/new-project-new-technologies/</feedburner:origLink></item><item><title>Dallas DevCares – Parallelism in .NET 4.0</title><link>http://feedproxy.google.com/~r/TimRayburnsBlog/~3/EOXV5LBsIIo/</link><pubDate>Thu, 25 Jun 2009 19:17:08 GMT</pubDate><guid isPermaLink="false">http://timrayburn.net/blog/dallas-devcares-ndash-parallelism-in-net-4-0/</guid><dc:creator>The Admin</dc:creator><slash:comments>1</slash:comments><category domain="http://timrayburn.net/blog/">Blog</category><description>&lt;p&gt;&lt;a href="http://www.dallastechfest.com"&gt;Dallas TechFest&lt;/a&gt; is behind me, and now it is time to look forward.&amp;#160; Forward to Visual Studio 2010, Forward to .NET 4.0.&lt;/p&gt;  &lt;p&gt;Tomorrow (Friday, June 26th) I will be presenting at the &lt;a href="http://www.dallasdevcares.com/"&gt;Dallas DevCares&lt;/a&gt; event on Parallelism in .NET 4.0.&amp;#160; This talk is one I’ve given before, but two things will be different this time.&amp;#160; First, I will be presenting with the use of Visual Studio 2010 Beta 1, so you will see how this actually works on actual .NET 4.0 bits.&amp;#160; Second, I will be presenting for a somewhat longer time than my usual User Group talk, we will be have time to take lots of questions, and to cover some fundamentals that I might not normally cover at this talk.&lt;/p&gt;  &lt;p&gt;I’d love to see any of my readers and followers there, &lt;a href="http://www.dallasdevcares.com/"&gt;so cruise over to their website and register.&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=EOXV5LBsIIo:n2jPrQC2-QQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?i=EOXV5LBsIIo:n2jPrQC2-QQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=EOXV5LBsIIo:n2jPrQC2-QQ:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=EOXV5LBsIIo:n2jPrQC2-QQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=EOXV5LBsIIo:n2jPrQC2-QQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=EOXV5LBsIIo:n2jPrQC2-QQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?i=EOXV5LBsIIo:n2jPrQC2-QQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TimRayburnsBlog/~4/EOXV5LBsIIo" height="1" width="1"/&gt;</description><feedburner:origLink>http://timrayburn.net/blog/dallas-devcares-ndash-parallelism-in-net-4-0/</feedburner:origLink></item><item><title>Register For Dallas TechFest, Win a Mac Mini</title><link>http://feedproxy.google.com/~r/TimRayburnsBlog/~3/2ifV3yN2F0c/</link><pubDate>Thu, 04 Jun 2009 19:35:00 GMT</pubDate><guid isPermaLink="false">http://timrayburn.net/blog/register-for-dallas-techfest-win-a-mac-mini/</guid><dc:creator>The Admin</dc:creator><slash:comments>2</slash:comments><category domain="http://timrayburn.net/blog/">Blog</category><description>&lt;p&gt;No, you read that correctly.&amp;nbsp; If you follow the link below and register for Dallas TechFest 2009 between now and June 14th, 2009 you will be entered into a drawing to win a Mac Mini.&amp;nbsp; We've got lots of space around, so spread around the code to all your friends. Oh, and you'll also be getting &lt;strong&gt;$20 off the full ticket price on top of that.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why tell your friends?&lt;/strong&gt;&amp;nbsp; Because if your friends tell us on their registration that you referred them, then you get an entry into the drawing as well.&amp;nbsp; So spread the word on Twitter, your blog, your company's internal list, or anywhere else you think there are folks who would want to go to Dallas TechFest.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://tinyurl.com/WinAMacMini"&gt;&lt;strong&gt;http://tinyurl.com/WinAMacMini&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;But wait ... you're telling me I'm losing out because I registered early?&amp;nbsp; Not at all!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Nope, we're giving away another Mac Mini as well, as a special thank you to all those who registered early.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=2ifV3yN2F0c:1W0WpuZWH-Y:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?i=2ifV3yN2F0c:1W0WpuZWH-Y:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=2ifV3yN2F0c:1W0WpuZWH-Y:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=2ifV3yN2F0c:1W0WpuZWH-Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=2ifV3yN2F0c:1W0WpuZWH-Y:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=2ifV3yN2F0c:1W0WpuZWH-Y:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?i=2ifV3yN2F0c:1W0WpuZWH-Y:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TimRayburnsBlog/~4/2ifV3yN2F0c" height="1" width="1"/&gt;</description><feedburner:origLink>http://timrayburn.net/blog/register-for-dallas-techfest-win-a-mac-mini/</feedburner:origLink></item><item><title>Speaking at Northwest Arkansas Code Camp 2009, and you can join remotely</title><link>http://feedproxy.google.com/~r/TimRayburnsBlog/~3/X4lCW9NVkIo/</link><pubDate>Sat, 25 Apr 2009 13:09:26 GMT</pubDate><guid isPermaLink="false">http://timrayburn.net/blog/speaking-at-northwest-arkansas-code-camp-2009-and-you-can-join-remotely/</guid><dc:creator>The Admin</dc:creator><slash:comments>0</slash:comments><category domain="http://timrayburn.net/blog/">Blog</category><description>&lt;p&gt;At 3:30 today I’ll be speaking at the Northwest Arkansas Code Camp 2009 about Concurrency in .NET 4.0.&amp;#160; Not in NWA?&amp;#160; No worries.&amp;#160; These guys have all the rooms setup with LiveMeeting, and are going to be making the content available during the day. If you’d like to join, just enter the LiveMeeting associated with each room at the Code Camp, &lt;a href="http://codecamp.nwadnug.org/Agenda/tabid/231/Default.aspx"&gt;you can find the links to them here.&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Come, join in the fun, ask questions, and learn something today!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=X4lCW9NVkIo:-4hOjozidb8:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?i=X4lCW9NVkIo:-4hOjozidb8:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=X4lCW9NVkIo:-4hOjozidb8:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=X4lCW9NVkIo:-4hOjozidb8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=X4lCW9NVkIo:-4hOjozidb8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=X4lCW9NVkIo:-4hOjozidb8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?i=X4lCW9NVkIo:-4hOjozidb8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TimRayburnsBlog/~4/X4lCW9NVkIo" height="1" width="1"/&gt;</description><feedburner:origLink>http://timrayburn.net/blog/speaking-at-northwest-arkansas-code-camp-2009-and-you-can-join-remotely/</feedburner:origLink></item><item><title>Solution Clone v1.1</title><link>http://feedproxy.google.com/~r/TimRayburnsBlog/~3/uMggbJ5yZLU/</link><pubDate>Thu, 09 Apr 2009 19:56:27 GMT</pubDate><guid isPermaLink="false">http://timrayburn.net/projects/solution-clone-v1-1/</guid><dc:creator>The Admin</dc:creator><slash:comments>0</slash:comments><category domain="http://timrayburn.net/projects/">Projects</category><description>&lt;p&gt;A quick update to Solution Clone was posted today to handle some new file types created in the BizTalk Deployment Framework v5.0.&amp;#160; &lt;a href="http://clone.codeplex.com/"&gt;You can find it here&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=uMggbJ5yZLU:SdNo0X0rUsI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?i=uMggbJ5yZLU:SdNo0X0rUsI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=uMggbJ5yZLU:SdNo0X0rUsI:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=uMggbJ5yZLU:SdNo0X0rUsI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=uMggbJ5yZLU:SdNo0X0rUsI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=uMggbJ5yZLU:SdNo0X0rUsI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?i=uMggbJ5yZLU:SdNo0X0rUsI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TimRayburnsBlog/~4/uMggbJ5yZLU" height="1" width="1"/&gt;</description><feedburner:origLink>http://timrayburn.net/projects/solution-clone-v1-1/</feedburner:origLink></item><item><title>Unit Testing in BizTalk – TestFile v2.0</title><link>http://feedproxy.google.com/~r/TimRayburnsBlog/~3/-N4TAPiHmZk/</link><pubDate>Wed, 08 Apr 2009 18:10:52 GMT</pubDate><guid isPermaLink="false">http://timrayburn.net/projects/unit-testing-in-biztalk-ndash-testfile-v2-0/</guid><dc:creator>The Admin</dc:creator><slash:comments>0</slash:comments><category domain="http://timrayburn.net/projects/">Projects</category><description>Some time ago I made a post about using external file dependencies with NUnit. That post was about using a class called TestFile, which implemented IDisposable, to temporarily store files to disk, and then clean them up afterwards. While learning my way around the BizTalk unit testing capabilities in BizTalk 2009, I realized that this class could use some minor initial modifications to make life easier. To that end, I present to you that updated class. The most important new feature is the ability to support having it generate the file name as a temp file, and the ability to load resources from any Assembly in the AppDomain.   &lt;pre class="brush: csharp;"&gt;public class TestFile : IDisposable
{
    private bool _disposedValue = false;
    private string _resourceName;
    private string _fileName;

    public TestFile(string resourceName) : this(null, resourceName) { }

    public TestFile(string fileName, string resourceName)
    {
        if (fileName == null)
        {
            this.FileName = Path.GetTempFileName();
            File.Delete(this.FileName);
        }
        else 
            this.FileName = fileName;

        using (Stream s = LoadResourceFromAppDomain(resourceName))
        using (StreamReader sr = new StreamReader(s))
        using (StreamWriter sw = File.CreateText(this.FileName))
        {
            sw.Write(sr.ReadToEnd());
            sw.Flush();
        }
    }

    private Stream LoadResourceFromAppDomain(string resourceName)
    {
        Assembly[] appDomainAssemblies = AppDomain.CurrentDomain.GetAssemblies();
        Stream outStream = null;

        foreach (var lAssem in appDomainAssemblies)
        {
            outStream = lAssem.GetManifestResourceStream(resourceName);
            if (outStream != null) return outStream;
        }

        throw new Exception(string.Format(&amp;quot;Unable to find resource stream {0}&amp;quot;,resourceName));
    }

    public string FileName
    {
        get { return _fileName; }
        set
        {
            _fileName = value;
        }
    }
    

    protected virtual void Dispose(bool disposing)
    {
        if (!this._disposedValue)
        {
            if (disposing)
            {
                if (File.Exists(_fileName))
                {
                    File.Delete(_fileName);
                }
            }
        }
        this._disposedValue = true;
    }

    #region IDisposable Members

    public void Dispose()
    {
        // Do not change this code.Put cleanup code in Dispose(bool disposing) above.
        Dispose(true);
        GC.SuppressFinalize(this);
    }

    #endregion
}&lt;/pre&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=-N4TAPiHmZk:ec_33I2A_QM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?i=-N4TAPiHmZk:ec_33I2A_QM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=-N4TAPiHmZk:ec_33I2A_QM:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=-N4TAPiHmZk:ec_33I2A_QM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=-N4TAPiHmZk:ec_33I2A_QM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=-N4TAPiHmZk:ec_33I2A_QM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?i=-N4TAPiHmZk:ec_33I2A_QM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TimRayburnsBlog/~4/-N4TAPiHmZk" height="1" width="1"/&gt;</description><feedburner:origLink>http://timrayburn.net/projects/unit-testing-in-biztalk-ndash-testfile-v2-0/</feedburner:origLink></item><item><title>BizTalk Server 2009 on MSDN</title><link>http://feedproxy.google.com/~r/TimRayburnsBlog/~3/DRhHpFPSIEk/</link><pubDate>Wed, 08 Apr 2009 17:45:39 GMT</pubDate><guid isPermaLink="false">http://timrayburn.net/blog/biztalk-server-2009-on-msdn/</guid><dc:creator>The Admin</dc:creator><slash:comments>1</slash:comments><category domain="http://timrayburn.net/blog/">Blog</category><description>&lt;p&gt;I’m thrilled to announce that BizTalk Server 2009 has become available on MSDN, as of last Saturday.&lt;/p&gt;  &lt;p&gt;The 2009 release includes many cool things, but I’d like to highlight the unit testing capabilities that have been added to the product.&amp;#160; With this release, there is now support for unit testing of Maps, Schemas and Pipelines.&amp;#160; While not perfect, these features are a great initial down payment on bringing BizTalk development in line with state of the art practices in other development areas.&amp;#160; I’m so thrilled that these features have been added that I will be doing a post series over the next several weeks on reducing the friction in unit testing these features, and you can look forward to the first installment shortly.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=DRhHpFPSIEk:vru_aWF9xHk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?i=DRhHpFPSIEk:vru_aWF9xHk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=DRhHpFPSIEk:vru_aWF9xHk:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=DRhHpFPSIEk:vru_aWF9xHk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=DRhHpFPSIEk:vru_aWF9xHk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=DRhHpFPSIEk:vru_aWF9xHk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?i=DRhHpFPSIEk:vru_aWF9xHk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TimRayburnsBlog/~4/DRhHpFPSIEk" height="1" width="1"/&gt;</description><feedburner:origLink>http://timrayburn.net/blog/biztalk-server-2009-on-msdn/</feedburner:origLink></item><item><title>Intro to WCF for the AZ.NET User Group</title><link>http://feedproxy.google.com/~r/TimRayburnsBlog/~3/tsA6jUzIRJ0/</link><pubDate>Wed, 11 Mar 2009 14:17:14 GMT</pubDate><guid isPermaLink="false">http://timrayburn.net/blog/intro-to-wcf-for-the-az-net-user-group/</guid><dc:creator>Tim</dc:creator><slash:comments>1</slash:comments><category domain="http://timrayburn.net/blog/">Blog</category><description>&lt;p&gt;I'm in Arizona currently, specifically Phoenix, and last night I had the chance to speak at the AZ.NET User Group thanks to the wonderful folks at INETA.&amp;nbsp; I promised the folks there that the slides would be posted last night, so I'm only about 8 hours late.&amp;nbsp; The talk was an Introduction to Windows Communication Foundation, and the demos focused on showing a simple service being setup from nothing to running.&lt;/p&gt; &lt;p&gt;You can &lt;a href="http://TimRayburn.net/files/uploads/IntroToWCF.pptx"&gt;download the slides here&lt;/a&gt;, or &lt;a href="http://TimRayburn.net/files/uploads/PhxWCF.zip"&gt;the final code here&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=tsA6jUzIRJ0:UGBIXvFV74Q:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?i=tsA6jUzIRJ0:UGBIXvFV74Q:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=tsA6jUzIRJ0:UGBIXvFV74Q:dnMXMwOfBR0"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?d=dnMXMwOfBR0" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=tsA6jUzIRJ0:UGBIXvFV74Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=tsA6jUzIRJ0:UGBIXvFV74Q:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TimRayburnsBlog?a=tsA6jUzIRJ0:UGBIXvFV74Q:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TimRayburnsBlog?i=tsA6jUzIRJ0:UGBIXvFV74Q:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/TimRayburnsBlog/~4/tsA6jUzIRJ0" height="1" width="1"/&gt;</description><feedburner:origLink>http://timrayburn.net/blog/intro-to-wcf-for-the-az-net-user-group/</feedburner:origLink></item></channel></rss>
