<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://www.pluralsight.com/community/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" 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/"><channel><title>Matt's Musings</title><link>http://www.pluralsight.com/community/blogs/matt/default.aspx</link><description>BizTalk, Web Services, .Net and more</description><dc:language>en</dc:language><generator>CommunityServer 2008 SP1 (Build: 30619.63)</generator><item><title>My first triathlon</title><link>http://www.pluralsight.com/community/blogs/matt/archive/2008/07/13/my-first-triathlon.aspx</link><pubDate>Mon, 14 Jul 2008 05:02:40 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:51828</guid><dc:creator>matt-milner</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/matt/rsscomments.aspx?PostID=51828</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/matt/archive/2008/07/13/my-first-triathlon.aspx#comments</comments><description>&lt;p&gt;This weekend I took the plunge, literally, and participated in my first sprint triathlon here in Minneapolis.&amp;nbsp; I won&amp;#39;t say it was pretty, or that I did excellent, but I feel pretty good about my effort and the results. Mostly I was hoping to just finish, but I did have the goal of being done in under 2 hours.&amp;nbsp; Like I said, not really looking to win any medals.&amp;nbsp; :)&amp;nbsp; &lt;/p&gt; &lt;p&gt;The swim went a little worse than expected with me getting doused in the face over and over with water and struggling to get into a groove with my stroke and breathing.&amp;nbsp; So I struggled for what seemed like a long time, but it ended up only being about 18 minutes which was shorter than I expected.&amp;nbsp; I then made my way to my bike and got my gear on.&amp;nbsp; I was definitely moving slow at this point but got my shoes, shirt and helmet on and thought I&amp;#39;d just head out.&amp;nbsp; Of course, I dropped some of my energy jelly beans and had to scoop them up, but after that the bike was good.&amp;nbsp; I finished up the 15 mile ride in about 50 minutes with no troubles at all.&amp;nbsp; The biking was never a worry for me and even though I might not be super fast, I knew I could finish and probably in reasonable time.&amp;nbsp; &lt;/p&gt; &lt;p&gt;&lt;a href="http://www.pluralsight.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/matt/MattTri_5F00_2.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;margin:15px 10px 5px 0px;border-left:0px;border-bottom:0px;" height="206" alt="MattTri" src="http://www.pluralsight.com/community/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/matt/MattTri_5F00_thumb.jpg" width="244" align="left" border="0" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;My transition to the run was pretty simple as I traded my helmet for a running hat and added my running bib then headed out onto the trail.&amp;nbsp; I have a hard time estimating my pace when I&amp;#39;m running in a crowd so I had no idea how I was doing until I finished, but I knew it was tough to keep going and I didn&amp;#39;t feel like I could be going a lot faster.&amp;nbsp; I finished the 3.1 mile run in about 27 minutes which is a decent 5k for me even without having swum and run beforehand.&amp;nbsp; &lt;/p&gt; &lt;p&gt;So my total time ended up being just under 1 hour 45 minutes which was even better than I&amp;#39;d hoped for.&amp;nbsp; I LOVED the experience and I&amp;#39;ll definitely be doing another one soon.&amp;nbsp; I definitely liked it much better than doing longer distance running (a half marathon has been my longest so far) and the variety during training is definitely more interesting for me.&amp;nbsp; I&amp;#39;ve got a lot of work to do on my swimming, but I&amp;#39;m actually looking forward to it.&amp;nbsp; &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=51828" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/matt/archive/tags/Personal/default.aspx">Personal</category></item><item><title>Code Samples from todays webcast</title><link>http://www.pluralsight.com/community/blogs/matt/archive/2008/06/26/code-samples-from-todays-webcast.aspx</link><pubDate>Fri, 27 Jun 2008 05:01:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:51227</guid><dc:creator>matt-milner</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/matt/rsscomments.aspx?PostID=51227</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/matt/archive/2008/06/26/code-samples-from-todays-webcast.aspx#comments</comments><description>&lt;p&gt;For those of you who attended my webcast today on workflow communications, the demo code is attached to this post. It includes the base activities used for communication activities (more on these in a later post) and it provides simple example of local communications and web services. The two-way communication activity and sample is also included.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;If you are interested in the webcast check &lt;a target="_blank" href="http://www.microsoft.com/events/series/msdnnetframework35.aspx?tab=webcasts"&gt;here&lt;/a&gt; in the next day to two for the OnDemand link.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="padding-right:0px;display:inline;padding-left:0px;padding-bottom:0px;margin:0px;padding-top:0px;" id="scid:8eb9d37f-1541-4f29-b6f4-1eea890d4876:00270501-cfd6-4352-a848-e7cd74404d75" class="wlWriterSmartContent"&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;Attachment:&lt;a href="http://alt.pluralsight.com/matt/downloads/wfcommunications.zip" title="WFcommunications.zip" class="null"&gt;WFCommunications.zip&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=51227" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/matt/archive/tags/General+Musings/default.aspx">General Musings</category><category domain="http://www.pluralsight.com/community/blogs/matt/archive/tags/Windows+Workflow+Foundation/default.aspx">Windows Workflow Foundation</category></item><item><title>PowerShell for BizTalk Server</title><link>http://www.pluralsight.com/community/blogs/matt/archive/2008/06/26/powershell-for-biztalk-server.aspx</link><pubDate>Fri, 27 Jun 2008 04:29:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:51226</guid><dc:creator>matt-milner</dc:creator><slash:comments>14</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/matt/rsscomments.aspx?PostID=51226</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/matt/archive/2008/06/26/powershell-for-biztalk-server.aspx#comments</comments><description>&lt;p&gt;During my preparation for my Tech Ed talk on BizTalk Server port binding options, I wanted to write a PowerShell script to help me manage the transitions from one demo to another.&amp;nbsp; For the most part, I was looking for a way to quickly enable / disable receive locations and start / unenlist send ports and orchestrations.&amp;nbsp; All of this is available in WMI, but I wanted to make some reusable functions in PowerShell so I didn&amp;#39;t have to drop into WMI each time I wanted to do it.&amp;nbsp; I wanted a simple function I could call like so:&lt;/p&gt;
&lt;p&gt;EnableReceiveLocation(&amp;quot;MYRL&amp;quot;)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;It turns out that creating these functions in a script file is relatively easy.&amp;nbsp; One issue I ran into, however, is that transitions for send ports and orchestrations are not as straight forward as they are in the UI.&amp;nbsp; In the UI if a port is unenlisted, I can simply start it.&amp;nbsp; Under the covers, however, the admin tool is actually enlisting and then starting.&amp;nbsp; So, in code, I have to call the operations to both enlist and start.&amp;nbsp; Or, if the port is already enlisted, but not started, then in a function called StartSendPort, I have to just start it.&amp;nbsp; So there is some checking of the current status rather than just blindly wrapping WMI calls.&amp;nbsp; You&amp;#39;ll need to check the docs in some situations to get the enum values.&amp;nbsp; I used the hard coded values in my case.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;function StartSendPort{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; param([string]$portName) &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $sp = Get-WmiObject MSBTS_SendPort -n root\MicrosoftBizTalkServer -filter &amp;quot;Name=&amp;#39;$portName&amp;#39;&amp;quot; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if($sp -ne $null)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if($sp.Status -eq 1 -or $sp.Status -eq 2)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if($sp.Status -eq 1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $null = $sp.Enlist()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $null = $sp.Start()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Write-Host &amp;quot;Started send port: &amp;quot; + $portName -fore Green&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Write-Host &amp;quot;Send port &amp;quot; + $portName + &amp;quot; is already started.&amp;quot; -fore Yellow&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Write-Host &amp;quot;Send port not found&amp;quot; -fore Red &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;} &lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Where things got a little more challenging was when I wanted to start working with applications.&amp;nbsp; Applications provide a nice way to manage a group of ports by allowing start/stop functionality; unfortunately, the application is not surfaced through WMI.&amp;nbsp; Never fear however, b/c PowerShell is built on top of .NET.&amp;nbsp; All I needed to do was create an instance of the BtsCatalogExplorer class and then I was on my way to managing the applications.&amp;nbsp; But first, I had to load the assembly that included that class.&amp;nbsp; I chose to do that using the path, but strong names works very well too.&amp;nbsp; Then I used the New-Object cmdlet to create an instance and navigate to the application.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;[System.Reflection.Assembly]::LoadFrom(&amp;quot;C:\Program Files\Microsoft BizTalk Server 2006\Developer Tools\Microsoft.BizTalk.ExplorerOM.dll&amp;quot;) &lt;/p&gt;
&lt;p&gt;function StopBTSApplication&lt;br /&gt;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; param([string]$appName) &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $exp = New-Object Microsoft.BizTalk.ExplorerOM.BtsCatalogExplorer&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $exp.ConnectionString = Get-BTSConnectionString&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $app = $exp.Applications[$appName]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if($app -eq $null)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Write-Host &amp;quot;Application &amp;quot; $appName &amp;quot; not found&amp;quot; -fore Red&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if($app.Status -ne 2)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #full stop of application&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $null = $app.Stop(63)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $null = $exp.SaveChanges()&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Write-Host &amp;quot;Stopped application: &amp;quot; $appName&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/p&gt;
&lt;p&gt;} &lt;/p&gt;
&lt;p&gt;&amp;nbsp; &lt;/p&gt;
&lt;p&gt;And, because I was trying not to hard code too much, I create the connection string using WMI to get the group settings.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;function Get-BTSConnectionString&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $group = Get-WmiObject MSBTS_GroupSetting -n root\MicrosoftBizTalkServer&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $dbName = $group.MgmtDBName&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $server = $group.MgmtDBServerName&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [System.String]::Concat(&amp;quot;server=&amp;quot;, $server, &amp;quot;;database=&amp;quot;, $dbName, &amp;quot;;Integrated Security=SSPI&amp;quot;)&lt;br /&gt;} &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Notice that I simply execute the Concat to get the connection string, and because this results in a new string, that value is returned to the pipeline and available to be set in a variable or used in a cmdlet.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;I&amp;#39;m loving the stuff I can do with PowerShell and feel like I&amp;#39;m just scratching the surface.&amp;nbsp; Hope this helps someone else get a jumpstart as well.&amp;nbsp; I&amp;#39;ve attached the PowerShell file with my functions included.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;Attachment: &lt;a href="http://alt.pluralsight.com/matt/downloads/bts_powershell.ps1.txt" title="BTS_PowerShell.ps1.txt" class="null"&gt;BizTalk_PowerShell.ps1.txt&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=51226" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/matt/archive/tags/BizTalk+Server/default.aspx">BizTalk Server</category></item><item><title>Upcoming talks and webcast</title><link>http://www.pluralsight.com/community/blogs/matt/archive/2008/06/09/51137.aspx</link><pubDate>Mon, 09 Jun 2008 19:28:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:51137</guid><dc:creator>matt-milner</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/matt/rsscomments.aspx?PostID=51137</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/matt/archive/2008/06/09/51137.aspx#comments</comments><description>&lt;p&gt;I've got a couple of fun talks coming up this month.&amp;nbsp; First, I'm going to be doing an MSDN webcast on Windows Workflow Foundation - Communication in Depth.&amp;nbsp; I'm going to dive into the core communication architecture, discuss how some of the OOB activities use it, and how you can build your own activities to take advantage of it.&amp;nbsp; We'll cover one way communication between the host and the workflow, but we'll also look at how to do two-way communication to get a response back from the workflow.&amp;nbsp; &lt;/p&gt; &lt;p&gt;The talk information can be found at this link:&lt;/p&gt; &lt;p&gt;&lt;a href="http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032380769&amp;amp;EventCategory=4&amp;amp;culture=en-US&amp;amp;CountryCode=US"&gt;Windows Workflow Communication in Depth&lt;/a&gt;&lt;/p&gt; &lt;p&gt;This talk is also part of a series where you can find other talks from my friends Jon Flanders and Jesus Rodriguez on other .NET 3.5 topics.&amp;nbsp; The link for the series is here:&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.microsoft.com/events/series/msdnnetframework35.aspx?tab=webcasts&amp;amp;id=liveall"&gt;http://www.microsoft.com/events/series/msdnnetframework35.aspx?tab=webcasts&amp;amp;id=liveall&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;I'm also doing a local talk this month at the Microsoft office if you are in the Minneapolis area.&amp;nbsp; I'll be talking about building connected systems with WF and WCF for developers and architects.&amp;nbsp; This will be a good talk if you are interested in these technologies and want to learn more about how to use them to build real applications.&amp;nbsp; &lt;/p&gt; &lt;p&gt;&lt;a title="Register Today" href="http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032380206&amp;amp;culture=en-US"&gt;Event information and registration&lt;/a&gt;&lt;/p&gt; &lt;p&gt;I had a great time at Tech Ed and I'm looking forward to the conferences coming up this fall (&lt;a href="http://mdc.ilmservice.com/"&gt;Minnesota Developers Conference&lt;/a&gt; where I'll be doing talks on LINQ and ADO.NET Data Services and &lt;a href="http://www.heartlanddc.com/"&gt;Heartland Developers Conference&lt;/a&gt; where I'll be talking about BizTalk Services and the "Internet Service Bus").&amp;nbsp; &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=51137" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/matt/archive/tags/General+Musings/default.aspx">General Musings</category><category domain="http://www.pluralsight.com/community/blogs/matt/archive/tags/Windows+Workflow+Foundation/default.aspx">Windows Workflow Foundation</category><category domain="http://www.pluralsight.com/community/blogs/matt/archive/tags/Windows+Communication+Foundation/default.aspx">Windows Communication Foundation</category></item><item><title>My Tech Ed Demos</title><link>http://www.pluralsight.com/community/blogs/matt/archive/2008/06/07/51126.aspx</link><pubDate>Sat, 07 Jun 2008 07:29:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:51126</guid><dc:creator>matt-milner</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/matt/rsscomments.aspx?PostID=51126</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/matt/archive/2008/06/07/51126.aspx#comments</comments><description>&lt;p&gt;Thanks to everyone who came to my session on port binding options in BizTalk Server yesterday.&amp;nbsp; You can find the demos &lt;a href="http://www.pluralsight.com/matt/downloads/soa402_milner.zip"&gt;here&lt;/a&gt; including the visual studio solution, binding files for BizTalk and the PowerShell script I used for setting up and running my demos.&amp;nbsp; &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=51126" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/matt/archive/tags/BizTalk+Server/default.aspx">BizTalk Server</category><category domain="http://www.pluralsight.com/community/blogs/matt/archive/tags/General+Musings/default.aspx">General Musings</category></item><item><title>Is support coming for BizTalk builds on TFS?</title><link>http://www.pluralsight.com/community/blogs/matt/archive/2008/05/12/50905.aspx</link><pubDate>Mon, 12 May 2008 23:54:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:50905</guid><dc:creator>matt-milner</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/matt/rsscomments.aspx?PostID=50905</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/matt/archive/2008/05/12/50905.aspx#comments</comments><description>&lt;p&gt;According to Brian Harry[1] , he has been working with the BTS folks to get this put in place.&amp;nbsp; He has been assured that this will be part of the R3[2] release of BizTalk Server that is due out next year.&amp;nbsp; Finally, automated builds for BizTalk without all the hassle, I hope this definitely makes it into the product, as right now it is one more thing that makes people think BizTalk is not for .NET developers.&amp;nbsp; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;[1] &lt;a title="BizTalk Support with TFS" href="http://blogs.msdn.com/bharry/archive/2008/05/12/biztalk-support-with-tfs.aspx"&gt;BizTalk Support with TFS&lt;/a&gt;&lt;/p&gt; &lt;p&gt;[2] &lt;a title="http://blogs.msdn.com/stevemar/archive/2008/04/23/biztalk-server-platform-updates.aspx" href="http://blogs.msdn.com/stevemar/archive/2008/04/23/biztalk-server-platform-updates.aspx"&gt;http://blogs.msdn.com/stevemar/archive/2008/04/23/biztalk-server-platform-updates.aspx&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=50905" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/matt/archive/tags/BizTalk+Server/default.aspx">BizTalk Server</category></item><item><title>Not just a service pack (VS 2008 and .NET 3.5 SP 1)</title><link>http://www.pluralsight.com/community/blogs/matt/archive/2008/05/12/50904.aspx</link><pubDate>Mon, 12 May 2008 23:50:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:50904</guid><dc:creator>matt-milner</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/matt/rsscomments.aspx?PostID=50904</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/matt/archive/2008/05/12/50904.aspx#comments</comments><description>&lt;p&gt;Microsoft has rolled out the beta of SP1 for .NET Framework version 3.5 and Visual Studio 2008.&amp;nbsp; Now don't get confused, this is not just a simple set of bug fixes, this thing is big!&amp;nbsp; &lt;/p&gt; &lt;ul&gt; &lt;li&gt;Entity Framework and LINQ to entities&lt;/li&gt; &lt;li&gt;ADO.NET Data Services (formerly project "Astoria")&lt;/li&gt; &lt;li&gt;Dynamic data web sites (highly RAD data driven web sites)&lt;/li&gt; &lt;li&gt;Performance improvements across the board (WCF, WPF, AJAX, debugging, etc.)&lt;/li&gt; &lt;li&gt;New client profile (not quite the slimmed down CLR of silverlight, but gives you a smaller footprint without server technologies you don't need).&amp;nbsp; Now, if they could do the opposite and remove the Windows UI stuff so I could run Windows Server 2008 Server Core with IIS and ASP.NET.&amp;nbsp; &lt;/li&gt; &lt;li&gt;a bunch of perf and usability improvements in VS 2008&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;I think the Entity stuff, plus the Dynamic data and data services is a killer combination for many web site developers to get their data modeled and quickly expose an admin tool for data maintenance&amp;nbsp; and service endpoints for interaction.&amp;nbsp; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Check out Soma's blog for some high level details and download links:&lt;a title="Visual Studio 2008 and .NET FX 3.5 SP1 Beta available now" href="http://blogs.msdn.com/somasegar/archive/2008/05/12/visual-studio-2008-and-net-fx-3-5-sp1-beta-available-now.aspx"&gt;Visual Studio 2008 and .NET FX 3.5 SP1 Beta available now&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Scott Gu has details on many of the new features in the IDE and framework: &lt;a title="http://weblogs.asp.net/scottgu/archive/2008/05/12/visual-studio-2008-and-net-framework-3-5-service-pack-1-beta.aspx" href="http://weblogs.asp.net/scottgu/archive/2008/05/12/visual-studio-2008-and-net-framework-3-5-service-pack-1-beta.aspx"&gt;http://weblogs.asp.net/scottgu/archive/2008/05/12/visual-studio-2008-and-net-framework-3-5-service-pack-1-beta.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Brian Harry has the details on the TFS improvements in the SP: &lt;a title="Team Foundation Server 2008 SP1 Preview" href="http://blogs.msdn.com/bharry/archive/2008/04/28/team-foundation-server-2008-sp1.aspx"&gt;Team Foundation Server 2008 SP1 Preview&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;A metric b*#&amp;amp;load of enhancements for a service pack - awesome job folks, I can't wait for the released bits this summer.&amp;nbsp; &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=50904" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/matt/archive/tags/ASP.Net/default.aspx">ASP.Net</category><category domain="http://www.pluralsight.com/community/blogs/matt/archive/tags/General+Musings/default.aspx">General Musings</category><category domain="http://www.pluralsight.com/community/blogs/matt/archive/tags/Windows+Workflow+Foundation/default.aspx">Windows Workflow Foundation</category><category domain="http://www.pluralsight.com/community/blogs/matt/archive/tags/Windows+Communication+Foundation/default.aspx">Windows Communication Foundation</category></item><item><title>Spaghetti Code Podcast - Connected Systems</title><link>http://www.pluralsight.com/community/blogs/matt/archive/2008/05/12/50902.aspx</link><pubDate>Mon, 12 May 2008 21:56:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:50902</guid><dc:creator>matt-milner</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/matt/rsscomments.aspx?PostID=50902</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/matt/archive/2008/05/12/50902.aspx#comments</comments><description>&lt;p&gt;I got a chance a few weeks ago to sit down with Jeff Brand at the local Microsoft office and talk about something I love - Connected Systems.&amp;nbsp; We discussed Workflow and Biztalk, WCF and web services and how it all fits together.&amp;nbsp; Jeff is fun to talk to and does a good job of asking questions that developers are interested in.&amp;nbsp; The issues most developers face when building connected systems and trying to pick technologies were especially fun to discuss.&amp;nbsp; If you are interested, check out the audio - &lt;a title="http://www.slickthought.net/post/2008/05/Spaghetti-Code-Podcast---Matt-Milner-on-Connected-Systems.aspx" href="http://www.slickthought.net/post/2008/05/Spaghetti-Code-Podcast---Matt-Milner-on-Connected-Systems.aspx"&gt;http://www.slickthought.net/post/2008/05/Spaghetti-Code-Podcast---Matt-Milner-on-Connected-Systems.aspx&lt;/a&gt;. &lt;/p&gt; &lt;p&gt;You can also check out some of his other podcasts with more Minneapolis folks on a range of topics: &lt;a title="http://www.slickthought.net/category/SpaghettiCode.aspx" href="http://www.slickthought.net/category/SpaghettiCode.aspx"&gt;http://www.slickthought.net/category/SpaghettiCode.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Enjoy!&lt;/p&gt; &lt;p&gt;Matt&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=50902" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/matt/archive/tags/BizTalk+Server/default.aspx">BizTalk Server</category><category domain="http://www.pluralsight.com/community/blogs/matt/archive/tags/Windows+Workflow+Foundation/default.aspx">Windows Workflow Foundation</category><category domain="http://www.pluralsight.com/community/blogs/matt/archive/tags/Windows+Communication+Foundation/default.aspx">Windows Communication Foundation</category></item><item><title>Applied BTS R2 in the Windy City</title><link>http://www.pluralsight.com/community/blogs/matt/archive/2008/04/10/50700.aspx</link><pubDate>Thu, 10 Apr 2008 20:00:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:50700</guid><dc:creator>matt-milner</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/matt/rsscomments.aspx?PostID=50700</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/matt/archive/2008/04/10/50700.aspx#comments</comments><description>&lt;p&gt;I've been teaching mostly WF and WCF lately, so I'm excited that in a couple of weeks (April 22) I'll be getting a chance to teach our core BizTalk course again in the lovely city of Chicago.&amp;nbsp; I'm excited because there is a lot of cool stuff for this particular open enrollment.&amp;nbsp; &lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;1) R2 - need I say more? I will.&amp;nbsp; We will be using the latest bits to teach the core course from now on so you'll be learning BizTalk Server fundamentals using the latest and greatest version.&amp;nbsp; This is still a class for developers new to BizTalk, so if you have taken this class, you might be interested in the &lt;a href="http://www.pluralsight.com/courses/AppliedBizTalkServer2006R2.aspx" target="_blank"&gt;R2 features class&lt;/a&gt; that Jon is teaching in May and August.&amp;nbsp; &lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;2) Dual Monitors!&amp;nbsp; Our crack sales team has negotiated dual monitors from the hardware vendor so you'll be able to see the lab manual and Visual Studio each in full screen glory! &lt;/p&gt; &lt;p&gt;3) It's in downtown Chicago right on Wacker Drive near all sorts of cool stuff for the evenings.&lt;/p&gt; &lt;p&gt;4) It's BizTalk and we'll cover all the three letter acronyms (TLA) BRE, BAM, WCF,WSE,ASMX (ok that's four letters), CSV, HAT, PUB (actually a technical term, but maybe where we'll be in the evenings as well), SUB, EAI, ESB, SOA.&amp;nbsp; I could go on, but you get the picture.&amp;nbsp; &lt;/p&gt; &lt;p&gt;5) As if all the above are not enough, we have some seats available and the course is in a week and half, so the sales guys are "ready to deal".&amp;nbsp; Actually, their just ready to cut you some discounts :) , especially if you sign up two or three people together, but even if you are just signing up one developer.&amp;nbsp; &lt;a href="http://www.pluralsight.com/contact.aspx" target="_blank"&gt;Talk to our fabulous sales team&lt;/a&gt; to get more information or register with a discount.&amp;nbsp; Just tell them you read about it on my blog.&amp;nbsp; &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Hope to see you there, and once I get back from the class, I promise some more technical content.&amp;nbsp; I've been working on some demos and samples that I'll be posting over the next couple of months.&amp;nbsp; &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=50700" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/matt/archive/tags/BizTalk+Server/default.aspx">BizTalk Server</category><category domain="http://www.pluralsight.com/community/blogs/matt/archive/tags/General+Musings/default.aspx">General Musings</category></item><item><title>Elegant Code Podcast</title><link>http://www.pluralsight.com/community/blogs/matt/archive/2008/03/17/50492.aspx</link><pubDate>Mon, 17 Mar 2008 17:22:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:50492</guid><dc:creator>matt-milner</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/matt/rsscomments.aspx?PostID=50492</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/matt/archive/2008/03/17/50492.aspx#comments</comments><description>&lt;p&gt;Last week I had the pleasure of teaching a class for &lt;a href="http://www.healthwise.org/" target="_blank"&gt;Healthwise&lt;/a&gt; in Boise, and while there met David Starr.&amp;nbsp; David has a website called &lt;a href="http://www.elegantcode.com/" target="_blank"&gt;Elegant Code&lt;/a&gt; and we got a chance to sit down for a podcast during the week.&amp;nbsp; We chatted about WF, WCF, BizTalk, "Oslo" and being a Pluralsight instructor.&amp;nbsp; &lt;a href="http://elegantcode.com/cast/archives/7" target="_blank"&gt;Have a listen&lt;/a&gt; if you are interested, and check out the rest of the site while you are there.&amp;nbsp; &lt;/p&gt; &lt;p&gt;David also organized the &lt;a href="http://www.boisecodecamp.org/" target="_blank"&gt;Boise Code Camp&lt;/a&gt;, which I, sadly, missed by just a day.&amp;nbsp; From the sound of it, this was a huge success and a pretty large event, even by west coast standards.&amp;nbsp; I'm sorry I missed it.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=50492" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/matt/archive/tags/General+Musings/default.aspx">General Musings</category></item><item><title>Minneapolis Developer Roundtable - REST and stuff</title><link>http://www.pluralsight.com/community/blogs/matt/archive/2008/03/13/50472.aspx</link><pubDate>Fri, 14 Mar 2008 04:22:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:50472</guid><dc:creator>matt-milner</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/matt/rsscomments.aspx?PostID=50472</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/matt/archive/2008/03/13/50472.aspx#comments</comments><description>&lt;p&gt;I recently got to sit down with some local smart guys here in Minneapolis and we chatted about REST versus SOA.&amp;nbsp; It wasn't any kind of religious discussion, but it was fun to talk to people who build apps and work with developers every day to hear what they think about this topic.&amp;nbsp; &lt;/p&gt; &lt;p&gt;You can find the audio over on &lt;a href="http://www.slickthought.net/post/Minneapolis-Developer-Roundtable-Podcast---Talking-REST.aspx" target="_blank"&gt;Jeff Brand's&lt;/a&gt; blog.&amp;nbsp; Enjoy!&lt;/p&gt; &lt;p&gt;We do these periodically and are looking for other folks that might be interested in joining, so if you live in the area, contact Jeff through his blog and let him know.&amp;nbsp; &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=50472" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/matt/archive/tags/General+Musings/default.aspx">General Musings</category></item><item><title>Disappearing BizTalk Add Generated Items wizard with SQL adapter</title><link>http://www.pluralsight.com/community/blogs/matt/archive/2008/02/13/50207.aspx</link><pubDate>Wed, 13 Feb 2008 10:59:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:50207</guid><dc:creator>matt-milner</dc:creator><slash:comments>3</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/matt/rsscomments.aspx?PostID=50207</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/matt/archive/2008/02/13/50207.aspx#comments</comments><description>&lt;p&gt;I've run into this in two different places now so I figured it was time to blog about it and hopefully help someone else out since I didn't see much about this on the web when searching.&amp;nbsp; What I experienced was that when I would try to add a schema for a table in SQL Server, the wizard would get part way through allowing me to configure it, and then it would just disappear (usually when I hit the next button after specifying the select state or when I was about to choose the tables for an updategram) with no errors in the UI or in the event log.&amp;nbsp; I have seen this in two different cases.&amp;nbsp; &lt;/p&gt; &lt;p&gt;In the first case, and easiest to fix, I was trying to access tables to create an updategram, but all of the tables names belonged to a schema other than the DBO schema.&amp;nbsp; Every time I tried to create the updategram, I would say I wanted to do the updategram and then wizard would crash.&amp;nbsp; In this case, I was able to duplicate the database tables in another database (using scripting of the sql from the sql management tool) and put it in the default namespace.&amp;nbsp; Then I updated the schema by manually changing the node in the updategram that corresponded to the table name so that it contained the schema name.&amp;nbsp; After making this change, the updated schema worked fine against the database.&amp;nbsp; So it seems like the adapter can handle the non-standard schemas at runtime just fine, but not at design time.&amp;nbsp; &lt;/p&gt; &lt;p&gt;I should note that the above scenario was with BTS 06, not the R2 release.&amp;nbsp; I haven't determined if this is still an issue in the latest bits.&amp;nbsp; &lt;/p&gt; &lt;p&gt;The other scenario where I ran into this problem was with a BizTalk solution that had been created in BTS 06 and which I was now opening with BTS 06 R2.&amp;nbsp; In this situation, I was creating a receive location and after I entered the select statement, the wizard would bail on my with no warnings or errors.&amp;nbsp; I'm still not sure why this one was happening, but here is what I did to get it working. I created a new empty BizTalk project in a brand new solution and used the wizard to generate the items, which worked fine for some reason.&amp;nbsp; Then I went back to my old solution and tried again and it worked.&amp;nbsp; I'm surmising that running the wizard once on a new project allowed the problem to be fixed, some update or reg setting tweaked with the new project type, but I don't really know, it could have been a fluke of some sort for all I know.&amp;nbsp; The end result is that now my wizard appears to be working fine with new and updated projects.&amp;nbsp; &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=50207" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/matt/archive/tags/BizTalk+Server/default.aspx">BizTalk Server</category></item><item><title>Microsoft live labs projects</title><link>http://www.pluralsight.com/community/blogs/matt/archive/2007/12/07/49373.aspx</link><pubDate>Fri, 07 Dec 2007 10:51:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:49373</guid><dc:creator>matt-milner</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/matt/rsscomments.aspx?PostID=49373</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/matt/archive/2007/12/07/49373.aspx#comments</comments><description>&lt;p&gt;Several people are starting to blog about the introduction of the Volta project on live.labs.com.&amp;nbsp; This is a pretty interesting research project and points to an interesting development at Microsoft.&amp;nbsp; I get a little frustrated at times b/c I hear developers complain that a) Microsoft isn't agile enough and it takes them too long to release stuff, and b) there is too much stuff coming out of Microsoft for me to keep up.&amp;nbsp; Well which is it! &lt;/p&gt; &lt;p&gt;The stuff on live labs is really early stuff that is only interesting if you want to see what Microsoft is thinking about long term and provide feedback.&amp;nbsp; If you are going to get frustrated when you can't use this stuff in 6 months in production, then it is not for you.&amp;nbsp; That being said, looking at the &lt;a href="http://labs.live.com/CategoryView.aspx?category=nav_Projects" target="_blank"&gt;list of projects out there&lt;/a&gt;, two really stick out for me: Volta and Deep Fish.&amp;nbsp; Volta is a really intesting project to me in that it potentially allows me to write client code once and have the framework take advantage of the richest platform on the client.&amp;nbsp; I think that is where it really shines, where I can create the UI and it will use Ajax on clients that don't have .NET, and use something richer like Silverlight 2.0 when it is there.&amp;nbsp; I think that is more compelling than figuring out architecture/deployment later on.&amp;nbsp; I watched a Channel 9 video a this summer about Volta: check out &lt;a href="http://channel9.msdn.com/ShowPost.aspx?PostID=324199" target="_blank"&gt;part 1&lt;/a&gt; and &lt;a href="http://channel9.msdn.com/ShowPost.aspx?PostID=324796" target="_blank"&gt;part 2&lt;/a&gt; to hear more about the ideas from &lt;/p&gt; &lt;p&gt;&lt;a href="http://www.slickthought.net/post/O'-Browser-Where-Art-Though.aspx" target="_blank"&gt;Jeff was just complaining about the fact that IE mobile has not evolved&lt;/a&gt;.&amp;nbsp; I look at the Deepfish project and it gives me hope that someday my Windows Mobile device will have a browser half as cool as the one on the IPhone.&amp;nbsp; &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=49373" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/matt/archive/tags/General+Musings/default.aspx">General Musings</category></item><item><title>Minneapolis Roundtable on RIA</title><link>http://www.pluralsight.com/community/blogs/matt/archive/2007/12/07/49370.aspx</link><pubDate>Fri, 07 Dec 2007 09:56:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:49370</guid><dc:creator>matt-milner</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/matt/rsscomments.aspx?PostID=49370</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/matt/archive/2007/12/07/49370.aspx#comments</comments><description>&lt;p&gt;A couple of weeks ago, I had the pleasure of participating in a roundtable event with some really smart folks from around the Minneapolis area.&amp;nbsp; Jeff Brand, our local evangelist and .NET sex symbol (self-proclaimed) organized the whole thing and recorded it using a very cool device from Microsoft that came out of their research group.&amp;nbsp; It is a panning video camera that can react to the voices and capture video of the person speaking.&amp;nbsp; I think Jeff had some problems getting it working just how he wanted, but it is still pretty cool stuff and I'm sure we'll get it ironed out for future chats.&amp;nbsp; &lt;/p&gt; &lt;p&gt;Jeff has &lt;a href="http://www.slickthought.net/post/Spaghetti-Code-Presents-the-Minneapolis-Developer-Roundtable---Podcast-Online-and-Video-Coming-Soon.aspx" target="_blank"&gt;some posts with the links to download the conversation&lt;/a&gt; if you are interested.&amp;nbsp; Unfortunately, I was in NC at the time teaching a class so I had to participate via phone and Live Meeting.&amp;nbsp; While it gave me a remote user look at the experience with the Roundtable device, it was less than optimal way to be an active participant in the conversation.&amp;nbsp; I'm looking forward to the next conversation when I can hopefully be in town.&amp;nbsp; &lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=49370" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/matt/archive/tags/General+Musings/default.aspx">General Musings</category></item><item><title>Updating the Retry Activity - adding timed interval</title><link>http://www.pluralsight.com/community/blogs/matt/archive/2007/11/28/49315.aspx</link><pubDate>Thu, 29 Nov 2007 02:19:00 GMT</pubDate><guid isPermaLink="false">d057c89c-07b5-4bfb-b52f-d79d1e3ece89:49315</guid><dc:creator>matt-milner</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://www.pluralsight.com/community/blogs/matt/rsscomments.aspx?PostID=49315</wfw:commentRss><comments>http://www.pluralsight.com/community/blogs/matt/archive/2007/11/28/49315.aspx#comments</comments><description>&lt;p&gt;Updated 11/29 - see below&lt;/p&gt;
&lt;P&gt;I recently created a &lt;A href="http://pluralsight.com/blogs/matt/archive/2007/10/31/48908.aspx"&gt;retry activity&lt;/A&gt; that I've been wanting to write for some time now, and had a few features that I wanted to add. I was teaching a class a couple of weeks ago and took the opportunity to add a retry interval to the activity.&amp;nbsp; The activity is designed as a composite activity which can retry its child activities if it detects that a fault/exception has occurred.&amp;nbsp; Rather than retrying immediately, I wanted the consumer of my activity to be able to specify a TimeSpan indicating how long to wait between retry attempts. &lt;/P&gt;
&lt;P&gt;The simplest part was adding a property that allowed people to specify the interval.&amp;nbsp; &lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: blue"&gt;private &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;TimeSpan &lt;/SPAN&gt;retryInt;

