<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/rss2full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" version="2.0">

<channel>
	<title>PhatBoyG.com</title>
	
	<link>http://blog.phatboyg.com</link>
	<description>Software Developer, Husband, Father, Subaru Driver, Mac User, iPhone Flicker</description>
	<pubDate>Fri, 21 Nov 2008 17:52:31 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.1</generator>
	<language>en</language>
			<geo:lat>35.992283</geo:lat><geo:long>-95.805426</geo:long><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/PhatBoyG" type="application/rss+xml" /><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FPhatBoyG" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FPhatBoyG" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FPhatBoyG" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><item>
		<title>QCon in San Francisco Getting Started</title>
		<link>http://blog.phatboyg.com/2008/11/21/qcon-in-san-francisco-getting-started/</link>
		<comments>http://blog.phatboyg.com/2008/11/21/qcon-in-san-francisco-getting-started/#comments</comments>
		<pubDate>Fri, 21 Nov 2008 17:52:28 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[DSL]]></category>

		<category><![CDATA[Fluent Interface]]></category>

		<category><![CDATA[QCon]]></category>

		<guid isPermaLink="false">http://blog.phatboyg.com/?p=728</guid>
		<description><![CDATA[This week I&#8217;m attending QCon, the international software developers conference, and since the day I arrived it has been great. The depth of knowledge is truly amazing and I&#8217;m enjoying some excellent conversations. The attendee mix is (based on my estimation) 50% Java developers, 30% .NET developers, and 20% other languages like Ruby or Python. [...]]]></description>
			<content:encoded><![CDATA[<p>This week I&#8217;m attending <a href="http://qconsf.com/">QCon</a>, the international software developers conference, and since the day I arrived it has been great. The depth of knowledge is truly amazing and I&#8217;m enjoying some excellent conversations. The attendee mix is (based on my estimation) 50% Java developers, 30% .NET developers, and 20% other languages like Ruby or Python. The diverse nature of the conference is interesting in that many of the sessions are platform-neutral, focusing more on patterns and practices and a less on tools. </p>
<h4>Domain Specific Language (DSL) Tutorial</h4>
<p>The first day for me was an all-day tutorial on domain-specific languages hosted by <a href="http://martinfowler.com/">Martin Fowler</a>, <a href="http://www.nealford.com/my/bio.htm">Neal Ford</a>, and <a href="http://www.thoughtworks.com/who-we-are/leadership-profiles/rebecca-parsons.html">Rebecca Parsons</a> from <a href="http://www.thoughtworks.com/index.html">Thoughtworks</a>. The content was deep, and covered everything from XML (the least expressive DSL, despite being one of the most widely used) to custom languages built using Lex/Yacc grammar syntax. Martin&#8217;s site has a good amount of the content for <a href="http://martinfowler.com/dslwip/">his upcoming book</a> on domain specific languages and a lot of that content was covered in the session.</p>
<p>My favorite takeaway was the styles shown for internal DSLs (also called fluent interfaces). An internal DSL is built using the language itself rather than creating a new grammar. There are plenty of great examples of fluent interfaces, including the <a href="http://code.google.com/p/fluent-nhibernate/">FluentNHibernate</a> project and <a href="http://structuremap.sourceforge.net/Default.htm">StructureMap</a>&#8217;s registry DSL. The immediate value of an internal DSL is the understanding gained from reading code written using this style of interface.</p>
<p>Tuesday night is when a lot of the people started showing up since the tutorials were more of a pre-conference. I got to meet up with some friends and have some good chats before calling it an early night before the next three days.</p>
<p>I&#8217;ll post more about the rest of the conference soon!</p>
<img src="http://feeds.feedburner.com/~r/PhatBoyG/~4/460992477" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.phatboyg.com/2008/11/21/qcon-in-san-francisco-getting-started/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Running the PDC Visual Studio 2010 Drop on VMware Fusion</title>
		<link>http://blog.phatboyg.com/2008/11/10/running-the-pdc-visual-studio-2010-drop-on-vmware-fusion/</link>
		<comments>http://blog.phatboyg.com/2008/11/10/running-the-pdc-visual-studio-2010-drop-on-vmware-fusion/#comments</comments>
		<pubDate>Tue, 11 Nov 2008 02:52:18 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[Mac]]></category>

		<category><![CDATA[OSX]]></category>

		<category><![CDATA[VMware Fusion]]></category>

		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://blog.phatboyg.com/?p=724</guid>
		<description><![CDATA[At the Microsoft PDC in Los Angeles this year, attendees received a CTP of Visual Studio 2010 on an external HD along with all the conference materials. VSX came installed on Windows Server 2008 (along with TFS) giving attendees a chance to dig into the new features of .NET 4.0 and the IDE. 
Unless you&#8217;re [...]]]></description>
			<content:encoded><![CDATA[<p>At the Microsoft PDC in Los Angeles this year, attendees received a CTP of Visual Studio 2010 on an external HD along with all the conference materials. VSX came installed on Windows Server 2008 (along with TFS) giving attendees a chance to dig into the new features of .NET 4.0 and the IDE. </p>
<p>Unless you&#8217;re on a Mac. The VM was released in Microsoft&#8217;s VPC format which can only be run on a Windows host. Or can it?</p>
<p>To run the CTP under VMware Fusion, you&#8217;ll need to convert it to the proper format. To do this, you&#8217;ll need to install the <a href="http://www.vmware.com/products/converter/">VMware Converter</a> on a Windows system. Once installed, plug the PDC drive into a USB port and find the directory containing Visual Studio 2010. In VMware Converter, click the Import Machine button and follow the instructions. Be sure to pick the latest virtual machine version if you are using Fusion 2.x, as this will give you the best performance.</p>
<div style="text-align:center;"><img src="http://blog.phatboyg.com/wp-content/uploads/2008/11/8c0d37fc7dd5cbe6de9e680b6d6d42ea.png" alt="8c0d37fc7dd5cbe6de9e680b6d6d42ea.png" border="0" width="411" height="271" /></div>
<p>I chose to create the new image on the external drive so I could copy it to my Mac. The conversion took maybe 40 minutes to finish. Once converted, I connected the external drive to my Mac and copied the directory (VSXCTP in my case) to the Virtual Machines folder in my Documents folder. I then used the Library window to open the VM, which copied it into my library.</p>
<div style="text-align:center;"><img src="http://blog.phatboyg.com/wp-content/uploads/2008/11/fusionlibrary.jpg" alt="FusionLibrary.jpg" border="0" width="640" height="416" /></div>
<p>After starting up the CTP under Fusion, I had to install the latest version of the VMware Tools, after which Windows 2008 discovered a bunch of new hardware. Once the tools were installed, the machine runs nearly as fast as my <a href="http://blog.phatboyg.com/2008/09/17/vmware-fusion-20-upgrade-windows-workstation-2008/">Windows 2008 Workstation hack</a> that I had previously installed.</p>
<p>I haven&#8217;t tried running the VMware Converter inside of a VM under Fusion, but I would imagine that it might work. Again, I didn&#8217;t attempt this, so if you do it and it works, reply and let me know about it!</p>
<p>Good luck and enjoy the CTP!</p>
<img src="http://feeds.feedburner.com/~r/PhatBoyG/~4/449062677" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.phatboyg.com/2008/11/10/running-the-pdc-visual-studio-2010-drop-on-vmware-fusion/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Reflections on KaizenConf</title>
		<link>http://blog.phatboyg.com/2008/11/05/reflections-on-kaizenconf/</link>
		<comments>http://blog.phatboyg.com/2008/11/05/reflections-on-kaizenconf/#comments</comments>
		<pubDate>Thu, 06 Nov 2008 04:22:54 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[ALT.NET]]></category>

		<category><![CDATA[C#]]></category>

		<category><![CDATA[MSMQ]]></category>

		<category><![CDATA[MassTransit]]></category>

		<category><![CDATA[OSS]]></category>

		<category><![CDATA[Open Space Technology]]></category>

		<guid isPermaLink="false">http://blog.phatboyg.com/?p=720</guid>
		<description><![CDATA[Last weekend, Dru Sellers and I (along with 100 or so others) attended the Continuous Improvement in Software Development (referred to as KaizenConf, likely due to the URL) conference in Austin, TX. We left Tulsa late Friday night after taking my girls trick-or-treating for Halloween and drove all night arriving in Austin around 5:30 AM. [...]]]></description>
			<content:encoded><![CDATA[<p>Last weekend, Dru Sellers and I (along with 100 or so others) attended the <a href="http://www.kaizenconf.com/">Continuous Improvement in Software Development</a> (referred to as KaizenConf, likely <a href="http://www.kaizenconf.com/">due to the URL</a>) conference in Austin, TX. We left Tulsa late Friday night after taking my girls trick-or-treating for Halloween and drove all night arriving in Austin around 5:30 AM. After a quick nap and a shower, we went to the first day of the conference.</p>
<p>The night before at the opening, those who were there put up a series of topics that they wanted to discuss. One of those talks was on Enterprise Service Bus (ESB) patterns and implementations using MassTransit. I think it was pretty obvious where Dru and I were going to spend our time right after lunch. There were a number of people that we have had conversations with that also attended and they were excited to learn more about distributed application designs and how to implement them using open-source tools like MassTransit.</p>
<div style="text-align:center;"><img src="http://blog.phatboyg.com/wp-content/uploads/2008/11/img-0093.jpg" alt="IMG_0093.jpg" border="0" width="640" height="480" /></div>
<h3>The First Session: Alternative Architectures</h3>
<p>After the morning announcements, Dru and I joined <a href="http://flux88.com/">Ben Scheirman</a> and <a href="http://ayende.com/">Ayende Rahien</a> in a conversations about alternatives to the RDBMS. The conversation started a bit rough, but quickly opened up into other ways to store data in our applications. Ayende brought up CouchDB and the things he learned about it. There was also some in depth discussions about proper use of databases and separating transactional data from reporting to avoid transaction blocks. Some concepts on how to achieve the appropriate separation, including asynchronous ETL (extract-transform-load) were discussed. The Map/Reduce algorithm was also covered and some examples were given in the discussion of how to map data into dimensions for reporting. The proceedings from this talk can be <a href="http://kaizenconf.pbwiki.com/Beyond+Traditional+Architecture">found on the wiki</a>.</p>
<div style="text-align:center;"><img src="http://blog.phatboyg.com/wp-content/uploads/2008/11/img-0094.jpg" alt="IMG_0094.jpg" border="0" width="640" height="480" /></div>
<h3>The Second Session: Lean Architecture</h3>
<p>My second session of the day was on Lean Architecture. This discussion was forward looking and related to how development teams could branch out and work on features with the intent of releasing individual features as they are complete (instead of waiting for a big release with many unrelated features). There was a lot of talk about how the teams work, how version control and build processes would need to adapt to handle the complexity of dealing with multiple development versions of a single code base. I think one of my biggest take aways from this session was the need for an integration branch that is created from the trunk before each merge. It is then possible to integrate a branch into the trunk without immediately impacting the trunk. Once the simulation branch merge is complete and tested, the simulation is merged into the trunk (which should be easy, since it was created from the trunk originally). This alone would help to ensure a solid trunk that can be delivered on demand. The proceedings from this talk are <a href="http://kaizenconf.pbwiki.com/Lean%20Architecture">also on the wiki</a>.</p>
<p>Over lunch we enjoyed some amazing Austin weather while talking about projects and recent events. We then went to setup for the discussion on ESB/MassTransit. Upon arrival, we were surprised at the number of people in attendance. There was a crowd of at least 20 people and the video crew was setup with remote microphones and the works. Once we had gotten the projector setup and demos loaded, we started into the discussion.</p>
<h3>The Third Session: ESB Patterns and MassTransit</h3>
<p>The conversation started with a general discussion about messaging patterns. A reading list was presented, along with the major patterns that are used in a publish/subscribe system like an ESB. Applications for this type of system including everything from a command/query interactive system to migrating a batch processing application to a more real-time asynchronous process. We touched on where MassTransit was in the development lifecycle and some of the things we learned over the last year of development. We showed some of the sample applications, including the new <a href="http://blog.phatboyg.com/2008/10/22/new-masstransit-screencast-and-sample/">web service bridge sample</a> for connecting external customer web services to an internal domain.</p>
<p>Needless to say, we were amazed at the response we got related to MT and ESB patterns in general. It was great to have Ayende and <a href="http://codebetter.com/blogs/jeremy.miller/default.aspx">Jeremy Miller</a> bouncing ideas around regarding the project and integration with other existing systems. The notes from the discussion are located on the <a href="http://kaizenconf.pbwiki.com/ESB-Patterns">KaizenConf Wiki</a>.</p>
<h3>The Last Session: A Mixed Bag</h3>
<p>My last session of the day was split between two completely different sessions. One was on <a href="http://kaizenconf.pbwiki.com/Advanced%20IOC%20Beyond%20Constructor%20Injection">Advanced IOC</a> usage, and the other was on moving from <a href="http://kaizenconf.pbwiki.com/From%20%22Project%22%20to%20%22Product%22">Project to Product</a>. I bounced between these two sessions, picking up some interesting bits from each one. Both were late in the day, so I was fading pretty fast considering I only had 90 minutes of sleep the previous night. Good concepts were captured in the notes, so be sure to check those out (I&#8217;ll have to just to remember them).</p>
<p>After the sessions for the day, we went to the Hyatt with Ben (B#) and provided input as he started writing a new sample for MassTransit. The context for this new sample was the Gregor Hohpe article about how <a href="http://www.eaipatterns.com/ramblings/18_starbucks.html">Starbucks Does Not Use Two-Phase Commit</a>. This was mostly a learning exercise for Ben, however, we gained some insight watching him build it out. I think Dru refactored the host quite a bit to remove some extraneous ceremony that was just unnecessary. Once we had the first bits working, it was time to find some dinner and the rest of the gang. We had some great Tex-Mex at Trudy&#8217;s and then went back to the hotel bar to watch Texas Tech put the smack down on U-Texas Longhorns. </p>
<p>The next morning we met up at Starbucks (go figure) to complete the new sample Ben was building (yes, the irony of working on a sample about Starbucks @ Starbucks didn&#8217;t get past us). We ended up converting from using regular message consumers to a saga-based approach given the requirements and it took another 30 minutes to get it all working. Oren had some great ideas on how we could tweak little things here and there to eliminate some friction as well. Once we were done, we headed on over to the conference to see what was in store for the morning sessions.</p>
<p>This year, the focus of the conference was on continuous improvement. Therefore, instead of just having additional sessions on Sunday morning the attendees voted on sessions that they wanted to help improve. At least, that&#8217;s how I understood it, we were working on the Starbucks sample, remember? Anyway, when we arrived we found that the ESB Patterns session was one of the topics. The room was full with something like 22 votes on the page. I was surprised to see the response of the people, truly surprised.</p>
<h3>Continuous Improvement: ESB Patterns and MassTransit</h3>
<p>The actions <a href="http://kaizenconf.pbwiki.com/Actions+from+Sunday">are summarized on the wiki</a>, and included things like documentation, more sample applications, and help on how to add messaging to an existing application. We also dug into the things needed to help people build and understanding messaging components in their applications. Things like diagnostics, conventions to avoid common missteps, hands-on labs to walk through building a message-based component, and a few other getting started items were brought up. From a technical side, we talked about additional patterns such as an overall conversation id to correlate multiple sagas (like a saga of sagas), as well as built-in support for compensation.</p>
<p>A large part of the discussion was on how functional programming features could be used to enhance the system. An example in Erlang of a message exchange was drawn up, along with how it might be written in C#. <a href="http://podwysocki.codebetter.com/">Matthew Podwysocki</a> was consulted on how this example might be written in F#, and there was discussion about how the threading model of F# doesn&#8217;t really support the style used by Erlang. Some work is still needed there I suppose but we&#8217;ll continue to be open about the possibilities offered by functional languages. Glenn Block also talked about getting in touch with the connected systems group to see what they could offer.</p>
<div style="text-align:center;"><img src="http://blog.phatboyg.com/wp-content/uploads/2008/11/img-0095.jpg" alt="IMG_0095.jpg" border="0" width="640" height="480" /><br />County Line BBQ</div>
<p>With that, the conference was closed. Once again, the open space technology used for the event was awesome. The rules of open space dictate that what happened is the only thing that could have happened, and I agree with that completely. It was great to be a part of yet another excellent event and I look forward to future installments in other locations. Be sure to keep up with <a href="http://kaizenconf.pbwiki.com/">the wiki</a>, as videos from most of the sessions will be made available online soon. One of our improvements was to better document our proceedings, and I think we&#8217;ve managed to succeed on that one for sure.</p>
<img src="http://feeds.feedburner.com/~r/PhatBoyG/~4/443968947" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.phatboyg.com/2008/11/05/reflections-on-kaizenconf/feed/</wfw:commentRss>
		</item>
		<item>
		<title>MassTransit Wordle (yeah, slight diversion)</title>
		<link>http://blog.phatboyg.com/2008/10/31/masstransit-wordle-yeah-slight-diversion/</link>
		<comments>http://blog.phatboyg.com/2008/10/31/masstransit-wordle-yeah-slight-diversion/#comments</comments>
		<pubDate>Fri, 31 Oct 2008 15:52:22 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[MassTransit]]></category>

		<guid isPermaLink="false">http://blog.phatboyg.com/?p=714</guid>
		<description><![CDATA[

]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><a href="http://www.wordle.net/gallery/wrdl/281003/ServiceBus"><br />
<img style="padding:4px;border:1px solid #ddd" src="http://www.wordle.net/thumb/wrdl/281003/ServiceBus" alt="" /></a></p>
<img src="http://feeds.feedburner.com/~r/PhatBoyG/~4/438165375" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.phatboyg.com/2008/10/31/masstransit-wordle-yeah-slight-diversion/feed/</wfw:commentRss>
		</item>
		<item>
		<title>New MassTransit Screencast and Sample</title>
		<link>http://blog.phatboyg.com/2008/10/22/new-masstransit-screencast-and-sample/</link>
		<comments>http://blog.phatboyg.com/2008/10/22/new-masstransit-screencast-and-sample/#comments</comments>
		<pubDate>Thu, 23 Oct 2008 05:36:48 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[MSMQ]]></category>

		<category><![CDATA[MassTransit]]></category>

		<guid isPermaLink="false">http://blog.phatboyg.com/?p=712</guid>
		<description><![CDATA[One of the more common scenarios I hear about when talking about building a service-oriented architecture has to do with providing a web service to external customers. This is often in the context of providing information from an internal system. The problem comes with how many of these systems are built.
In many situations, a web [...]]]></description>
			<content:encoded><![CDATA[<p>One of the more common scenarios I hear about when talking about building a service-oriented architecture has to do with providing a web service to external customers. This is often in the context of providing information from an internal system. The problem comes with how many of these systems are built.</p>
<p>In many situations, a web service is created (perhaps with ASP.NET Web services, an .asmx) which accepts a request from a client, performs some query against the production database, and returns the results. This is a very tightly-coupled way of meeting the requirements. How does one go about reducing coupling? Well, all too often the answer is &#8220;just add another web service.&#8221; You can see where this is going. The control still follows a chain of web service requests up until the final connection to the database.</p>
<p>The new <a href="http://code.google.com/p/masstransit/source/browse/#svn/trunk/Samples/WebServiceBridge">WebServiceBridge</a> sample in MassTransit demonstrates how to break this coupling using the publish/subscribe architecture. When the external web service receives a request, a message is asynchronously published. A subscription to the requested information is added at the same time. A completely insulated service then handles the request, publishing the response to the bus. The web service request that was pending is completed and the results of the query are returned to the client.</p>
<p>In the sample, this all happens with the least amount of load on the web server by using the asynchronous nature of web methods in ASP.NET. This reduces the load on the web servers, making it easier to handle multiple requests without extensive hardware requirements.</p>
<p>Last night I made a screencast that goes through this new sample and shows how it works. You can <a href="http://blog.phatboyg.com/wp-content/WebServiceBridge.mov">download the screencast here</a> (please Save As to conserve bandwidth). Check it out and let me know what you think. Questions and comments are always welcome!</p>
<img src="http://feeds.feedburner.com/~r/PhatBoyG/~4/429299201" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.phatboyg.com/2008/10/22/new-masstransit-screencast-and-sample/feed/</wfw:commentRss>
<enclosure url="http://blog.phatboyg.com/wp-content/WebServiceBridge.mov" length="138784498" type="video/quicktime" />
		</item>
		<item>
		<title>Heartland Developers Conference 2008</title>
		<link>http://blog.phatboyg.com/2008/10/19/heartland-developers-conference-2008/</link>
		<comments>http://blog.phatboyg.com/2008/10/19/heartland-developers-conference-2008/#comments</comments>
		<pubDate>Mon, 20 Oct 2008 02:03:56 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.phatboyg.com/?p=710</guid>
		<description><![CDATA[This past week I had the pleasure of attending the Heartland Developers Conference in Omaha, Nebraska. I was already in town visiting family and decided to take a day to see what the local flavor had to offer. I&#8217;m particularly grateful to Joe Olsen of PhenomBlue for allowing me to register. I was originally hoping [...]]]></description>
			<content:encoded><![CDATA[<p>This past week I had the pleasure of attending the <a href="http://www.heartlanddc.com/Omaha/">Heartland Developers Conference</a> in Omaha, Nebraska. I was already in town visiting family and decided to take a day to see what the local flavor had to offer. I&#8217;m particularly grateful to Joe Olsen of <a href="http://www.phenomblue.com/">PhenomBlue</a> for allowing me to register. I was originally hoping to secure a spot as a presenter, but the list apparently fills up in early March so next year I&#8217;ll try to plan for it.</p>
<p>On Wednesday night, a pre-party for attendees was held at the Qwest center. I rolled into the event around 9:00 PM (after watching the first part of the debate) and introduced myself to a few of the people there. Some of the folks I met included Jason Bock, Chris Williams, Joe Olsen, Amanda Laucher, Jeff Julian, and John Alexander. It was nice since there were some drink tickets being passed around and Rock Band 2 was going in the corner. I talked with several of the folks there and left looking forward to the content that was on tap for the coming day.</p>
<p>The morning of the event there was a lot of time to mill about before the sessions got underway (particularly since I got a ride from my mom and was there at 6:45 AM). Early on I found Joe Stagner (<a href="http://www.misfitgeek.com/">blog</a>) and chatted about his recent hard drive upgrade amongst other things. I later met Clint Edmonson, an architect evangelist with Microsoft and discussed the content of the session he was delivering that day. There were a lot of good sessions at overlapping times so I wasn&#8217;t able to attend them all unfortunately. Once I settled down for the keynote next to Jason Bock, I caught up on some email and listened to Joe&#8217;s presentation.</p>
<p>My first session of the day was Jason Bock (<a href="http://www.jasonbock.net/">blog</a>, <a href="http://twitter.com/jasonbock">twitter</a>) who spoke on Reflection and IL, including using Cecil for some post-build IL weaving. Very interesting topic for me and a great presentation. I spoke to Jason the night before to see if he had looked at any of the new expression tree tools in 3.5 and how to use them to build code on-the-fly without using Emit. It was an interesting discussion, Jason is a smart guy.</p>
<p>When it was time for lunch, a few of us went over to Farrell&#8217;s Bar and had some nachos and a burger. I found it funny since I was the only one from the south, I was also the only one who enjoyed the jalepenos. We chatted in general about community involvement and various events where we all had attended/presented and overall was a great discussion. </p>
<p>After lunch, Drew Robbins (<a href="http://drewby.spaces.live.com/">blog</a>) presented on the Microsoft Extensibility Framework (MEF, web). Despite a stuffy head that made MEF sound like &#8220;METH&#8221; I got a lot of great information and look forward to learning more about this new framework. The way you specify exports and imports really makes it easy to define an extensible application. I&#8217;m certainly going to look at ways to use MEF with <a href="http://code.google.com/p/masstransit/">MassTransit</a> in order to provide a new way to compose services that consume messages.</p>
<p>I had to take a rest for a while, chatting with the <a href="http://geekswithblogs.net/">Geeks With Blogs</a> guys for a while and generally just taking it easy. After bouncing around I settled into Chris Williams&#8217; (<a href="http://www.BlogusMaximus.net/">blog</a>, <a href="http://blogusmaximus.net/archive/2008/10/18/125919.aspx">wrap-up</a>) talk on XNA. I&#8217;ve never looked at the game development tools for Windows, but I got a brief into as to what to expect. Once this session was up, it was break time. I was planning on doing a podcast with the Geeks With Blogs guys but was trumped when Joe Stagner and Amanda Laucher sat down to do a joint session.</p>
<p>The day was great and I learned a few things. I also got to meet some great people and had some interesting conversation. I had hoped to attend the F# presentation by Amanda Laucher (<a href="http://www.pandamonial.com/">blog</a>) and the Open Source presentation by Javier Lozano (<a href="http://blog.lozanotek.com/">blog</a>), but I wasn&#8217;t able to return for day two of the event. The time on the day I went was well spent and I look forward to attending HDC again in 2009.</p>
<img src="http://feeds.feedburner.com/~r/PhatBoyG/~4/425962527" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.phatboyg.com/2008/10/19/heartland-developers-conference-2008/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Deeper Look at MassTransit Screencast</title>
		<link>http://blog.phatboyg.com/2008/10/12/deeper-look-at-masstransit-screencast/</link>
		<comments>http://blog.phatboyg.com/2008/10/12/deeper-look-at-masstransit-screencast/#comments</comments>
		<pubDate>Mon, 13 Oct 2008 04:46:10 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[MassTransit]]></category>

		<guid isPermaLink="false">http://blog.phatboyg.com/?p=708</guid>
		<description><![CDATA[If you haven&#8217;t watched the video from the presentation Dru and I did on Thursday at Tulsa TechFest, I recommend you watch it if you are interested in MassTransit and seeing how it works. Once you have watched it, check out the new screencast I just produced that goes deeper into the code to show [...]]]></description>
			<content:encoded><![CDATA[<p>If you haven&#8217;t watched <a href="http://www.viddler.com/explore/PhatBoyG/videos/2/">the video from the presentation</a> Dru and I did on Thursday at Tulsa TechFest, I recommend you watch it if you are interested in MassTransit and seeing how it works. Once you have watched it, check out the new screencast I just produced that goes deeper into the code to show how MassTransit makes it all work. You can <a href="http://blog.phatboyg.com/wp-content/MassTransitTTFScreencast.mov">download the video</a> (be sure to Save As for those repeated late-night viewings).</p>
<p>In the video, I go into the source code of the demo that was shown in the presentation. Mind you, I think this is my first screencast, so I&#8217;m probably just talking to myself way to much but that helps me think.</p>
<p>Enjoy!</p>
<img src="http://feeds.feedburner.com/~r/PhatBoyG/~4/419169118" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.phatboyg.com/2008/10/12/deeper-look-at-masstransit-screencast/feed/</wfw:commentRss>
<enclosure url="http://blog.phatboyg.com/wp-content/MassTransitTTFScreencast.mov" length="130669585" type="video/quicktime" />
		</item>
		<item>
		<title>Tulsa TechFest Wrap Up</title>
		<link>http://blog.phatboyg.com/2008/10/12/tulsa-techfest-wrap-up/</link>
		<comments>http://blog.phatboyg.com/2008/10/12/tulsa-techfest-wrap-up/#comments</comments>
		<pubDate>Sun, 12 Oct 2008 23:49:30 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[ALT.NET]]></category>

		<category><![CDATA[C#]]></category>

		<category><![CDATA[MSMQ]]></category>

		<category><![CDATA[MassTransit]]></category>

		<category><![CDATA[OSS]]></category>

		<category><![CDATA[Rock Band]]></category>

		<category><![CDATA[TulsaTechFest]]></category>

		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://blog.phatboyg.com/?p=705</guid>
		<description><![CDATA[This past Thursday and Friday, the Tulsa TechFest was held at OSU Tulsa in Tulsa (could I write Tulsa one more time, I knew I could). Attendance was high and most of the sessions I attended were in rooms full of people. The day started off early Thursday morning, but that&#8217;s not the start of [...]]]></description>
			<content:encoded><![CDATA[<p>This past Thursday and Friday, the <a href="http://techfests.com/Tulsa/2008/Agenda/default.aspx">Tulsa TechFest</a> was held at OSU Tulsa in Tulsa (could I write Tulsa one more time, I knew I could). Attendance was high and most of the sessions I attended were in rooms full of people. The day started off early Thursday morning, but that&#8217;s not the start of the story.</p>
<p>The night before, <a href="http://www.drusellers.com/">Dru</a> and <a href="http://www.ferventcoder.com/">Rob</a> came by the house for a little pre-conference warmup (and by warmup, I don&#8217;t mean this). Rob went through his presentation on continuous integration one last time while Dru and I worked through our presentation on messaging (and how to do it with <a href="http://code.google.com/p/masstransit/">MassTransit</a>, of course). The night ended early for me, but Rob and Dru met up with <a href="http://www.flux88.com/">Ben</a> at the hotel and closed the bar (and by closed, I mean walked in at last call and got one beer).</p>
<p>The next morning we all met up and caught up on things since the last gathering. Since the last time we saw <a href="http://www.flux88.com/">Ben</a>, he&#8217;d been through a hurricane and <a href="http://flux88.com/RecentDevelopments.aspx">granted the MVP Award</a> from Microsoft. We then planned out our day of sessions based on the information currently available to us.</p>
<p>The speaker for the CSS talk was unable to attend, so the four of us convened an open-space session on CSS. The discussion in the fishbowl was good with a lot of interesting topics. Ben gave an on-screen demonstration of CSS from the ground up for those in the room that were new to it, providing context for the audience. CSS is extremely important considering it is the best (only?) way to layout and style websites consistently across browsers. I think everyone brought up how much of a turd IE 6 is when it comes to CSS compatibility.</p>
<p>After lunch, it was time for Dru and I to present our session on message-driven architecture (using MassTransit). You can see the <a href="http://www.viddler.com/explore/PhatBoyG/videos/2/">first hour of the session on video here</a>. The crowd really got into it, asked a lot of questions, and hopefully came away with an understanding of asynchronous application design and messaging.</p>
<p style="text-align: center;"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="545" height="451" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="id" value="viddler_7ef83002" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /><param name="src" value="http://www.viddler.com/player/7ef83002/" /><embed id="viddler_7ef83002" type="application/x-shockwave-flash" width="545" height="451" src="http://www.viddler.com/player/7ef83002/" allowfullscreen="true" allowscriptaccess="always"></embed></object></p>
<p>After that session, we sat down with a guy that works for Sun and talked about enterprise application architecture. It was interesting comparing the mature open-source nature of Java to the budding open-source landspace in .NET. After the closing session and prize giveaway, there was a speakers dinner (Rib Crib, good stuff). Once we had eaten, we went to the hotel and did a little code sharing and Dru and Ben went through ASP.NET MVC some more. Then we went over to <a href="http://www.myspace.com/dirtystavern">Dirty&#8217;s Tavern</a> for some post-day fun. I was worn out, so I went back to my car and called it a night.</p>
<p>The next day was full of interesting stuff. A nice introduction to ASP.NET MVC by Ben, some extensive coverage of <a href="http://logging.apache.org/log4net/index.html">log4net</a> by Dru, and I gave a presentation on <a href="http://developer.apple.com/iphone/index.action">iPhone development</a>. Outside of the actual sessions there were a lot of great conversations about development and tools in general. We also recorded Ray Lewallen&#8217;s session on Behavior Driven Development, <a href="http://www.viddler.com/explore/PhatBoyG/videos/1/">which can be viewed here</a>.</p>
<p>My iPhone development session was purely introductory to show the tools and how they are used to build and deliver applications for the iPhone. The room was absolutely packed and hopefully everyone walked away with some good information. I know at least one guy did, he left two seconds after I said that building iPhone applications requires a Mac!</p>
<p>To wrap it up, the event was a huge success. There were a ton of people there, the vendor room was always alive with activity (likely due to <a href="http://blogs.msdn.com/chkoenig/">Chris Koenig</a> and his Rock Band setup giving some much needed ADHD relief between sessions). Chris also had a couple of great sessions on Silverlight and the new features in 2.0 that should really improve the use of Silverlight for Rich Internet Applications (RIAs).</p>
<img src="http://feeds.feedburner.com/~r/PhatBoyG/~4/418982597" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.phatboyg.com/2008/10/12/tulsa-techfest-wrap-up/feed/</wfw:commentRss>
		</item>
		<item>
		<title>MassTransit 0.4 Released</title>
		<link>http://blog.phatboyg.com/2008/10/07/masstransit-04-released/</link>
		<comments>http://blog.phatboyg.com/2008/10/07/masstransit-04-released/#comments</comments>
		<pubDate>Wed, 08 Oct 2008 02:32:36 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[.NET]]></category>

		<category><![CDATA[C#]]></category>

		<category><![CDATA[MSMQ]]></category>

		<category><![CDATA[MassTransit]]></category>

		<category><![CDATA[OSS]]></category>

		<category><![CDATA[TulsaTechFest]]></category>

		<category><![CDATA[Visual Studio 2008]]></category>

		<guid isPermaLink="false">http://blog.phatboyg.com/?p=703</guid>
		<description><![CDATA[I&#8217;m happy to say that we&#8217;ve just tied a bow around the latest release of MassTransit. Release 0.4 includes a number of new features and some tweaks to the internals as well. I&#8217;m going to describe a few of those features below, but you can grab the latest from the trunk or download the 0.4 [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m happy to say that we&#8217;ve just tied a bow around the latest release of <a href="http://code.google.com/p/masstransit/">MassTransit</a>. Release 0.4 includes a number of new features and some tweaks to the internals as well. I&#8217;m going to describe a few of those features below, but you can grab the latest from the <a href="http://code.google.com/p/masstransit/source/browse/#svn/trunk">trunk</a> or <a href="http://code.google.com/p/masstransit/downloads/list">download the 0.4 release</a>.</p>
<p><strong>Building MassTransit</strong></p>
<p>Since Visual Studio 2008 has been out for almost a year, it is now required to open the updated solution for MassTransit. In the main folder, the MassTransit-2008.sln is the one to use to build and run the unit tests. Many of the samples solutions are also 2008 solutions. The assemblies, however, are still targeting the .NET 2.0 framework, making them usable on both 2005 and 2008 projects. With only the .NET 3.5 framework installed, you should be able to run the build.bat to build the project without Visual Studio (our CI server does this).</p>
<p><strong>Timeout Service</strong></p>
<p>To enable automated support for timeouts in sagas, a new timeout service is available. This is a general service that can be used to schedule timeouts for whatever purpose may be needed. To schedule a timeout, the application should publish a ScheduleTimeout message with the duration or time when a response should be sent. The application/service can then consume the TimeoutExpired message, which will be published by the timeout service when the timeout period expires.</p>
<p><strong>Message Deferral Service</strong></p>
<p>One of the scenarios I often find in our systems is the need to poll a remote resource to determine if an operation has completed. To support this behavior without custom code in each instance, a new message deferral service has been added. This can be used to defer the delivery of a message until a period of time expires. The deferral services leverages the timeout service for scheduling and we republish a message after that timeout expires. </p>
<p>For example, we have a CheckRemoteResponseStatus message in one of our systems. This is initially published after a request is submitted to a remote system and a remote transaction id is returned. The first time the consumer gets the message, it checks the remote system for a response. In most cases, the response is immediately available and the saga continues. However, sometimes the remote system is too busy to respond and returns a pending status. In this case, the same CheckRemoteResponseStatus message is published within a DeferMessage. The deferred message service handles that message and will republish the original CheckRemoteResponseStatus message when the timeout expires. The saga will then handle the message to see if a response is now available. The saga keeps track of how many times the remote status has been checked and uses a sliding interval that increases as the retry count increases. Eventually, the final retry results in a failed transaction and is handle appropriately.</p>
<p>The nice thing about this is there was no custom retry logic required, and a common timeout and message deferral service were used. There are likely other cases within the application that will benefit from this shared functionality.</p>
<p><strong>Transactional Queue Support</strong></p>
<p>With 0.4, the entire method of reading from the endpoints has been redesigned. Previously, a single receive thread was used to receive from the endpoint which then dispatched the message handling to the dispatcher inside the service bus. This has been redesigned to use the dispatcher threads to perform the actual receive from the endpoint, using a transaction (ala System.Transactions) to handle the message reception. This keeps the transaction to a single thread while at the same time allowing concurrent message reception. </p>
<p>The transaction carries over into actions that are part of the message consumer. If a database update is part of the consumer, that database update can cause the entire message to rollback if it fails. If any exception is thrown, the entire reception of the message, any additional database operations, new messages sent, etc. will all be rolled back with the transaction.</p>
<p><strong>Performance Improvements</strong></p>
<p>Dru spent some time in NYC with <a href="http://ayende.com/Blog/">Ayende Rahien</a> reviewing the MT source code and Oren recommended changing from using locks to ReaderWriterLocks to improve concurrency. The changes in the threading system, along with the elimination of a lot of locking in favor of reader/writer locks has nearly doubled the throughput of messages when using a multi-core system using MSMQ. There have been a number of other internal tweaks as well to improve the concurrency of the bus dispatcher. </p>
<p><strong>Control Bus</strong></p>
<p>To enable competing consumer in a publish/subscribe environment, the control messages need to be on a separate bus from the data messages. To allow multiple services to compete against a single data channel (single MSMQ) in order to load balance and handle failure scenarios, the services cannot compete on the control messages such as subscriptions. The subscription client has been tweaked to allow it to operate on a separate bus from the data bus, at the same time notifying the subscription service of messages handled by the local endpoints of the service. </p>
<p>It&#8217;s easy to setup a single service that consumes messages from multiple buses (which in turn each have a specific endpoint being serviced). When a component is created to consume a message, the specific bus/endpoint that received the message is injected into the component (via setter injection) so that any subsequent messages can be published to the appropriate bus. </p>
<p><strong>Health Service</strong></p>
<p>The health service has been added making it easy to monitor endpoints and identify when an endpoint goes down. Periodic heartbeats are sent to the service and when a heartbeat hasn&#8217;t been received in a while, it marks that endpoint as down and attempts to directly ping it to get a response. The heartbeats can be subscribed, so a monitoring tool can keep track of which endpoints are there and what they are handling.</p>
<p><strong>Configuration Model</strong></p>
<p>To make it easier to use the bus in different containers, a new configuration model has been added to build and configure a service bus instance. This will ultimately result in moving a lot of the code used by build a service bus out of the container-specific facilities (such as the Windsor container).</p>
<p><strong>Host Improvements</strong></p>
<p>The ability to create and deploy Windows services has gotten easier with the updates to the Host assembly in MassTransit. With only a few files to define the lifecycle of a service, it is easy to get the ability to run, test, install and deploy a service. This includes services that are using the service bus. There is little to no coupling between the host and service bus, making it usable for a variety of purposes.</p>
<p><strong>Learning MassTransit</strong></p>
<p>A lot of requests have come for information on how to learn to use MassTransit. During <a href="http://techfests.com/Tulsa/2008/default.aspx">Tulsa TechFest</a> this week, we&#8217;re going to record our presentation and make it available online within a few days. This should give at least some introduction on how to use MassTransit (the presentation is mainly on distributed architecture, but we&#8217;re using MT for the demo bits). We&#8217;re also talking about doing a couple of podcasts on how to use it as well. Depending upon how that goes, we&#8217;ll try to do a couple of screencasts on &#8220;creating your first project with MT.&#8221;</p>
<p>The best way to discover how to use the code is to review the samples. The WinFormSample gives an overall example of how a variety of features are used. The HeavyLoad shows how many of the pieces work as well. The samples folder has a few others that demonstrate how to use MT in other scenarios. </p>
<p>So, check out the new release and give us some feedback on how the new features are working. We&#8217;ve already got a few backlog items that we&#8217;re slating for 0.5 based on some other contexts that have come up in our applications. Feel free to post on the <a href="http://groups.google.com/group/masstransit-discuss?hl=en">message group</a> or send either <a href="http://geekswithblogs.net/dsellers/Default.aspx">Dru</a> or I an <a href="http://blog.phatboyg.com/contact/">e-mail</a> or <a href="http://twitter.com/PhatBoyG">tweet</a> if you have any questions.</p>
<img src="http://feeds.feedburner.com/~r/PhatBoyG/~4/414377530" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.phatboyg.com/2008/10/07/masstransit-04-released/feed/</wfw:commentRss>
		</item>
		<item>
		<title>MassTransit - Visual Studio 2005 vs. 2008</title>
		<link>http://blog.phatboyg.com/2008/10/01/masstransit-visual-studio-2005-vs-2008/</link>
		<comments>http://blog.phatboyg.com/2008/10/01/masstransit-visual-studio-2005-vs-2008/#comments</comments>
		<pubDate>Wed, 01 Oct 2008 17:53:40 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
		
		<category><![CDATA[MassTransit]]></category>

		<guid isPermaLink="false">http://blog.phatboyg.com/?p=701</guid>
		<description><![CDATA[With the latest trunk of MassTransit, we are using Visual Studio 2008 for development. The resulting assemblies are still targeting .NET 2.0, allowing them to be used with Visual Studio 2005. The reason is that some of the newer features like WCF support were built with 3.5, along with the use of lambda expressions and [...]]]></description>
			<content:encoded><![CDATA[<p>With the latest trunk of MassTransit, we are using Visual Studio 2008 for development. The resulting assemblies are still targeting .NET 2.0, allowing them to be used with Visual Studio 2005. The reason is that some of the newer features like WCF support were built with 3.5, along with the use of lambda expressions and other features in the source files.</p>
<p>My understanding is that the command-line build should still work even if you don&#8217;t have Visual Studio 2008 as long as you have installed the Framework 3.5 via Windows Update.</p>
<p>We are using the assemblies built from 2008 in our development (which is still 2005) without any issues targeting .NET 2.0 and have recently upgraded our development trunk where we are using MassTransit to the latest build (previously we were on 0.1x). It was an interesting upgrade with a few changes required, but nothing too painful. Early testing shows everything is working as expected and I&#8217;m looking forward to taking advantage of some of the new features supported by the latest release.</p>
<img src="http://feeds.feedburner.com/~r/PhatBoyG/~4/408455567" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.phatboyg.com/2008/10/01/masstransit-visual-studio-2005-vs-2008/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
