<?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-8850715991914801798</id><updated>2012-02-16T03:09:42.407-08:00</updated><category term='SharePoint'/><category term='Tools'/><category term='TFS Visual-Studio ALM'/><category term='Go'/><category term='Process'/><category term='Methods'/><category term='Agile'/><category term='Subversion'/><category term='Cloud'/><category term='TFS'/><category term='SQL Server'/><title type='text'>mark richter.</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://lyricsoft.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://lyricsoft.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Mark Richter</name><uri>http://www.blogger.com/profile/00876569465727030843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>30</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8850715991914801798.post-2296530503659044746</id><published>2012-02-01T12:45:00.001-08:00</published><updated>2012-02-08T16:38:59.731-08:00</updated><title type='text'>Agile Development Using Visual Studio–Part I</title><content type='html'>&lt;p&gt;&lt;em&gt;It is liberating to do big-time development using Visual Studio without Team Foundation Server in the room&lt;/em&gt;. I feel 50 pounds lighter. (Those who know me can imagine how good that makes me feel!) This article presents how I develop software for the Microsoft ecosystem using Visual Studio without using Microsoft’s flagship ALM tools. The theme is to find best-of-breed tools and combine them to get something I like, rather than force myself to use TFS, much of which I don’t like.&lt;/p&gt; &lt;p&gt;Let’s start with the desktop tool for editing and testing code. This is where we spend all of our time. I like to Visual Studio when building software for the Microsoft ecosystem since it’s so attuned to working with .NET assemblies. Full stop. Once that decision is made it’s time to look around for how to take advantage of the best&amp;nbsp; of everything else.&lt;/p&gt; &lt;p&gt;There are excellent choices for integrated source control, task tracking, team collaboration, test-driven development and automated build/deployment using Visual Studio as your integrated development environment (IDE). I use these:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.microsoft.com/visualstudio/en-us/products/2010-editions/ultimate/overview" target="_blank"&gt;Visual Studio 2010 Ultimate&lt;/a&gt; (IDE)  &lt;li&gt;&lt;a href="https://github.com/" target="_blank"&gt;Github&lt;/a&gt; for source control using the &lt;a href="http://visualstudiogallery.msdn.microsoft.com/8f594baa-e44e-4114-8381-e175ace0fe97" target="_blank"&gt;Git Extensions&lt;/a&gt;/&lt;a href="http://code.google.com/p/msysgit/" target="_blank"&gt;Mysysgit&lt;/a&gt; for Visual Studio  &lt;li&gt;&lt;a href="http://www.thoughtworks-studios.com/mingle-agile-project-management" target="_blank"&gt;Mingle&lt;/a&gt; from ThoughtWorks Studios (task tracking and team collaboration)  &lt;li&gt;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/c3128d58-8c2b-4104-894a-6554a30483b0" target="_blank"&gt;Mingle Extension for Visual Studio&lt;/a&gt;  &lt;li&gt;&lt;a href="http://www.jetbrains.com/resharper/" target="_blank"&gt;ReSharper&lt;/a&gt; &lt;li&gt;&lt;a href="http://www.thoughtworks-studios.com/go-agile-release-management" target="_blank"&gt;Go&lt;/a&gt; from ThoughtWorks Studios for continuous integration/delivery  &lt;li&gt;&lt;a href="http://ironruby.net/" target="_blank"&gt;IronRuby&lt;/a&gt; for some of my automated testing  &lt;li&gt;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/d0d33361-18e2-46c0-8ff2-4adea1e34fef/" target="_blank"&gt;Productivity Power Tools&lt;/a&gt; for Visual Studio  &lt;li&gt;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/e5f41ad9-4edc-4912-bca3-91147db95b99/" target="_blank"&gt;PowerCommands&lt;/a&gt; for Visual Studio&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Visual Studio 2010 was a fabulous integrated gallery of IDE extensions. It’s easy to load up. I try and only install the extensions I need and actually use to make life better. Here’s my list:&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-0qjCoJwkHCs/TymkOOGC6vI/AAAAAAAABew/z7fJcgHCq9o/s1600-h/image%25255B24%25255D.png"&gt;&lt;img style="display: inline" title="image" alt="image" src="http://lh4.ggpht.com/-Kx8Mm3dmOxs/TymkOyon9UI/AAAAAAAABe4/65W6yVNq5DQ/image_thumb%25255B14%25255D.png?imgmax=800" width="317" height="224"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="3"&gt;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;My Visual Studio solution has five projects. You’ll find the source for this solution &lt;a href="https://github.com/ThoughtWorksStudios/mingle.net" target="_blank"&gt;here on Github.&lt;/a&gt;&lt;/p&gt; &lt;p align="left"&gt;&lt;a href="http://lh5.ggpht.com/-Px4xVqUNSrc/TymkPMFPhpI/AAAAAAAABfA/-GMHRWBjBvI/s1600-h/SolutionNavigator%25255B6%25255D.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="SolutionNavigator" border="0" alt="SolutionNavigator" src="http://lh5.ggpht.com/-mYkkUXN1gk0/TymkPqiNT6I/AAAAAAAABfI/xl3wYJWzL-I/SolutionNavigator_thumb%25255B4%25255D.png?imgmax=800" width="321" height="187"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="left"&gt;This is the project for our .NET client API for Mingle. The highlights are:&lt;/p&gt; &lt;ul&gt; &lt;li&gt; &lt;div align="left"&gt;Class libraries that wrap the the Mingle (and soon Go) REST APIs with XElement wrappers that expose .NET CLR classes for consumption.&lt;/div&gt; &lt;li&gt; &lt;div align="left"&gt;Automated tests primarily written in Ruby using &lt;a href="http://en.wikipedia.org/wiki/RSpec" target="_blank"&gt;RSpec&lt;/a&gt;. Why Ruby, you ask? There’s a nice &lt;a href="http://www.sinatrarb.com/" target="_blank"&gt;gem called Sinatra&lt;/a&gt; that features a light weight web framework useful for mocking. This makes it easy to take Mingle out of the room when unit testing.&lt;/div&gt; &lt;li&gt; &lt;div align="left"&gt;A setup project to create an installer the binaries.stand-up&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p align="left"&gt;&amp;nbsp;&lt;/p&gt; &lt;h3 align="left"&gt;Task Management and Collaboration&lt;/h3&gt; &lt;p&gt;I use the Mingle Extension for Visual Studio connected to a Mingle system hosted internally here at ThoughtWorks. These screen shots are from a sample project showing how I query Mingle “cards” (tasks). We use a number of default queries (favorites). “My Work” lists things assigned to me and conforms to the identity of the logged in user of Visual Studio. Individual cards open into a tabbed UI for editing card details. A row of buttons across he top of the card window gives easy access to pre-defined transitions like “start development”, “start testing” and “complete development”.&lt;/p&gt; &lt;h4&gt;Work Flow&lt;/h4&gt; &lt;p&gt;Our work flow goes like this:&lt;/p&gt; &lt;p align="center"&gt;&lt;a href="http://lh5.ggpht.com/-VErBPSYuFVM/TzG6WFhbwTI/AAAAAAAABgw/Puo9troLdJQ/s1600-h/Workflow%25255B5%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="Workflow" border="0" alt="Workflow" src="http://lh5.ggpht.com/-hX_PXyRgC0c/TzG6W0aYNhI/AAAAAAAABg4/WJfvkDwTK34/Workflow_thumb%25255B3%25255D.png?imgmax=800" width="490" height="200"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p align="left"&gt;The &lt;em&gt;backlog&lt;/em&gt; is what you’d expect in an agile model; it’s the list of things we want. We use a secondary category called &lt;em&gt;Do&lt;/em&gt;, which is the list of things we are committed to deliver soon. Each of us takes things from the &lt;em&gt;Do&lt;/em&gt; pile and moves them into a state we call &lt;em&gt;Doing&lt;/em&gt; when we are actually working on something. I never have more than a couple of things in the &lt;em&gt;Doing&lt;/em&gt; state. We use &lt;em&gt;Ready&lt;/em&gt; to denote things that are ready to release – nothing more needs to be done &lt;em&gt;at all&lt;/em&gt;. We batch things together before releasing simply because it typically makes sense not to formally release each and every story as it is completed. In our shop &lt;em&gt;Done&lt;/em&gt; means the story is in the end-user’s hands &lt;em&gt;and&lt;/em&gt; they concur it is what they want. &lt;em&gt;Done really means DONE.&lt;/em&gt;&lt;/p&gt; &lt;p align="left"&gt;We batch things together into &lt;em&gt;iterations&lt;/em&gt;&amp;nbsp; and &lt;em&gt;releases&lt;/em&gt; using properties of cards (tasks/stories/bugs). A nature of our group is that about half the work we do does not need to be batched into releases and Mingle gives us the flexibility to &lt;em&gt;easily&lt;/em&gt; accommodate released-based and one-off development in the context of one Mingle project. It is very nice.&lt;/p&gt; &lt;p align="left"&gt;One cool feature of Mingle is something we call “murmurs”, a messaging system that can be connected with Jabber instant messaging. Murmurs quite flexible and useful in different ways, all of them important for team communication and collaboration. My team is geographically dispersed in the United States and the United Kingdom. We use murmurs to keep a running “live log” of comments, questions, observations and status. At any given moment any one of us can jump online and review the murmurs history to come up to speed on current status of a project or each other. I do this in the morning when I start work on the west coast of the United States to catch up on what my colleagues have been doing all day in their office near London. &lt;/p&gt; &lt;p align="left"&gt;I use the &lt;a href="http://visualstudiogallery.msdn.microsoft.com/c3128d58-8c2b-4104-894a-6554a30483b0" target="_blank"&gt;Mingle Extension for Visual Studio&lt;/a&gt; to give me access to a lot of Mingle from within the Visual Studio environment. The following diagram shows you the mains elements of the extension, which supports running pre-defined “favorite” queries in Mingle, drilling down into individual cards, editing and composing new cards.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-74zqUjMS4Xw/TzMPnpVOSII/AAAAAAAABhQ/KFI9EtqFAMU/s1600-h/Big%252520Picture%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="Big Picture" border="0" alt="Big Picture" src="http://lh3.ggpht.com/-cjCr_piEp-4/TzMPoTv6HrI/AAAAAAAABhY/3Cea-4IZanY/Big%252520Picture_thumb%25255B1%25255D.png?imgmax=800" width="651" height="503"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;We have exposed murmurs inside Visual Studio as a lightweight instant message window. You can murmur directly into the window OR from comments to individual cards (tasks). My team’s model for using murmurs has become very a easy and thorough way for us to stay current with each other over thousands of miles in real time. Because murmurs are integrated into Jabber our Jabber IM clients light up if Visual Studio isn’t running. Very cool.&lt;/p&gt;     &lt;p&gt;This is enough for this post. Next I’ll tear into the joy of using Git with Visual Studio (instead of TFS), automated testing using a combination of MSTest and Ruby (use the best tool for job) and continuous integration using Go.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8850715991914801798-2296530503659044746?l=lyricsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lyricsoft.blogspot.com/feeds/2296530503659044746/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lyricsoft.blogspot.com/2012/02/agile-development-using-visual.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/2296530503659044746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/2296530503659044746'/><link rel='alternate' type='text/html' href='http://lyricsoft.blogspot.com/2012/02/agile-development-using-visual.html' title='Agile Development Using Visual Studio–Part I'/><author><name>Mark Richter</name><uri>http://www.blogger.com/profile/00876569465727030843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/-Kx8Mm3dmOxs/TymkOyon9UI/AAAAAAAABe4/65W6yVNq5DQ/s72-c/image_thumb%25255B14%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8850715991914801798.post-2638191394489317498</id><published>2011-11-15T08:49:00.000-08:00</published><updated>2011-11-15T08:49:53.501-08:00</updated><title type='text'>Mingle Portal Page - Visual Studio 2010</title><content type='html'>With Visual Studio 2010 you can set a portal page link for any TFS Team Project. When using Mingle I set my portal to be my personal Mingle card wall, making it very easy for me to jump to the wall and saving clicks and keystrokes.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;To do this:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;- Right click on a team project node in Team Explorer&lt;/div&gt;&lt;div&gt;- Choose Team Project Settings -&amp;gt; Portal Settings&lt;/div&gt;&lt;div&gt;- Past in the link&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Mine looks like this:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-XSosNZUwshU/TsKYB92EdHI/AAAAAAAABSY/MxyeG6jBD9k/s1600/wall.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="348" src="http://3.bp.blogspot.com/-XSosNZUwshU/TsKYB92EdHI/AAAAAAAABSY/MxyeG6jBD9k/s640/wall.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8850715991914801798-2638191394489317498?l=lyricsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lyricsoft.blogspot.com/feeds/2638191394489317498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lyricsoft.blogspot.com/2011/11/mingle-portal-page-visual-studio-2010.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/2638191394489317498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/2638191394489317498'/><link rel='alternate' type='text/html' href='http://lyricsoft.blogspot.com/2011/11/mingle-portal-page-visual-studio-2010.html' title='Mingle Portal Page - Visual Studio 2010'/><author><name>Mark Richter</name><uri>http://www.blogger.com/profile/00876569465727030843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-XSosNZUwshU/TsKYB92EdHI/AAAAAAAABSY/MxyeG6jBD9k/s72-c/wall.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8850715991914801798.post-1578121437946837331</id><published>2011-10-17T11:59:00.000-07:00</published><updated>2011-10-17T11:59:05.006-07:00</updated><title type='text'>Card Walls for Organizing Your Work</title><content type='html'>ThoughtWorks Mingle makes it trivially easy to organize your personal work using 2-D card walls. We introduced them specifically to handle SCRUM projects. Yet they are flexible enough to do lots more. Here’s my personal “to do” list organized by project (rows) and timing (columns). Individual work items are in the cells and color-coded by type (story, task, etc.). It took me less than a minute to produce this. (Apologies for smudging the details, but my employer gets funny about disclosing proprietary information. Smile.)&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-LXA_AxPaCxI/Tpx6t9TpIFI/AAAAAAAABRc/Q2b0cWc97kg/s1600/to-do.PNG" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="329" src="http://3.bp.blogspot.com/-LXA_AxPaCxI/Tpx6t9TpIFI/AAAAAAAABRc/Q2b0cWc97kg/s640/to-do.PNG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8850715991914801798-1578121437946837331?l=lyricsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lyricsoft.blogspot.com/feeds/1578121437946837331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lyricsoft.blogspot.com/2011/10/card-walls-for-organizing-your-work.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/1578121437946837331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/1578121437946837331'/><link rel='alternate' type='text/html' href='http://lyricsoft.blogspot.com/2011/10/card-walls-for-organizing-your-work.html' title='Card Walls for Organizing Your Work'/><author><name>Mark Richter</name><uri>http://www.blogger.com/profile/00876569465727030843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-LXA_AxPaCxI/Tpx6t9TpIFI/AAAAAAAABRc/Q2b0cWc97kg/s72-c/to-do.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8850715991914801798.post-7693091193245764653</id><published>2011-07-01T14:24:00.000-07:00</published><updated>2011-07-01T14:29:16.914-07:00</updated><title type='text'>Sun Java on Ubuntu 11</title><content type='html'>Took some digging, but this finally worked.&lt;br /&gt;&lt;blockquote&gt;&lt;b&gt;sudo add-apt-repository “deb http://archive.canonical.com/ lucid partner”&lt;br /&gt;sudo apt-get update&lt;br /&gt;apt-get install sun-java6-jre sun-java6-plugin&lt;/b&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8850715991914801798-7693091193245764653?l=lyricsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lyricsoft.blogspot.com/feeds/7693091193245764653/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lyricsoft.blogspot.com/2011/07/sun-java-on-ubuntu-11.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/7693091193245764653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/7693091193245764653'/><link rel='alternate' type='text/html' href='http://lyricsoft.blogspot.com/2011/07/sun-java-on-ubuntu-11.html' title='Sun Java on Ubuntu 11'/><author><name>Mark Richter</name><uri>http://www.blogger.com/profile/00876569465727030843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8850715991914801798.post-4194314727554995679</id><published>2011-06-15T06:25:00.000-07:00</published><updated>2011-06-15T06:25:35.430-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TFS Visual-Studio ALM'/><title type='text'>Visual Studio vNext and Next Gen MSFT ALM</title><content type='html'>Microsoft presented a bit about their vision for ALM and the &lt;a href="http://http//go.microsoft.com/?linkid=9772730"&gt;next generation of Visual Studio&lt;/a&gt; at &lt;a href="http://http//blogs.msdn.com/b/jasonz/archive/2011/05/16/announcing-alm-roadmap-in-visual-studio-vnext-at-teched.aspx"&gt;Tech Ed last month&lt;/a&gt;. As usual with these sorts of announcements and white papers the signal to noise ratio of quite low. I'll help with a synopsis for folks who don't want to read the 32-page PDF.&amp;nbsp; First an editorial comment.  &lt;br /&gt;vNext doubles-down on the theme of Microsoft's development environment - automation. Their vision is a world where tools and process are effectively one and the same. They see their mission as providing amazing amounts of automation of routine tasks through the use of tools - their tools. In the Microsoft development ecosystem life is "easy". Microsoft provides you with all the tools you "need". In the process you may be blind to a world of thinking and building software that goes on around you.&lt;br /&gt;&amp;nbsp; &lt;br /&gt;Resource capacity visualization is nice.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-eRtYlEg4Fnw/TfiyBvmX6QI/AAAAAAAABQY/NsRUhdWOwXQ/s1600-h/resoruce-capacity-visualization%25255B6%25255D.jpg"&gt;&lt;img alt="resoruce-capacity-visualization" border="0" height="451" src="http://lh3.ggpht.com/-8KHuh3D1kg4/TfiyCKjeqeI/AAAAAAAABQc/ZhIKFSfYw6M/resoruce-capacity-visualization_thumb%25255B4%25255D.jpg?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="resoruce-capacity-visualization" width="533" /&gt;&lt;/a&gt;  &lt;br /&gt;&lt;br /&gt;Interactive drag-and-drop Task Board, which looks quite familiar.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-DpJabuEgbFY/TfiyCmdT44I/AAAAAAAABQg/DNcsENV_Gu8/s1600-h/task-board%25255B3%25255D.jpg"&gt;&lt;img alt="task-board" border="0" height="450" src="http://lh5.ggpht.com/-lMg3Q4hGktI/TfiyDD90AKI/AAAAAAAABQk/v0ob51IGc9Q/task-board_thumb%25255B1%25255D.jpg?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="task-board" width="547" /&gt;&lt;/a&gt;  &lt;br /&gt;&lt;br /&gt;Integrated MS Project Server (this is a feature add-on in VS 2010). This is a very cool feature, especially for enterprise resource planning spanning multiple projects. We can also do it with Mingle with a bit of code.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-zpQEHvGnK4I/TfiyDgt_EAI/AAAAAAAABQo/a2GttJxaNeY/s1600-h/gantt%25255B3%25255D.jpg"&gt;&lt;img alt="gantt" border="0" height="331" src="http://lh4.ggpht.com/-Vty6vW4zeww/TfiyEI9PFdI/AAAAAAAABQs/9E8VXvNCMD8/gantt_thumb%25255B1%25255D.jpg?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="gantt" width="569" /&gt;&lt;/a&gt;  &lt;br /&gt;&lt;br /&gt;There's something called &lt;b&gt;StoryBoard Assistant&lt;/b&gt;, that integrates into PowerPoint. They claim it facilitates better inbuilt graphical design tools, ability to embed other content, ability to create lightweight animations, etc. Personally I prefer things like SketchFlow in Expression Blend, which is a more "design UX in code" tool for WPF.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/-8kkkdPCzsPo/TfiyEl0gdjI/AAAAAAAABQw/k4m2bCR04RA/s1600-h/StoryBoardAssistant%25255B4%25255D.jpg"&gt;&lt;img alt="StoryBoardAssistant" border="0" height="477" src="http://lh5.ggpht.com/-xVDMqi-0MvA/TfiyFPdgCyI/AAAAAAAABQ0/leGFLHmYaQM/StoryBoardAssistant_thumb%25255B2%25255D.jpg?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="StoryBoardAssistant" width="574" /&gt;&lt;/a&gt;  &lt;br /&gt;&lt;br /&gt;They've integrated e-mail for collecting stakeholder feedback. Presumably this was done so that it uses the default e-mail provider configured on the Windows client PC rather than being limited to Outlook.&amp;nbsp; This feature doesn't impress me much without seeing it since my personal bias is that demos are a much more effective feedback collection platform. If viewers are remote then one has tools like Skype, Webex, GoToMeeting and Live Meeting. One nice thing about this is they claim it's integrated into the web browsing environment so that it's easy to create feedback directly from a web page.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-GnpKaoIjULs/TfiyFUGARwI/AAAAAAAABQ4/QBHE5nVFjPk/s1600-h/Stakeholder-Feedback%25255B3%25255D.jpg"&gt;&lt;img alt="Stakeholder-Feedback" border="0" height="477" src="http://lh6.ggpht.com/-DKZZbZeBkZo/TfiyF3uuo_I/AAAAAAAABQ8/2k2JY2MG29Y/Stakeholder-Feedback_thumb%25255B1%25255D.jpg?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="Stakeholder-Feedback" width="583" /&gt;&lt;/a&gt;  &lt;br /&gt;&lt;br /&gt;Unit testing in vNext is asynchronous to you can code and test at the same time. Sounds iffy to me. Do I really want my in-flight code being constantly tested? I know I want my checked-in code immediately tested using a GO pipeline. I do like the UI treatment of test results here very much.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-uZmPG8XYqWs/TfiyGItVTGI/AAAAAAAABRA/8Q3mQnTiFos/s1600-h/Unit-Testing2%25255B3%25255D.jpg"&gt;&lt;img alt="Unit-Testing2" border="0" height="459" src="http://lh4.ggpht.com/-dq3npiK9Tmg/TfiyGaY2MQI/AAAAAAAABRE/9Tc8D0gXOAo/Unit-Testing2_thumb%25255B1%25255D.jpg?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="Unit-Testing2" width="201" /&gt;&lt;/a&gt;&lt;a href="http://lh6.ggpht.com/-5mIs7Gmw1P0/TfiyGwCmRMI/AAAAAAAABRI/A3g44g92sBs/s1600-h/Test-Results%25255B3%25255D.jpg"&gt;&lt;img alt="Test-Results" border="0" height="452" src="http://lh6.ggpht.com/-gXiuQHPZq-M/TfiyHW2g-tI/AAAAAAAABRM/sdJY-tYZ3TI/Test-Results_thumb%25255B1%25255D.jpg?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="Test-Results" width="194" /&gt;&lt;/a&gt;  &lt;br /&gt;&lt;br /&gt;Integrated code review looks spiffy. (TFS has facilitated code sharing for review using a feature they call "shelf sets" for years. It's one of my favorite features. A shelf set is code on the TFS server that has a name so it can be shared, but it's not checked in.)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/-b8-Gtqts_6o/TfiyHrNiV8I/AAAAAAAABRQ/tvAaZ0koW1o/s1600-h/Code-Review%25255B3%25255D.jpg"&gt;&lt;img alt="Code-Review" border="0" height="443" src="http://lh3.ggpht.com/-EuFpUFO1AvQ/TfiyINj6TBI/AAAAAAAABRU/3p4haNrkPJU/Code-Review_thumb%25255B1%25255D.jpg?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="Code-Review" width="603" /&gt;&lt;/a&gt;  &lt;br /&gt;&lt;br /&gt;They also claim to have added production testing scenarios to facilitate close communication between development and operations.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8850715991914801798-4194314727554995679?l=lyricsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lyricsoft.blogspot.com/feeds/4194314727554995679/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lyricsoft.blogspot.com/2011/06/visual-studio-vnext-and-next-gen-msft.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/4194314727554995679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/4194314727554995679'/><link rel='alternate' type='text/html' href='http://lyricsoft.blogspot.com/2011/06/visual-studio-vnext-and-next-gen-msft.html' title='Visual Studio vNext and Next Gen MSFT ALM'/><author><name>Mark Richter</name><uri>http://www.blogger.com/profile/00876569465727030843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/-8KHuh3D1kg4/TfiyCKjeqeI/AAAAAAAABQc/ZhIKFSfYw6M/s72-c/resoruce-capacity-visualization_thumb%25255B4%25255D.jpg?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8850715991914801798.post-3637329770497507545</id><published>2011-05-09T07:40:00.001-07:00</published><updated>2011-05-09T07:40:58.770-07:00</updated><title type='text'>Moving Projects: Mingle vs. TFS</title><content type='html'>&lt;p&gt;There is no contest. This morning I needed to create a new Mingle project on a server to which I do not have administrative access. It is easy to set up a local Mingle system on Windows, create the project, set up work-flow and other things I need and go to work. Exporting this project later and giving it to an admin on the other server to import takes about five minutes. Try doing this with TFS. Where are the export/import commands? Oh, there is a utility for this that is not included with TFS, complicated and cannot be used in five minutes.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8850715991914801798-3637329770497507545?l=lyricsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lyricsoft.blogspot.com/feeds/3637329770497507545/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lyricsoft.blogspot.com/2011/05/moving-projects-mingle-vs-tfs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/3637329770497507545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/3637329770497507545'/><link rel='alternate' type='text/html' href='http://lyricsoft.blogspot.com/2011/05/moving-projects-mingle-vs-tfs.html' title='Moving Projects: Mingle vs. TFS'/><author><name>Mark Richter</name><uri>http://www.blogger.com/profile/00876569465727030843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8850715991914801798.post-6631200385968505983</id><published>2011-05-08T09:12:00.001-07:00</published><updated>2011-05-08T17:12:10.511-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><title type='text'>Looking At TFS 2010 Build</title><content type='html'>I have been digging into Team Foundation Server 2010’s (TFS) build system with a particular eye on how it handles &lt;a href="http://www.martinfowler.com/articles/continuousIntegration.html" target="_blank"&gt;continuous integration&lt;/a&gt; (CI). Martin Fowler describes it this way: &lt;blockquote&gt; &lt;p&gt;&lt;i&gt;Continuous Integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible.&lt;/i&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;First we need to consider build automation in TFS generally. Then we can look at how it handles CI well (or not).&lt;/p&gt; &lt;p&gt;TFS 2005 does not handle automated builds well without a considerable amount of of trial and error to get a stable build configuration. I’d describe it barely usable. Things get better with TFS 2008, but time and patience configuring builds remains too much of a virtue. &lt;/p&gt; &lt;p&gt;The biggest issue in my view is the way-too-heavyweight role of the Team Project in the build process. TFS wants to pull the entire source tree for a Team Project to build &lt;em&gt;anything&lt;/em&gt;. Having a source tree with several products it’s not unusual for me to put my team to work on a vertical slice of the tree. In a CI world I want to continuously integrate just Product A, I don’t really want to pull Products B and C to do that. So that’s an issue. &lt;/p&gt; &lt;p&gt;Second, I want to string together chunks of work in a build process like build, unit tests, integration tests, UI tests, stress tests and deployment. Doing this with TFS 2005 is a nightmare. It is better but still tedious with 2008. So I am excited to see if some of these issues are mitigated or eliminated in TFS 2010.&lt;/p&gt; &lt;p&gt;Let me point out that I got to that point with my source tree because I inherited a bunch of legacy stuff developed over six or seven years under a different source control system. Rarely are we blessed with the time (and energy) to redecorate a huge source tree when we decide to migrate to something like TFS to take advantage of work item tracking and better reporting, so I did not. If I had started from scratch with TFS maybe I’d have made different choices for how to set up Team Projects.&lt;/p&gt; &lt;p&gt;Enough history.&lt;/p&gt; &lt;p&gt;My intent with this post is to begin with a walk-through of TFS 2010 Build. I’ll come back and elaborate a bit if it makes sense. As to &lt;em&gt;continuous integration&lt;/em&gt; TFS 2010 provides a build option with that name. The build process editor provides hooks for including build, testing and deployment. I have not taken TFS 2010 Build through an elaborate implementation yet to know whether it is as flexible as other systems like &lt;a href="http://thoughtworks-studios.com"&gt;ThoughtWorks Go&lt;/a&gt; that have a rich model for breaking builds into stages and jobs.&lt;/p&gt; &lt;p&gt;TFS 2010 introduces an Administration Console that consolidates what heretofore was a conundrum of command line tools and Visual Studio.&amp;nbsp; &lt;/p&gt; &lt;p&gt;&lt;a href="http://www.youtube.com/watch?v=z1trWryL9G0" target="_blank"&gt;Here is a video&lt;/a&gt; that runs through build service configuration.&lt;/p&gt; &lt;p&gt;To set up the build system you first configure the build service. An important note about the account you use as credentials for the service is that this account needs write access to the “drop location” for build results in the file system. More on this later. Each Team Project Collection requires a separate build service. If you want to configure the service to run under a special account, you may. Historically it has been common to use a special TFSBUILD account.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_IONq7sT0mWs/TcbAwkjUYyI/AAAAAAAABOo/0bdrOld-LyI/s1600-h/image5.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://lh5.ggpht.com/_IONq7sT0mWs/TcbAwzNHO0I/AAAAAAAABOs/gy0-t_A5g0U/image_thumb2%5B1%5D.png?imgmax=800" width="375" height="487"&gt;&lt;/a&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Next, we configure a controller for this build service.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_IONq7sT0mWs/TcbAxUKJ5FI/AAAAAAAABOw/2pmoXxQctSc/s1600-h/image13.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://lh5.ggpht.com/_IONq7sT0mWs/TcbAx4xHTPI/AAAAAAAABO0/klPTyw7zoUw/image_thumb6.png?imgmax=800" width="506" height="525"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;And one or more agents.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_IONq7sT0mWs/TcbAyOB2WaI/AAAAAAAABO4/oiE_vEAvFbk/s1600-h/image9.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/_IONq7sT0mWs/TcbAy5XWifI/AAAAAAAABO8/KCfAuok0M_E/image_thumb4.png?imgmax=800" width="509" height="503"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;A configured build system looks like this:&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_IONq7sT0mWs/TcbAzM3Z8tI/AAAAAAAABPA/-Kx_WMXQGRs/s1600-h/image4.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/_IONq7sT0mWs/TcbAzh_HeLI/AAAAAAAABPE/Iu-URz-f-tw/image_thumb2.png?imgmax=800" width="615" height="534"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;We have our build infrastructure. Now, we’ll define a build process. This is done with Visual Studio starting from Team Explorer. Right-click on Build Definitions and indicate you want to make a new Build Definition. Tailspin Toys is my Team Project. &lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_IONq7sT0mWs/TcbA0MBrCxI/AAAAAAAABPI/mPMghVv2Mu4/s1600-h/image17.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/_IONq7sT0mWs/TcbA0QmQytI/AAAAAAAABPM/ogDdldo4xhs/image_thumb8.png?imgmax=800" width="263" height="306"&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp; &lt;/p&gt; &lt;p&gt;An editor opens and we give our Build Definition a name.&lt;/p&gt; &lt;p&gt;&amp;nbsp; &lt;a href="http://lh5.ggpht.com/_IONq7sT0mWs/TcbA0phkFbI/AAAAAAAABPQ/bWOqXsgr7oU/s1600-h/image22.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/_IONq7sT0mWs/TcbA1OXzPcI/AAAAAAAABPU/AV2ZY7nmkWs/image_thumb11.png?imgmax=800" width="363" height="307"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;What triggers this build?&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_IONq7sT0mWs/TcbA1d4d6eI/AAAAAAAABPY/K_h_yxXgVvA/s1600-h/image26.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://lh3.ggpht.com/_IONq7sT0mWs/TcbA13VRXJI/AAAAAAAABPc/OHQz_nVb_IQ/image_thumb13.png?imgmax=800" width="661" height="305"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Pick a controller and a staging location for build results. The staging location must be writable by the account you configured with the build service. In this case my builds are going to a Drops folder on Frodo.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_IONq7sT0mWs/TcbA2KOecBI/AAAAAAAABPg/EDzrFVNcwik/s1600-h/image31.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://lh3.ggpht.com/_IONq7sT0mWs/TcbA2QRLRRI/AAAAAAAABPk/X4h2RoFR55I/image_thumb16.png?imgmax=800" width="666" height="254"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Pick a process template and fill in the process details. Here I am saying “build the Tailspin Toys solution with the Debug build option for Any CPU.” I am not specifying any tests to include in the process, but I could.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_IONq7sT0mWs/TcbA2uFb4hI/AAAAAAAABPo/bzEIDq1j7aY/s1600-h/image37.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://lh3.ggpht.com/_IONq7sT0mWs/TcbA3GH4CAI/AAAAAAAABPs/aHgSCgnOatQ/image_thumb20.png?imgmax=800" width="668" height="572"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;You can trigger a build manually.&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_IONq7sT0mWs/TccvfXTHc-I/AAAAAAAABPw/ITceREZ9kT8/s1600-h/image%5B4%5D.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/_IONq7sT0mWs/Tccvf34ec9I/AAAAAAAABP0/eoFVez9CfTI/image_thumb%5B2%5D.png?imgmax=800" width="370" height="487"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;There is a nice build manager UI inside Visual Studio:&lt;/p&gt; &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_IONq7sT0mWs/TccvgWDJbbI/AAAAAAAABP4/8sASHCd9AVY/s1600-h/image%5B9%5D.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/_IONq7sT0mWs/Tccvg3pCgkI/AAAAAAAABP8/S1GgU7tonpM/image_thumb%5B5%5D.png?imgmax=800" width="635" height="417"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Build results are quite nice providing a summary of issues wit the build if any and test results. You can register for alerts when there are build problems.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/_IONq7sT0mWs/TccvhO8JeoI/AAAAAAAABQA/IvBGK_0DW-Q/s1600-h/image%5B15%5D.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/_IONq7sT0mWs/Tccvhh3JIdI/AAAAAAAABQE/5DObdTgrJqU/image_thumb%5B9%5D.png?imgmax=800" width="638" height="521"&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/8850715991914801798-6631200385968505983?l=lyricsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lyricsoft.blogspot.com/feeds/6631200385968505983/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lyricsoft.blogspot.com/2011/05/looking-at-tfs-2010-build.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/6631200385968505983'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/6631200385968505983'/><link rel='alternate' type='text/html' href='http://lyricsoft.blogspot.com/2011/05/looking-at-tfs-2010-build.html' title='Looking At TFS 2010 Build'/><author><name>Mark Richter</name><uri>http://www.blogger.com/profile/00876569465727030843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_IONq7sT0mWs/TcbAwzNHO0I/AAAAAAAABOs/gy0-t_A5g0U/s72-c/image_thumb2%5B1%5D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8850715991914801798.post-4019174754354823564</id><published>2011-02-24T11:38:00.001-08:00</published><updated>2011-02-24T11:38:34.199-08:00</updated><title type='text'>Excellent Tools for Google Docs and S3</title><content type='html'>&lt;p&gt;I wanted a way to mount Google Docs and an Amazon Web Services S3 bucket as local drives on Windows. This makes life a lot easier when moving things in and out of these repositories. &lt;/p&gt; &lt;p&gt;These two are very good:&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.memeo.com/memeo-connect-for-google-docs.php"&gt;Memeo Connect&lt;/a&gt; for Google Docs ($9/user per year)&lt;/p&gt; &lt;p&gt;&lt;a href="http://tntdrive.com/"&gt;TntDrive&lt;/a&gt; for S3 ($39.95 with discounts in volume)&lt;/p&gt; &lt;p&gt;Each mounts a local disc on Windows that works like any other disc in Explorer. Memeo Connect is available for lots of platforms including Mac, iPhone and iPad; not for Linux apparently. A Memeo user license covers all clients the user uses.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8850715991914801798-4019174754354823564?l=lyricsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lyricsoft.blogspot.com/feeds/4019174754354823564/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lyricsoft.blogspot.com/2011/02/excellent-tools-for-google-docs-and-s3.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/4019174754354823564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/4019174754354823564'/><link rel='alternate' type='text/html' href='http://lyricsoft.blogspot.com/2011/02/excellent-tools-for-google-docs-and-s3.html' title='Excellent Tools for Google Docs and S3'/><author><name>Mark Richter</name><uri>http://www.blogger.com/profile/00876569465727030843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8850715991914801798.post-6987059635801372372</id><published>2010-10-23T21:06:00.000-07:00</published><updated>2010-10-23T21:06:32.991-07:00</updated><title type='text'>Finding CHKDSK Results on Vista and Windows 7</title><content type='html'>After running CHKDSK on Vista or Windows 7 you can use the Windows Powershell to look at the archived results.&lt;br /&gt;&lt;br /&gt;Step 1. Launch Windows Powershell using Run As Administrator.&lt;br /&gt;Step 2. In the powershell window run this command:&lt;br /&gt;&lt;blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;get-winevent -FilterHashTable @{logname="Application"; id="1001"}| ?{$_.providername –match "wininit"} | fl timecreated, message&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="Apple-style-span" style="font-family: inherit;"&gt;The most recent entries in the log are emitted first.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8850715991914801798-6987059635801372372?l=lyricsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lyricsoft.blogspot.com/feeds/6987059635801372372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lyricsoft.blogspot.com/2010/10/finding-chkdsk-results-on-vista-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/6987059635801372372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/6987059635801372372'/><link rel='alternate' type='text/html' href='http://lyricsoft.blogspot.com/2010/10/finding-chkdsk-results-on-vista-and.html' title='Finding CHKDSK Results on Vista and Windows 7'/><author><name>Mark Richter</name><uri>http://www.blogger.com/profile/00876569465727030843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8850715991914801798.post-2949652575508035258</id><published>2010-10-22T14:02:00.000-07:00</published><updated>2010-10-22T14:22:15.388-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><title type='text'>Productivity Power Tools for Visual Studio 2010</title><content type='html'>&lt;div&gt;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/en-us/d0d33361-18e2-46c0-8ff2-4adea1e34fef"&gt;Productivity Power Tools&lt;/a&gt;&amp;nbsp;is a decent extension for Visual Studio 2010 that combines Solution Explorer and Class View.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8850715991914801798-2949652575508035258?l=lyricsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lyricsoft.blogspot.com/feeds/2949652575508035258/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lyricsoft.blogspot.com/2010/10/productivity-power-tools-for-visual.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/2949652575508035258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/2949652575508035258'/><link rel='alternate' type='text/html' href='http://lyricsoft.blogspot.com/2010/10/productivity-power-tools-for-visual.html' title='Productivity Power Tools for Visual Studio 2010'/><author><name>Mark Richter</name><uri>http://www.blogger.com/profile/00876569465727030843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8850715991914801798.post-2428333379590395855</id><published>2010-10-14T11:14:00.000-07:00</published><updated>2010-10-22T14:22:15.402-07:00</updated><title type='text'>Resharper Aids With Localizing Code</title><content type='html'>Resharper 5 (Jetbrains.com) recognizes embedded strings and moves them to resources for you. It does a great job of telling the difference between user-visible string, which you probably want to localize from diagnostics and logs that you probably do not.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8850715991914801798-2428333379590395855?l=lyricsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lyricsoft.blogspot.com/feeds/2428333379590395855/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lyricsoft.blogspot.com/2010/10/resharper-aids-with-localizing-code.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/2428333379590395855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/2428333379590395855'/><link rel='alternate' type='text/html' href='http://lyricsoft.blogspot.com/2010/10/resharper-aids-with-localizing-code.html' title='Resharper Aids With Localizing Code'/><author><name>Mark Richter</name><uri>http://www.blogger.com/profile/00876569465727030843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8850715991914801798.post-6347958995939173547</id><published>2010-10-04T05:59:00.000-07:00</published><updated>2010-10-22T14:22:15.411-07:00</updated><title type='text'>Looking At Thunderbird and Outlook as Gmail Clients</title><content type='html'>&lt;p&gt; We compared Outlook 2010 + Google Apps Sync to Thunderbird 3.1.4 + Gmail Conversation View 1.2.4 + Google Contacts 0.6.33 + Lightening 1.0b2 + Provider for Google Calendar 0.7.1. &lt;/p&gt; &lt;p&gt;Both give you synchronized Gmail, Contacts and Cal in Outlook and Thunderbird respectively. The Thunderbird combo is better for a bunch of reasons including: &lt;/p&gt; &lt;ul&gt; &lt;li&gt;Synching is almost instantaneous over broadband. Google Apps Sync for Outlook is painfully slow. If you get a lot of email it can easily take a couple of minutes waiting for the Google service to let you read new email - unless you leave Outlook running 24/7. That's a Google problem. &lt;/li&gt; &lt;li&gt;MUCH better threaded view in the "reading pane". That's an Outlook problem.&lt;/li&gt; &lt;li&gt;Thunderbird gives you more control over IMAP folder subscriptions if you care.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Of course none of this applies to you if you don't mind using a web page to use Gmail. I find using a desktop client like Thunderbird gives me a nice side-by-side treatment of the inbox contents and the conversation thread in a reading pane. The web UI makes you scroll up and down.&lt;/p&gt; &lt;p&gt;Google combines mail, cal and contacts synch into one plug-in, Google Apps Synch for Outlook. Using Thunderbird you have to install separate add-ons for these functions. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8850715991914801798-6347958995939173547?l=lyricsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lyricsoft.blogspot.com/feeds/6347958995939173547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lyricsoft.blogspot.com/2010/10/looking-at-thunderbird-and-outlook-as.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/6347958995939173547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/6347958995939173547'/><link rel='alternate' type='text/html' href='http://lyricsoft.blogspot.com/2010/10/looking-at-thunderbird-and-outlook-as.html' title='Looking At Thunderbird and Outlook as Gmail Clients'/><author><name>Mark Richter</name><uri>http://www.blogger.com/profile/00876569465727030843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8850715991914801798.post-7103462207264809197</id><published>2010-09-22T09:23:00.000-07:00</published><updated>2010-10-22T14:22:15.420-07:00</updated><title type='text'>Subversion hosting at Assembla</title><content type='html'>&lt;p&gt;&lt;a href="https://www.assembla.com/"&gt;Assembla&lt;/a&gt; is a nice hosting service. They offer free source-control-only accounts and upgrade for various development tools. Creating an account and an SVN repo is fast and easy. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8850715991914801798-7103462207264809197?l=lyricsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lyricsoft.blogspot.com/feeds/7103462207264809197/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lyricsoft.blogspot.com/2010/09/subversion-hosting-at-assembla.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/7103462207264809197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/7103462207264809197'/><link rel='alternate' type='text/html' href='http://lyricsoft.blogspot.com/2010/09/subversion-hosting-at-assembla.html' title='Subversion hosting at Assembla'/><author><name>Mark Richter</name><uri>http://www.blogger.com/profile/00876569465727030843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8850715991914801798.post-3052382874366182392</id><published>2010-09-07T09:01:00.000-07:00</published><updated>2010-10-22T14:22:15.428-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><title type='text'>Search and Replace in Windows Registry</title><content type='html'>&lt;p&gt;&lt;a href="http://www.dcsoft.com/products/regeditx/"&gt;This is an excellent add-on&lt;/a&gt; to the familiar regedit.exe.&lt;/p&gt; &lt;p&gt;&lt;img alt="Crawler screenshot" src="http://www.dcsoft.com/images/rx_crawler_scrn.png"&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8850715991914801798-3052382874366182392?l=lyricsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lyricsoft.blogspot.com/feeds/3052382874366182392/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lyricsoft.blogspot.com/2010/09/search-and-replace-in-windows-registry.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/3052382874366182392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/3052382874366182392'/><link rel='alternate' type='text/html' href='http://lyricsoft.blogspot.com/2010/09/search-and-replace-in-windows-registry.html' title='Search and Replace in Windows Registry'/><author><name>Mark Richter</name><uri>http://www.blogger.com/profile/00876569465727030843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8850715991914801798.post-3818473989826266021</id><published>2010-08-26T07:32:00.000-07:00</published><updated>2010-10-22T14:22:15.438-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='Subversion'/><category scheme='http://www.blogger.com/atom/ns#' term='Go'/><title type='text'>Using SVN and Go With Visual Studio For Continuous Integration</title><content type='html'>&lt;p&gt;&lt;span style="font-family: calibri; font-size: small"&gt;&lt;font size="3"&gt;Combining &lt;/font&gt;&lt;/span&gt;&lt;a href="http://tortoisesvn.net/downloads"&gt;&lt;span style="font-family: calibri; font-size: small"&gt;&lt;font size="3"&gt;Subversion&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: calibri; font-size: small"&gt;&lt;font size="3"&gt; and &lt;/font&gt;&lt;/span&gt;&lt;a href="http://www.thoughtworks-studios.com/go-agile-release-management"&gt;&lt;span style="font-family: calibri; font-size: small"&gt;&lt;font size="3"&gt;Go&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: calibri; font-size: small"&gt;&lt;font size="3"&gt; provides a very lightweight and low-cost alternative to Team Foundation Server for continuous integration with Microsoft Visual Studio. Setting this up is easy and takes only a few minutes.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: calibri; font-size: small"&gt;&lt;/span&gt;&lt;span style="font-family: calibri; font-size: small"&gt;&lt;font size="3"&gt;Requirements:&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://tortoisesvn.net/downloads"&gt;&lt;span style="font-family: calibri; font-size: small"&gt;&lt;font size="3"&gt;TortoiseSVN&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: calibri; font-size: small"&gt;&lt;font size="3"&gt; integrates elegantly with Windows Explorer. It’s free. We combine this with &lt;/font&gt;&lt;/span&gt;&lt;a href="http://www.visualsvn.com/"&gt;&lt;span style="font-family: calibri; font-size: small"&gt;&lt;font size="3"&gt;VisualSVN&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: calibri; font-size: small"&gt;&lt;font size="3"&gt;, a very nice extension for Visual Studio, but this is not required.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.thoughtworks-studios.com/go-agile-release-management"&gt;&lt;span style="font-family: calibri; font-size: small"&gt;&lt;font size="3"&gt;Go&lt;/font&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family: calibri; font-size: small"&gt;&lt;font size="3"&gt; from ThoughtWorks Studios. The Community Edition is free.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: calibri; font-size: small"&gt;&lt;font size="3"&gt;Setting all of this up is straight forward. Just follow the documentation for each. You’re safe with default options across the board.&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: calibri; font-size: small"&gt;&lt;font size="3"&gt;You have various options for building a Visual Studio solution from Go. The easiest approach is to install Visual Studio on the build machine and configure the Go Pipeline to call devenv.exe using the “Exec” build option in Go. Wrapping the command line execution of devenv in a bat file is advised. For example:&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: calibri; font-size: small"&gt;&lt;font size="3"&gt;Let’s say you have a solution called MySolution.sln. Create a bat file and call it MyBuild.bat. Put this in the bat file:&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: 'Courier New'; font-size: xx-small"&gt;&lt;font size="2" face="Calibri"&gt;"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe" -clean&lt;br&gt;"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe" C:\Users\me\src\project\MySolution.sln -Build "Release|Any CPU"&lt;/font&gt;&lt;/span&gt;&lt;br&gt;&lt;br&gt;&lt;span style="font-family: calibri; font-size: small"&gt;&lt;font size="3"&gt;A basic Go Pipeline to build this looks like this:&lt;/font&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: 'Courier New'; font-size: xx-small"&gt;&lt;font size="2" face="Calibri"&gt;&amp;lt;pipeline name="BuildBlueDiamond"&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;materials&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;svn url=http://frodo:81/svn/project&lt;/font&gt;&lt;/span&gt;&lt;span style="font-family: 'Courier New'; font-size: xx-small"&gt;&lt;font size="2" face="Calibri"&gt; username="me" password="me" /&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;/materials&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;stage name="defaultStage"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;jobs&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;job name="defaultJob"&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;tasks&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;exec command="C:\Users\me\src\project\MyBuild.bat" /&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/tasks&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/job&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/jobs&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;/stage&amp;gt;&lt;br&gt;&amp;lt;/pipeline&amp;gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8850715991914801798-3818473989826266021?l=lyricsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lyricsoft.blogspot.com/feeds/3818473989826266021/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lyricsoft.blogspot.com/2010/08/using-svn-and-go-with-visual-studio-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/3818473989826266021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/3818473989826266021'/><link rel='alternate' type='text/html' href='http://lyricsoft.blogspot.com/2010/08/using-svn-and-go-with-visual-studio-for.html' title='Using SVN and Go With Visual Studio For Continuous Integration'/><author><name>Mark Richter</name><uri>http://www.blogger.com/profile/00876569465727030843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8850715991914801798.post-3669401173038981280</id><published>2010-07-01T10:08:00.000-07:00</published><updated>2010-10-22T14:22:15.448-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Tuning The Performance Of SharePoint 2010</title><content type='html'>&lt;p&gt;&lt;a href="http://sharepointmagazine.net/technical/load-testing-reveals-cause-of-sharepoint-server-performance-problem?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed:+SharepointMagazine+(SharePoint+Magazine)"&gt;This article peaked our interest.&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Highlights:&lt;/p&gt; &lt;p&gt;1. SharePoint doesn’t like big iron.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;After looking at our test results as well as collecting their own data, Microsoft SharePoint® Support indicated that SharePoint® was apparently unable to make use of such large hardware (8 processors with 16G of RAM). In an effort to validate that the problem was indeed caused by the large hardware, &lt;strong&gt;they recommended that we reduce the number of processors to 4, and then later suggested reducing it to 2.&lt;/strong&gt; In each case, this resulted in a surprising performance improvement but the stalling behavior remained.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;2. Tempdb database contention in SQL Server.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;After additional testing and data gathering, Microsoft Support engineers found that contention on tempdb allocations within SQL Server was causing delays processing queries from SharePoint®. This problem is described in the Microsoft Knowledge Base (#&lt;a href="http://support.microsoft.com/kb/328551"&gt;328551&lt;/a&gt;).&lt;/em&gt; &lt;p&gt;&lt;em&gt;&lt;strong&gt;The fix required creating additional tempdb databases within SQL Server (one for each processor) and enabling a startup parameter (-T1118) that instructed SQL Server to use a round-robin tempdb allocation strategy.&lt;/strong&gt; This change reduced resource allocation contention in the tempdb database, improving performance on complex queries.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;3. Single-threaded cache access in a multi-processor system. &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;…problems with the size of the TokenAndPermUserStore cache in SQL Server. When the server has a large amount of physical memory (in this case 32G) and the rate of random dynamic queries is high, the number of entries in this cache grows rapidly. As the cache grows, the time required to traverse and cleanup the cache can be substantial. Because access to this cache is single-threaded, queries can pile up behind each other waiting for the cleanup to complete. This queuing slows performance and prevents a multi-processor system from scaling as expected. &lt;strong&gt;The remedy was to start SQL Server with a “-T4618” parameter, which limits the TokenAndPermUserStore cache size.&lt;/strong&gt; (This was not one of the solutions listed in the &lt;a href="http://support.microsoft.com/kb/927396"&gt;Microsoft Knowledge Base&lt;/a&gt; for this issue – it was provided by a Microsoft Support Engineer).&lt;/em&gt;&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/8850715991914801798-3669401173038981280?l=lyricsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lyricsoft.blogspot.com/feeds/3669401173038981280/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lyricsoft.blogspot.com/2010/07/tuning-performance-of-sharepoint-2010.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/3669401173038981280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/3669401173038981280'/><link rel='alternate' type='text/html' href='http://lyricsoft.blogspot.com/2010/07/tuning-performance-of-sharepoint-2010.html' title='Tuning The Performance Of SharePoint 2010'/><author><name>Mark Richter</name><uri>http://www.blogger.com/profile/00876569465727030843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8850715991914801798.post-3888101091243938164</id><published>2010-06-22T16:34:00.000-07:00</published><updated>2010-10-22T14:22:15.456-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Methods'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>Distraction Factor and Agile</title><content type='html'>&lt;span style="font-family: 'Trebuchet MS', geneva, arial, helvetica, sunsans-regular, sans-serif; font-size: 12px" class="Apple-style-span"&gt;&lt;/span&gt;&lt;br&gt; &lt;div style="padding-bottom: 0px; border-right-width: 0px; margin: 0px 0px 1em; padding-left: 0px; outline-width: 0px; padding-right: 0px; font-family: inherit; border-top-width: 0px; border-bottom-width: 0px; font-size: 12px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px"&gt;In my last assignment I led a couple of teams using &lt;em style="padding-bottom: 0px; border-right-width: 0px; font-style: italic; margin: 0px; padding-left: 0px; outline-width: 0px; padding-right: 0px; font-family: inherit; border-top-width: 0px; border-bottom-width: 0px; font-size: 12px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px"&gt;&lt;a style="padding-bottom: 0px; border-right-width: 0px; margin: 0px; padding-left: 0px; outline-width: 0px; padding-right: 0px; font-family: inherit; border-top-width: 0px; border-bottom-width: 0px; color: black; font-size: 12px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px" href="http://scrumforteamsystem.com/" rel="nofollow"&gt;SrumForTeamsystem&lt;/a&gt;&lt;/em&gt;. We followed the process guidance religiously. We had the teams located in open bays with full line of sight to each member. We thought we saluted and followed the spirit of agile pretty closely. We were productive - much more so than before we switched to an agile format - and much more predictable in release punctuality. But, then we stopped improving after about a year and plateaued. I wondered why.&lt;/div&gt; &lt;div style="padding-bottom: 0px; border-right-width: 0px; margin: 0px 0px 1em; padding-left: 0px; outline-width: 0px; padding-right: 0px; font-family: inherit; border-top-width: 0px; border-bottom-width: 0px; font-size: 12px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px"&gt;Last January, I got everyone (20 people or so) into a room for lunch and a rap session. I planned on an hour and we went two and a half. I wanted to know "How is it working? Are you happy with how we do things? Are you happy with our pace? What can we do better?" Far and away the biggest complaint was the interruption factor. Time and again people complained that the open office format was too distracting &lt;em style="padding-bottom: 0px; border-right-width: 0px; font-style: italic; margin: 0px; padding-left: 0px; outline-width: 0px; padding-right: 0px; font-family: inherit; border-top-width: 0px; border-bottom-width: 0px; font-size: 12px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px"&gt;during coding and construction when distractions are particularly harmful to productivity and quality.&lt;/em&gt;&amp;nbsp;&lt;/div&gt; &lt;div style="padding-bottom: 0px; border-right-width: 0px; margin: 0px 0px 1em; padding-left: 0px; outline-width: 0px; padding-right: 0px; font-family: inherit; border-top-width: 0px; border-bottom-width: 0px; font-size: 12px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px"&gt;The emphasis there is important. I believe there are times when communal living is hurtful to forward progress in software development and actually harmful. Yes indeed, private offices are a good thing when it's time to get "in the zone" and code. Elaboration is done. Design is done. Implementation approaches have been hashed and rehashed. Now it's time to lay bricks. Coding is generally not a community project. &lt;/div&gt; &lt;div style="padding-bottom: 0px; border-right-width: 0px; margin: 0px 0px 1em; padding-left: 0px; outline-width: 0px; padding-right: 0px; font-family: inherit; border-top-width: 0px; border-bottom-width: 0px; font-size: 12px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px"&gt;What's that sound? I think I can hear the "agile community" writ large howling from the rooftops. The XP people are seething. Nevertheless, I'm convinced controlling the distraction factor is something we in the agile community need to recognize as a real problem. Sometimes interruptions are best left until later. &lt;/div&gt; &lt;div style="padding-bottom: 0px; border-right-width: 0px; margin: 0px 0px 1em; padding-left: 0px; outline-width: 0px; padding-right: 0px; font-family: inherit; border-top-width: 0px; border-bottom-width: 0px; font-size: 12px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px"&gt;How do we deal with it? My team had a couple of ideas. One was that people simply hang a "Do Not Disturb" sign for all to see. By the time you say "not now please" it's too late. You've been interrupted. Another was to separate a "quiet area" in the office just for uninterrupted work. Working from home is also a good isolation tool for the right people at the right time.&lt;/div&gt; &lt;div style="padding-bottom: 0px; border-right-width: 0px; margin: 0px 0px 1em; padding-left: 0px; outline-width: 0px; padding-right: 0px; font-family: inherit; border-top-width: 0px; border-bottom-width: 0px; font-size: 12px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px"&gt;A high level conclusion I drew from this feedback was to remember that the team needs to feel comfortable. If half of them are fighting the environment then it's something to fix. One of my roles as a leader is to tear down the obstacles inhibiting my team. I'm completely comfortable doing things outside the lines of "the book" if &lt;em style="padding-bottom: 0px; border-right-width: 0px; font-style: italic; margin: 0px; padding-left: 0px; outline-width: 0px; padding-right: 0px; font-family: inherit; border-top-width: 0px; border-bottom-width: 0px; font-size: 12px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px"&gt;the team wants it that way&lt;/em&gt; and &lt;em style="padding-bottom: 0px; border-right-width: 0px; font-style: italic; margin: 0px; padding-left: 0px; outline-width: 0px; padding-right: 0px; font-family: inherit; border-top-width: 0px; border-bottom-width: 0px; font-size: 12px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px"&gt;produces more that way&lt;/em&gt;.&lt;/div&gt; &lt;div style="padding-bottom: 0px; border-right-width: 0px; margin: 0px 0px 1em; padding-left: 0px; outline-width: 0px; padding-right: 0px; font-family: inherit; border-top-width: 0px; border-bottom-width: 0px; font-size: 12px; vertical-align: baseline; border-left-width: 0px; padding-top: 0px"&gt;Cross-posted &lt;a href="http://community.thoughtworks.com/people/841707f406/comments"&gt;here&lt;/a&gt;.&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8850715991914801798-3888101091243938164?l=lyricsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lyricsoft.blogspot.com/feeds/3888101091243938164/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lyricsoft.blogspot.com/2010/06/distraction-factor-and-agile.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/3888101091243938164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/3888101091243938164'/><link rel='alternate' type='text/html' href='http://lyricsoft.blogspot.com/2010/06/distraction-factor-and-agile.html' title='Distraction Factor and Agile'/><author><name>Mark Richter</name><uri>http://www.blogger.com/profile/00876569465727030843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8850715991914801798.post-3494809490919310468</id><published>2010-06-20T20:03:00.000-07:00</published><updated>2010-10-22T14:22:15.467-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>Mingle With Postgres on Ubuntu 10.0.4</title><content type='html'>&lt;p&gt;&lt;font size="2"&gt;We’re evaluating &lt;/font&gt;&lt;a href="http://www.thoughtworks-studios.com/mingle-agile-project-management"&gt;&lt;font size="2"&gt;Mingle&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;, an agile project management solution from &lt;/font&gt;&lt;a href="http://www.thoughtworks.com/"&gt;&lt;font size="2"&gt;ThoughtWorks&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;. ThoughtWorks offers versions of Mingle for both Windows and Linux. It’s integrated with either Oracle or &lt;/font&gt;&lt;a href="http://www.postgresql.org/"&gt;&lt;font size="2"&gt;Postgres&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt; databases.&amp;nbsp; We recommend using Linux and Postgres.&amp;nbsp; ThoughtWorks also provides canned installations of Mingle and Postgres on &lt;/font&gt;&lt;a href="http://www.vmware.com/products/player/"&gt;&lt;font size="2"&gt;VMWare&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt; virtual machines for download. Our style is to get the full experience, so starting from a pre-installed VM isn’t for us.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt;After struggling to get Mingle working with Postgres and Oracle on Widnows 7 we were told by Mingle’s support team that only Windows XP and Windows Server 2003 are supported by Mingle at this time. &lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt;Since we’ve been diving into Linux more aggressively the past several months we decided to bring up an &lt;/font&gt;&lt;a href="http://www.ubuntu.com/desktop/get-ubuntu/download"&gt;&lt;font size="2"&gt;Ubuntu Lucid Lynx (10.0.4)&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt; virtual machine using VirtualBox and start there.&amp;nbsp; Installation of Mingle is pretty straight forward. Begin with Postgres, create a mingle user with DBA privileges, create an empty database for Mingle, unpack the Mingle tar ball and follow the installation instructions.&lt;/font&gt;&lt;/p&gt; &lt;h1&gt;&lt;font size="2"&gt;Update 29 June 2010&lt;/font&gt;&lt;/h1&gt; &lt;p&gt;We have Mingle 3.1.1 running on Windows 7 x64 Ultimate with Postgres SQL 8.4. Following the defaults works fine. Install Postgres first, create an account called &lt;em&gt;mingle&lt;/em&gt; with the &lt;em&gt;create databases&lt;/em&gt; role. Create a database called &lt;em&gt;mingle&lt;/em&gt;. You can call the user and the database anything you like. Finally install Mingle.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8850715991914801798-3494809490919310468?l=lyricsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lyricsoft.blogspot.com/feeds/3494809490919310468/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lyricsoft.blogspot.com/2010/06/mingle-with-postgres-on-ubuntu-1004.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/3494809490919310468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/3494809490919310468'/><link rel='alternate' type='text/html' href='http://lyricsoft.blogspot.com/2010/06/mingle-with-postgres-on-ubuntu-1004.html' title='Mingle With Postgres on Ubuntu 10.0.4'/><author><name>Mark Richter</name><uri>http://www.blogger.com/profile/00876569465727030843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8850715991914801798.post-554417825999117963</id><published>2010-06-02T14:32:00.000-07:00</published><updated>2010-10-22T14:22:15.476-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><title type='text'>Installing SharePoint On Windows 7</title><content type='html'>&lt;p&gt;&lt;font size="2"&gt;Microsoft supports installing SharePoint Foundation 2010 on Windows 7. This is quite useful if you want to do custom development for SharePoint in Visual Studio 2010, which requires the SharePoint server to be installed on the same machine as the development environment. Prior to the 2010 release local SharePoint development required running Windows Server as your desktop OS or running a VM.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt;We installed SharePoint Foundation 2010 on a 64-bit Windows 7 desktop box today. The process went smoothly. If you develop for SharePoint we recommend Windows 7 as a solid platform from which to build.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt;Microsoft’s official article on this is &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ee554869(office.14).aspx"&gt;&lt;font size="2"&gt;here&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;. There’s a comment on the thread that elaborates a bit on the experience &lt;/font&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/community/history/ee554869(v=office.14).aspx?id=36"&gt;&lt;font size="2"&gt;here&lt;/font&gt;&lt;/a&gt;&lt;font size="2"&gt;. Click on the date-time stamp to expand the comment text.&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2"&gt;We’re happy to answer questions in comments in this space.&lt;/font&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8850715991914801798-554417825999117963?l=lyricsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lyricsoft.blogspot.com/feeds/554417825999117963/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lyricsoft.blogspot.com/2010/06/installing-sharepoint-on-windows-7.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/554417825999117963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/554417825999117963'/><link rel='alternate' type='text/html' href='http://lyricsoft.blogspot.com/2010/06/installing-sharepoint-on-windows-7.html' title='Installing SharePoint On Windows 7'/><author><name>Mark Richter</name><uri>http://www.blogger.com/profile/00876569465727030843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8850715991914801798.post-8860402460405181018</id><published>2010-06-01T06:12:00.000-07:00</published><updated>2010-10-22T14:22:15.486-07:00</updated><title type='text'>Windows Startup Analysis</title><content type='html'>&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.safer-networking.org/en/runalyzer/index.html"&gt;RunAnalyzer&lt;/a&gt;&lt;/strong&gt; by Safer Networking is a great tool for digging in to tune Windows performance. It gives you a deep look at everything in the system that initiates a service or task tray program on Windows launch. This tool is not for the meek, because you can easily manipulate the Windows registry, although registry access is structured just for things related to starting Windows. Here are a couple of screen shots.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_nwuvEZpxrfU/TAUHHskellI/AAAAAAAAAGA/yENyP2f81t8/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/_nwuvEZpxrfU/TAUHI4sukPI/AAAAAAAAAGE/7MeEjz2DADo/image_thumb%5B1%5D.png?imgmax=800" width="461" height="472" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_nwuvEZpxrfU/TAUHK4D1nBI/AAAAAAAAAGI/sTDto755emc/s1600-h/image%5B8%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/_nwuvEZpxrfU/TAUHMIvaeSI/AAAAAAAAAGM/1of7ctnVOkg/image_thumb%5B4%5D.png?imgmax=800" width="466" height="405" /&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/8850715991914801798-8860402460405181018?l=lyricsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lyricsoft.blogspot.com/feeds/8860402460405181018/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lyricsoft.blogspot.com/2010/06/windows-startup-analysis.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/8860402460405181018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/8860402460405181018'/><link rel='alternate' type='text/html' href='http://lyricsoft.blogspot.com/2010/06/windows-startup-analysis.html' title='Windows Startup Analysis'/><author><name>Mark Richter</name><uri>http://www.blogger.com/profile/00876569465727030843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/_nwuvEZpxrfU/TAUHI4sukPI/AAAAAAAAAGE/7MeEjz2DADo/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-8850715991914801798.post-5242763472724717542</id><published>2010-05-26T14:23:00.000-07:00</published><updated>2010-10-22T14:22:15.495-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><title type='text'>Installing Plugins In Eclipse on Ubuntu 10.04</title><content type='html'>&lt;div&gt;You get this when installing a plugin to Eclipse on Ubuntu 10.04:&lt;/div&gt;  &lt;div&gt;   &lt;br /&gt;&lt;/div&gt;  &lt;div&gt;&lt;i&gt;An error occurred while installing the items &lt;/i&gt;&lt;i&gt; session context was (profile=PlatformProfile, phase=org.eclipse.equinox.internal.provisional.p2.engine.phases.Install, operand=null --&amp;gt; [R]org.eclipse.cvs 1.0.400.v201002111343,&amp;#160; action=org.eclipse.equinox.internal.p2.touchpoint.eclipse.actions.InstallBundleAction).&lt;/i&gt;&lt;/div&gt;  &lt;div&gt;&lt;i&gt;&amp;#160; The artifact file for osgi.bundle,org.eclipse.cvs,1.0.400.v201002111343 was not found.&lt;/i&gt;&lt;/div&gt;  &lt;div&gt;   &lt;br /&gt;&lt;/div&gt;  &lt;div&gt;We got this when installing the Aptana Studio plugin. The fix is to install PDE. On the command line run this:&lt;/div&gt;  &lt;div&gt;   &lt;br /&gt;&lt;/div&gt;  &lt;div&gt;&lt;font face="Courier New"&gt;&lt;strong&gt;sudo apt-get install eclipse-pde&lt;/strong&gt;&lt;/font&gt;&lt;/div&gt;  &lt;div&gt;&lt;span style="font-family: &amp;#39;Lucida Grande&amp;#39;, sans-serif; color: #555555; font-size: x-small" class="Apple-style-span"&gt;&lt;span style="line-height: 15px; font-size: 10px" class="Apple-style-span"&gt;       &lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8850715991914801798-5242763472724717542?l=lyricsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lyricsoft.blogspot.com/feeds/5242763472724717542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lyricsoft.blogspot.com/2010/05/installing-plugins-in-eclipse-on-ubuntu.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/5242763472724717542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/5242763472724717542'/><link rel='alternate' type='text/html' href='http://lyricsoft.blogspot.com/2010/05/installing-plugins-in-eclipse-on-ubuntu.html' title='Installing Plugins In Eclipse on Ubuntu 10.04'/><author><name>Mark Richter</name><uri>http://www.blogger.com/profile/00876569465727030843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8850715991914801798.post-7849553084326112231</id><published>2010-05-07T05:53:00.000-07:00</published><updated>2010-10-22T14:22:15.504-07:00</updated><title type='text'>Ubuntu Linux Release 10.04 Shines</title><content type='html'>We're running the final production bits for &lt;a href="http://releases.ubuntu.com/lucid/"&gt;Ubuntu 10.04&lt;/a&gt; Linux in a &lt;a href="http://www.virtualbox.org/"&gt;VirtualBox&lt;/a&gt; virtual machine with 1GB of memory on a Windows 7 host with 4GB of RAM on the hardware. Deliciously zippy and stable. &lt;br /&gt;&lt;br /&gt;We advise setting stepping the default font size for OS down to 8 from its default of 10 to get much more efficient use of screen real estate. It's easy to do this using System -&amp;gt; Appearance -&amp;gt; Fonts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8850715991914801798-7849553084326112231?l=lyricsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lyricsoft.blogspot.com/feeds/7849553084326112231/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lyricsoft.blogspot.com/2010/05/ubuntu-linux-release-1004-shines.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/7849553084326112231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/7849553084326112231'/><link rel='alternate' type='text/html' href='http://lyricsoft.blogspot.com/2010/05/ubuntu-linux-release-1004-shines.html' title='Ubuntu Linux Release 10.04 Shines'/><author><name>Mark Richter</name><uri>http://www.blogger.com/profile/00876569465727030843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8850715991914801798.post-2134254053564348060</id><published>2010-05-04T14:34:00.000-07:00</published><updated>2010-10-22T14:22:15.513-07:00</updated><title type='text'>TFS 2010 With MOSS 2007</title><content type='html'>Is supposed to work. I have not tried it though. Blog post on how to do it is &lt;a href="http://blogs.msdn.com/team_foundation/archive/2010/03/06/configuring-sharepoint-server-2010-beta-for-dashboard-compatibility-with-tfs-2010-beta2-rc.aspx"&gt;here&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8850715991914801798-2134254053564348060?l=lyricsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lyricsoft.blogspot.com/feeds/2134254053564348060/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lyricsoft.blogspot.com/2010/05/tfs-2010-with-moss-2007.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/2134254053564348060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/2134254053564348060'/><link rel='alternate' type='text/html' href='http://lyricsoft.blogspot.com/2010/05/tfs-2010-with-moss-2007.html' title='TFS 2010 With MOSS 2007'/><author><name>Mark Richter</name><uri>http://www.blogger.com/profile/00876569465727030843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8850715991914801798.post-6429938595621429101</id><published>2010-04-22T13:26:00.000-07:00</published><updated>2010-10-22T14:22:15.521-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Process'/><title type='text'>Just Enough or Pack Rat?</title><content type='html'>Software craftsmanship is like life. Some people plan their lives to the hilt, load up with contingency plans, ready for anything. They save things for years – packed into closets, files and attics – just in case “I need them”. Let’s call these folks “pack rats”. Others take each day as it arrives, flexible in spirit and time to new opportunities without worrying about changing tons of plans and rearranging the calendar.&lt;br /&gt;&lt;br /&gt;A full SDLC development process attracts pack rats. They plan and plan, establish contingency plans and stack the process so they don’t make a mistake. Along the way they pay huge “carrying costs” of keeping an inventories of plans, processes, documents, meetings and calendars. Their users are frustrated by not much delivered in lots of time.&lt;br /&gt;Agile methods are the “just enough” approach. We do as much as we need to deliver great, usable software that delights our users and &lt;em&gt;no more&lt;/em&gt;. We’re constantly open to change – able to turn on a dime, because we don’t have a fifty-page plan to revise and four levels of approval to obtain. Our users are thrilled because we spend our time focused on their needs rather than on “process”. We deliver maximum bang for the buck where bang is defined as usable software solving real problems. We have way more fun!&lt;br /&gt;&lt;br /&gt;Are you a “just enough” craftsman or a “pack rat”?&lt;br /&gt;&lt;br /&gt;&lt;div class="wlWriterEditableSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:c8778787-720e-4391-b4d4-1850ed583704" style="display: inline; float: none; margin: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Agile" rel="tag"&gt;Agile&lt;/a&gt;,&lt;a href="http://technorati.com/tags/SDLC" rel="tag"&gt;SDLC&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Process" rel="tag"&gt;Process&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8850715991914801798-6429938595621429101?l=lyricsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lyricsoft.blogspot.com/feeds/6429938595621429101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lyricsoft.blogspot.com/2010/04/just-enough-or-pack-rat.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/6429938595621429101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/6429938595621429101'/><link rel='alternate' type='text/html' href='http://lyricsoft.blogspot.com/2010/04/just-enough-or-pack-rat.html' title='Just Enough or Pack Rat?'/><author><name>Mark Richter</name><uri>http://www.blogger.com/profile/00876569465727030843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8850715991914801798.post-2442252868317932665</id><published>2010-04-22T12:15:00.000-07:00</published><updated>2010-10-22T14:22:15.530-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><title type='text'>TFS In The Cloud</title><content type='html'>Our work bringing up TFS 2010 on the Amazon EC2 cloud is bearing fruit. It’s been a bear dealing with EC2’s stubborn dynamic IP addresses; you get fresh ones each time you boot an instance. This, well, sends DNS on Windows Domains into a tizzy. We’ve solved it for now with a workaround. We’re thrilled about some secret sauce we’ve designed for running very large domain networks on EC2.&amp;nbsp; We’ve had a system up and under test for about six weeks. It is hyper-fast! &lt;br /&gt;&lt;br /&gt;Interested in giving it a try? Ping us.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8850715991914801798-2442252868317932665?l=lyricsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lyricsoft.blogspot.com/feeds/2442252868317932665/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lyricsoft.blogspot.com/2010/04/tfs-in-cloud.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/2442252868317932665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/2442252868317932665'/><link rel='alternate' type='text/html' href='http://lyricsoft.blogspot.com/2010/04/tfs-in-cloud.html' title='TFS In The Cloud'/><author><name>Mark Richter</name><uri>http://www.blogger.com/profile/00876569465727030843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8850715991914801798.post-1288851180443326561</id><published>2010-04-22T11:07:00.000-07:00</published><updated>2010-10-22T14:22:15.539-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Cloud'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>SQL Server 2008 @ Amazon EC2 “Event 17508 File not found”</title><content type='html'>&lt;p&gt;(Cross-posted here from an 18 March 2010 post on my personal blog at markr.com.)&lt;/p&gt;  &lt;p&gt;Ran into an interesting little glitch this afternoon bringing up SQL Server 2008 at Amazon EC2 using one of their packaged instances. I got this error:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;span style="font-size: x-small"&gt;Log Name: Application        &lt;br /&gt;Source: MSSQLSERVER         &lt;br /&gt;Date: 3/17/2010 10:00:14 PM         &lt;br /&gt;Event ID: 17058         &lt;br /&gt;Task Category: Server         &lt;br /&gt;Level: Error         &lt;br /&gt;Keywords: Classic         &lt;br /&gt;User: N/A         &lt;br /&gt;Computer: ip- xxxxxxxx&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;Description:         &lt;br /&gt;initerrlog: Could not open error log file ''. Operating system error = 3(The system cannot find the path specified.).         &lt;br /&gt;Event Xml:         &lt;br /&gt;&amp;lt;Event xmlns=&amp;quot;http://schemas.microsoft.com/win/2004/08/events/event&amp;quot;&amp;gt;         &lt;br /&gt;&amp;lt;System&amp;gt;         &lt;br /&gt;&amp;lt;Provider Name=&amp;quot;MSSQLSERVER&amp;quot; /&amp;gt;         &lt;br /&gt;&amp;lt;EventID Qualifiers=&amp;quot;49152&amp;quot;&amp;gt;17058&amp;lt;/EventID&amp;gt;         &lt;br /&gt;&amp;lt;Level&amp;gt;2&amp;lt;/Level&amp;gt;         &lt;br /&gt;&amp;lt;Task&amp;gt;2&amp;lt;/Task&amp;gt;         &lt;br /&gt;&amp;lt;Keywords&amp;gt;0x80000000000000&amp;lt;/Keywords&amp;gt;         &lt;br /&gt;&amp;lt;TimeCreated SystemTime=&amp;quot;2010-03-17T22:00:14.000Z&amp;quot; /&amp;gt;         &lt;br /&gt;&amp;lt;EventRecordID&amp;gt;1583&amp;lt;/EventRecordID&amp;gt;         &lt;br /&gt;&amp;lt;Channel&amp;gt;Application&amp;lt;/Channel&amp;gt;         &lt;br /&gt;&amp;lt;Computer&amp;gt;ip-xxxxx&amp;lt;/Computer&amp;gt;         &lt;br /&gt;&amp;lt;Security /&amp;gt;         &lt;br /&gt;&amp;lt;/System&amp;gt;         &lt;br /&gt;&amp;lt;EventData&amp;gt;         &lt;br /&gt;&amp;lt;Data&amp;gt;         &lt;br /&gt;&amp;lt;/Data&amp;gt;         &lt;br /&gt;&amp;lt;Data&amp;gt;3(The system cannot find the path specified.)&amp;lt;/Data&amp;gt;         &lt;br /&gt;&amp;lt;Binary&amp;gt;A2420000100000000C000000490050002D0030004100460030003300390038004300000000000000&amp;lt;/Binary&amp;gt;         &lt;br /&gt;&amp;lt;/EventData&amp;gt;         &lt;br /&gt;&amp;lt;/Event&amp;gt;&lt;/span&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;span style="color: #000000"&gt;After a little digging – actually a lot of digging – I discovered &lt;a href="http://support.microsoft.com/kb/955496" target="_blank"&gt;this article&lt;/a&gt; that says you can get this if the SQL Server machine is also a Windows domain controller. I applied both Workaround 1 and 2 to ALL of the SQLServer* security groups on the domain.&lt;/span&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8850715991914801798-1288851180443326561?l=lyricsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lyricsoft.blogspot.com/feeds/1288851180443326561/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lyricsoft.blogspot.com/2010/04/sql-server-2008-amazon-ec2-event-17508.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/1288851180443326561'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/1288851180443326561'/><link rel='alternate' type='text/html' href='http://lyricsoft.blogspot.com/2010/04/sql-server-2008-amazon-ec2-event-17508.html' title='SQL Server 2008 @ Amazon EC2 “Event 17508 File not found”'/><author><name>Mark Richter</name><uri>http://www.blogger.com/profile/00876569465727030843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8850715991914801798.post-6824207220084188617</id><published>2010-04-22T11:05:00.000-07:00</published><updated>2010-10-22T14:22:15.551-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><title type='text'>TFS Check-in Policy for Exactly One Work Item</title><content type='html'>&lt;p&gt;Enforcing work item associations on check-in is vital for assuring traceability. Here’s a handy TFS policy for forcing check-ins to be associated with one and only one work-item.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.accentient.com/2009/12/15/CustomCheckinPolicyForExactlyOneWorkItem.aspx"&gt;http://blog.accentient.com/2009/12/15/CustomCheckinPolicyForExactlyOneWorkItem.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/8850715991914801798-6824207220084188617?l=lyricsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lyricsoft.blogspot.com/feeds/6824207220084188617/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lyricsoft.blogspot.com/2010/04/tfs-check-in-policy-for-exactly-one.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/6824207220084188617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/6824207220084188617'/><link rel='alternate' type='text/html' href='http://lyricsoft.blogspot.com/2010/04/tfs-check-in-policy-for-exactly-one.html' title='TFS Check-in Policy for Exactly One Work Item'/><author><name>Mark Richter</name><uri>http://www.blogger.com/profile/00876569465727030843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8850715991914801798.post-1841250614528311137</id><published>2010-04-22T11:04:00.000-07:00</published><updated>2010-10-22T14:22:15.561-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><title type='text'>Using Subversion With Visual Studio</title><content type='html'>&lt;p&gt;There’s a nifty tool called VisualSVN, which comes with a separately usable &lt;a href="http://www.visualsvn.com/server/download/" target="_blank"&gt;server&lt;/a&gt; (free) and VS client &lt;a href="http://www.visualsvn.com/visualsvn/download/" target="_blank"&gt;plug-in&lt;/a&gt; ($49). You can get by with the server and use the included management console plug-in to handle check-in, check-out, branching and merging. The client plug-in delivers nice integration into Visual Studio’s solution explorer and a full-service menu to boot. The server includes Subversion 1.6.9.&lt;/p&gt;  &lt;p&gt;If you are switching from TFS to SVN you’ll want to make sure and unbind your solution and component projects from TFS using File –&amp;gt; Source Control –&amp;gt; Change Source Control. If you don’t do this you risk getting confused results, because the normal TFS sub-menu items like “check-in”, “get latest version”, etc. do not map to VisualSVN. SVN is a separate collection of items toward the bottom of the sub-menu for elements in Solution Explorer. Unbinding removes TFS from the Solution Explorer sub-menu.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8850715991914801798-1841250614528311137?l=lyricsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lyricsoft.blogspot.com/feeds/1841250614528311137/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lyricsoft.blogspot.com/2010/04/using-subversion-with-visual-studio.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/1841250614528311137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/1841250614528311137'/><link rel='alternate' type='text/html' href='http://lyricsoft.blogspot.com/2010/04/using-subversion-with-visual-studio.html' title='Using Subversion With Visual Studio'/><author><name>Mark Richter</name><uri>http://www.blogger.com/profile/00876569465727030843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8850715991914801798.post-6103678870657133686</id><published>2010-04-22T11:03:00.000-07:00</published><updated>2010-10-22T14:22:15.569-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Methods'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Process'/><title type='text'>Myth of Optimization Through Decomposition</title><content type='html'>&lt;p&gt;&lt;a href="http://www.thehackerchickblog.com/2009/01/why-you-should-let-your-developers-surf.html" target="_blank"&gt;This&lt;/a&gt; hit me like a freight train when I read it.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;In &lt;a href="http://www.netobjectives.com/bio-alan-shalloway"&gt;Alan Shalloway's&lt;/a&gt; &lt;a href="http://www.netobjectives.com/courses/lean-online-training"&gt;Lean Online Training&lt;/a&gt;, we're learning about the &lt;strong&gt;Myth of Optimization Through Decomposition,&lt;/strong&gt; which states that trying to go faster by optimizing each individual piece &lt;strong&gt;does not speed up the system&lt;/strong&gt;.&lt;/p&gt;    &lt;p&gt;In the physical world of manufacturing, attempting to run every single machine at 100% utilization results in large piles of unfinished product just sitting around waiting to get through the next step of the pipeline or for a buyer. These unfinished products incur significant costs in terms of inventory and storage. And, whenever the product line is changed or stopped, whatever is sitting in that pipeline winds up being thrown away. This is why physical operations do best when they use a &lt;a href="http://en.wikipedia.org/wiki/Just-in-time_(business)"&gt;Just In Time&lt;/a&gt; strategy -- creating &lt;strong&gt;only what they need and no more&lt;/strong&gt;. It turns out that operating each machine at 100% utilization is actually a really bad business decision.&lt;/p&gt;    &lt;p&gt;In the world of software development, the parallel to running every machine at 100% utilization is making sure every employee is busy 100% of the time. And, just like in the physical world, this results in large amounts of unfinished works in progress that incur significant costs and risks. Knowledge degrades quickly, requirements get out of date, the feedback loop is delayed so we don’t learn what we’re doing wrong. The result is unfinished, untested, misunderstood, and often flat-out unnecessary code bogging down our product, degrading its quality, and, actually &lt;strong&gt;slowing us down&lt;/strong&gt;. &lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;It's difficult implementing a feature that was specified so long ago that no one can remember what it's for. &lt;/li&gt;      &lt;li&gt;It's hard tracking down an error in code developed so long ago that no one remembers how it was implemented. &lt;/li&gt;      &lt;li&gt;It's slow adding new features when the software is muddled with unfinished, untested code (that isn't even needed!). &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;Thus, Lean teaches us that striving for 100% utilization is &lt;strong&gt;not the answer&lt;/strong&gt;. It doesn't get the product completed any more quickly, and the only thing it creates is &lt;strong&gt;waste&lt;/strong&gt;. &lt;/p&gt;    &lt;p&gt;The only way to go faster is the optimize the &lt;strong&gt;whole&lt;/strong&gt;. In other words, find your bottlenecks -- the things that are slowing down the process, incurring delays, and adding waste -- and remove &lt;strong&gt;those&lt;/strong&gt;. And when you do, a funny thing happens, &lt;strong&gt;it lets your developers work faster&lt;/strong&gt;! They're happier, you're happier, and ultimately the customer is happier.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;From my own experience I offer some indicators that reveal the truth of this:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;It's difficult implementing a feature that was specified so long ago that no one can remember what it's for.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Imagine managing development for 3-4 &lt;em&gt;major&lt;/em&gt; products and shared infrastructure, each of which has a product backlog from dozens to over one hundred things! Imagine product owners that want to estimate &lt;em&gt;everything&lt;/em&gt; they can imagine in a product over N releases up-front, “so we can inform the contents of each release partially based on how big things are.” &lt;/p&gt;  &lt;p&gt;In my experience with, say, e-commerce web applications, writing user stories of any reasonable fidelity, it’s unusual to pack more than ten things into any release. More than that requires too much time for the release or too many people to get the job done in a reasonable time. When you’re done it’s likely that ten more things have appeared that are at least as important to the business as the next ten in the backlog. A backlog longer than ten is waste in this situation.&lt;/p&gt;  &lt;p&gt;I need to say something about story fidelity. When I see a backlog of dozens or hundreds I usually see very finely-tuned stories. In my experience, a story that doesn’t stand on its own when implemented in a product is too fine-grained for a product backlog. A story needs to describe a complete picture so that when someone looks at a story two months later, someone unfamiliar with the backlog reads a story, they can quickly and easily understand the feature.&lt;/p&gt;  &lt;p&gt;Now, I realize I have made a nasty generalization with my ten-item-backlog example. The point is that a backlog of 100 is pretty darn difficult to prioritize and manage. The backlog simply becomes a list of things someone one day thought were needed. Estimating it is waste. Prioritizing it is probably impossible. &lt;/p&gt;  &lt;p&gt;Finally, as a development manager you need to resist aggressive product owners who try and pack as much as they can onto your agenda. The belief is that if every available hour of every resource is planned that we are working at maximum efficiency. Wrong. Dense-packing software development teams like that &lt;em&gt;&lt;strong&gt;guarantees&lt;/strong&gt;&lt;/em&gt; lots of overtime or missed deadlines or both. If you schedule everyone to the limit you have no “surge capacity”. Without surge capacity you’re dead; you are forced into nights and weekends and you have grumpy people.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;It's hard tracking down an error in code developed so long ago that no one remembers how it was implemented.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;I have a rule: Whenever you work on old code you &lt;strong&gt;always&lt;/strong&gt; refactor it to leave it better than you found it. If you’re a good programmer do you ever remember working on old code you couldn’t improve? I don’t.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;It's slow adding new features when the software is muddled with unfinished, untested code (that isn't even needed!).&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;I recently helped my company with some technical due diligence evaluating the acquisition of another company and its software. Company B uses a development process in which they release their product religiously every X weeks pretty much regardless of whether new features are completely finished. They have conditioned their user community to expect partially completed or incompletely tested stuff; indeed they say their users enjoy being treated to “sneak preview” features and Company B uses feedback to improve these features before they are completely done. As a business model this works for them and that is wonderful.&lt;/p&gt;  &lt;p&gt;I argue that care needs to be taken with this style of development. It is easy to get distracted and start adding new things without finishing old things leaving code littered with partially completed work. Clever branching might help mitigate this problem, but doing so adds complexity to the development process nevertheless. &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8850715991914801798-6103678870657133686?l=lyricsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lyricsoft.blogspot.com/feeds/6103678870657133686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lyricsoft.blogspot.com/2010/04/myth-of-optimization-through.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/6103678870657133686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/6103678870657133686'/><link rel='alternate' type='text/html' href='http://lyricsoft.blogspot.com/2010/04/myth-of-optimization-through.html' title='Myth of Optimization Through Decomposition'/><author><name>Mark Richter</name><uri>http://www.blogger.com/profile/00876569465727030843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8850715991914801798.post-6399951462852506980</id><published>2010-04-22T11:01:00.000-07:00</published><updated>2010-10-22T14:22:15.581-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><title type='text'>How to: Move Your Team Foundation Server from One Hardware Configuration to Another</title><content type='html'>&lt;p&gt;There are several reasons you may want to move TFS from one platform to another.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Expansion and growth. Your existing single-server implementation is creaking and sputtering – on old hardware to boot. You’ve got everything on one server. &lt;/li&gt;    &lt;li&gt;You’re upgrading hardware. &lt;/li&gt;    &lt;li&gt;Your system has failed and you need to stand up a new one fast. &lt;/li&gt;    &lt;li&gt;You want to separate a bunch of apps like SharePoint, TFS and SQL Server onto different servers. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The first thing you need to do is read &lt;a href="http://msdn.microsoft.com/en-us/library/ms404869(VS.80).aspx" target="_blank"&gt;this article&lt;/a&gt; about ten times. You need to &lt;em&gt;really understand&lt;/em&gt; what it says. I used it to move TFS from a physical server running TFS 2008, SharePoint 2007, Project Server 2007, Team System Web Access and Scrum for Team System to a virtual server last month. If you follow this article you should not have trouble.&lt;/p&gt;  &lt;p&gt;The second thing you need to do is reserve &lt;em&gt;a full day&lt;/em&gt; to pull this off. Take your time. Check off your progress through each step. Go for a walk every hour or two and collect yourself.&lt;/p&gt;  &lt;p&gt;Finally, here’s a tip from my experience. There’s a database on TFS called TfsIntegration. Opening its tbl_service_interface table&amp;#160; in SQL Server Management Studio reveals contents that look like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/_nwuvEZpxrfU/S9CO6hR_Y8I/AAAAAAAAAFU/M3iRpFVfFUE/s1600-h/image3.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/_nwuvEZpxrfU/S9CO7X8_PtI/AAAAAAAAAFY/t9s5N1YyF1w/image_thumb1.png?imgmax=800" width="640" height="171" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;On a properly configured system all instances of “mattie” in the above will be the name of your server. If you are using DNS then your domain name should be there.&lt;/p&gt;  &lt;p&gt;In the same database look inside tbl_Registration_extended_attributes for the following.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/_nwuvEZpxrfU/S9CO7nMBVPI/AAAAAAAAAFc/S73AGwHAUPg/s1600-h/image8.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/_nwuvEZpxrfU/S9CO8DgMXHI/AAAAAAAAAFg/opSVyhmlGXI/image_thumb4.png?imgmax=800" width="441" height="303" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Here you want to use the network name of your server, not the domain.&lt;/p&gt;  &lt;p&gt;AFTER you complete your migration and test the system backup the TfsIntegration database on the new server. You’ll want to restore it after you make a fresh restoration of the old databases before you “go live” on the new system.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8850715991914801798-6399951462852506980?l=lyricsoft.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://lyricsoft.blogspot.com/feeds/6399951462852506980/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lyricsoft.blogspot.com/2010/04/how-to-move-your-team-foundation-server.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/6399951462852506980'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8850715991914801798/posts/default/6399951462852506980'/><link rel='alternate' type='text/html' href='http://lyricsoft.blogspot.com/2010/04/how-to-move-your-team-foundation-server.html' title='How to: Move Your Team Foundation Server from One Hardware Configuration to Another'/><author><name>Mark Richter</name><uri>http://www.blogger.com/profile/00876569465727030843</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_nwuvEZpxrfU/S9CO7X8_PtI/AAAAAAAAAFY/t9s5N1YyF1w/s72-c/image_thumb1.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
