<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-333518566327671926</id><updated>2012-01-25T12:58:34.644-05:00</updated><category term='TFS11'/><category term='Reporting'/><category term='M'/><category term='LINQ'/><category term='Community'/><category term='ONETUG'/><category term='PowerShell'/><category term='ALM'/><category term='SQL Modeling'/><category term='SQL'/><category term='Agile'/><category term='Version Control'/><category term='TFS'/><category term='MTM'/><category term='Code Camp'/><category term='Scrum'/><category term='Power Tools'/><category term='WP7'/><category term='CI'/><category term='Build'/><category term='VB'/><category term='RIA'/><category term='Azure'/><category term='Silverlight'/><title type='text'>Esteban Garcia - My thoughts on .NET and ALM with TFS</title><subtitle type='html'>Application Lifecycle Management (ALM) with Team Foundation Server (TFS).
.NET community involvement.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default?start-index=101&amp;max-results=100'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>119</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-6578151265616327059</id><published>2012-01-24T00:12:00.001-05:00</published><updated>2012-01-25T12:58:34.653-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code Camp'/><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><title type='text'>Orlando Code Camp 2012 is Live!</title><content type='html'>&lt;p&gt;&lt;a href="http://www.orlandocodecamp.com"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="CodeCamp2012" border="0" alt="CodeCamp2012" src="http://lh6.ggpht.com/-B268ld4WAeI/Tx4_Zy3Qg9I/AAAAAAAAAUg/s0Yl_cjJfZs/CodeCamp2012%25255B9%25255D.jpg?imgmax=800" width="244" height="100" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;It seems like we just got done with last year’s event and we are ready for another awesome edition of Orlando Code Camp on March 31st at &lt;a href="http://www.seminolestate.edu/"&gt;Seminole State College&lt;/a&gt;.&amp;#160; This will be the our 7th Code Camp and the entire &lt;a href="http://www.onetug.org"&gt;ONETUG&lt;/a&gt; team is really excited about it.&amp;#160; The new site is up (thanks to &lt;a href="http://twitter.com/zdanev"&gt;Z&lt;/a&gt;, &lt;a href="http://twitter.com/onefloridacoder"&gt;John&lt;/a&gt;, &lt;a href="http://twitter.com/hallmanac"&gt;Brian&lt;/a&gt;), sponsors have been contacted (other Brian) and JT is getting his spreadsheets ready.&amp;#160; On top of that, we’ll have some awesome volunteers from our community!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://us1.forward-to-friend.com/forward/preview?u=64977fc747ab0f2cbb5429a9a&amp;amp;id=a6e72aa445" target="_blank"&gt;Call for speakers&lt;/a&gt; just went out, so if you want to come and speak at one of the best Code Camps around, sign up here: &lt;a href="http://www.OrlandoCodeCamp.com"&gt;www.OrlandoCodeCamp.com&lt;/a&gt;.&amp;#160; We’ll have a little bit of everything: MVC, Visual Studio ALM, Windows Phone, Agile, HTML5, SQL Server, SharePoint, DNN, and much more!&lt;/p&gt;  &lt;p&gt;Sign up to speak, volunteer, or attend, just don’t miss it!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-6578151265616327059?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/6578151265616327059/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=6578151265616327059' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/6578151265616327059'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/6578151265616327059'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2012/01/orlando-code-camp-2012-is-live.html' title='Orlando Code Camp 2012 is Live!'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/-B268ld4WAeI/Tx4_Zy3Qg9I/AAAAAAAAAUg/s0Yl_cjJfZs/s72-c/CodeCamp2012%25255B9%25255D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-7135558268451574853</id><published>2012-01-23T07:19:00.000-05:00</published><updated>2012-01-23T09:18:40.868-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><title type='text'>ITPro Camp–Managing TFS</title><content type='html'>&lt;p&gt;Last Saturday, I did a presentation on &amp;quot;Managing Team Foundation Server 2010&amp;quot; at &lt;a href="http://itprocamp.com/orlando/"&gt;ITPro Camp - Orlando&lt;/a&gt;. It was a great event and it's awesome to see more and more community events popping up throughout the state. Thanks to everyone that came to my talk and for all the great questions. &lt;/p&gt;  &lt;p&gt;Here are my slides:&lt;/p&gt;  &lt;div style="width: 425px" id="__ss_11216892"&gt;&lt;strong style="margin: 12px 0px 4px; display: block"&gt;&lt;a title="Managing TFS" href="http://www.slideshare.net/EstebanFG/managing-tfs" target="_blank"&gt;Managing TFS&lt;/a&gt;&lt;/strong&gt; &lt;iframe height="355" marginheight="0" src="http://www.slideshare.net/slideshow/embed_code/11216892" frameborder="0" width="425" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;    &lt;div style="padding-bottom: 12px; padding-left: 0px; padding-right: 0px; padding-top: 5px"&gt;View more &lt;a href="http://www.slideshare.net/" target="_blank"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/EstebanFG" target="_blank"&gt;EstebanFG&lt;/a&gt; &lt;/div&gt; &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-7135558268451574853?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/7135558268451574853/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=7135558268451574853' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/7135558268451574853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/7135558268451574853'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2012/01/itpro-campmanaging-tfs.html' title='ITPro Camp–Managing TFS'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-1534550519514960547</id><published>2012-01-21T00:47:00.001-05:00</published><updated>2012-01-21T00:47:18.524-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MTM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><title type='text'>TCM–Test Case Management Tool</title><content type='html'>&lt;p&gt;If you are using Microsoft Test Manager on a Team Project that was created prior to TFS 2010 (and was later upgraded to 2010), or you built your own process template, you will need to use the TCM tool to enable the automatic creation of a work item when a test finds a bug through MTM.&amp;#160; The TCM tool lets you import/export a mapping file into TFS.&amp;#160; This is also very useful if you want MTM to create a different type of work item than the one that is currently configured or if you want different fields to be pre-populated.&lt;/p&gt;  &lt;p&gt;The tool is executed this way, and you can run it from the Visual Studio Command Prompt:   &lt;br /&gt;tcm bugfieldmapping /import /mappingfile:”c:\temp\myfile.xml” /collection:http://tfs:8080/tfs/DefaultCollection /teamproject:MyProject &lt;/p&gt;  &lt;p&gt;The mapping file looks something like this:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;utf-16&amp;quot;&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;BugFilerMappings&lt;/span&gt; &lt;span class="attr"&gt;workitemtypetocreate&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Bug&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ReproSteps&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Microsoft.VSTS.TCM.ReproSteps&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ReproSteps&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;SystemInformation&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Microsoft.VSTS.TCM.SystemInfo&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;SystemInformation&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;BuildFoundIn&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Microsoft.VSTS.Build.FoundIn&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;BuildFoundIn&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;BugFilerMappings&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-1534550519514960547?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/1534550519514960547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=1534550519514960547' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/1534550519514960547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/1534550519514960547'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2012/01/tcmtest-case-management-tool.html' title='TCM–Test Case Management Tool'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-4875950247331410612</id><published>2012-01-09T17:18:00.001-05:00</published><updated>2012-01-09T17:18:11.923-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><title type='text'>Managing TFS Security through command-line: TFSSecurity.exe</title><content type='html'>&lt;p&gt;I was recently connected to a client’s TFS through VPN and the Team Explorer interface didn’t let me add users from their domain into one of the TFS groups.&amp;#160; I could only see users from my local domain.&amp;#160; In order to get around this, I used TFSSecurity.exe (&lt;a title="http://msdn.microsoft.com/en-us/library/ms252504.aspx" href="http://msdn.microsoft.com/en-us/library/ms252504.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms252504.aspx&lt;/a&gt;). It lets you create and modify groups as well as add permissions for groups and users.&amp;#160; &lt;/p&gt;  &lt;p&gt;This command added the user to the “Contributors” group in the specified Team Project:&lt;/p&gt;  &lt;p&gt;tfssecurity.exe /collection:http://tfsserver:8080/tfs/Collection /g+ &amp;quot;[Team Project Name]\Contributors&amp;quot; n:&amp;quot;someDomain\SomeUser&amp;quot;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-4875950247331410612?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/4875950247331410612/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=4875950247331410612' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/4875950247331410612'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/4875950247331410612'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2012/01/managing-tfs-security-through-command.html' title='Managing TFS Security through command-line: TFSSecurity.exe'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-2095217947522309812</id><published>2011-12-19T08:45:00.001-05:00</published><updated>2011-12-19T08:45:04.003-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><title type='text'>Managing Team Foundation Server at Orlando IT Pro Camp</title><content type='html'>&lt;p&gt;Next month, on January 21st, I will be speaking at the Orlando IT Pro Camp.&amp;#160; My session will cover “Managing Team Foundation Server”, here is the abstract:&lt;/p&gt;  &lt;p&gt;“Your company decided to adopt Team Foundation Server and now it’s your job to manage it and make sure that it’s always available and you can restore it if the need comes up.   &lt;br /&gt;Come and learn about the different technologies used by TFS, the tools that you will need to manage and administer it, and best practices to keep your installation running smoothly.”&lt;/p&gt;  &lt;p&gt;You can check out the session information &lt;a href="http://itprocamp.com/orlando/sessions/?session=u7f7su"&gt;here&lt;/a&gt;, view the schedule &lt;a href="http://itprocamp.com/orlando/category/schedule/"&gt;here&lt;/a&gt;, and register &lt;a href="http://orlandoitprocamp.eventbrite.com/"&gt;here&lt;/a&gt;.&amp;#160; &lt;/p&gt;  &lt;p&gt;There is also a write-up on the AgileThought website, &lt;a href="http://www.agilethought.com/Pages/EstebanGarciaPresentsTFSSessionatITProCamp.aspx"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Wondering what an “IT Pro Camp” is?&amp;#160; &lt;br /&gt;&lt;/strong&gt;IT Pro Camps are a free, one day learning event for anyone seeking professional development. This community event serves IT professionals and students with a focus on IT Pro related technologies. IT Pro Camps offer a conference style learning environment free of charge to attendees and is open to presenters of all backgrounds and expertise. We encourage our local Sponsors to participate in their local IT Pro Camps!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Location     &lt;br /&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;h4&gt;Saturday Jan 21st 2012&lt;/h4&gt; ITT  &lt;br /&gt;Suite 100   &lt;br /&gt;8301 Southpark Cir  &lt;br /&gt;Orlando, FL 32819   &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-2095217947522309812?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/2095217947522309812/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=2095217947522309812' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/2095217947522309812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/2095217947522309812'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/12/managing-team-foundation-server-at.html' title='Managing Team Foundation Server at Orlando IT Pro Camp'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-1495863330945413039</id><published>2011-12-07T06:45:00.000-05:00</published><updated>2011-12-07T10:56:12.356-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><title type='text'>TFS Server-side event handlers</title><content type='html'>&lt;p&gt;TFS has had an event system since it’s first version, but prior to TFS 2010 that system consisted of SOAP and SMTP events.&amp;#160; For SOAP events, you need to create your own Web Service, then subscribe it to a TFS event using BisSubscribe.exe.&amp;#160; &lt;/p&gt;  &lt;p&gt;TFS 2010 introduced a new concept with Server-side event handlers, which use a Plug-in model that allows custom code to execute upon a TFS event, and run under the TFS context.&amp;#160; So the two big advantages here is that you no longer have to deploy a separate SOAP-based web service, and since you are running under the TFS context, you have direct access to the TFS API with much less hops across different processes.&amp;#160; &lt;/p&gt;  &lt;p&gt;The solution consists of a .NET Class that implements the &lt;i&gt;Microsoft.TeamFoundation.Framework.Server. ISubscriber&lt;/i&gt; interface:&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;public interface &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ISubscriber
&lt;/span&gt;{
    &lt;span style="color: blue"&gt;string &lt;/span&gt;Name { &lt;span style="color: blue"&gt;get&lt;/span&gt;; }
    &lt;span style="color: #2b91af"&gt;SubscriberPriority &lt;/span&gt;Priority { &lt;span style="color: blue"&gt;get&lt;/span&gt;; }

    &lt;span style="color: #2b91af"&gt;EventNotificationStatus &lt;/span&gt;ProcessEvent(&lt;span style="color: #2b91af"&gt;TeamFoundationRequestContext &lt;/span&gt;requestContext, &lt;span style="color: #2b91af"&gt;NotificationType &lt;/span&gt;notificationType, &lt;span style="color: blue"&gt;object &lt;/span&gt;notificationEventArgs, &lt;span style="color: blue"&gt;out int &lt;/span&gt;statusCode, &lt;span style="color: blue"&gt;out string &lt;/span&gt;statusMessage, &lt;span style="color: blue"&gt;out &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ExceptionPropertyCollection &lt;/span&gt;properties);
    &lt;span style="color: #2b91af"&gt;Type&lt;/span&gt;[] SubscribedTypes();
}&lt;/pre&gt;

&lt;p&gt;You implement your custom logic on the &lt;strong&gt;ProcessEvent &lt;/strong&gt;method.&amp;#160; The &lt;strong&gt;SubscribedTypes&lt;/strong&gt; property is used to notify TFS what events you are subscribed to, this is an array so your code can respond to multiple events.&amp;#160; Here is a good list with all available events: &lt;a title="http://blog.hinshelwood.com/tfs-event-handler-for-team-foundation-server-2010/" href="http://blog.hinshelwood.com/tfs-event-handler-for-team-foundation-server-2010/"&gt;http://blog.hinshelwood.com/tfs-event-handler-for-team-foundation-server-2010/&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The notificationEventArgs parameter contains contextual information about what raised the event.&amp;#160; When responding to a Work Item-related event such as WorkItemChangedEvent, the EventArgs contain Core information about the Work Item, including the full list of changed fields.&amp;#160; When responding to a Source Control event such as CheckinNotification, you get access to the ChangeSet.&amp;#160; If additional information is required the TFS API can be used to gather this data.&lt;/p&gt;

&lt;p&gt;All logging should be done through the TeamFoundationApplication class, which has “Log” and “LogException” methods. This is important as it will use the TFS context to log information and use the same logging verbosity that is set for the TFS process.&amp;#160; So I would avoid using EventLog.WriteEntry() as your messages wouldn’t be logged as coming from TFS.&lt;/p&gt;

&lt;p&gt;The code:&amp;#160; This shows a sample implementation of code responding to a Check-in event:&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; Sample.SourceControl.Server.PlugIns
{
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; CodeCheckInEventHandler : ISubscriber
    {
        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; Name
        {
            get { &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="str"&gt;&amp;quot;CodeCheckInEventHandler&amp;quot;&lt;/span&gt;; }
        }

        &lt;span class="kwrd"&gt;public&lt;/span&gt; SubscriberPriority Priority
        {
            get { &lt;span class="kwrd"&gt;return&lt;/span&gt; SubscriberPriority.Normal; }
        }

        &lt;span class="kwrd"&gt;public&lt;/span&gt; EventNotificationStatus ProcessEvent(TeamFoundationRequestContext requestContext, NotificationType notificationType, &lt;span class="kwrd"&gt;object&lt;/span&gt; notificationEventArgs, &lt;span class="kwrd"&gt;out&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt; statusCode, &lt;span class="kwrd"&gt;out&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; statusMessage, &lt;span class="kwrd"&gt;out&lt;/span&gt; Microsoft.TeamFoundation.Common.ExceptionPropertyCollection properties)
        {
            statusCode = 0;
            properties = &lt;span class="kwrd"&gt;null&lt;/span&gt;;
            statusMessage = String.Empty;
            &lt;span class="kwrd"&gt;try&lt;/span&gt;
            {
                &lt;span class="kwrd"&gt;if&lt;/span&gt; (notificationType == NotificationType.Notification &amp;amp;&amp;amp; notificationEventArgs &lt;span class="kwrd"&gt;is&lt;/span&gt; WorkItemChangedEvent)
                {
                    CheckinNotification ev = notificationEventArgs &lt;span class="kwrd"&gt;as&lt;/span&gt; CheckinNotification;
                    TeamFoundationApplication.Log(&lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;&amp;quot;New Changeset was checked in by {0}. ID: {1}, comments: {2}&amp;quot;&lt;/span&gt;, ev.ChangesetOwnerName, ev.Changeset, ev.Comment), 123, System.Diagnostics.EventLogEntryType.Information);
                }
            }
            &lt;span class="kwrd"&gt;catch&lt;/span&gt; (Exception ex)
            {
                TeamFoundationApplication.LogException(&lt;span class="str"&gt;&amp;quot;Sample.SourceControl.Server.PlugIns.CodeCheckInEventHandler encountered an exception&amp;quot;&lt;/span&gt;, ex);
            }
            &lt;span class="kwrd"&gt;return&lt;/span&gt; EventNotificationStatus.ActionPermitted;
        }

        &lt;span class="kwrd"&gt;public&lt;/span&gt; Type[] SubscribedTypes()
        {
            &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; Type[1] { &lt;span class="kwrd"&gt;typeof&lt;/span&gt;(CheckinNotification) };
        }
    }
}&lt;/pre&gt;

&lt;p&gt;Deploying your assemblies is really straight forward, you just have to copy them to “%Program Files%\Microsoft Team Foundation Server 2010\Application Tier\Web Services\bin\Plugins” on your TFS Server.&amp;#160; As soon as you deploy the assemblies there, your Application Tier web application will restart and your plugin code will start getting called, so use caution and ideally deploy this to a local copy of TFS of a Test environment first.&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-1495863330945413039?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/1495863330945413039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=1495863330945413039' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/1495863330945413039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/1495863330945413039'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/12/tfs-server-side-event-handlers.html' title='TFS Server-side event handlers'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-1715561604390623421</id><published>2011-11-23T17:16:00.001-05:00</published><updated>2011-11-23T17:16:11.172-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Build'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><title type='text'>TFS API: Accessing build definition values programmatically</title><content type='html'>&lt;p&gt;I’m working on some build customization and I needed to be able to access parameter values from my build definition programmatically.&amp;#160; It turned out to be pretty easy once I knew where to look:&lt;/p&gt;  &lt;p&gt;We start off by connecting to TFS and then to the Build Service:&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: #2b91af"&gt;TfsTeamProjectCollection &lt;/span&gt;server = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;TfsTeamProjectCollection&lt;/span&gt;(&lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Uri&lt;/span&gt;(&lt;span style="color: #a31515"&gt;&amp;quot;http://myTFS:8080/tfs&amp;quot;&lt;/span&gt;));
server.EnsureAuthenticated(); 
&lt;span style="color: #2b91af"&gt;IBuildServer &lt;/span&gt;build = (&lt;span style="color: #2b91af"&gt;IBuildServer&lt;/span&gt;)server.GetService(&lt;span style="color: blue"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;IBuildServer&lt;/span&gt;));&lt;/pre&gt;

&lt;p&gt;That is followed by retrieving the build definition…you have a couple of options here, as you can use the build definition URL (something like &lt;a title="vstfs:///Build/Definition/36" href="vstfs:///Build/Definition/36"&gt;vstfs:///Build/Definition/36&lt;/a&gt;), or you can supply the project name and build definition name, which makes things more readable:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: #2b91af"&gt;IBuildDefinition &lt;/span&gt;buildDefinition = build.GetBuildDefinition(&lt;span style="color: #a31515"&gt;&amp;quot;MyProject&amp;quot;&lt;/span&gt;, &lt;span style="color: #a31515"&gt;&amp;quot;MyDefinition&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

&lt;p&gt;Build definition has a property called ProcessParameters where you can get all the names and values of the parameters that are defined in your build definition.&amp;#160; Don’t confuse that with buildDefinition.Process.Parameters, as that gives you the values as found in the underlying build template.&amp;#160; The ProcessParameters property is a string, but it stores a serialized Dictionary with all the keys and values found in the definition.&amp;#160; This code helps you get the values out of it (in my case I was looking for a string array):
  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;object &lt;/span&gt;argumentValue;
&lt;span style="color: blue"&gt;if &lt;/span&gt;(&lt;span style="color: #2b91af"&gt;WorkflowHelpers&lt;/span&gt;.DeserializeProcessParameters(buildDefinition.ProcessParameters).TryGetValue(&lt;span style="color: #a31515"&gt;&amp;quot;MyArgumentName&amp;quot;&lt;/span&gt;, &lt;span style="color: blue"&gt;out &lt;/span&gt;argumentValue))
{
    &lt;span style="color: blue"&gt;return &lt;/span&gt;(&lt;span style="color: blue"&gt;string&lt;/span&gt;[])argumentValue;
}&lt;/pre&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-1715561604390623421?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/1715561604390623421/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=1715561604390623421' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/1715561604390623421'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/1715561604390623421'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/11/tfs-api-accessing-build-definition.html' title='TFS API: Accessing build definition values programmatically'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-4521746629647219836</id><published>2011-11-15T09:42:00.001-05:00</published><updated>2011-11-15T09:42:48.826-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TFS11'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><title type='text'>Connecting VS 2010 to Team Foundation Service Preview (TFS Azure)</title><content type='html'>&lt;p&gt;If you have access to &lt;a href="https://tfspreview.com/"&gt;TFS Preview&lt;/a&gt; and you want to connect to it from Visual Studio 2010, this is what you need to do:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Install hotfix &lt;a href="http://go.microsoft.com/fwlink/?LinkID=212065"&gt;KB2581206&lt;/a&gt; (More info on the &lt;a href="http://blogs.msdn.com/b/visualstudioalm/archive/2011/09/14/tfs-preview-downloads.aspx"&gt;VS ALM Team Blog&lt;/a&gt;)&lt;/li&gt;    &lt;li&gt;Run Visual Studio 2010, and from Team Explorer, click on “Connect”, then “Add Server”.&amp;#160; Enter the name of your instance, and select HTTPS.     &lt;br /&gt;&lt;a href="http://lh4.ggpht.com/-8CG3irvV9XE/TsJ6YEqBpeI/AAAAAAAAATg/3FH8li2u8jg/s1600-h/image%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-jaYAxk1xWrM/TsJ6YpjC61I/AAAAAAAAATo/Yo9CiJ4wJGM/image_thumb%25255B2%25255D.png?imgmax=800" width="487" height="324" /&gt;&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;You will be then be prompted to sign in with your LiveID     &lt;br /&gt;&lt;a href="http://lh3.ggpht.com/-mbWq84awlMM/TsJ6Y9MN0xI/AAAAAAAAATw/RP7a-b9X-HA/s1600-h/image%25255B8%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-t4qRzzVTgr0/TsJ6ZRn_mzI/AAAAAAAAAT4/WXGmLMlTaoA/image_thumb%25255B4%25255D.png?imgmax=800" width="364" height="241" /&gt;&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;You will then get the regular prompts to select your collection and team projects.&lt;/li&gt;    &lt;li&gt;From Team Explorer, you will now be able to view/manage Work Items, Builds, and Source Control.&amp;#160; More should be coming in the future.&amp;#160; &lt;br /&gt;&lt;a href="http://lh3.ggpht.com/-u7tx5l3DUFk/TsJ6Z031HKI/AAAAAAAAAUA/dykn9E9Jz4o/s1600-h/image%25255B19%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-iF0X-_nceNY/TsJ6aCo9QEI/AAAAAAAAAUI/lIByLY8zbcQ/image_thumb%25255B9%25255D.png?imgmax=800" width="369" height="211" /&gt;&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Note that if you want automated builds, you will need to setup your own build server and connect it to TFS Preview, more information here: &lt;a title="http://blogs.msdn.com/b/bharry/archive/2011/09/15/configuring-a-build-server-against-your-shiny-new-hosted-tfs-account.aspx" href="http://blogs.msdn.com/b/bharry/archive/2011/09/15/configuring-a-build-server-against-your-shiny-new-hosted-tfs-account.aspx"&gt;http://blogs.msdn.com/b/bharry/archive/2011/09/15/configuring-a-build-server-against-your-shiny-new-hosted-tfs-account.aspx&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-4521746629647219836?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/4521746629647219836/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=4521746629647219836' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/4521746629647219836'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/4521746629647219836'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/11/if-you-have-access-to-tfs-preview-and.html' title='Connecting VS 2010 to Team Foundation Service Preview (TFS Azure)'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/-jaYAxk1xWrM/TsJ6YpjC61I/AAAAAAAAATo/Yo9CiJ4wJGM/s72-c/image_thumb%25255B2%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-3200344468180720610</id><published>2011-11-07T07:49:00.000-05:00</published><updated>2011-11-07T09:48:03.627-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CI'/><category scheme='http://www.blogger.com/atom/ns#' term='Build'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><title type='text'>Continuous Integration with TFS at Sarasota .NET Developers Group</title><content type='html'>&lt;p&gt;On November 16th, I will be speaking at the Sarasota .NET Developers Group.&amp;#160; &lt;/p&gt;  &lt;p&gt;You will learn the in’s and out’s of TFS Team Build, starting with Build Controllers and Agents and then all the way through to the new Workflow-based templates. We will go over how to create custom activities, and much more in order to take full advantage of TFS's powerful build system and empower your team.&lt;/p&gt;  &lt;p&gt;The session will include:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Introduction to TFS Build system&lt;/li&gt;    &lt;li&gt;Build Templates&lt;/li&gt;    &lt;li&gt;Built-in activities&lt;/li&gt;    &lt;li&gt;Custom activities&lt;/li&gt;    &lt;li&gt;Running static analysis, metrics, unit testing&lt;/li&gt;    &lt;li&gt;CI best practices&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://www.sarasotadev.net/"&gt;&lt;img alt="Sarasota .NET Developers Group" src="http://www.sarasotadev.net/Portals/0/Images/sarasotadev-logo.jpg" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The group’s website is &lt;a title="http://www.sarasotadev.net/" href="http://www.sarasotadev.net/"&gt;http://www.sarasotadev.net/&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-3200344468180720610?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/3200344468180720610/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=3200344468180720610' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/3200344468180720610'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/3200344468180720610'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/11/continuous-integration-with-tfs-at.html' title='Continuous Integration with TFS at Sarasota .NET Developers Group'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-9166213305984889394</id><published>2011-10-24T18:00:00.001-04:00</published><updated>2011-10-24T18:00:05.801-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting'/><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='MTM'/><title type='text'>Test Scribe for Visual Studio Ultimate 2010 and Test Professional 2010</title><content type='html'>&lt;p&gt;If you use Microsoft Test Manager, you *have to* install Test Scribe! It is a documentation power tool that integrates direction into MTM and allows you to create a Word document based on your Test Plans and you Test Runs.&amp;#160; This is a great way to report test progress, create User Acceptance Testing documents, or just review your test cases with your team away from MTM.&lt;/p&gt;  &lt;p&gt;You can download it from Visual Studio Gallery: &lt;a title="http://visualstudiogallery.msdn.microsoft.com/e79e4a0f-f670-47c2-9b8a-3b6f664bf4ae" href="http://visualstudiogallery.msdn.microsoft.com/e79e4a0f-f670-47c2-9b8a-3b6f664bf4ae"&gt;http://visualstudiogallery.msdn.microsoft.com/e79e4a0f-f670-47c2-9b8a-3b6f664bf4ae&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Once you install it, you will see a new “Tools” option in the MTM drop-down:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-TMrg8nSmWwk/TqXf3kpd9WI/AAAAAAAAAR0/K7ZYyW7AF1o/s1600-h/image%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-Ud-kK8brx2A/TqXf39ikYVI/AAAAAAAAAR8/chSstB3WPcE/image_thumb.png?imgmax=800" width="163" height="188" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;From Tools, you get two options:&lt;/p&gt;  &lt;p&gt;- Test Plan Summary: a list of all the test plans that you have setup   &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-kbS4cr-fmIQ/TqXf34aRNYI/AAAAAAAAASE/JNAI4bkB1K8/s1600-h/image%25255B6%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-DRhs2Kd6CCc/TqXf4JZAexI/AAAAAAAAASM/uX6-yMeskoY/image_thumb%25255B2%25255D.png?imgmax=800" width="762" height="194" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;- Test Run Summary: a list of all the test runs that you’ve done   &lt;br /&gt;&lt;a href="http://lh3.ggpht.com/-oqbkyJAshHU/TqXf4YFMrvI/AAAAAAAAASU/_eThwtpLc_w/s1600-h/image%25255B14%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-ZZb_qfaFs_g/TqXf4RymMUI/AAAAAAAAASc/eIyKeDPPM-w/image_thumb%25255B6%25255D.png?imgmax=800" width="612" height="235" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Clicking on the “Generate” button gives you the reports:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-7VnSIxxBrws/TqXf4vB9QBI/AAAAAAAAASk/ide-7q2QK0Q/s1600-h/image%25255B23%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-y5kTgzVGMto/TqXf47zj8bI/AAAAAAAAASs/Wermq_hJ0Hc/image_thumb%25255B11%25255D.png?imgmax=800" width="1089" height="700" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-SxLPSrKnjIk/TqXf5EN-TTI/AAAAAAAAAS0/sGsrUU7MSwo/s1600-h/image%25255B19%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-gnJf716wU_I/TqXf5f0SGyI/AAAAAAAAAS8/IIes9NIVHms/image_thumb%25255B9%25255D.png?imgmax=800" width="536" height="580" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-9166213305984889394?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/9166213305984889394/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=9166213305984889394' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/9166213305984889394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/9166213305984889394'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/10/test-scribe-for-visual-studio-ultimate.html' title='Test Scribe for Visual Studio Ultimate 2010 and Test Professional 2010'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/-Ud-kK8brx2A/TqXf39ikYVI/AAAAAAAAAR8/chSstB3WPcE/s72-c/image_thumb.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-1740104995622100979</id><published>2011-10-14T14:46:00.001-04:00</published><updated>2011-10-14T14:46:22.024-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><title type='text'>Give Camp–Orlando</title><content type='html'>&lt;p&gt;&lt;a href="http://givecamporlando.org/"&gt;&lt;img alt="GiveCamp.Orlando" src="http://givecamporlando.org/content/images/logo.png" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;As geeks, we don’t get a lot of opportunities to give back to the community by using our skills.&amp;#160; Luckily, there’s a great way for us to do so coming up in just a week.&amp;#160; On the weekend of October 21st – 23rd, Orlando is joining 15 cities across the US (and UK) on &lt;a href="http://givecamp.org/national-givecamp/"&gt;National Give Camp&lt;/a&gt; day.&amp;#160; &lt;/p&gt;  &lt;p&gt;You are probably wondering what GiveCamp is!&amp;#160; GiveCamp is a weekend-long event where technology professionals – including designers, developers and database administrators as well as marketers and web strategists donate their time and unique talents to provide software solutions for local charities and other non-profit organizations.&lt;/p&gt;  &lt;p&gt;We have received proposals from 16 different Central Florida non-profit organizations and we are going to do our best to help all of them.&amp;#160; These are some great causes and I’m sure that it will allow those organizations to make a huge difference in our area.&amp;#160; So come on out and use your geek powers for a great cause!&lt;/p&gt;  &lt;p&gt;Thanks to our awesome sponsors, we will cover your food for the weekend. We will work hard and we will try to keep it a lot of fun. &lt;/p&gt;  &lt;p&gt;Want to volunteer? Go to &lt;a title="http://givecamporlando.org/" href="http://givecamporlando.org/"&gt;http://givecamporlando.org/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Where? &lt;a href="http://www.fullsail.edu/"&gt;Full Sail University&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://twitter.com/givecamporlando"&gt;Follow GiveCamp Orlando on Twitter&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-1740104995622100979?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/1740104995622100979/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=1740104995622100979' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/1740104995622100979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/1740104995622100979'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/10/give-camporlando.html' title='Give Camp–Orlando'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-4518515534252842941</id><published>2011-10-14T14:01:00.001-04:00</published><updated>2011-10-14T14:06:11.098-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><title type='text'>Customize your Work Item Type Definitions: Take advantage of Link Types</title><content type='html'>&lt;p&gt;TFS 2010 allows you to create many different types of links between work items.&amp;#160; These are the available link types (out of the box):&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Affects/Affected by &lt;/li&gt;    &lt;li&gt;Tested By/Tests &lt;/li&gt;    &lt;li&gt;Test Case/Shared Steps &lt;/li&gt;    &lt;li&gt;Successor/Predecessor &lt;/li&gt;    &lt;li&gt;Child/Parent &lt;/li&gt;    &lt;li&gt;Related &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;This is a big change from the previous version as back then you could only create “related” link between work items.&amp;#160; &lt;/p&gt;  &lt;p&gt;When you create a link between work items, you get a different graphical view depending of which link type you pick:&lt;/p&gt;  &lt;p&gt;Affects/Tested By/Test Case/Successor    &lt;br /&gt;&lt;a href="http://lh3.ggpht.com/-cMxyrhxQuHM/Tph4_k58JUI/AAAAAAAAAQg/dkju-JJ4K1M/s1600-h/image3.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-CZ2PyAS53Eo/Tph4_3q0yVI/AAAAAAAAAQo/41BxynqWgLY/image_thumb1.png?imgmax=800" width="428" height="46" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Parent/Child    &lt;br /&gt;&lt;a href="http://lh3.ggpht.com/-VKivhvaEmzU/Tph5ALni7-I/AAAAAAAAAQw/mj7EUwNI5cw/s1600-h/image8.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-VURQyMXzSag/Tph5ARPQT9I/AAAAAAAAAQ4/TGxCUIEGMW4/image_thumb4.png?imgmax=800" width="242" height="81" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Related    &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/-rXZig-GgRcc/Tph5AlveQbI/AAAAAAAAARA/pxmxCOeeiqw/s1600-h/image11.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-dBFOMLFuIq8/Tph5En-iB5I/AAAAAAAAARI/zbRBEIaO8m0/image_thumb5.png?imgmax=800" width="244" height="92" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You can then choose to show related work items with a specific link type as part of your Work Item Type Definition.&amp;#160; You can see this in action if you look at a User Story in the MSF for Agile template:    &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-Ye-Gh8jEZCw/Tph5E5xe_8I/AAAAAAAAARQ/nPPfhHeSuP4/s1600-h/image16.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-2woTotsFXaA/Tph5FHpJJAI/AAAAAAAAARY/r7wf28j75zM/image_thumb8.png?imgmax=800" width="431" height="156" /&gt;&lt;/a&gt;     &lt;br /&gt;The Implementation tab shows you only Parent/Child relationships, the Test Cases tab shows you “Tested By” relationships, and the “All Links” tab shows you every work item, changeset, and hyperlink related to your work item.&amp;#160; &lt;/p&gt;  &lt;p&gt;If you want to implement something similar on your own work item type, this is what you need to do:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;From the WorkItem editor (&lt;a href="http://visualstudiogallery.msdn.microsoft.com/c255a1e4-04ba-4f68-8f4e-cd473d6b971f"&gt;Power Tools&lt;/a&gt;), add a new control of type “LinksControl”&lt;/li&gt;    &lt;li&gt;On the new control properties, select the Control Settings: “LinksControlOptionsType”&lt;/li&gt;    &lt;li&gt;By default, you are going to see this:     &lt;br /&gt;      &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;LinksControlOptionsType&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;LinkColumns&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;LinkColumn&lt;/span&gt; &lt;span class="attr"&gt;RefName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.Id&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;LinkColumn&lt;/span&gt; &lt;span class="attr"&gt;RefName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.Title&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;LinkColumn&lt;/span&gt; &lt;span class="attr"&gt;RefName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.AssignedTo&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;LinkColumn&lt;/span&gt; &lt;span class="attr"&gt;RefName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.State&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;LinkColumn&lt;/span&gt; &lt;span class="attr"&gt;LinkAttribute&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.Links.Comment&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;LinkColumns&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;WorkItemLinkFilters&lt;/span&gt; &lt;span class="attr"&gt;FilterType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;includeAll&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ExternalLinkFilters&lt;/span&gt; &lt;span class="attr"&gt;FilterType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;includeAll&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;WorkItemTypeFilters&lt;/span&gt; &lt;span class="attr"&gt;FilterType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;includeAll&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;LinksControlOptionsType&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
    &lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;/li&gt;

  &lt;li&gt;The LinkColumns section allows you to specify which values of the related workitems you will show on your list.&amp;#160; &lt;/li&gt;

  &lt;ul&gt;
    &lt;li&gt;The WorkItemLinkFilters is used to control what types of links you will display.&amp;#160; This also controls the links types that show up on your “Link Type” drop-down when you are going to link to another work item from this control.&amp;#160; If you want to see a list of the link types that your TFS system has available, you can run this command: 
      &lt;br /&gt;witadmin listlinktypes /collection:http://yourserver:8080/tfs/defaultcollection&lt;/li&gt;

    &lt;li&gt;You can read about the different link type topologies here: &lt;a title="http://msdn.microsoft.com/en-us/library/dd293527.aspx" href="http://msdn.microsoft.com/en-us/library/dd293527.aspx"&gt;http://msdn.microsoft.com/en-us/library/dd293527.aspx&lt;/a&gt;&lt;/li&gt;
  &lt;/ul&gt;

  &lt;li&gt;The ExternalLinkFilters section lets you specify if you want to see work items, changesets, external links, etc.&lt;/li&gt;

  &lt;li&gt;The WorkItemTypeFilters section lets you filter by just specific work item types.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In my case, I wanted to all my parent and children tasks, so I used this:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;LinksControlOptionsType&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;LinkColumns&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;LinkColumn&lt;/span&gt; &lt;span class="attr"&gt;RefName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.ID&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;LinkColumn&lt;/span&gt; &lt;span class="attr"&gt;RefName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.WorkItemType&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;LinkColumn&lt;/span&gt; &lt;span class="attr"&gt;RefName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.Title&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;LinkColumn&lt;/span&gt; &lt;span class="attr"&gt;RefName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.AssignedTo&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;LinkColumn&lt;/span&gt; &lt;span class="attr"&gt;RefName&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.State&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;LinkColumn&lt;/span&gt; &lt;span class="attr"&gt;LinkAttribute&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.Links.Comment&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;LinkColumns&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;WorkItemLinkFilters&lt;/span&gt; &lt;span class="attr"&gt;FilterType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;include&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Filter&lt;/span&gt; &lt;span class="attr"&gt;LinkType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.LinkTypes.Hierarchy&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;WorkItemLinkFilters&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ExternalLinkFilters&lt;/span&gt; &lt;span class="attr"&gt;FilterType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;excludeAll&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;WorkItemTypeFilters&lt;/span&gt; &lt;span class="attr"&gt;FilterType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;include&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;Filter&lt;/span&gt; &lt;span class="attr"&gt;WorkItemType&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Task&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;WorkItemTypeFilters&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;LinksControlOptionsType&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;And that translates to this:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://lh6.ggpht.com/-ubeOIGMYByQ/Tph5FaRcSdI/AAAAAAAAARg/IpIAWvFK0vM/s1600-h/image%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-cS19Q6_Z2QU/Tph5FitZObI/AAAAAAAAARo/DkmnOssHEGU/image_thumb%25255B1%25255D.png?imgmax=800" width="487" height="346" /&gt;&lt;/a&gt;

  &lt;br /&gt;&lt;/p&gt;

&lt;p&gt;You can also further filter which relationships are shown (for example, parent vs child).&amp;#160; You can read about it here: &lt;a title="http://msdn.microsoft.com/en-us/library/dd638522.aspx" href="http://msdn.microsoft.com/en-us/library/dd638522.aspx"&gt;http://msdn.microsoft.com/en-us/library/dd638522.aspx&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-4518515534252842941?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/4518515534252842941/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=4518515534252842941' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/4518515534252842941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/4518515534252842941'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/10/customize-your-work-item-type.html' title='Customize your Work Item Type Definitions: Take advantage of Link Types'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/-CZ2PyAS53Eo/Tph4_3q0yVI/AAAAAAAAAQo/41BxynqWgLY/s72-c/image_thumb1.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-5708847030178542528</id><published>2011-09-25T11:02:00.001-04:00</published><updated>2011-09-25T11:02:52.606-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><category scheme='http://www.blogger.com/atom/ns#' term='Scrum'/><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><title type='text'>Presenting at the Acadiana .NET User Group this Thursday</title><content type='html'>&lt;p&gt;This Thursday night I’m heading up to Lafayette, LA to do a presentation on “TFS and your Scrum team”.&amp;#160; Here is the abstract of the presentation:&lt;/p&gt;  &lt;p&gt;TFS is a very powerful Application Lifecycle Management tool that helps teams come together and collaborate starting with requirements gathering all the way until an application is in production. We will take a look at Work Items, Builds, SharePoint integration, Reports, Source Control, and Microsoft Test Manager. We will also cover how you can leverage TFS to empower your Scrum team from Release Planning all the way until your Release Sprint.&lt;/p&gt;  &lt;p&gt;You can get more information about the group here: &lt;a title="http://acadianaug.org/Event/Show/32" href="http://acadianaug.org/Event/Show/32"&gt;http://acadianaug.org/Event/Show/32&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This speaking engagement was setup through the &lt;a href="http://www.telerik.com/community/insiders.aspx"&gt;Telerik Insiders Program&lt;/a&gt;!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-5708847030178542528?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/5708847030178542528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=5708847030178542528' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/5708847030178542528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/5708847030178542528'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/09/presenting-at-acadiana-net-user-group.html' title='Presenting at the Acadiana .NET User Group this Thursday'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-8715070386547356479</id><published>2011-09-20T23:42:00.001-04:00</published><updated>2011-09-20T23:42:34.134-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='MTM'/><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><title type='text'>Intro to Microsoft Test Manager at Space Coast .NET User Group</title><content type='html'>&lt;p&gt;Tonight I did a presentation on Microsoft Test Manager at &lt;a href="http://scdnug.org/"&gt;Space Coast .NET User Group&lt;/a&gt; in Melbourne, FL.&amp;#160; It was a great crowd with very good questions and everyone seemed to really enjoy the presentation and had a lot of interest in MTM.&amp;#160; Here are the slides that I used.&amp;#160; Also, Ken (SCDNUG president) will be posting a LiveMeeting recording of the presentation.&amp;#160; I’ll update this post when that is ready.&lt;/p&gt;  &lt;p&gt;Thanks for the invite and for everyone that came out to the meeting!&lt;/p&gt;  &lt;div style="width: 425px" id="__ss_9350951"&gt;&lt;strong style="margin: 12px 0px 4px; display: block"&gt;&lt;a title="Microsoft Test Manager" href="http://www.slideshare.net/EstebanFG/microsoft-test-manager-9350951"&gt;Microsoft Test Manager&lt;/a&gt;&lt;/strong&gt;&lt;object id="__sse9350951" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=mtm-110920223309-phpapp01&amp;amp;stripped_title=microsoft-test-manager-9350951&amp;amp;userName=EstebanFG" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;embed name="__sse9350951" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=mtm-110920223309-phpapp01&amp;amp;stripped_title=microsoft-test-manager-9350951&amp;amp;userName=EstebanFG" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;    &lt;div style="padding-bottom: 12px; padding-left: 0px; padding-right: 0px; padding-top: 5px"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/EstebanFG"&gt;EstebanFG&lt;/a&gt;.&lt;/div&gt; &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-8715070386547356479?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/8715070386547356479/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=8715070386547356479' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/8715070386547356479'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/8715070386547356479'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/09/intro-to-microsoft-test-manager-at.html' title='Intro to Microsoft Test Manager at Space Coast .NET User Group'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-7877598199842623664</id><published>2011-09-14T07:06:00.000-04:00</published><updated>2011-09-14T09:26:34.789-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='MTM'/><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><title type='text'>Microsoft Test Manager @ Space Coast .NET User Group</title><content type='html'>&lt;p&gt;Next Tuesday, September 20th, I will be speaking at the Space Coast .NET User Group in Melbourne, FL.&amp;#160; I will be covering Microsoft Test Manager.&amp;#160; We’ll start with an intro of MTM, I will show how you can create and manage test cases, test iterations, recording, and playback.&amp;#160; We will also take a look at Coded UI tests and test automation.&amp;#160; It should be a really fun night.&amp;#160; So if you are in the area, come on out and check it out!&lt;/p&gt;  &lt;p&gt;When: &lt;strong&gt;Tuesday Sept 20, 2011 @6:30 PM &lt;/strong&gt;&lt;b&gt;     &lt;br /&gt;&lt;/b&gt;Where: &lt;a href="http://www.bing.com/maps/?v=2&amp;amp;cp=28.10820006954784~-80.688965&amp;amp;lvl=17&amp;amp;dir=0&amp;amp;sty=r&amp;amp;where1=3900%20Dow%20Rd%2C%20Melbourne%2C%20FL%2032934-9255&amp;amp;form=LMLTCC"&gt;3900 Dow Road Suite C Melborne Fl 32934&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-7877598199842623664?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/7877598199842623664/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=7877598199842623664' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/7877598199842623664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/7877598199842623664'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/09/microsoft-test-manager-space-coast-net.html' title='Microsoft Test Manager @ Space Coast .NET User Group'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-1887934787644502229</id><published>2011-09-07T10:26:00.001-04:00</published><updated>2011-09-07T10:26:55.656-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Version Control'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><category scheme='http://www.blogger.com/atom/ns#' term='PowerShell'/><title type='text'>Creating a TFS branch from PowerShell</title><content type='html'>&lt;p&gt;The TFS API is really powerful and sometimes it’s just not very convenient to write a .NET app to consume it.&amp;#160; You can get just as much done with PowerShell and easily deploy and run the script on your servers.&amp;#160; I needed to create a TFS branch, but I could not use Team Explorer to do so, so I came up with this script (simplified version).&amp;#160; &lt;/p&gt;  &lt;pre class="csharpcode"&gt;param(
 
)
begin
{
 # load the required dll's
    [void][System.Reflection.Assembly]::LoadWithPartialName(&amp;quot;Microsoft.TeamFoundation.Client&amp;quot;)
    [void][System.Reflection.Assembly]::LoadWithPartialName(&amp;quot;Microsoft.TeamFoundation.VersionControl.Client&amp;quot;)
    
}
 