&lt;SPAN style="COLOR: blue"&gt;public &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;TimeSpan &lt;/SPAN&gt;RetryInterval 
{
    &lt;SPAN style="COLOR: blue"&gt;get &lt;/SPAN&gt;{ &lt;SPAN style="COLOR: blue"&gt;return &lt;/SPAN&gt;retryInt; }
    &lt;SPAN style="COLOR: blue"&gt;set &lt;/SPAN&gt;{ retryInt = &lt;SPAN style="COLOR: blue"&gt;value&lt;/SPAN&gt;; }
}
&lt;/PRE&gt;&lt;A href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The next step was to actually use this information.&amp;nbsp; When the child activity closes, my Retry activity checks if it faulted and then needs to reschedule the child activity for execution.&amp;nbsp; With the interval, I need a way to wait for a duration and then schedule the activity for execution.&amp;nbsp; Since my workflow could be persisted during this interval, I have to use a mechanism that will both support passivation, and allow for the workflow to be resumed automatically when the duration has been reached.&amp;nbsp; To support this I used the same mechanism that the delay activity uses, which is to create&amp;nbsp; timer subscription and then wait for an event signaling the time has expired.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;In my event handler for closing child activities, if I determine that I should retry the child activity, I use the following code to 1) create a new workflowqueue where the timer can signal completion, 2)register for data arriving on the queue, 3) create a TimerEventSubscription with my duration and my queue information and 4) add my timer subscription the collection on the workflow.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: #2b91af"&gt;DateTime &lt;/SPAN&gt;expires = &lt;SPAN style="COLOR: #2b91af"&gt;DateTime&lt;/SPAN&gt;.UtcNow.Add(RetryInterval);
SubscriptionID = &lt;SPAN style="COLOR: #2b91af"&gt;Guid&lt;/SPAN&gt;.NewGuid();
thisContext.GetService&amp;lt;&lt;SPAN style="COLOR: #2b91af"&gt;WorkflowQueuingService&lt;/SPAN&gt;&amp;gt;().CreateWorkflowQueue(SubscriptionID, &lt;SPAN style="COLOR: blue"&gt;false&lt;/SPAN&gt;).QueueItemAvailable += &lt;SPAN style="COLOR: blue"&gt;new &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;EventHandler&lt;/SPAN&gt;&amp;lt;&lt;SPAN style="COLOR: #2b91af"&gt;QueueEventArgs&lt;/SPAN&gt;&amp;gt;(RetryActivity_QueueItemAvailable);
&lt;SPAN style="COLOR: #2b91af"&gt;TimerEventSubscription &lt;/SPAN&gt;subscription = &lt;SPAN style="COLOR: blue"&gt;new &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;TimerEventSubscription&lt;/SPAN&gt;(SubscriptionID, WorkflowInstanceId, expires);
&lt;SPAN style="COLOR: #2b91af"&gt;TimerEventSubscriptionCollection &lt;/SPAN&gt;timers = GetTimerSubscriptionCollection();
timers.Add(subscription);
&lt;/PRE&gt;&lt;A href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The GetTimerSubscriptionCollection simply grabs the collection from the parent workflow by recursively climbing the parent hierarchy.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: blue"&gt;private &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;TimerEventSubscriptionCollection &lt;/SPAN&gt;GetTimerSubscriptionCollection()
{
    &lt;SPAN style="COLOR: #2b91af"&gt;Activity &lt;/SPAN&gt;parent = &lt;SPAN style="COLOR: blue"&gt;this&lt;/SPAN&gt;;
    &lt;SPAN style="COLOR: blue"&gt;while &lt;/SPAN&gt;(parent.Parent != &lt;SPAN style="COLOR: blue"&gt;null&lt;/SPAN&gt;)
    {
        parent = parent.Parent;
    }
    &lt;SPAN style="COLOR: #2b91af"&gt;TimerEventSubscriptionCollection &lt;/SPAN&gt;timers = (&lt;SPAN style="COLOR: #2b91af"&gt;TimerEventSubscriptionCollection&lt;/SPAN&gt;)parent.GetValue(&lt;SPAN style="COLOR: #2b91af"&gt;TimerEventSubscriptionCollection&lt;/SPAN&gt;.TimerCollectionProperty);
    &lt;SPAN style="COLOR: blue"&gt;return &lt;/SPAN&gt;timers;
}&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Finally, I have the event handler for when data arrives on the queue for the timer.&amp;nbsp; I simply empty and delete the queue, then begin my next iteration on the child activity.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE class=code&gt;&lt;SPAN style="COLOR: blue"&gt;void &lt;/SPAN&gt;RetryActivity_QueueItemAvailable(&lt;SPAN style="COLOR: blue"&gt;object &lt;/SPAN&gt;sender, &lt;SPAN style="COLOR: #2b91af"&gt;QueueEventArgs &lt;/SPAN&gt;e)
{
    &lt;SPAN style="COLOR: #2b91af"&gt;ActivityExecutionContext &lt;/SPAN&gt;ctx = sender &lt;SPAN style="COLOR: blue"&gt;as &lt;/SPAN&gt;&lt;SPAN style="COLOR: #2b91af"&gt;ActivityExecutionContext&lt;/SPAN&gt;;
    ctx.GetService&amp;lt;&lt;SPAN style="COLOR: #2b91af"&gt;WorkflowQueuingService&lt;/SPAN&gt;&amp;gt;().GetWorkflowQueue(e.QueueName).Dequeue();
    ctx.GetService&amp;lt;&lt;SPAN style="COLOR: #2b91af"&gt;WorkflowQueuingService&lt;/SPAN&gt;&amp;gt;().DeleteWorkflowQueue(e.QueueName);

    BeginIteration(ctx);
}&lt;/PRE&gt;&lt;A href="http://11011.net/software/vspaste"&gt;&lt;/A&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;So adding a retry interval turned out to be pretty simple and I was also able to provide a good example of how you can put your own delay into your activities.&amp;nbsp; In a later post, I'm going to talk about the other issue I had to manage which is how to deal with exceptions and control whether or not my Retry activity got put into the faulting state.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;p&gt;BEGIN UPDATE&lt;/p&gt;
&lt;p&gt;Someone posted a question on the original activity indicating some concern over the fact that I hadn't overridden the Cancel method.&amp;nbsp; In the simpler scenario I should have still done that, but with the addition of my retry interval it became even more important as I had more to clean up.&amp;nbsp; So I added the Cancel method and do two things in it.&amp;nbsp; First, I had to see if there were any spawned execution contexts that were currently executing indicating that I had an iteration in progress and cancel the root activity if I did.&amp;nbsp; I also had to add some code to remove the timersubscription in both the expected case and the exception case.&amp;nbsp; In the process, I factored some code into a helper method to remove the timer subscription and the workflow queue when I no longer needed them.&amp;nbsp; The cancel method now looks like this:&lt;/p&gt;&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;protected override &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ActivityExecutionStatus &lt;/span&gt;Cancel(&lt;span style="color: #2b91af"&gt;ActivityExecutionContext &lt;/span&gt;executionContext)
{
    &lt;span style="color: blue"&gt;bool &lt;/span&gt;canClose = &lt;span style="color: blue"&gt;true&lt;/span&gt;;
    &lt;span style="color: #2b91af"&gt;ActivityExecutionContext &lt;/span&gt;ctx = executionContext;
    &lt;span style="color: green"&gt;//cancel any execution iteration
    &lt;/span&gt;&lt;span style="color: blue"&gt;if &lt;/span&gt;(ctx.ExecutionContextManager.ExecutionContexts.Count &amp;gt; 0)
    {
        ctx.ExecutionContextManager.ExecutionContexts[0].CancelActivity(ctx.ExecutionContextManager.ExecutionContexts[0].Activity);
        canClose = &lt;span style="color: blue"&gt;false&lt;/span&gt;;
    }
    &lt;span style="color: green"&gt;//remove the timer and related queue if there is a subscription
    &lt;/span&gt;CleanupSubscription(ctx);
    &lt;span style="color: blue"&gt;return &lt;/span&gt;canClose ? &lt;span style="color: #2b91af"&gt;ActivityExecutionStatus&lt;/span&gt;.Closed : &lt;span style="color: #2b91af"&gt;ActivityExecutionStatus&lt;/span&gt;.Canceling;
}&lt;/pre&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;Notice that I can only close the activity if the child is not currently executing.&amp;nbsp; If I had to cancel the child activity, then I can't yet close the retry, that will happen in the usual way when the child activity closes.&amp;nbsp; The other important step I added was to check the current ExecutionStatus of the retry activity before scheduling a new iteration.&amp;nbsp; If the activity has moved into the Canceling state, I shouldn't start a new iteration regardless of how many times I am supposed to retry.&amp;nbsp; &lt;p&gt;If you have any other feedback or suggested improvements, keep them coming.&amp;nbsp; &lt;/p&gt;
&lt;p&gt;END UPDATE&lt;/p&gt;
&lt;P&gt;The updated retry activity can be found &lt;A href="http://www.pluralsight.com/matt/downloads/CompositeActivitiesV2.zip" target=_blank&gt;here,&lt;/A&gt; and has been updated for Visual Studio 2008.&amp;nbsp; If you want the updates for 2005, just download the &lt;A href="http://www.pluralsight.com/matt/downloads/CompositeActivities.zip"&gt;original&lt;/A&gt;, and then copy the class file for the retry activity from the new project.&amp;nbsp; I didn't use any new features of 2008, just updated the project and solution files, so it should work fine.&amp;nbsp; &lt;/P&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://www.pluralsight.com/community/aggbug.aspx?PostID=49315" width="1" height="1"&gt;</description><category domain="http://www.pluralsight.com/community/blogs/matt/archive/tags/Windows+Workflow+Foundation/default.aspx">Windows Workflow Foundation</category></item></channel></rss>