<?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-3029990858482485270</id><updated>2011-10-27T00:05:35.493-07:00</updated><category term='Introduction'/><category term='sql server 2008'/><category term='moss 2010'/><category term='Hotfix'/><category term='Microsoft'/><category term='Team Foundation Server'/><category term='event notification'/><category term='tfs 2010 beta'/><category term='vs 2010 beta1'/><category term='TFS'/><category term='debug visual studio integration package'/><category term='Branching'/><category term='Service Pack'/><category term='can&apos;t create new projects'/><category term='msiexec.exe'/><category term='vs 2010'/><category term='create team project'/><category term='tfs 2010'/><category term='Merging'/><category term='rate'/><category term='Source Code'/><category term='what dll'/><category term='frequency'/><category term='WorkITemChangedEvent'/><title type='text'>Abel's World</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://lifeaccordingtoabel.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3029990858482485270/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://lifeaccordingtoabel.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>abel</name><uri>http://www.blogger.com/profile/15515322669131587260</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_UBXDHb8_OuI/SkwENvkcGbI/AAAAAAAAAAM/7p8I00eOMKk/S220/RockGod.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3029990858482485270.post-5883121654274434049</id><published>2010-08-24T16:52:00.001-07:00</published><updated>2010-09-22T06:46:32.960-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WorkITemChangedEvent'/><category scheme='http://www.blogger.com/atom/ns#' term='what dll'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><title type='text'>TFS WorkItemChangedEvent... WHERE IS IT???</title><content type='html'>In TFS, I sometimes need to write a WorkItemChanged event handler. No biggy, plenty of examples on how to do that. But what's hard to find is what dll is the class Microsoft.TeamFoundation.WorkItemTracking.Server.WorkItemChangedEvent in? In TFS 2008 it was in Microsoft.teamfoundation.WorkitemTracing.Server.WorkItemChangedEvent. In TFS 2010 it is in Microsoft.TeamFoundation.WorkitemTracking.server.DataAccessLayer.Dll.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3029990858482485270-5883121654274434049?l=lifeaccordingtoabel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lifeaccordingtoabel.blogspot.com/feeds/5883121654274434049/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lifeaccordingtoabel.blogspot.com/2010/08/tfs-workitemchangedevent-where-is-it.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3029990858482485270/posts/default/5883121654274434049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3029990858482485270/posts/default/5883121654274434049'/><link rel='alternate' type='text/html' href='http://lifeaccordingtoabel.blogspot.com/2010/08/tfs-workitemchangedevent-where-is-it.html' title='TFS WorkItemChangedEvent... WHERE IS IT???'/><author><name>abel</name><uri>http://www.blogger.com/profile/15515322669131587260</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_UBXDHb8_OuI/SkwENvkcGbI/AAAAAAAAAAM/7p8I00eOMKk/S220/RockGod.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3029990858482485270.post-811215466890594039</id><published>2010-08-12T07:50:00.000-07:00</published><updated>2010-08-12T07:58:05.585-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='can&apos;t create new projects'/><category scheme='http://www.blogger.com/atom/ns#' term='vs 2010'/><title type='text'>Only option under File is New Team Project</title><content type='html'>This is the second time i ran into this problem.  I installed some flavor of VS.  All of a sudden, when I go to the File menue, there is no longer the option to create a new project.  There is only the option to create new team projects.  And yes, I didn't just have Team Explorer installed.  In this case, I had vs 2010 ultimate installed.  So wtf?  Turns out, if you select the project management profile when you first start up VS, it won't allow you to create new projects.  What doesn't make sense is that I selected c# profile.  Still, the solution is the same as if i did select the project management profile.  Reset VS with this comand line command:&lt;br /&gt;&lt;br /&gt;devenv.exe /resetuserdata&lt;br /&gt;&lt;br /&gt;--a&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3029990858482485270-811215466890594039?l=lifeaccordingtoabel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lifeaccordingtoabel.blogspot.com/feeds/811215466890594039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lifeaccordingtoabel.blogspot.com/2010/08/only-option-under-file-is-new-team.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3029990858482485270/posts/default/811215466890594039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3029990858482485270/posts/default/811215466890594039'/><link rel='alternate' type='text/html' href='http://lifeaccordingtoabel.blogspot.com/2010/08/only-option-under-file-is-new-team.html' title='Only option under File is New Team Project'/><author><name>abel</name><uri>http://www.blogger.com/profile/15515322669131587260</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_UBXDHb8_OuI/SkwENvkcGbI/AAAAAAAAAAM/7p8I00eOMKk/S220/RockGod.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3029990858482485270.post-4710097008337128350</id><published>2010-07-13T11:04:00.000-07:00</published><updated>2010-07-13T11:08:08.872-07:00</updated><title type='text'>TFS 2010 with Moss 2010 prompts to save for process guidance and all html pages</title><content type='html'>Was running into this problem. TFS 2010 with MOSS 2010. Whenever i browsed to the process guidance or any html pages in the portal, i would get a prompt to save dialog. Turns out, this is a change in MOSS and their default security settings.&lt;br /&gt;&lt;br\&gt;&lt;br /&gt;&lt;a href="http://blogs.msdn.com/b/aaronbjork/archive/2010/02/15/being-prompted-to-save-your-process-guidance.aspx"&gt;http://blogs.msdn.com/b/aaronbjork/archive/2010/02/15/being-prompted-to-save-your-process-guidance.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;in a nutshell, open sharepoint central admin, switch to web applications tab, then open general settings for the site you want to change, go to Browse File handling settings, change the setting from strict to permissive.&lt;br /&gt;&lt;br /&gt;--a&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3029990858482485270-4710097008337128350?l=lifeaccordingtoabel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lifeaccordingtoabel.blogspot.com/feeds/4710097008337128350/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lifeaccordingtoabel.blogspot.com/2010/07/tfs-2010-with-moss-2010-prompts-to-save.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3029990858482485270/posts/default/4710097008337128350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3029990858482485270/posts/default/4710097008337128350'/><link rel='alternate' type='text/html' href='http://lifeaccordingtoabel.blogspot.com/2010/07/tfs-2010-with-moss-2010-prompts-to-save.html' title='TFS 2010 with Moss 2010 prompts to save for process guidance and all html pages'/><author><name>abel</name><uri>http://www.blogger.com/profile/15515322669131587260</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_UBXDHb8_OuI/SkwENvkcGbI/AAAAAAAAAAM/7p8I00eOMKk/S220/RockGod.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3029990858482485270.post-4325713051095750457</id><published>2010-07-12T14:51:00.000-07:00</published><updated>2010-07-12T15:08:54.694-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tfs 2010'/><category scheme='http://www.blogger.com/atom/ns#' term='moss 2010'/><title type='text'>configuring moss 2010 with tfs sharepoint 2010</title><content type='html'>Took me forever to find a guide on how to configure sharepoint 2010 for tfs 2010. Try this:&lt;br /&gt;&lt;br /&gt;http://blogs.msdn.com/b/team_foundation/archive/2010/03/06/configuring-sharepoint-server-2010-beta-for-dashboard-compatibility-with-tfs-2010-beta2-rc.aspx&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3029990858482485270-4325713051095750457?l=lifeaccordingtoabel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lifeaccordingtoabel.blogspot.com/feeds/4325713051095750457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lifeaccordingtoabel.blogspot.com/2010/07/configuring-moss-2010-with-tfs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3029990858482485270/posts/default/4325713051095750457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3029990858482485270/posts/default/4325713051095750457'/><link rel='alternate' type='text/html' href='http://lifeaccordingtoabel.blogspot.com/2010/07/configuring-moss-2010-with-tfs.html' title='configuring moss 2010 with tfs sharepoint 2010'/><author><name>abel</name><uri>http://www.blogger.com/profile/15515322669131587260</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_UBXDHb8_OuI/SkwENvkcGbI/AAAAAAAAAAM/7p8I00eOMKk/S220/RockGod.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3029990858482485270.post-8402540363683620035</id><published>2010-05-22T08:00:00.000-07:00</published><updated>2010-05-22T08:09:51.865-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='event notification'/><category scheme='http://www.blogger.com/atom/ns#' term='rate'/><category scheme='http://www.blogger.com/atom/ns#' term='frequency'/><category scheme='http://www.blogger.com/atom/ns#' term='tfs 2010'/><title type='text'>TFS 2010 event refresh rate</title><content type='html'>Out of the box, tfs 2010 batches events together and fires them every 2 minutes.  To change this, you need to set the notification delay in the TF registry. Run this script using PowerShell.  This will set the delay to 30 seconds.  You can set it to zero to fire tfs events immediately.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p style="margin: 0in 0in 0in 0.375in; font-family: 'Courier New'; font-size: 10pt;"&gt;[Reflection.Assembly]::Load("Microsoft.TeamFoundation.Client,  Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")&lt;/p&gt; &lt;p style="margin: 0in 0in 0in 0.375in; font-family: 'Courier New'; font-size: 10pt;" mce_keep="true"&gt; &lt;/p&gt; &lt;p style="margin: 0in 0in 0in 0.375in; font-family: 'Courier New'; font-size: 10pt;"&gt;# Modify the TFS configuration server URL as  necessary.&lt;/p&gt; &lt;p style="margin: 0in 0in 0in 0.375in; font-family: 'Courier New'; font-size: 10pt;"&gt;$configServer = new-object  Microsoft.TeamFoundation.Client.TfsConfigurationServer "&lt;a href="http://localhost:8080/tfs/" mce_href="http://localhost:8080/tfs/"&gt;http://localhost:8080/tfs/&lt;/a&gt;"&lt;/p&gt; &lt;p style="margin: 0in 0in 0in 0.375in; font-family: 'Courier New'; font-size: 10pt;" mce_keep="true"&gt; &lt;/p&gt; &lt;p style="margin: 0in 0in 0in 0.375in; font-family: 'Courier New'; font-size: 10pt;"&gt;# Get the TF registry service.&lt;/p&gt; &lt;p style="margin: 0in 0in 0in 0.375in; font-family: 'Courier New'; font-size: 10pt;"&gt;$tfsRegService =  $configServer.GetService([Microsoft.TeamFoundation.Framework.Client.ITeamFoundationRegistry])&lt;/p&gt; &lt;p style="margin: 0in 0in 0in 0.375in; font-family: 'Courier New'; font-size: 10pt;" mce_keep="true"&gt; &lt;/p&gt; &lt;p style="margin: 0in 0in 0in 0.375in; font-family: 'Courier New'; font-size: 10pt;"&gt;# Set the notification delay to 30 seconds. All  collections will use this delay unless they override this value in the  collection hive.&lt;/p&gt; &lt;p style="margin: 0in 0in 0in 0.375in; font-family: 'Courier New'; font-size: 10pt;"&gt;$tfsRegService.SetValue("/Service/Integration/Settings/&lt;span style="font-weight: bold;"&gt;NotificationJobDelay&lt;/span&gt;", 30)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3029990858482485270-8402540363683620035?l=lifeaccordingtoabel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lifeaccordingtoabel.blogspot.com/feeds/8402540363683620035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lifeaccordingtoabel.blogspot.com/2010/05/tfs-2010-event-refresh-rate.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3029990858482485270/posts/default/8402540363683620035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3029990858482485270/posts/default/8402540363683620035'/><link rel='alternate' type='text/html' href='http://lifeaccordingtoabel.blogspot.com/2010/05/tfs-2010-event-refresh-rate.html' title='TFS 2010 event refresh rate'/><author><name>abel</name><uri>http://www.blogger.com/profile/15515322669131587260</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_UBXDHb8_OuI/SkwENvkcGbI/AAAAAAAAAAM/7p8I00eOMKk/S220/RockGod.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3029990858482485270.post-4403674678643341928</id><published>2009-09-18T10:29:00.001-07:00</published><updated>2009-09-18T10:35:24.367-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='debug visual studio integration package'/><title type='text'>Debugging Visual Studio Integration Packages</title><content type='html'>Due to the nature of the company I work for, I've had to write a bunch of Visual Studio Integration Packages. So what's the easiest way to debug a VS Integration Package? Right click the project in the Solution Explorer and select Properties. This should bring up the Project configuration pane. Click the debug tab.&lt;br /&gt;&lt;br /&gt;Start external program: &lt;path&gt;\Common7\IDE\devenv.exe&lt;br /&gt;Command line arguments: /ranu /rootsuffix Exp&lt;br /&gt;&lt;br /&gt;I got sick of trying to google this every time I had to debug an integration package so here it is.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3029990858482485270-4403674678643341928?l=lifeaccordingtoabel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lifeaccordingtoabel.blogspot.com/feeds/4403674678643341928/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lifeaccordingtoabel.blogspot.com/2009/09/debugging-visual-studio-integration.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3029990858482485270/posts/default/4403674678643341928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3029990858482485270/posts/default/4403674678643341928'/><link rel='alternate' type='text/html' href='http://lifeaccordingtoabel.blogspot.com/2009/09/debugging-visual-studio-integration.html' title='Debugging Visual Studio Integration Packages'/><author><name>abel</name><uri>http://www.blogger.com/profile/15515322669131587260</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_UBXDHb8_OuI/SkwENvkcGbI/AAAAAAAAAAM/7p8I00eOMKk/S220/RockGod.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3029990858482485270.post-3060784746161203026</id><published>2009-08-11T06:52:00.000-07:00</published><updated>2009-08-11T06:59:50.121-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='create team project'/><category scheme='http://www.blogger.com/atom/ns#' term='tfs 2010 beta'/><title type='text'>Create Team Project failure... and solution</title><content type='html'>&lt;p&gt;I just created a fresh install of TFS 2010 beta on a vm, tested everything out using the user account I used to install TFS and everything worked fine. However, when I logged in with a different user account who was a TFS admin as well as a local admin on the tfs machine (my user account), I couldn't create a new team project. Checking the error log, it said my user didn't have the correct SharePoint rights to create a new site. &lt;/p&gt;&lt;p&gt;Since I'm not very knowledgeable with SharePoint (at all), I added myself as a SharePoint farm administrator and added myself as a collection administrator. When I went back and tried to create a team project, it failed again with the same error. Did I mention I'm totally clueless when it comes to SharePoint? Anyway after futilely messing around with SharePoint for a while, I realized that all the team projects were children of the Default Collection site. Therefore, I had to give the user rights in DefaultCollection site. So I browsed to http:/&lt;tfsserver&gt;/sites/DefaultCollection/default.aspx, clicked the Site Actions button in the upper right hand corner of the page and selected Site Settings. This brought up the Site Settings page for the DefaultCollection site. Under users and Permissions I clicked People and Groups and added myself as a user with full control. Just in case, I also added myself as a Site collection administrator.&lt;/p&gt;&lt;p&gt;Going back to Team Explorer, I tried to create a new team project. This time, the creation process went further than before, but it again failed. The error log looked like this:&lt;/p&gt;Module: WSS&lt;br /&gt;Exception Type: Microsoft.TeamFoundation.TeamFoundationServerUnauthorizedException&lt;br /&gt;Exception Message: TF30063: You are not authorized to access http://&lt;tfs&gt;:17012/_vti_bin/TeamFoundationIntegrationService.asmx.&lt;br /&gt;Stack Trace:&lt;br /&gt;at Microsoft.TeamFoundation.Client.TeamFoundationClientProxyBase.ProcessHttpResponse(HttpWebResponse response, Stream responseStream, WebException webException, XmlReader&amp;amp; xmlResponseReader)&lt;br /&gt;at Microsoft.TeamFoundation.Client.TeamFoundationClientProxyBase.ExecWebServiceRequest(HttpWebRequest request, XmlWriter requestXml, String methodName, HttpWebResponse&amp;amp; response)&lt;br /&gt;at Microsoft.TeamFoundation.Client.SharePoint.SharePointTeamFoundationIntegrationService.ActivateFeatureById(String siteUrl, Guid featureId)&lt;br /&gt;at Microsoft.VisualStudio.TeamFoundation.WssSiteCreator.HandleFeatureActivation(WssCreationContextWrapper contextWrapper, XmlNode features)&lt;br /&gt;-- Inner Exception --&lt;br /&gt;Exception Type: System.Net.WebException&lt;br /&gt;Exception Message: The remote server returned an error: (401) Unauthorized.&lt;br /&gt;WebException: Response Status Code: Unauthorized&lt;br /&gt;WebException: Response already disposed, no additional information available.&lt;br /&gt;WebException: Status : ProtocolError&lt;br /&gt;Stack Trace:&lt;br /&gt;at System.Net.HttpWebRequest.GetResponse()&lt;br /&gt;at Microsoft.TeamFoundation.Client.TeamFoundationClientProxyBase.AsyncWebRequest.ExecRequest(Object obj)&lt;br /&gt;-- end Inner Exception --&lt;br /&gt;--- end Exception entry ---&lt;br /&gt;&lt;br /&gt;Apparently, I needed to add my user account to the web application policies. To do this, bring up the SharePoint Central Administration, go to the tab marked Application Management and click the link Policy for Web Application under Application Security. From here, add the users who will create team projects.&lt;br /&gt;&lt;br /&gt;Problem solved.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3029990858482485270-3060784746161203026?l=lifeaccordingtoabel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lifeaccordingtoabel.blogspot.com/feeds/3060784746161203026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lifeaccordingtoabel.blogspot.com/2009/08/create-team-project-failure-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3029990858482485270/posts/default/3060784746161203026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3029990858482485270/posts/default/3060784746161203026'/><link rel='alternate' type='text/html' href='http://lifeaccordingtoabel.blogspot.com/2009/08/create-team-project-failure-and.html' title='Create Team Project failure... and solution'/><author><name>abel</name><uri>http://www.blogger.com/profile/15515322669131587260</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_UBXDHb8_OuI/SkwENvkcGbI/AAAAAAAAAAM/7p8I00eOMKk/S220/RockGod.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3029990858482485270.post-3411552477852536937</id><published>2009-08-08T10:46:00.000-07:00</published><updated>2009-08-08T10:51:46.687-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql server 2008'/><category scheme='http://www.blogger.com/atom/ns#' term='msiexec.exe'/><category scheme='http://www.blogger.com/atom/ns#' term='tfs 2010 beta'/><category scheme='http://www.blogger.com/atom/ns#' term='vs 2010 beta1'/><title type='text'>VS 2010 beta1, TFS 2010 beta 1 Installation Adventures</title><content type='html'>Last week, I was asked to create a bunch of VMware development/demo vm's for the company I work for. These vm's needed to have the following software installed: windows server 2008 sp2, vs2010 beta1, tfs 2010 beta, and office 2007 sp2. Even though I've never worked with VMware before or done a TFS2010 install, I figured this would be cake. I mean, I'm a fricken trained professional!!! What could possibly go wrong? Heh heh heh.&lt;br /&gt;&lt;br /&gt;First, I created a windows server 2008 sp2 image without any problems. Installed visual studio 2010 beta1 without any problems. Cool. So far so good. First impressions of VMware are positive. Performance is good. Next comes the TFS 2010 beta install. Glancing through the install guide, it looked pretty straight forward for a simple one server deployment. First up, install SQLServer 2008 with the following features: Database Engine Services, Full-Text Search, Analysis Services, Reporting services, Client Tool Connectivity, and Management Tools - Basic. Everything installed just fine except for the Full Text Search feature. That one had a red "x" next to it.&lt;br /&gt;&lt;br /&gt;After trying for a long time to get the Full Text Search feature installed, I noticed that I now couldn't install anything on the server because an installation was already in place. Whaaaaaat??? Looking in the Task Manager, yup, there were two Windows Installer processes running (msiexec.exe). And one of them was eating up most of my CPU! Since at this time there should have been no installations going on, I figured maybe I just needed to reboot. Nope, that didn't work either. After rebooting, the two Windows Installer processes were still there with one of them using most of my CPU. Next, I tried killing the process. That didn't work either. After killing the 2 msiexec.exe processes, they would come back in about two seconds. Ok I thought, I'll just go in and manually turn off the windows installer service. That didn't work either. The stop button on the windows installer service was greyed out. Great! So now, I have a server with two random msiexec.exe processes running all the time, which prevented me from installing anything else on the server. And to add insult to injury, one of the msiexec.exe processes was maxing out my CPU!!! No amount of rebooting would fix this.&lt;br /&gt;&lt;br /&gt;Anyway, to make a long story short, after spending ridiculous amounts of time trying to figure out what was wrong, I fixed this by reverting my vm back to a snapshot of just windows server 2008 with sp2. Then instead of installing vs2010 beta 1 first, and then SQL Server 2008, I installed SQL Server 2008 first. Everything installed fine. Then I installed the rest of the pieces of TFS without any problems and last, I installed Visual Studio 2010 beta 1. The rest of the installation went very easily without any hiccups.&lt;br /&gt;&lt;br /&gt;So the moral of this story, if you need to have VS 2010 beta 1 and SQL Server 2008 with the Full Text Search feature, install SQL Server 2008 first, and then install Visual Studio 2010 beta 1.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3029990858482485270-3411552477852536937?l=lifeaccordingtoabel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lifeaccordingtoabel.blogspot.com/feeds/3411552477852536937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lifeaccordingtoabel.blogspot.com/2009/08/vs-2010-beta1-tfs-2010-beta-1.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3029990858482485270/posts/default/3411552477852536937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3029990858482485270/posts/default/3411552477852536937'/><link rel='alternate' type='text/html' href='http://lifeaccordingtoabel.blogspot.com/2009/08/vs-2010-beta1-tfs-2010-beta-1.html' title='VS 2010 beta1, TFS 2010 beta 1 Installation Adventures'/><author><name>abel</name><uri>http://www.blogger.com/profile/15515322669131587260</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_UBXDHb8_OuI/SkwENvkcGbI/AAAAAAAAAAM/7p8I00eOMKk/S220/RockGod.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3029990858482485270.post-5496305922677543188</id><published>2009-07-05T12:43:00.000-07:00</published><updated>2009-07-05T12:55:38.126-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Service Pack'/><category scheme='http://www.blogger.com/atom/ns#' term='Merging'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><category scheme='http://www.blogger.com/atom/ns#' term='Branching'/><category scheme='http://www.blogger.com/atom/ns#' term='Hotfix'/><title type='text'>Branching and Merging Strategies (part 2 of 3)</title><content type='html'>Last blog, I talked about a simple branching strategy.  Today, I'll tackle a slightly more complex scenario.   A while ago, I ran into a client (small group) that already released a version of their application into the field.  Things were running smoothly for a couple of weeks, developers were busy working in the DEV branch on the next version release.  Suddenly, a major bug in the release was found and they needed to apply a patch to the deployed application.  In other words, they needed to create a hotfix for a released version.&lt;br /&gt;&lt;br /&gt;Here is a branching strategy I like to use for hot fix scenarios.  First, I would still have a MAIN branch which holds the latest stable version of the code.  From MAIN, I would branch to DEV.  This is the branch developers use to work on the latest and greatest (next version).  Like the simple branching scenario, changes are merged to the main branch where QA performs their tests.  When the code is feature complete and the quality is acceptable for a version release (v 1.1, v1.2 etc), I would branch from MAIN to a hot fix branch, and then branch from the hot fix branch to a V1.1.0 branch for archival purposes.  I do this whether  I need a hot fix or not.  I do this just in case I will need to write a hot fix.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_UBXDHb8_OuI/SlEDiNGihfI/AAAAAAAAABQ/5ou8dwuBmWo/s1600-h/HotFixBranching.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 133px;" src="http://2.bp.blogspot.com/_UBXDHb8_OuI/SlEDiNGihfI/AAAAAAAAABQ/5ou8dwuBmWo/s400/HotFixBranching.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5355065318087755250" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Inevitably, I get someone asking me, "Why do that?  Isn't it expensive to branch".  The answer is no.  If you use TFS as your source control, branching is actually very cheap.  TFS only stores the differences (and some meta data for each branch).  TFS handles branching very efficiently.  Granted, what shows up on your hard drive (if you map your workspace to all the branches) will be copies of the code, but what is stored in TFS is just the differences.&lt;br /&gt;&lt;br /&gt;So now, features for the next version are being worked on in the DEV branch.  If you need a hot fix, make the changes in the hot fix branch.  When the hot fix is finished, branch from the hot fix to another archive branch.  If you need to bring the hot fix changes to the current (next version) code base, merge your changes from the hot fix branch to the MAIN branch.  Take care of potential merge conflicts as well as potential code breakage here, and when finished, merge the changes from MAIN into DEV.&lt;br /&gt;&lt;br /&gt;Here is how I would lay out the code in source control/file structure:&lt;br /&gt;&lt;br /&gt;$/Project/&lt;br /&gt;$/Project/Main&lt;br /&gt;$/Project/Main/(Source code for application)&lt;br /&gt;$/Project/Development&lt;br /&gt;$/Project/Development/(Source code for application)&lt;br /&gt;$/Project/Production&lt;br /&gt;$/Project/Production/V1.0&lt;br /&gt;$/Project/Production/V1.0/Hotfix&lt;br /&gt;$/Project/Production/V1.0/Hotfix/(Source code for application)&lt;br /&gt;$/Project/Production/V1.0/V1.0.0&lt;br /&gt;$/Project/Production/V1.0/V1.0.0/(Source code for application)&lt;br /&gt;$/Project/Production/V1.0/V1.0.1&lt;br /&gt;$/Project/Production/V1.0/V1.0.1/(Source code for application)&lt;br /&gt;$/Project/Production/V1.1&lt;br /&gt;$/Project/Production/V1.1/Hotfix&lt;br /&gt;$/Project/Production/V1.1/Hotfix/(Source code for application)&lt;br /&gt;$/Project/Production/V1.1/V1.1.0&lt;br /&gt;$/Project/Production/V1.1/V1.1.0/(Source code for application)&lt;br /&gt;$/Project/Production/V1.1/V1.1.1&lt;br /&gt;$/Project/Production/V1.0/V1.1.1/(Source code for application)&lt;br /&gt;&lt;br /&gt;There are circumstances where you might need to have the ability to roll up hot fixes into service packs.  If you know you will need to roll up hot fixes into service packs, then you would use the same branching structure, except when it's time to branch for production, you branch MAIN to SERVICEPACK, immediately, from SERVICEPACK to HOTFIX, and from HOTFIX to an V1.0.0 SP 0 archive (read only) branch.  If hot fixes need to be done, developers work in the hot fix branch.  Changes are merged back to the SP branch, and from the SP branch, back to main, where code breaks and merge conflicts are fixed, and then the changes are merged to DEV.  Service Pack specific code is done in the SP branch, and when it's time to release a service patch, you would branch from the SP branch, to a HOTFIX branch, and from the HOTFIX branch, to a read only V1.0.0 SP 1 archive branch.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_UBXDHb8_OuI/SlEEtd1VrAI/AAAAAAAAABY/Hwur_-pp9XU/s1600-h/SPBranching.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 143px;" src="http://2.bp.blogspot.com/_UBXDHb8_OuI/SlEEtd1VrAI/AAAAAAAAABY/Hwur_-pp9XU/s400/SPBranching.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5355066611069201410" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As you can see, this will greatly increase the complexity.  However, if you need to support a released application with hot fixes, actively work on a cumulative service pack that includes all approved hot fixes, and you need to be concurrently working on the next major release, then this branching strategy will accommodate and facilitate an organized and planned migration path for all features which minimize the chances of merge conflicts and code breakage.&lt;br /&gt;&lt;br /&gt;Enough on branching for now... next time, support for multi-feature/multi-team development!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3029990858482485270-5496305922677543188?l=lifeaccordingtoabel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lifeaccordingtoabel.blogspot.com/feeds/5496305922677543188/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lifeaccordingtoabel.blogspot.com/2009/07/branching-and-merging-strategies-part-2.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3029990858482485270/posts/default/5496305922677543188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3029990858482485270/posts/default/5496305922677543188'/><link rel='alternate' type='text/html' href='http://lifeaccordingtoabel.blogspot.com/2009/07/branching-and-merging-strategies-part-2.html' title='Branching and Merging Strategies (part 2 of 3)'/><author><name>abel</name><uri>http://www.blogger.com/profile/15515322669131587260</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_UBXDHb8_OuI/SkwENvkcGbI/AAAAAAAAAAM/7p8I00eOMKk/S220/RockGod.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_UBXDHb8_OuI/SlEDiNGihfI/AAAAAAAAABQ/5ou8dwuBmWo/s72-c/HotFixBranching.png' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3029990858482485270.post-4099004457672845363</id><published>2009-07-03T15:08:00.000-07:00</published><updated>2009-07-03T16:08:43.985-07:00</updated><title type='text'>Badges? We don't need no stinking badges</title><content type='html'>I remember when I was in my late teens and early 20's, I acrued a fine collection of hair nets and name tags from the thousands of dead end jobs I have had. Today, as a consultant in the IT world, I have started up an equally impressive collection of security badges which gain me access to client sites. Nothing can beat the high tech badge I'm required to wear at my latest client!&lt;br /&gt;&lt;br /&gt;&lt;center&gt;&lt;a href='http://blogpress.w18.net/photos/09/07/03/519.jpg'&gt;&lt;img src='http://blogpress.w18.net/photos/09/07/03/s_519.jpg' border='0' width='320' height='320' style='margin:5px'&gt;&lt;/a&gt;&lt;/center&gt;&lt;br /&gt; &lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3029990858482485270-4099004457672845363?l=lifeaccordingtoabel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lifeaccordingtoabel.blogspot.com/feeds/4099004457672845363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lifeaccordingtoabel.blogspot.com/2009/07/badges-we-don-need-no-stinking-badges.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3029990858482485270/posts/default/4099004457672845363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3029990858482485270/posts/default/4099004457672845363'/><link rel='alternate' type='text/html' href='http://lifeaccordingtoabel.blogspot.com/2009/07/badges-we-don-need-no-stinking-badges.html' title='Badges? We don&amp;#39;t need no stinking badges'/><author><name>abel</name><uri>http://www.blogger.com/profile/15515322669131587260</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_UBXDHb8_OuI/SkwENvkcGbI/AAAAAAAAAAM/7p8I00eOMKk/S220/RockGod.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3029990858482485270.post-8353269877236168607</id><published>2009-07-03T11:50:00.000-07:00</published><updated>2009-07-03T16:09:40.030-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Merging'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><category scheme='http://www.blogger.com/atom/ns#' term='Branching'/><category scheme='http://www.blogger.com/atom/ns#' term='Source Code'/><title type='text'>Branching and Merging Strategies (part 1 of 3)</title><content type='html'>&lt;p&gt;In my last 3 engagements, I've been asked to help my clients with creating a branching and merging plan using code promotion for release management. Since I'm not at a client site today, I figured it was a good time to actually put down my thoughts on branching and merging strategies. &lt;/p&gt;&lt;p&gt;First off, before I begin, I would like to add a word of caution. Any time you branch, you add a significant layer of complexity. In TFS, it's extremely easy to create a branch. You just right click a folder and select branch. However, to maintain the branches, the additional testing required, and resolving the potential merge conflicts between branches does add complexity (and not just a little). The pain of the additional work required with branching need to be far less than the pain of not having the branches. In other words, don't branch unless you really need to. &lt;/p&gt;&lt;p&gt;So when do you really need branching? Actually, this is an easy question to answer. If developers start doing weird things to work around restrictive check-in policies, it's a good sign that an official branching strategy needs to be implemented. For instance, if there is a code freeze on the main branch for V1.0 and developers are creating copies where they can continue working on V1.1 changes, that's a good sign that you need branches. If your developers can't check in their code, they have to shelve their code because their check-ins are going to drastically affect everybody else, which would freeze development, that's a good sign a branching strategy needs to be implemented. If a developer refuses to do a get latest, just works in his own little world, and when he's finally finished, he checks in his code (which results in a hellish couple of days trying to integrate his code back with everyone else's), that's a good sign you need a branching strategy! In a nutshell, if developers don't have the branches they need in source control, they WILL create them on their hard drive. So if you catch your developers creating ad hoc, unofficial branches on their hard drive, it is definitely time to create a branching strategy!!!&lt;/p&gt;&lt;p&gt;In Abel's World, I use 3 different branching strategies. A simple branching strategy. A branching strategy used to support hot fixes (and service packs), and a multi-team/multi feature branching strategy. We'll start with simplest. &lt;/p&gt;&lt;p&gt;A common scenario I see is that a software shop starts off extremely small. One or two developers, long development cycles, and infrequent releases. Since it's just a couple of guys coding like mad men, they have no need for a branching strategy. They are all coding off of a single branch. And for a small shop like this, it works just fine. Inevitably, things start to change and grow. More developers are added, releases come a little quicker and problems and bottlenecks start occurring. &lt;/p&gt;&lt;p&gt;One problem often encontered is developers check in code which haven't been adequately tested. Another common problem is that the code base becomes EXTREMELY volatile right before a release. This makes QA-ing the application, or even figuring out what is going to be released extremely difficult. To alleviate this problem, the team implements a code freeze where developers are not allowed to make code changes. These code freezes might start out as just half an hour, but they soon turn into longer and longer periods of time where developers are not allowed to make changes to the source. &lt;/p&gt;&lt;p&gt;In a situation like this, a simple branching strategy can be used. I take the MAIN branch where developers are currently working, and from there, I branch to a DEV branch. Now, all the developers will do their work in the DEV branch. &lt;/p&gt;&lt;p&gt;&lt;a href="http://1.bp.blogspot.com/_UBXDHb8_OuI/Sk5cuFo47lI/AAAAAAAAABI/9UCGsUQSsgo/s1600-h/SimpleBranching.png"&gt;&lt;img style="WIDTH: 400px; HEIGHT: 196px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5354318953847516754" border="0" alt="" src="http://1.bp.blogspot.com/_UBXDHb8_OuI/Sk5cuFo47lI/AAAAAAAAABI/9UCGsUQSsgo/s400/SimpleBranching.png" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;As time goes by and DEV becomes closer and closer to feature complete, they need to merge the changes over to MAIN, where the QA finds bugs. Developers continue working in the dev branch, fixing bugs, working on new features, merging those changes over to MAIN until QA determines that it is feature complete and the quality is good. At that time, you create a branch from MAIN to have an archived copy of what the source code looks like for the version release. &lt;/p&gt;&lt;p&gt;I like keeping my MAIN branch as stable as possible. I try not to merge code from DEV to MAIN until the code in DEV reaches a certain level of quality, and is believed to be ready for production. I then merge those changes to MAIN where QA bangs on it and gives it their blessing. I also like having a CI-Build running on the DEV branch, and a Nightly build running on the MAIN branch. This way, developers checking in code will quickly realize if they are breaking the build in the DEV branch, while the nightly builds in the MAIN branch is a nice sanity check to make sure everything compiles and passes unit tests and BVT's. &lt;/p&gt;&lt;p&gt;So the above demonstrates how the code branches, but this is different than how I want to lay the branches out on my hard drive (or in source control). I want to be able to take one look at my hard drive, or source control and know exactly where I am. Here is how I would lay out the source control:&lt;/p&gt;&lt;br /&gt;&lt;p&gt;$/ProjectX/Main&lt;br /&gt;$/ProjectX/Main/(all the files and folders for the application)&lt;br /&gt;$/ProjectX/Development&lt;br /&gt;$/ProjectX/Development/(all the files and folders for the application)&lt;br /&gt;$/ProjectX/Production&lt;br /&gt;$/ProjectX/Production/V1.0&lt;br /&gt;$/ProjectX/Production/V1.0/(all the files and folders for the application)&lt;br /&gt;$/ProjectX/Production/V1.1&lt;br /&gt;$/ProjectX/Production/V1.1/(all the files and folders for the application) &lt;/p&gt;&lt;br /&gt;&lt;p&gt;Now before I finish this section, I would like to address a question a good friend and colleague asked me. "Why do you branch from Main to Dev, why not use the original branch as the DEV branch and branch to a new branch and call that QA or MAIN? Or if I'm just starting the project, why do you create a MAIN branch first, and branch to DEV?" The reason is because I want to keep a consistent forward merge and reverse merge pattern. Also, branching like this allows for a seamless integration into future branching/merging patterns.  Future branching patterns will not have to use baseless merges.  More on that next time. &lt;/p&gt;&lt;p&gt;For my next blog installment, I will talk about a slightly more complex branching scenario. Branching for the ability of hot fixes, or even hot fixes and service packs. &lt;/p&gt;&lt;p&gt;--a&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3029990858482485270-8353269877236168607?l=lifeaccordingtoabel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lifeaccordingtoabel.blogspot.com/feeds/8353269877236168607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lifeaccordingtoabel.blogspot.com/2009/07/branching-and-merging-strategies-part-1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3029990858482485270/posts/default/8353269877236168607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3029990858482485270/posts/default/8353269877236168607'/><link rel='alternate' type='text/html' href='http://lifeaccordingtoabel.blogspot.com/2009/07/branching-and-merging-strategies-part-1.html' title='Branching and Merging Strategies (part 1 of 3)'/><author><name>abel</name><uri>http://www.blogger.com/profile/15515322669131587260</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_UBXDHb8_OuI/SkwENvkcGbI/AAAAAAAAAAM/7p8I00eOMKk/S220/RockGod.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_UBXDHb8_OuI/Sk5cuFo47lI/AAAAAAAAABI/9UCGsUQSsgo/s72-c/SimpleBranching.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3029990858482485270.post-3613216671361055143</id><published>2009-07-01T17:52:00.000-07:00</published><updated>2009-07-01T21:11:19.571-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Team Foundation Server'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft'/><category scheme='http://www.blogger.com/atom/ns#' term='Introduction'/><title type='text'>Introduction</title><content type='html'>Hi there,&lt;br /&gt;&lt;br /&gt;My name is Abel and I'm a process consultant for Notion Solutions.  What I do is write software.  And I'm VERY good at it.  What I do for fun is music.  And guess what?  Yup, I'm also VERY good at that!  Hahaha.  Kidding &lt;br /&gt;&lt;br /&gt;Anyway, I've been thinking about starting up a blog for quite some time now.  Because of my work, I'm often thrown into different clients with different problems to solve.  Because of my incredibly bad short term memory, it seems that often times, I'm figuring out how to solve the same type of problems.  Frantically googling, trying to find answers to solutions I know I've solved before.  So why not have my solutions in one easily searchable location!!!!!  Why not start a blog?&lt;br /&gt;&lt;br /&gt;This thought has been on my mind for quite some time now but I've never been motivated enough to actually start one.  However, my current engagement has definitely given me the motivation!  It has been a frustrating engagement with plenty of "are you serious!!!" moments that only a consultant would know.  Along with those moments have been times where I know I've solved a problem that I'm seing before, but I can't remember how I did it.  This happeneed enough times that yeah, I finally decided that today will be the day that I start writing down all of my solutions in this blog.&lt;br /&gt;&lt;br /&gt;So... with no further delay, the next couple of days, I will blog about&lt;br /&gt;1) branching and merging strategies with release management done through code promotion&lt;br /&gt;2) simple command line TFS commands that I need to use often enough that i wish I had them memorized, but not enough that I actually have them memorized (think, delete team projects, import/export tfs project templates, changing the password to the service accounts in tfs... things like that).&lt;br /&gt;3) Writing custom controls for team foundation server's web interface&lt;br /&gt;4) Customizing team builds&lt;br /&gt;5) How to use the testing tools inside of visual studio team suite.&lt;br /&gt;&lt;br /&gt;That's all for today,&lt;br /&gt;&lt;br /&gt;--a&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3029990858482485270-3613216671361055143?l=lifeaccordingtoabel.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lifeaccordingtoabel.blogspot.com/feeds/3613216671361055143/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lifeaccordingtoabel.blogspot.com/2009/07/introduction.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3029990858482485270/posts/default/3613216671361055143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3029990858482485270/posts/default/3613216671361055143'/><link rel='alternate' type='text/html' href='http://lifeaccordingtoabel.blogspot.com/2009/07/introduction.html' title='Introduction'/><author><name>abel</name><uri>http://www.blogger.com/profile/15515322669131587260</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://1.bp.blogspot.com/_UBXDHb8_OuI/SkwENvkcGbI/AAAAAAAAAAM/7p8I00eOMKk/S220/RockGod.jpg'/></author><thr:total>0</thr:total></entry></feed>
