<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.manicprogrammer.com/cs/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">if ( ! blogClogged )</title><subtitle type="html">Most things software, Many things VSTS/TFS, Lots of things something else</subtitle><id>http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/atom.aspx</id><link rel="alternate" type="text/html" href="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/default.aspx" /><link rel="self" type="application/atom+xml" href="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/atom.aspx" /><generator uri="http://communityserver.org" version="2.1.61129.1">Community Server</generator><updated>2008-06-28T08:51:35Z</updated><entry><title>Long Live The Command Line</title><link rel="alternate" type="text/html" href="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/08/27/long-live-the-command-line.aspx" /><id>http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/08/27/long-live-the-command-line.aspx</id><published>2008-08-27T16:20:02Z</published><updated>2008-08-27T16:20:02Z</updated><content type="html">&lt;p&gt;The &lt;a href="http://arstechnica.com/news.ars/post/20080827-ubiquity-prototype-lets-users-take-command-of-firefox.html" target="_blank"&gt;Ubiquity&lt;/a&gt; prototype.&lt;/p&gt; &lt;p&gt;I like it. It inspires me for applying this concept more thoroughly with &lt;a href="http://manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/08/23/builderbob-teampatter-and-the-natural-language-build-agent.aspx" target="_blank"&gt;TeamPatter&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.manicprogrammer.com/cs/aggbug.aspx?PostID=2735" width="1" height="1"&gt;</content><author><name>michaelruminer</name><uri>http://blogs.manicprogrammer.com/cs/members/michaelruminer.aspx</uri></author><category term="Programming" scheme="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/tags/Programming/default.aspx" /></entry><entry><title>Just A Silly Commercial I Enjoy</title><link rel="alternate" type="text/html" href="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/08/26/just-a-silly-commercial-i-enjoy.aspx" /><id>http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/08/26/just-a-silly-commercial-i-enjoy.aspx</id><published>2008-08-27T02:05:00Z</published><updated>2008-08-27T02:05:00Z</updated><content type="html">&lt;p&gt;Don't ask me why I just enjoy this &lt;a href="http://www.youtube.com/watch?v=4U5wAnB9RzQ" target="_blank"&gt;VW Commercial&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://blogs.manicprogrammer.com/cs/aggbug.aspx?PostID=2727" width="1" height="1"&gt;</content><author><name>michaelruminer</name><uri>http://blogs.manicprogrammer.com/cs/members/michaelruminer.aspx</uri></author><category term="personal" scheme="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/tags/personal/default.aspx" /></entry><entry><title>The Beauty of Code Coverage</title><link rel="alternate" type="text/html" href="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/08/24/the-beauty-of-code-coverage.aspx" /><id>http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/08/24/the-beauty-of-code-coverage.aspx</id><published>2008-08-24T14:04:17Z</published><updated>2008-08-24T14:04:17Z</updated><content type="html">&lt;p&gt;A lot of people don't realize that with Visual Studio Team System you can get code coverage results even when using manual tests. I was showing a team how to perform code coverage on manual tests, the results they get&amp;nbsp; and how valuable this is. Their testing processes are very immature so an ideal place to start are manual tests. I can hear the cries from the TDD zealots now about unit testing being the best start. I often agree but am also pragmatic and must take each situation into account. This situation needs manual tests before unit tests. Results over form. Back to the story.&lt;/p&gt; &lt;p&gt;It was a nice experience to just take some code that has existed for some time, create a quick manual test on it, set the testconfig to instrument the assemblies of interest and then perform the test. We passed the test and then I pulled up the code coverage results. It covered one specific aspx page that was the target with about 60% coverage. That's pretty darn good. I then pulled up the code behind on the page flipped the code coverage button to highlight code covered and voila. It was instant gratification to see the room light up with recognition and to then point out that based on the code coverage I could now see two other scenarios we didn't check for. What if there are no results returned from the data access- we didn't test that situation. What if the results return only a single record- we didn't test that path. The code coverage results helped us determine additional paths to test without having to think too hard about it. &lt;/p&gt; &lt;p&gt;I'm a strong proponent that the goal in testing is all about cumulative flow and trends. I don't care if coverage starts out at 1% I just want to see trends for that number going up and with an asymptotic approach toward 100%. The last 20% will be much harder than the first 80% and there are laws of diminishing returns at play.&amp;nbsp; If you have 100% code coverage on all your code then you're a sick person that I would argue is wasting time building tests to a level of the most minimal return. I mean that in the nicest of ways. :-) &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;I just wanted to share that you really should instrument code coverage on your manual tests and then look at what you missed. Based on that select new areas to then cover by tests (of any sort).&amp;nbsp; And I just wanted to share a bit of a victory in one of my own teams.&lt;/p&gt;&lt;img src="http://blogs.manicprogrammer.com/cs/aggbug.aspx?PostID=2676" width="1" height="1"&gt;</content><author><name>michaelruminer</name><uri>http://blogs.manicprogrammer.com/cs/members/michaelruminer.aspx</uri></author><category term="Visual Studio 2008" scheme="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/tags/Visual+Studio+2008/default.aspx" /><category term="Code Coverage" scheme="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/tags/Code+Coverage/default.aspx" /></entry><entry><title>BuilderBob, TeamPatter and the Natural Language Build Agent</title><link rel="alternate" type="text/html" href="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/08/23/builderbob-teampatter-and-the-natural-language-build-agent.aspx" /><id>http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/08/23/builderbob-teampatter-and-the-natural-language-build-agent.aspx</id><published>2008-08-23T04:13:18Z</published><updated>2008-08-23T04:13:18Z</updated><content type="html">&lt;p&gt;I've been tossing around for a few years now some 'better living through IM' tools to tie into the Team Foundation Server (TFS) toolset. I have a not-even-started-yet-over-a-year-old project called TeamPatter on CodePlex to prove it. It's been one of my favorite TODO items to never do. I have begun to actually code and generate some proof of concepts around this. I have affectionately given the name "BuilderBob" to the build agent of TeamPatter. The 'Bob' comes as a bit of homage to Microsoft Bob, a friend of mine named Bob and that the triplets love Bob the Builder (not as much as Curious George, mind you). Here's the basic concept.&lt;/p&gt; &lt;p&gt;TeamPatter is the idea of an instant messaging agent also known as a bot that works and interacts on your behalf and facilitates capture of information to be associated with artifacts in the SDLC. In my prototype and my real point of concern the primary SDLC tool on the server side is TFS. BuilderBob is one of the agents of TeamPatter and his job is to interact with me to facilitate build process. I open up a session to BuilderBob and then begin asking questions or issuing requests. One such request interaction might go like this.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;&lt;strong&gt;Me:&lt;/strong&gt; '&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Alert me to all failed builds in team project x'. &lt;br&gt;&lt;strong&gt;BuilderBob: &lt;/strong&gt;'Sure I'll notify you to all failed builds in team project x. Do you want that by IM or email?'&lt;br&gt;&lt;strong&gt;Me:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/strong&gt;'IM, please'&lt;br&gt;&lt;strong&gt;BuilderBob: &lt;/strong&gt;'Will do. If you are not online would you like me to notify you the next time you come online, send you an email or just do nothing?'&lt;br&gt;&lt;strong&gt;Me:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/strong&gt;'Oh yeah, Just email me in that case'&lt;br&gt;&lt;strong&gt;BuilderBob: &lt;/strong&gt;'I don't think I have your email address, what it is?'&lt;br&gt;&lt;strong&gt;ME:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/strong&gt;'Geez,&amp;nbsp; leave me alone already who do you think you are, Clippy?'&lt;br&gt;&lt;strong&gt;BuilderBob: &lt;/strong&gt;'Sorry. If you are online I'll let you know about failed builds. Clippy my ass.'&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Granted this specific scenario is reasonably complex and probably just down right too much. But it's not undoable. As far as I have gone in my natural language agent&amp;nbsp; in that thread are for more simple things such as &lt;/p&gt; &lt;ul&gt; &lt;li&gt;'Notify me of all failed builds in team project x'&lt;/li&gt; &lt;li&gt;'Notify moi of failed builds in x'&lt;/li&gt; &lt;li&gt;'Alert me about failed builds'&lt;/li&gt; &lt;li&gt;'Tell me anytime there is a F#$%@! failed build' [sometimes the cussing might be cathartic so I don't try to filter it out :-) ]&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;Other commands I have created are basic parses for items like &lt;/p&gt; &lt;ul&gt; &lt;li&gt;'queue build TeamPatterTestDeploy'&lt;/li&gt; &lt;li&gt;'Show me all the builds in the last 24 hours|1 day|1 week' &lt;/li&gt; &lt;li&gt;'Change the build quality on TeamPatterTestDeploy.2008.08.21 to test confirmed' &lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;and things like this. Over time the vocabulary can become stronger. &lt;/p&gt; &lt;p&gt;Other areas I plan to prototype within TeamPatter involve important things like the daily scrum question initiated at a given time from the bot to me on what time is remaining on various work items. As well as logging time to timesheet entries by me initiating with comments like '4 hours for today on work item 30465' &lt;/p&gt; &lt;p&gt;One of the final areas (at the moment) I plan to prototype is the agent facilitating capturing information and applying to an artifact especially information that might be lost otherwise. &lt;/p&gt; &lt;p&gt;Dev A opens up an IM to Business User B and it goes something like this&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;&lt;strong&gt;DEV A: &lt;/strong&gt;Hi B I have a few questions on story XYZ&lt;br&gt;&lt;strong&gt;B:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/strong&gt;Hi! Shoot it to me, I'll do the best I can.&lt;br&gt;&lt;strong&gt;Dev A: &lt;/strong&gt;I'm going to log this so that I can memorialize the conversation for whatever dev works on this feature&lt;br&gt;&lt;strong&gt;B:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/strong&gt;great idea&lt;br&gt;&lt;strong&gt;A:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&lt;/strong&gt;on the record for work item 14578#&lt;br&gt;&lt;strong&gt;Bot:&lt;/strong&gt;&amp;nbsp;&amp;nbsp; You are on the record&lt;br&gt;&lt;strong&gt;A:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/strong&gt;So is the user supposed to get ice cream after every mouse click or only on save?&lt;br&gt;&lt;strong&gt;B:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/strong&gt;Only on save....&lt;br&gt;[Conversation continues]&lt;br&gt;&lt;strong&gt;A:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #&lt;/strong&gt;off record# By the way how's the kids&lt;br&gt;&lt;strong&gt;Bot:&lt;/strong&gt; You are now off the record&lt;br&gt;&lt;strong&gt;B:&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/strong&gt;They love the book 'No, David!'...&lt;br&gt;&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;This could go on forever going on and off record jumping to new work items etc. and when you are done you have the conversations memorialized that might have otherwise been lost and with it you get all the goodness that comes from the conversation in insight to the goal and attributed to the context related artifact. &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;So these are my initial thoughts and some items I have started on for TeamPatter and out of the gate for BuilderBob.&lt;/p&gt; &lt;p&gt;What are your interactions you'd like to have?&lt;/p&gt;&lt;img src="http://blogs.manicprogrammer.com/cs/aggbug.aspx?PostID=2645" width="1" height="1"&gt;</content><author><name>michaelruminer</name><uri>http://blogs.manicprogrammer.com/cs/members/michaelruminer.aspx</uri></author><category term="TFS" scheme="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/tags/TFS/default.aspx" /><category term="Team Build 2008" scheme="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/tags/Team+Build+2008/default.aspx" /></entry><entry><title>Visual Studio 2008 SDK 1.1 Released</title><link rel="alternate" type="text/html" href="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/08/21/visual-studio-2008-sdk-1-1-released.aspx" /><id>http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/08/21/visual-studio-2008-sdk-1-1-released.aspx</id><published>2008-08-21T11:40:22Z</published><updated>2008-08-21T11:40:22Z</updated><content type="html">&lt;p&gt;I try avoid rehashing other news that will be heavily touted but I am excited by this and don't think this will get the blogosphere coverage of other more sexy items. With that said the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=59ec6ec3-4273-48a3-ba25-dc925a45584d&amp;amp;DisplayLang=en" target="_blank"&gt;Visual Studio 2008 SDK 1.1&lt;/a&gt; has been released. I encourage you to check out the &lt;a href="http://blogs.msdn.com/vsxteam/archive/2008/08/19/visual-studio-2008-sdk-1-1-has-been-released.aspx" target="_blank"&gt;VSX Team blog&lt;/a&gt;. As of the writing of this post the link provided on the VSX Team blog to download was incorrect so I recommend the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=59ec6ec3-4273-48a3-ba25-dc925a45584d&amp;amp;DisplayLang=en" target="_blank"&gt;link&lt;/a&gt; I have provided.&lt;/p&gt;&lt;img src="http://blogs.manicprogrammer.com/cs/aggbug.aspx?PostID=2625" width="1" height="1"&gt;</content><author><name>michaelruminer</name><uri>http://blogs.manicprogrammer.com/cs/members/michaelruminer.aspx</uri></author><category term="Visual Studio 2008" scheme="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/tags/Visual+Studio+2008/default.aspx" /></entry><entry><title>A Mock Data Context</title><link rel="alternate" type="text/html" href="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/08/21/a-mock-data-context.aspx" /><id>http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/08/21/a-mock-data-context.aspx</id><published>2008-08-21T11:25:32Z</published><updated>2008-08-21T11:25:32Z</updated><content type="html">&lt;p&gt;Note to self: Try this out:&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a title="http://weblogs.asp.net/stephenwalther/archive/2008/08/16/asp-net-mvc-tip-33-unit-test-linq-to-sql.aspx" href="http://weblogs.asp.net/stephenwalther/archive/2008/08/16/asp-net-mvc-tip-33-unit-test-linq-to-sql.aspx"&gt;http://weblogs.asp.net/stephenwalther/archive/2008/08/16/asp-net-mvc-tip-33-unit-test-linq-to-sql.aspx&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.manicprogrammer.com/cs/aggbug.aspx?PostID=2624" width="1" height="1"&gt;</content><author><name>michaelruminer</name><uri>http://blogs.manicprogrammer.com/cs/members/michaelruminer.aspx</uri></author><category term="personal" scheme="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/tags/personal/default.aspx" /></entry><entry><title>When To Punt On A Design</title><link rel="alternate" type="text/html" href="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/08/20/when-to-punt-on-a-design.aspx" /><id>http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/08/20/when-to-punt-on-a-design.aspx</id><published>2008-08-20T13:02:33Z</published><updated>2008-08-20T13:02:33Z</updated><content type="html">&lt;p&gt;I hate having to concede a technical design that just doesn't work. It's a good learning experience but also painful. I have been working on some TFS custom work item controls and I have a scenario that has kicked my proverbial... well you get the idea. I'll not go into the design at it's shameful to me that it didn't work. :-) Seriously, it was all about 'state' and I just could not, in the current design, get the states just right and consistent. Eventing race conditions, state corruption and the like were just tearing me apart as I reworked/hacked code here and there only to feel like the little boy with his finger in the dike. &lt;/p&gt; &lt;p&gt;So now what. Simple. Step back, reflect, realize that I need to put a better state engine into the process and redesign how I coordinated state with back end servers. Basically, rework my eventing and user interface model as well as how the persistence ties in. It's not a bad thing and I'll spend less time doing it this time than trying to hack it all together. I just wanted a working experiment of some new controls and found that I have to put a bit more design into that experiment. An exercise&amp;nbsp; in being a Reflective Developer. &lt;/p&gt;&lt;img src="http://blogs.manicprogrammer.com/cs/aggbug.aspx?PostID=2622" width="1" height="1"&gt;</content><author><name>michaelruminer</name><uri>http://blogs.manicprogrammer.com/cs/members/michaelruminer.aspx</uri></author><category term="TFS" scheme="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/tags/TFS/default.aspx" /></entry><entry><title>Another new favorite in Visual Studio 2008 SP1 Team Editions</title><link rel="alternate" type="text/html" href="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/08/12/another-new-favorite-in-visual-studio-2008-sp1-team-editions.aspx" /><id>http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/08/12/another-new-favorite-in-visual-studio-2008-sp1-team-editions.aspx</id><published>2008-08-13T01:07:58Z</published><updated>2008-08-13T01:07:58Z</updated><content type="html">&lt;p&gt;I keep a lot of build scripts about because we have LOTS of applications. I also keep builds scripts in the tree beneath the app and for specific branches/releases. So being able to quickly get to the location of a build script is worth a ton to me. Thus I love being able to now select a build definition in Team Explorer and right click and have "View Configuration Folder" in the context menu. It's indeed valuable to me as the wonderful feature from &lt;a href="http://www.attrice.info/cm/tfs/index.htm" target="_blank"&gt;Attrice&lt;/a&gt; for check out for edit is not enough for me as I often have include targets in the build directory as well. Combine the &lt;a href="http://www.attrice.info/cm/tfs/index.htm" target="_blank"&gt;Attrice&lt;/a&gt; "Check Out For Edit" with the&amp;nbsp; "View Configuration Folder" and life is good!&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://manicprogrammer.com/cs/blogs/michaelruminer/images/AnothernewfavoriteinVisualStudio2008SP1T_1292B/image.png" target="_blank"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="286" alt="image" src="http://manicprogrammer.com/cs/blogs/michaelruminer/images/AnothernewfavoriteinVisualStudio2008SP1T_1292B/image_thumb.png" width="241" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.manicprogrammer.com/cs/aggbug.aspx?PostID=2600" width="1" height="1"&gt;</content><author><name>michaelruminer</name><uri>http://blogs.manicprogrammer.com/cs/members/michaelruminer.aspx</uri></author></entry><entry><title>One of my fav new features in Visual Studio 2008 SP1</title><link rel="alternate" type="text/html" href="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/08/12/one-of-my-fav-new-features-in-visual-studio-2008-sp1.aspx" /><id>http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/08/12/one-of-my-fav-new-features-in-visual-studio-2008-sp1.aspx</id><published>2008-08-13T01:00:37Z</published><updated>2008-08-13T01:00:37Z</updated><content type="html">&lt;p&gt;Being able to select windows explorer in the context menu of the source control explorer. Oh yeah... and the Add Items to Folder in the context menu which I have complained for three years about being missing.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://manicprogrammer.com/cs/blogs/michaelruminer/images/OneofmyfavnewfeaturesinVisualStudio2008S_12770/image.png" target="_blank"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="597" alt="image" src="http://manicprogrammer.com/cs/blogs/michaelruminer/images/OneofmyfavnewfeaturesinVisualStudio2008S_12770/image_thumb.png" width="215" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.manicprogrammer.com/cs/aggbug.aspx?PostID=2599" width="1" height="1"&gt;</content><author><name>michaelruminer</name><uri>http://blogs.manicprogrammer.com/cs/members/michaelruminer.aspx</uri></author><category term="TFS 2008" scheme="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/tags/TFS+2008/default.aspx" /></entry><entry><title>A Few Notable Things When Installing TFS 2008 SP1 and Visual Studio 2008 SP1</title><link rel="alternate" type="text/html" href="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/08/12/tfs-2008-sp1-visual-studio-2008-sp1-and-net-3-5-sp1.aspx" /><id>http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/08/12/tfs-2008-sp1-visual-studio-2008-sp1-and-net-3-5-sp1.aspx</id><published>2008-08-12T11:00:19Z</published><updated>2008-08-12T11:00:19Z</updated><content type="html">&lt;p&gt;I won't parrot too much the undoubted countless posts indicating that TFS 2008 SP1, Visual Studio Team System 2008 SP1 and .NET 3.5 SP1 have been released. Instead let me give you a few pointers. &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Please&lt;/strong&gt; read the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=ff12844f-398c-4fe9-8b0d-9e84181d9923&amp;amp;displaylang=en" target="_blank"&gt;installation guide&lt;/a&gt; and ReadMe file. If you are upgrading TFS 2008 application tier and you have a Visual Studio 2008 client installed on that machine you must install in the proper order or you will be regretting it. This note is in the install guide and on the web site for download of the service pack.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;b&gt;Important Note:&lt;/b&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;blockquote&gt; &lt;p&gt;In deployments where the application tier and a client tier component are installed on the same computer, you must install SP1 for Visual Studio 2008 before you install SP1 for Team Foundation Server. Otherwise, you will not be able to install SP1 for Team Foundation Server. &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;strong&gt;Please,&lt;/strong&gt; when you go to get the installation guide get the one titled TFSInstall-RTM-v080811.chm. It doesn't indicate it's the SP1 version but it is.&lt;/p&gt; &lt;p&gt;If you are installing a fresh install to a machine and using SQL Server 2008 you will need to create a slipstream installation of the TFS RTM and SP1. There is not yet a full install available with the SP1 rolled into it and you cannot install the TFS 2008 RTM (non SP1) against SQL Server 2008 without the slipstream of SP1.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Please&lt;/strong&gt; note for planning your deployment that if you have a TFS Server application tier machine, build machine or proxy that also has a client installed on it (this means Team Explorer, Visual Studio 2008 etc) and you upgrade that server (which by a previous note means you have upgraded the client as well) you will need every workstation client running Visual Studio 2008 SP1 otherwise you have an unsupported scenario. Which means most organizations need to do this as most run a build server with a Visual Studio instance on board for running tests etc. The notes in the install manual read as follows:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;You must install SP1 for Visual Studio 2008 under the following circumstances:  &lt;ul&gt; &lt;li&gt; &lt;p&gt;The client component must connect to a deployment of Team Foundation Server that uses SQL Server 2008. If you do not update the client, it will not be able to connect to that deployment. &lt;/p&gt; &lt;li&gt; &lt;p&gt;&lt;u&gt;An application-tier server for Team Foundation, a build server for Team Foundation, or a proxy server for Team Foundation has or will have both a client component and SP1 for Team Foundation Server installed. If you install only one of these service packs, you will create an unsupported configuration.&lt;/u&gt; (Emphasis mine)&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/blockquote&gt; &lt;p&gt;These are just a few areas I wanted to point out to folks. &lt;/p&gt;&lt;img src="http://blogs.manicprogrammer.com/cs/aggbug.aspx?PostID=2594" width="1" height="1"&gt;</content><author><name>michaelruminer</name><uri>http://blogs.manicprogrammer.com/cs/members/michaelruminer.aspx</uri></author><category term="TFS 2008" scheme="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/tags/TFS+2008/default.aspx" /></entry><entry><title>Developers, Developers, Developers, Developers</title><link rel="alternate" type="text/html" href="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/08/10/developers-developers-developers-developers.aspx" /><id>http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/08/10/developers-developers-developers-developers.aspx</id><published>2008-08-10T13:52:08Z</published><updated>2008-08-10T13:52:08Z</updated><content type="html">&lt;p&gt;Those 'four words' (title) are in the lexicon and myth of Microsoft. If in doubt just Google it or check out one of my favorite &lt;a href="http://www.youtube.com/watch?v=KMU0tzLwhbE" target="_blank"&gt;montage videos&lt;/a&gt;. As I watch the Apple iPhone and App Store stories hit the wire it makes me appreciate that I tend to focus my development efforts on the Microsoft world. I have been toying with doing some coding for the iPhone but doubt I'll ever cross the threshold as the barrier to entry is too great. &lt;/p&gt; &lt;p&gt;Even within the Microsoft world I tend to focus on software development tools and to me it _is_ all about developers. I like being a developer's developer. Much of Microsoft does as well. Apple not so much, it seems. I have to watch the stories and say to myself 'Microsoft has never asked me &lt;strong&gt;NOT&lt;/strong&gt; to talk about something that has been released as Apple has done with the iPhone SDK'. That is just weird. This was just a passing thought I decided I'd post. &lt;/p&gt; &lt;p&gt;Just wanted to say thanks to all the great developers all over the world and to Microsoft for their largely unwavering support of what we do. &lt;/p&gt;&lt;img src="http://blogs.manicprogrammer.com/cs/aggbug.aspx?PostID=2591" width="1" height="1"&gt;</content><author><name>michaelruminer</name><uri>http://blogs.manicprogrammer.com/cs/members/michaelruminer.aspx</uri></author><category term="Microsoft" scheme="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/tags/Microsoft/default.aspx" /></entry><entry><title>Note To Self: Research Dreyfus Model of Skill Acquisition</title><link rel="alternate" type="text/html" href="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/08/01/note-to-self-research-dreyfus-model-of-skill-acquisition.aspx" /><id>http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/08/01/note-to-self-research-dreyfus-model-of-skill-acquisition.aspx</id><published>2008-08-01T13:59:05Z</published><updated>2008-08-01T13:59:05Z</updated><content type="html">&lt;p&gt;Title says it all.&lt;/p&gt;&lt;img src="http://blogs.manicprogrammer.com/cs/aggbug.aspx?PostID=2566" width="1" height="1"&gt;</content><author><name>michaelruminer</name><uri>http://blogs.manicprogrammer.com/cs/members/michaelruminer.aspx</uri></author><category term="The Process of Software" scheme="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/tags/The+Process+of+Software/default.aspx" /><category term="personal" scheme="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/tags/personal/default.aspx" /><category term="Personal Improvement" scheme="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/tags/Personal+Improvement/default.aspx" /></entry><entry><title>Easily Getting Builds Out Of The Global Build List in TFS</title><link rel="alternate" type="text/html" href="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/08/01/easily-getting-builds-out-of-the-global-build-list-in-tfs.aspx" /><id>http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/08/01/easily-getting-builds-out-of-the-global-build-list-in-tfs.aspx</id><published>2008-08-01T12:24:02Z</published><updated>2008-08-01T12:24:02Z</updated><content type="html">&lt;p&gt;Inside TFS global lists are created to store the names of completed builds that are then used to populate the SuggestedValues of such fields as &lt;em&gt;Fixed in Build&lt;/em&gt; or &lt;em&gt;Integrated in Build. &lt;/em&gt;Lots of folks don't want every build type they run to show up in this list, for example a CI build or failed build. I'm one of those folks. There is not, as one might expect, a property name that can be set in the build script to indicate that this specific build should not be added to the global lists. &lt;/p&gt; &lt;p&gt;I have heard a few different approaches to go about modifying the global list to remove the entries. None are perfect. Jason Prickett wrote up the following &lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/jpricket/archive/2006/09/05/how-to-filter-the-build-completion-event.aspx"&gt;http://blogs.msdn.com/jpricket/archive/2006/09/05/how-to-filter-the-build-completion-event.aspx&lt;/a&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/jpricket/archive/2006/09/05/useful-buildcompletionevent-filters.aspx"&gt;http://blogs.msdn.com/jpricket/archive/2006/09/05/useful-buildcompletionevent-filters.aspx&lt;/a&gt; &lt;p&gt;I, like a few other people are not too keen on replacing an out of the box subscription with our own and personally I just don't want to have to maintain the service and keep a config list for it to read of what builds it should and should not send on to the global lists. I don't know why. I guess its just not important enough to me.  &lt;p&gt;And Ben Day promotes the manual edit approach here: &lt;/p&gt; &lt;p&gt;&lt;a title="http://blog.benday.com/archive/2007/10/23/23165.aspx" href="http://blog.benday.com/archive/2007/10/23/23165.aspx"&gt;http://blog.benday.com/archive/2007/10/23/23165.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;I personally use a custom build task. Like the approaches listed prior this is far from perfect. First off since the the build doesn't get into the list until the web service is called it's not there when the custom build task runs. So what does my build task do then? It removes any preexisting entries for that build type thus I really will have no more than one entry for that build type in the global list -which will be the one for the build that is running and will be added after the build complete. Basically I empty out the global list for entries of that build type on each run so that only the latest will be present. This does nothing for you in terms of not placing into the list the Failed builds. But it did what I needed in not having a boat load of CI builds showing up in the list. &lt;/p&gt; &lt;p&gt;I just threw this together as a hack one night and also used it to play with some LINQ syntax so don't pound me on the style. It's an example of a quick hack thrown together all the time saying 'Let me try this. And I'll come back later and refactor into something real' But... 9 months later it's still in this form and running on my build servers. &lt;/p&gt; &lt;p&gt;In short- I take some needed parameters from the build and then concoct up a string to use in an XLINQ query to blow away the list entries I don't want then push the list back up to the server.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div style="border-right:gray 1px solid;padding-right:4px;border-top:gray 1px solid;padding-left:4px;font-size:8pt;padding-bottom:4px;margin:20px 0px 10px;overflow:auto;border-left:gray 1px solid;width:97.5%;cursor:text;max-height:200px;line-height:12pt;padding-top:4px;border-bottom:gray 1px solid;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;"&gt; &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; System;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   2:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   3:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; System.Text;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   4:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; Microsoft.TeamFoundation.WorkItemTracking.Client;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   5:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; Microsoft.TeamFoundation.Client;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   6:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; System.Linq;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   7:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; System.Xml.Linq;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   8:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; System.Xml;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   9:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; Microsoft.Build.Utilities;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  10:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;using&lt;/span&gt; Microsoft.Build.Framework;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  11:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  12:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  13:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;namespace&lt;/span&gt; ModifyGlobalList&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  14:&lt;/span&gt; {&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  15:&lt;/span&gt;     &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;class&lt;/span&gt; ClearBuildTypeFromGlobalList : Microsoft.Build.Utilities.Task &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  16:&lt;/span&gt;     {&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  17:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; _teamFoundationServerURL;        &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  18:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; _buildDefinitionName;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  19:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; _teamProject;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  20:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  21:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;const&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; GLOBAL_LIST_ELEMENT_NAME = &lt;span style="color:#006080;"&gt;"GLOBALLIST"&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  22:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;const&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; GLOBAL_LIST_MEMBER_ELEMENT_NAME = &lt;span style="color:#006080;"&gt;"LISTITEM"&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  23:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;private&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;const&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; GLOBAL_LIST_ELEMENT_NAME_VALUE = &lt;span style="color:#006080;"&gt;"Builds - "&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  24:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  25:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  26:&lt;/span&gt;         [Required]&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  27:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; TeamFoundationServerURL&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  28:&lt;/span&gt;         {&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  29:&lt;/span&gt;             get&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  30:&lt;/span&gt;             {&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  31:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; _teamFoundationServerURL;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  32:&lt;/span&gt;             }&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  33:&lt;/span&gt;             set&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  34:&lt;/span&gt;             {&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  35:&lt;/span&gt;                 _teamFoundationServerURL = &lt;span style="color:#0000ff;"&gt;value&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  36:&lt;/span&gt;             }&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  37:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  38:&lt;/span&gt;         }&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  39:&lt;/span&gt;    &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  40:&lt;/span&gt;         [Required]&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  41:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; BuildDefinitionName &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  42:&lt;/span&gt;         { &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  43:&lt;/span&gt;             get&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  44:&lt;/span&gt;             {&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  45:&lt;/span&gt;                  &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; _buildDefinitionName;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  46:&lt;/span&gt;             }&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  47:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  48:&lt;/span&gt;             set&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  49:&lt;/span&gt;             {&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  50:&lt;/span&gt;                  _buildDefinitionName = &lt;span style="color:#0000ff;"&gt;value&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  51:&lt;/span&gt;             }&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  52:&lt;/span&gt;          }&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  53:&lt;/span&gt;         [Required]&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  54:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; TeamProject&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  55:&lt;/span&gt;         {&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  56:&lt;/span&gt;             get&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  57:&lt;/span&gt;             {&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  58:&lt;/span&gt;                 &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; _teamProject;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  59:&lt;/span&gt;             }&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  60:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  61:&lt;/span&gt;             set&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  62:&lt;/span&gt;             {&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  63:&lt;/span&gt;                 _teamProject = &lt;span style="color:#0000ff;"&gt;value&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  64:&lt;/span&gt;             }&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  65:&lt;/span&gt;         }&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  66:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  67:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; ClearBuildTypeFromGlobalList()&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  68:&lt;/span&gt;         {&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  69:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  70:&lt;/span&gt;         }&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  71:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  72:&lt;/span&gt;         &lt;span style="color:#0000ff;"&gt;public&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;override&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; Execute()&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  73:&lt;/span&gt;         {&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  74:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;bool&lt;/span&gt; isOk = &lt;span style="color:#0000ff;"&gt;true&lt;/span&gt;;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  75:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  76:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;string&lt;/span&gt; globalListToPrune = GLOBAL_LIST_ELEMENT_NAME_VALUE + TeamProject;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  77:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  78:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  79:&lt;/span&gt;             &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  80:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  81:&lt;/span&gt;             TeamFoundationServer tfs = TeamFoundationServerFactory.GetServer(_teamFoundationServerURL);&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  82:&lt;/span&gt;             WorkItemStore _wiStore = (WorkItemStore)tfs.GetService(&lt;span style="color:#0000ff;"&gt;typeof&lt;/span&gt;(WorkItemStore));&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  83:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  84:&lt;/span&gt;          &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  85:&lt;/span&gt;             XmlDocument globalLists = _wiStore.ExportGlobalLists();&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  86:&lt;/span&gt;             XElement xGlobalLists = XElement.Load(&lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; XmlNodeReader(globalLists));&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  87:&lt;/span&gt;             IEnumerable&amp;lt;XElement&amp;gt; listItemsToDelete = (from listItems &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  88:&lt;/span&gt;                                                            (&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  89:&lt;/span&gt;                                                              (from gl &lt;span style="color:#0000ff;"&gt;in&lt;/span&gt; xGlobalLists.Elements(GLOBAL_LIST_ELEMENT_NAME)&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  90:&lt;/span&gt;                                                               &lt;span style="color:#0000ff;"&gt;where&lt;/span&gt; ((&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;)gl.Attribute(&lt;span style="color:#006080;"&gt;"name"&lt;/span&gt;)).ToUpper() == globalListToPrune.ToUpper()&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  91:&lt;/span&gt;                                                               select gl&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  92:&lt;/span&gt;                                                              ).First&amp;lt;XElement&amp;gt;()&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  93:&lt;/span&gt;                                                            ).Elements(GLOBAL_LIST_MEMBER_ELEMENT_NAME)&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  94:&lt;/span&gt;                                                        &lt;span style="color:#0000ff;"&gt;where&lt;/span&gt; ((&lt;span style="color:#0000ff;"&gt;string&lt;/span&gt;)listItems.Attribute(&lt;span style="color:#006080;"&gt;"value"&lt;/span&gt;)).ToUpper().StartsWith(_buildDefinitionName.ToUpper())&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  95:&lt;/span&gt;                                                        select listItems&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  96:&lt;/span&gt;                                                       );           &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  97:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  98:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;  99:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 100:&lt;/span&gt;             listItemsToDelete.DescendantsAndSelf().Remove&amp;lt;XElement&amp;gt;();&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 101:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 102:&lt;/span&gt;             _wiStore.ImportGlobalLists(xGlobalLists.ToString());&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 103:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 104:&lt;/span&gt;             &lt;span style="color:#0000ff;"&gt;return&lt;/span&gt; isOk;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 105:&lt;/span&gt;             &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 106:&lt;/span&gt;         }&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 107:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 108:&lt;/span&gt;     }&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 109:&lt;/span&gt; }&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 110:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 111:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 112:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 113:&lt;/span&gt;  &lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt; 114:&lt;/span&gt;&amp;nbsp; &lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://blogs.manicprogrammer.com/cs/aggbug.aspx?PostID=2565" width="1" height="1"&gt;</content><author><name>michaelruminer</name><uri>http://blogs.manicprogrammer.com/cs/members/michaelruminer.aspx</uri></author><category term="Team Build" scheme="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/tags/Team+Build/default.aspx" /><category term="Team Build 2008" scheme="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/tags/Team+Build+2008/default.aspx" /><category term="LINQ" scheme="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/tags/LINQ/default.aspx" /></entry><entry><title>$33,000,000 Doesn't Buy What It Used To</title><link rel="alternate" type="text/html" href="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/07/29/33-000-000-doesn-t-buy-what-it-used-to.aspx" /><id>http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/07/29/33-000-000-doesn-t-buy-what-it-used-to.aspx</id><published>2008-07-30T02:47:48Z</published><updated>2008-07-30T02:47:48Z</updated><content type="html">&lt;p&gt;Like everyone else in techdom I had to see if all the bad hype about &lt;a href="http://www.cuil.com" target="_blank"&gt;Cuil&lt;/a&gt; was warranted. I am now torn on whether to pile on or say 'hey it's a beta'. But it doesn't say it's a beta. It should. Like every one else that tried Cuil I had to see what came back when I "Cuiled" myself. It was indeed sad. I have no idea what the hell those pictures are for the results but it makes me almost want to go after them for defaming my name with ludicrous context and unrelated photos. I certainly don't need any help with that as I have been very capable of doing that for myself for years. My first page Cuil results apparently&amp;nbsp; somehow think that I am closely relate to a storage shed. I went to the link and searched for any variation on my name with no luck. I realize this is likely an attempt at associative results but...&amp;nbsp; I can't say I'm impressed that some totally unrelated storage shed comes up... at least the image on that result actually matches its textual context. My best guess is they keyed in on a post for a company I once formed called Expedition Outdoors and that A Plus is similar to Apress and thus an Outdoor shed from A Plus must obviously be related to me. Give me a break. Whatever the relationship they created... it's a bad result to be as number 2. My suspicion. It's a sponsored link and thus why it's the only one with a truly relevant photo. That makes it even more revolting. &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://manicprogrammer.com/cs/blogs/michaelruminer/images/33000000DoesntBuyWhatItUsedTo_1407B/ruminer1.png" target="_blank"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="478" alt="ruminer1" src="http://manicprogrammer.com/cs/blogs/michaelruminer/images/33000000DoesntBuyWhatItUsedTo_1407B/ruminer1_thumb.png" width="644" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Next I decided to click on the image I highlighted below.&lt;/p&gt; &lt;p&gt;&lt;a href="http://manicprogrammer.com/cs/blogs/michaelruminer/images/33000000DoesntBuyWhatItUsedTo_1407B/ruminer2.png" target="_blank"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="478" alt="ruminer2" src="http://manicprogrammer.com/cs/blogs/michaelruminer/images/33000000DoesntBuyWhatItUsedTo_1407B/ruminer2_thumb.png" width="644" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;The following is what I got. Not once but repeatedly.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://manicprogrammer.com/cs/blogs/michaelruminer/images/33000000DoesntBuyWhatItUsedTo_1407B/ruminer3.png" target="_blank"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="315" alt="ruminer3" src="http://manicprogrammer.com/cs/blogs/michaelruminer/images/33000000DoesntBuyWhatItUsedTo_1407B/ruminer3_thumb.png" width="644" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;In a step in the right direction I did get the following when I clicked on some of the other images.&lt;/p&gt; &lt;p&gt;&lt;a href="http://manicprogrammer.com/cs/blogs/michaelruminer/images/33000000DoesntBuyWhatItUsedTo_1407B/ruminer4.png" target="_blank"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="216" alt="ruminer4" src="http://manicprogrammer.com/cs/blogs/michaelruminer/images/33000000DoesntBuyWhatItUsedTo_1407B/ruminer4_thumb.png" width="644" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;The most interesting result which &lt;strong&gt;ODDLY&lt;/strong&gt; was accurate is below. I had to look at the URL twice to see if they were showing me some sort of mangled cache they had created for me. It turns out this page is for real. I have no idea why. I guess YachtChartersMagazine.TV grabs every RSS it can get it's hands on and wraps it in their own garbage. This is text and a quick bio from an article on WS-Attachment that I wrote a number of years back for .NET Developers Journal. I have to say - "Good On Ya" to Cuil for that one. I have never seen this result show up in Google before.&amp;nbsp; Maybe Cuil is in a partnership with YachtChartersMagazine.TV and provide them with dynamic content that comes with the same relevance you get from their stellar *ahem* search engine.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://manicprogrammer.com/cs/blogs/michaelruminer/images/33000000DoesntBuyWhatItUsedTo_1407B/ruminer5.png" target="_blank"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="351" alt="ruminer5" src="http://manicprogrammer.com/cs/blogs/michaelruminer/images/33000000DoesntBuyWhatItUsedTo_1407B/ruminer5_thumb.png" width="644" border="0"&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://blogs.manicprogrammer.com/cs/aggbug.aspx?PostID=2563" width="1" height="1"&gt;</content><author><name>michaelruminer</name><uri>http://blogs.manicprogrammer.com/cs/members/michaelruminer.aspx</uri></author></entry><entry><title>Reflection In Software Development: The meditative type not the metadata type</title><link rel="alternate" type="text/html" href="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/07/27/reflection-in-software-development-the-meditative-type-not-the-metadata-type.aspx" /><id>http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/07/27/reflection-in-software-development-the-meditative-type-not-the-metadata-type.aspx</id><published>2008-07-27T14:33:46Z</published><updated>2008-07-27T14:33:46Z</updated><content type="html">&lt;p&gt;In this post I propose we should do more meditative development and officially begin &lt;u&gt;The Meditative Developer&lt;/u&gt;.&lt;/p&gt; &lt;p&gt;I was just sitting and reflecting on some programming I had recently done. Specifically I was reflecting on some unit tests I had created as models for others against WCF services. Suddenly it hit me, I don't use reflection enough. I am intentionally overloading that term. I don't mean the programmatic metadata reflection such as System.Reflection in C#. I mean meditative reflection. I mean simply sitting and thinking. In our modern world of software development with abbreviated sprints, lean practices and mantras that can often center around &lt;a title="Link to Wikipedia YAGNI entry" href="http://en.wikipedia.org/wiki/You_Ain't_Gonna_Need_It" target="_blank"&gt;YAGNI&lt;/a&gt; I think we often lose site of more holistic actions such as simply reflecting. Formalized sprint retrospectives are not enough. They are just that, formalized. Software development professionals need to feed the soul that lead them into software development to begin with and that means sometimes sitting and thinking.&lt;/p&gt; &lt;p&gt;Our (software development folks) output has become a commodity and as such we have shifted too often into pure manufacturing mode. This shift is very visible in realizing that at least one of our industries most successful development processes, Scrum, takes its foundation from physical lean manufacturing theories. The recognition that much of what we do has been commoditized does not get much stronger than by adopting supply chain practices common to other commodities. What often gets lost in translation is that unlike our physical manufacturing counterparts we have a very low efficiency.&amp;nbsp; We cannot optimize the movements of the machinery with precision. This is not an issue with the process definition, such as Scrum; they are agnostic to this fact and care largely to bring to light the actuality of our inefficiency and plan it into our efforts. The problem is how we adopt these processes. Because we lack this efficiency we must make up for it thinking, reflecting and being more meditative. I don't see this happening.&lt;/p&gt; &lt;p&gt;We too often adopt out the meditative. I see a pattern in which we rely almost exclusively on others to provide a synthesis that will replace our own meditative action. These come in the form of code reviews, shared best practices, proliferation of publishing (present company obviously included) and countless other forms that I should likely &lt;em&gt;think&lt;/em&gt; about. Shared experiences and practices are extremely important but cannot replace our own reflective analysis. I squirm a little at even using the phrase &lt;em&gt;reflective analysis&lt;/em&gt; because meditative development has to be more free flowing than the connotation of&amp;nbsp; the word &lt;em&gt;analysis&lt;/em&gt; provides. We need to sit and simply meditate on a single aspect of what we are working on or ruminate on all those things related to the domain that come into our mind. &lt;/p&gt; &lt;p&gt;I don't see this happening as a whole in our current industry. We produce. We produce quickly and with more efficiency than ever before but on the whole we are leaving the meditative development to others and abdicating our responsibility to provide the proper level of reflection to the problems we face. The problems we encounter and solve on a daily basis deserve more thoughtfulness than we provide them. Its not only a matter of quality for the software but a matter of quality of life. The URL under which I publish my blog is indicative of my observation and personal feelings. I too often feel I am the manic-programmer. The manic-developer has its place. The manic-developer is often a part of the soul of a developer. Who hasn't stayed up through a night to pound out something of interest.&amp;nbsp; It's important to me to have these aspects but I am not taking the time to be the meditative developer that is a big part of my inner programmer. Based on what I have seen as a whole I don't think others are either. This isn't meant to be an abstraction. &lt;/p&gt; &lt;p&gt;When I talk about meditative development I am not speaking in metaphysical terms or squishy abstractions. I have concrete ideas about what it means to be a meditative developer. Perhaps that seems an oxymoron (is oxymoronic a word?), but again I can't deny my nature that helped being me into the world of software development - I'm declarative - and thus define for myself, if not others,&amp;nbsp; meditative development.&amp;nbsp; Thus starts a new series from me and for me entitled &lt;u&gt;The Meditative Developer&lt;/u&gt;.&lt;/p&gt; &lt;p&gt;Think about it, then check back.&lt;/p&gt;&lt;img src="http://blogs.manicprogrammer.com/cs/aggbug.aspx?PostID=2546" width="1" height="1"&gt;</content><author><name>michaelruminer</name><uri>http://blogs.manicprogrammer.com/cs/members/michaelruminer.aspx</uri></author><category term="Software Methodolgies" scheme="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/tags/Software+Methodolgies/default.aspx" /><category term="Personal Improvement" scheme="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/tags/Personal+Improvement/default.aspx" /><category term="Meditative Developer" scheme="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/tags/Meditative+Developer/default.aspx" /></entry><entry><title>Dr. Randy Pausch Added Much</title><link rel="alternate" type="text/html" href="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/07/25/dr-randy-pausch-added-much.aspx" /><id>http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/07/25/dr-randy-pausch-added-much.aspx</id><published>2008-07-25T16:46:16Z</published><updated>2008-07-25T16:46:16Z</updated><content type="html">&lt;p&gt;&lt;a target="_blank"&gt;Dr. Randy Pausch&lt;/a&gt; has died. My condolences to his family. I&amp;nbsp; never knew them. I didn't know the man either but he was an inspiration to me nonetheless.&lt;/p&gt;&lt;img src="http://blogs.manicprogrammer.com/cs/aggbug.aspx?PostID=2515" width="1" height="1"&gt;</content><author><name>michaelruminer</name><uri>http://blogs.manicprogrammer.com/cs/members/michaelruminer.aspx</uri></author><category term="personal" scheme="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/tags/personal/default.aspx" /></entry><entry><title>How Do You Most Often Interact With Team Build?</title><link rel="alternate" type="text/html" href="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/07/11/how-do-you-most-often-interact-with-team-build.aspx" /><id>http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/07/11/how-do-you-most-often-interact-with-team-build.aspx</id><published>2008-07-11T11:08:57Z</published><updated>2008-07-11T11:08:57Z</updated><content type="html">&lt;p&gt;I'm working on a new tool around interacting with team builds for my own use and ideally to make available to others. What are the interactions you most often have or desire with team build? Is it queuing a build, checking which builds have run, looking at the metrics on builds, seeing when a build was last run, changing a build quality, setting retention on a build?&lt;/p&gt; &lt;p&gt;I'm curious because I'd like to have the most needed interactions readily supported in the simple interface to allow for easy access. Shoot me an email and let me know. &lt;/p&gt;&lt;img src="http://blogs.manicprogrammer.com/cs/aggbug.aspx?PostID=2138" width="1" height="1"&gt;</content><author><name>michaelruminer</name><uri>http://blogs.manicprogrammer.com/cs/members/michaelruminer.aspx</uri></author><category term="Team Build" scheme="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/tags/Team+Build/default.aspx" /><category term="Team Build 2008" scheme="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/tags/Team+Build+2008/default.aspx" /></entry><entry><title>NDepend is Better Than Ever Before</title><link rel="alternate" type="text/html" href="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/07/11/ndepend-is-better-than-ever-before.aspx" /><id>http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/07/11/ndepend-is-better-than-ever-before.aspx</id><published>2008-07-11T10:22:37Z</published><updated>2008-07-11T10:22:37Z</updated><content type="html">&lt;p&gt;It's been a while since I took a serious look at &lt;a href="http://www.ndepend.com/" target="_blank"&gt;NDepend&lt;/a&gt;. I didn't realize how long it had been until I started evaluating the product again. Wow! is what I have to say.&amp;nbsp; If you have an significant installed code base this is a must have tool. Outside of the crazy 'blob box thingy' that has always cemented NDepend in my mind as a very atrocious to look at it and that still exists&amp;nbsp; in today's version, it's a slick piece of software with high value. Time to fork out my money and buy a copy.&lt;/p&gt;&lt;img src="http://blogs.manicprogrammer.com/cs/aggbug.aspx?PostID=2137" width="1" height="1"&gt;</content><author><name>michaelruminer</name><uri>http://blogs.manicprogrammer.com/cs/members/michaelruminer.aspx</uri></author><category term="Dev Tools" scheme="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/tags/Dev+Tools/default.aspx" /></entry><entry><title>A Silverlight Foray with TFS- Silverlight 2 is Indeed Good Stuff.</title><link rel="alternate" type="text/html" href="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/07/07/a-silverlight-foray-with-tfs-silverlight-2-is-indeed-good-stuff.aspx" /><id>http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/07/07/a-silverlight-foray-with-tfs-silverlight-2-is-indeed-good-stuff.aspx</id><published>2008-07-07T12:32:48Z</published><updated>2008-07-07T12:32:48Z</updated><content type="html">&lt;p&gt;I am in the midst of a foray into Silverlight for a new tool for TFS. I have dealt with Silverlight on various occasions and have to say that I continue to be impressed. What pleases me most is that I can take my existing knowledge in C# and really put it to use. I have been accused of 'hiding in the middle tier' and for the most part that is exactly correct and I am proud of it. For this reason I came into web application programming kicking and screaming wishing organizations that were clearly all Microsoft shops were building more WinForms rather than providing historically such poor user experience in web apps.&amp;nbsp; I'm a domain/business rules/process type of developer much more than a presentation layer type guy and have historically detested JavaScript as an answer to most any problem even though it was so often the answer. Thus working a lot in Silverlight right now as I tie in some new tools into TFS is a bit daunting for me but also very rewarding. It reminds me of some of the reasons I moved into the Java world back in the 90's to have it then displaced in my life by .NET. &lt;/p&gt; &lt;p&gt;Currently outside of some fears I have about&amp;nbsp; delivery issues in terms of payload size and eventual fragmentation into needing larger and more specific pre-installed supporting libraries (yes I know that isn't supposed to happen but I fear it will devolve into such) for Silverlight in the future I can say that I am I all gung-ho for Silverlight 2. Despite that I can't seem to get my Intellisense to work with me in VS 2008 or in Expression Blend 2.5 Beta I'm happy as a clam. How easily I could wire up a drag and drop action, really a slide action as someone who I can't recall put it, makes me just giddy.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;I'll keep all informed as the TFS project gets underway more. Watch for a first release of what I hope is a productive tool prior to August 16.&lt;/p&gt;&lt;img src="http://blogs.manicprogrammer.com/cs/aggbug.aspx?PostID=2076" width="1" height="1"&gt;</content><author><name>michaelruminer</name><uri>http://blogs.manicprogrammer.com/cs/members/michaelruminer.aspx</uri></author><category term="Silverlight" scheme="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/tags/Silverlight/default.aspx" /><category term="Silverlight 2" scheme="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/tags/Silverlight+2/default.aspx" /></entry><entry><title>Connecticut .NET Developers Group (CTDOTNET) First CodeCamp - August 2008</title><link rel="alternate" type="text/html" href="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/07/04/connecticut-net-developers-group-ctdotnet-first-codecamp-august-2008.aspx" /><id>http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/07/04/connecticut-net-developers-group-ctdotnet-first-codecamp-august-2008.aspx</id><published>2008-07-04T18:34:49Z</published><updated>2008-07-04T18:34:49Z</updated><content type="html">&lt;p&gt;The &lt;a title="Link to CTDOTNET Website" href="http://www.ctdotnet.com/" target="_blank"&gt;Connecticut .NET Developers Group&lt;/a&gt; is having their first ever CodeCamp in Hartford, CT (USA) on August 16th, 2008 from 9am to 5pm at the New Horizons Computer Learning Center (&lt;a title="Directions to the center" href="http://www.newhorizons.com/content/centerSearchResults.aspx?SiteId=25" target="_blank"&gt;directions to the center&lt;/a&gt;) in Bloomfield, CT. If you have never attended a CodeCamp, they just simply rock. It's technical content for technical folks without the fluff and without the marketing spin. It's all about the code. See the &lt;a title="Link To CodeCamp Manifesto" href="http://www.thedevcommunity.org/codecamps/manifesto.aspx" target="_blank"&gt;CodeCamp Manifesto&lt;/a&gt; for the dirty on the premise of a CodeCamp. &lt;/p&gt; &lt;p&gt;The ones in Boston and elsewhere that I have attended have always been great. I'll be excited to participate in the first Connecticut .NET Developers Group CodeCamp see some people I haven't seen in a while and meet some people I should know. I was able to be a part of the first Twin Cities Code Camp and wish I had been a part of the first Boston Code Camp. It's always lots of fun for attendees and presenters. What I really like about the one coming up in Hartford is the allotment of 90 minutes. In Boston, CodeCamp runs two weekend days and you have typically (if I am not mistaken) had about 60 minutes to present. I know from trying to do sessions at conferences and sessions that 50-60 minutes is actually really hard to fit good quality technical information into. 90 minutes sounds just right. &lt;/p&gt; &lt;p&gt;I have a talk I hope to be able to give that I had proposed for Tech Ed for it was not picked up. So I will&amp;nbsp; hopefully get to work it all up and toss it at at this CodeCamp. Woohoo!&lt;/p&gt; &lt;p&gt;So... if you are in the neighborhood don't miss it.&lt;/p&gt;&lt;img src="http://blogs.manicprogrammer.com/cs/aggbug.aspx?PostID=2018" width="1" height="1"&gt;</content><author><name>michaelruminer</name><uri>http://blogs.manicprogrammer.com/cs/members/michaelruminer.aspx</uri></author><category term="CodeCamp" scheme="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/tags/CodeCamp/default.aspx" /></entry><entry><title>What would make Apture better?</title><link rel="alternate" type="text/html" href="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/07/01/what-would-make-apture-better.aspx" /><id>http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/07/01/what-would-make-apture-better.aspx</id><published>2008-07-01T08:59:49Z</published><updated>2008-07-01T08:59:49Z</updated><content type="html">&lt;p&gt;I recently started taking &lt;a title="Link to Apture website" href="http://www.apture.com/" target="_blank"&gt;Apture&lt;/a&gt; for a test drive. I twittered a comment on it stating that I liked it but thought it would likely be a lot of work. Apparently, Theresa at Apture monitors twitters as she dropped me a comment on my blog that asked... &lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;I saw your status message on twitter, actually.&amp;nbsp; Was it as time consuming/difficult as you thought?&amp;nbsp; How could we make it simpler?&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Here is my response. Yes it is as time consuming as I thought. More on that in a bit. First how it could be made simpler. I realize this is a Beta product and Apture is understandably working on getting this out the door in the most agnostic way possible but since you asked.  &lt;ol&gt; &lt;li&gt;I was going to begin with stating that the complete list of FAQ questions should actually have content behind the FAQ. The day I went to install and start using Apture about half the FAQ links were not hyperlinked to anywhere and I was really interested in the one such as 'Is there an Apture API?' I just checked again and now it seems most of the links actually hook you to an answer of some sort though 'Is there an Apture API?' just comes up and tells me "Coming soon...". Out of context the reader may assume that means the API is coming soon but I think it means the answer is coming soon as others questions had the same response.  &lt;li&gt;More clearly state how to create the Apture links. The assumption in the docs is that everyone is using a web browser to generate their posts and thus indicates like 'Just hit 'e' to edit an Apture link'. Hit 'e' where? I'm a pretty technical guy, aging but technical, and it took me a while to figure out that I had to go out to the page after I published and start doing round two of markup to really use the tool. I knew I couldn't hit 'e' inside Windows Live Writer but couldn't figure out where the heck I made these entries. It was very much unclear. I spent a half hour, I assume, puttering around inside the Apture site trying to find a control panel or better explanation of what to do. Nowhere was there a darn screen shot that I could find of actually doing the markup. Only of the results.  &lt;li&gt;&lt;strong&gt;THIS IS A BIG ONE--- I must be able to title the content I embed inside Apture.&lt;/strong&gt;&amp;nbsp; I added an MP3 file from&amp;nbsp; &lt;a title=".NET Rocks website" href="http://www.dotnetrocks.com/" target="_blank"&gt;.NET Rocks&lt;/a&gt; (with permission from .NET Rocks) but as you can see from the screen shot below it shows the physical name of the file on the little blowout window. That means nothing to me much less the casual visitor. There was no way I could find to title the entry. I could add some text description but that is not what shows in the blowout. I need to be able to title the content.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;a href="http://manicprogrammer.com/cs/blogs/michaelruminer/images/WhatwouldmakeApturebetter_4630/image.png" target="_blank"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="484" alt="image" src="http://manicprogrammer.com/cs/blogs/michaelruminer/images/WhatwouldmakeApturebetter_4630/image_thumb.png" width="335" border="0"&gt;&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp; 4. I want to put in a URL that is not searched for media but would simply be a snapshot of the page and link to it. I want an image of that page more like snap.com would give me, but of course without you violating someone's patent. I don't like seeing something like the below to link to a blog or other non media URL. If I am going to have the Apture do-hickey come up I want it to contain nicely formatted links to all the content for that link. See below for what I get now pointing to a blog. I don't like it but can live with it for now. &lt;/p&gt; &lt;p&gt;&lt;a href="http://manicprogrammer.com/cs/blogs/michaelruminer/images/WhatwouldmakeApturebetter_4630/image_3.png" target="_blank"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="465" alt="image" src="http://manicprogrammer.com/cs/blogs/michaelruminer/images/WhatwouldmakeApturebetter_4630/image_thumb_3.png" width="644" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&amp;nbsp; 5. As I mentioned this is a beta but you did ask and you did ask me what I wanted and this is what I want. I want a tie in to Windows Live Writer so that to use Apture I don't have to edit my page twice. Once in Live Writer then post it and mark it up with Apture.&lt;/p&gt; &lt;p&gt;6. Auto links are not enough. I surely hope that part of the goal is context driven media with more insight than just a Google search but that if I link certain videos to a word or phrase you take notice and the next person that does so sees what others have linked to for the same word of phrase. I don't want to reinvent the wheel each time. The feedback loop is important. Just as important, once I link to a phrase for my account if I add that phrase elsewhere in the future and mark it for linkage I want all the content I have ever linked to for that phrase to be included by default- again I don't want to have to generate connections all over again. Perhaps this latter comment happens already- I honestly haven't tried. &lt;strong&gt;UPDATE*** I just tried this after posting and here is what I got. What a relief! &lt;/strong&gt;It's not everything but better than I thought.&lt;/p&gt; &lt;p&gt;&lt;a href="http://manicprogrammer.com/cs/blogs/michaelruminer/images/WhatwouldmakeApturebetter_4630/image_5.png" target="_blank"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="484" alt="image" src="http://manicprogrammer.com/cs/blogs/michaelruminer/images/WhatwouldmakeApturebetter_4630/image_thumb_5.png" width="415" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;7. In line with #6 I want to be able to include some content and mark it is held. To be attached permanently to the link but for other content to be dynamically changing so that more high ranking links to content for the same phrase could displace some content that exists. &lt;/p&gt; &lt;p&gt;8. Along with 6 and 7 I want to lay claim (such as with a concept like &lt;a title="Link to Korby Parnells Claimspace post" href="http://blogs.msdn.com/korbyp/archive/2007/04/19/tagspace-meet-claimspace.aspx" target="_blank"&gt;Claimspace&lt;/a&gt;) to my identity and thus provide an official multi-media set of link recommendations for people that may be linking to me. So they get recommended recent and valid context for my name, blog, website etc.&lt;/p&gt; &lt;p&gt;9.&amp;nbsp; &lt;strong&gt;DID I MENTION? &lt;/strong&gt;Yes, but it is worth mentioning again&lt;strong&gt;-- I DON'T WANT TO HAVE TO MARK UP MY PAGE TWICE AND WANT AN EASY PLUG IN ARCHITECTURE. &lt;/strong&gt;Or at least a Live Writer plug in&lt;strong&gt; &lt;/strong&gt;or API so I can hook it into Live Writer myself.&lt;/p&gt; &lt;p&gt;10. I don't want the response to all these requests to be. 'We plan to do that.' Don't talk to me about it just do that parts you will do in the time you can do them. These are only suggestions after all. I'm not a patient person and lose interest quickly in things not returning value. Not directed at you but more of a general musing-- I wonder how many times a day I must say "I don't want to talk about it anymore. We can either talk about it or we can do it. Let's just go do a part of it and discuss the results"&lt;/p&gt; &lt;p&gt;11. Look at all of the above screen shots. Nowhere can I find a means to allow the reader to click a link or button and get a set of results for a query on content for the same phrase (such as Mike Azocar-- I put this in only to test a feature of Apture) I am linked to. I don't want to link to the world but I'd like to have the world readily available to the user. They should see be able to click through to a search results screen just as I do when adding content. Maybe they can but I don't see it as an intuitive option on any of the above images. For those not using the tool. This is what I see when I click 'Add Related Media'&lt;/p&gt; &lt;p&gt;&lt;a href="http://manicprogrammer.com/cs/blogs/michaelruminer/images/WhatwouldmakeApturebetter_4630/image_4.png"&gt;&lt;img style="border-top-width:0px;border-left-width:0px;border-bottom-width:0px;border-right-width:0px;" height="484" alt="image" src="http://manicprogrammer.com/cs/blogs/michaelruminer/images/WhatwouldmakeApturebetter_4630/image_thumb_4.png" width="451" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;strong&gt;Why Do I not see &lt;/strong&gt;even all the video content I linked to. Did you learn nothing when I linked Mike's name to two videos. You don't show but one of the two. You should have captured that contextual relationship and next time anyone looks up Mike they would at least find everything I linked to. I don't even see everything I linked to. &lt;strong&gt;Oddly- I have come to find out but I am not sure how it is that I can get stuff I linked to in some scenarios and not in others&lt;/strong&gt;(see earlier comments in bold)&lt;strong&gt;.&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&amp;nbsp; 12. When I search for media I want to not have to go to another window to do a REAL search engine search and bring back the results. Let me search right inside the &lt;em&gt;Media Hub&lt;/em&gt; window on any of the major search engines for content. For those of us doing more than just showing videos of &lt;a class="aptureAutolink" title="Link to Wikipedia" href="http://en.wikipedia.org/wiki/Lonelygirl15" target="_blank"&gt;Lonely Girl 15&lt;/a&gt; (btw... I just decorated the prior link with the autolink class... let's see how it works when I publish) or a cat playing with string we will often not find our content on YouTube.&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;I could go on. All in all I really like the premise and the look. I do hope that it becomes less burdensome and more contextually valid based on applying the contextual relationships all the users create. I think it looks smart but I am not certain if enough 'real' people have used the software. It seems evidenced from the very limited search function that this has not been put through its paces enough with day to day users. I expect that will come.&amp;nbsp; I just hope you have some kick ass database guys and smart folks to make the contextual linking be what I would want it to be if I were building the tool.&lt;/p&gt; &lt;p&gt;To others, not Theresa, try out Apture. If not for you then for me. I want your contextual connections to content. BTW... Theresa, I want microformats and semantics.&lt;/p&gt;&lt;img src="http://blogs.manicprogrammer.com/cs/aggbug.aspx?PostID=1921" width="1" height="1"&gt;</content><author><name>michaelruminer</name><uri>http://blogs.manicprogrammer.com/cs/members/michaelruminer.aspx</uri></author><category term="apture" scheme="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/tags/apture/default.aspx" /><category term="twitter" scheme="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/tags/twitter/default.aspx" /></entry><entry><title>Visual Studio 2008 DB Pro GDR CTP and max model size</title><link rel="alternate" type="text/html" href="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/06/30/visual-studio-2008-db-pro-gdr-ctp-and-max-model-size.aspx" /><id>http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/06/30/visual-studio-2008-db-pro-gdr-ctp-and-max-model-size.aspx</id><published>2008-06-30T11:30:09Z</published><updated>2008-06-30T11:30:09Z</updated><content type="html">&lt;p&gt;If you are using the Visual Studio 2008 DB Pro GDR CTP (that's a mouthful) you may run into a schema model size limitation. This will seemingly be resolved in the CTP 15 release expected toward the mid to end of July but until them if you happen to be using a database that generates a&amp;nbsp; model greater than 257MB you're out of luck. The following error will come up: The database file is larger than then configured maximum database size. This setting takes effect on the first concurrent database connection only. [ Required Max Database Size (in MB; 0 if unknown) = 257 ]&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;&lt;a href="http://manicprogrammer.com/cs/blogs/michaelruminer/images/VisualStudio2008DBProGDRCTPandmaxmodelsi_697C/dbfilelarger.jpg"&gt;&lt;img style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="267" alt="dbfile larger" src="http://manicprogrammer.com/cs/blogs/michaelruminer/images/VisualStudio2008DBProGDRCTPandmaxmodelsi_697C/dbfilelarger_thumb.jpg" width="605" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;When I first found this message staring at me on my screen I googled it and found the a&amp;nbsp; few &lt;a title="Link to a post indicating about MaxDatabase in CE" href="http://blogs.msdn.com/sqlservercompact/archive/2007/06/13/the-story-of-max-database-size-connection-string-parameter.aspx" target="_blank"&gt;posts&lt;/a&gt; all referring to SQL Server CE. I knew that the DB Pro GDR was a significant architectural change from the prior final release of DB Pro and that the design DB had gone off into the sunset; yet, I never suspected SQL Server CE had replaced it. It did not give me a warm fuzzy when my primary concern had been around scalability in the schema. But I also know very little on SQL Server CE and told myself I need to not think of Compact Edition as less performant for this situation (I certainly plan to investigate CE much more closely). I poked around in the options for the database settings in Visual Studio but found nothing. I may have looked in the registry but it turns out that regardless I would not have found a fix. I posted out on the &lt;a title="Link to Michael Ruminer's post on forurms" href="http://forums.microsoft.com/msdn/ShowPost.aspx?PostID=3533678&amp;amp;SiteID=1" target="_blank"&gt;MSDN Forums&lt;/a&gt; and received the following back from &lt;a title="Gert Draper's blog" href="http://blogs.msdn.com/gertd/" target="_blank"&gt;Gert Draper&lt;/a&gt; , a Group Engineering Manager at Microsoft in the Team System world and from my experiences in the past an all around good guy.&lt;/p&gt; &lt;p&gt;Gert says:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;We know what the scenario is, we create the model database with a max 4GB limit, secondary connections do not specify the max, there seems to be a behavioral change in SQL CE3.5 where it now uses the default size of 256MB when not specified in the secondary connection, instead of inheriting from the connection that created and opened the database to begin with. &lt;/em&gt; &lt;p&gt;&lt;em&gt;More info on this can be found here: &lt;/em&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/sqlservercompact/archive/2007/06/13/the-story-of-max-database-size-connection-string-parameter.aspx"&gt;&lt;em&gt;http://blogs.msdn.com/sqlservercompact/archive/2007/06/13/the-story-of-max-database-size-connection-string-parameter.aspx&lt;/em&gt;&lt;/a&gt; &lt;p&gt;&lt;em&gt;Right now I do not have a work around.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt; Gert went on to tell me later that this is expected to be resolved in the CTP 15 that should be available around mid to late July (2008). Gert and I had already shared this specific database schema&amp;nbsp; in the past because under the current release version it simply will not load 75% of the time because of the current architecture of the DB Pro SKU. It just runs out of memory on a 3 GB machine and when it does load due to all the attempted real time background compile it becomes unusable when trying to edit the objects in the project.&amp;nbsp; &lt;/p&gt; &lt;p&gt;I have been patiently but with great anticipation awaiting this GDR as my expectations were high that it would solve &lt;em&gt;all &lt;/em&gt;my problems for me in terms of scaling to meet a very large database schema. The GDR is only a CTP and thus I will hold my determination for when it is released. I have thus far seen some improvements but I have lowered my personal expectations quite a bit from what they were and have become somewhat resigned that in managing this sort of database (having in excess of 13,000 stored procedures) in DB Pro&amp;nbsp; will prove to just not be doable even on this coming release. &lt;/p&gt; &lt;p&gt;I hope, I hope I am wrong. &lt;/p&gt;&lt;img src="http://blogs.manicprogrammer.com/cs/aggbug.aspx?PostID=1914" width="1" height="1"&gt;</content><author><name>michaelruminer</name><uri>http://blogs.manicprogrammer.com/cs/members/michaelruminer.aspx</uri></author><category term="Visual Studio 2008 Database Edition GDR June CTP" scheme="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/tags/Visual+Studio+2008+Database+Edition+GDR+June+CTP/default.aspx" /><category term="Data Dude" scheme="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/tags/Data+Dude/default.aspx" /><category term="DBPro" scheme="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/tags/DBPro/default.aspx" /></entry><entry><title>Want to feel good about your code???</title><link rel="alternate" type="text/html" href="http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/06/28/want-to-feel-good-about-your-code.aspx" /><id>http://blogs.manicprogrammer.com/cs/blogs/michaelruminer/archive/2008/06/28/want-to-feel-good-about-your-code.aspx</id><published>2008-06-28T16:10:37Z</published><updated>2008-06-28T16:10:37Z</updated><content type="html">&lt;p&gt;Want to feel good about your code? I'm migrating some legacy .NET 1.1 code (that no one still with the organization wrote) into the latest framework and keep running into method after method that looks like the below.&amp;nbsp; Hmm... If OK then do this. Else just do the same thing.&lt;/p&gt; &lt;div style="border-right:gray 1px solid;padding-right:4px;border-top:gray 1px solid;padding-left:4px;font-size:8pt;padding-bottom:4px;margin:20px 0px 10px;overflow:auto;border-left:gray 1px solid;width:97.5%;cursor:text;max-height:200px;line-height:12pt;padding-top:4px;border-bottom:gray 1px solid;font-family:consolas, 'Courier New', courier, monospace;background-color:#f4f4f4;"&gt; &lt;div style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:white;border-bottom-style:none;"&gt;&lt;span style="color:#606060;"&gt;   1:&lt;/span&gt; &lt;span style="color:#0000ff;"&gt;If&lt;/span&gt; Result = SQLResults.OK &lt;span style="color:#0000ff;"&gt;Then&lt;/span&gt;&lt;/pre&gt;&lt;pre style="padding-right:0px;padding-left:0px;font-size:8pt;padding-bottom:0px;margin:0em;overflow:visible;width:100%;color:black;border-top-style:none;line-height:12pt;padding-top:0px;font-family:consolas, 'Courier New', courier, monospace;border-right-style:none;border-left-style:none;background-color:#f4f4f4;border-bottom-style:none;"&gt;&lt;