<rss version="2.0" xmlns:a10="http://www.w3.org/2005/Atom"><channel><title>QuickLearn Team Blog</title><description>QuickLearn Blog Feed</description><language>en-US</language><item><guid isPermaLink="false">http://quicklearn.com/blog/post.aspx?id=863c0140-d1be-4feb-9ae3-74d18723feda</guid><link>http://quicklearn.com/blog/post/Examining-the-QuickLearn-Virtual-Lab-Infrastructure.aspx</link><author>nickh</author><category>Blog</category><title>Examining the QuickLearn Virtual Lab Infrastructure</title><description>&lt;p&gt;With the sudden proliferation of cloud-based services it no longer seems like much of a novelty to have an elastic infrastructure capable of on-demand scaling provisioning of virtual resources. Instead it has become something almost taken for granted, and it may even be expected that this can be easily provided given enough on-premise machines. New &lt;a href="http://www.bing.com/search?q=private+cloud&amp;amp;form=QBLH&amp;amp;qs=n&amp;amp;sk=&amp;amp;sc=8-8"&gt;terms&lt;/a&gt;, however misleading, have even been coined to describe such an internal elastic architecture, and software custom tailored to the challenge has already been developed many times over, with even more offerings still in development.&lt;/p&gt;  &lt;p&gt;However, working in technology education layers an additional set of requirements on this common expectation. Customers themselves must be able to trigger the provisioning of virtual resources, and access them directly from out in the wild wild web. What I am describing, albeit rather cryptically, are Virtual Labs.&lt;/p&gt;  &lt;p&gt;The concept of a Virtual Lab is that a student can access a web page, and after a short period of boot-up time, be connected directly into a virtual machine that is set up and ready to provide a hands-on learning experience. These activities are typically limited in duration and do not provide persistence of a student’s work between sessions. This is less than ideal for typical classroom learning where a student will be using a single machine all week, but makes perfect sense for self-paced learning offerings wherein the student may spend many weeks working through the same material and computing resources cannot be tied up for the entire duration.&lt;/p&gt;  &lt;p&gt;Right now QuickLearn is working to deliver some of its core .NET, SharePoint 2010 and BizTalk Server 2010 training offerings in a self-paced format. As part of this effort, it was decided that the lab activities for these new courses should be provided as Virtual Labs available from anywhere and on any device or platform containing a capable RDP client. An additional requirement was that we must be able to use existing VHD files for the classes, without having to rebuild anything or re-install software.&lt;/p&gt;  &lt;p&gt;After existing solutions were evaluated (including Microsoft’s &lt;a href="http://technet.microsoft.com/en-us/library/bb740747.aspx"&gt;Virtual Machine Manager Self-Service Portal&lt;/a&gt;), it was decided that the solution should be built internally. Development was completed at the beginning of this week, and the resulting experience was even better than I had initially imagined.&lt;/p&gt;  &lt;p align="center"&gt;&lt;a href="http://www.quicklearn.com/blog/image.axd?picture=vldiagram.png"&gt;&lt;img style="border-right-width: 0px; display: block; float: none; border-top-width: 0px; border-bottom-width: 0px; margin-left: auto; border-left-width: 0px; margin-right: auto" title="QuickLearn Virtual Lab Infrastructure" border="0" alt="QuickLearn Virtual Lab Infrastructure" src="http://www.quicklearn.com/blog/image.axd?picture=vldiagram_thumb.png" width="370" height="284" /&gt;(click for a larger view)&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The solution ended up ultimately consisting of four separate components. The first was QuickLearn’s &lt;a href="http://www.quicklearn.com/online/"&gt;online player&lt;/a&gt; application. This provides the interface through which a student can initiate a Virtual Lab. Once the student decides to begin a virtual lab, a request is sent to a Virtual Lab Service. The Virtual Lab Service is a WCF service that is responsible for managing a pool of Hyper-V servers, and routing control messages to start / stop virtual machines. It is also responsible for providing the client with updates about the status of their request. Once the Virtual Lab Service receives the request, WMI is used to spin-up the requested instance (from a known save state). Within each instance, an application is running that will call back to the Virtual Lab Service when it realizes that the machine is back online. Once the Virtual Lab Service knows that the machine is online, it provides the client with connection details for accessing the Virtual Machine. Throughout all of this there is a processing loop that ensures VMs are properly destroyed whenever the time allocated for a given lab has expired.&lt;/p&gt;  &lt;p&gt;Since RDP is being used for connectivity, the student can be offered an embedded connection within their browser (given that they are using Internet Explorer). If their browser will not support an embedded connection, they are provided connection details and instructions to connect directly to the image. One really interesting implication of this is that students running Windows 7 will be able to access newer Virtual Labs with true &lt;a href="http://blogs.msdn.com/b/rds/archive/2009/07/01/using-multiple-monitors-in-remote-desktop-session.aspx"&gt;multi-monitor support&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;The implications of using Hyper-V on the back-end is that we are able to share machines with up to three students and still provide a killer experience with multiple cores and up to 4GB of RAM per instance.&lt;/p&gt;  &lt;p&gt;Overall, the development was more or less straight-forward, only requiring ~30 human-hours of time, and the reward for students will be incredible.&lt;/p&gt;</description><pubDate>Thu, 17 Jun 2010 15:27:59 -0700</pubDate><comments>http://quicklearn.com/blog/post/Examining-the-QuickLearn-Virtual-Lab-Infrastructure.aspx#comment</comments><dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">nickh</dc:publisher><pingback:server xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://quicklearn.com/blog/pingback.axd</pingback:server><pingback:target xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://quicklearn.com/blog/post.aspx?id=863c0140-d1be-4feb-9ae3-74d18723feda</pingback:target><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">47</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://quicklearn.com/blog/trackback.axd?id=863c0140-d1be-4feb-9ae3-74d18723feda</trackback:ping><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://quicklearn.com/blog/post/Examining-the-QuickLearn-Virtual-Lab-Infrastructure.aspx#comment</wfw:comment><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://quicklearn.com/blog/syndication.axd?post=863c0140-d1be-4feb-9ae3-74d18723feda</wfw:commentRss></item><item><guid isPermaLink="false">http://quicklearn.com/blog/post.aspx?id=4a9959e7-ef05-459d-a238-f8fef555840a</guid><link>http://quicklearn.com/blog/post/Turn-learning-Office-into-a-game.aspx</link><author>justins</author><category>Blog</category><title>Turn learning Office into a game</title><description>&lt;p&gt;After spending hours learning to play the fake guitar simply to get a higher score, I often wondered why someone couldn&amp;rsquo;t make a game to learn useful skills. Where&amp;rsquo;s arithmetic Hero? Going-to-bed-on-time Hero? Microsoft Office Ribbon Hero?&lt;/p&gt;&#xD;
&lt;p&gt;Well, at least the last one finally exists. &lt;a href="http://www.officelabs.com/ribbonhero" target="_blank"&gt;Microsoft Ribbon Hero&lt;/a&gt; lets you learn to use the Microsoft Ribbon and earn points while doing it. They even have Facebook integration so you can compete against your friends and coworkers. (My FB account is &lt;a href="http://www.facebook.com/profile.php?id=100000758130867" target="_blank"&gt;here&lt;/a&gt;, if you want to challenge me)&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.quicklearn.com/blog/image.axd?picture=image.png" target="_blank"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" src="http://www.quicklearn.com/blog/image.axd?picture=image_thumb.png" border="0" alt="image" width="244" height="194" /&gt;&lt;/a&gt; &lt;a href="http://www.quicklearn.com/blog/image.axd?picture=image_1.png" target="_blank"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" src="http://www.quicklearn.com/blog/image.axd?picture=image_thumb_1.png" border="0" alt="image" width="244" height="221" /&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;The premise of the Ribbon is based on sound UI design (it&amp;rsquo;s even won &lt;a href="http://blogs.msdn.com/ianpal/archive/2008/08/14/10-best-application-uis-of-2008.aspx" target="_blank"&gt;awards&lt;/a&gt;), but it&amp;rsquo;s so &lt;em&gt;different&lt;/em&gt; than what we were used to. If you&amp;rsquo;re like me, you&amp;rsquo;ve figured out where your most commonly used items are on the Ribbon, but haven&amp;rsquo;t fully explored the other features and often have to hunt for that &lt;em&gt;one&lt;/em&gt; option that you use so rarely. Well, let&amp;rsquo;s take that &lt;strong&gt;need &lt;/strong&gt;for points and apply it to learning something we can actually use in everyday life.&lt;/p&gt;&#xD;
&lt;p&gt;Finally, a game you can play in front of the boss. After all, you&amp;rsquo;re increasing productivity!&lt;/p&gt;</description><pubDate>Mon, 08 Mar 2010 08:58:00 -0700</pubDate><comments>http://quicklearn.com/blog/post/Turn-learning-Office-into-a-game.aspx#comment</comments><dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">justins</dc:publisher><pingback:server xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://quicklearn.com/blog/pingback.axd</pingback:server><pingback:target xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://quicklearn.com/blog/post.aspx?id=4a9959e7-ef05-459d-a238-f8fef555840a</pingback:target><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">23</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://quicklearn.com/blog/trackback.axd?id=4a9959e7-ef05-459d-a238-f8fef555840a</trackback:ping><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://quicklearn.com/blog/post/Turn-learning-Office-into-a-game.aspx#comment</wfw:comment><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://quicklearn.com/blog/syndication.axd?post=4a9959e7-ef05-459d-a238-f8fef555840a</wfw:commentRss></item><item><guid isPermaLink="false">http://quicklearn.com/blog/post.aspx?id=ccee3d52-49d9-4178-a340-8f4169d6ade7</guid><link>http://quicklearn.com/blog/post/Survey-of-the-NET-Blogosphere.aspx</link><author>nickh</author><category>.NET Framework</category><category>Blog</category><title>Survey of the .NET Blogosphere</title><description>&lt;p&gt;Last week I undertook a completely unscientific study of the .NET Blogosphere (as much as I loathe that term), to determine which namespaces and classes people are most excited about, confused by, or frustrated with – at least to the point that they would dedicate the time to write in their blog about them. My methods for undertaking this &lt;em&gt;study&lt;/em&gt; were rather simplistic. I wrote a quick and dirty console application to reflect through the .NET Framework namespaces and classes, and search the internet for mentions of them alongside the terms &lt;em&gt;.NET&lt;/em&gt; and &lt;em&gt;blog&lt;/em&gt;. For classes whose namespaces contained no periods, the full name of the class was used as the search term. For those classes whose namespaces did contain periods, the namespace and name of the class were used as separate search terms. For example, the class System.IO.File would result in a search for “System.IO File .NET blog”, whereas the class System.String would result in a search for “System.String .NET blog”.&lt;/p&gt;  &lt;p&gt;More than to just do a popularity contest of the different classes, I wanted to try to determine the best sources of information for each component of the framework. I wanted to see which sites seemed to consistently beat out others as authoritative sources with complete coverage of a given area. In preparation for the transition to .NET 4, I also was interested to see if the features new to .NET 3, and .NET 3.5 received similar coverage to those classes/namespaces that are used in nearly every project created. This final concern will require further testing and analysis before any conclusions can be reached.&lt;/p&gt;  &lt;p&gt;What I did find, however, was that (perhaps unsurprisingly considering the methods) those classes/namespaces which one might use more often round out the top 10 result getters:&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="middle" align="center"&gt;&lt;b&gt;Class / Namespace&lt;/b&gt;           &lt;p&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="middle" align="center"&gt;&lt;b&gt;Result Count&lt;/b&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;System.IO&lt;/td&gt;        &lt;td align="right"&gt;14000000&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;System.IO.File&lt;/td&gt;        &lt;td align="right"&gt;12500000&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;System.Xml&lt;/td&gt;        &lt;td align="right"&gt;12200000&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;System.Collections.Generic&lt;/td&gt;        &lt;td align="right"&gt;10600000&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;System.Collections&lt;/td&gt;        &lt;td align="right"&gt;10400000&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;System.Net&lt;/td&gt;        &lt;td align="right"&gt;8280000&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;System&lt;/td&gt;        &lt;td align="right"&gt;7480000&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;System.Web&lt;/td&gt;        &lt;td align="right"&gt;5970000&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;System.Text&lt;/td&gt;        &lt;td align="right"&gt;5950000&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;Microsoft.VisualBasic&lt;/td&gt;        &lt;td align="right"&gt;5810000&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;I was surprised at how strong of a showing the Microsoft.VisualBasic namespace had among all other contenders. Another interesting study would be to look into those sites that are represented in the result count and find the ratio of C# to VB code contained within.&lt;/p&gt;  &lt;p&gt;When looking only at classes, we find the following in the top 10:&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="middle" align="center"&gt;&lt;b&gt;Class&lt;/b&gt;&lt;/td&gt;        &lt;td valign="middle" align="center"&gt;&lt;b&gt;Result Count&lt;/b&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;System.IO.File&lt;/td&gt;        &lt;td align="right"&gt;12500000&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;System.Collections.IList&lt;/td&gt;        &lt;td align="right"&gt;5250000&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;System.Windows.Forms.Form&lt;/td&gt;        &lt;td align="right"&gt;5190000&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;System.Collections.Generic.List&amp;lt;T&amp;gt;&lt;/td&gt;        &lt;td align="right"&gt;4360000&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;System.Windows.Forms.Application&lt;/td&gt;        &lt;td align="right"&gt;4180000&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;System.IO.Directory&lt;/td&gt;        &lt;td align="right"&gt;3950000&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;System.Windows.Forms.Control&lt;/td&gt;        &lt;td align="right"&gt;3780000&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;System.IO.Stream&lt;/td&gt;        &lt;td align="right"&gt;3380000&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;System.Transactions.Transaction&lt;/td&gt;        &lt;td align="right"&gt;3080000&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;System.Windows.Window&lt;/td&gt;        &lt;td align="right"&gt;2520000&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;From here it looks like features from .NET 2.0 (List&amp;lt;T&amp;gt;) and .NET 3.0 (System.Windows.Window) have gotten enough traction to make a big splash. Generics have had quite a long time to catch on so that’s not surprising. Features from WPF making the top 10 already is surprising (considering how much longer classes have had to be written about), and in this case may simply come as a result of the search term that the application used, which would split off Window from System.Windows.Window as its own term alongside the rest.&lt;/p&gt;  &lt;p&gt;The top 10 sources for information about .NET would appear to be the following:&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="middle" align="center"&gt;&lt;b&gt;Site&lt;/b&gt;&lt;/td&gt;        &lt;td valign="middle" align="center"&gt;&lt;b&gt;Top Result for X            &lt;br /&gt;Classes/Namespaces&lt;/b&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;www.dotnet247.com&lt;/td&gt;        &lt;td align="right"&gt;4029&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;blogs.msdn.com&lt;/td&gt;        &lt;td align="right"&gt;1343&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;msdn.microsoft.com&lt;/td&gt;        &lt;td align="right"&gt;724&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;primates.ximian.com&lt;/td&gt;        &lt;td align="right"&gt;255&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;www.codeproject.com&lt;/td&gt;        &lt;td align="right"&gt;236&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;weblogs.asp.net&lt;/td&gt;        &lt;td align="right"&gt;231&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;social.msdn.microsoft.com&lt;/td&gt;        &lt;td align="right"&gt;137&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;msmvps.com&lt;/td&gt;        &lt;td align="right"&gt;88&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;www.c-sharpcorner.com&lt;/td&gt;        &lt;td align="right"&gt;87&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;www.ucertify.com&lt;/td&gt;        &lt;td align="right"&gt;83&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;The number next to the name of the site indicates how many classes/namespaces for which the site is the top result. Further investigation shows that this might be inaccurate since dotnet247 seems to just index the entire framework and aggregate information from other sites in an automated fashion. Sounds like a great way to make some money from ads, but it might not be the best information source (though is still fairly genius). MSDN blogs definitely provide some serious coverage of the .NET Framework, and likely have excellent information about those classes/namespaces for which they were the top results.&lt;/p&gt;  &lt;p&gt;Another interesting statistic that came out of this entirely informal study is that 29% of the .NET Framework (3.5) has less than 5 articles of coverage on the internet. In fact there are 389 classes or namespaces that would appear to have nothing written about them at all (according to the semi-flawed methodology described above).&lt;/p&gt;  &lt;p&gt;You can use the download link below to download the complete results that contain all of the raw data that was analyzed, as well a pivot table, and some charts that can be used to explore it to some extent. What interesting information can you find? Has anyone else done a more formal survey of the same?&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px"&gt;&lt;p&gt;Download Now: &lt;a href="http://www.quicklearn.com/blogsamples/downloads/dotNetBlogSurvey.zip" target="_blank"&gt;Complete Survey Results&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&#xD;
&lt;p&gt;&#xD;
&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fquicklearn.com%2fredir%2f%3fr%3ddotnetstudy"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fquicklearn.com%2fredir%2f%3fr%3ddotnetstudy" border="0" alt="kick it on DotNetKicks.com" /&gt;&lt;/a&gt;&#xD;
&lt;a rev="vote-for" href="http://dotnetshoutout.com/Survey-of-the-NET-Blogosphere"&gt;&lt;img alt="Shout it" src="http://dotnetshoutout.com/image.axd?url=http%3A%2F%2Fquicklearn.com%2Fredir%2F%3Fr%3Ddotnetstudy" style="border:0px"/&gt;&lt;/a&gt;&#xD;
&lt;/p&gt;</description><pubDate>Tue, 23 Feb 2010 10:55:00 -0700</pubDate><comments>http://quicklearn.com/blog/post/Survey-of-the-NET-Blogosphere.aspx#comment</comments><dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">nickh</dc:publisher><pingback:server xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://quicklearn.com/blog/pingback.axd</pingback:server><pingback:target xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://quicklearn.com/blog/post.aspx?id=ccee3d52-49d9-4178-a340-8f4169d6ade7</pingback:target><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">25</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://quicklearn.com/blog/trackback.axd?id=ccee3d52-49d9-4178-a340-8f4169d6ade7</trackback:ping><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://quicklearn.com/blog/post/Survey-of-the-NET-Blogosphere.aspx#comment</wfw:comment><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://quicklearn.com/blog/syndication.axd?post=ccee3d52-49d9-4178-a340-8f4169d6ade7</wfw:commentRss></item><item><guid isPermaLink="false">http://quicklearn.com/blog/post.aspx?id=c434d37f-8441-4fa6-8aab-83cc6fcbd05b</guid><link>http://quicklearn.com/blog/post/Understanding-Extenders-in-the-Itinerary-Designer.aspx</link><author>nickh</author><category>Blog</category><category>ESB</category><title>Understanding Extenders in the Itinerary Designer</title><description>&lt;p&gt;&#xD;
I was lurking around the ESB Toolkit forums yesterday, and got involved in &lt;a href="http://social.msdn.microsoft.com/Forums/en-US/biztalkesb/thread/edc9bffd-c0d8-4e96-aff1-cc090f69766e"&gt;an exchange&lt;/a&gt; with someone who was hitting the same roadblock to the Itinerary Designer that a lot of people hit: confusion with the model elements and extenders. Upon my first exposure to the Itinerary Designer it took me a week to get over the learning curve of this, and to understand why every send operation seemingly involved two off-ramp shapes instead of one.&#xD;
&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&#xD;
Now in the case of that thread, the problem was actually not having a properly formatted SOAP request for the service that was going to be invoked (also a fairly common issue), but getting to the actual issue took cutting through some of the confusing bits of how the itinerary services themselves are implemented, and what they do.&#xD;
&lt;/p&gt;&#xD;
&lt;p&gt;&#xD;
That being said, I took some time last night to write up an article on the different model elements in the itinerary designer, their extenders, and how they can be used to compose an itinerary. You can access the article here: &lt;a href="http://quicklearn.com/redir/?r=b1d26364"&gt;Making Sense of Model Elements and Extenders in the Itinerary Designer&lt;/a&gt;&#xD;
&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&#xD;
&lt;i&gt;&lt;b&gt;Side note:&lt;/b&gt; The article is now part of the brand new (and still under-construction) QuickLearn Technical Library, which will soon contain many more similar articles and links to technical resources for all of the technologies about which QuickLearn teaches.&lt;/i&gt;&#xD;
&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&#xD;
That’s all for now!&#xD;
&lt;/p&gt;&#xD;
</description><pubDate>Wed, 17 Feb 2010 00:52:00 -0700</pubDate><comments>http://quicklearn.com/blog/post/Understanding-Extenders-in-the-Itinerary-Designer.aspx#comment</comments><dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">nickh</dc:publisher><pingback:server xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://quicklearn.com/blog/pingback.axd</pingback:server><pingback:target xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://quicklearn.com/blog/post.aspx?id=c434d37f-8441-4fa6-8aab-83cc6fcbd05b</pingback:target><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">14</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://quicklearn.com/blog/trackback.axd?id=c434d37f-8441-4fa6-8aab-83cc6fcbd05b</trackback:ping><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://quicklearn.com/blog/post/Understanding-Extenders-in-the-Itinerary-Designer.aspx#comment</wfw:comment><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://quicklearn.com/blog/syndication.axd?post=c434d37f-8441-4fa6-8aab-83cc6fcbd05b</wfw:commentRss></item><item><guid isPermaLink="false">http://quicklearn.com/blog/post.aspx?id=60d73863-78cf-46c6-9044-efeeb207a59b</guid><link>http://quicklearn.com/blog/post/Is-Crowd-Computing-the-Future.aspx</link><author>nickh</author><category>Azure</category><category>Blog</category><title>Is Crowd Computing the Future?</title><description>&lt;p&gt;With Microsoft's announcement at PDC this fall and with the continued growth of Amazon's EC2 service and Google's AppEngine service, the industry seems to have people's heads up in the clouds. With this shift of focus, though, comes a myriad of questions about reliability, security, and portability. Potential customers of the cloud want to know that it can indeed be depended on. Executives want to know that the security of data in the cloud will not be compromised. Software engineers want to know that if a certain provider evaporates into thin air, minimal effort will be required to move deployed assets and keep mission critical apps moving.&lt;/p&gt;&#xD;
&lt;p&gt;With so many questions about elastic hosted services, and an as of yet unclear track record for the same, I cannot help but wonder if the cloud computing model will really take hold, or if it will just be a bridge to an even more impressive generation of computing architectures to follow. Maybe it will be both. This discussion then begs the question -- of what that generation will look like that does follow.&lt;/p&gt;&#xD;
&lt;p&gt;Nearly 10 years ago, a program was created that would compel sci-fi geeks, amateur astronomers, scientists, programmers, and scholars to change their screensaver. &lt;a href="mailto:SETI@home"&gt;SETI@home&lt;/a&gt; launched in 1999 and over the next 9 years would bring grid computing into the living rooms and dorm rooms of over 5 million people. The original software was an app and screen saver that would use idle computer time to drive the search for extraterrestrial intelligence. It harnessed the untapped power of millions of computers with unrealized potential. It was built as an experiment, to break free of the constraints imposed by a supercomputer. Even hosted clusters have their limits, and some problems go beyond those limits.&lt;/p&gt;&#xD;
&lt;p&gt;With cloud computing the sky is the limit, but what if this world is not enough? What if a single company's data centers won't cut it? What if you want to maintain your data center, while still being able to tap additional resources on demand? What if you wanted to maximize and monetize under-utilized computational resources, instead of just writing them off as depreciating assets each year?&lt;/p&gt;&#xD;
&lt;p&gt;That seemed to be the aim of now defunct &lt;a href="http://www.cpushare.com/"&gt;CPUShare&lt;/a&gt;. It offered users the opportunity to sell their idle CPU time to people who needed computational resources. What if the spirit of this project was matched with the vision of Windows Azure, or the ease of entry of Amazon's EC2. What if it added storage into the mix, RAM, and even bandwidth? What if each of these was&amp;nbsp;currency in a new economy? This new economy would not be comprised of just one company's slice of the cloud; it would be the whole thing.&lt;/p&gt;&#xD;
&lt;p&gt;Crowd sourcing CPU hours might very well be the future, or it may be a pipe dream that will never be possible. It has the same questions of reliability, security, and portability, and it brings with it the question of control. The way the industry deals with the questions about cloud computing today, could very well pave the way for crowd computing to be the driving force behind Web 4.0 and beyond.&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fquicklearn.com%2fblog%2fpost%2fIs-Crowd-Computing-the-Future.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fquicklearn.com%2fblog%2fpost%2fIs-Crowd-Computing-the-Future.aspx" border="0" alt="kick it on DotNetKicks.com" width="82" height="18" /&gt;&lt;/a&gt; &lt;a rev="vote-for" href="http://dotnetshoutout.com/Is-Crowd-Computing-the-Future"&gt;&lt;img style="border: 0px" src="http://dotnetshoutout.com/image.axd?url=http%3A%2F%2Fquicklearn.com%2Fblog%2Fpost%2FIs-Crowd-Computing-the-Future.aspx" alt="Shout it" width="100" height="22" /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Tue, 24 Feb 2009 10:11:00 -0700</pubDate><comments>http://quicklearn.com/blog/post/Is-Crowd-Computing-the-Future.aspx#comment</comments><dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">nickh</dc:publisher><pingback:server xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://quicklearn.com/blog/pingback.axd</pingback:server><pingback:target xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://quicklearn.com/blog/post.aspx?id=60d73863-78cf-46c6-9044-efeeb207a59b</pingback:target><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">213</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://quicklearn.com/blog/trackback.axd?id=60d73863-78cf-46c6-9044-efeeb207a59b</trackback:ping><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://quicklearn.com/blog/post/Is-Crowd-Computing-the-Future.aspx#comment</wfw:comment><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://quicklearn.com/blog/syndication.axd?post=60d73863-78cf-46c6-9044-efeeb207a59b</wfw:commentRss></item><item><guid isPermaLink="false">http://quicklearn.com/blog/post.aspx?id=4ec8d291-b250-4764-ad4d-bb4e583bedd6</guid><link>http://quicklearn.com/blog/post/ESB-Guidance-20-Build-Loosely-Coupled-Solutions-You-Can-Be-Proud-Of.aspx</link><author>nickh</author><category>BizTalk</category><category>Blog</category><category>ESB</category><title>ESB Guidance 2.0: Build Loosely Coupled Solutions You Can Be Proud Of</title><description>&lt;p&gt;It is no secret that Microsoft has been working on bringing its Enterprise offerings up to date, readying them for the next generation of applications and services, and fixing small pain points that have vexed developers for years. In just a short while, BizTalk Server 2006 R2 will make way for BizTalk Server 2009, and another interesting product from Microsoft will realize next version status. That product is Microsoft Enterprise Service Bus (ESB) Guidance 2.0.&lt;/p&gt;&#xD;
&lt;h3&gt;What is an Enterprise Service Bus?&lt;/h3&gt;&#xD;
&lt;p&gt;Dmitri Ossipov, a Senior Program Manager for Microsoft working on the ESB Guidance, in his interview on &lt;a href="http://www.dotnetrocks.com/default.aspx?showNum=345" target="_blank"&gt;.NET Rocks&lt;/a&gt;&amp;nbsp;defined ESB as an "architectural paradigm for policy driven mediation." Nicholas Allen, a Program Manager at Microsoft working on BizTalk Server, &lt;a href="http://blogs.msdn.com/drnick/archive/2007/09/26/what-is-an-esb.aspx" target="_blank"&gt;argues&lt;/a&gt; that "the clearest definition of what companies think ESB means comes from looking at the products that they build." In the case Microsoft's ESB offering we see a solid implementation of the &lt;a href="http://www.eaipatterns.com/RoutingTable.html" target="_blank"&gt;Routing Slip&lt;/a&gt; pattern&amp;nbsp;built on top of BizTalk Server sprinkled with ample extensibility points. In the world of the ESB Guidance Routing Slips are called Itineraries, and act like an order placed at a menu of services that is the bus. The ESB Guidance provides flexibility through a loosely coupled design that allows routing and transformation decisions to be made at runtime instead of having to be statically configured at design-time. This enables service composition, dynamic transformation, and adds support for scenarios previously unimaginable in a BizTalk Server environment.&lt;/p&gt;&#xD;
&lt;p&gt;Version 1.0 of the Guidance was a paradigm shift for many BizTalk and .NET developers, but version 2 has the potential to take it to the next level. It introduces some killer new features such as the Itinerary Designer that can reduce XML induced eye-strain, Generic On-Ramps that allow you to send a message into the bus on the consumer's terms, and support for Server-side Itineraries that can place ESB developers back in control of the content of their Itineraries.&lt;/p&gt;&#xD;
&lt;h3&gt;Itinerary Designer&lt;/h3&gt;&#xD;
&lt;p&gt;Someone once &lt;a href="http://developers.slashdot.org/comments.pl?sid=446030&amp;amp;no_d2=1&amp;amp;cid=22342474" target="_blank"&gt;said&lt;/a&gt;, "XML is like violence, if it doesn't solve your problem, you're not using enough of it." I'm not going to debate the truth of this one way or another, but I do find it interesting that XML is compared to something that causes such a universal adverse reaction. When color-coded, perfectly indented, and collapsible, I can handle XML. However, at that point I have already resorted to looking at a more human friendly representation of the data instead of the raw data itself.&lt;/p&gt;&#xD;
&lt;p&gt;Those who have downloaded the January CTP of the Guidance, have found themselves in the midst of peace &amp;ndash; no XML to be seen (don't worry it's still there if you dig). The January CTP now includes a Visual Studio designer for Itinerary models. Creating Itineraries is now as simple as dragging On-Ramps, Itinerary Services and Off-Ramps into a visual model that can be exported to a repository, or as XML &amp;ndash; even mere mortals can do it.&lt;/p&gt;&#xD;
&lt;h3&gt;Server-Side Itineraries&lt;/h3&gt;&#xD;
&lt;p&gt;Yes, I just said the word repository. Version 1.0 of the guidance was awesome, but it did leave developers with a puzzle: "How do I get the itinerary I need to route this message, and how do I get it to the server?" The answer of course was that you have the XML of the itinerary that you send within the header of the message when submitted to the Itinerary Processing web service.&lt;/p&gt;&#xD;
&lt;p&gt;But where do you get the XML from? How do you know it's valid? Well, with CTP2, you know an itinerary is valid because it was modeled in a designer that validated it before each save and export. With CTP2 the XML can be retrieved from a SQL database (which bears a striking resemblance to the rules set database in BizTalk Server), and applied to the message in a pipeline component.&lt;/p&gt;&#xD;
&lt;p&gt;BizTalk and WCF&amp;nbsp;enthusiast Bram Veldhoen remarked on his &lt;a href="http://geekswithblogs.net/BVeldhoen/archive/2009/02/24/biztalk-esb-guidance-2.0---fixing-the-itinerary-onramp.aspx" target="_blank"&gt;blog&lt;/a&gt;&amp;nbsp;that it would "be a good idea to have the ESB be responsible for assigning the Itinerary headers." Microsoft apparently agreed, and this is exactly what should be expected from this new version of the ESB Guidance.&lt;/p&gt;&#xD;
&lt;h3&gt;New Resolvers&lt;/h3&gt;&#xD;
&lt;p&gt;The latest ESB 2.0 CTP adds three new resolvers for resolving itineraries: BRI, ITINERARY, and ITINERARY-STATIC. This means that not only can consumers rely on the ESB to apply itineraries for them; the ESB can do it dynamically. For the ESB Guidance uninitiated, Resolvers are these wonderful classes within the ESB Guidance that can take a configuration string, parse it and execute a query of some sort to look up information necessary for transformation, routing, or some other custom process.&lt;/p&gt;&#xD;
&lt;p&gt;The first is the BRI resolver; a typical resolver connection string would look like this:&lt;br /&gt;&lt;span style="font-family: courier new,courier;"&gt;BRI:\\policy=SamplePolicy;version=1.1;useMsg=True;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;This string, when interpreted by the BRI resolver (the BRE moniker was already taken for a resolver that cannot retrieve itineraries from the repository), will tell the resolver to use the Business Rules policy named SamplePolicy to determine the Itinerary to use for routing. It will also include the message as a fact when calling the Rules.&lt;/p&gt;&#xD;
&lt;p&gt;The second is the ITINERARY resolver; a typical resolver connection string would look like this:&lt;br /&gt;&lt;span style="font-family: courier new,courier;"&gt;ITINERARY:\\name=Zebra;version=1.0;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;This is a static choice of an itinerary named Zebra. Its sister resolver ITINERARY-STATIC does exactly the same thing but is implemented using the &lt;a href="http://msdn.microsoft.com/en-us/library/cc440954.aspx" target="_blank"&gt;Unity Application Block&lt;/a&gt;, but that's a discussion to save for another posting.&lt;/p&gt;&#xD;
&lt;p&gt;You would use such resolver connection strings in the configuration of the ESB Itinerary Selector pipeline component, which is part of the ItinerarySelect* family of receive pipelines included with the ESB Guidance 2.0 CTP. Since this is all part of a pipeline, that means that in 2.0, you can create Itinerary On-Ramps that are first class citizens in the ESB which use transports other than an ASMX web service or WCF web service. The possibilities are limited only to the adapters installed.&lt;/p&gt;&#xD;
&lt;h3&gt;Getting it Right&lt;/h3&gt;&#xD;
&lt;p&gt;The new version of the ESB Guidance brings new features, enhancements, and fixes that really make it feel like a polished product. With version 1 they got it shipped, but with version 2 they're getting it right.&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fwww.quicklearn.com%2fblog%2fpost%2fESB-Guidance-20-Build-Loosely-Coupled-Solutions-You-Can-Be-Proud-Of.aspx"&gt;&lt;img src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fwww.quicklearn.com%2fblog%2fpost%2fESB-Guidance-20-Build-Loosely-Coupled-Solutions-You-Can-Be-Proud-Of.aspx" border="0" alt="kick it on DotNetKicks.com" width="82" height="18" /&gt;&lt;/a&gt; &lt;a rev="vote-for" href="http://dotnetshoutout.com/ESB-Guidance-20-Build-Loosely-Coupled-Solutions-You-Can-Be-Proud-Of"&gt;&lt;img style="border: 0px" src="http://dotnetshoutout.com/image.axd?url=http%3A%2F%2Fquicklearn.com%2Fblog%2Fpost%2FESB-Guidance-20-Build-Loosely-Coupled-Solutions-You-Can-Be-Proud-Of.aspx" alt="Shout it" width="100" height="22" /&gt;&lt;/a&gt;&lt;/p&gt;</description><pubDate>Mon, 26 Jan 2009 11:19:00 -0700</pubDate><comments>http://quicklearn.com/blog/post/ESB-Guidance-20-Build-Loosely-Coupled-Solutions-You-Can-Be-Proud-Of.aspx#comment</comments><dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">nickh</dc:publisher><pingback:server xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://quicklearn.com/blog/pingback.axd</pingback:server><pingback:target xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://quicklearn.com/blog/post.aspx?id=4ec8d291-b250-4764-ad4d-bb4e583bedd6</pingback:target><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">263</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://quicklearn.com/blog/trackback.axd?id=4ec8d291-b250-4764-ad4d-bb4e583bedd6</trackback:ping><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://quicklearn.com/blog/post/ESB-Guidance-20-Build-Loosely-Coupled-Solutions-You-Can-Be-Proud-Of.aspx#comment</wfw:comment><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://quicklearn.com/blog/syndication.axd?post=4ec8d291-b250-4764-ad4d-bb4e583bedd6</wfw:commentRss></item><item><guid isPermaLink="false">http://quicklearn.com/blog/post.aspx?id=3d3dc990-e89b-4fb0-b0d8-664b7240a845</guid><link>http://quicklearn.com/blog/post/5-Reasons-You-Should-Use-the-WPF-TextBox-in-Your-Next-App.aspx</link><author>nickh</author><category>ASP.NET</category><category>Blog</category><category>WPF</category><title>5 Reasons You Should Use the WPF TextBox in Your Next App</title><description>&lt;p&gt;With the release of the .NET Framework 3.0, and then the .NET Framework 3.5 late last year, you might have settled down and started to integrate some of their more powerful features in your day to day programming. You may have absolutely fallen in love with LINQ, and embraced lambda expressions in C# 3.0. But have you taken a good look at WPF? WPF is not just for flashy effects, perfect transparency, and smooth animations. It's not limited to kiosks and Silverlight infused web pages. It provides base components out of the box that can blow your WinForms socks off -- and not just visually.&lt;/p&gt;  &lt;p&gt;In this article I will pit System.Windows.Forms.TextBox against System.Windows.Controls.TextBox in a completely biased and unforgiving matchup, and give you 5 reasons why you should ditch the your old WinForms TextBox, and start using WPF. So grab the &lt;a href="http://www.quicklearn.com/blogsamples/WPFTextBox.aspx" target="_blank"&gt;sample code&lt;/a&gt;, and follow along.&lt;/p&gt;  &lt;h4&gt;0.) It Works in a Windows Forms Environment&lt;/h4&gt;  &lt;p&gt;The rest of this article would kind of be pointless if this was not included, but you can use the WPF TextBox control from within a Windows Forms application. All you need to do is include some references, and add an ElementHost control to the form. I'm not going to get into specifics here, because there is &lt;a href="http://msdn.microsoft.com/en-us/library/ms742215.aspx"&gt;plenty&lt;/a&gt; of coverage of this &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=WPF+WinForms+Interop"&gt;elsewhere&lt;/a&gt;.&lt;/p&gt;  &lt;h4&gt;1.) It Has Spell Checking Built-In&lt;/h4&gt;  &lt;p&gt;&lt;a href="http://quicklearn.com/blog/image.axd?picture=spellcheck_full.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; margin: 3px; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="Spell Checking" src="http://quicklearn.com/blog/image.axd?picture=spellcheck_thumb.png" width="150" height="150" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This is something that I'm surprised has not received more coverage. People get caught up in animations, and the ability to completely change the appearance of controls, and miss the fact that a simple task is now actually simple. You don't have to rely on your users having a &lt;a href="http://office.microsoft.com/en-us/word/default.aspx"&gt;$200 piece of productivity software&lt;/a&gt; installed to do spell checking on your &amp;quot;Approval Comments&amp;quot; field. You can just use a more intelligent TextBox.&lt;/p&gt;  &lt;p&gt;So how much code does it take to get your WPF textbox to do what it's doing in the screenshot? Count for yourself:&lt;/p&gt;  &lt;pre class="csharp" name="code"&gt;wpfTextBox.SpellCheck.IsEnabled = true;&lt;/pre&gt;&#xD;
&#xD;
&lt;p&gt;But what if you want to actually make your application aware of the individual spelling errors themselves? There are methods provided for that as well. Here's an example of how you might use the built-in methods to build a Dictionary of character positions where spelling errors have occurred, and the text that is spelled incorrectly:&lt;/p&gt;&#xD;
&#xD;
&lt;pre class="csharp" name="code"&gt;int index = 0;&#xD;
&#xD;
Dictionary spellingErrors = new Dictionary();&#xD;
&#xD;
while ((index = wpfTextBox.GetNextSpellingErrorCharacterIndex(index, System.Windows.Documents.LogicalDirection.Forward)) != -1)&#xD;
{&#xD;
	string currentError = wpfTextBox.Text.Substring(index,&#xD;
	wpfTextBox.GetSpellingErrorLength(index));&#xD;
	this.spellingErrors.Add(index, currentError);&#xD;
	index += currentError.Length;&#xD;
}&lt;/pre&gt;&#xD;
&#xD;
&lt;h4&gt;2.) It Has A Real Undo Stack&lt;/h4&gt;&#xD;
&#xD;
&lt;p&gt;Have you ever written code that manually called the Undo method of the TextBox control, and been disappointed with the results. Spoilers follow for those who have not tried this: it only keeps track of the last state of the text. Since the advent of Adobe Photoshop* in the late middle ages, people have grown accustomed to programs being able to undo as many actions as they have done. Well with the WPF TextBox control that functionality is built-in. If you find implementing a custom Undo Stack fun, then cling tightly to the WinForms TextBox, if you would rather forego that task so that you can focus on a more important problems continue reading.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;What code do you need to get it working? Check it out:&lt;/p&gt;&#xD;
&#xD;
&lt;pre class="csharp" name="code"&gt;wpfTextBox.IsUndoEnabled = true;&#xD;
wpfTextBox.UndoLimit = 1024;&lt;/pre&gt;&#xD;
&#xD;
&lt;p&gt;Oh yeah, and whereas the &lt;strong&gt;System.Windows.Forms.TextBox&lt;/strong&gt; control has an Undo method, the WPF equivalent supports this beautiful couple:&lt;/p&gt;&#xD;
&#xD;
&lt;pre class="csharp" name="code"&gt;wpfTextBox.Undo();&#xD;
wpfTextBox.Redo();&lt;/pre&gt;&#xD;
&#xD;
&lt;p&gt;Just be sure to never include those two lines of code one right after another like that. People have been &lt;a href="http://www.worsethanfailure.com"&gt;immortalized&lt;/a&gt; for less.&lt;/p&gt;&#xD;
&#xD;
&lt;h4&gt;3.) It Handles Lines Intuitively&lt;/h4&gt;&#xD;
&#xD;
&lt;p&gt;&lt;a href="http://quicklearn.com/blog/image.axd?picture=currentline_full.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; margin: 3px; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="" src="http://quicklearn.com/blog/image.axd?picture=currentline_thumb.png" width="150" height="150" /&gt;&lt;/a&gt;Go ahead and click the screenshot to the left. Okay, pop quiz: What line is highlighted? If you said the line beginning with &amp;quot;Integer ac tortor&amp;quot;, System.Windows.Forms.TextBox says you're &lt;a href="http://www.quicklearn.com/blog/image.axd?picture=currentline2_full.png" target="_blank"&gt;incorrect&lt;/a&gt;. Many programmers might agree with the Windows Forms TextBox control, and that's because they're right. Technically the text is word wrapped, and the newline character doesn't occur until the very end of all of the text pictured. But looking at this from a user experience standpoint, it's terrible. When wrapped, that is the third line of text, not the first.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;With the Windows Forms TextBox control, you access the lines of text through the Lines property of the control. Unfortunately, I can do that much myself by Splitting the Text property on '\n' and Trimming the result. The WPF TextBox control, on the other hand, does some heavy lifting for you. It can tell you what line, visually speaking, is the current line of text. It can also tell you what line that would be more mechanically speaking. Good luck trying to do that with the Windows Forms TextBox control, but here's how you might do it with the WPF Textbox:&lt;/p&gt;&#xD;
&#xD;
&lt;pre class="csharp" name="code"&gt;int characterIndex = wpfTextBox.SelectionStart;&#xD;
int lineIndex = wpfTextBox.GetLineIndexFromCharacterIndex(characterIndex);&#xD;
string currentLine = wpfTextBox.GetLineText(lineIndex);&#xD;
MessageBox.Show(currentLine);&lt;/pre&gt;&#xD;
&#xD;
&lt;h4&gt;4.) It Uses Anti-aliasing To Make Text Readable&lt;/h4&gt;&#xD;
&#xD;
&lt;p&gt;&lt;a href="http://quicklearn.com/blog/image.axd?picture=antialiasing_full.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; margin: 3px; float: right; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" border="0" alt="" src="http://quicklearn.com/blog/image.axd?picture=antialiasing_thumb.png" width="150" height="150" /&gt;&lt;/a&gt;Let's be honest, your &lt;a href="http://www.grandmasmarathon.com/"&gt;grandma's web site&lt;/a&gt; makes use of anti-aliasing, and there's no reason your LOB app should avoid it. It's easier on the eyes, easier to read, and makes your text look great in any resolution. With the WPF TextBox control there is zero effort, configuration, or lines of code to achieve this effect. It's supported out of the box and always looks great.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&amp;#160;&lt;/p&gt;&#xD;
&#xD;
&lt;h4&gt;5.) It's Included For Free in the Framework&lt;/h4&gt;&#xD;
&#xD;
&lt;p&gt;Since WPF is included as part of version 3.5 of the .NET Framework, you can use it anywhere that you can install it. You don't have to buy a third party component to take advantage of all of the features of the new TextBox, it does not require Windows Vista, you don't need to install Expression Studio, and you don't have to write a line of XAML. You can use your favorite language to leverage the classes you need when and where you need them. You could even &lt;a href="http://www.quicklearn.com/blogsamples/SpellCheck.aspx"&gt;use it to implement spell check within an ASP.NET web application&lt;/a&gt;. Don't even think about reaching for &lt;a href="http://www.4guysfromrolla.com/webtech/062402-1.shtml"&gt;Word&lt;/a&gt; &lt;a href="http://www.dotnetheaven.com/Uploadfile/DipalChoksi/SpellCheckWebService02082006002159AM/SpellCheckWebService.aspx"&gt;Automation&lt;/a&gt;.&lt;/p&gt;&#xD;
&#xD;
&lt;h4&gt;Conclusion&lt;/h4&gt;&#xD;
&#xD;
&lt;p&gt;The WPF TextBox wins - use it. It also supports the aforementioned flashy effects, perfect animation, etc...&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;* - Save for Adobe Photoshop LE where they thought it would be fun to limit undo - shame on them&lt;/p&gt;</description><pubDate>Fri, 15 Aug 2008 14:05:00 -0700</pubDate><comments>http://quicklearn.com/blog/post/5-Reasons-You-Should-Use-the-WPF-TextBox-in-Your-Next-App.aspx#comment</comments><dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">nickh</dc:publisher><pingback:server xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://quicklearn.com/blog/pingback.axd</pingback:server><pingback:target xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://quicklearn.com/blog/post.aspx?id=3d3dc990-e89b-4fb0-b0d8-664b7240a845</pingback:target><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">136</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://quicklearn.com/blog/trackback.axd?id=3d3dc990-e89b-4fb0-b0d8-664b7240a845</trackback:ping><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://quicklearn.com/blog/post/5-Reasons-You-Should-Use-the-WPF-TextBox-in-Your-Next-App.aspx#comment</wfw:comment><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://quicklearn.com/blog/syndication.axd?post=3d3dc990-e89b-4fb0-b0d8-664b7240a845</wfw:commentRss></item><item><guid isPermaLink="false">http://quicklearn.com/blog/post.aspx?id=e9f459ce-5bd4-4deb-9afa-1f633dcf8e2d</guid><link>http://quicklearn.com/blog/post/Building-Expert-Series-training-for-BAM.aspx</link><author>robc</author><category>BizTalk</category><category>Blog</category><title>Building Expert Series training for BAM</title><description>&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;Over the past month I've been working really hard on our new BizTalk Expert Series class for Business Activity Monitoring. I have to say that I'm really excited to start teaching it. In three days,&amp;nbsp;we manage to cover almost everything one could want to know about BAM. The most interesting part of it for me is the data consumption lab. I've never been very fond of the BAM Portal. It's nice, but certainly not something that I'd like to parade in front of a CEO of a big company. Don't get me wrong, the capabilities are awesome, but the way it looks and some of its behaviors aren&amp;rsquo;t the best. In the consumption lab, we examine how to create custom consumption models for BAM data using PerformancePoint, SQL Reporting Services, and an AJAX based web site. I'd never worked with PerformancePoint before and I was surprised by how easy it was to create a dashboard based on the BAM OLAP cube.&lt;/span&gt;&lt;/p&gt;</description><pubDate>Mon, 04 Aug 2008 11:08:00 -0700</pubDate><comments>http://quicklearn.com/blog/post/Building-Expert-Series-training-for-BAM.aspx#comment</comments><dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">robc</dc:publisher><pingback:server xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://quicklearn.com/blog/pingback.axd</pingback:server><pingback:target xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://quicklearn.com/blog/post.aspx?id=e9f459ce-5bd4-4deb-9afa-1f633dcf8e2d</pingback:target><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">11</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://quicklearn.com/blog/trackback.axd?id=e9f459ce-5bd4-4deb-9afa-1f633dcf8e2d</trackback:ping><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://quicklearn.com/blog/post/Building-Expert-Series-training-for-BAM.aspx#comment</wfw:comment><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://quicklearn.com/blog/syndication.axd?post=e9f459ce-5bd4-4deb-9afa-1f633dcf8e2d</wfw:commentRss></item><item><guid isPermaLink="false">http://quicklearn.com/blog/post.aspx?id=60ff30e6-6907-4051-a322-ef9ec12fca17</guid><link>http://quicklearn.com/blog/post/Resuming-Suspended-Messages.aspx</link><author>robc</author><category>BizTalk</category><category>Blog</category><title>Resuming Suspended Messages</title><description>&lt;p class="MsoNormal" style="margin: 0in 0in 10pt"&gt;&lt;span style="font-family: Calibri; font-size: small;"&gt;Last week while teaching the BizTalk Developer Immersion, I was demoing how to resume suspended messages using the BizTalk Group Hub. I submitted six messages while my send port was stopped, so all the messages were suspended. I was foolishly trying to show my students that if I resumed the message, it wouldn't be processed because the send port was in a stopped state. I resumed the message and it disappeared, actually, it went out through the send port. This confused me, I had six suspended messages, I resumed one and it was processed so I only had five. But why? I couldn't figure it out, the port is stopped, the message shouldn't be processed but if one went through why not all of them. I was stumped, then it occurred to me. If I were in production there are dozens of scenarios where I could have dozens or hundreds of messages in the MessageBox waiting for my send port to start, but before I actually start it all up, I want to send a few specific messages as a test. By stopping the port I can see all the messages that the port subscribes to and choose which ones should go through. So now I think it's pretty cool.&lt;/span&gt;&lt;/p&gt;</description><pubDate>Fri, 01 Aug 2008 15:15:00 -0700</pubDate><comments>http://quicklearn.com/blog/post/Resuming-Suspended-Messages.aspx#comment</comments><dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">robc</dc:publisher><pingback:server xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://quicklearn.com/blog/pingback.axd</pingback:server><pingback:target xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://quicklearn.com/blog/post.aspx?id=60ff30e6-6907-4051-a322-ef9ec12fca17</pingback:target><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">13</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://quicklearn.com/blog/trackback.axd?id=60ff30e6-6907-4051-a322-ef9ec12fca17</trackback:ping><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://quicklearn.com/blog/post/Resuming-Suspended-Messages.aspx#comment</wfw:comment><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://quicklearn.com/blog/syndication.axd?post=60ff30e6-6907-4051-a322-ef9ec12fca17</wfw:commentRss></item><item><guid isPermaLink="false">http://quicklearn.com/blog/post.aspx?id=d3851a27-e906-41dc-910f-0229cccbc4cd</guid><link>http://quicklearn.com/blog/post/BizTalk-2006-Book-Rating.aspx</link><author>johnc</author><category>BizTalk</category><category>Blog</category><title>BizTalk 2006 Book Rating</title><description>&lt;p&gt;Students frequently ask my opinion on which BizTalk Books will be most helpful. I have reviewed several books, and will recommend a few of them here. I haven&amp;rsquo;t really seen any terrible BizTalk 2006 books (and believe me, I have seen some terrible technical books in the past!), so this is really a ranking of several really good books. It should be noted that many of the books below mention BizTalk Server 2006 R2 only in passing, because they were all written prior to the release of R2. I do not know if updates are planned for them.&lt;/p&gt;&#xD;
&lt;p&gt;In the interest of full disclosure, I should mention that QuickLearn has received a slew of books from Apress that we occasionally pass out in classes (thanks, Apress). Also, Darren Jefford, the author of one of the other books, is a friend and has provided signed copies of books that we have given away at various conferences. Despite my affiliations, I hope to provide a fair assessment of the literature.&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;The top of my list is &lt;a href="http://www.amazon.com/Professional-BizTalk-Server-Darren-Jefford/dp/0470046422/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1196277599&amp;amp;sr=1-1"&gt;&lt;strong&gt;Professional BizTalk Server 2006&lt;/strong&gt;&lt;/a&gt;, by Darren Jefford, Kevin B. Smith, and Ewan Fairweather, published by Wrox Publishers. "Wrox" is pronounced like "Rocks," which is exactly what this book does. It&amp;rsquo;s very telling that, as I was writing this post, Amazon has eight listed reviews, and all eight give the book full marks (five stars) - I would definitely give it the same. Because this book assumes a moderate level of existing BizTalk knowledge, it is definitely not a good book to learn BizTalk from scratch (it's a great companion book to our Deep Dive). Nevertheless, it's a book by three guys who have been there, done that, and own the tee shirt when it comes to BizTalk implementation. This is a book that I refer to frequently.&lt;/p&gt;&#xD;
&lt;p&gt;&lt;br /&gt;Coming in at a close second on my list of favorites is &lt;a href="http://www.amazon.com/Pro-BizTalk-2006-George-Dunphy/dp/1590596994/ref=pd_bbs_sr_2?ie=UTF8&amp;amp;s=books&amp;amp;qid=1196277599&amp;amp;sr=1-2"&gt;&lt;strong&gt;Pro BizTalk 2006&lt;/strong&gt;&lt;/a&gt;, by George Dunphy and Ahmed Metwally, published by Apress. (These books share more than a similarity in their names!) This is also an excellent book with very similar coverage to the Wrox book (Deep Dive level). If you own either of these books, you&amp;rsquo;re in good shape. I prefer the writing style of the authors of the Wrox book, but you may like this one better. Either one or the other of these is great, but you probably won&amp;rsquo;t need both. &lt;br /&gt;&lt;br /&gt;If you&amp;rsquo;re looking for a book for someone totally new to BizTalk, consider &lt;a href="http://www.amazon.com/Foundations-BizTalk-Server-2006/dp/1590597753/ref=pd_bbs_sr_3?ie=UTF8&amp;amp;s=books&amp;amp;qid=1196288138&amp;amp;sr=1-3"&gt;&lt;strong&gt;Foundations of BizTalk Server 2006&lt;/strong&gt;&lt;/a&gt;, by Daniel Woolston, published by Apress. This book contains good, concise description of common BizTalk terms (BizTalk vocabulary on steroids), and is a great pre-class primer for QuickLearn's BizTalk Server Developer Immersion. If you've already attended any of QuickLearn's BizTalk classes, you will probably find this book overly simple. &lt;br /&gt;&lt;br /&gt;If you've identified a problem in your design/development, and you're looking for a quick way to solve it, your best choice is &lt;a href="http://www.amazon.com/BizTalk-2006-Recipes-Problem-Solution-Approach/dp/1590597117/ref=sr_1_4?ie=UTF8&amp;amp;s=books&amp;amp;qid=1196288138&amp;amp;sr=1-4"&gt;&lt;strong&gt;BizTalk 2006 Recipes: A Problem-Solution Approach&lt;/strong&gt;&lt;/a&gt;, by Mark Beckner, Ben Goeltz, Brandon Gross, and Brennan O'Reilly, published by Apress. This may not be the best book for learning BizTalk from scratch, but it's a necessity for every BizTalk shop. This book takes a no-nonsense approach to "Here&amp;rsquo;s the problem, now how do I fix it?", and identifies the implementation of the patterns necessary to solve the problem. &lt;br /&gt;&lt;br /&gt;Although not a BizTalk book, per se, a good general overview of messaging and other integration patterns can be found in &lt;a href="http://www.amazon.com/gp/product/0321200683/ref=cm_cr_pr_product_top"&gt;&lt;strong&gt;Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions&lt;/strong&gt;&lt;/a&gt;, by Gregor Hohpe and Bobby Woolf. DO NOT EXPECT TO LEARN ANYTHING ABOUT BIZTALK FROM THIS BOOK! I am recommending this book as an excellent resource about integration in general non-Microsoft terms; however, many BizTalk-related documents, available from Microsoft sources, reference the patterns revealed in this book. So do the BizTalk 2006 scenarios (more on these later, if you aren&amp;rsquo;t familiar with them). Gregor maintains a site &lt;a href="http://www.eaipatterns.com/"&gt;&lt;strong&gt;http://www.eaipatterns.com&lt;/strong&gt;&lt;/a&gt; that contains much of the information available in the book, but the book still makes a great paperweight, (it&amp;rsquo;s big and hardcover) &lt;span&gt;J&lt;/span&gt;. I have been referencing it in my classes for so long that I thought I better mention it here as well.&lt;/p&gt;</description><pubDate>Wed, 30 Jan 2008 00:29:00 -0700</pubDate><comments>http://quicklearn.com/blog/post/BizTalk-2006-Book-Rating.aspx#comment</comments><dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">johnc</dc:publisher><pingback:server xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://quicklearn.com/blog/pingback.axd</pingback:server><pingback:target xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://quicklearn.com/blog/post.aspx?id=d3851a27-e906-41dc-910f-0229cccbc4cd</pingback:target><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">162</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://quicklearn.com/blog/trackback.axd?id=d3851a27-e906-41dc-910f-0229cccbc4cd</trackback:ping><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://quicklearn.com/blog/post/BizTalk-2006-Book-Rating.aspx#comment</wfw:comment><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://quicklearn.com/blog/syndication.axd?post=d3851a27-e906-41dc-910f-0229cccbc4cd</wfw:commentRss></item><item><guid isPermaLink="false">http://quicklearn.com/blog/post.aspx?id=843447b9-832c-4fad-8545-b8856fdaee30</guid><link>http://quicklearn.com/blog/post/Wheree28099s-my-functoids.aspx</link><author>johnc</author><category>BizTalk</category><category>Blog</category><title>Where’s my functoids?</title><description>&lt;p&gt;QuickLearn is in the process of updating our now famous BizTalk Deep Dive course (NEW and IMPROVED!). As I have been collecting and reviewing content for the advanced mapping module, I am reminded of one of the most common "Eureka" moments for many students is the realization of just how easy it is to create custom maps without using functoids. Many people come to BizTalk after having developed a custom integration project that required them to create their own XSLT. Often I am asked, "Can&amp;rsquo;t I leverage the work that I've already done and use the XSLT I&amp;rsquo;ve created? Do I have to use all those functoids?&amp;rdquo; The answer: Of course you can use your own XSLT, and some of the best maps do! You really have three options here: The first two involve the use of Scripting functoids; the third relies strictly on the XSL that you provide.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;strong&gt;Inline XSLT&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Many times, the result of chaining several functoids together can be more concisely defined in a little custom XSL. When using the inline XSLT option, the Scripting functoid cannot have any input links; rather, it should contain references to the source schema nodes through XPath expressions. The functoid must link directly to a record or field in the destination schema (it cannot be input for other functoids).&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;strong&gt;Inline XSLT Call Templates&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Like an inline XSLT script, the inline XSLT call template must connect directly to a destination node; however, it may receive input through links coming from other functoids, or from the source schema. On the map grid, setting the Custom Extension XML property enables Scripting functoids, configured as either Inline XSLT or Inline XSLT Call Templates, to make calls to external assemblies.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;&lt;strong&gt;Custom XSLT Code (Look ma, no functoids!)&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;If you have XSLT code you have written to convert instance messages, you can use that code directly, instead of creating a map.&lt;/p&gt;&#xD;
&#xD;
&lt;ol&gt;&#xD;
&lt;li&gt;Create an empty map and set the source and destination schemas as you normally would. &lt;/li&gt;&#xD;
&lt;li&gt;With the map grid selected, configure the Custom XSLT Path property to use the file containing your custom XSL. &lt;/li&gt;&#xD;
&lt;/ol&gt;&#xD;
&#xD;
&lt;p&gt;NOTE &amp;ndash; Using custom XSL overrides all links and/or functoids in the map.&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Remember that you can always validate your map to access the generated XSL, which will be executed for the map. Also remember that maps do not validate the messages generated, except while testing in Visual Studio. The warnings you receive in Visual Studio provide design-time assistance to identify possible problems. BizTalk is totally content with generating exactly the message that you tell it to, valid or not!&lt;/p&gt;&#xD;
&#xD;
&lt;p&gt;Until next time, have a great day.&lt;/p&gt;</description><pubDate>Mon, 20 Aug 2007 13:35:00 -0700</pubDate><comments>http://quicklearn.com/blog/post/Wheree28099s-my-functoids.aspx#comment</comments><dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">johnc</dc:publisher><pingback:server xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://quicklearn.com/blog/pingback.axd</pingback:server><pingback:target xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://quicklearn.com/blog/post.aspx?id=843447b9-832c-4fad-8545-b8856fdaee30</pingback:target><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">20</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://quicklearn.com/blog/trackback.axd?id=843447b9-832c-4fad-8545-b8856fdaee30</trackback:ping><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://quicklearn.com/blog/post/Wheree28099s-my-functoids.aspx#comment</wfw:comment><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://quicklearn.com/blog/syndication.axd?post=843447b9-832c-4fad-8545-b8856fdaee30</wfw:commentRss></item><item><guid isPermaLink="false">http://quicklearn.com/blog/post.aspx?id=8a18d008-e6a6-47d5-b8d7-a2f9dcc65809</guid><link>http://quicklearn.com/blog/post/BizTalk-Server-2006-Virtual-Multi-Box-Install-Lab.aspx</link><author>alans</author><category>BizTalk</category><category>Blog</category><title>BizTalk Server 2006 Virtual Multi-Box Install Lab</title><description>&lt;p&gt;I wrote this lab about a year or so ago, with a view to posting it when I got the time. If you want to learn about multi-server installs with BizTalk, it may be a good idea to run through it in a virtual environment first. It will probably take you about half a day to run through the lab, but most of the time will be spent waiting for the various installs to complete.&lt;/p&gt;&#xD;
&lt;p&gt;You can find the lab &lt;a href="http://geekswithblogs.net/asmith/archive/2007/05/29/112820.aspx" target="_blank"&gt;here&lt;/a&gt;.&lt;/p&gt;</description><pubDate>Fri, 08 Jun 2007 15:37:00 -0700</pubDate><comments>http://quicklearn.com/blog/post/BizTalk-Server-2006-Virtual-Multi-Box-Install-Lab.aspx#comment</comments><dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">alans</dc:publisher><pingback:server xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://quicklearn.com/blog/pingback.axd</pingback:server><pingback:target xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/">http://quicklearn.com/blog/post.aspx?id=8a18d008-e6a6-47d5-b8d7-a2f9dcc65809</pingback:target><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">15</slash:comments><trackback:ping xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">http://quicklearn.com/blog/trackback.axd?id=8a18d008-e6a6-47d5-b8d7-a2f9dcc65809</trackback:ping><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://quicklearn.com/blog/post/BizTalk-Server-2006-Virtual-Multi-Box-Install-Lab.aspx#comment</wfw:comment><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://quicklearn.com/blog/syndication.axd?post=8a18d008-e6a6-47d5-b8d7-a2f9dcc65809</wfw:commentRss></item></channel></rss>