process
{
 $server = New-Object Microsoft.TeamFoundation.Client.TeamFoundationServer(&amp;quot;http://tfsserver:8080/tfs/DefaultCollection&amp;quot;)
 
 $vcServer = $server.GetService([Microsoft.TeamFoundation.VersionControl.Client.VersionControlServer]); 

 $changesetId = $vcServer.CreateBranch('$/Demo/Code/Main', '$/Demo/Code/Dev/Branch', [Microsoft.TeamFoundation.VersionControl.Client.VersionSpec]::Latest, $null, &amp;quot;New branch from script&amp;quot;, $null, $null, $null)

 &amp;quot;Branch created with ChangesetID: $changesetId&amp;quot;
 
}&lt;/pre&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;This uses the &lt;a href="http://msdn.microsoft.com/en-us/library/ff735064.aspx"&gt;VersionControlServer.CreateBranch()&lt;/a&gt; method, which runs server-side, which means that there’s no need to create a workspace or commit after the branch is created.&amp;#160; There is a simpler &lt;a href="http://msdn.microsoft.com/en-us/library/ff735147.aspx"&gt;overload&lt;/a&gt;, but that one doesn’t let you specify comments, so I chose this one.&amp;#160; This creates a 2010-style branch (allows visualization).&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-1887934787644502229?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/1887934787644502229/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=1887934787644502229' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/1887934787644502229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/1887934787644502229'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/09/creating-tfs-branch-from-powershell.html' title='Creating a TFS branch from PowerShell'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-4461224566812663637</id><published>2011-08-27T15:03:00.001-04:00</published><updated>2011-08-27T15:03:13.884-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CI'/><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='Code Camp'/><title type='text'>Continuous Integration with TFS 2010 at Jacksonville Code Camp</title><content type='html'>&lt;p&gt;I just completed my talk at &lt;a href="http://www.jaxcodecamp.com/"&gt;Jacksonville Code Camp&lt;/a&gt;.&amp;#160; I had a very good turn out and great questions, it is great to see more and more people using TFS and taking advantage of its capabilities.&amp;#160; Here are the slides and sample code.&lt;/p&gt; &lt;iframe style="padding-bottom: 0px; background-color: #fcfcfc; padding-left: 0px; width: 98px; padding-right: 0px; height: 115px; padding-top: 0px" title="Preview" marginheight="0" src="https://skydrive.live.com/embedicon.aspx/Code/Jax%20Code%20Camp%20-%20Demo.Tfs.BuildTasks.zip?cid=7b453f41cb97b931&amp;amp;sc=documents" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;  &lt;div style="width: 425px" id="__ss_9036726"&gt;&lt;strong style="margin: 12px 0px 4px; display: block"&gt;&lt;a title="CI with TFS" href="http://www.slideshare.net/EstebanFG/ci-with-tfs" target="_blank"&gt;CI with TFS&lt;/a&gt;&lt;/strong&gt; &lt;iframe height="355" marginheight="0" src="http://www.slideshare.net/slideshow/embed_code/9036726" frameborder="0" width="425" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;    &lt;div style="padding-bottom: 12px; padding-left: 0px; padding-right: 0px; padding-top: 5px"&gt;View more &lt;a href="http://www.slideshare.net/" target="_blank"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/EstebanFG" target="_blank"&gt;EstebanFG&lt;/a&gt; &lt;/div&gt; &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-4461224566812663637?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/4461224566812663637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=4461224566812663637' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/4461224566812663637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/4461224566812663637'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/08/continuous-integration-with-tfs-2010-at.html' title='Continuous Integration with TFS 2010 at Jacksonville Code Camp'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-2725893662806889436</id><published>2011-08-25T21:34:00.001-04:00</published><updated>2011-08-26T22:25:55.933-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CI'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><category scheme='http://www.blogger.com/atom/ns#' term='Code Camp'/><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><title type='text'>Speaking at Jax Code Camp</title><content type='html'>&lt;p&gt;This weekend I will be speaking at &lt;a href="http://www.jaxcodecamp.com/"&gt;Jacksonville Code Camp&lt;/a&gt;.&amp;#160; This will be my second time speaking there…I was there last summer and they put together a great event.&amp;#160; &lt;/p&gt;  &lt;p&gt;I will speaking about Continuous Integration with TFS. If you come to my talk, these are some of the things that I will cover:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Continuous Integration concepts &lt;/li&gt;    &lt;li&gt;TFS Build components &lt;/li&gt;    &lt;li&gt;Automated builds &lt;/li&gt;    &lt;li&gt;Unit testing with Team Build &lt;/li&gt;    &lt;li&gt;New Workflow-based templates &lt;/li&gt;    &lt;li&gt;Custom activities &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;And much more.&amp;#160; This is one of my favorite subjects, so bring your questions and I’ll keep the talk fun and flexible. &lt;/p&gt;  &lt;p&gt;There are some great talks on the schedule, so no matter what you are looking for, you are bound to find something that interests you.&amp;#160; &lt;/p&gt;  &lt;p&gt;Three of us from AgileThought are coming up to Jacksonville and you can catch their talk, &lt;a href="http://geekswithblogs.net/campuskoder/archive/2011/08/25/146669.aspx"&gt;here’s some info on Nikita’s blog&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-2725893662806889436?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/2725893662806889436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=2725893662806889436' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/2725893662806889436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/2725893662806889436'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/08/speaking-at-jax-code-camp.html' title='Speaking at Jax Code Camp'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-2689670776613224149</id><published>2011-08-24T15:17:00.001-04:00</published><updated>2011-08-24T15:17:28.411-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ONETUG'/><category scheme='http://www.blogger.com/atom/ns#' term='WP7'/><title type='text'>Tomorrow at ONETUG: Joe Healy talks about Mango!</title><content type='html'>&lt;p&gt;Thursday, August 25th, we have Joe Healy (@devFish) coming to Orlando to talk about Windows Phone “Mango”. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;About the presentation:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Windows Phone &amp;quot;Mango&amp;quot; introduced a wide range of enhancements for Windows Phone. During this session we'll take a high level pass of Devfish's &amp;quot;at the moment&amp;quot; top ten favorite features in Mango. Possibilities include any number of new features like sockets, augmented reality capabilities, gyros, camera access, profiler, Silverlight and XNA integration, background execution, database, HTML5, notifications, ringtones, search extensibility, sensors, and more. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Where: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Orlando City Hall at 7:00 pm&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;How to register:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://augustmangomeeting.eventbrite.com/" href="http://augustmangomeeting.eventbrite.com/"&gt;http://augustmangomeeting.eventbrite.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;See you there!!!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-2689670776613224149?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/2689670776613224149/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=2689670776613224149' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/2689670776613224149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/2689670776613224149'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/08/tomorrow-at-onetug-joe-healy-talks.html' title='Tomorrow at ONETUG: Joe Healy talks about Mango!'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-3448178407763530247</id><published>2011-08-19T10:35:00.001-04:00</published><updated>2011-08-19T10:35:29.715-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scrum'/><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><title type='text'>Succeeding with Scrum presentation at DevLink</title><content type='html'>&lt;p&gt;I just gave a talk at on “Succeeding with Scrum” at &lt;a href="http://www.devlink.net/"&gt;DevLink 2011&lt;/a&gt;.&amp;#160; I had a great turnout and very good discussion with the people that attended.&amp;#160; Here are the slides for my presentation: &lt;a title="http://www.slideshare.net/EstebanFG/scrum-8922042" href="http://www.slideshare.net/EstebanFG/scrum-8922042"&gt;http://www.slideshare.net/EstebanFG/scrum-8922042&lt;/a&gt;&lt;/p&gt;  &lt;div style="width: 425px" id="__ss_8922042"&gt;&lt;strong style="margin: 12px 0px 4px; display: block"&gt;&lt;a title="Scrum" href="http://www.slideshare.net/EstebanFG/scrum-8922042"&gt;Scrum&lt;/a&gt;&lt;/strong&gt;&lt;object id="__sse8922042" width="425" height="355"&gt;&lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=scrum-110819092505-phpapp01&amp;amp;stripped_title=scrum-8922042&amp;amp;userName=EstebanFG" /&gt;&lt;param name="allowFullScreen" value="true" /&gt;&lt;param name="allowScriptAccess" value="always" /&gt;&lt;embed name="__sse8922042" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=scrum-110819092505-phpapp01&amp;amp;stripped_title=scrum-8922042&amp;amp;userName=EstebanFG" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;    &lt;div style="padding-bottom: 12px; padding-left: 0px; padding-right: 0px; padding-top: 5px"&gt;View more &lt;a href="http://www.slideshare.net/"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/EstebanFG"&gt;EstebanFG&lt;/a&gt;.&lt;/div&gt; &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-3448178407763530247?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/3448178407763530247/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=3448178407763530247' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/3448178407763530247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/3448178407763530247'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/08/succeeding-with-scrum-presentation-at.html' title='Succeeding with Scrum presentation at DevLink'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-8210467124923291163</id><published>2011-08-02T09:16:00.001-04:00</published><updated>2011-08-02T09:22:01.547-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='MTM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><title type='text'>Introduction to Microsoft Test Manager – Part 2: Running Tests</title><content type='html'>&lt;p  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;This is part 2 of an Intro to MTM series.&amp;#160; Here is &lt;a href="http://estebanfg.blogspot.com/2011/08/introduction-to-microsoft-test-manager.html"&gt;part 1&lt;/a&gt;.&lt;/p&gt;  &lt;p  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;On the &lt;a href="http://estebanfg.blogspot.com/2011/08/introduction-to-microsoft-test-manager.html"&gt;previous post&lt;/a&gt;, I introduced test planning with MTM.&amp;#160; Today we are going to take a look at how you run and analyze your test cases.&amp;#160; We start by moving to the “Test” tab at the top of MTM.     &lt;br  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;&lt;a href="http://lh3.ggpht.com/-Va1AG13v20c/Tjf4plMpTWI/AAAAAAAAAO4/RTIERJGHiIY/s1600-h/image%25255B3%25255D.png" __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-dhEJQsgaY3g/Tjf4qMgunyI/AAAAAAAAAO8/W5eFZaORr6A/image_thumb%25255B1%25255D.png?imgmax=800" width="572" height="535" __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;&lt;/a&gt;&amp;#160; &lt;br  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;This screen shows us all our test suites that are marked as “in progress” and that have test cases under them.&amp;#160; You can double-click on each test case to view its results, you can run your test case, mark it as blocked, or just open it up to edit it.&lt;/p&gt;  &lt;p  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;&lt;strong  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Running a Test case      &lt;br  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;&lt;/strong&gt;We’ll start by clicking on “Run” in order to get the test case started.&amp;#160; You are going to get a side-bar with the option to start your test case.&amp;#160; This allows you to see your test steps on the left, while executing your test on the right-hand side.&amp;#160; You are given the option to create a new action recording, which will later allow you to re-run your test without having to physically interact with your application.&amp;#160; This is great for regression and (as I will show), for running multiple iterations of the same test.&amp;#160; This action recording is also used if/when you want to turn your test into a Coded UI test.     &lt;br  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;&lt;a href="http://lh4.ggpht.com/-1FJvT5A3AC4/Tjf4qrG-4lI/AAAAAAAAAPA/LMugRBQsK50/s1600-h/image%25255B8%25255D.png" __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-Z2VP-w6j39o/Tjf4q3lKYEI/AAAAAAAAAPE/khYrVOzqlL4/image_thumb%25255B4%25255D.png?imgmax=800" width="586" height="244" __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;&lt;/a&gt;     &lt;br  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;Once you click on “Start Test”, you get this:     &lt;br  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;&lt;a href="http://lh6.ggpht.com/-OP2SLuJwuKc/Tjf4raNJrBI/AAAAAAAAAPI/wxIklqqwTIs/s1600-h/image%25255B12%25255D.png" __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-dlvjq-rhO14/Tjf4rvkWsOI/AAAAAAAAAPM/ZRHgYfLdTSY/image_thumb%25255B6%25255D.png?imgmax=800" width="452" height="298" __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;&lt;/a&gt;&amp;#160; &lt;br  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;At this point, MTM is using all the settings that you set when you were planning in order to figure out what it should be gathering.&amp;#160; If you click on the Attachments icon towards the top, you can see everything that is gathered.&amp;#160; If you’ve previously made an action recording of this test plan, you can select the test steps that you want to automatically re-play and click on the “Play” button and MTM will execute all those steps for you.&amp;#160; NOTE: Take your hands off the keyboard and mouse as this is happening!&amp;#160;&amp;#160; From here, you can generate a bug (which would be seen by a developer right away…no synchronizing required), you can take screenshots, environment snapshots, and also enter any test-run-specific notes.     &lt;br  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;On &lt;a href="http://estebanfg.blogspot.com/2011/08/introduction-to-microsoft-test-manager.html" target="_blank" __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;my previous post on planning&lt;/a&gt;, I showed you how to create parameters in order to create multiple iterations.&amp;#160; This is how it shows up when you are running a test case:     &lt;br  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;&lt;a href="http://lh5.ggpht.com/-mqHSol6ThZc/Tjf4r-EqIyI/AAAAAAAAAPQ/1rl61Bm6PrU/s1600-h/image%25255B16%25255D.png" __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-krwaKDdq1LU/Tjf4se1i_1I/AAAAAAAAAPU/Ui6cD8wllPE/image_thumb%25255B8%25255D.png?imgmax=800" width="371" height="124" __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;&lt;/a&gt;     &lt;br  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;Notice the “databound” symbol next to each value, and also notice that the values came directly from the list of parameters that I entered at planning.&amp;#160; When you are running your test case and you get to this step, all you have to do is put the cursor on each text box, paste (don’t need to copy), and the value will be automatically entered on your textbox and databound.&amp;#160; This means that next time you run your test case (or the next iteration), MTM will know exactly what control should be populated with your values.&lt;/p&gt;  &lt;p  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;&lt;strong  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Test Results      &lt;br  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;&lt;/strong&gt;Once you are done testing, you can take a look at test results.&amp;#160; This is what the screen looks like:     &lt;br  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;&lt;a href="http://lh5.ggpht.com/-1guQP6kkgu8/Tjf4s-sCJtI/AAAAAAAAAPY/7xXJbzFUAqQ/s1600-h/image%25255B21%25255D.png" __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-uOa0H0I_hUo/Tjf4tAzHXOI/AAAAAAAAAPc/VlLLhe24XE4/image_thumb%25255B11%25255D.png?imgmax=800" width="484" height="474" __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;&lt;/a&gt;     &lt;br  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;Here you can see all the steps that were executed, attachments (including recordings, screenshots, system info, etc), and iterate through iterations. You can also take a look at results from previous test runs.&amp;#160; All this information is available to the entire team.&lt;/p&gt;  &lt;p  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;&lt;strong  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Verify Bugs      &lt;br  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;&lt;/strong&gt;The “Test” tab has a second section called “Verify Bugs”. This is where you will see all the bugs that have been generated while running a test case.&amp;#160; You can see bug status, who it’s assigned to, and other information.&amp;#160; Clicking on the “Verify” button automatically starts the test case that generated the bug, so you don’t have to hunt around for a test case that you may have run a week or two ago.&amp;#160; You are also able to create new bugs from this screen.     &lt;br  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;&lt;a href="http://lh4.ggpht.com/-GbfOBjON8fw/Tjf4teJ_90I/AAAAAAAAAPg/EYhBkaZqQw8/s1600-h/image%25255B25%25255D.png" __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-ZCyu6m_25-U/Tjf4t0emS2I/AAAAAAAAAPk/NRDUWOhpo0A/image_thumb%25255B13%25255D.png?imgmax=800" width="651" height="98" __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;&lt;strong  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Analyze Test Runs      &lt;br  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;&lt;/strong&gt;The third section of the “Test” tab allows you to see a list of all the tests that you run.&amp;#160; Selecting each one takes you to an analysis screen where you can see the status and results of your tests.     &lt;br  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;&lt;a href="http://lh3.ggpht.com/-q1BMmqtFyFg/Tjf4uWRO2JI/AAAAAAAAAPo/0TnvuYHrNQg/s1600-h/image%25255B29%25255D.png" __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-FrLsW3gJ1vQ/Tjf4u3gAabI/AAAAAAAAAPs/Q3Ox9ldmbQk/image_thumb%25255B15%25255D.png?imgmax=800" width="654" height="431" __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;That concludes the “Test run” part. Next, we will cover test case management/organization, followed by Coded UI tests.    &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-8210467124923291163?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/8210467124923291163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=8210467124923291163' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/8210467124923291163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/8210467124923291163'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/08/introduction-to-microsoft-test-manager_02.html' title='Introduction to Microsoft Test Manager – Part 2: Running Tests'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/-dhEJQsgaY3g/Tjf4qMgunyI/AAAAAAAAAO8/W5eFZaORr6A/s72-c/image_thumb%25255B1%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-5283526031592090191</id><published>2011-08-01T18:41:00.001-04:00</published><updated>2011-08-02T09:28:43.884-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='MTM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><title type='text'>Introduction to Microsoft Test Manager</title><content type='html'>&lt;p&gt;This is part 1 of an Intro to MTM series.&amp;#160; Here is &lt;a href="http://estebanfg.blogspot.com/2011/08/introduction-to-microsoft-test-manager_02.html"&gt;part 2&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;This summer, I did two presentations on Microsoft Test Manager.&amp;#160; It is still a relatively unknown and unused tool, but when people get exposed to it and see it in action, I can tell that they get excited by it as they start thinking about its possibilities.&amp;#160; This series will cover a lot of what I went over in those presentations.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;What is Microsoft Test Manager (MTM)?      &lt;br /&gt;&lt;/strong&gt;MTM is a tool introduced along with Visual Studio 2010 and TFS 2010.&amp;#160; It is used to create and organize test plans and test cases, and execute manual tests.&amp;#160; MTM is built specifically for testers to be able to interact with other members of the team.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Why MTM?      &lt;br /&gt;&amp;#160;&lt;a href="http://lh3.ggpht.com/-aFRW6N6gTXI/Tjcra3tY8TI/AAAAAAAAAOA/GwpCGtor140/s1600-h/image%25255B12%25255D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-bwUBMwYRwD0/TjcrbXd8DmI/AAAAAAAAAOE/8gfHN1F04vc/image_thumb%25255B4%25255D.png?imgmax=800" width="244" height="184" /&gt;&lt;/a&gt;       &lt;br /&gt;&lt;/strong&gt;Prior to the 2010 release, Visual Studio Team System covered the majority of the team, but QA did not have any really good tools.&amp;#160; Most QA shops were left to either use a combination of applications such as Excel, Word, Notepad, etc or a lot of times the QA team would use specialized testing tools such as the HP test suite.     &lt;br /&gt;MTM gave Microsoft all the essential pieces to go from a development solution to a full ALM solution.&amp;#160; This was the final piece needed to get the entire team communicating through TFS rather than using 3rd parties or synchronizers.&amp;#160; Along with a new name for Team System (now Visual Studio ALM), the new picture looks like this:     &lt;br /&gt;&amp;#160;&lt;a href="http://lh4.ggpht.com/-_kUwNFc7S_E/Tjcrbpc2ccI/AAAAAAAAAOI/ZBZL9OVzaHg/s1600-h/image%25255B9%25255D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-lLawnhM3vbk/TjcrcC1HrTI/AAAAAAAAAOM/lJFcYqvg-Ls/image_thumb%25255B3%25255D.png?imgmax=800" width="244" height="184" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;How does it work?      &lt;br /&gt;&lt;/strong&gt;MTM allows you to plan, execute, analyze, and track your test cases.&amp;#160; You are also able to automate your test cases through the use of Coded UI tests and add them to your builds.&amp;#160; So there is a lot of integration between the entire team.&amp;#160; From within MTM, you also have access to Lab Management, which allows you to manage tests across multiple virtual environments.&amp;#160; We will focus on Test Case Management for now.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Planning      &lt;br /&gt;&lt;/strong&gt;We start by taking a look at the “Plan” tab in MTM.&amp;#160; Of course, the first step is to plan what the test team will be working on.&amp;#160; When you first start up MTM and connect to a TFS Server (you must be using TFS to be able to use MTM), you are taken to Testing Center plan selection screen:     &lt;br /&gt;&lt;a href="http://lh4.ggpht.com/-VDBMDsehJiw/TjcrcsymRxI/AAAAAAAAAOQ/aC_maPfD7TU/s1600-h/image%25255B22%25255D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-7TM7_osgYyk/Tjcrc4hYFZI/AAAAAAAAAOU/VgnWApzw1yI/image_thumb%25255B10%25255D.png?imgmax=800" width="578" height="463" /&gt;&lt;/a&gt;     &lt;br /&gt;At this point, you can either select an existing plan or you can add a new test plan.&amp;#160; Each test plan is referred to as a “Test suite”, you can have multiple Test Suites under each suite (hierarchical) or you can just create all your test cases under the root.     &lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-vB9IND8IFuU/TjcrdNQOrLI/AAAAAAAAAOY/MYQcc94Mj7E/s1600-h/image%25255B21%25255D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-JzXHLhL8Wjg/Tjcrdkqy1hI/AAAAAAAAAOc/VzJYF9vpA3U/image_thumb%25255B9%25255D.png?imgmax=800" width="572" height="415" /&gt;&lt;/a&gt;     &lt;br /&gt;From here, you can create a new test case, add an existing test case, edit test cases, and change test suite properties.&amp;#160; Let’s take a look at the properties screen:     &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/-CrlQ8HIQMgc/TjcreLB5EoI/AAAAAAAAAOg/_9t5R8SJGIM/s1600-h/image%25255B26%25255D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-RQTOyfYn2B4/TjcreVjgquI/AAAAAAAAAOk/46YxD8GC1KE/image_thumb%25255B12%25255D.png?imgmax=800" width="584" height="455" /&gt;&lt;/a&gt;     &lt;br /&gt;This screen allows you to manage your test suite (name, description, owner, status, start/end date.&amp;#160; You can also assign it to an Area Path and Iteration, just like you would for a Story, Task, Bug, etc in Team Explorer.&amp;#160; Behind the scenes, a test plan and a test case is just a work item.&amp;#160; &lt;br /&gt;The part that interests us the most here is the “Run Settings” section (middle of the screen).&amp;#160; This is where you can customize how your test cases are going to run and set environment settings.&amp;#160; Here is the Test Settings screen:     &lt;br /&gt;&lt;a href="http://lh4.ggpht.com/-2s-lm7C5fwg/TjcreyKh2fI/AAAAAAAAAOo/yoDYEVv6aYo/s1600-h/image%25255B33%25255D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-eCAfj6BYNTc/TjcrfWgY2XI/AAAAAAAAAOs/iR50eZ7nhF4/image_thumb%25255B15%25255D.png?imgmax=800" width="597" height="475" /&gt;&lt;/a&gt;     &lt;br /&gt;On this screen you specify the type of information that will be gathered during test runs.&amp;#160; This is really important as it will help testers and developers communicate and re-create any issues that you run into.&amp;#160; So this should reduce any “Can’t repro” or “Works on my machine” bug responses.&amp;#160; You can set settings on the following diagnostic values:     &lt;br /&gt;- Actions: What applications will be recorded for play-back     &lt;br /&gt;- ASP.NET client proxy: Lets you collect information about the http calls from a client to a Web server (used along with IntelliTrace)     &lt;br /&gt;- Event Log: Event logs and event types that should be collected.     &lt;br /&gt;- IntelliTrace: Data that should be collected by IntelliTrace (Processes, Events, etc)     &lt;br /&gt;- Network emulation: To emulate slower networks     &lt;br /&gt;- System Information: OS, memory, etc     &lt;br /&gt;- Test Impact: This is probably one of the most powerful features.&amp;#160; It collects information about which methods were called by your application.&amp;#160; When a developer touches that same method, then the test cases will be flagged to be re-run.&amp;#160; &lt;br /&gt;- Video recorder: Records the tester’s desktop while a test runs, which helps with reproducing any bugs.&lt;/p&gt;  &lt;p&gt;In addition to all these settings, you can specify which Build your test cases are going to run against and also the configurations that you are going to test (Windows 7 + IE 8, Windows XP + Firefox 3, etc).&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Creating a Test case      &lt;br /&gt;&lt;/strong&gt;Obviously, the most important feature would be to actually create your test cases. Here is the screen for that:     &lt;br /&gt;&lt;a href="http://lh4.ggpht.com/-DksnZXgz3rE/Tjcrf4O9rxI/AAAAAAAAAOw/N1wvivSrF0o/s1600-h/image%25255B37%25255D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-PeGB2otb0oc/TjcrgHVkfBI/AAAAAAAAAO0/_BOnw002a8o/image_thumb%25255B17%25255D.png?imgmax=800" width="592" height="509" /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;If you are familiar with TFS, this probably looks familiar to you.&amp;#160; A test case is a work item, so you will have a lot of the common fields that you’ve seen in other Work Item Types towards the top.&amp;#160; Something that is new to us is the “Steps” tab.&amp;#160; This is where the user would enter all the steps that a tester would need to follow in order to complete a test case.&amp;#160; This is specific to a manual test case, so the test steps should be written as human-readable as possible.&amp;#160; There are some interesting things that you can do here, such as combining multiple test steps into “shared steps”, which would allow you to reuse your steps in other test cases.&amp;#160; To do this, You just need to highlight the test steps, right-click and select “Create Shared Steps”.&amp;#160; To use them in the future, you can click on the “Insert Share steps” toolbar button.     &lt;br /&gt;You can also use parameters in order to make your test cases data-driven.&amp;#160; Take a look at Step 4 on my screenshot above: “Add Mailing list item: @Name, @Email, @Twitter”. When MTM sees a word preceded by an @, it adds is a parameter on the “Parameter Values” section at the bottom.&amp;#160; This allows you to create multiple iterations.&amp;#160; Later on, I will show you how to use them to achieve some automation on your manual test cases.     &lt;br /&gt;There are other tabs such as the “Tested User Stories”, which allows you to relate a test case to a User Story in order to be able to track progress/completeness.&amp;#160; &lt;/p&gt;  &lt;p&gt;So that covers the first part of this series.&amp;#160; Next step is &lt;a href="http://estebanfg.blogspot.com/2011/08/introduction-to-microsoft-test-manager_02.html"&gt;Test Execution&lt;/a&gt;.     &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-5283526031592090191?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/5283526031592090191/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=5283526031592090191' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/5283526031592090191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/5283526031592090191'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/08/introduction-to-microsoft-test-manager.html' title='Introduction to Microsoft Test Manager'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/-bwUBMwYRwD0/TjcrbXd8DmI/AAAAAAAAAOE/8gfHN1F04vc/s72-c/image_thumb%25255B4%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-3845226503907926472</id><published>2011-07-05T12:47:00.001-04:00</published><updated>2011-07-05T12:47:10.244-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Version Control'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><title type='text'>Changing your Visual Studio TFS Merge tool</title><content type='html'>&lt;p&gt;I’ve used WinMerge for a while now and really enjoy it.&amp;#160; It is definitely much better than the merge tool that ships as part of the TFS plugin for Visual Studio.&amp;#160; Last week during one of my presentations, someone asked me how to change the default behavior in Visual Studio so that it uses your diff tool of choice.&amp;#160; So here it is:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Download WinMerge: &lt;a title="http://winmerge.org/" href="http://winmerge.org/"&gt;http://winmerge.org/&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;From Visual Studio go to Tools –&amp;gt; Options –&amp;gt; Source Control –&amp;gt; Visual Studio Team Foundation Server&lt;/li&gt;    &lt;li&gt;Click on the “Configure User Tools” button&lt;/li&gt;    &lt;li&gt;Click on the “Add” button and enter the following values:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Extension: .*&lt;/li&gt;      &lt;li&gt;Operation: Compare&lt;/li&gt;      &lt;li&gt;Command: C:\Program Files (x86)\WinMerge\WinMergeU.exe&lt;/li&gt;      &lt;li&gt;Arguments: /ub /dl %6 /dr %7 %1 %2&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-urFjowI1Q_s/ThNACkkQ-tI/AAAAAAAAAN4/mCSvMKwE61M/s1600-h/image%25255B3%25255D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-9g-HRU9Clc4/ThNADQ4e6XI/AAAAAAAAAN8/JG7ND1JrRyY/image_thumb%25255B1%25255D.png?imgmax=800" width="538" height="293" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;That’s it!&amp;#160; From now on WinMerge (or whatever you configured) will come up when you do a file compare.&amp;#160;&amp;#160;&amp;#160; There’s a great post from a few years back that shows you all the different settings if you are looking to use a different merge application: &lt;a title="http://blogs.msdn.com/b/jmanning/archive/2006/02/20/diff-merge-configuration-in-team-foundation-common-command-and-argument-values.aspx" href="http://blogs.msdn.com/b/jmanning/archive/2006/02/20/diff-merge-configuration-in-team-foundation-common-command-and-argument-values.aspx"&gt;http://blogs.msdn.com/b/jmanning/archive/2006/02/20/diff-merge-configuration-in-team-foundation-common-command-and-argument-values.aspx&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-3845226503907926472?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/3845226503907926472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=3845226503907926472' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/3845226503907926472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/3845226503907926472'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/07/changing-your-visual-studio-tfs-merge.html' title='Changing your Visual Studio TFS Merge tool'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/-9g-HRU9Clc4/ThNADQ4e6XI/AAAAAAAAAN8/JG7ND1JrRyY/s72-c/image_thumb%25255B1%25255D.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-4799387747175414672</id><published>2011-06-27T08:50:00.001-04:00</published><updated>2011-06-27T08:52:54.562-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CI'/><category scheme='http://www.blogger.com/atom/ns#' term='Build'/><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='MTM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><category scheme='http://www.blogger.com/atom/ns#' term='Scrum'/><category scheme='http://www.blogger.com/atom/ns#' term='Code Camp'/><title type='text'>Atlanta Code Camp slides and sample code</title><content type='html'>&lt;p&gt;As mentioned &lt;a href="http://estebanfg.blogspot.com/2011/06/speaking-at-atlanta-code-camp.html"&gt;here&lt;/a&gt;, I presented at Atlanta Code Camp over the weekend.&amp;#160; It was a really well-run event and I had a lot of fun up there.&amp;#160; I met some great people and it seems like my session attendees got pretty excited about the tools that I presented.&amp;#160; You can get my slides here:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.slideshare.net/EstebanFG/mtm-8434946" target="_blank"&gt;Microsoft Test Manager&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.slideshare.net/EstebanFG/tfs-build" target="_blank"&gt;Continuous Integration with TFS&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.slideshare.net/EstebanFG/scrum-8434949" target="_blank"&gt;Succeeding with Scrum&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;During the “Continuous Integration” talk, i showed how some samples of custom build activities.&amp;#160; You can download that code &lt;a href="https://skydrive.live.com/?cid=7b453f41cb97b931&amp;amp;sc=documents&amp;amp;id=7B453F41CB97B931%21159#"&gt;here&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Here is the sample code for my Twitter update Activity&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Linq;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Activities;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; Microsoft.TeamFoundation.Build.Client;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.IO;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Drawing;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Drawing.Imaging;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Drawing.Drawing2D;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; Microsoft.TeamFoundation.VersionControl.Client;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; Microsoft.TeamFoundation.Build.Workflow.Activities;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; TweetSharp;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; Demo.Tfs.BuildTasks.Activities&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;    [BuildActivity(HostEnvironmentOption.All)]&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; SendTwitterUpdate : CodeActivity&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;        &lt;span class="rem"&gt;/// Message to update.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; InArgument&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt; UpdateMessage { get; set; }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;        &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Execute(CodeActivityContext context)&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;            var updateMessage = context.GetValue(&lt;span class="kwrd"&gt;this&lt;/span&gt;.UpdateMessage);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;            SendMessage(updateMessage);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;        }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; SendMessage(&lt;span class="kwrd"&gt;string&lt;/span&gt; message)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;            TwitterService svc = &lt;span class="kwrd"&gt;new&lt;/span&gt; TwitterService(&lt;span class="str"&gt;&amp;quot;fdafwTdI6eE8Xg&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;3X5467TicVasrfdasfdasC4M&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;xxxxxxxx-XVGL93uBK91KIpZEXDssez25CYs4ZH6bzonLEB7Z&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;asfasreaklejfasd&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;            svc.SendTweet(message);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;        }        &lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;And for my “Add Date to Image” activity:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   1:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   2:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   3:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Linq;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   4:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   5:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Activities;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   6:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; Microsoft.TeamFoundation.Build.Client;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   7:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.IO;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;   8:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Drawing;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;   9:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Drawing.Imaging;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  10:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Drawing.Drawing2D;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  11:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; Microsoft.TeamFoundation.VersionControl.Client;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  12:  &lt;/span&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; Microsoft.TeamFoundation.Build.Workflow.Activities;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  13:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  14:  &lt;/span&gt;&lt;span class="kwrd"&gt;namespace&lt;/span&gt; Demo.Tfs.BuildTasks.Activities&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  15:  &lt;/span&gt;{&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  16:  &lt;/span&gt;    [BuildActivity(HostEnvironmentOption.All)]&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  17:  &lt;/span&gt;    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;sealed&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; AddDateToImage : CodeActivity&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  18:  &lt;/span&gt;    {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  19:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  20:  &lt;/span&gt;        &lt;span class="rem"&gt;/// The workspace that is used by the build&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  21:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  22:  &lt;/span&gt;        [RequiredArgument]&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  23:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; InArgument&amp;lt;Workspace&amp;gt; Workspace { get; set; }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  24:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  25:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  26:  &lt;/span&gt;        &lt;span class="rem"&gt;/// Server file path to the image.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  27:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  28:  &lt;/span&gt;        [RequiredArgument]&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  29:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; InArgument&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt; ImageFilePath { get; set; }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  30:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  31:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  32:  &lt;/span&gt;        &lt;span class="rem"&gt;/// Server file path to the source image.&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  33:  &lt;/span&gt;        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  34:  &lt;/span&gt;        [RequiredArgument]&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  35:  &lt;/span&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; InArgument&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt; SourceImageFilePath { get; set; }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  36:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  37:  &lt;/span&gt;        &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  38:  &lt;/span&gt;        &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Execute(CodeActivityContext context)&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  39:  &lt;/span&gt;        {&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  40:  &lt;/span&gt;            var workspace = context.GetValue(&lt;span class="kwrd"&gt;this&lt;/span&gt;.Workspace);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  41:  &lt;/span&gt;            var imageFilePath = context.GetValue(&lt;span class="kwrd"&gt;this&lt;/span&gt;.ImageFilePath);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  42:  &lt;/span&gt;            var sourceImageFilePath = context.GetValue(&lt;span class="kwrd"&gt;this&lt;/span&gt;.SourceImageFilePath);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  43:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  44:  &lt;/span&gt;            &lt;span class="rem"&gt;//Get the file that matches the server item&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  45:  &lt;/span&gt;            var sourceFilePath = workspace.GetLocalItemForServerItem(sourceImageFilePath);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  46:  &lt;/span&gt;            var filePath = workspace.GetLocalItemForServerItem(imageFilePath);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  47:  &lt;/span&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (!&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrWhiteSpace(filePath) &amp;amp;&amp;amp; !&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrWhiteSpace(sourceFilePath))&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  48:  &lt;/span&gt;            {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  49:  &lt;/span&gt;                workspace.PendEdit(filePath);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  50:  &lt;/span&gt;                context.TrackBuildMessage(&lt;span class="str"&gt;&amp;quot;Updating Image File&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  51:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  52:  &lt;/span&gt;                Color color = Color.Black;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  53:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  54:  &lt;/span&gt;                &lt;span class="kwrd"&gt;using&lt;/span&gt; (Image img = Image.FromFile(sourceFilePath))&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  55:  &lt;/span&gt;                &lt;span class="kwrd"&gt;using&lt;/span&gt; (Graphics gr = Graphics.FromImage(img))&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  56:  &lt;/span&gt;                &lt;span class="kwrd"&gt;using&lt;/span&gt; (Font font = &lt;span class="kwrd"&gt;new&lt;/span&gt; Font(&lt;span class="str"&gt;&amp;quot;Calibri&amp;quot;&lt;/span&gt;, 14f, FontStyle.Bold))&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  57:  &lt;/span&gt;                &lt;span class="kwrd"&gt;using&lt;/span&gt; (StringFormat stringFormat = &lt;span class="kwrd"&gt;new&lt;/span&gt; StringFormat())&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  58:  &lt;/span&gt;                {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  59:  &lt;/span&gt;                    stringFormat.Alignment = StringAlignment.Far;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  60:  &lt;/span&gt;                    stringFormat.LineAlignment = StringAlignment.Center;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  61:  &lt;/span&gt;                    gr.SmoothingMode = SmoothingMode.AntiAlias;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  62:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  63:  &lt;/span&gt;                    &lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  64:  &lt;/span&gt;                    gr.DrawString(DateTime.Now.ToLongDateString(), font, &lt;span class="kwrd"&gt;new&lt;/span&gt; SolidBrush(color), 10f, 10f, stringFormat);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  65:  &lt;/span&gt;                    img.Save(filePath, ImageFormat.Png);&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  66:  &lt;/span&gt;                }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  67:  &lt;/span&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  68:  &lt;/span&gt;                workspace.CheckIn(workspace.GetPendingChanges(), &lt;span class="kwrd"&gt;null&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;***NO_CI***&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;, &lt;span class="kwrd"&gt;new&lt;/span&gt; PolicyOverrideInfo(&lt;span class="str"&gt;&amp;quot;Auto checkin&amp;quot;&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;), CheckinOptions.SuppressEvent);&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  69:  &lt;/span&gt;            }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  70:  &lt;/span&gt;        }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;span class="lnum"&gt;  71:  &lt;/span&gt;    }&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="lnum"&gt;  72:  &lt;/span&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-4799387747175414672?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/4799387747175414672/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=4799387747175414672' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/4799387747175414672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/4799387747175414672'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/06/atlanta-code-camp-slides-and-sample.html' title='Atlanta Code Camp slides and sample code'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-859784803337827536</id><published>2011-06-24T13:50:00.001-04:00</published><updated>2011-06-24T13:51:25.471-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='MTM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><category scheme='http://www.blogger.com/atom/ns#' term='Scrum'/><category scheme='http://www.blogger.com/atom/ns#' term='Code Camp'/><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><title type='text'>Speaking at Atlanta Code Camp</title><content type='html'>&lt;p&gt;Tomorrow I will speak at &lt;a href="http://www.atlantacodecamp.org/"&gt;Atlanta Code Camp&lt;/a&gt;.&amp;#160; I have 3 presentations scheduled:&lt;/p&gt;  &lt;p&gt;10:50 am: &lt;strong&gt;Testing with Microsoft Test Manager in TFS&lt;/strong&gt;&amp;#160; - A look at the new testing features found in Microsoft Test Manager 2010 and how they work together with TFS and Visual Studio to bring application testing to a new level. We will cover manual and automated testing.&lt;/p&gt;  &lt;p&gt;1:10 pm: &lt;strong&gt;Continuous Integration with TFS - &lt;/strong&gt;Learn the Ins and Outs of TFS Team Build, starting with Build Controllers and Agents and then all the way through to the new Workflow-based templates. We will go over how to create custom activities, and much more in order to take full advantage of TFS's powerful build system and empower your team.&lt;/p&gt;  &lt;p&gt;3:50 pm: &lt;strong&gt;Succeeding with SCRUM - &lt;/strong&gt;Scrum is not a new concept but it has gained a lot of popularity in the last few years. It is a very powerful agile project management methodology that, when used correctly, can help your team deliver better software faster than before. We will start with a brief overview of the process and look at some techniques and tools that will help you succeed, as well as common pitfalls that you should avoid. Come prepared for an interactive session where you will be encouraged to share your experiences with Scrum.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;So overall, it will be a pretty busy day.&amp;#160; If you are at the event and come to one of my talks, I hope that you get a lot out of them and you are able to go back to work on Monday and put some of it to practice.&amp;#160; &lt;/p&gt;  &lt;p&gt;This will be my first event as part of the &lt;a href="http://www.telerik.com/community/insiders.aspx"&gt;Telerik Insider&lt;/a&gt; program, so I will have some Telerik licenses to give away during my talks!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-859784803337827536?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/859784803337827536/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=859784803337827536' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/859784803337827536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/859784803337827536'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/06/speaking-at-atlanta-code-camp.html' title='Speaking at Atlanta Code Camp'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-1626751050647110960</id><published>2011-06-16T17:11:00.001-04:00</published><updated>2011-06-16T17:11:24.015-04:00</updated><title type='text'>TF203071: Error when branching a nested branch</title><content type='html'>&lt;p&gt;TFS 2010 does not support branching a folder that contains child branches in it, and it will give you this error: “TF203071: The operation cannot be completed because the source folder that you specified contains a branch”.&lt;/p&gt;  &lt;p&gt;The cause for this is the new branch visualization features.&amp;#160; To work around this, you’ll need to turn the branch back to a regular folder (the underlying branch doesn’t go away): &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Select your child branch&lt;/li&gt;    &lt;li&gt;Go to File –&amp;gt; Source Control –&amp;gt; Branching and Merging –&amp;gt; Convert to Folder&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;This turns the branch back to the “old-style”, which does not support visualization.&amp;#160; But you gain the ability to branch a folder with child branches.&amp;#160; Hopefully they will fix this in the next release.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-1626751050647110960?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/1626751050647110960/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=1626751050647110960' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/1626751050647110960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/1626751050647110960'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/06/tf203071-error-when-branching-nested.html' title='TF203071: Error when branching a nested branch'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-3585911781042373341</id><published>2011-06-14T18:08:00.001-04:00</published><updated>2011-06-14T18:11:03.363-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><title type='text'>Installing TFS Basic on my laptop</title><content type='html'>&lt;p&gt;I just installed TFS Basic on my laptop.&amp;#160; I’m amazed at how much better the install experience for TFS has become.&amp;#160; It pretty much went from non-existed in 2005, to a lot better in 2008, to super simple in 2010, and the fact that i can now install on my 64-bit laptop with SQL Express is an added bonus.&amp;#160; I remember spending a whole week with &lt;a href="http://thisthattechnology.blogspot.com/"&gt;Marius&lt;/a&gt; back in TFS 2005 Beta (with multiple uninstalls) before we got it working!&lt;/p&gt;  &lt;p&gt;I’ve done 5 or 6 TFS 2010 installs on production servers, but this was my first time installing it locally.&amp;#160; Some things to note:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The installation process is the same than it was when i ran it on the server&lt;/li&gt;    &lt;li&gt;After installing, the configuration screen came up and that’s where I chose to go the “Basic” route&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Basic means that you get everything except for reporting services and SharePoint&lt;/li&gt;      &lt;li&gt;You don’t need full SQL Server, you can install Basic with SQL Express&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;I didn’t have IIS configured on this laptop (i know…OMG!), and the configuration tool installed and configured it for me.&amp;#160; That step took the longest.&lt;/li&gt;    &lt;li&gt;I had an issue connecting to SQL Server: My login didn’t have access and I forgot the SA password.&amp;#160; But never fear, &lt;a href="http://mikeycooper.blogspot.com/"&gt;Mikey&lt;/a&gt; came to the rescue:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Run the SQL Server service in single-user mode (add a –m to the startup parameters of the service)&lt;/li&gt;      &lt;li&gt;Now i can connect to SQL Server as long as I am on the Administrator group for my machine&lt;/li&gt;      &lt;li&gt;Added my account to logins&lt;/li&gt;      &lt;li&gt;Restart SQL Server service, by taking it out of single-user mode&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Installation took about 25 minutes, the IIS part took about 8&lt;/li&gt;    &lt;li&gt;There is no loss of functionality when it comes to Work items, builds, and source control&lt;/li&gt;    &lt;li&gt;Once I was done configuring TFS, I went through the Build Service configuration right from the Admin Console&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;It’s great when things just work on the first try!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-E7zYKl8J6cI/TffbwKyyDwI/AAAAAAAAANA/-HsfEnzGKdk/s1600-h/image%25255B3%25255D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-0aF7he9tyvg/Tffbw3ZAe0I/AAAAAAAAANE/t0RS7FDgjz0/image_thumb%25255B1%25255D.png?imgmax=800" width="474" height="362" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://lh5.ggpht.com/-KyVlmKJ028Y/TffbxCJZZgI/AAAAAAAAANI/YoE_PFx_FnM/s1600-h/image%25255B7%25255D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-3nXQANdqQSQ/TffbxfDG3II/AAAAAAAAANM/SXg0r7VT51g/image_thumb%25255B3%25255D.png?imgmax=800" width="377" height="90" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-3585911781042373341?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/3585911781042373341/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=3585911781042373341' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/3585911781042373341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/3585911781042373341'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/06/installing-tfs-basic-on-my-laptop.html' title='Installing TFS Basic on my laptop'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/-0aF7he9tyvg/Tffbw3ZAe0I/AAAAAAAAANE/t0RS7FDgjz0/s72-c/image_thumb%25255B1%25255D.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-4360468739875990511</id><published>2011-06-07T17:12:00.001-04:00</published><updated>2011-06-07T17:12:48.180-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='MTM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><category scheme='http://www.blogger.com/atom/ns#' term='Scrum'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><title type='text'>Summer of TFS &amp; ALM</title><content type='html'>&lt;p&gt;It has been one of my busiest TFS-focused time in a while.&amp;#160; I did a TFS Continuous Integration talk at &lt;a href="http://estebanfg.blogspot.com/2011/05/continuous-integration-tfs-barcamp.html"&gt;BarCamp Sarasota at the end of April&lt;/a&gt;, then a Microsoft Test Manager talk at &lt;a href="http://estebanfg.blogspot.com/2011/05/microsoft-test-manager-presentation.html"&gt;OPASS in May&lt;/a&gt;.&amp;#160; This month, I’m heading up to &lt;a href="http://www.atlantacodecamp.org/default.aspx"&gt;Atlanta Code Camp&lt;/a&gt; on June 25th to do an ALM and/or TFS talk (I’ll know in a few days).&amp;#160; Then a break in July followed by &lt;a href="http://www.devlink.net/"&gt;DevLink&lt;/a&gt; in August (“Continuous Integration with TFS” and “Succeeding with Scrum”) and then most likely &lt;a href="http://www.jaxcodecamp.com/"&gt;Jax Code Camp&lt;/a&gt; at the end of August.&amp;#160; &lt;/p&gt;  &lt;p&gt;Busy and Fun times ahead!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-4360468739875990511?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/4360468739875990511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=4360468739875990511' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/4360468739875990511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/4360468739875990511'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/06/summer-of-tfs-alm.html' title='Summer of TFS &amp;amp; ALM'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-4951069353708473472</id><published>2011-06-07T16:45:00.001-04:00</published><updated>2011-06-07T16:45:21.783-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ONETUG'/><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><title type='text'>Busy month ahead at ONETUG!</title><content type='html'>&lt;p&gt;As you can see &lt;a href="http://us1.campaign-archive2.com/?u=64977fc747ab0f2cbb5429a9a&amp;amp;id=c438c19d56"&gt;here&lt;/a&gt;, we have a ton of stuff going on here in the Orlando .NET community this coming month: &lt;a title="http://us1.campaign-archive2.com/?u=64977fc747ab0f2cbb5429a9a&amp;amp;id=c438c19d56" href="http://us1.campaign-archive2.com/?u=64977fc747ab0f2cbb5429a9a&amp;amp;id=c438c19d56"&gt;http://us1.campaign-archive2.com/?u=64977fc747ab0f2cbb5429a9a&amp;amp;id=c438c19d56&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;This Thursday:      &lt;br /&gt;&lt;/strong&gt;Virtual Brown Bag Meeting – Web Matrix with Drew Robbins: &lt;a title="http://onetugwebmatrixvbb.eventbrite.com/" href="http://onetugwebmatrixvbb.eventbrite.com/"&gt;http://onetugwebmatrixvbb.eventbrite.com/&lt;/a&gt;    &lt;br /&gt;NerdDinner at Millennia Mall: &lt;a title="http://junenerddinner.eventbrite.com/" href="http://junenerddinner.eventbrite.com/"&gt;http://junenerddinner.eventbrite.com/&lt;/a&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Next Thursday:     &lt;br /&gt;&lt;/strong&gt;ONETUG Open Mic:&lt;strong&gt; &lt;/strong&gt;&lt;a title="http://onetugjunemeeting.eventbrite.com/" href="http://onetugjunemeeting.eventbrite.com/"&gt;&lt;strong&gt;http://onetugjunemeeting.eventbrite.com/&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;July 7th:     &lt;br /&gt;&lt;/strong&gt;John Papa’s Florida Tour: &lt;a title="http://onetugjulymeetingjohnpapa.eventbrite.com/" href="http://onetugjulymeetingjohnpapa.eventbrite.com/"&gt;http://onetugjulymeetingjohnpapa.eventbrite.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;August meeting:     &lt;br /&gt;&lt;/strong&gt;Joe Healy – Windows Phone “Mango” development&lt;/p&gt;  &lt;p&gt;Our team has been working really hard to bring the best content to our region and to keep building our community!&amp;#160; Come on out, meet your fellow developers!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-4951069353708473472?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/4951069353708473472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=4951069353708473472' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/4951069353708473472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/4951069353708473472'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/06/busy-month-ahead-at-onetug.html' title='Busy month ahead at ONETUG!'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-8737522796649469834</id><published>2011-05-31T09:22:00.001-04:00</published><updated>2011-05-31T09:22:43.003-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><title type='text'>I received a Microsoft Community Contributor Award</title><content type='html'>&lt;p&gt;Yesterday I received an email informing me that I received the a Microsoft Community Contributor Award for the contributions that I’ve made on the Visual Studio ALM MSDN forums.&amp;#160; I got this cool certificate:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-pY7zMYb20Gc/TeTroZqWfRI/AAAAAAAAAM4/_5fNPcMrZ_k/s1600-h/image%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-GmjPJWGE3rE/TeTrogjap5I/AAAAAAAAAM8/zY-143WuHZE/image_thumb%25255B1%25255D.png?imgmax=800" width="419" height="326" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And the logo that you now see on the right-pane.&amp;#160; I also got a subscription to &lt;a href="http://search.safaribooksonline.com/"&gt;Safari Books online&lt;/a&gt; which seems to have a ton of great titles!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-8737522796649469834?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/8737522796649469834/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=8737522796649469834' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/8737522796649469834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/8737522796649469834'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/05/i-received-microsoft-community.html' title='I received a Microsoft Community Contributor Award'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/-GmjPJWGE3rE/TeTrogjap5I/AAAAAAAAAM8/zY-143WuHZE/s72-c/image_thumb%25255B1%25255D.png?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-8004622237142663360</id><published>2011-05-20T14:32:00.001-04:00</published><updated>2011-05-20T14:32:00.248-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><category scheme='http://www.blogger.com/atom/ns#' term='Scrum'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><title type='text'>I joined the Telerik Insiders Program</title><content type='html'>&lt;p&gt;This week I joined the &lt;a href="http://www.telerik.com/community/insiders.aspx"&gt;Telerik Insiders Program&lt;/a&gt;.&amp;#160; I am really excited about this as it will allow me to go around and speak at a lot more events and spread the word on Visual Studio ALM, TFS, and Agile (Scrum) methodologies.&amp;#160; I am really grateful to &lt;a href="http://www.telerik.com/"&gt;Telerik&lt;/a&gt; for selecting me and for what they are doing for the software development community.&amp;#160; &lt;/p&gt;  &lt;p&gt;For those of you looking for speakers at your event, here is their FAQ page: &lt;a title="http://www.telerik.com/community/insiders/insiders-faq.aspx" href="http://www.telerik.com/community/insiders/insiders-faq.aspx"&gt;http://www.telerik.com/community/insiders/insiders-faq.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;These are the 4 topics that I will be covering through the insiders program:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Continuous Integration with TFS&lt;/li&gt;    &lt;li&gt;A Lap Around TFS &lt;/li&gt;    &lt;li&gt;Succeeding with Scrum&lt;/li&gt;    &lt;li&gt;Testing with Visual Studio and Team Foundation Server&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-8004622237142663360?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/8004622237142663360/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=8004622237142663360' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/8004622237142663360'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/8004622237142663360'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/05/i-joined-telerik-insiders-program.html' title='I joined the Telerik Insiders Program'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-2112452948410900795</id><published>2011-05-18T13:24:00.001-04:00</published><updated>2011-05-18T13:24:40.168-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><title type='text'>TechEd Recap: FDN03 - The Future of Microsoft Visual Studio Application Lifecycle Management (Visual Studio vNext)</title><content type='html'>&lt;p&gt;I just watched the TechEd Session on the Future of VS ALM by Cameron Skinner and Brian Keller: &lt;a title="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/FDN03" href="http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/FDN03"&gt;http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/FDN03&lt;/a&gt;.&amp;#160; Here is a recap of what they talked about:&lt;/p&gt;  &lt;p&gt;- Since they released TFS in 2005, their main priority has been collaboration and they will continue down that path.&lt;/p&gt;  &lt;p&gt;- A project/system needs transparency in order to be able to make changes to the process, code, etc.&lt;/p&gt;  &lt;p&gt;- They talked about the Virtuous Cycle graph that they showed at the keynote.&amp;#160; Product Backlog –&amp;gt; Sprint –&amp;gt; Working software –&amp;gt; Ops Backlog –&amp;gt; Monitor –&amp;gt; Requirements –&amp;gt; Back to the beginning of the cycle.&lt;/p&gt;  &lt;p&gt;- IntelliTrace in Production: Historical debugging feature.&amp;#160; In the current release, you can capture Intellitrace in a debugging environment.&amp;#160; They are going to make the data “collectors” freely available in vNext so we can distribute them to as many servers as we want.&amp;#160; You can bind, start, stop intellitrace remotely from PowerShell.&amp;#160; This allows you to capture everything that is going on behind the scenes in your app in order to debug any issues.&amp;#160; I have not actively used IntelliTrace, but this is probably the push that I needed to check it out.&amp;#160; Like they said in the talk: “it’s like a VCR for your code”.&lt;/p&gt;  &lt;p&gt;- Product Backlog (Scrum/Agile): They are extending the Web Access portal to give you a lot more planning functionality with task board.&amp;#160; There are two new tabs to support agile development: boards and backlogs.&amp;#160; The backlog tab allows you to enter new stories, move them into a sprint, reprioritize items, view sprint velocity charts, view sprint backlog, break down a story into tasks, view team capacity.&amp;#160; Pretty much everything that you need in order to manage your sprint.&amp;#160; The board tab allows you to move tasks from one state to another, and re-assign tasks. This is a really good tool for your daily Scrum/Stand-up meetings.   &lt;br /&gt;What I really like about this is that it’s using real-time data and you don’t have to wait for the Analysis Services database to be updated.&lt;/p&gt;  &lt;p&gt;- New “My Work” tab: There is a new “suspend” functionality that works alongside the current “shelve” feature in TFS.&amp;#160; Not only does it save your code, but it also saves all your Visual Studio configuration, resets your screens, breakpoints, etc.&amp;#160; So it takes you back to where you were (or as close to that) as soon as possible.&lt;/p&gt;  &lt;p&gt;- They added a “Team Navigator” tab, that seems to be supplementing (not replacing) Team Explorer.&amp;#160; From there, you can go to “My Work”, “Work Items”, “Source”, “Builds”, “Reports”, “Documentation”.&amp;#160; So most of what you can do from Team Explorer, just a different way to do it.&amp;#160; The interface to check-in pending changes looks like it also got a facelift.&lt;/p&gt;  &lt;p&gt;- Analysis: New “Analyze Solution for Code Clones”.&amp;#160; It gives you a way to see how much “copy/paste” exists in your application.&amp;#160; It looks for “semantically similar or identical code”.&amp;#160; It gives you a way to find places in your code that can be refactored.&amp;#160; You can also select a block of code and search for the same pattern.&amp;#160; You get “exact”, “strong”, and “medium” matches.&lt;/p&gt;  &lt;p&gt;- Unit testing – They are allowing you to integrate nUnit, xUnit, and other unit testing tools with the product.&amp;#160; So you are no longer just limited to MSTest.&amp;#160; So this means that your test results for all your testing frameworks will be bundled together and the user experience will be the same for all the tools.&lt;/p&gt;  &lt;p&gt;- Work Item search: They added a search toolbar on the Team Navigator tab.&amp;#160; Currently it is not very easy to search through Work Items within Visual Studio.&lt;/p&gt;  &lt;p&gt;- Code Review Tool: They added a code review feature in Team Navigator.&amp;#160; It creates a shelveset and a code review request is sent to the reviewer.&amp;#160; When the review is accepted, the reviewer will view notes, code differences.&amp;#160; Comments can be associated with a specific line of code, similar to the Comments that you get in Word when you turn on change tracking.&lt;/p&gt;  &lt;p&gt;- New diff tool – Color-coded diff tool.&amp;#160; It is much better than what ships with Visual Studio at the moment.&lt;/p&gt;  &lt;p&gt;- Stakeholder Feedback tool – They are extending the testing tab that you currently get when testing to Microsoft Test Manager so that it logs everything that you do in an application.&amp;#160; A Stakeholder can capture notes, screenshots, notes, etc.&amp;#160; Under the covers, it is doing an action recording just like MTM does.&amp;#160; This allows you to create a test case later.&amp;#160; It records audio and video so you can later listen to the conversation from the stakeholder or tester.&lt;/p&gt;  &lt;p&gt;Overall some very impressive changes.&amp;#160; It’s great to see such polished features this far ahead of their release.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-2112452948410900795?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/2112452948410900795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=2112452948410900795' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/2112452948410900795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/2112452948410900795'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/05/teched-recap-fdn03-future-of-microsoft.html' title='TechEd Recap: FDN03 - The Future of Microsoft Visual Studio Application Lifecycle Management (Visual Studio vNext)'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-2640838360624994014</id><published>2011-05-16T23:26:00.001-04:00</published><updated>2011-05-16T23:26:03.034-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><category scheme='http://www.blogger.com/atom/ns#' term='Scrum'/><title type='text'>TechEd - Visual Studio vNext announcements</title><content type='html'>&lt;p&gt;TechEd 2011 is going on right now in Atlanta.&amp;#160; Unfortunately I wasn’t able to make it up there this year, so I’m catching some of it online.&amp;#160; There were some interesting announcements during the keynote today surrounding Visual Studio and TFS as they showed Visual Studio vNext (2012?) functionality.&amp;#160; The keynote can be accessed here: &lt;a title="http://www.studiosevent.com/newscenter/?id=teched110516?contentID=" href="http://www.studiosevent.com/newscenter/?id=teched110516?contentID"&gt;http://www.studiosevent.com/newscenter/?id=teched110516?contentID=&lt;/a&gt;, and you can catch other content here: &lt;a title="http://northamerica.msteched.com/?fbid=h0s3uc4omfT" href="http://northamerica.msteched.com/?fbid=h0s3uc4omfT"&gt;http://northamerica.msteched.com/?fbid=h0s3uc4omfT&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Some of the highlights:&lt;/p&gt;  &lt;p&gt;- They are brining IT/Operations closer to development with this release.&amp;#160; 2010 brought Architects, testers, and project managers into the team, so the next version will go one step further.&amp;#160; Again, they are focusing on collaboration and integration to bring everyone together under one system rather than having everyone working with disparate systems. So vNext has a lot of new features focusing on Stakeholders and operations.&lt;/p&gt;  &lt;p&gt;- They showed some great improvements to TFS Web Access interface.&amp;#160; Up to now, it’s mostly a portal where you can go look for data.&amp;#160; Yes, there is some functionality as you can create new tasks and such, but if you have the option between Team Explorer and the Web Interface, you’d most likely stick with Team Explorer.&amp;#160; For vNext, they are adding backlog functionality that will help during sprint planning and execution.&amp;#160; It looks similar to the functionality that they added in the Excel templates in TFS 2010, but with much better user experience.&amp;#160; They also added a task board which seems to work pretty well for something that is not even in CTP yet.&amp;#160;&amp;#160; One thing I really liked is that the burn-down chart gets updated as you change your task board.&amp;#160; Currently you have to wait until the cube processes as the data is pulled from Analysis Services.&amp;#160; It looks like the Scrum community will be very-well served by the next release!&lt;/p&gt;  &lt;p&gt;- Storyboarding tool: They added a plugin for Powerpoint that allows a stakeholder to mockup screens.&amp;#160; It’s almost like Sketchflow, but for non-technical people.&amp;#160; A lot of the mockups that I get are already done in PowerPoint or Excel, so this seems like a good place to start, and it will definitely be better than bad drawings.&amp;#160; Once the mock-ups make it to the developers, you can associate them to the TFS tasks (since the PowerPoint mockups would be saved in SharePoint).&amp;#160; So this gets everyone a little closer than before and keeps all information in one centralized place, so it will allow faster feedback between devs and product owner.&lt;/p&gt;  &lt;p&gt;- On the Operations side, they added a Connector that integrates TFS with System Center Operations Manager.&amp;#160; So you are able to generate bugs and send all the information (such as call stack, dumps, etc) into TFS when an issue is found.&lt;/p&gt;  &lt;p&gt;Microsoft has been trying to bring teams together with TFS since it came out in 2005.&amp;#160; They brought Dev and QA closer with TFS 2010 and now vNext will bring Operations and Engineering teams together.&amp;#160; I can’t wait to get my hands on this!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-2640838360624994014?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/2640838360624994014/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=2640838360624994014' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/2640838360624994014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/2640838360624994014'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/05/teched-visual-studio-vnext.html' title='TechEd - Visual Studio vNext announcements'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-4688870848813980712</id><published>2011-05-11T13:41:00.001-04:00</published><updated>2011-05-11T13:41:20.753-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='MTM'/><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><title type='text'>Microsoft Test Manager presentation</title><content type='html'>&lt;p&gt;Last night I presented an intro to Microsoft Test Manager at the local SQL Group (&lt;a href="http://www.opass.org"&gt;OPASS&lt;/a&gt;).&amp;#160; It was a really good crowd of about 45 people and they seemed to really enjoy the presentation.&amp;#160; There were a couple of shorter presentations before mine, one by Idera on SQL Doctor, and one by Plamev Ratchev (local SQL MVP) on SQL Server vNext.&amp;#160; There were a mix of devs, DBA’s, PM’s and QA people in the audience.&amp;#160; I had a lot of good feedback from a John, a QA person that has used both HP and Microsoft tools.&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;You can download my slides here: &lt;a href="http://www.slideshare.net/EstebanFG/opass-microsoft-test-manager"&gt;SlideShare&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-4688870848813980712?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/4688870848813980712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=4688870848813980712' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/4688870848813980712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/4688870848813980712'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/05/microsoft-test-manager-presentation.html' title='Microsoft Test Manager presentation'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-858285231425242367</id><published>2011-05-09T10:02:00.001-04:00</published><updated>2011-05-09T10:02:42.588-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='MTM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><title type='text'>Presenting Microsoft Test Manager at OPASS Tomorrow</title><content type='html'>&lt;p&gt;I am speaking at OPASS (Orlando SQL Group) tomorrow in Lake Mary.&amp;#160; I am talking about testing with Microsoft Test Manager.&amp;#160; &lt;/p&gt;  &lt;p&gt;What to expect:&lt;/p&gt;  &lt;p&gt;- Intro to TFS    &lt;br /&gt;- Intro to Microsoft Test Manager     &lt;br /&gt;- Creating Manual Test Cases     &lt;br /&gt;- Running Manual Test Cases     &lt;br /&gt;- Data-driving your test cases     &lt;br /&gt;- Analyzing test results     &lt;br /&gt;- Coded UI Tests     &lt;br /&gt;- Adding Coded UI Tests to your nightly build&lt;/p&gt;  &lt;p&gt;There’s a lot to cover and I’m hoping that people that come out get a lot out of it.&amp;#160; I hear that there’s a really good turn-out expected.&amp;#160; The venue has been moved to &lt;strong&gt;Hampton Inn (&lt;/strong&gt;850 Village Oak Lane, Lake Mary, FL 32746).&amp;#160; &lt;/p&gt;  &lt;p&gt;You can register here: &lt;a title="http://opassmay2011.eventbrite.com/" href="http://opassmay2011.eventbrite.com/"&gt;http://opassmay2011.eventbrite.com/&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-858285231425242367?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/858285231425242367/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=858285231425242367' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/858285231425242367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/858285231425242367'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/05/presenting-microsoft-test-manager-at.html' title='Presenting Microsoft Test Manager at OPASS Tomorrow'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-6662994216653458456</id><published>2011-05-02T00:39:00.001-04:00</published><updated>2011-05-02T00:39:53.650-04:00</updated><title type='text'>Continuous Integration &amp; TFS @ BarCamp Sarasota</title><content type='html'>&lt;blockquote&gt;   &lt;p&gt;&lt;img src="http://platform.ak.fbcdn.net/www/app_full_proxy.php?app=4949752878&amp;amp;v=1&amp;amp;size=o&amp;amp;cksum=c86a858ab833a9a57b3e633815ecff12&amp;amp;src=http%3A%2F%2Fphotos1.meetupstatic.com%2Fphotos%2Fevent%2F5%2F5%2F9%2Ff%2Fglobal_21681919.jpeg" width="194" height="173" /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;img border="0" alt="[clip_image002[4].jpg]" src="http://lh6.ggpht.com/_4X_zNPuy6C8/TYPDbHluVLI/AAAAAAAAAKU/E6RO9cqgMd4/s1600/clip_image002%5B4%5D.jpg" width="237" height="177" /&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This weekend I did a talk at &lt;a href="http://bcsrq.com/"&gt;BarCamp Sarasota&lt;/a&gt; where I introduced the concept of Continuous Integration and how to set it up with TFS 2010.&amp;#160; It was interesting as it was a mixed audience of about 50% Microsoft devs and 50% of other technologies.&amp;#160; I’m used to presenting to a mostly Microsoft crowd.&amp;#160; The talk went well and people seemed pretty receptive to it and saw the benefit of doing CI builds and setting them up properly. &lt;/p&gt;  &lt;p&gt;Here are my slides: &lt;a title="http://www.slideshare.net/EstebanFG/tfs-build-continuous-integration" href="http://www.slideshare.net/EstebanFG/tfs-build-continuous-integration"&gt;http://www.slideshare.net/EstebanFG/tfs-build-continuous-integration&lt;/a&gt;.&amp;#160;&amp;#160; I didn’t really do any customizations since it was a 1/2 hour talk, so there’s no code to show.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;This was a really well-run event, it was my first BarCamp and it is a very interesting concept.&amp;#160; There was a ton of networking and interesting conversations going on.&amp;#160; &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-6662994216653458456?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/6662994216653458456/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=6662994216653458456' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/6662994216653458456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/6662994216653458456'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/05/continuous-integration-tfs-barcamp.html' title='Continuous Integration &amp;amp; TFS @ BarCamp Sarasota'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_4X_zNPuy6C8/TYPDbHluVLI/AAAAAAAAAKU/E6RO9cqgMd4/s72-c/clip_image002%5B4%5D.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-679944887434892232</id><published>2011-04-29T11:14:00.001-04:00</published><updated>2011-04-29T11:14:40.625-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><title type='text'>BarCamp Sarasota</title><content type='html'>&lt;p&gt;I will be at &lt;a href="http://bcsrq.com/"&gt;Barcamp Sarasota&lt;/a&gt; this weekend.&amp;#160; If anyone wants to talk ALM, TFS, Scrum come by and say hi.&amp;#160;&amp;#160; It will be a great event and I’m looking forward to going back home for a few days!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-679944887434892232?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/679944887434892232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=679944887434892232' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/679944887434892232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/679944887434892232'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/04/barcamp-sarasota.html' title='BarCamp Sarasota'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-3458631515007705883</id><published>2011-04-22T12:37:00.001-04:00</published><updated>2011-04-22T12:37:07.073-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Build'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>Build Failure: Microsoft.Silverlight.Common.targets (104): The Silverlight 4 SDK is not installed.</title><content type='html'>&lt;p&gt;If you get this error trying to build your Silverlight application in TeamBuild: C:\Program Files (x86)\MSBuild\Microsoft\Silverlight\v4.0\Microsoft.Silverlight.Common.targets (104): The Silverlight 4 SDK is not installed, and you know that you have it installed on your build machine, don’t panic.&amp;#160; There is an easy solution to this:&lt;/p&gt;  &lt;p&gt;Go to your build definition, select the “Process” tab, and under “Advanced” change the value for MSBuild platform from “Auto” to X86&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_4X_zNPuy6C8/TbGurP83F8I/AAAAAAAAAMY/9ko57YijvBU/s1600-h/image%5B7%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_4X_zNPuy6C8/TbGurShpj4I/AAAAAAAAAMc/e9TfhtWpJGY/image_thumb%5B3%5D.png?imgmax=800" width="537" height="62" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This happens when you are running your builds on a 64-bit build server.&amp;#160; The reason for this is that the Silverlight SDK seems to have trouble compiling under a 64-bit environment, and your 64-bit build server will try to use those settings when you set it to “Auto”. &lt;/p&gt;  &lt;p&gt;This will turn your build from &lt;a href="http://lh3.ggpht.com/_4X_zNPuy6C8/TbGurk_TzaI/AAAAAAAAAMg/ONIgqDNtNps/s1600-h/image%5B10%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_4X_zNPuy6C8/TbGusBmDjLI/AAAAAAAAAMk/hOjyrNUaLV0/image_thumb%5B4%5D.png?imgmax=800" width="27" height="28" /&gt;&lt;/a&gt;&amp;#160; to &lt;a href="http://lh3.ggpht.com/_4X_zNPuy6C8/TbGusZzch3I/AAAAAAAAAMo/DQaf9ke09V0/s1600-h/image%5B13%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_4X_zNPuy6C8/TbGuspIIsxI/AAAAAAAAAMs/ROqaOaRLPo0/image_thumb%5B5%5D.png?imgmax=800" width="29" height="31" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-3458631515007705883?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/3458631515007705883/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=3458631515007705883' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/3458631515007705883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/3458631515007705883'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/04/build-failure-microsoftsilverlightcommo.html' title='Build Failure: Microsoft.Silverlight.Common.targets (104): The Silverlight 4 SDK is not installed.'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_4X_zNPuy6C8/TbGurShpj4I/AAAAAAAAAMc/e9TfhtWpJGY/s72-c/image_thumb%5B3%5D.png?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-777507581730554087</id><published>2011-04-20T13:23:00.001-04:00</published><updated>2011-04-20T13:23:12.024-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='MTM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><category scheme='http://www.blogger.com/atom/ns#' term='Scrum'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><title type='text'>Hitting the road–busy month ahead!</title><content type='html'>&lt;p&gt;This month I’ll be on the road quite a bit talking about TFS and ALM concepts.&amp;#160; This is where you can find me:&lt;/p&gt;  &lt;p&gt;April 22nd: Seminole State College – Computer Programming Advisory Board&lt;/p&gt;  &lt;p&gt;April 30th: BarCamp Sarasota -&amp;#160; &lt;a title="http://bcsrq.com/" href="http://bcsrq.com/"&gt;http://bcsrq.com/&lt;/a&gt;    &lt;br /&gt;I will be talking about Continuous Integration with TFS (Team Build).&amp;#160; I’d also like to get involved in discussions around agile project management(Scrum specifically), SDLC best practices, and community projects.&lt;/p&gt;  &lt;p&gt;May 10th: OPASS (Orlando SQL Server Users Group) – &lt;a title="http://orlando.sqlpass.org/" href="http://orlando.sqlpass.org/"&gt;http://orlando.sqlpass.org/&lt;/a&gt;    &lt;br /&gt;I will be giving a Lap around TFS and Microsoft Test Manager&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-777507581730554087?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/777507581730554087/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=777507581730554087' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/777507581730554087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/777507581730554087'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/04/hitting-roadbusy-month-ahead.html' title='Hitting the road–busy month ahead!'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-2323444995712947824</id><published>2011-04-19T08:16:00.000-04:00</published><updated>2011-04-19T09:16:58.461-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='MTM'/><title type='text'>Visual Studio ALM Hands-on Labs</title><content type='html'>&lt;p&gt;If you’ve heard about tools and features such as Microsoft Test Manager, Coded UI Tests, Project Planning, Intellitrace, Code Analysis, and Visual Studio Architecture tools, you should check out these hands-on labs published in MSDN.&amp;#160; They will give you a great overview of these features and hopefully show you the power of VS ALM tools: &lt;a title="http://msdn.microsoft.com/en-us/vs2010trainingcourse_alm_unit" href="http://msdn.microsoft.com/en-us/vs2010trainingcourse_alm_unit"&gt;http://msdn.microsoft.com/en-us/vs2010trainingcourse_alm_unit&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-2323444995712947824?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/2323444995712947824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=2323444995712947824' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/2323444995712947824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/2323444995712947824'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/04/visual-studio-alm-hands-on-labs.html' title='Visual Studio ALM Hands-on Labs'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-720703895367263122</id><published>2011-04-18T17:45:00.001-04:00</published><updated>2011-04-18T17:45:57.443-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scrum'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='WP7'/><title type='text'>New WP7 App: Scrummy</title><content type='html'>&lt;p&gt;Do you use Scrum?&amp;#160; Do you participate in Release and Sprint planning sessions?&amp;#160; Do you a a Windows Phone?&amp;#160;&amp;#160; If you said yes to all 3, then you are in luck!&amp;#160; If you answered no to any of those questions, then you really need to re-evaluate how you are getting your work done.&amp;#160; I hear that people that don’t like agile development also don’t like kittens and puppies.&lt;/p&gt;  &lt;p&gt;So for those of you who like Scrum as much as I do, I just released a new application to the Windows Phone Marketplace: Scrummy.&lt;/p&gt;  &lt;p&gt;What does it do?&amp;#160; It replaces your planning poker cards with an app that lets you pick your estimate using a variety of card types:&lt;/p&gt;  &lt;p&gt;- Sequential: 1,2,3,4,5,6,…   &lt;br /&gt;- Fibonacci: 1,2,3,5,8,11,…    &lt;br /&gt;- Doubles: 1,2,4,8,16,32,…    &lt;br /&gt;- Multiples 5,10,15,20,25,…    &lt;br /&gt;- Shirt Sizes: S, M, L, XL,…&lt;/p&gt;  &lt;p&gt;Here are some screenshots:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_4X_zNPuy6C8/TayxDcOlrHI/AAAAAAAAAL4/P2okD5QUv2M/s1600-h/Logo2.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Logo" border="0" alt="Logo" src="http://lh4.ggpht.com/_4X_zNPuy6C8/TayxDu5dDfI/AAAAAAAAAL8/FshI6rl2Ib4/Logo_thumb.png?imgmax=800" width="244" height="244" /&gt;&lt;/a&gt;&amp;#160; &lt;a href="http://lh3.ggpht.com/_4X_zNPuy6C8/TayxD6uHPdI/AAAAAAAAAMA/hRzE2n1fn3E/s1600-h/Main2.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Main" border="0" alt="Main" src="http://lh4.ggpht.com/_4X_zNPuy6C8/TayxEODjsaI/AAAAAAAAAME/puBSPYJ26a8/Main_thumb.png?imgmax=800" width="148" height="244" /&gt;&lt;/a&gt;&amp;#160;&lt;a href="http://lh5.ggpht.com/_4X_zNPuy6C8/TayxEaPXFUI/AAAAAAAAAMI/ergKW8LSlvg/s1600-h/Settings2.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="Settings" border="0" alt="Settings" src="http://lh5.ggpht.com/_4X_zNPuy6C8/TayxEv-W1uI/AAAAAAAAAMM/gQrHfTTnC5c/Settings_thumb.png?imgmax=800" width="148" height="244" /&gt;&lt;/a&gt;&amp;#160; &lt;a href="http://lh6.ggpht.com/_4X_zNPuy6C8/TayxExAueJI/AAAAAAAAAMQ/H0rtniuHWkc/s1600-h/About2.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="About" border="0" alt="About" src="http://lh3.ggpht.com/_4X_zNPuy6C8/TayxFAlaubI/AAAAAAAAAMU/_oxNG6iv0LA/About_thumb.png?imgmax=800" width="148" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You can download it here: &lt;a href="http://social.zune.net/redirect?type=phoneApp&amp;amp;id=26196907-7167-e011-81d2-78e7d1fa76f8"&gt;http://social.zune.net/redirect?type=phoneApp&amp;amp;id=26196907-7167-e011-81d2-78e7d1fa76f8&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I used &lt;a href="http://www.mindscapehq.com/products/phone-elements"&gt;Mindscape Phone Elements&lt;/a&gt; LoopingListBox to loop through all the values.&lt;/p&gt;  &lt;p&gt;I’m a ScrumMaster and I approve this app :)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-720703895367263122?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/720703895367263122/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=720703895367263122' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/720703895367263122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/720703895367263122'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/04/new-wp7-app-scrummy.html' title='New WP7 App: Scrummy'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_4X_zNPuy6C8/TayxDu5dDfI/AAAAAAAAAL8/FshI6rl2Ib4/s72-c/Logo_thumb.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-4056633608821595455</id><published>2011-04-14T22:28:00.001-04:00</published><updated>2011-04-14T22:28:33.967-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ONETUG'/><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><title type='text'>ONETUG Nerd Dinner</title><content type='html'>&lt;p&gt;Tonight we restarted our monthly &lt;a href="http://www.nerddinner.com/4510"&gt;Nerd Dinner&lt;/a&gt; events at the Millennia Mall food court.&amp;#160; It was a good group and we talked about a variety of topics: agile, RIA, Silverlight, WPF, Windows Phone, ORM’s.&amp;#160; It was 2 hours of geek topics with JT (the money man), Mitch (@mitchlabrador), John (@onefloridacoder), and Vish (his first ONETUG event was Code Camp and he won an XBox).&amp;#160; We even had a Lady Gaga moment at the end.&lt;/p&gt;  &lt;p&gt;It’s great to catch up with people in such a relaxed environment.&amp;#160; I look forward to the next one!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-4056633608821595455?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/4056633608821595455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=4056633608821595455' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/4056633608821595455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/4056633608821595455'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/04/onetug-nerd-dinner.html' title='ONETUG Nerd Dinner'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-2131812755530773699</id><published>2011-04-14T09:24:00.001-04:00</published><updated>2011-04-14T09:24:36.803-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WP7'/><title type='text'>Update to my WP7 app–Baby Time</title><content type='html'>&lt;p&gt;After a crazy busy beginning of the year (new baby, code camp), things are finally starting to go back to normal for me.&amp;#160; As I’m working through my backlog dating to late last year, the next item on my list was making some much needed upgrades to &lt;a href="http://social.zune.net/redirect?type=phoneApp&amp;amp;id=4ff1ef81-96d8-df11-a844-00237de2db9e"&gt;Baby Time&lt;/a&gt;, my pregnancy calendar app in the WP7 marketplace (I blogged about it &lt;a href="http://estebanfg.blogspot.com/2010/10/baby-time-my-first-entry-into-wp7.html"&gt;here&lt;/a&gt;).&amp;#160; I’ve had a lot more downloads than I expected and some of the reviews pointed out some big issues with the app.&amp;#160; I submitted my upgrade on Tuesday morning and by the end of the day, I received feedback with one issue from the certification process.&amp;#160; It had to do with tombstoning and recovering after opening a site on IE.&amp;#160; I fixed the issue and resubmitted on Tuesday night and within 24 hours, the app was approved and the upgrade is posted in the Marketplace.&amp;#160; You can download it here: &lt;a href="http://social.zune.net/redirect?type=phoneApp&amp;amp;id=4ff1ef81-96d8-df11-a844-00237de2db9e"&gt;http://social.zune.net/redirect?type=phoneApp&amp;amp;id=4ff1ef81-96d8-df11-a844-00237de2db9e&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;I have a couple of more apps in the backburner, which will deal with ALM stuff, hopefully coming soon.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-2131812755530773699?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/2131812755530773699/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=2131812755530773699' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/2131812755530773699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/2131812755530773699'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/04/update-to-my-wp7-appbaby-time.html' title='Update to my WP7 app–Baby Time'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-1323930713382820730</id><published>2011-04-12T07:54:00.000-04:00</published><updated>2011-04-12T10:55:21.976-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CI'/><category scheme='http://www.blogger.com/atom/ns#' term='Build'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><category scheme='http://www.blogger.com/atom/ns#' term='Code Camp'/><title type='text'>My Talk on Continuous Integration with TFS (including custom activities)</title><content type='html'>&lt;p&gt;About 2 weeks ago, I did a presentation at &lt;a href="http://www.orlandocodecamp.com/"&gt;Orlando Code Camp&lt;/a&gt;, titled “Continuous Integration with TFS”.&amp;#160; My goal was to show everyone how easy it is to get started with Team Build and how you can accomplish Continuous Integration out of the box, without any customizations.&amp;#160; Obviously, once you get your first taste of an automated build, you will want to customize it&amp;#160; and make it even more powerful for your team, so I also showed how to created custom build activities.&amp;#160; &lt;/p&gt;  &lt;p&gt;You can download the materials here: &lt;a title="http://www.orlandocodecamp.com/presentationpickupview.aspx" href="http://www.orlandocodecamp.com/presentationpickupview.aspx"&gt;http://www.orlandocodecamp.com/presentationpickupview.aspx&lt;/a&gt;.&amp;#160; &lt;/p&gt;  &lt;p&gt;I only have 4 slides (2 of them with useful info) since I spent most of my time showing the Controller, Agent, Build Definition, and code.&amp;#160; The code for my custom activity is also included.&amp;#160; The premise is that you have a WPF application, and every time you build, you want a timestamp to be printed on an image.&amp;#160; &lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-1323930713382820730?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/1323930713382820730/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=1323930713382820730' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/1323930713382820730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/1323930713382820730'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/04/my-talk-on-continuous-integration-with.html' title='My Talk on Continuous Integration with TFS (including custom activities)'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-1552261432869674705</id><published>2011-04-11T00:31:00.001-04:00</published><updated>2011-09-16T08:57:41.819-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Build'/><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><title type='text'>Using TFS Build Agents to your advantage</title><content type='html'>&lt;p&gt;As you may already know, TFS includes a very powerful build system called Team Build.&amp;#160; Having looked at a few different build systems in the past, I have yet to see one with as much power and flexibility as Team Build.&amp;#160; This being its third iterations (2005, 2008, and now 2010), it has grown a lot since it first came out.&amp;#160; A lot of its basic functionality, such as MSBuild integration, has not changed at all, but its moving pieces and configuration have changed drastically.&amp;#160; &lt;/p&gt;  &lt;p&gt;Today we are going to take a look at Build Agents and Build Controller.&amp;#160; Not much changed in the way that builds were executed through agents between TFS 2005 and 2008.&amp;#160; TFS 2010 introduced the concept of Build Controllers, which are responsible for managing one or more Build Agents in order to work through a build queue.&amp;#160; This illustration from MSDN describes the relationship between a Team Project Collection, a Build Controller, and a Build Agent:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_4X_zNPuy6C8/TaKEHvqQY7I/AAAAAAAAALg/Of-_t5CnbPY/s1600-h/IC292936%5B1%5D%5B4%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="IC292936[1]" border="0" alt="IC292936[1]" src="http://lh3.ggpht.com/_4X_zNPuy6C8/TaKEH3jRRnI/AAAAAAAAALk/CMK5-siLjIw/IC292936%5B1%5D_thumb%5B2%5D.png?imgmax=800" width="499" height="271" /&gt;&lt;/a&gt;     &lt;br /&gt;Source: &lt;a title="http://msdn.microsoft.com/en-us/library/dd793166.aspx" href="http://msdn.microsoft.com/en-us/library/dd793166.aspx"&gt;http://msdn.microsoft.com/en-us/library/dd793166.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The way it works is that a build controller is assigned to a &lt;a href="http://msdn.microsoft.com/en-us/library/dd236915.aspx"&gt;Team Project Collection&lt;/a&gt;.&amp;#160; If a new Team Project Collection is added to TFS, that collection, you would assign one or more controllers to it, but you cannot assign a controller to more than one collection.&amp;#160; The build controller can live on any machine, but it’s always a best practice to keep it on a separate machine than the TFS Server.&amp;#160; The Build Controller processes the defined workflow and then hands off the “heavy” work to the build agents, but the only one that communicates directly with TFS is the build controller.&amp;#160; You can have as many build agents assigned to a build controller (across as many machines as you’d like) and each build agent can only be assigned to one controller (again, no sharing).&lt;/p&gt;  &lt;p&gt;Ok, so now that you know all you ever need to know about controllers and agents, what is the best way to take advantage of this architecture?&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Use a specific agent for a build definition      &lt;br /&gt;&lt;/strong&gt;When you define a build, you can find the “Agent Settings” section under “Advanced”.&amp;#160; Under that section, you can specify which agent should run a build for that definition.&amp;#160; The property is “Name Filter” and it has an asterisk by default, which means that any available agent should be used, you can change that to any of the agents on the drop-down list”.&amp;#160;&amp;#160; This will ensure that only the selected agent will get picked for that build.&amp;#160; I’m not a huge fan of that setting since it can create a bottleneck, but it’s good to use in environments when only a specific agent has been setup to take care of a specialized activity.     &lt;br /&gt;&lt;a href="http://lh4.ggpht.com/_4X_zNPuy6C8/TaKEIHhpaII/AAAAAAAAALo/mtnDS5x42bI/s1600-h/image%5B7%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_4X_zNPuy6C8/TaKEIsb67dI/AAAAAAAAALs/6EBNVIqe5a0/image_thumb%5B3%5D.png?imgmax=800" width="482" height="93" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Use Tags to determine which agent to use      &lt;br /&gt;&lt;/strong&gt;Each build agent can be tagged with any combinations of keywords that make sense in your environment.&amp;#160; These tags can be used by the controller when deciding what agent a specific build should be sent to.&amp;#160; To get to the agent properties, you right-click on the “Builds” item in Team Explorer and select “Manage Build Controller”, select your agent and select “properties”.&amp;#160; On that screen you can add any tag that you’d like.     &lt;br /&gt;&lt;a href="http://lh3.ggpht.com/_4X_zNPuy6C8/TaKEJAzchQI/AAAAAAAAALw/iFjDYPoKuig/s1600-h/image%5B3%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_4X_zNPuy6C8/TaKEJtrnK3I/AAAAAAAAAL0/EIoMNuxouvw/image_thumb%5B1%5D.png?imgmax=800" width="381" height="367" /&gt;&lt;/a&gt;     &lt;br /&gt;In the sample above, I’ve selected the tags “Silverlight” and “x86” for my agent “Test”.&amp;#160; These tags don’t have any logic behind them, they are just metadata and I can choose any meaning for them.&amp;#160; In this specific scenario, it means that my agent has all the required bits to be able to compile a Silverlight application and that it is running on an 32-bit build machine.&amp;#160; Looking at the previous image, we can see that we have 2 properties on our build definition that relate to this:     &lt;br /&gt;- Tag Comparison Operator: Can be set to “MatchExactly” or “MatchAtLeast”     &lt;br /&gt;- Tag Filter: List of Tags that should be used when finding an agent     &lt;br /&gt;These two properties work together to figure out which agent to use.&amp;#160; This can be a very powerful way to balance the load between all my agents in order to not create a bottleneck and at the same time make sure that the right software is installed on the machine hosting the agent in order to guarantee a good build.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Build in Parallel      &lt;br /&gt;&lt;/strong&gt;If your build requires that you build across multiple platforms (x86/x64) or configurations (Release/Debug), you can parallelize your build and take advantage of idle build agents.&amp;#160; There’s a great post on it here: &lt;a title="http://blogs.msdn.com/b/jimlamb/archive/2010/09/14/parallelized-builds-with-tfs2010.aspx" href="http://blogs.msdn.com/b/jimlamb/archive/2010/09/14/parallelized-builds-with-tfs2010.aspx"&gt;http://blogs.msdn.com/b/jimlamb/archive/2010/09/14/parallelized-builds-with-tfs2010.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now that you have these tools available in TFS 2010, use them to your advantage to speed up your builds or make them a lot more powerful than they were before.&amp;#160; As you outgrow your current agent setup, re-think your configuration and add/remove hardware as needed.&amp;#160; Make use of virtualization as much as you can, as these agents should be easy to swap in and out of rotation. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-1552261432869674705?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/1552261432869674705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=1552261432869674705' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/1552261432869674705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/1552261432869674705'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/04/using-tfs-build-agents-to-your.html' title='Using TFS Build Agents to your advantage'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_4X_zNPuy6C8/TaKEH3jRRnI/AAAAAAAAALk/CMK5-siLjIw/s72-c/IC292936%5B1%5D_thumb%5B2%5D.png?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-967880933405105977</id><published>2011-04-06T08:07:00.001-04:00</published><updated>2011-04-06T08:07:03.513-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>TFS Reports – Tfs_Warehouse database</title><content type='html'>&lt;p&gt;When TFS 2010 was released, the TFS database structure was changed to accommodate the new concept of Collections.&amp;#160; They also changed the warehouse database – the place where data from project collections is gathered (and optimized for reporting).&amp;#160;&amp;#160; That database houses the data the will later be processed into the Analysis Services cube.&amp;#160; &lt;/p&gt;  &lt;p&gt;If you upgraded from TFS 2008 to 2010, you will now have 2 similar (but very different databases): Tfs_Warehouse and TfsWarehouse (without the underscore).&amp;#160; TfsWarehouse was used by 2008 and is no longer used by 2010.&amp;#160;&amp;#160; Any data in that database is stale as of the moment that you upgraded TFS.&amp;#160; If you have any reports that read data from the warehouse, you should point them to Tfs_Warehouse. &lt;/p&gt;  &lt;p&gt;Unfortunately, some of the MSDN documentation does not reflect this.&amp;#160; Today as I was refreshing my memory on reports, I ran into this: &lt;a title="http://msdn.microsoft.com/en-us/library/bb649551(v=VS.100).aspx" href="http://msdn.microsoft.com/en-us/library/bb649551(v=VS.100).aspx"&gt;http://msdn.microsoft.com/en-us/library/bb649551(v=VS.100).aspx&lt;/a&gt;.&amp;#160; It shows this query:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; Person.Person, [&lt;span class="kwrd"&gt;Work&lt;/span&gt; Item].System_State
&lt;span class="kwrd"&gt;FROM&lt;/span&gt;   [&lt;span class="kwrd"&gt;Current&lt;/span&gt; &lt;span class="kwrd"&gt;Work&lt;/span&gt; Item] &lt;span class="kwrd"&gt;INNER&lt;/span&gt; &lt;span class="kwrd"&gt;JOIN&lt;/span&gt;
       [&lt;span class="kwrd"&gt;Work&lt;/span&gt; Item] &lt;span class="kwrd"&gt;ON&lt;/span&gt; [&lt;span class="kwrd"&gt;Current&lt;/span&gt; &lt;span class="kwrd"&gt;Work&lt;/span&gt; Item].[&lt;span class="kwrd"&gt;Work&lt;/span&gt; Item] =
       [&lt;span class="kwrd"&gt;Work&lt;/span&gt; Item].__ID &lt;span class="kwrd"&gt;INNER&lt;/span&gt; &lt;span class="kwrd"&gt;JOIN&lt;/span&gt;
       Person &lt;span class="kwrd"&gt;ON&lt;/span&gt; [&lt;span class="kwrd"&gt;Current&lt;/span&gt; &lt;span class="kwrd"&gt;Work&lt;/span&gt; Item].[Assigned &lt;span class="kwrd"&gt;To&lt;/span&gt;] = Person.__ID&lt;/pre&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;The query is not valid in 2010.&amp;#160; This is the equivalent query in TFS 2010:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; Person.Name, [&lt;span class="kwrd"&gt;Work&lt;/span&gt; Item].System_State
&lt;span class="kwrd"&gt;FROM&lt;/span&gt;   dbo.DimWorkItem &lt;span class="kwrd"&gt;as&lt;/span&gt; [&lt;span class="kwrd"&gt;Work&lt;/span&gt; Item] &lt;span class="kwrd"&gt;INNER&lt;/span&gt; &lt;span class="kwrd"&gt;JOIN&lt;/span&gt;
       dbo.DimPerson &lt;span class="kwrd"&gt;as&lt;/span&gt; [Person] &lt;span class="kwrd"&gt;ON&lt;/span&gt; [&lt;span class="kwrd"&gt;Work&lt;/span&gt; Item].[System_AssignedTo__PersonSK] = Person.PersonSK&lt;/pre&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;You should browse through the tables in Tfs_Warehouse to acquaint yourself with the data.&amp;#160; It is really straight forward to join the tables together, but definitely different than it was in 2008.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-967880933405105977?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/967880933405105977/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=967880933405105977' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/967880933405105977'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/967880933405105977'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/04/tfs-reports-tfswarehouse-database.html' title='TFS Reports – Tfs_Warehouse database'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-3148139777480459574</id><published>2011-04-05T00:02:00.000-04:00</published><updated>2011-04-05T08:10:18.960-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><title type='text'>A look at Microsoft Test Manager</title><content type='html'>&lt;p  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;When Microsoft released Visual Studio 2010 and TFS 2010, they also released a not-often-talked-about tool called Microsoft Test Manager.&amp;#160; It is a tool geared towards testers and it allows you to define test plans and manual test cases.&amp;#160; You are also able automate those manual test cases through the use of recording.&amp;#160; So what?&amp;#160; You could probably do the same thing with other tools, right?&amp;#160; What makes this tool so powerful is its integration with TFS and how it allows TFS to gather an enormous amount of information as a tester goes through their testing process.&amp;#160; Such things as pass/fail metrics, requirements test coverage, integration with lab management are just a few key reasons why everyone (not just testers) should take a look at this tool.&amp;#160; You can perform UI tests on all .NET technologies (wpf, asp.net, winforms, Silverlight, etc) and pretty much anything that renders to a browser.&amp;#160; &lt;/p&gt;  &lt;p  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;&lt;strong  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;So here is MTM in action:&lt;/strong&gt;&lt;/p&gt;  &lt;p  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Start –&amp;gt; Programs –&amp;gt; Microsoft Visual Studio 2010 –&amp;gt; Microsoft Test Manager    &lt;br  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;You first have to connect to a&amp;#160; Team Project, the same way that you would connect to it when you connect to TFS from Team Explorer.&amp;#160; The UI looks like this:     &lt;br  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;&lt;a href="http://lh4.ggpht.com/_4X_zNPuy6C8/TZsGolXaNkI/AAAAAAAAALI/gfDrvatrajQ/s1600-h/image3.png" __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_4X_zNPuy6C8/TZsGpMn0aqI/AAAAAAAAALM/NEEyh8LZ1wE/image_thumb1.png?imgmax=800" width="824" height="312" __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;You are able to create a new test plan (left pane) and create test cases under that test plan (right pane).&amp;#160; If you have existing test cases from another test plan, you can add them to your test plan by selecting “Add” instead of “New”.&amp;#160; If you look at the top menu, you can see 4 options: Plan, Test, Track, and Organize. &lt;/p&gt;  &lt;ul  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;   &lt;li  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Plan      &lt;ul  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;       &lt;li  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Test Case&amp;#160; management – Add new test cases or assign existing test cases to a test plan          &lt;ul  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;           &lt;li  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Test Configurations – Create multiple configurations for all the test cases that should be executed.&amp;#160; Configurations are comprised of a combination of Browser and Operating System.&amp;#160; This later integrates with Lab Center (future blog post).&amp;#160; Basically, it lets you tell TFS that certain test cases should run on a specific environment, and test cases are sent to a virtual machine matching that environment. &lt;/li&gt;         &lt;/ul&gt;       &lt;/li&gt;        &lt;li  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Test Settings – Name, description, iteration, environment, diagnostics settings (what should be gathered), manual vs automated, and more. &lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;Test: Once you setup your test plans and test cases, it’s time for you to run the tests.&amp;#160;&amp;#160; This is what the Test case screen looks like:      &lt;br  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;&lt;a href="http://lh3.ggpht.com/_4X_zNPuy6C8/TZsGpj3ND8I/AAAAAAAAALQ/SUt64rQIMcI/s1600-h/image7.png" __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_4X_zNPuy6C8/TZsGp8FgOGI/AAAAAAAAALU/dKkzOUt9vv4/image_thumb3.png?imgmax=800" width="797" height="337" __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;&lt;/a&gt;       &lt;br  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;After saving the test case, you can run it. When you hit the “run” button, you get a sidebar that includes the test steps: &lt;/li&gt; &lt;/ul&gt;  &lt;p  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;&lt;a href="http://lh4.ggpht.com/_4X_zNPuy6C8/TZsGqKhILzI/AAAAAAAAALY/oVIE0lkWlPU/s1600-h/image12.png" __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/_4X_zNPuy6C8/TZsGqknMukI/AAAAAAAAALc/ZjSIvI6TJB4/image_thumb6.png?imgmax=800" width="288" height="625" __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;&lt;/a&gt;     &lt;br  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }" /&gt;At that point, you can step through the test steps, capture screenshots, capture video, and record all your actions.&amp;#160; Your actions can be recorded and re-played on following iterations.&amp;#160;&amp;#160; You can data-drive your test-runs so that specific data gets populated on your application each time you run the test.&amp;#160; Those actions can later be used when setting up coded UI tests.&amp;#160; If a tester finds an issue while stepping through the test cases, they can easily generate a bug from that screen.&lt;/p&gt;  &lt;p  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;There’s a lot more to it, but I just wanted to give you a glance at it and hopefully peek your interest enough that you will want to try it.&amp;#160; In order to get MTM, you must have either Visual Studio Test Professional or Visual Studio Ultimate Edition installed on your machine.&lt;/p&gt;  &lt;p  __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;There are some walkthroughs on MSDN: &lt;a title="http://msdn.microsoft.com/en-us/library/ms182620(v=vs.80).aspx" href="http://msdn.microsoft.com/en-us/library/ms182620(v=vs.80).aspx" __vsttTracked="1" insertadjacenthtml="function (loc, code)
                    {
                        // HTML Content changing..
                        _baseInsertFunction(loc, code);

                        try
                        {
                            vsttTrackHover.NodeAddition();
                            vsttTrackHover.OverrideNodes(domElement.parentNode.all, 0);
                        }
                        catch (ex)
                        {
                        }
                    }"&gt;http://msdn.microsoft.com/en-us/library/ms182620(v=vs.80).aspx&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-3148139777480459574?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/3148139777480459574/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=3148139777480459574' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/3148139777480459574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/3148139777480459574'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/04/look-at-microsoft-test-manager.html' title='A look at Microsoft Test Manager'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_4X_zNPuy6C8/TZsGpMn0aqI/AAAAAAAAALM/NEEyh8LZ1wE/s72-c/image_thumb1.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-5157229437607930811</id><published>2011-03-30T15:57:00.001-04:00</published><updated>2011-03-30T15:58:00.426-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CI'/><category scheme='http://www.blogger.com/atom/ns#' term='Build'/><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><title type='text'>Generating multiple versions of ClickOnce applications with Team Build</title><content type='html'>&lt;p&gt;It is very common to have a need to run multiple versions of a ClickOnce application, each pointing to different environment (Dev, QA, Prod, etc).&amp;#160; There are plenty of resources on the web that show you how to do this manually (for example, this one: &lt;a title="http://robindotnet.wordpress.com/2009/04/22/clickonce-installing-multiple-versions-concurrently/" href="http://robindotnet.wordpress.com/2009/04/22/clickonce-installing-multiple-versions-concurrently/"&gt;http://robindotnet.wordpress.com/2009/04/22/clickonce-installing-multiple-versions-concurrently/&lt;/a&gt;).&amp;#160; Basically, you have to change the assembly name and the product name.&amp;#160; But what if you need to do it as part of your automated build in TFS?&lt;/p&gt;  &lt;p&gt;Let’s start with what happens when you change these properties in the IDE…all these settings are part of the project file (YourProject.csproj).&amp;#160; The project file is just a big xml file that contains all the information that your project needs in order to build your application.&amp;#160; My first inclination was that I can tell Team Build to run the msbuild task with the the /p:AssemblyName=NewName switch, but this will only work if your solution only has one project in it, otherwise that switch will try to overwrite all your assemblies with that name, and of course you will run into invalid references and a broken build.&amp;#160; &lt;/p&gt;  &lt;p&gt;So the next option is to add a custom build activity and make it part of your build process.&amp;#160; This may sound difficult, but it’s really straight forward.&amp;#160; Here is a nice series that takes you to the process of customizing Team Build 2010: &lt;a title="http://www.ewaldhofman.nl/post/2010/04/20/Customize-Team-Build-2010-e28093-Part-1-Introduction.aspx" href="http://www.ewaldhofman.nl/post/2010/04/20/Customize-Team-Build-2010-e28093-Part-1-Introduction.aspx"&gt;http://www.ewaldhofman.nl/post/2010/04/20/Customize-Team-Build-2010-e28093-Part-1-Introduction.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So assuming that you read that or that you know how the process works, this will make sense.&amp;#160; You need to start by creating a class library and you can start implementing your activity.&amp;#160; Here is how I did it:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;I have two imput arguments: AssemblyFilePath, and NewAssemblyName.&amp;#160;&amp;#160; Those two parameters should be set in the build template so that this activity know what to act on.&amp;#160; You could hard-code those values, but ideally, you are building your activities so that they can be reused by other build processes.&lt;/li&gt;    &lt;li&gt;Use LINQ to XML to parse through the project file to find the AssemblyName element&lt;/li&gt;    &lt;li&gt;Updated it and save the file again.&lt;/li&gt;    &lt;li&gt;You then open up the build template and drop this activity right after the workspace has been created and the build does a GetLatest.&lt;/li&gt;    &lt;li&gt;I don’t check in my changes, as I only want them to be applied to my build, so the code changes will be wiped out during the next build.&lt;/li&gt; &lt;/ul&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; System;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.IO;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Linq;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Activities;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Text.RegularExpressions;
&lt;span class="kwrd"&gt;using&lt;/span&gt; Microsoft.TeamFoundation.Build.Client;
&lt;span class="kwrd"&gt;using&lt;/span&gt; Microsoft.TeamFoundation.Build.Workflow.Activities;
&lt;span class="kwrd"&gt;using&lt;/span&gt; Microsoft.TeamFoundation.VersionControl.Client;
&lt;span class="kwrd"&gt;using&lt;/span&gt; System.Xml.Linq;

&lt;span class="kwrd"&gt;namespace&lt;/span&gt; Esteban.BuildTasks.Activities
{
    &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
    &lt;span class="rem"&gt;/// Updates the assembly name that will be generated when a project is built. &lt;/span&gt;
    &lt;span class="rem"&gt;/// &amp;lt;remarks&amp;gt;&lt;/span&gt;
    &lt;span class="rem"&gt;/// This is useful for click-once applications targetting different environments. &lt;/span&gt;
    &lt;span class="rem"&gt;/// &amp;lt;/remarks&amp;gt;&lt;/span&gt;
    &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
    [BuildActivity(HostEnvironmentOption.All)]
    &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;sealed&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; ChangeAssemblyName : CodeActivity
    {
        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// The path to the project file.&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
        [RequiredArgument]
        &lt;span class="kwrd"&gt;public&lt;/span&gt; InArgument&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt; ProjectFilePath { get; set; }

        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// Assembly name that should be used.&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;public&lt;/span&gt; InArgument&amp;lt;&lt;span class="kwrd"&gt;string&lt;/span&gt;&amp;gt; NewAssemblyName { get; set; }

        &lt;span class="rem"&gt;/// &amp;lt;summary&amp;gt;&lt;/span&gt;
        &lt;span class="rem"&gt;/// The workspace that is used by the build&lt;/span&gt;
        &lt;span class="rem"&gt;/// &amp;lt;/summary&amp;gt;&lt;/span&gt;
        [RequiredArgument]
        &lt;span class="kwrd"&gt;public&lt;/span&gt; InArgument&amp;lt;Workspace&amp;gt; Workspace { get; set; }


        &lt;span class="kwrd"&gt;protected&lt;/span&gt; &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Execute(CodeActivityContext context)
        {

            var projectFilePath = context.GetValue(&lt;span class="kwrd"&gt;this&lt;/span&gt;.ProjectFilePath);
            var workspace = context.GetValue(&lt;span class="kwrd"&gt;this&lt;/span&gt;.Workspace);
            var newAssemblyName = context.GetValue(&lt;span class="kwrd"&gt;this&lt;/span&gt;.NewAssemblyName);

            &lt;span class="rem"&gt;//Get the local project file.&lt;/span&gt;
            var localProjectFilePath = workspace.GetLocalItemForServerItem(projectFilePath);

            &lt;span class="kwrd"&gt;if&lt;/span&gt; (!&lt;span class="kwrd"&gt;string&lt;/span&gt;.IsNullOrWhiteSpace(localProjectFilePath))
            {
                &lt;span class="rem"&gt;//Clear the read-only attribute on the file&lt;/span&gt;
                &lt;span class="kwrd"&gt;if&lt;/span&gt; ((File.GetAttributes(localProjectFilePath) &amp;amp; FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
                {
                    File.SetAttributes(localProjectFilePath, File.GetAttributes(localProjectFilePath) &amp;amp; ~FileAttributes.ReadOnly);
                }

                XDocument doc = XDocument.Load(localProjectFilePath);

                var assemblyElement = (from item &lt;span class="kwrd"&gt;in&lt;/span&gt; doc.Elements().Descendants()
                                       &lt;span class="kwrd"&gt;where&lt;/span&gt; item.Name.LocalName == &lt;span class="str"&gt;&amp;quot;AssemblyName&amp;quot;&lt;/span&gt;
                                       select item).Single();
                
                assemblyElement.Value = newAssemblyName;

                doc.Save(localProjectFilePath);
            }
            &lt;span class="kwrd"&gt;else&lt;/span&gt;
            {
                &lt;span class="kwrd"&gt;throw&lt;/span&gt; &lt;span class="kwrd"&gt;new&lt;/span&gt; BuildProcessException(&lt;span class="str"&gt;&amp;quot;Project file was not found.&amp;quot;&lt;/span&gt;);
            }
        }
    }
}&lt;/pre&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-5157229437607930811?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/5157229437607930811/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=5157229437607930811' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/5157229437607930811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/5157229437607930811'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/03/generating-multiple-versions-of.html' title='Generating multiple versions of ClickOnce applications with Team Build'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-2424071282595151264</id><published>2011-03-29T13:11:00.000-04:00</published><updated>2011-03-29T13:19:26.599-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code Camp'/><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><title type='text'>Orlando Code Camp–Recap</title><content type='html'>&lt;p&gt;On Saturday, March 26th, we held our 6th annual Orlando Code Camp at Seminole State College.&amp;#160;&amp;#160; The event was great, with our best attendance ever, awesome speakers and sponsors, and unbelievable support from our volunteers and ONETUG board. This is my recap from the event, as seen from the organizer’s perspective.&lt;/p&gt;  &lt;h4&gt;Preparation&lt;/h4&gt;  &lt;p&gt;This was definitely the most organized Code Camp that I’ve been a part of.&amp;#160; We had a lot on our plates, starting with an overwhelming amount of sponsors.&amp;#160; Our Director of Marketing, Brian Mishler worked throughout all of last year building relationships with our sponsors and all of that hard work paid off when it was time for our Code Camp.&amp;#160; We had a lot of responsibility to these sponsors to make sure that we did all we could to get them exposure for their great support.&amp;#160; JT (our treasurer) made sure of that with signs, staying in touch with sponsors, and managing the money so that we spent it wisely.&amp;#160; John Smith, our VP, took care of our website (along with our Silverlight SIG), speaker glasses, plaque, bags, and a ton of other stuff.&amp;#160; I took care of shirts, schedules, communications, shopping, and again, a ton of other stuff.&amp;#160; Our Silverlight SIG (Z, Bob, Brian, and Joe) really came through for us on the website and the awesome WP7 app.&amp;#160; We have a great foundation to build on, and we should have more and better features, along with a revamped UI at our next event.&lt;/p&gt;  &lt;h4&gt;Speaker Party&lt;/h4&gt;  &lt;p&gt;This year we decided to have the party at Liam Fitzpatrick’s in Lake Mary.&amp;#160; It was my first time there and I was thoroughly impressed with it.&amp;#160; They gave us the outside patio, which was awesome and our speakers really liked it as well.&amp;#160; The food and drinks were perfect and networking/conversations were even better!&lt;/p&gt;  &lt;h4&gt;The Event&lt;/h4&gt;  &lt;p&gt;The event was a huge success,&amp;#160; we had over 600 people there and we had a packed house of speakers and sessions.&amp;#160; Everyone kept talking about the high quality of the presentations that were given at the event.&amp;#160; We had so many great speakers that it was tough to decide which session to go to.&amp;#160; The Showcase room was great as it gave people the ability to sit in one room all day and get a little bit of everything.&lt;/p&gt;  &lt;p&gt;We were even able to get a personalized greeting from Scott Guthrie, courtesy of John Papa.&amp;#160; I can imagine how busy he must be, and the fact that he took time out of his day to do that for us speaks volumes of Microsoft’s commitment to the community!&lt;/p&gt;  &lt;p&gt;The food that Lou brought was awesome as always.&amp;#160; The one thing that we missed is getting extra coffee, but we’ll fix that for next year.&amp;#160; I ended up returning about half the water that we bought…so less water and more coffee.&lt;/p&gt;  &lt;p&gt;We tried something new this year by lowering the bar for sponsors to get a booth and it completely paid off.&amp;#160; Having so many sponsors there really gave the event a bigger feel to it and both sponsors and attendees greatly benefited by being able to be face to face with each other.&amp;#160; &lt;/p&gt;  &lt;p&gt;Of course, like every big event, we hit a few snags, but we were able to recover from them really well.&amp;#160; We had great volunteers always willing to step up and help.&lt;/p&gt;  &lt;h4&gt;My Presentation&lt;/h4&gt;  &lt;p&gt;I gave a presentation on Continuous Integration with TFS, and I got great response from it.&amp;#160; It was a close call, as I lost all my code and realized it on Saturday morning, but I managed to get it all back in time for the presentation.&amp;#160; It is always great to show people how TFS is a lot more than just a VSS replacement and I think that was conveyed pretty well.&lt;/p&gt;  &lt;h4&gt;After Party&lt;/h4&gt;  &lt;p&gt;This year, we went back to Route 46 Entertainment District, just like last year.&amp;#160; They treated us great and everyone really enjoyed it.&lt;/p&gt;  &lt;p&gt;Overall, I had a great time.&amp;#160; I met some great people, bonded with friends, and watched a ton of people get excited about .NET and our community.&amp;#160; It was a great way to showcase what our region has to offer.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-2424071282595151264?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/2424071282595151264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=2424071282595151264' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/2424071282595151264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/2424071282595151264'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/03/orlando-code-camprecap.html' title='Orlando Code Camp–Recap'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-5506968641134020823</id><published>2011-03-23T08:02:00.000-04:00</published><updated>2011-03-23T10:40:36.200-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code Camp'/><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><title type='text'>Orlando Code Camp Info</title><content type='html'>&lt;p&gt;This just went out to all Code Camp attendees:&lt;/p&gt;  &lt;p&gt;We are just a few days away from our biggest Orlando Code Camp ever and we are really excited to have you be part of it.&amp;#160; We have over 700 people signed up already for a great day of learning and networking.&amp;#160; We have put together a world-class speaker lineup so you are sure to find something that you will enjoy!   &lt;br /&gt;Here are just a few things that you need to know before the event:    &lt;br /&gt;&lt;strong&gt;Program&lt;/strong&gt;    &lt;table border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td width="174"&gt;           &lt;p&gt;7:00 am to 8:00 am&lt;/p&gt;         &lt;/td&gt;          &lt;td width="552"&gt;           &lt;p&gt;Registration and Breakfast – Cafeteria&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td width="174"&gt;           &lt;p&gt;8:00 am to 8:30 am&lt;/p&gt;         &lt;/td&gt;          &lt;td width="552"&gt;           &lt;p&gt;Opening Announcements – Fine Arts Auditorium Building G)&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td width="174"&gt;           &lt;p&gt;8:40 am to 9:40 am&lt;/p&gt;         &lt;/td&gt;          &lt;td width="552"&gt;           &lt;p&gt;Session # 1 and DNN Keynote&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td width="174"&gt;           &lt;p&gt;9:50 am to 10:50 am&lt;/p&gt;         &lt;/td&gt;          &lt;td width="552"&gt;           &lt;p&gt;Session # 2&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td width="174"&gt;           &lt;p&gt;11:00 am to Noon&lt;/p&gt;         &lt;/td&gt;          &lt;td width="552"&gt;           &lt;p&gt;Session # 3&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td width="174"&gt;           &lt;p&gt;Noon – 1:30 pm&lt;/p&gt;         &lt;/td&gt;          &lt;td width="552"&gt;           &lt;p&gt;Lunch &amp;amp; Meet the Sponsors – Cafeteria&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td width="174"&gt;           &lt;p&gt;1:30 pm to 2:30 pm&lt;/p&gt;         &lt;/td&gt;          &lt;td width="552"&gt;           &lt;p&gt;Session # 4&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td width="174"&gt;           &lt;p&gt;2:40 pm to 3:40 pm&lt;/p&gt;         &lt;/td&gt;          &lt;td width="552"&gt;           &lt;p&gt;Session # 5&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td width="174"&gt;           &lt;p&gt;3:50 pm to 4:50 pm&lt;/p&gt;         &lt;/td&gt;          &lt;td width="552"&gt;           &lt;p&gt;Session # 6&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td width="174"&gt;           &lt;p&gt;5:00 pm to 5:30 pm&lt;/p&gt;         &lt;/td&gt;          &lt;td width="552"&gt;           &lt;p&gt;Closing Remarks &amp;amp; Prize Give-away - Cafeteria&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td width="174"&gt;           &lt;p&gt;5:30 pm to 9:00 pm&lt;/p&gt;         &lt;/td&gt;          &lt;td width="552"&gt;           &lt;p&gt;After-party – Route 46&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Agenda&lt;/strong&gt;    &lt;br /&gt;You can find the latest copy of the agenda on our website: &lt;a href="http://www.orlandocodecamp.com/Images/OCC2011.Current.Agenda.pdf"&gt;http://www.orlandocodecamp.com/Images/OCC2011.Current.Agenda.pdf&lt;/a&gt;.&amp;#160; It is also accessible if you log on to our Silverlight interface at &lt;a href="http://www.OrlandoCodeCamp.com"&gt;www.OrlandoCodeCamp.com&lt;/a&gt;.&amp;#160; &lt;br /&gt;&lt;strong&gt;WP7 Application&lt;/strong&gt;&lt;b&gt;     &lt;br /&gt;&lt;strong&gt;&lt;a href="http://social.zune.net/redirect?type=phoneApp&amp;amp;id=fd103846-d34f-e011-854c-00237de2db9e"&gt;&lt;img border="0" src="http://gallery.mailchimp.com/64977fc747ab0f2cbb5429a9a/images/otloveswp7.png" width="195" height="85" /&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/b&gt;    &lt;br /&gt;How can Code Camp be any cooler?&amp;#160; Well, this is how!! We are really happy to announce that we have published a Windows Phone 7 application to the marketplace.&amp;#160; It has the schedule, your agenda, session, and speaker information.&amp;#160; It also allows you to rate the sessions that you attend.&amp;#160; You can download the app here: &lt;a href="http://social.zune.net/redirect?type=phoneApp&amp;amp;id=fd103846-d34f-e011-854c-00237de2db9e"&gt;http://social.zune.net/redirect?type=phoneApp&amp;amp;id=fd103846-d34f-e011-854c-00237de2db9e&lt;/a&gt;    &lt;br /&gt;&lt;strong&gt;T-shirt&lt;/strong&gt;&lt;b&gt;     &lt;br /&gt;&lt;img border="0" src="http://gallery.mailchimp.com/64977fc747ab0f2cbb5429a9a/images/image003.jpg_01CBE3D7.D6A73FF0.jpg" width="300" height="238" /&gt;&lt;/b&gt;    &lt;br /&gt;As you are probably aware, thanks to Diane Leeper, we have an amazing t-shirt again this year!&amp;#160; Get there early and pick yours up, we have limited quantities and we know that they will go fast!    &lt;br /&gt;&lt;strong&gt;The Event&lt;/strong&gt;    &lt;br /&gt;We will serve breakfast pastries and coffee in the morning and we will have lots of water and sodas for you throughout the day.&amp;#160; Speakers will be hanging out in the cafeteria area through out the day, so look for them there after their sessions.&amp;#160; We have about 15 sponsor booths, so it will be a fun area to hang out at.&amp;#160; &lt;br /&gt;We have a great lunch planned for everyone, so make sure that you come hungry!&amp;#160; At the end of the day, we will give away tons of prizes so stick around until the end before you run out to the after party.    &lt;br /&gt;We will make heavy use of Twitter to send out any updates throughout the event, so be sure to follow hashtag #OrlandoCC.    &lt;br /&gt;&lt;strong&gt;How to get there&lt;/strong&gt;    &lt;br /&gt;Orlando Code Camp will be held at Seminole State College (&lt;a href="http://tinyurl.com/SeminoleCampusBingMap"&gt;100 Weldon Boulevard, Sanford, FL 32773&lt;/a&gt;).    &lt;br /&gt;Directions:    &lt;br /&gt;•From Marriott Lake Mary: Head north on International Pkwy. Take the 2nd right onto Co Rd 46A/H E Thomas Jr Pkwy. Turn right at Rinehart Rd. Turn left at W Lake Mary Blvd until College Drive and turn right.    &lt;br /&gt;•From I-4: Take the Lake Mary Boulevard exit. Travel east on Lake Mary Boulevard approximately four miles to College Drive and turn right.    &lt;br /&gt;•From Hwy. 17-92 (from Orlando): Turn left onto Weldon Boulevard. Travel about one-half mile.    &lt;br /&gt;•From S.R. 417 (Central Florida Greeneway): Exit at Lake Mary Boulevard. Go west two miles and turn left onto College Drive.    &lt;br /&gt;Once on campus, follow the signs to registration, which is the cafeteria (Building C). Here is a campus map: &lt;a href="http://www.seminolestate.edu/media/maps/slm-campus-map.pdf"&gt;http://www.seminolestate.edu/media/maps/slm-campus-map.pdf&lt;/a&gt;    &lt;br /&gt;&lt;strong&gt;Prizes&lt;/strong&gt;    &lt;br /&gt;Our sponsors are amazing and we wouldn't be able to pull off such a great event without them.&amp;#160; We have almost $40,000 worth of software and books to give away.&amp;#160; On top of that, there will be at least 5 Xbox Kinects given away throughout the day.&amp;#160; So come ready to learn, have fun, and go home with lots of cool swag.&amp;#160; We have also teamed up with &lt;a href="http://www.fantagz.com/"&gt;FanTagz&lt;/a&gt; to give you a fun way to interact with sponsors and other attendees, so if you have a smartphone, download a Microsoft Tag Reader here to prepare for the event: &lt;a href="http://www.gettag.mobi/"&gt;http://www.gettag.mobi/&lt;/a&gt;.    &lt;br /&gt;&lt;strong&gt;After Party&lt;/strong&gt;    &lt;br /&gt;Back by popular demand, we will have our after-party at &lt;a href="http://route-46.com/"&gt;Route 46 Entertainment District&lt;/a&gt;. The party will start right after we give away our grand prize and will be a great time, we hope to see you there!    &lt;br /&gt;See you on Saturday!!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-5506968641134020823?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/5506968641134020823/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=5506968641134020823' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/5506968641134020823'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/5506968641134020823'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/03/orlando-code-camp-info.html' title='Orlando Code Camp Info'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-1841104071876150667</id><published>2011-03-18T16:40:00.000-04:00</published><updated>2011-03-18T16:41:23.431-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>The case for TFS as an enterprise ALM tool</title><content type='html'>&lt;p&gt;In the past few years, Microsoft has been playing catch-up in the ALM world.&amp;#160; Their first true venture into that space was the introduction of TFS back in 2005.&amp;#160; The first release focused mostly on developer support such as builds and task tracking.&amp;#160; But it built the foundation for what has been released in the following versions (2008, 2010, and the minor “in-between” releases).&amp;#160; TFS 2010 finally put out what I believe is a compelling product that rivals anything that is out there, competes with them head to head, and in many ways does a much better job than other more established packages.&lt;/p&gt;  &lt;p&gt;Up until the 2008 release, Microsoft had been pushing the “Visual Studio Team System” name, and last year in 2010, I started seeing that changed towards Visual Studio ALM.&amp;#160; So what was the big change?&amp;#160; They added much better testing and virtualization tools, they revamped their build system, added more project management features through test case management.&amp;#160; Lately I’ve seen more and more information coming out such as this: &lt;a href="http://www.microsoft.com/visualstudio/en-us/visual-studio-testing-tools"&gt;http://www.microsoft.com/visualstudio/en-us/visual-studio-testing-tools&lt;/a&gt; and this: &lt;a href="http://www.microsoft.com/visualstudio/en-us/try/test-professional-2010-tour"&gt;http://www.microsoft.com/visualstudio/en-us/try/test-professional-2010-tour&lt;/a&gt;.&amp;#160; &lt;/p&gt;  &lt;p&gt;Many people think of TFS as just a source control system, but it is so much more, and if all you are using it for is to store your code, you are vastly underutilizing it and you should re-evaluate your investment (of time and money).&lt;/p&gt;  &lt;p&gt;Visual Studio ALM includes features that address all facets of ALM, as shown on the diagram below:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_4X_zNPuy6C8/TYPDbHluVLI/AAAAAAAAAKU/E6RO9cqgMd4/s1600-h/clip_image002%5B4%5D.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://lh5.ggpht.com/_4X_zNPuy6C8/TYPDbuLzvPI/AAAAAAAAAKY/uE_jO-row5w/clip_image002_thumb%5B1%5D.jpg?imgmax=800" width="449" height="336" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Team Foundation Server is at the core for VS ALM and it serves as the main hub for all the collaboration between the different parts. TFS provides version control, work item tracking, build automation, and data warehouse. Work item tracking houses all requirements, bugs, tasks, and other artifacts that allow the entire team to communicate together within one system. The data warehouse enables powerful reporting tools which provide historical trending and visibility into overall project health. The SQL Server engine that houses all real-time data is able to provide insight into any pending or upcoming issues so that the team can make data-driven decisions. TFS also integrates with Microsoft Project and Project Server to help plan and manage projects.&lt;/p&gt;  &lt;p&gt;So at the end of the day, why stitch together multiple disparate systems like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_4X_zNPuy6C8/TYPDb0vFNVI/AAAAAAAAAKc/Fi70XRtW23M/s1600-h/clip_image001%5B3%5D.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image001" border="0" alt="clip_image001" src="http://lh4.ggpht.com/_4X_zNPuy6C8/TYPDcJmIIgI/AAAAAAAAAKg/nLSPLygiQvA/clip_image001_thumb.gif?imgmax=800" width="244" height="75" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;When you could have one system that encompasses and integrates all these features including automated testing, virtual lab deployment, and architectural validation (to name a few).&amp;#160;&amp;#160; So now your workflow looks like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_4X_zNPuy6C8/TYPDcQg53RI/AAAAAAAAAKk/WY6bw85kMzE/s1600-h/clip_image002%5B3%5D.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://lh4.ggpht.com/_4X_zNPuy6C8/TYPDcrj6cyI/AAAAAAAAAKo/u6uWbBVLwEg/clip_image002_thumb.gif?imgmax=800" width="244" height="199" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;There’s a ton of features that I’m diving into and the more I dig, the better I find it.&amp;#160; At the end of the day, the most powerful thing that TFS has going for itself is the power to integrate so many moving parts and give you the ability to make decisions at the enterprise level.&amp;#160; Quality is found at every stage of your SDLC, so use your tools wisely and you’ll notice a big improvement across the board!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-1841104071876150667?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/1841104071876150667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=1841104071876150667' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/1841104071876150667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/1841104071876150667'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/03/case-for-tfs-as-enterprise-alm-tool.html' title='The case for TFS as an enterprise ALM tool'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_4X_zNPuy6C8/TYPDbuLzvPI/AAAAAAAAAKY/uE_jO-row5w/s72-c/clip_image002_thumb%5B1%5D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-6619797702597679342</id><published>2011-03-17T07:25:00.000-04:00</published><updated>2011-03-17T10:26:02.052-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Build'/><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><category scheme='http://www.blogger.com/atom/ns#' term='Code Camp'/><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><title type='text'>Speaking at Orlando Code Camp–Continuous Integration with TFS 2010</title><content type='html'>&lt;p&gt;In addition to organizing the event, I’m giving a talk on “Continuous Integration with TFS 2010”.&amp;#160; A lot has changed between TFS 2008 and 2010 when it comes to the build process and now it’s more powerful than ever.&amp;#160; I will try to cover all the bases, from how to setup your builds, understanding controllers and agents, inspecting logs, build reports, and of course, how to add custom activities in order to help your team achieve success.&amp;#160; It should be a fun talk with lots of real-world scenarios and very little theory (I may throw in 3 or 4 slides), so come and see me at Orlando Code Camp!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-6619797702597679342?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/6619797702597679342/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=6619797702597679342' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/6619797702597679342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/6619797702597679342'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/03/speaking-at-orlando-code-campcontinuous.html' title='Speaking at Orlando Code Camp–Continuous Integration with TFS 2010'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-319233611036301864</id><published>2011-03-16T13:27:00.001-04:00</published><updated>2011-03-16T13:27:40.870-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code Camp'/><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><title type='text'>Orlando Code Camp–10 days away</title><content type='html'>&lt;p&gt;This was sent today to everyone that signed up to Orlando Code Camp so far:&lt;/p&gt;  &lt;p&gt;Orlando Code Camp is just 10 days away!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.orlandocodecamp.com/"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="CodeCamp" border="0" alt="CodeCamp" src="http://lh5.ggpht.com/_4X_zNPuy6C8/TYDy8ci7_LI/AAAAAAAAAHg/ZIsKwZ5H2nc/CodeCamp%5B3%5D.gif?imgmax=800" width="240" height="75" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Thank you for registering to attend our 6&lt;sup&gt;th&lt;/sup&gt; Orlando Code Camp! As you know, the event is being held at Seminole State College (&lt;a href="http://tinyurl.com/SeminoleCampusBingMap"&gt;100 Weldon Boulevard, Sanford, FL100 Weldon Boulevard, Sanford, FL100 Weldon Boulevard, Sanford, FL100 Weldon Boulevard, Sanford, FL 32773&lt;/a&gt;) on Saturday, March 26&lt;sup&gt;th&lt;/sup&gt;. We have an amazing group of speakers with sessions that you are going to really enjoy! Our tracks cover the following topics: Azure, Collaboration (SharePoint and Office), Design &amp;amp; Animation, DNN, .NET Fundamentals, .NET Languages, Patterns &amp;amp; Architecture, Services, Silverlight, SQL Server, Visual Studio &amp;amp; ALM, Web, and Windows Phone.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;We need your input!&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;In order for us to get you the right lunch and t-shirt, we need you to log on at &lt;a href="http://www.OrlandoCodeCamp.com"&gt;www.OrlandoCodeCamp.com&lt;/a&gt; and update your preferences. While you are there, check out the agenda builder that we’ve created, it allows you to pick your sessions which will make it easier for you to navigate through all the tracks once you get there.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://orlando.dayofdotnetnuke.com/"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://lh3.ggpht.com/_4X_zNPuy6C8/TYDy8qJE3dI/AAAAAAAAAHk/vijOFUJBCAo/clip_image002%5B3%5D.png?imgmax=800" width="89" height="74" /&gt;&lt;/a&gt;&lt;b&gt;     &lt;br /&gt;&lt;/b&gt;For the first time in our 6 year history, we are hosting Day of DotNetNuke.&amp;#160; As a special treat, the President and CEO of DotNetNuke Corp, Navin Nagiah, will give a DNN Keynote. We will have 3 rooms focusing on Administration, Design, and Development.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Prizes&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;We have amazing sponsors, which translates into us being able to give you amazing prizes. We have tons of prizes such as books, software, shirts, swag, a DevConnections pass, a SQL Rally pass, Xboxes, and more.&lt;/p&gt;  &lt;p&gt;We haven’t even started the event and we already gave away our first prize! Congratulations to William Ferrell, who won a free pass to &lt;a href="http://www.devconnections.com/"&gt;DevConnections&lt;/a&gt;, which starts the day after Code Camp!&amp;#160; If you didn’t win, it is not too late for you to go to the conference at a great value, use code “onetug” to save $200 off your registration.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;T-Shirt     &lt;br /&gt;&lt;/b&gt;If you liked last year’s t-shirts, you are going to love this year’s!&amp;#160; Florida’s own UX expert, Diane Leeper has come up with an amazing design for us.&amp;#160; Get there early, we have limited quantities!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_4X_zNPuy6C8/TYDy8s12uTI/AAAAAAAAAHo/sVfBX_l3XaA/s1600-h/clip_image004%5B3%5D.jpg"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://lh5.ggpht.com/_4X_zNPuy6C8/TYDy8-zdPVI/AAAAAAAAAHs/US1uJGUwLdQ/clip_image004_thumb.jpg?imgmax=800" width="244" height="194" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Lunch&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_4X_zNPuy6C8/TYDy9Fxi1KI/AAAAAAAAAHw/DCcm7e7bSqE/s1600-h/clip_image005%5B3%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image005" border="0" alt="clip_image005" src="http://lh3.ggpht.com/_4X_zNPuy6C8/TYDy9mrU96I/AAAAAAAAAH0/-TX9Ueu7Nc4/clip_image005_thumb.png?imgmax=800" width="244" height="94" /&gt;&lt;/a&gt;&lt;b&gt;     &lt;br /&gt;&lt;/b&gt;We will provide lunch for all registered attendees.&amp;#160;&amp;#160; We are welcoming Lou Tommasini to cater this year's Code Camp. If you attended our &amp;quot;BizSpark Day of Windows Phone 7&amp;quot;, you'll remember Lou's food! You can find out more about Lou's offerings on &lt;a href="http://www.facebook.com/pages/Lou-of-Orlando-Inc/184180644940949"&gt;Facebook&lt;/a&gt;, &lt;a href="http://www.thumbtack.com/louoforlando"&gt;Thumbtack&lt;/a&gt; has some of his recipes, and last but not least, &lt;a href="http://www.twitter.com/louoforlando"&gt;Twitter&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Hotel Info     &lt;br /&gt;&lt;/b&gt;If you need a hotel, we’ve made arrangements with Orlando Marriott Lake Mary with a special Code Camp rate of $79.&amp;#160; You must use Group Code oneonea to take advantage of this offer, but hurry, rooms are running out!&amp;#160; Direct link: &lt;a href="http://www.marriott.com/hotels/travel/mcoml?groupCode=oneonea&amp;amp;app=resvlink&amp;amp;fromDate=3/25/11&amp;amp;toDate=3/27/11"&gt;Click Here&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;After-Party Information     &lt;br /&gt;&lt;/b&gt;Right after Code Camp, join us at &lt;a href="http://www.route-46.com/"&gt;Route 46 Entertainment District&lt;/a&gt; to unwind and network with fellow attendees and speakers. You don’t want to miss this!&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Surface Demo&lt;/b&gt;    &lt;br /&gt;&lt;a href="http://lh5.ggpht.com/_4X_zNPuy6C8/TYDy97IhyPI/AAAAAAAAAH4/12bwhZS8p1w/s1600-h/clip_image006%5B3%5D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://lh4.ggpht.com/_4X_zNPuy6C8/TYDy9w1spuI/AAAAAAAAAH8/2TuJBdbjzhE/clip_image006_thumb.png?imgmax=800" width="145" height="57" /&gt;&lt;/a&gt;    &lt;br /&gt;Hard Rock Cafe International will be hosting a “Hands on Surface” experience with developer Bradley Foley. Brad will talk about the V1 and upcoming V2 hardware, software, and how Surface computing is used to enhance the Hard Rock Brand experience with their customers.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Diamond Sponsors&lt;/b&gt;    &lt;table border="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;&lt;a href="http://www.devexpress.com/"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image007" border="0" alt="clip_image007" src="http://lh4.ggpht.com/_4X_zNPuy6C8/TYDy-BJfkxI/AAAAAAAAAIA/C-xO8hFQIWM/clip_image007%5B3%5D.gif?imgmax=800" width="204" height="204" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;a href="http://www.powerdnn.com/"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image008" border="0" alt="clip_image008" src="http://lh6.ggpht.com/_4X_zNPuy6C8/TYDy-DQdT4I/AAAAAAAAAIE/lO2urRF-SXw/clip_image008%5B3%5D.jpg?imgmax=800" width="196" height="196" /&gt;&lt;/a&gt;&lt;a href="http://www.dotnetnuke.com/"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image009" border="0" alt="clip_image009" src="http://lh3.ggpht.com/_4X_zNPuy6C8/TYDy-vCkRmI/AAAAAAAAAII/OSfA6iZbp2I/clip_image009%5B3%5D.jpg?imgmax=800" width="196" height="196" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;&amp;#160; Platinum Sponsors&lt;/b&gt;    &lt;table border="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;&lt;a href="http://www.textcontrol.com/"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image011" border="0" alt="clip_image011" src="http://lh3.ggpht.com/_4X_zNPuy6C8/TYDy-_cjTcI/AAAAAAAAAIM/KAkYvkYFWQk/clip_image011%5B3%5D.png?imgmax=800" width="196" height="196" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Gold Sponsors&lt;/b&gt;    &lt;table border="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;&lt;a href="http://www.seminolestate.edu/"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image012" border="0" alt="clip_image012" src="http://lh3.ggpht.com/_4X_zNPuy6C8/TYDy_IWm6pI/AAAAAAAAAIQ/vPE33GACwkw/clip_image012%5B3%5D.png?imgmax=800" width="204" height="204" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;a href="http://www.infragistics.com/"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image013" border="0" alt="clip_image013" src="http://lh4.ggpht.com/_4X_zNPuy6C8/TYDy_kqlgKI/AAAAAAAAAIU/t-KE_8EFWh8/clip_image013%5B3%5D.gif?imgmax=800" width="204" height="204" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;&lt;a href="http://www.microsoft.com/"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image014" border="0" alt="clip_image014" src="http://lh3.ggpht.com/_4X_zNPuy6C8/TYDy_qegWVI/AAAAAAAAAIY/9P6yxgmgctY/clip_image014%5B3%5D.gif?imgmax=800" width="200" height="200" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;a href="http://www.telerik.com/"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image016" border="0" alt="clip_image016" src="http://lh3.ggpht.com/_4X_zNPuy6C8/TYDy_w17Z3I/AAAAAAAAAIc/CC_xoNRyNX4/clip_image016%5B3%5D.png?imgmax=800" width="204" height="204" /&gt;&lt;/a&gt;&lt;a href="http://www.pointclick.net/"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image018" border="0" alt="clip_image018" src="http://lh4.ggpht.com/_4X_zNPuy6C8/TYDzAIXr9OI/AAAAAAAAAIg/EwvvsgsTEV4/clip_image018%5B3%5D.jpg?imgmax=800" width="204" height="204" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Silver Sponsors&lt;/b&gt;    &lt;table border="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;&lt;a href="http://www.arrowdesigns.com/"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image019" border="0" alt="clip_image019" src="http://lh4.ggpht.com/_4X_zNPuy6C8/TYDzAfE66vI/AAAAAAAAAIk/oIsZFA04NUA/clip_image019%5B3%5D.png?imgmax=800" width="144" height="144" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;a href="http://www.atlantic.net/"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image020" border="0" alt="clip_image020" src="http://lh3.ggpht.com/_4X_zNPuy6C8/TYDzAmeg9jI/AAAAAAAAAIo/k4GRar6M3sQ/clip_image020%5B3%5D.png?imgmax=800" width="144" height="144" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;a href="http://gallery.mailchimp.com/64977fc747ab0f2cbb5429a9a/images/ComponentOne.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image021" border="0" alt="clip_image021" src="http://lh5.ggpht.com/_4X_zNPuy6C8/TYDzArSWVKI/AAAAAAAAAIs/TehXBXyUFCo/clip_image021%5B3%5D.png?imgmax=800" width="144" height="144" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;a href="http://www.gcpowertools.com/"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image022" border="0" alt="clip_image022" src="http://lh5.ggpht.com/_4X_zNPuy6C8/TYDzA7zhZzI/AAAAAAAAAIw/c-ZdJvFATTs/clip_image022%5B3%5D.png?imgmax=800" width="144" height="144" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;&lt;a href="http://www.componentart.com/"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image023" border="0" alt="clip_image023" src="http://lh5.ggpht.com/_4X_zNPuy6C8/TYDzBJQE15I/AAAAAAAAAI0/GTS2pRBtSj0/clip_image023%5B3%5D.gif?imgmax=800" width="144" height="144" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;a href="http://veredusorlando.com/"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image024" border="0" alt="clip_image024" src="http://lh4.ggpht.com/_4X_zNPuy6C8/TYDzBVyq55I/AAAAAAAAAI4/5MLJwGojUkQ/clip_image024%5B3%5D.png?imgmax=800" width="144" height="144" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;a href="http://www.noemax.com/"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image025" border="0" alt="clip_image025" src="http://lh3.ggpht.com/_4X_zNPuy6C8/TYDzBn3cDnI/AAAAAAAAAI8/PkDLM0t1EjE/clip_image025%5B3%5D.gif?imgmax=800" width="144" height="144" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;a href="http://www.mypruf.com/"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image026" border="0" alt="clip_image026" src="http://lh4.ggpht.com/_4X_zNPuy6C8/TYDzBzWwp1I/AAAAAAAAAJA/q5eIgC3wJO0/clip_image026%5B3%5D.png?imgmax=800" width="144" height="144" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;        &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;&lt;a href="http://www.pottsconsultinggroup.com/"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image027" border="0" alt="clip_image027" src="http://lh6.ggpht.com/_4X_zNPuy6C8/TYDzCZ741FI/AAAAAAAAAJE/rRwEkCYZR1g/clip_image027%5B3%5D.png?imgmax=800" width="144" height="144" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;a href="http://www.tekkfusion.com/"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image028" border="0" alt="clip_image028" src="http://lh3.ggpht.com/_4X_zNPuy6C8/TYDzCkJUUbI/AAAAAAAAAJI/brWifMgHXDA/clip_image028%5B3%5D.png?imgmax=800" width="144" height="144" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;           &lt;p&gt;&lt;a href="http://www.fantagz.com/"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image029" border="0" alt="clip_image029" src="http://lh4.ggpht.com/_4X_zNPuy6C8/TYDzCiVBQYI/AAAAAAAAAJM/QD2GA9zrNwg/clip_image029%5B3%5D.png?imgmax=800" width="107" height="107" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td&gt;&amp;nbsp;&lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Bronze Sponsors&lt;/b&gt;    &lt;table border="0" cellpadding="0"&gt;&lt;tbody&gt;       &lt;tr&gt;         &lt;td&gt;           &lt;p&gt;&lt;a href="http://www.pdsa.com/"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image030" border="0" alt="clip_image030" src="http://lh4.ggpht.com/_4X_zNPuy6C8/TYDzC29sHAI/AAAAAAAAAJQ/MjfhNTgZLp4/clip_image030%5B3%5D.png?imgmax=800" width="144" height="144" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;          &lt;td valign="top"&gt;           &lt;p&gt;&lt;a href="http://www.4cornerresources.com/"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="clip_image032" border="0" alt="clip_image032" src="http://lh4.ggpht.com/_4X_zNPuy6C8/TYDzC7Cw6zI/AAAAAAAAAJU/C3QmuxcOE8M/clip_image032%5B3%5D.jpg?imgmax=800" width="95" height="95" /&gt;&lt;/a&gt;&lt;/p&gt;         &lt;/td&gt;       &lt;/tr&gt;     &lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-319233611036301864?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/319233611036301864/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=319233611036301864' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/319233611036301864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/319233611036301864'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/03/orlando-code-camp10-days-away.html' title='Orlando Code Camp–10 days away'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_4X_zNPuy6C8/TYDy8ci7_LI/AAAAAAAAAHg/ZIsKwZ5H2nc/s72-c/CodeCamp%5B3%5D.gif?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-2149996941853655187</id><published>2011-03-13T10:18:00.001-04:00</published><updated>2011-03-13T10:18:07.330-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code Camp'/><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><title type='text'>Orlando Code Camp just 2 weeks from now!</title><content type='html'>&lt;p&gt;I just sent this out to our ONETUG email list:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.orlandocodecamp.com/"&gt;&lt;img border="0" src="http://gallery.mailchimp.com/64977fc747ab0f2cbb5429a9a/images/image001.gif_01CBE166.49680A20.gif" width="470" height="147" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Orlando Code Camp is just around the corner!&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The stage is set for the best and biggest Orlando Code Camp ever!&amp;#160; We have an amazing list of speakers and sessions so you will definitely find something that interests you.&amp;#160; If you haven’t signed up, this is the time to do so as we are less than 2 weeks away from the event!&amp;#160; &lt;/p&gt;  &lt;p&gt;We have sessions covering the following tracks: Azure, Collaboration (SharePoint and Office), Design &amp;amp; Animation, DNN, .NET Fundamentals, .NET Languages, Patterns &amp;amp; Architecture, Services, Silverlight, SQL Server, Visual Studio &amp;amp; ALM, Web, and Windows Phone.&amp;#160; &lt;/p&gt;  &lt;p&gt;As in previous years, Code Camp will be located at Seminole State College (100 Weldon Blvd, Sanford, FL 32773) on Saturday, March 26&lt;sup&gt;th&lt;/sup&gt;.&amp;#160; Sign up at &lt;a href="http://www.OrlandoCodeCamp.com"&gt;www.OrlandoCodeCamp.com&lt;/a&gt;!&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Speakers     &lt;br /&gt;&lt;/b&gt;Come and interact with your favorite community speakers and lots of world-renowned speakers as well!&amp;#160; We’ve been lucky enough to receive commitments from these speakers:&amp;#160; Adam Jorgensen, Alexander Koval, Andy Warren, Brad Foley, Brad Schafer, Chris G. Williams, Colin Blakey, Cornelius Kruger, Diane Leeper, Esteban Garcia, Eugene Chuvyrov, Gifford Watkins, Greg Leonardo, Henry Lee, Ivan Farkas, Jack Corbett, Jason Milgram, Jason Rainwater, Jay Hill, Joe Brinkman, Joe Healy, John Mcfetridge, John Papa, John Wang, Jonas Stawski, Jyoti Chawla, Keith Elder, Ken Tucker, Kevin Halverson, Kevin Wolf, Konrad Neumann, Marshall Harrison, Michael Antonovich, Michael Knopf, Michael Stark, Mike Potts, Mitchel Sellers, Nathan Totten, Navin Nagiah, Nick Christy, Nikita Polyakov, Oleg Sych, Page Horton, Patrick Rourke, Plamen Ratchev, Prakash Balasubramanian, Raleigh Johnson, Ralph Williams, Rasesh Shah, Richard Dudley, Robert McLaws, Russell Fustino, Ryan Morgan, Ryan Parsley, Sam Abraham, Sayed Hashimi, Scott Dorman, Scott Klueppel, Sean Laberee, Seth Juarez, Spotty Bowles, Stan Schultes, Tim Butts, Tom Kraak, Tony Valenti, Walter Williams, Will Morgenweck, Woody Pewitt, and Zachary Gramana.&amp;#160; &lt;/p&gt;  &lt;p&gt;Looking through the list you are bound to find your favorite MVP or Microsoft Evangelist! Do you want to see the complete list of sessions?&amp;#160; Register for Code Camp and try our Agenda Builder!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://orlando.dayofdotnetnuke.com/"&gt;&lt;img border="0" alt="Description: Description: Day of DotNetNuke Orlando" src="http://gallery.mailchimp.com/64977fc747ab0f2cbb5429a9a/images/image002.png_01CBE166.49680A20.png" width="163" height="134" /&gt;&lt;/a&gt;&lt;b&gt;     &lt;br /&gt;&lt;/b&gt;For the first time in our 6 year history, we are hosting Day of DotNetNuke.&amp;#160; This will be your chance to share your knowledge, to learn, and to rub elbows.&amp;#160; If you want to find out what is going on in the minds of the leaders of the DotNetNuke Corp., this is your chance.&amp;#160; If you want to see the power of the internet through the eyes of DotNetNuke, this is your chance.&amp;#160; If you want to see what all the DotNetNuke noise is about, this is your chance.&amp;#160; As a special treat, the President and CEO of DotNetNuke Corp, Navin Nagiah, will give a DNN Keynote.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;T-Shirt     &lt;br /&gt;&lt;/b&gt;If you liked last year’s t-shirts, you are going to love this year’s!&amp;#160; Florida’s own UX expert, Diane Leeper has come up with an amazing design for us.&amp;#160; Sign up and get there early, we have limited quantities!&lt;/p&gt;  &lt;p&gt;&lt;img border="0" src="http://gallery.mailchimp.com/64977fc747ab0f2cbb5429a9a/images/image029.jpg_01CBE166.74809A10.jpg" width="624" height="495" /&gt;    &lt;br /&gt;*Model not included&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Lunch&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="Description: Description: http://www.orlandocodecamp.com/Images/LouOfOrlando.png" src="http://gallery.mailchimp.com/64977fc747ab0f2cbb5429a9a/images/image005.png_01CBE166.49680A20.png" width="337" height="127" /&gt;&lt;b&gt;     &lt;br /&gt;&lt;/b&gt;We will provide lunch for all registered attendees.&amp;#160;&amp;#160; We are welcoming Lou Tommasini to cater this year's Code Camp. If you attended our &amp;quot;BizSpark Day of Windows Phone 7&amp;quot;, you'll remember Lou's food!&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Hotel Info     &lt;br /&gt;&lt;/b&gt;If you need a hotel, we’ve made arrangements with Orlando Marriott Lake Mary with a special Code Camp rate of $79.&amp;#160; You must use Group Code oneonea to take advantage of this offer, but hurry, rooms are running out!&amp;#160; Direct link: &lt;a href="http://www.marriott.com/hotels/travel/mcoml?groupCode=oneonea&amp;amp;app=resvlink&amp;amp;fromDate=3/25/11&amp;amp;toDate=3/27/11"&gt;Click Here&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;After-Party Information     &lt;br /&gt;&lt;/b&gt;Right after Code Camp, join us at &lt;a href="http://www.route-46.com/"&gt;Route 46 Entertainment District&lt;/a&gt; to unwind and network with fellow attendees and speakers.&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Surface Demo&lt;/b&gt;    &lt;br /&gt;&lt;img border="0" alt="Description: Description: Surface" src="http://gallery.mailchimp.com/64977fc747ab0f2cbb5429a9a/images/image006.png_01CBE166.49680A20.png" width="141" height="53" /&gt;    &lt;br /&gt;Hard Rock Cafe International will be hosting a “Hands on Surface” experience with developer Bradley Foley. Brad will talk about the V1 and upcoming V2 hardware, software, and how Surface computing is used to enhance the Hard Rock Brand experience with their customers.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Prizes&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Thanks to our amazing sponsors, we have tons of prizes such as books, software, shirts, swag, a DevConnections pass, a SQL Rally pass, and Xboxes!&amp;#160; &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-2149996941853655187?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/2149996941853655187/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=2149996941853655187' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/2149996941853655187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/2149996941853655187'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/03/orlando-code-camp-just-2-weeks-from-now.html' title='Orlando Code Camp just 2 weeks from now!'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-6241879894824798522</id><published>2011-03-12T12:29:00.001-05:00</published><updated>2011-03-12T12:29:26.813-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><title type='text'>TFS Tip: Making a field READONLY after the work item has changed states</title><content type='html'>&lt;p&gt;Ever need to make a field read-only to everyone except for a specified group, but only once the work item has made it past a specific state?&lt;/p&gt;  &lt;p&gt;You could achieve this by marking a field as read-only when it gets to a specified state. So after you enter the initial information, you move your work item to a state of Active (or you can use any other state), and within that state definition add a field rule to make it readonly. In the following sample, i'm making description readonly when the workitem is in the active state. Note that it is readonly for everyone, except for project administrators:&lt;/p&gt;  &lt;p&gt;   &lt;pre class="csharpcode"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;STATE&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Active&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
     &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;FIELDS&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;FIELD&lt;/span&gt; &lt;span class="attr"&gt;refname&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Microsoft.VSTS.Common.ClosedDate&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
       &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;EMPTY&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;FIELD&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;FIELD&lt;/span&gt; &lt;span class="attr"&gt;refname&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Microsoft.VSTS.Common.ClosedBy&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
       &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ALLOWEXISTINGVALUE&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
       &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;EMPTY&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;FIELD&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;FIELD&lt;/span&gt; &lt;span class="attr"&gt;refname&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.AssignedTo&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
       &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;REQUIRED&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;FIELD&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;FIELD&lt;/span&gt; &lt;span class="attr"&gt;refname&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;System.Description&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
       &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;READONLY&lt;/span&gt; &lt;span class="attr"&gt;not&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;[Project]\Project Administrators&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;FIELD&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
     &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;FIELDS&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;STATE&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
  &lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;You would have to apply the same rule to all the states in your work item that should have this rule.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-6241879894824798522?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/6241879894824798522/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=6241879894824798522' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/6241879894824798522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/6241879894824798522'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/03/tfs-tip-making-field-readonly-after.html' title='TFS Tip: Making a field READONLY after the work item has changed states'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-6657614073200889826</id><published>2011-03-07T16:09:00.001-05:00</published><updated>2011-03-07T16:09:04.316-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Build'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><title type='text'>Team Build - Microsoft.Silverlight.CSharp.targets was not found</title><content type='html'>&lt;p&gt;If you ever get this error in your Build machine while building a Silverlight application through TFS:&lt;/p&gt;  &lt;p&gt;“The imported project &amp;quot;C:\Program Files (x86)\MSBuild\Microsoft\Silverlight\v4.0\Microsoft.Silverlight.CSharp.targets&amp;quot; was not found. Confirm that the path in the &amp;lt;Import&amp;gt; declaration is correct, and that the file exists on disk.”&lt;/p&gt;  &lt;p&gt;You need to install &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=b3deb194-ca86-4fb6-a716-b67c2604a139"&gt;Silverlight 4 Tools for Visual Studio 2010&lt;/a&gt; on your build machine.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-6657614073200889826?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/6657614073200889826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=6657614073200889826' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/6657614073200889826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/6657614073200889826'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/03/team-build-microsoftsilverlightcsharpta.html' title='Team Build - Microsoft.Silverlight.CSharp.targets was not found'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-6990376678218677245</id><published>2011-03-07T08:11:00.000-05:00</published><updated>2011-03-11T10:11:42.979-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code Camp'/><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><title type='text'>Orlando Code Camp–Speaker Notification</title><content type='html'>&lt;p&gt;&lt;a href="http://www.orlandocodecamp.com/"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="CodeCamp" border="0" alt="CodeCamp" src="http://lh4.ggpht.com/_4X_zNPuy6C8/TXo7rY2crbI/AAAAAAAAAHc/TK4s5xe0upE/CodeCamp%5B3%5D.gif?imgmax=800" width="240" height="75" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Orlando Code Camp 2011 is almost here.&amp;#160; We have an awesome list of speakers and sessions and all the sponsors are coming through.&amp;#160; This is my second time organizing this event and it has been fun putting it together.&amp;#160; We are trying some new things this year and I hope that everyone enjoys it!&amp;#160; This message went out to all speakers on Sunday:&lt;/p&gt;  &lt;p&gt;Thank you so much for volunteering to speak at this year’s Orlando Code Camp.&amp;#160; I am happy to notify you that you have been selected to speak at the event.&amp;#160; This Code Camp is already shaping up to become our best one ever thanks to such a great speaker lineup.&amp;#160; We have also been really fortunate to get overwhelming support from our sponsors, which is helping put together an event that nobody will want to miss!&lt;/p&gt;  &lt;p&gt;&lt;b&gt;What do we need from you:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Please log in to our website (&lt;a href="http://www.OrlandoCodeCamp.com"&gt;www.OrlandoCodeCamp.com&lt;/a&gt;) as soon as possible and update your preferences.&amp;#160; The most important parts are your shirt size (orders are going out this week), and the URL to your picture.&amp;#160; If you didn’t enter your bio when you registered, we also ask that you fill that out.&amp;#160; Tell all your friends about the event through blogs, twitter (hashtag #OrlandoCC), Facebook, email, word-of-mouth, etc.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;What to expect:&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;We will have a Speaker/Volunteer party the night before, on Friday March 25&lt;sup&gt;th&lt;/sup&gt; at 7 pm.&amp;#160;&amp;#160; You will receive more information very soon, including venue information and directions.&amp;#160; &lt;/p&gt;  &lt;p&gt;Code Camp will start at 8:00 am on Saturday, March 26&lt;sup&gt;th&lt;/sup&gt;, with the first session at 8:30.&amp;#160; All sessions will be 1 hour each, with a 10 minute break between them.&amp;#160; We will have breakfast treats and a catered lunch, as well as refreshments throughout the day.&amp;#160; Our after-party will be held at &lt;a href="http://www.route-46.com/"&gt;Route 46 Entertainment District&lt;/a&gt;, which was a huge hit last year and it will start at 5:30 pm, right after the closing ceremonies and prize give-away.&amp;#160; Of course, we have some great prizes and all speakers are automatically entered into the drawing.&lt;/p&gt;  &lt;p&gt;If you need a hotel, we have made arrangements with Marriott – Lake Mary, which is about 7 miles away from Seminole State College.&amp;#160; The special rate will expire soon.&lt;/p&gt;  &lt;p&gt;Orlando Marriott Lake Mary   &lt;br /&gt;1501 International Parkway • Lake Mary, FL 32746    &lt;br /&gt;Special Code Camp rate: $79     &lt;br /&gt;Group Code: oneonea     &lt;br /&gt;Direct Link: &lt;a href="http://www.marriott.com/hotels/travel/mcoml?groupCode=oneonea&amp;amp;app=resvlink&amp;amp;fromDate=3/26/11&amp;amp;toDate=3/28/11"&gt;Click Here&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;If for any reason you are unable to attend, please notify us as soon as possible so we can give your spot to one of the people in the waiting list.&amp;#160; Here is the list of all speakers and sessions that were approved.&amp;#160; The schedule will be posted on our website in the next couple of days and all attendees will be able to create&lt;/p&gt;  &lt;p&gt;The following speakers and sessions were approved:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Azure&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Alexander Koval: Introduction to Azure AppFabric&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Jason Milgram: Building Causal Games on Azure&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Mike Potts: Continuous Deployment on Azure&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Richard Dudley: Is Azure Right For My Applications?&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Robert McLaws: Real World Windows Azure Migrations&amp;#160; &lt;/p&gt;  &lt;p&gt;Tim Butts: Using Lucene.net on Azure&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Collaboration&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Adam Jorgensen: Zero to Analytics-SharePoint Business Intelligence&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Colin Blakey: Do It Yourself Microsoft Office &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Marshall Harrison: Provisioning Lync Server 2010 using PowerShell &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Michael Antonovich: Using External Data in SharePoint and Microsoft Office Without Code &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Raleigh Johnson: Configuring Forms Authentication is SharePoint 2010 &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Ryan Morgan: Client Object Model Data Access for Silverlight on SharePoint 2010 &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Day of DNN&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Navin Nagiah: Day of DotNetNuke Keynote&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Day of DNN: DNN Development&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Brad Schafer: Extreme DNN Development Techinques&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Joe Brinkman: To the Cloud: DotNetNuke and Windows Azure &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Mitchel Sellers: DotNetNuke Development: Leveraging the Core &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Mitchel Sellers: DotNetNuke Performance: Diagnosing Problems &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Nick Christy: DNN in a Web Farm&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Day of DNN: Launch DNN&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Gifford Watkins: Take This Job And Shove It: How to start a DNN company &lt;/p&gt;  &lt;p&gt;Launch DNN&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Ralph Williams: Skinning 201 - Skinning DotNetNuke with Style &lt;/p&gt;  &lt;p&gt;Tom Kraak: Intro to DNN SEO &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Tony Valenti: How to Build a Basic Website with DotNetNuke &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Will Morgenweck: Building Social Communities with DotNetNuke &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Fundamentals&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Jason Rainwater: Asynchronous Programming, Then and Now &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Keith Elder: Back to the Basics: What is .Net? &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Ryan Parsley: Modern Web Concepts &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Scott Dorman: Memory Management Fundamentals – Garbage Collection Deep Dive &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Tony Valenti: Advanced ASP.NET Debugging and Troubleshooting &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Woody Pewitt: The Basics of Developing for the Web for Windows Developers &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Languages&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Kevin Halverson: Asynchronous Programming in Visual Basic and C# &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Prakash Balasubramanian: C# 4.0 Overview &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Seth Juarez: Functional C# &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Spotty Bowles: Visual Basic Language Features in 2010 &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Zachary Gramana: Using C# as a Scripting Language &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Patterns&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Eugene Chuvyrov: Introduction to Reactive Extensions (Rx.NET) for Windows Phone 7 and the .NET Framework &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Jay Hill: Applied Object-Oriented Design Principles &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Jay Hill: Fluent Interfaces in C# &amp;amp; VB: What, Why &amp;amp; How &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Page Horton: Decoupled UI &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Page Horton: The Flexible Distributed Business Layer &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Scott Klueppel: .NET Parallel Programming Patterns &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Services&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; John Wang: Intro to Open Data Protocol (OData) &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Keith Elder: Demystyfying Windows Communication Foundation 4.0 &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Patrick Rourke: Configurable Apps with the .NET 4 Workflow Foundation &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Robert McLaws: Liberating Corporate Data with Entity Framework 4 and OData &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Stan Schultes: RAD Development in VS2010 using EF4 with WCF Data Services and SL4 &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Cornelius Kruger: Using Silverlight with Prism 4 to build Enterprise MVVM Applications &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Silverlight&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Greg Leonardo: Dynamic Prototyping &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Greg Leonardo: Silverlight LOB &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; John&amp;#160; Mcfetridge: Silverlight for Line of Business ..Case study &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; John Papa: Silverlight Futures &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Michael Knopf: Connecting the Dots: how to build a real-world Silverlight app &lt;/p&gt;  &lt;p&gt;&lt;b&gt;SQL Server&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Adam Jorgensen: Zero to Cube - Introduction to Analysis Services &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Andy Warren: Introduction to SQL Server Statistics &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Jack Corbett: Introduction to SQL Server Profiler &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Michael Stark: SQL 2008 geo data on a Window Phone 7 Bing Map &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Plamen Ratchev: Zen and the Art of Writing SQL Query&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Walter Williams: Using SQL Server Compact Edition in a .NET application &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Visual Studio &amp;amp; ALM&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Esteban Garcia: Continous Integration with TFS 2010 &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Jyoti Chawla: Application Lifecycle Management using Visual Studio 2010 &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Oleg Sych: Code Generation with T4 and Visual Studio 2010 &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Sayed Hashimi: Visual Studio 2010 SP1: What’s new for Web Developers &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Sayed Hashimi: Web Deploy: Seriously You’re Still not Using This? &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Sean Laberee: Microsoft Visual Studio IDE Tips and Tricks &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Web&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Ivan Farkas: Unified Web and Mobile Web Applications with ASP.NET MVC 3 and jQuery Mobile &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Ken Tucker: Intro to MVC 3 &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Nathan Totten: Introduction to Facebook Development &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Oleg Sych: Introduction to ASP.NET Dynamic Data &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; RASESH SHAH: Enabling Payments on your WebMatrix Powered eCommrce Sites &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Sam Abraham: NuGet, Microsoft ASP.Net MVC 3 and WebMatrix &lt;/p&gt;  &lt;p&gt;&lt;b&gt;Design &amp;amp; Animation&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Chris G. Williams: Making Games for Windows Phone 7 with XNA 4.0&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Diane Leeper: Animating in Blend: It's ALIVE&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Diane Leeper: Design for Developers: Bad Design Kills Good Projects&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Henry Lee: Windows Phone 7 Animation&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Konrad Neumann: Being a Designer in a Developer's World&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Nikita Polyakov: Rapid Prototyping with SketchFlow in Expression Blend&amp;#160;&amp;#160; &lt;/p&gt;  &lt;p&gt;&lt;b&gt;WP7&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Henry Lee: Learn to Use Accelerometer and Location Service (GPS) in Windows Phone Application &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Joe Healy: Consuming Services in Windows Phone 7 &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Kevin Wolf: Work From Anywhere = WFA (Part 1) &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Kevin Wolf: Work From Anywhere = WFA (Part 2) &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Nikita Polyakov: WP7 Marketplace Place and Monetization &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Russell Fustino: Making (More) Money with Phone 7&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-6990376678218677245?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/6990376678218677245/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=6990376678218677245' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/6990376678218677245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/6990376678218677245'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/03/orlando-code-campspeaker-notification.html' title='Orlando Code Camp–Speaker Notification'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_4X_zNPuy6C8/TXo7rY2crbI/AAAAAAAAAHc/TK4s5xe0upE/s72-c/CodeCamp%5B3%5D.gif?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-7264885214352980751</id><published>2011-03-05T20:39:00.000-05:00</published><updated>2011-03-12T12:39:30.620-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>Pointing a copied Iteration Backlog.xlsx to a different Team Project</title><content type='html'>&lt;p&gt;If you ever copy the Iteration Backlog.xlsx file from one Team Project to another (usually because you are upgrading an old Team Project to the TFS 2010 templates), then you probably get one of these errors:&lt;/p&gt;  &lt;p&gt;&amp;quot;T80076: The data in the work item is no valid or you do not have permissions to modify the data. Please correct the problem and retry.&amp;quot;&lt;/p&gt;  &lt;p&gt;&amp;quot;TFS208103: The initialization of the workbook to connect to Team Foundation Server was not successful....&amp;quot;&lt;/p&gt;  &lt;p&gt;You need to reconnect the spreadsheet to the right place.&lt;/p&gt;  &lt;p&gt;There’s instructions on how to do that: &lt;a href="http://msdn.microsoft.com/en-us/library/ff452586.aspx"&gt;http://msdn.microsoft.com/en-us/library/ff452586.aspx&lt;/a&gt; (almost all the way down), look for “To bind the Iteration Backlog workbook to the Iteration Backlog query”.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-7264885214352980751?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/7264885214352980751/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=7264885214352980751' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/7264885214352980751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/7264885214352980751'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/03/pointing-copied-iteration-backlogxlsx.html' title='Pointing a copied Iteration Backlog.xlsx to a different Team Project'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-4250560897440347828</id><published>2011-02-28T00:14:00.001-05:00</published><updated>2011-02-28T00:14:54.171-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><title type='text'>Coming soon: Orlando Code Camp 2011</title><content type='html'>&lt;p&gt;&lt;a href="http://orlandocodecamp.com"&gt;&lt;img style="margin: " src="http://orlandocodecamp.com/images/codecamp.png" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Orlando Code Camp is right around the corner in just under 4 weeks.&amp;#160; This year, the event is going to be bigger than ever.&amp;#160; Our team has been hard at work for the last couple of months organizing the event.&amp;#160; Putting together an event like this takes a lot of work and a lot of help and I’m really lucky to have an awesome team around me.&amp;#160; We have most of our sponsors in place, a great venue at &lt;a href="http://seminolestate.edu/"&gt;Seminole State College&lt;/a&gt;,&amp;#160; our &lt;a href="http://www.orlandocodecamp.com"&gt;website&lt;/a&gt; is up and running (thanks to the hard work of the &lt;a href="http://www.onetug.org"&gt;ONETUG Silverlight SIG&lt;/a&gt;), we have the food all set from &lt;a href="http://www.thumbtack.com/fl/orlando/catering/all-purposes-catering"&gt;Lou of Orlando&lt;/a&gt;, and a ton of other details that will make this our best Code Camp ever!&amp;#160; During this event, we are also hosting &lt;a href="http://orlando.dayofdotnetnuke.com/"&gt;Day of DNN&lt;/a&gt;, which will help us reach out to a broader audience.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-4250560897440347828?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/4250560897440347828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=4250560897440347828' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/4250560897440347828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/4250560897440347828'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/02/coming-soon-orlando-code-camp-2011.html' title='Coming soon: Orlando Code Camp 2011'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-6701603407298642712</id><published>2011-02-27T16:03:00.000-05:00</published><updated>2011-03-12T12:04:16.786-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Version Control'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><category scheme='http://www.blogger.com/atom/ns#' term='Power Tools'/><title type='text'>TFS Tip: Viewing all files checked out to a specific person</title><content type='html'>&lt;p&gt;If you ever want to know what files are checked out to a specific person (under one folder, branch, team project, or your entire collection), this is what you need:&lt;/p&gt;  &lt;p&gt;You need to install Team Foundation Power Tools, you can then go to any folder in Source Control Explorer and right-click -&amp;gt; &amp;quot;Find in Source Control&amp;quot; -&amp;gt; Status -&amp;gt; Select &amp;quot;All Checked out&amp;quot; or &amp;quot;Display files checked out to&amp;quot;.&amp;#160; You have to enter the username in domain\user format.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-6701603407298642712?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/6701603407298642712/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=6701603407298642712' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/6701603407298642712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/6701603407298642712'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/02/tfs-tip-viewing-all-files-checked-out.html' title='TFS Tip: Viewing all files checked out to a specific person'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-7594183003212168123</id><published>2011-02-25T15:26:00.001-05:00</published><updated>2011-02-25T15:26:50.351-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><title type='text'>Dude, where’s my code?  Changeset tracking to the rescue!</title><content type='html'>&lt;p&gt;There’s a new feature in TFS 2010 that I’ve mostly ignored but I think is super powerful.&amp;#160; The new “Tracking Changeset” window gives us a visualizer that shows us exactly what code branches your changeset has made it to.&amp;#160; Not only that, but there’s also a way to look at a timeline that shows you when your code was merged to each branch, in a visual way, of course!&lt;/p&gt;  &lt;p&gt;So how does this work?&lt;/p&gt;  &lt;p&gt;Well, if you have a branch that was created in TFS 2010, then this is turned on automatically.&amp;#160; If you created your branch prior to migrating to TFS 2010, you need to turn this on, it’s pretty easy to do:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;From Source Control Explorer, right-click on your parent branch and select “Branching and Merging”, and then “Convert to Branch”&lt;/li&gt;    &lt;li&gt;On the “Convert to Branch” dialog box, enter a description and click Convert&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;That converts your “old-style” branch into a TFS 2010 branch, and now you open up whole set of new branching features.&amp;#160; For example, you can now right click on that branch again, and instead of the “Convert” option, you now see a “View Herarchy” option.&amp;#160; Selecting that option gives you a nice diagram showing you your branches and how they relate to eachother:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_4X_zNPuy6C8/TWgQd6zB95I/AAAAAAAAAGk/E9Bao9m1zO8/s1600-h/image%5B3%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_4X_zNPuy6C8/TWgQeGzCT2I/AAAAAAAAAGo/86Tjn739AQM/image_thumb%5B1%5D.png?imgmax=800" width="418" height="116" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;That’s cool, but really not that exciting…It just shows that I have a main branch, that is the parent for a development branch and a couple of releases.&lt;/p&gt;  &lt;p&gt;So now let’s look at changeset visualization:&lt;/p&gt;  &lt;p&gt;If you right click on your development branch in Source Control Explorer and look at history, there’s a new icon on the toolbar called “Track changeset” &lt;a href="http://lh4.ggpht.com/_4X_zNPuy6C8/TWgQeg814cI/AAAAAAAAAGs/cIotceSlktg/s1600-h/image%5B11%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_4X_zNPuy6C8/TWgQe3X_jMI/AAAAAAAAAGw/x8erG-ayb58/image_thumb%5B5%5D.png?imgmax=800" width="30" height="31" /&gt;&lt;/a&gt; .&amp;#160; Note that this icon is always available, but if you try it on a folder that is not a branch (a TFS 2010 branch), you will get an errror: TF247005: At least one changeset cannot be tracked because an item is not contained in a branch.&amp;#160; You need to identify a container folder and convert it to a branch.&amp;#160; So if you select that option on a Branch folder, you will see this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_4X_zNPuy6C8/TWgQfL_ovPI/AAAAAAAAAG0/1-K6teBjVxg/s1600-h/image%5B15%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_4X_zNPuy6C8/TWgQfipCq5I/AAAAAAAAAG4/TXjbWfxbjUw/image_thumb%5B7%5D.png?imgmax=800" width="420" height="158" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The diagram shows that I checked in Changeset # 16 into my Development 1.1 branch, I merged it to Main with changeset # 17, and then moved it to to my release branch as part of changeset #18.&amp;#160; On top of that, I can double-click on&amp;#160; the changeset item on the visualizer, and it will give me changeset details.&amp;#160; You also get an option on the toolbar called “Timeline Tracking”.&amp;#160; It gives you a different view of your changes:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/_4X_zNPuy6C8/TWgQf_EfnxI/AAAAAAAAAG8/SVCV8YQY79s/s1600-h/image%5B19%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_4X_zNPuy6C8/TWgQgCfIpRI/AAAAAAAAAHA/U3_cqTKlJHI/image_thumb%5B9%5D.png?imgmax=800" width="400" height="248" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This shows you the same information as the previous chart, but in a timeline way.&amp;#160; So now you know exactly when each changeset was merged (In this sample, i moved it all around the same time, so you only see one date, but you would see a bunch of different dates at the top if you all your merge operations were done over time).&lt;/p&gt;  &lt;p&gt;Ok, so it gets even better.&amp;#160; Since TFS allows you to associate a changeset to a workitem, you can do the same type of tracking from your workitem.&amp;#160; To do this, open up a workitem that you know is associated to a changeset.&amp;#160; Click on the Track Work Item icon &lt;a href="http://lh6.ggpht.com/_4X_zNPuy6C8/TWgQgWr0cII/AAAAAAAAAHE/Nicmr9oDvFs/s1600-h/image%5B22%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_4X_zNPuy6C8/TWgQgvg23kI/AAAAAAAAAHI/ug3n9lDdErs/image_thumb%5B10%5D.png?imgmax=800" width="33" height="32" /&gt;&lt;/a&gt; and you get this in the Hierarchy Tracking view:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_4X_zNPuy6C8/TWgQg_YRdcI/AAAAAAAAAHM/RvFsNGWT4pU/s1600-h/image%5B26%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_4X_zNPuy6C8/TWgQhTIFXdI/AAAAAAAAAHQ/666vjn3hwu0/image_thumb%5B12%5D.png?imgmax=800" width="434" height="177" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;This tells me that as part of my workitem, I’ve checked in changesets 16, 21, 24 into my development branch and then merged them to main as part of changeset 17 and 22.&amp;#160; Note that the asterisk next to the 22 means that not all changes have been merged yet.&amp;#160; It then says that I merged changes to Release as part of changesets 18 and 23. &lt;/p&gt;  &lt;p&gt;Now let’s look at the Timeline:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_4X_zNPuy6C8/TWgQh4xYlJI/AAAAAAAAAHU/uQBJdyOcUOY/s1600-h/image%5B31%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/_4X_zNPuy6C8/TWgQiHS3pAI/AAAAAAAAAHY/0hG75D0RkbY/image_thumb%5B15%5D.png?imgmax=800" width="626" height="280" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;This shows me all my changes sets and when they got merged to each branch.&amp;#160; It shows that changeset 24 was checked in to the development branch but it hasn’t made it to any of the other branches.&amp;#160; &lt;/p&gt;  &lt;p&gt;Before there was a way to see this, but you had to dig for it.&amp;#160; It’s just so impressive how much work TFS is doing behind the scenes for us.&amp;#160;&amp;#160; So next time someone wonders whether their code made it to another branch, use the tools and find the information pretty quickly and easily!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-7594183003212168123?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/7594183003212168123/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=7594183003212168123' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/7594183003212168123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/7594183003212168123'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/02/dude-wheres-my-code-changeset-tracking.html' title='Dude, where’s my code?  Changeset tracking to the rescue!'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_4X_zNPuy6C8/TWgQeGzCT2I/AAAAAAAAAGo/86Tjn739AQM/s72-c/image_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-2085363625838093320</id><published>2011-02-10T08:29:00.000-05:00</published><updated>2011-03-12T11:29:44.600-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><title type='text'>TFS Trick: Allow only a specific group or person to create work items</title><content type='html'>&lt;p&gt;There are instances where you only want a specific group of people to create work items in TFS.&amp;#160; For example, maybe just the Business Analyst group can create stories, but then anyone should be able to update them.&amp;#160; The easiest way to do this is by setting permissions on the initial transition on the work item definition – from blank to Open/Active or whatever your first state is:&lt;/p&gt;  &lt;p&gt;You can do this in using the TFS Power Tools WIT editor, or you can just easily open your definition in notepad and make this change:&lt;/p&gt;  &lt;p&gt;&amp;lt;Transition from=&amp;quot;&amp;quot; to=&amp;quot;Active&amp;quot; for=&amp;quot;Name of group that is allowed&amp;quot;&amp;gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-2085363625838093320?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/2085363625838093320/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=2085363625838093320' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/2085363625838093320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/2085363625838093320'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/02/tfs-trick-allow-only-specific-group-or.html' title='TFS Trick: Allow only a specific group or person to create work items'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-8853719638142391613</id><published>2011-02-06T17:26:00.000-05:00</published><updated>2011-02-07T09:40:09.424-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><title type='text'>Controlling Data Warehouse refresh in TFS 2010</title><content type='html'>&lt;p&gt;TFS 2010 added some new options to control how and when the data warehouse and Analysis Services cube is refreshed.&amp;#160; From your TFS Server’s Application Tier, browse to this site: &lt;a title="http://myTFSServer:8080/tfs/TeamFoundation/Administration/v3.0/WarehouseControlService.asmx" href="http://myTFSServer:8080/tfs/TeamFoundation/Administration/v3.0/WarehouseControlService.asmx,"&gt;http://myTFSServer:8080/tfs/TeamFoundation/Administration/v3.0/WarehouseControlService.asmx,&lt;/a&gt; click on ChangeSettings, and from there you can enter the Setting ID and the new value.&amp;#160; These are the available settings that you can change:&lt;/p&gt;  &lt;p&gt;RunIntervalSeconds – Frequency in which TFS Warehouse data is synchronized.&amp;#160; This is not analysis services, this is the table that the cube gets its data from.&lt;/p&gt;  &lt;p&gt;IncrementalProcessIntervalSeconds - Frequency with which Analysis Database is updated.&amp;#160; This is the one that you are most likely going to change if you want your data to be more “up to date” in your reports.&amp;#160; Just make sure that it’s not a lower number than the “RunIntervalSeconds” value as that would be pointless.&lt;/p&gt;  &lt;p&gt;FullProcessIntervalSeconds – The cube gets fully processed once a day by default, but you can change this setting to get it to run at a different interval.&lt;/p&gt;  &lt;p&gt;DailyFullProcessingTime – Time of day when full cube process should start.&amp;#160; Make sure that this doesn’t land in the middle of the day as full processing takes a big performance hit.&lt;/p&gt;  &lt;p&gt;MaxParallelASProcessingCommands – Max number of commands that can run in parallel in Analysis Services.&lt;/p&gt;  &lt;p&gt;AnalysisSchemaUpdateWaitSeconds - used by Analysis processing jobs trying to acquire an exclusive access to the warehouse resources during the Schema Change stage.&lt;/p&gt;  &lt;p&gt;SchemaUpdateWaitSeconds - How long a job will be waiting in the Running state for the exclusive access to call IWarehouseAdapter.SchemaChange().&lt;/p&gt;  &lt;p&gt;DataUpdateWaitSeconds - how long a job will be waiting in the Running state for another adapter making Schema changes or for Analysis Processing job changing Analysis Database schema.&lt;/p&gt;  &lt;p&gt;WarehouseCommandSqlTimeout - used for acquiring an exclusive access to a warehouse resource&lt;/p&gt;  &lt;p&gt;AnalysisServicesProcessingTimeout - How long to wait for an Analysis Services processing call to complete.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-8853719638142391613?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/8853719638142391613/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=8853719638142391613' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/8853719638142391613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/8853719638142391613'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/02/controlling-data-warehouse-refresh-in.html' title='Controlling Data Warehouse refresh in TFS 2010'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-7700515073234734758</id><published>2011-02-04T16:24:00.001-05:00</published><updated>2011-02-04T16:24:48.015-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Recovering documents from a deleted Team Project portal site</title><content type='html'>&lt;p&gt;I’ll preface this by saying that up until the point that I needed to do this, i knew very little about the database structure that supports SharePoint.&amp;#160; &lt;/p&gt;  &lt;p&gt;I intentionally deleted the SharePoint portal used by one of my Team Projects.&amp;#160; The reason for it was that I wanted to implement a brand new structure, along with a new Dashboard to support TFS 2010.&amp;#160; I backed up all the documents that I thought needed to be saved (so I thought) and went about deleting and deploying the new SharePoint project with the new structure (future blog post on that).&amp;#160; &lt;/p&gt;  &lt;p&gt;Early the next day, I realized there were some documents that I never backed up…so this is how I recovered from that.&amp;#160; Note: there may be better ways to do this using SharePoint tools out there, but I don’t know any of them, this felt intuitively right…&lt;/p&gt;  &lt;p&gt;I restored a copy of the wss_Content database in the TFS SQL Server from the previous night.&amp;#160; Looking through the table structure, I found 3 tables that seemed interesting: AllDocs, AllDocVersions, And AllDocStreams.&lt;/p&gt;  &lt;p&gt;After poking around the tables, i came up with this:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;select&lt;/span&gt; * &lt;span class="kwrd"&gt;from&lt;/span&gt; AllDocs
&lt;span class="kwrd"&gt;where&lt;/span&gt; DirName &lt;span class="kwrd"&gt;like&lt;/span&gt; &lt;span class="str"&gt;'Sites/MyTeamProject/Requirements'&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;That gave me a list of all subfolders within the document library that I wanted to restore. I grabbed the each ID from that query, and used it to find all the child documents this way:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;select&lt;/span&gt; a.LeafName, Content &lt;span class="kwrd"&gt;from&lt;/span&gt; AllDocStreams ds &lt;span class="kwrd"&gt;inner&lt;/span&gt; &lt;span class="kwrd"&gt;join&lt;/span&gt; 
AllDocs a &lt;span class="kwrd"&gt;on&lt;/span&gt; ds.Id = a.Id
&lt;span class="kwrd"&gt;where&lt;/span&gt; ds.ParentId = &lt;span class="str"&gt;'{my guid}'&lt;/span&gt;
&lt;span class="kwrd"&gt;and&lt;/span&gt; ds.DeleteTransactionId = 0x&lt;/pre&gt;

&lt;p&gt;This gives me a lits of all the document names, and their byte array for all documents within each directory.&amp;#160; It also gives me back only the ones that were not deleted previously (I don’t need to restore those).&lt;/p&gt;

&lt;p&gt;Then I wrote a very quick utility to extract them:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;            &lt;span class="kwrd"&gt;using&lt;/span&gt; (SqlConnection c = &lt;span class="kwrd"&gt;new&lt;/span&gt; SqlConnection(&lt;span class="str"&gt;&amp;quot;Data Source=.;Initial Catalog=wss_restore;Integrated Security=SSPI;&amp;quot;&lt;/span&gt;))
            {
                c.Open();
                &lt;span class="kwrd"&gt;using&lt;/span&gt; (SqlCommand co = &lt;span class="kwrd"&gt;new&lt;/span&gt; SqlCommand(&lt;span class="str"&gt;&amp;quot;select a.LeafName, Content from AllDocStreams ds inner join AllDocs a on ds.Id = a.Id where ds.ParentId = 'C075EE6D-C04E-4444-8765-F6CC54768AAC' and ds.DeleteTransactionId = 0x&amp;quot;&lt;/span&gt;, c))
                &lt;span class="kwrd"&gt;using&lt;/span&gt; (SqlDataReader r = co.ExecuteReader())
                {
                    &lt;span class="kwrd"&gt;while&lt;/span&gt; (r.Read())
                    {
                        &lt;span class="kwrd"&gt;byte&lt;/span&gt;[] arrAttachmentData = (&lt;span class="kwrd"&gt;byte&lt;/span&gt;[])r[&lt;span class="str"&gt;&amp;quot;Content&amp;quot;&lt;/span&gt;];
                        MemoryStream ms = &lt;span class="kwrd"&gt;new&lt;/span&gt; MemoryStream(arrAttachmentData, &lt;span class="kwrd"&gt;false&lt;/span&gt;);
                        &lt;span class="rem"&gt;//StreamWriter s = new StreamWriter(mem);&lt;/span&gt;


                        FileStream fs = File.OpenWrite(&lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;@&amp;quot;c:\temp\{0}&amp;quot;&lt;/span&gt;, r[&lt;span class="str"&gt;&amp;quot;LeafName&amp;quot;&lt;/span&gt;].ToString()));
                        ms.WriteTo(fs);
                        &lt;span class="rem"&gt;//fs.Write(ms.GetBuffer(), 0, ms.Position);&lt;/span&gt;
                        fs.Close();


                    }
                }
            }&lt;/pre&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;And that’s it…once I had the docs locally, i was able to easily upload them to my new SharePoint portal.&lt;/p&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-7700515073234734758?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/7700515073234734758/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=7700515073234734758' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/7700515073234734758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/7700515073234734758'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/02/recovering-documents-from-deleted-team.html' title='Recovering documents from a deleted Team Project portal site'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-2690489930938094860</id><published>2011-01-26T10:04:00.001-05:00</published><updated>2011-01-26T10:04:19.860-05:00</updated><title type='text'>Could not load type 'System.ServiceModel.Activation.HttpModule' from assembly 'System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'.</title><content type='html'>&lt;p&gt;This is caused when 4.0 components are not properly installed on the IIS Server. To resolve it, you can run this command:   &lt;br /&gt;&amp;gt;aspnet_regiis.exe –iru&lt;/p&gt;  &lt;p&gt;That exe is found here:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;32-bit systems: %SystemRoot%\Microsoft.NET\Framework\v4.0.30319 &lt;/li&gt;    &lt;li&gt;64-bit systems: %SystemRoot%\Microsoft.NET\Framework64\v4.0.30319 &lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-2690489930938094860?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/2690489930938094860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=2690489930938094860' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/2690489930938094860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/2690489930938094860'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/01/could-not-load-type-from-assembly.html' title='Could not load type &amp;#39;System.ServiceModel.Activation.HttpModule&amp;#39; from assembly &amp;#39;System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&amp;#39;.'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-7512239136265112848</id><published>2011-01-13T15:40:00.001-05:00</published><updated>2011-01-13T15:40:22.281-05:00</updated><title type='text'>The required category ‘Microsoft.TestCaseCategory’ does not exist in team project ‘[projectname]’</title><content type='html'>&lt;p&gt;If you are trying to connect Microsoft Test Manager to a Team Project that was created with TFS 2008, then you will very likely get this error: “The required category ‘Microsoft.TestCaseCategory’ does not exist in team project ‘[projectname]’”.&amp;#160; This has to do with the workitem categories that are used by MTM.&amp;#160; Basically, you group different workitem types into categories, which then allow MTM (and also TFS queries) to work with specific workitem types.&amp;#160; The easiest way to get this fixed is to export the categories from a 2010 Team Project, and then import them to your team project:&lt;/p&gt;  &lt;p&gt;&amp;gt;witadmin exportcategories /collection:&lt;a href="http://MyTFS:8080/tfs/DefaultCollection"&gt;http://MyTFS:8080/tfs/DefaultCollection&lt;/a&gt; /p:&amp;quot;Project1&amp;quot; /f:&amp;quot;C:\temp\Categories.xml&amp;quot;&lt;/p&gt;  &lt;p&gt;&amp;gt;witadmin importcategories /collection:&lt;a href="http://MyTFS:8080/tfs/DefaultCollection"&gt;http://MyTFS:8080/tfs/DefaultCollection&lt;/a&gt; /p:&amp;quot;Project2&amp;quot; /f:&amp;quot;C:\temp\Categories.xml&amp;quot;&lt;/p&gt;  &lt;p&gt;The file looks something like this:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;?&lt;/span&gt;&lt;span class="html"&gt;xml&lt;/span&gt; &lt;span class="attr"&gt;version&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;encoding&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;utf-8&amp;quot;&lt;/span&gt;?&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;cat:CATEGORIES&lt;/span&gt; &lt;span class="attr"&gt;xmlns:cat&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;http://schemas.microsoft.com/VisualStudio/2008/workitemtracking/categories&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;CATEGORY&lt;/span&gt; &lt;span class="attr"&gt;refname&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Microsoft.BugCategory&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Bug Category&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;DEFAULTWORKITEMTYPE&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Bug&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;CATEGORY&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;CATEGORY&lt;/span&gt; &lt;span class="attr"&gt;refname&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Microsoft.RequirementCategory&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Requirement Category&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;DEFAULTWORKITEMTYPE&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;User Story&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;CATEGORY&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;CATEGORY&lt;/span&gt; &lt;span class="attr"&gt;refname&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Microsoft.SharedStepCategory&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Shared Step Category&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;DEFAULTWORKITEMTYPE&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Shared Steps&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;CATEGORY&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;CATEGORY&lt;/span&gt; &lt;span class="attr"&gt;refname&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Microsoft.TestCaseCategory&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Test Case Category&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;DEFAULTWORKITEMTYPE&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Test Case&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;CATEGORY&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;cat:CATEGORIES&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;/p&gt;

&lt;p&gt;Of course, you need to make sure that your team project has a “Share Steps” and “Test Case” workitem types defined, which you can also import from your 2010 project (witexport, witimport).&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-7512239136265112848?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/7512239136265112848/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=7512239136265112848' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/7512239136265112848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/7512239136265112848'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/01/required-category-microsofttestcasecate.html' title='The required category ‘Microsoft.TestCaseCategory’ does not exist in team project ‘[projectname]’'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-5647765674119071418</id><published>2011-01-13T14:29:00.001-05:00</published><updated>2011-01-13T14:29:06.616-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><title type='text'>Destroying Work Item Types in TFS 2010</title><content type='html'>&lt;p&gt;If you have a workitem type that you don’t use or no longer need in TFS, you can destroy the type (along with all the work items of that type):&lt;/p&gt;  &lt;p&gt;&amp;gt;witadmin destroywitd /collection:&lt;a href="http://MyTFS:8080/tfs/DefaultCollection"&gt;http://MyTFS:8080/tfs/DefaultCollection&lt;/a&gt; /p:MyTeamProject /n:Task&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-5647765674119071418?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/5647765674119071418/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=5647765674119071418' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/5647765674119071418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/5647765674119071418'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/01/destroying-work-item-types-in-tfs-2010.html' title='Destroying Work Item Types in TFS 2010'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-8203378226186905679</id><published>2011-01-10T22:43:00.001-05:00</published><updated>2011-01-10T22:43:40.556-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><title type='text'>Deleting WorkItems in TFS</title><content type='html'>&lt;p&gt;If you ever need to delete (destroy) workitems in TFS, use the witadmin utility to do so:&lt;/p&gt;  &lt;p&gt;witadmin destroywi /collection:&lt;a href="http://myserver:8080/tfs/DefaultCollection"&gt;http://myserver:8080/tfs/DefaultCollection&lt;/a&gt; /id:123,444,555&lt;/p&gt;  &lt;p&gt;As you can see, you can destroy multiple work items at a time.&amp;#160; There’s no turning back once you delete a workitem, so make sure that you really wanted to get rid of it.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-8203378226186905679?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/8203378226186905679/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=8203378226186905679' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/8203378226186905679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/8203378226186905679'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/01/deleting-workitems-in-tfs.html' title='Deleting WorkItems in TFS'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-1127851796855671932</id><published>2011-01-10T22:17:00.001-05:00</published><updated>2011-01-10T22:17:18.858-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><title type='text'>Changing Work Item Field attributes</title><content type='html'>&lt;p&gt;Sometimes you have to change the attributes of a work item field in TFS.&amp;#160; For example, let’s say that when you created a field, you gave it a friendly name of&amp;#160; “ReferenceID” and now you want to add a space and name it “Reference ID”. Or maybe when you created it, you gave it a reporting attribute of “Dimension”, but it really should’ve been “Details”.&amp;#160; One way to do it would be to get rid of the field and re-create it, but the right way to do it would be to use the witadmin command with “changefield” option, so this would change the name of the field.&amp;#160; Note that the /n swithc is for the unique reference name.&lt;/p&gt;  &lt;p&gt;witadmin changefield /collection:&lt;a href="http://myserver:8080/tfs/DefaultCollection"&gt;http://myserver:8080/tfs/DefaultCollection&lt;/a&gt; /n:MyFields.ReferenceID /name:&amp;quot;Reference ID&amp;quot;&lt;/p&gt;  &lt;p&gt;There’s a bunch of options…you can see the documentation here: &lt;a title="http://msdn.microsoft.com/en-us/library/dd236909.aspx" href="http://msdn.microsoft.com/en-us/library/dd236909.aspx"&gt;http://msdn.microsoft.com/en-us/library/dd236909.aspx&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-1127851796855671932?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/1127851796855671932/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=1127851796855671932' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/1127851796855671932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/1127851796855671932'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2011/01/changing-work-item-field-attributes.html' title='Changing Work Item Field attributes'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-7657655852171654587</id><published>2010-12-27T15:28:00.001-05:00</published><updated>2010-12-27T15:28:45.757-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><title type='text'>TFS Licensing White paper</title><content type='html'>&lt;p&gt;I recently had to look up some information regarding TFS Licensing (CAL’s and SQL Server), here is the white paper published by Microsoft on it: &lt;a title="http://download.microsoft.com/download/7/B/1/7B18407A-AC79-4949-A318-A6636D96F497/Visual%20Studio%202010%20Licensing%20-%20Feb-2010.pdf" href="http://download.microsoft.com/download/7/B/1/7B18407A-AC79-4949-A318-A6636D96F497/Visual%20Studio%202010%20Licensing%20-%20Feb-2010.pdf"&gt;http://download.microsoft.com/download/7/B/1/7B18407A-AC79-4949-A318-A6636D96F497/Visual%20Studio%202010%20Licensing%20-%20Feb-2010.pdf&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I wish it was a bit simpler, but at least the document covers all the bases.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-7657655852171654587?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/7657655852171654587/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=7657655852171654587' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/7657655852171654587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/7657655852171654587'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2010/12/tfs-licensing-white-paper.html' title='TFS Licensing White paper'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-8857925684807097609</id><published>2010-12-22T12:36:00.001-05:00</published><updated>2010-12-22T12:36:58.711-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><title type='text'>Rolling back changes in TFS</title><content type='html'>&lt;p&gt;Although you cannot get rid of changesets in TFS, you can easily roll back a change if something was mistakenly checked-in.&amp;#160; This functionality used to be part of Team Foundation Power Tools, but it is now part of the regular TFS functionality, in command-line:&lt;/p&gt;  &lt;p&gt;tf rollback /changeset:1234&lt;/p&gt;  &lt;p&gt;There’s a bunch of parameters that you can specify, such as version to rollback to, date, workspace, etc.&amp;#160; Just do tf rollback /? to see all the options.&lt;/p&gt;  &lt;p&gt;After you run the command, you will still need to check-in your changes, and you will now see a “rollback” entry in history, so like I said, you really are not getting rid of your bad check-in, just getting things back to were they were before.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-8857925684807097609?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/8857925684807097609/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=8857925684807097609' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/8857925684807097609'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/8857925684807097609'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2010/12/rolling-back-changes-in-tfs.html' title='Rolling back changes in TFS'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-8625241816198918830</id><published>2010-12-03T10:33:00.001-05:00</published><updated>2010-12-03T10:33:14.336-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><title type='text'>Accessing TFS 2010 from Visual Studio 2008 or 2005</title><content type='html'>&lt;p&gt;After installing TFS 2010, in order to connect to it from VS 2008 or 2005, you must install the Service Pack 1 Forward Compatibility Update for Team Foundation Server 2010.&amp;#160; You can download the &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=cf13ea45-d17b-4edc-8e6c-6c5b208ec54d&amp;amp;displaylang=en"&gt;2008 version here&lt;/a&gt;, and the &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=22215e4c-af6f-4e2f-96df-20e94d762689&amp;amp;displaylang=en"&gt;2005 version here&lt;/a&gt;.&amp;#160; Note that you have to have Service Pack 1 installed before you can apply the update.&amp;#160; &lt;/p&gt;  &lt;p&gt;Once the update is installed, you need to disconnect from the old TFS 2008 (even if 2010 is on the same server) and reconnect.&amp;#160; The server name should be entered in this format:&amp;#160; &lt;a href="http://&amp;lt;servername&amp;gt;:8080/tfs"&gt;:8080/tfs&amp;quot;&amp;gt;http://&amp;lt;servername&amp;gt;:8080/tfs&lt;/a&gt;.&amp;#160; That is assuming that you used the default port number and virtual directory.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-8625241816198918830?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/8625241816198918830/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=8625241816198918830' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/8625241816198918830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/8625241816198918830'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2010/12/accessing-tfs-2010-from-visual-studio.html' title='Accessing TFS 2010 from Visual Studio 2008 or 2005'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-4720285101311696463</id><published>2010-11-05T14:42:00.000-04:00</published><updated>2010-11-05T14:43:10.832-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><category scheme='http://www.blogger.com/atom/ns#' term='WP7'/><title type='text'>ONETUG: BizSpark WP7 Developer Day Event tomorrow</title><content type='html'>&lt;p&gt;We have a sold-out event (100 registered attendees) tomorrow.&amp;#160; Be there early to get a good seat. Breakfast will be ready at 8:30 am and the first speaker will start promptly at 9:00 am.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Event&lt;/b&gt;: BizSpark WP7 Developer Day    &lt;br /&gt;&lt;b&gt;Date&lt;/b&gt;: Saturday, November 06, 2010 from 8:30 AM - 5:00 PM (ET)    &lt;br /&gt;&lt;b&gt;Location&lt;/b&gt;:     &lt;br /&gt;&lt;b&gt;DeVry University&lt;/b&gt;    &lt;br /&gt;4000 Millenia Blvd.    &lt;br /&gt;Orlando, FL 32839&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Prizes&lt;/b&gt;: We will be giving away prizes from &lt;a href="http://www.componentart.com"&gt;Component Art&lt;/a&gt;, &lt;a href="http://www.codesmithtools.com"&gt;CodeSmith&lt;/a&gt;, &lt;a href="http://www.steema.com"&gt;Steema&lt;/a&gt;, &lt;a href="http://www.syncfusion.com"&gt;Syncfusion&lt;/a&gt;, &lt;a href="http://www.obout.com/"&gt;obout&lt;/a&gt;, &lt;a href="http://www.viblend.com"&gt;viblend&lt;/a&gt;, &lt;a href="http://www.telerik.com"&gt;Telerik&lt;/a&gt;, &lt;a href="http://www.xceed.com"&gt;Xceed&lt;/a&gt;, &lt;a href="http://www.firstfloorsoftware.com"&gt;First Floor Software&lt;/a&gt;, &lt;a href="http://www.sqlsets.com/"&gt;SQLSets&lt;/a&gt;, &lt;a href="http://www.microsoft.com/en/us/default.aspx"&gt;Microsoft&lt;/a&gt;, and &lt;a href="http://onetug.org/files/ONETUGVSLOrlandoFlyer.pdf"&gt;VSLive&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;For more information click here&lt;/b&gt;: &lt;a href="http://bizsparkwp7.eventbrite.com"&gt;BizSpark WP7 Developer Day&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-4720285101311696463?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/4720285101311696463/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=4720285101311696463' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/4720285101311696463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/4720285101311696463'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2010/11/onetug-bizspark-wp7-developer-day-event.html' title='ONETUG: BizSpark WP7 Developer Day Event tomorrow'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-1857143594451378855</id><published>2010-11-01T14:36:00.001-04:00</published><updated>2010-11-01T14:36:50.134-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><category scheme='http://www.blogger.com/atom/ns#' term='WP7'/><title type='text'>BizSpark WP7 Developer Day</title><content type='html'>&lt;p&gt;This Saturday (November 6th), we are hosting an all-day Windows Phone 7 Event focused on getting developers up to speed with the tools and technology needed to launch applications into the Marketplace.&amp;#160; The event will be held at DeVry University (4000 Millenia Blvd., Orlando, FL 32839).&amp;#160; We are going to have a ton of content which will help everyone that is trying to understand how to build Windows Phone 7 applications.&amp;#160; &lt;/p&gt;  &lt;p&gt;We will kick off the morning with Brian Johnson, Microsoft’s Startup Evangelist.&amp;#160; He will discuss the BizSpark program and how your company can get enrolled in this really awesome program that gives you all sorts of free Microsoft software.&amp;#160; &lt;/p&gt;  &lt;p&gt;We will then move on to WP7 content by Joe Healy, Microsoft (.NET Developer Evangelist) and Nikita Polyakov (WP7 MVP). &lt;/p&gt;  &lt;p&gt;After lunch, we will follow along WP7 samples and we will have a Windows Phone application showcase by developers from our community.&amp;#160;&amp;#160; Joe will also have a few phone available so you can load your app on a real phone and test it.&lt;/p&gt;  &lt;p&gt;Breakfast and lunch will be server and we will have a ton of prizes, including a free 4-day pass to VS Live here in Orlando!&lt;/p&gt;  &lt;p&gt;To register: &lt;a href="http://bizsparkwp7.eventbrite.com/"&gt;http://bizsparkwp7.eventbrite.com/&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-1857143594451378855?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/1857143594451378855/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=1857143594451378855' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/1857143594451378855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/1857143594451378855'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2010/11/bizspark-wp7-developer-day.html' title='BizSpark WP7 Developer Day'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-7597033381292246838</id><published>2010-10-19T20:58:00.001-04:00</published><updated>2010-10-19T22:25:18.914-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WP7'/><title type='text'>Baby Time – My first entry into the WP7 Marketplace</title><content type='html'>&lt;p&gt;&lt;a href="http://lh3.ggpht.com/_4X_zNPuy6C8/TL4-oxodU-I/AAAAAAAAAFk/zLYfdcj_bCI/s1600-h/LargePCTile%5B2%5D.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="LargePCTile" border="0" alt="LargePCTile" src="http://lh3.ggpht.com/_4X_zNPuy6C8/TL4-pJMAzJI/AAAAAAAAAFo/ec8Qw56Yv2M/LargePCTile_thumb.png?imgmax=800" width="204" height="204" /&gt;&lt;/a&gt;&amp;#160;&amp;#160; &lt;a href="http://lh3.ggpht.com/_4X_zNPuy6C8/TL5O2QUvq9I/AAAAAAAAAFs/ioYdLKIhuyI/s1600-h/SelectWeek%5B2%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="SelectWeek" border="0" alt="SelectWeek" src="http://lh4.ggpht.com/_4X_zNPuy6C8/TL5O2vSXVMI/AAAAAAAAAFw/satRPhSn7Hk/SelectWeek_thumb.png?imgmax=800" width="148" height="244" /&gt;&lt;/a&gt;&amp;#160;&amp;#160; &lt;a href="http://lh6.ggpht.com/_4X_zNPuy6C8/TL5O3BT_LqI/AAAAAAAAAF0/W-qXPvwB_j4/s1600-h/PickWeek%5B2%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="PickWeek" border="0" alt="PickWeek" src="http://lh4.ggpht.com/_4X_zNPuy6C8/TL5O3nn3IhI/AAAAAAAAAF4/kR9ay5bOXcw/PickWeek_thumb.png?imgmax=800" width="148" height="244" /&gt;&lt;/a&gt; &lt;a href="http://lh6.ggpht.com/_4X_zNPuy6C8/TL5O3wC4faI/AAAAAAAAAF8/G9a-PFCYbG0/s1600-h/CurrentWeek%5B2%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="CurrentWeek" border="0" alt="CurrentWeek" src="http://lh4.ggpht.com/_4X_zNPuy6C8/TL5O4cEAylI/AAAAAAAAAGA/Tv5HQlix4Ns/CurrentWeek_thumb.png?imgmax=800" width="148" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Yesterday morning, my first Windows Phone application was accepted into the Marketplace.&amp;#160; It’s a pretty simple application that helps moms-to-be keep track of their baby’s development before they are born.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Why Baby Time?      &lt;br /&gt;&lt;/strong&gt;We are currently expecting a baby girl and it seemed like every other day, my wife would ask me about which week she was on at the moment.&amp;#160; Also, as each week passed, she would go on the web and check for the expected baby weight/length as well as what was going on this week.&amp;#160; At the moment I was working on another (bigger) WP7 app an I thought that it would be fun to put something together for her.&amp;#160; Once I got started, a few other ideas came to mind (such as international measures) and the app was on its way.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Technology&lt;/strong&gt;     &lt;br /&gt;Earlier in summer, at Jax Code Camp, I went to a session on the Caliburn.Micro framework, and I was hooked!&amp;#160; I worked on a couple of Silverlight apps this year where we used another framework and Caliburn.Micro just seemed like it was so much lighter to use and it was a lot easier to accomplish my “no code-behind” goal.&amp;#160; It also has great support for Tombstoning, and a few other features.&amp;#160; So I decided to give it a try for this project and it was a great decision.&amp;#160; &lt;br /&gt;For my controls, I used the Silverlight Toolkit (WP7 version) since I needed a nice calendar control.&amp;#160; I used the standard Panorama control for my “week picker” and then plain standard textblock controls and buttons for everything else.     &lt;br /&gt;My data is stored in an xml file, which is an embedded resource, and I used LINQ to XML to load the data into my data object.&lt;/p&gt;  &lt;p&gt;All in all, since I am pretty comfortable with Silverlight, the development experience was really good and felt very natural.&amp;#160; Granted, this is not the most advanced application in the world, but still, i would imagine that it would’ve been a ton more work on other platforms.&amp;#160; The hardest thing for me was to come up with my graphics, but that’s mostly because i’m very graphically-challenged :)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Some show-and-tell      &lt;br /&gt;&lt;/strong&gt;As I mentioned, my “week picker” uses a panorama control. The items in the panorama are data-driven based on what weeks I have defined in my XML file.&amp;#160; So I used the ItemTemplate to define what each item should look like and bound the Panorama Control to a List&amp;lt;int&amp;gt; in my ViewModel.&amp;#160; Yes…simple!&lt;/p&gt;  &lt;pre class="csharpcode"&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;controls:Panorama&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;panoWeek&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Grid&lt;/span&gt;.&lt;span class="attr"&gt;Row&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;1&amp;quot;&lt;/span&gt; 
                           &lt;span class="attr"&gt;ItemsSource&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;{Binding WeekNumbers}&amp;quot;&lt;/span&gt; 
                           &lt;span class="attr"&gt;DefaultItem&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;{Binding WeekNumber}&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;controls:Panorama.HeaderTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;DataTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextBlock&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;DataTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;controls:Panorama.HeaderTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;controls:Panorama.ItemTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;DataTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;StackPanel&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;TextBlock&lt;/span&gt; &lt;span class="attr"&gt;TextAlignment&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Center&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;FontSize&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;300&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;{Binding}&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Foreground&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;#FF1BA1E2&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
                    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;StackPanel&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;DataTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;controls:Panorama.ItemTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;controls:Panorama&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;And my ViewModel property (yes, Caliburn.Micro is that cool):&lt;/p&gt;

&lt;pre class="csharpcode"&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; List&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;&amp;gt; WeekNumbers
        {
            get
            {
                &lt;span class="kwrd"&gt;return&lt;/span&gt; BabyData.AvailableWeeks;
            }
        }&lt;/pre&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;The calendar control was really easy to use.&amp;#160; I was not able to figure out how to hook up the control to Caliburn.Micro (I know, I’m a n00b) , so I ended up using the standard Binding sintax for that:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;toolkit:DatePicker&lt;/span&gt; &lt;span class="attr"&gt;x:Name&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;StartDate&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;Value&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;{Binding StartDate, Mode=TwoWay}&amp;quot;&lt;/span&gt;  &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;And then to finish off, I had to send out an email and browse to my website. Note that this “magically” works because I named my buttons “Email” and “BrowseToM2E” respectively:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; Email()
        {
            EmailComposeTask task = &lt;span class="kwrd"&gt;new&lt;/span&gt; EmailComposeTask();
            task.To = EmailAddress;
            task.Subject = &lt;span class="str"&gt;&amp;quot;Questions about BabyTime&amp;quot;&lt;/span&gt;;
            task.Show();
        }

        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; BrowseToM2E()
        {
            WebBrowserTask task = &lt;span class="kwrd"&gt;new&lt;/span&gt; WebBrowserTask();
            task.URL = CompanyUrl;
            task.Show();
        }&lt;/pre&gt;

&lt;p&gt;&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;/p&gt;

&lt;p&gt;Conclusion: It’s really easy to build a Windows Phone 7 application, especially if you already know .NET and Silverlight!&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Here’s a quick recording of the app in action:&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:dddc498a-f6f3-4870-b7b8-b4b6c7a1af47" class="wlWriterEditableSmartContent"&gt;&lt;div id="8eba4535-7a85-45de-90f4-6d106cb7dd38" style="margin: 0px; padding: 0px; display: inline;"&gt;&lt;div&gt;&lt;a href="http://www.youtube.com/watch?v=pRei6x5RPkM" target="_new"&gt;&lt;img src="http://lh3.ggpht.com/_4X_zNPuy6C8/TL5TDu4evmI/AAAAAAAAAGE/OYdZKYiw9fc/videof5a22df6904d%5B3%5D.jpg?imgmax=800" style="border-style: none" galleryimg="no" onload="var downlevelDiv = document.getElementById('8eba4535-7a85-45de-90f4-6d106cb7dd38'); downlevelDiv.innerHTML = &amp;quot;&amp;lt;div&amp;gt;&amp;lt;object width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;param name=\&amp;quot;movie\&amp;quot; value=\&amp;quot;http://www.youtube.com/v/pRei6x5RPkM&amp;amp;hl=en\&amp;quot;&amp;gt;&amp;lt;\/param&amp;gt;&amp;lt;embed src=\&amp;quot;http://www.youtube.com/v/pRei6x5RPkM&amp;amp;hl=en\&amp;quot; type=\&amp;quot;application/x-shockwave-flash\&amp;quot; width=\&amp;quot;425\&amp;quot; height=\&amp;quot;355\&amp;quot;&amp;gt;&amp;lt;\/embed&amp;gt;&amp;lt;\/object&amp;gt;&amp;lt;\/div&amp;gt;&amp;quot;;" alt=""&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-7597033381292246838?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/7597033381292246838/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=7597033381292246838' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/7597033381292246838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/7597033381292246838'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2010/10/baby-time-my-first-entry-into-wp7.html' title='Baby Time – My first entry into the WP7 Marketplace'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_4X_zNPuy6C8/TL4-pJMAzJI/AAAAAAAAAFo/ec8Qw56Yv2M/s72-c/LargePCTile_thumb.png?imgmax=800' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-3774827092356554549</id><published>2010-10-18T17:04:00.001-04:00</published><updated>2010-10-18T17:04:14.829-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><category scheme='http://www.blogger.com/atom/ns#' term='WP7'/><title type='text'>Upcoming events at ONETUG and the rest of the community</title><content type='html'>&lt;p&gt;Windows Phone 7 is our theme for the month! Here are the events planned for the next few weeks:&lt;/p&gt;  &lt;p&gt;&lt;b&gt;ONETUG EVENTS&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;ONETUG Meeting: Windows Phone 7 with Kevin Wolf – October 21&lt;sup&gt;st&lt;/sup&gt;&lt;/b&gt;    &lt;br /&gt;Come join Windows Phone Development MVP, Kevin Wolf as he shows us how to manage data on your WP7 application. The meeting will be kicked off by Bob Baker showing us what you can do with LightSwitch.    &lt;br /&gt;Register: &lt;a href="http://onetug-october2010.eventbrite.com/"&gt;http://onetug-october2010.eventbrite.com/&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;ONETUG Meeting: Visual Studio Team – November 15&lt;sup&gt;th&lt;/sup&gt; &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;BizSpark WP7 Developer Day – November 6&lt;sup&gt;th&lt;/sup&gt;&lt;/b&gt;    &lt;br /&gt;We’ve teamed up with BizSpark and DeVry to bring you a full day of Windows Phone 7 training. More details to come soon. Register: &lt;a href="http://bizsparkwp7.eventbrite.com/"&gt;http://bizsparkwp7.eventbrite.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;COMMUNITY EVENTS&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Tallahassee Code Camp – October 23&lt;sup&gt;rd       &lt;br /&gt;&lt;/sup&gt;&lt;/b&gt;&lt;a href="http://www.tallycodecamp.org"&gt;http://www.tallycodecamp.org&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Tampa Code Camp – November 13&lt;sup&gt;th&lt;/sup&gt; &lt;sup&gt;       &lt;br /&gt;&lt;/sup&gt;&lt;/b&gt;&lt;a href="http://www.tampacodecamp.com"&gt;http://www.tampacodecamp.com&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;VSLive Orlando – November 14&lt;sup&gt;th&lt;/sup&gt; – 17&lt;sup&gt;th&lt;/sup&gt; &lt;/b&gt;    &lt;br /&gt;The VSLive Conference is back in Orlando. Sign up with priority code “ONETUG”and save $400! For more information: &lt;a href="http://onetug.org/files/ONETUGVSLOrlandoFlyer.pdf"&gt;http://onetug.org/files/ONETUGVSLOrlandoFlyer.pdf&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Monthly Virtual Brown Bag Meetings&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Our last Virtual Meeting (Entity Framework with Julie Lerman) was a huge success. You can view the recording here: &lt;a href="https://www323.livemeeting.com/cc/usergroups/view?id=2C4D7R"&gt;https://www323.livemeeting.com/cc/usergroups/view?id=2C4D7R&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Keep an eye out on INETA LIVE(&lt;a href="http://live.ineta.org/Presentation/Group"&gt;http://live.ineta.org/Presentation/Group&lt;/a&gt;), where a lot of our VBB recordings will be hosted after the event!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-3774827092356554549?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/3774827092356554549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=3774827092356554549' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/3774827092356554549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/3774827092356554549'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2010/10/upcoming-events-at-onetug-and-rest-of.html' title='Upcoming events at ONETUG and the rest of the community'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-8269066404743994276</id><published>2010-10-06T22:01:00.001-04:00</published><updated>2010-10-06T22:01:53.336-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><category scheme='http://www.blogger.com/atom/ns#' term='WP7'/><title type='text'>ONETUG Stuff for the next few weeks</title><content type='html'>&lt;p&gt;&lt;b&gt;Virtual Brown Bag – October 7th&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;We are hosting Entity Framework super-expert Julie Lerman tomorrow Thursday at noon via LiveMeeting. Register: &lt;a href="https://www.livemeeting.com/lrs/8000181573/Registration.aspx?pageName=b8fb1wkwg0h6dfmx"&gt;https://www.livemeeting.com/lrs/8000181573/Registration.aspx?pageName=b8fb1wkwg0h6dfmx&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;NerdDinner – October 7th&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Join us at Milennia Mall at 7 pm on Thursday to talk about the Virtual Brown Bag. Also, if you have any Windows Phone 7 apps that you are working on, you’ll be able to load it onto an a WP7 device. The best app will get a prize! Register: &lt;a href="http://www.nerddinner.com/3070"&gt;http://www.nerddinner.com/3070&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Orlando SQL Saturday – October 16th&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;SQLSaturday is a training event for SQL Server professionals and students wanting to learn about SQL Server. Register: &lt;a href="http://www.sqlsaturday.com/49/eventhome.aspx"&gt;http://www.sqlsaturday.com/49/eventhome.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;Windows Phone 7 with Kevin Wolf – October 21st&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Come join Windows Phone Development MVP, Kevin Wolf as he shows us how to manage data on your WP7 application. Register: &lt;a href="http://onetug-october2010.eventbrite.com/"&gt;http://onetug-october2010.eventbrite.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;BizSpark WP7 Developer Day – November 6th&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;We’ve teamed up with BizSpark and DeVry to bring you a full day of Windows Phone 7 training. More details to come soon. Register: &lt;a href="http://bizsparkwp7.eventbrite.com/"&gt;http://bizsparkwp7.eventbrite.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;VSLive Orlando – November 14&lt;sup&gt;th&lt;/sup&gt; – 17&lt;sup&gt;th&lt;/sup&gt; &lt;/b&gt;&lt;/p&gt;  &lt;p&gt;The VSLive Conference is back in Orlando. Sign up with priority code “ONETUG”and save $400! For more information: &lt;a href="http://onetug.org/files/ONETUGVSLOrlandoFlyer.pdf"&gt;http://onetug.org/files/ONETUGVSLOrlandoFlyer.pdf&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-8269066404743994276?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/8269066404743994276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=8269066404743994276' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/8269066404743994276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/8269066404743994276'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2010/10/onetug-stuff-for-next-few-weeks.html' title='ONETUG Stuff for the next few weeks'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-3401517810542368691</id><published>2010-10-05T22:57:00.001-04:00</published><updated>2010-10-05T22:58:40.196-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Community'/><title type='text'>Orlando SQL Saturday – October 16th</title><content type='html'>&lt;blockquote&gt;   &lt;p&gt;In less than 2 weeks, our friends at &lt;a href="http://www.opass.org"&gt;Orlando PASS&lt;/a&gt; will be hosting SQL Saturday#49.&amp;#160; This super successful series has been around for 3 years and it actually got started right here in Orlando.&amp;#160; This is not just for DBA’s, if you are involved with SQL Server in any capacity, there is something for you!&amp;#160; Check out this flyer, which explains the entire event: &lt;a href="http://www.sqlsaturday.com/files/c79cae06-4e43-481f-a48d-1fdffb92758f.pdf"&gt;http://www.sqlsaturday.com/files/c79cae06-4e43-481f-a48d-1fdffb92758f.pdf&lt;/a&gt;. &lt;/p&gt;    &lt;p&gt;Sign up here: &lt;a title="http://www.sqlsaturday.com/49/eventhome.aspx" href="http://www.sqlsaturday.com/49/eventhome.aspx"&gt;http://www.sqlsaturday.com/49/eventhome.aspx&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;I know that Andy, Jack and everyone that is helping them will make this an awesome event!&lt;/p&gt;&lt;/blockquote&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-3401517810542368691?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/3401517810542368691/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=3401517810542368691' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/3401517810542368691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/3401517810542368691'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2010/10/orlando-sql-saturday-october-16th.html' title='Orlando SQL Saturday – October 16th'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-5672069373156276268</id><published>2010-10-05T09:50:00.001-04:00</published><updated>2010-10-05T09:50:59.595-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WP7'/><title type='text'>Windows Phone 7 Developer Launch Event</title><content type='html'>&lt;p&gt;&lt;a href="http://www.msdnevents.com/wp7devlaunch/"&gt;&lt;img style="display: inline" title="728x90_Banner_WP7DevLaunch" alt="728x90_Banner_WP7DevLaunch" src="http://lh4.ggpht.com/_4X_zNPuy6C8/TKstB8vZ9sI/AAAAAAAAAFg/jm4pi4SVwSM/728x90_Banner_WP7DevLaunch4.gif?imgmax=800" width="585" height="90" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;It’s finally here! &lt;/p&gt;  &lt;p&gt;You can sign up for the webcast here: &lt;a title="https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032458870&amp;amp;EventCategory=2&amp;amp;culture=en-US&amp;amp;CountryCode=US" href="https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032458870&amp;amp;EventCategory=2&amp;amp;culture=en-US&amp;amp;CountryCode=US"&gt;https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032458870&amp;amp;EventCategory=2&amp;amp;culture=en-US&amp;amp;CountryCode=US&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-5672069373156276268?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/5672069373156276268/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=5672069373156276268' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/5672069373156276268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/5672069373156276268'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2010/10/windows-phone-7-developer-launch-event.html' title='Windows Phone 7 Developer Launch Event'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_4X_zNPuy6C8/TKstB8vZ9sI/AAAAAAAAAFg/jm4pi4SVwSM/s72-c/728x90_Banner_WP7DevLaunch4.gif?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-1582849444993145813</id><published>2010-09-20T10:02:00.001-04:00</published><updated>2010-09-24T14:55:58.667-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CI'/><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><title type='text'>Writing unit test cases that target Azure Dev Fabric</title><content type='html'>&lt;p&gt;We are currently building an application that writes to Azure blob-storage as part of its business process.&amp;#160; As I was writing test cases for it, my Blob-storage operations were failing because that code is now running under the context of the test case instead of my web role.&amp;#160; So I needed a way to make sure that:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;DevFabric is running when my test cases start &lt;/li&gt;    &lt;li&gt;The DataConnectionString string is setup to hit DevFabric (I don’t really want to hit the “real” cloud for these test cases) &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;So I added a method marked with the “AssemblyInitialize” attribute in my Unit test project.&amp;#160; In that method, I check to see if DevFabric has started, if it is not started, i kick it off and wait for it to run.&amp;#160; Once that is going, I need to get the Data Connection String from my test project’s app.config file.&amp;#160; And now, when the code to access Blob storage gets called, it will have all the information it needs in order to successfully complete the operation.&amp;#160; &lt;/p&gt;  &lt;p&gt;I have a lot of test cases that hit Azure, so that’s why I used AssemblyInitialize…this code could’ve been placed inside one test case or in a “ClassInitialize” method.&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;[AssemblyInitialize]&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;static&lt;/span&gt; &lt;span class="kwrd"&gt;void&lt;/span&gt; AzureInitialize(TestContext testContext)&lt;/pre&gt;

  &lt;pre class="alt"&gt;        {&lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt;( System.Diagnostics.Process.GetProcessesByName(&lt;span class="str"&gt;&amp;quot;DSService&amp;quot;&lt;/span&gt;).Length == 0)&lt;/pre&gt;

  &lt;pre class="alt"&gt;            {&lt;/pre&gt;

  &lt;pre&gt;                System.Diagnostics.ProcessStartInfo start = &lt;span class="kwrd"&gt;new&lt;/span&gt; System.Diagnostics.ProcessStartInfo();&lt;/pre&gt;

  &lt;pre class="alt"&gt;                start.Arguments = &lt;span class="str"&gt;&amp;quot;/devstore:start&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;                start.FileName = &lt;span class="str"&gt;@&amp;quot;C:\Program Files\Windows Azure SDK\v1.2\bin\csrun.exe&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;                var proc = &lt;span class="kwrd"&gt;new&lt;/span&gt; System.Diagnostics.Process();&lt;/pre&gt;

  &lt;pre class="alt"&gt;                proc.StartInfo = start;&lt;/pre&gt;

  &lt;pre&gt;                proc.Start();&lt;/pre&gt;

  &lt;pre class="alt"&gt;                proc.WaitForExit();&lt;/pre&gt;

  &lt;pre&gt;            }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;            CloudStorageAccount.SetConfigurationSettingPublisher((configName, configSetter) =&amp;gt; configSetter(ConfigurationManager.AppSettings[configName]));&lt;/pre&gt;

  &lt;pre class="alt"&gt;            var azureAccount = CloudStorageAccount.FromConfigurationSetting(&lt;span class="str"&gt;&amp;quot;DataConnectionString&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;        }&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;This is what I added in app.config:&lt;/p&gt;

&lt;pre class="csharpcode"&gt;&amp;lt;appSettings&amp;gt;
    &amp;lt;add key=&lt;span class="str"&gt;&amp;quot;DataConnectionString&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;value&lt;/span&gt;=&lt;span class="str"&gt;&amp;quot;UseDevelopmentStorage=true&amp;quot;&lt;/span&gt; /&amp;gt;
  &amp;lt;/appSettings&amp;gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-1582849444993145813?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/1582849444993145813/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=1582849444993145813' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/1582849444993145813'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/1582849444993145813'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2010/09/writing-unit-test-cases-that-target.html' title='Writing unit test cases that target Azure Dev Fabric'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-6025104622364360771</id><published>2010-09-13T23:10:00.001-04:00</published><updated>2010-09-13T23:10:48.044-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CI'/><category scheme='http://www.blogger.com/atom/ns#' term='Build'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><title type='text'>TF270015: 'MSTest.exe' returned an unexpected exit code. Expected '0'; actual '1'</title><content type='html'>&lt;p&gt;There is a problem in Team Build 2010 when executing Unit Test cases from a Visual Studio 2008 solution.&amp;#160; The test cases run, but when MSTest tries to publish the results to TFS, then you get this error: TF270015: 'MSTest.exe' returned an unexpected exit code. Expected '0'; actual '1'.&amp;#160; Not very informational, and pretty cryptic.&amp;#160; Digging around a little, I found this on MS Connect: &lt;a title="http://connect.microsoft.com/VisualStudio/feedback/details/576322/tf270015-mstest-exe-returned-an-unexpected-exit-code-expected-0-actual-1" href="http://connect.microsoft.com/VisualStudio/feedback/details/576322/tf270015-mstest-exe-returned-an-unexpected-exit-code-expected-0-actual-1"&gt;http://connect.microsoft.com/VisualStudio/feedback/details/576322/tf270015-mstest-exe-returned-an-unexpected-exit-code-expected-0-actual-1&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;They have a hotfix for this, released last month: &lt;a href="http://code.msdn.microsoft.com/KB983504/Release/ProjectReleases.aspx?ReleaseId=4749"&gt;http://code.msdn.microsoft.com/KB983504/Release/ProjectReleases.aspx?ReleaseId=4749&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;They don’t specify where the hot-fix should run, we ran it on the build machine and everything works fine now.&amp;#160; &lt;/p&gt;  &lt;p&gt;Another solution to this problem would’ve been to find the MSBuild task on the build workflow and point it to the 3.5 version rather than the 4.0 that it uses by default on TFS 2010, but what we implemented seemed like a more long-term solution.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-6025104622364360771?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/6025104622364360771/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=6025104622364360771' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/6025104622364360771'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/6025104622364360771'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2010/09/tf270015-returned-unexpected-exit-code.html' title='TF270015: &amp;#39;MSTest.exe&amp;#39; returned an unexpected exit code. Expected &amp;#39;0&amp;#39;; actual &amp;#39;1&amp;#39;'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-4943988951340975923</id><published>2010-08-30T09:26:00.001-04:00</published><updated>2010-08-30T09:26:40.135-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Azure'/><title type='text'>Azure Web Role – Unable to connect</title><content type='html'>&lt;p&gt;I was working with a Demo App and after a successful deployment to Azure (I made it past the Initialize, Starting, and now it was Running).&amp;#160; I have a Web Role and a Worker Role.&amp;#160; I tried hitting the website (something like &lt;a href="http://mysampleapp.cloudapp.net"&gt;http://mysampleapp.cloudapp.net&lt;/a&gt;) and all I got was “Internet Explorer cannot display the webpage”…the typical Site Unavailable message.&amp;#160; It took me a while to figure out what the problem was and finally found that the default port for my web role was set to 8080 instead of 80.&amp;#160; It was an easy switch by going to the properties of my role in VS 2010…silly mistake that took a while to figure out.&amp;#160; Hopefully I save someone a few minutes with this tip.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-4943988951340975923?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/4943988951340975923/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=4943988951340975923' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/4943988951340975923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/4943988951340975923'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2010/08/azure-web-role-unable-to-connect.html' title='Azure Web Role – Unable to connect'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-3766037788270458663</id><published>2010-08-08T23:58:00.001-04:00</published><updated>2010-08-08T23:59:39.725-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VB'/><category scheme='http://www.blogger.com/atom/ns#' term='LINQ'/><title type='text'>LINQ To SQL – Audit changes</title><content type='html'>&lt;p&gt;I was working on a project where I needed to insert an audit record when changes to the database were made.&amp;#160; My first thought was to use triggers, but unfortunately, the deployment model of this application made that option impossible.&amp;#160; So then I turned to the data access layer of the application.&amp;#160; Sure, an “easy” option would’ve been to go through all the calls to the database and add a call to the “audit” function, but that seemed error-prone and difficult to maintain.&amp;#160; Then i turned to the Data Context, which is handled by the DBML class in Linq to SQL.&amp;#160; The DBML inherits from System.Data.Linq.DataContext.&amp;#160; I created a new base class called “AuditableContext” which inherits from DataConext and used it as an interception point for my calls to the Database.&amp;#160; It was easy to switch the DBML to inherit from my new AuditableContext class…just open up the DBML in design mode and go to its properties, then set the Base Class property.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_4X_zNPuy6C8/TF99AXMPyhI/AAAAAAAAAFQ/oPt2uKC0TCg/s1600-h/image%5B3%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/_4X_zNPuy6C8/TF99AqwVX2I/AAAAAAAAAFU/5_DCoaG6aTw/image_thumb%5B1%5D.png?imgmax=800" width="412" height="226" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Having done that, now I had a nice interception point for all my calls.&amp;#160; So now I created an Override method for SubmitChanges(), which gets called on any Insert, Update, Delete operation using L2S (note, that this is not called for stored procedures).&amp;#160; In SubmitChanges() I can interrogate the changeset and pull out the fields that changed, the before and after values, and of course the table name.&amp;#160; I also added an “AuditEnabled” property that allows me to turn the behavior on or off (it’s off by default) at the time that i instantiate the context.&amp;#160; Here is the code that gets the changes out…it’s VB.NET, so don’t be afraid :)&amp;#160;&amp;#160; I simplified the code a bit for the demo, so be sure to check for nulls and apply good exception handling…this shows the logic to capture updates, but if you need inserts and deletes as well, you can follow the same pattern.&amp;#160; &lt;/p&gt;  &lt;pre class="csharpcode"&gt; &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Overrides&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; SubmitChanges(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; failureMode &lt;span class="kwrd"&gt;As&lt;/span&gt; System.Data.Linq.ConflictMode)
        &lt;span class="kwrd"&gt;If&lt;/span&gt; AuditEnabled &lt;span class="kwrd"&gt;Then&lt;/span&gt;
            &lt;span class="kwrd"&gt;Dim&lt;/span&gt; _Updates &lt;span class="kwrd"&gt;As&lt;/span&gt; IEnumerable = GetChangeSet().Updates
            &lt;span class="kwrd"&gt;If&lt;/span&gt; &lt;span class="kwrd"&gt;Not&lt;/span&gt; _Updates &lt;span class="kwrd"&gt;Is&lt;/span&gt; &lt;span class="kwrd"&gt;Nothing&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;
                &lt;span class="kwrd"&gt;For&lt;/span&gt; &lt;span class="kwrd"&gt;Each&lt;/span&gt; _Entity &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Object&lt;/span&gt; &lt;span class="kwrd"&gt;In&lt;/span&gt; _Updates
                    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; _EntityType &lt;span class="kwrd"&gt;As&lt;/span&gt; Type = _Entity.&lt;span class="kwrd"&gt;GetType&lt;/span&gt;()
                    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; _Table &lt;span class="kwrd"&gt;As&lt;/span&gt; ITable = GetTable(_EntityType)
                    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; _ModifiedList &lt;span class="kwrd"&gt;As&lt;/span&gt; ModifiedMemberInfo() = _Table.GetModifiedMembers(_Entity)

                    &lt;span class="kwrd"&gt;For&lt;/span&gt; &lt;span class="kwrd"&gt;Each&lt;/span&gt; _ModifiedData &lt;span class="kwrd"&gt;As&lt;/span&gt; ModifiedMemberInfo &lt;span class="kwrd"&gt;In&lt;/span&gt; _ModifiedList
                        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; _OriginalValue &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt; = _ModifiedData.OriginalValue.ToString
                        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; _CurrentValue &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt; = _ModifiedData.CurrentValue.ToString

                        &lt;span class="kwrd"&gt;If&lt;/span&gt; m_OriginalValue &amp;lt;&amp;gt; m_CurrentValue &lt;span class="kwrd"&gt;Then&lt;/span&gt;
                            LogAudit(_EntityType.Name, _ModifiedData.Member.Name, _OriginalValue, _CurrentValue)
                        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;
                    &lt;span class="kwrd"&gt;Next&lt;/span&gt;
                &lt;span class="kwrd"&gt;Next&lt;/span&gt;
            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;
        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;

        &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.SubmitChanges(failureMode)
    &lt;span class="kwrd"&gt;End&lt;/span&gt; Sub&lt;/pre&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-3766037788270458663?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/3766037788270458663/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=3766037788270458663' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/3766037788270458663'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/3766037788270458663'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2010/08/linq-to-sql-audit-changes.html' title='LINQ To SQL – Audit changes'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_4X_zNPuy6C8/TF99AqwVX2I/AAAAAAAAAFU/5_DCoaG6aTw/s72-c/image_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-8558746034151789206</id><published>2010-06-17T01:20:00.001-04:00</published><updated>2010-06-17T01:20:54.285-04:00</updated><title type='text'>“Unhandled Extension Element” in WIX (Windows Installer XML)</title><content type='html'>&lt;p&gt;I’m using WIX to create an MSI for a web application, part of the installer needs to create the IIS settings, so i’m using the WIX IIS extensions. I started off by adding the namespace:&lt;/p&gt;  &lt;p&gt;xmlns:iis='http://schemas.microsoft.com/wix/IIsExtension'&lt;/p&gt;  &lt;p&gt;Everything looked good, i was getting Intellisense within VS 2010, but then when i tried to build the MSI package, i got this error: &lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;&lt;strong&gt;The Component element contains an unhandled extension element 'iis:WebSite'.&amp;#160; Please ensure that the extension for elements in the '&lt;/strong&gt;&lt;/font&gt;&lt;a href="http://schemas.microsoft.com/wix/IIsExtension'"&gt;&lt;font color="#ff0000"&gt;&lt;strong&gt;http://schemas.microsoft.com/wix/IIsExtension'&lt;/strong&gt;&lt;/font&gt;&lt;/a&gt;&lt;font color="#ff0000"&gt;&lt;strong&gt; namespace has been provided.&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;I took a while to figure it out…in order to fix this issue, i had to add a reference to WixIisExtension.dll to my WIX project.&amp;#160; You add the reference just like you would add one for any other project.&amp;#160; &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-8558746034151789206?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/8558746034151789206/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=8558746034151789206' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/8558746034151789206'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/8558746034151789206'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2010/06/unhandled-extension-element-in-wix.html' title='“Unhandled Extension Element” in WIX (Windows Installer XML)'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-8866705245307772159</id><published>2010-06-16T01:14:00.001-04:00</published><updated>2010-06-16T01:14:03.917-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>How to turn on Silverlight Debugging</title><content type='html'>&lt;p&gt;I have a couple of Silverlight projects going on at the moment and for some reason I could not get debugging to work on one but everyone was working just fine on the other.&amp;#160; At run-time, my breakpoints would become disabled and it would tell me that debug symbols were not loaded.&amp;#160; It ended up being something simple that i kept overlooking.&amp;#160; On your web application’s properties (the host application, not the silverlight app), on the “Web” tab, if you scroll to the bottom, you can check which debuggers you want to attach to your process when you hit F5.&amp;#160; Check the Silverlight box and you are good to go…i must’ve unchecked it by mistake at some point and never realized it!&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_4X_zNPuy6C8/TBhdmKUE4tI/AAAAAAAAAFI/A1QInzIogqo/s1600-h/image%5B3%5D.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/_4X_zNPuy6C8/TBhdmr4a8WI/AAAAAAAAAFM/-EFvleG-R8I/image_thumb%5B1%5D.png?imgmax=800" width="709" height="504" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-8866705245307772159?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/8866705245307772159/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=8866705245307772159' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/8866705245307772159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/8866705245307772159'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2010/06/how-to-turn-on-silverlight-debugging.html' title='How to turn on Silverlight Debugging'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_4X_zNPuy6C8/TBhdmr4a8WI/AAAAAAAAAFM/-EFvleG-R8I/s72-c/image_thumb%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-3095442391524601900</id><published>2010-06-14T10:39:00.000-04:00</published><updated>2010-06-15T10:40:01.630-04:00</updated><title type='text'>VB 2010 – List Initializer</title><content type='html'>&lt;p&gt;I’ve been using VB.NET for about a year now (I was exclusively a C# developer before that) and one thing that always annoyed me was not being able to initialize my lists at the time that I declared them, the way I could in C#.&amp;#160; They added this functionality in VB 10, so this is how you do it:&lt;/p&gt;  &lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;Dim&lt;/span&gt; customers &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; List(Of &lt;span class="kwrd"&gt;String&lt;/span&gt;) From {&lt;span class="str"&gt;&amp;quot;Tom&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Bob&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;John&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;Lisa&amp;quot;&lt;/span&gt;}&lt;/pre&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-3095442391524601900?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/3095442391524601900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=3095442391524601900' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/3095442391524601900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/3095442391524601900'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2010/06/vb-2010-list-initializer.html' title='VB 2010 – List Initializer'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-1010621305620465952</id><published>2010-04-30T11:15:00.001-04:00</published><updated>2010-04-30T11:15:37.063-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><title type='text'>Building VS2010 Solutions from TFS 2008</title><content type='html'>&lt;p&gt;We’ve upgraded our Silverlight solution to 4.0 so we are now using Visual Studio 2010.&amp;#160; Unfortunately we have not had the time to upgrade to TFS 2010 yet, so we are still running TeamBuild 2008.&amp;#160; So that means that under the covers, Team Build is still trying to use MSBuild 2008.&amp;#160; In order to change that, you have to go into your build server, stop the service and then find the config file for TfsBuildService.exe (&lt;em&gt;C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PrivateAssemblies&lt;/em&gt;\TfsBuildService.exe.config).&amp;#160;&amp;#160; In that file, there is a setting called MSBuildPath, which was empty, meaning that it would go to the default path for 2008.&amp;#160; So i changed that key to:     &lt;br /&gt;&amp;lt;add key=&amp;quot;MSBuildPath&amp;quot; value=&amp;quot;c:\windows\microsoft.net\Framework\v4.0.30319\&amp;quot; /&amp;gt;, which is the Release version, so just use whatever version you are running under (RC, Beta, etc). &lt;/p&gt;  &lt;p&gt;Now, this means that even your 2008 solutions will go through that version of MSBuild, which should be ok since you can build previous versions of .NET apps with the latest MSBuild.&amp;#160; But just in case, we left all our 3.5 apps building on one Build Server, and the 4.0 apps building on this Build Server.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-1010621305620465952?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/1010621305620465952/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=1010621305620465952' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/1010621305620465952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/1010621305620465952'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2010/04/building-vs2010-solutions-from-tfs-2008.html' title='Building VS2010 Solutions from TFS 2008'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-3596348762543317039</id><published>2010-04-04T21:07:00.001-04:00</published><updated>2010-04-04T23:18:51.831-04:00</updated><title type='text'>Orlando Code Camp 2010</title><content type='html'>&lt;p&gt;&lt;img alt="Orlando Code Camp" src="http://www.orlandocodecamp.com/content/images/codecamp.png" width="151" height="47" /&gt; &lt;/p&gt;  &lt;p&gt;I started writing this the day after Code Camp and I finally got a chance to finish it. These are my thoughts about &lt;a href="http://www.orlandocodecamp.com/"&gt;Orlando Code Camp 2010&lt;/a&gt;, which was my first major event as an organizer.&lt;/p&gt;  &lt;p&gt;I had attended all 4 of the previous Orlando Code Camps. Last year I helped run the event by taking care of website changes to the original site developed by Fabio, our former vice-president. He and the president at the time, Jessica, ran a really awesome event. Around the middle of the year they both had to step down for (Fabio moved and Jessica went off to help her entrepreneurial boyfriend), so I took over as president of &lt;a href="http://www.onetug.org/"&gt;ONETUG&lt;/a&gt;. So this year was my first time in charge of organizing the event and I knew from the start that I had my work cut out for me. By now, &lt;a href="http://www.orlandocodecamp.com/"&gt;Orlando Code Camp&lt;/a&gt; had already gained reputation amongst the Florida developer community as a great event to attend. I was really fortunate to have the &lt;a href="http://www.onetug.org/"&gt;ONETUG&lt;/a&gt; board to help me. We really have a great mix of people, with each of us bringing something different to the table. Without them, this event doesn’t even come off the ground!&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Preparing for the event&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;The venue was our first concern. We knew that it would dictate the amount of people that we could accommodate and also a lot of the logistics surrounding the event. As in previous years, &lt;a href="http://www.seminolestate.edu/"&gt;Seminole State College&lt;/a&gt; stepped up and offered us their facilities. One of our board members, James Taylor (JT2, as we like to call him) facilitated the initial meeting with &lt;a href="http://dev.scc-fl.edu/net/faculty/delgadoj.htm"&gt;John Delgado&lt;/a&gt;, who took me around the buildings and showed me all the rooms that would be available to us. They were going through some renovations at the end of the Fall semester, so we knew that some of the classrooms would change by the time Code Camp came along. I was introduced to &lt;a href="http://www2.scc-fl.edu/mwhite/"&gt;Melinda White&lt;/a&gt;, who is one of the programming professors at Seminole State. From that point on, she was our point-person at Seminole State and helped us coordinate all the logistics for the event. She made over 15 rooms available to us, with the possibility of more rooms if needed. We had a firm commitment from Seminole State at the end of December and we were able to have all the rooms reserved by end of January (once Add/Drop had ended). As the event approached, myself and &lt;a href="http://www.willstrohl.com/"&gt;Will Strohl&lt;/a&gt; (&lt;a href="http://www.onetug.org/"&gt;ONETUG&lt;/a&gt; VP, &lt;a href="http://orlando.dotnetnukeug.net/"&gt;ODUG&lt;/a&gt; Prez) met with her one more time to tour the rooms after the renovations and we were able to make some determinations based on the new room layouts and projector capabilities. Melinda was of great help guiding us through that and making suggestions on what rooms would be better suited for the event. She also took us around to talk to the Media department to make sure that we would have microphones, speakers, and the right projector configurations where needed.&lt;/p&gt;  &lt;p&gt;With the venue in place, our attention turned to things like sponsors, speakers, food, prizes, and more. &lt;a href="http://www.qualitydata.com/"&gt;Brian Mishler&lt;/a&gt;, our Director of Marketing really did a great job the past few months building relationships with a lot of sponsors. We’ve had tremendous success getting more prizes than ever at our regular &lt;a href="http://www.onetug.org/"&gt;ONETUG&lt;/a&gt; meetings and that translated into a ton of support for this event. Brian contacted all our existing sponsors (and a bunch of new ones) and got us the money and prizes that we needed in order to pull off the event. We got a lot of money from &lt;a href="http://www.devexpress.com/"&gt;DevExpress&lt;/a&gt;, &lt;a href="http://www.microsoft.com/"&gt;Microsoft&lt;/a&gt;, &lt;a href="http://www.linxter.com/"&gt;Linxter&lt;/a&gt;, &lt;a href="http://www.infragistics.com/"&gt;Infragistics&lt;/a&gt;, and &lt;a href="http://www.kforce.com/"&gt;KForce&lt;/a&gt;, and many other sponsors (in total we had 14 money sponsors and 10 prize-only sponsors). Really, the amount of support that we had in this economy was way more than we originally expected which at the end helped us spend money on things like attendee t-shirts which was not something that we had been able to do recently (More on t-shirts a bit further down). We also got some amazing prizes to give away, things such as software components, subscriptions, books, t-shirts, and of course Ninjas! A few nights before the event, we all got together at Brian’s house for a “bag-stuffing” party. The &lt;a href="http://www.onetug.org/"&gt;ONETUG&lt;/a&gt; board and a few volunteers made it all go pretty seamless and we were done in just a couple of hours!&lt;/p&gt;  &lt;p&gt;Of course, one thing is to get a pledge for money, and another thing is to actually get the money in, and of course, spend the money wisely. Our treasurer, &lt;a href="http://www.ryppl.com/"&gt;John Torrey&lt;/a&gt; (JT1…see, the #2 from earlier makes sense now), kept us in check and did a great job at sending out invoices, collecting the money, and making us aware of what we could and could not spend the money on. We had a couple of moments where we thought that we would not be able to get everything that was planned, but at the end, all our great sponsors came through and JT1 gave me the green light to buy stuff :)&lt;/p&gt;  &lt;p&gt;The food was handled by JT2. He got us a few proposals and at the end we decided on Jason’s Deli. Mark, the manager was very accommodating and flexible and at the end ended up being a great choice. We ordered 550 lunches and we were able to cover everyone there with a lot of different choices of sandwiches. We were even able to get some gluten-free salads since I got a couple of emails inquiring about that. We also got a few proposals for breakfast. We got Panera bagels and I picked up a bunch of cream cheese, OJ, and coffee from Sam’s the day before. With such an early start, we knew that most people would get there just in time for the sessions and they would not spend a ton of time on breakfast.&lt;/p&gt;  &lt;p&gt;Around February, I started thinking that it would be really cool to be able to get t-shirts to all of our attendees. You know, like a proper conference usually has. And not just some cheesy shirt that people wouldn’t wear, but something that people would get excited about. &lt;a href="http://www.devfish.net/"&gt;Joe Healy&lt;/a&gt;, our area Microsoft DE (and super supporter of our community) suggested that we should contact &lt;a href="http://www.42stars.com/blog/"&gt;Diane Leeper&lt;/a&gt;. She is a designer from Tampa who is doing a great job at trying to bridge the gap between developers and designers. I was able to meet her during the regional competition of Speaker Idol in Orlando and a few emails later, she had a really cool design for us. The design incorporated the State of Florida and within it, all our speakers and their session names. Everyone really seemed to enjoy the shirts! &lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="tshirt[1]" border="0" alt="tshirt[1]" src="http://www.orlandocodecamp.com/content/images/tshirt.jpg" width="135" height="135" /&gt;&lt;/p&gt;  &lt;p&gt;We worked with Kim from Dylen Monogramming to get the t-shirts and speaker/volunteer polo’s made. Kim was fast, very flexible, and gave us a great price. I was so impressed that we are actually getting my company’s polo’s made by her now.&lt;/p&gt;  &lt;p&gt;Of course, we could not have this event without speakers. We were lucky enough to get a lot of submissions in. We had a great mix of first-time speakers, MVPs, book authors, local speakers, and a few from out of state. Topics ranged from bleeding-edge to intro-level. I think that overall we had a really great lineup and I even got a few comments from people on how great it appealed across the board. There really was something for everyone. Logistically, the toughest part to do was to trim down our session list and setup the schedule. Will was super helpful with this part. He and I spent a few nights going back and forth on this and finally came up with 12 tracks with 6 sessions each, for a total of 72 sessions. We had to make a few changes as the event got closer because of a couple of last-minute requests and cancellation, but overall it all worked out.&lt;/p&gt;  &lt;p&gt;Our call for volunteers went great. Will was in charge of everything dealing with volunteers. We had a few of the &lt;a href="http://www.onetug.org/"&gt;ONETUG&lt;/a&gt; regulars come out and help and I even saw a few new faces. The red shirts that we got for our volunteers was a really good idea since it allowed them to get a lot of visibility and our attendees knew exactly who to go to for help. Sometimes people don’t realize how much we rely on volunteers to help out at these events and I am so glad to have had all the help. I don’t know if it was because of the distinctive shirts or just because I was in the middle of all the planning this year, but it really felt like we had a lot more help than usual. Either way, it made our jobs so much easier, knowing that things were entrusted to the right people.&lt;/p&gt;  &lt;p&gt;So with all of that in place, all of a sudden it was the Friday before the event. There were just 3 things left on my list of things to do: Go to Sam’s to buy all the supplies for the next day, go to Best Buy to get the grand prize, and go to the Speaker Party. So I took the day off from work (I have a great client and even better partners at &lt;a href="http://www.m2esolutions.com/"&gt;M2E&lt;/a&gt;). I set out to Sam’s in the morning and stopped by UHaul on the way there. I picked up a 5x8 trailer and hooked it up to my SUV. Once I got to Sam’s and the people saw my shopping list, they quickly hooked me up with Bud, the “Shop and Pull” guy. Now that I know about that service, I will be using it next time I have an event like this. Basically, you go online, select what you are looking for, and you stop by the next day and they have it all ready for you. Bud literally ran around the store with me picking up all the stuff that we were looking for. Within a little over an hour we had picked up everything that I was looking for, including over 1,100 soda sand 1,200 waters, lots of bananas and a ton of other stuff. Then I came home, actually took some rest, then in the evening I headed over to &lt;a href="http://tatamelounge.com/"&gt;Tatame&lt;/a&gt; for our speaker party. On my way there, I stopped by Best Buy to pick up the XBox that we were giving away as a grand prize. The folks at Tatame were great hosts and all speakers and volunteers there really seemed to enjoy the event. We gave out the speaker and volunteer polo’s and the speakers that were doing the live-stream sessions the next day were able to get their laptops tested and ready for the next day. Once the festivities ended at around 11 or so, i rushed home to finish up the demo for my Azure presentation the next day (which I had mostly neglected that entire week). Once that was done, everything was all set for the event.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The Event&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;So after all the preparations, it was finally the morning of the event. I pulled up to Seminole State at 5:30 am with a UHaul truck full of supplies. Will had arranged for a bunch of volunteers to be there early and help us setup and they were already waiting for me when I got there. We had a little snag with the doors not being open for us yet, but Melinda from Seminole State helped us get that straightened out (yes, she was up and available at that time!). We got everything unloaded to the cafeteria area. JT1 got the registration setup, coffee was brewing, and sodas were iced down. Jessica and Brian went around campus posting road signs towards the event, while Will went to all the rooms and posted signs on each room. Once everything was setup in the cafeteria, I went around all the rooms and verified that all projectors were setup and mic’s were working. We found that we needed some video adapters and John Delgado got everything connected for us. Time flew by and all of a sudden it was 8:00 am, time for the opening announcements and for us to get everything rolling. With a packed auditorium we kicked it all off and then it was all downhill from there (well, mostly).&lt;/p&gt;  &lt;p&gt;We had a “Live Feed” room, where we moved 6 sessions from various tracks into. All sessions in that room were broadcasted through LiveMeeting. Originally, it was going to be an MSDN event, but a few behind the scenes things led to us moving it to LiveMeeting. This was setup by Joe with help from &lt;a href="http://ineta.org/"&gt;INETA&lt;/a&gt;’s and &lt;a href="http://scdnug.org/"&gt;Space Coast .NET&lt;/a&gt;’s Ken Tucker. It was the first time that this was done at a Code Camp event and the plan is to be able to give other Code Camp organizer’s a “how to” guide so they can do the same at their events.&lt;/p&gt;  &lt;p&gt;I gave my Azure Table Storage presentation at 9:45 am in the Live Streaming room. The night before as I was cleaning up my presentation a bit, i mistakenly changed my config file to use OrlandoCC as my Azure application name. The problem is that when setting up your connection to Azure, you have to use all lower-case. So from about 8:45 til 9:30 I was frantically debugging my application getting it ready for the presentation. I had &lt;a href="http://mhenrikson.blogspot.com/"&gt;Mark&lt;/a&gt; (from &lt;a href="http://www.m2esolutions.com/"&gt;M2E&lt;/a&gt;) there helping me troubleshoot it, and finally with just enough time (and BSD mixed in there), I figured out my mistake and ran into the room to setup. I had pretty good attendance onsite plus about 18 people online and overall the presentation went really well.&lt;/p&gt;  &lt;p&gt;By this time, the event was really running itself. Everyone knew where to go, and all the kinks had been worked out in all the rooms. We had all sessions going in the regular rooms and the live room, and Speaker Idol was underway. Pretty soon it was lunchtime, which really was the last major logistical hurdle for the day. Again, thanks to everyone’s help, we got that going right on time and everything ran smoothly. We even flew in some &lt;a href="http://orlandotechnuts.blogspot.com/2010/03/hopkins-family-circle-of-trust-and.html"&gt;expert help from California&lt;/a&gt;! About half-way through lunch I got a really cool surprise when my family came by to see me. March was probably my busiest moth ever and my wife and son were very supportive and understanding throughout. It was so cool to get to see them during the event, even if it was for 20 minutes.&lt;/p&gt;  &lt;p&gt;During the afternoon, I managed to catch the end of some of the sessions. Then came the closing ceremony where we gave away our prizes and got to hear from our sponsors. We also had the &lt;a href="http://www.lakelandug.net/SpeakerIdol/tabid/81/Default.aspx"&gt;Speaker Idol&lt;/a&gt; prize presentation, which was a huge hit. The event ended when we gave out the much awaited XBox to a very deserving attendee.&lt;/p&gt;  &lt;p&gt;It took us about half an hour to clean up and load up the UHaul with our stuff (it’s so awesome when you have help) and then we headed over to &lt;a href="http://route-46.com/"&gt;Route 46 Entertainment District&lt;/a&gt;. Wow, this was an awesome place to have the after-party. JT2 definitely came through with this place. The food platters were great, they had a very good beer selection, and they setup a good sized area for us. The turnout was about what I had expected. We had about 50 or so people there. By this time, I was completely worn out, so I left early, around 7:30 pm or so and I know that some people stayed there until past 11:00 pm. Will and JT1 stayed behind to take care of our guests (and the check). I came home to a hyper little boy that brought a huge smile to my face and after a little while (very unlike me) I was sleep by 9:00 pm, and slept for 12 hours.&lt;/p&gt;  &lt;p&gt;There’s still a few things to take care of to wrap up the event. We are going to post pictures this week, and speakers have sent us their presentation files to make available on the site. And sometime late summer, we’ll start all over again and try to top this year’s event.&lt;/p&gt;  &lt;p&gt;Again, I have to thank all the volunteers and the &lt;a href="http://www.onetug.org/"&gt;ONETUG&lt;/a&gt; board for everything that they did. Especially &lt;a href="http://www.willstrohl.com/"&gt;Will Strohl&lt;/a&gt;, I am sure that at least once he must’ve felt like I was asking him too many questions, but the fact that he had been involved organizing events like this one before really helped me! He let me do things the way I wanted but at the same time reminded me of things that I needed to do when he saw that I was going too far off. I think that we worked really well together. Also, &lt;a href="http://www.devfish.com/"&gt;Joe Healy&lt;/a&gt; who was so supportive throughout the entire planning and the event itself. I think that we are really lucky to have him as our Microsoft Developer Evangelist here in Florida. My M2E partners (&lt;a href="http://thisthattechnology.blogspot.com/"&gt;Marius&lt;/a&gt; and &lt;a href="http://mhenrikson.blogspot.com/"&gt;Mark&lt;/a&gt;) were great too, I know I was a bit neurotic as the event came close and they put up with all of that. And of course, my family was super supportive, especially the week before the event when I was really going crazy with barely any time to hang out with them! I really could not have pulled this off without all the people that helped! &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/333518566327671926-3596348762543317039?l=estebanfg.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://estebanfg.blogspot.com/feeds/3596348762543317039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=333518566327671926&amp;postID=3596348762543317039' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/3596348762543317039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/333518566327671926/posts/default/3596348762543317039'/><link rel='alternate' type='text/html' href='http://estebanfg.blogspot.com/2010/04/orlando-code-camp-2010.html' title='Orlando Code Camp 2010'/><author><name>Esteban Garcia</name><uri>http://www.blogger.com/profile/15608446709403522689</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-S1PHMWMJQZ4/TYNrOW8FCLI/AAAAAAAAAJg/ZdbCEnVbgpI/s220/Esteban.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-333518566327671926.post-472467174466663740</id><published>2010-02-18T10:09:00.001-05:00</published><updated>2010-02-18T10:09:03.935-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RIA'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>RIA and DTO associated objects</title><content type='html'>&lt;p&gt;I am currently working on a Silverlight application and we are using RIA and MVVM.&amp;#160; We don’t use the default implementation where we consume Entity Framework or Linq2Sql objects, as we already have a DTO object model that we use to move all our data around.&amp;#160; Unfortunately a lot of the RIA samples and documentation use Entity Framework objects, which already have a lot of “magic” built in.&amp;#160; Our approach is good in the sense that we don’t carry the excess baggage around, but at the same time it can be challenging when trying to do some “simple” things like exposing an object that has properties of another one of my types.&amp;#160; &lt;/p&gt;  &lt;p&gt;So the scenario is that I have a Customer object with a MailingAddress property of type Address, something like this:&lt;/p&gt;  &lt;div id="codeSnippetWrapper"&gt;   &lt;div style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;     &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;[Serializable]&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;&lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;class&lt;/span&gt; Customer&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;{&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    [Key]&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; Guid Id { get; set; }&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; direction: ltr; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"&gt;    &lt;span style="color: #0000ff"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; Name { get; set; }&lt;/pre&gt;
&lt;!--CRLF--&gt;

    &lt;pre style="border-bottom-style: none; text-align: left; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding
