<feed version="0.3" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns="http://purl.org/atom/ns#" xml:lang="en-US"><title>Geek Noise</title><link rel="alternate" type="text/html" href="http://www.peterprovost.org/" /><tagline type="text/html">Rants, rambles, news and notes from Peter Provost</tagline><id>http://www.peterprovost.org/</id><author><name>Peter Provost</name><url>http://www.peterprovost.org/</url></author><generator url="http://scottwater.com/blog" version=".Text Version 0.95.2005.109">.Text</generator><modified>2008-05-02T10:15:56Z</modified><entry><title>VSTS CTP Getting Noticed</title><link rel="alternate" type="text/html" href="http://www.peterprovost.org/archive/2008/05/02/24320.aspx" /><id>http://www.peterprovost.org/archive/2008/05/02/24320.aspx</id><created>2008-05-02T10:16:00Z</created><issued>2008-05-02T18:16:00-08:00</issued><modified>2008-05-02T10:16:00Z</modified><content type="text/html" mode="escaped">&lt;p&gt;I know I've been kinda quiet since moving to VSTS Team Architect, but getting settled into a new job and moving your family can be a bit time consuming.&lt;/p&gt; &lt;p&gt;However, I was taking a break looking at some blogs and stuff and found a few people talking about some of the new stuff in &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=65D0E3BD-9DF3-421A-804F-8F01BD90F0B4&amp;amp;displaylang=en"&gt;our most recent CTP&lt;/a&gt;! &lt;/p&gt; &lt;p&gt;Very cool indeed and I wanted to share them with you.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://visualstudiomagazine.com/columns/article.aspx?editorialsid=2583"&gt;Visual Studio Magazine: Doing Architecture with Team System Rosario&lt;/a&gt; by Jeff Levinson&lt;/li&gt; &lt;li&gt;&lt;a href="http://www.clemensreijnen.nl/post/2008/04/UML%2c-the-Most-Wanted-Feature-in-Team-Architect.aspx"&gt;UML, the Most Wanted Feature in Team Architect&lt;/a&gt; by Clemens Reinjnen&lt;/li&gt; &lt;li&gt;&lt;a href="http://robkuijt.nl/index.php?entry=entry080423-135750"&gt;Generating Test Cases from Activity Diagrams Part 1&lt;/a&gt; and &lt;a href="http://robkuijt.nl/index.php?entry=entry080426-113932"&gt;Part 2&lt;/a&gt; by Rob Kuijt&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;It got me excited to see people talking about our new stuff. I promise I'll be writing more about it soon... just give me some time.&lt;/p&gt;&lt;img src ="http://www.peterprovost.org/aggbug/24320.aspx" width = "1" height = "1" /&gt;</content></entry><entry><title>MVP Talks About VSTS Architect Edition</title><link rel="alternate" type="text/html" href="http://www.peterprovost.org/archive/2008/04/17/24300.aspx" /><id>http://www.peterprovost.org/archive/2008/04/17/24300.aspx</id><created>2008-04-17T11:09:00Z</created><issued>2008-04-17T19:09:00-08:00</issued><modified>2008-04-17T11:09:00Z</modified><content type="text/html" mode="escaped">&lt;p&gt;I ran across &lt;a href="http://blog.dotnetspeech.net/archive/2008/04/16/rosario-rocks-architecture-edition-again.aspx"&gt;this post by Jeff Certain&lt;/a&gt; on his blog talking about the Rosario release of VSTS Architect Edition. Sounds like we're moving in a positive direction:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;I attended the Rosario Architecture Edition preview yesterday. Frankly, I'm two orders of magnitude more excited about this than I am about anything else I've seen here at the summit yet.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Woot!&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f20e2f41-3378-4a17-a3cb-80d2de490ad4" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/VSTS" rel="tag"&gt;VSTS&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Architect" rel="tag"&gt;Architect&lt;/a&gt;,&lt;a href="http://technorati.com/tags/MVP" rel="tag"&gt;MVP&lt;/a&gt;&lt;/div&gt;&lt;img src ="http://www.peterprovost.org/aggbug/24300.aspx" width = "1" height = "1" /&gt;</content></entry><entry><title>xUnit.net 1.0 RC3 Released Today</title><link rel="alternate" type="text/html" href="http://www.peterprovost.org/archive/2008/04/10/24284.aspx" /><id>http://www.peterprovost.org/archive/2008/04/10/24284.aspx</id><created>2008-04-10T11:23:00Z</created><issued>2008-04-10T19:23:00-08:00</issued><modified>2008-04-10T11:23:00Z</modified><content type="text/html" mode="escaped">&lt;p&gt;See Brad Wilson's post: &lt;a title="http://bradwilson.typepad.com/blog/2008/04/xunitnet-10-rc3.html" href="http://bradwilson.typepad.com/blog/2008/04/xunitnet-10-rc3.html"&gt;http://bradwilson.typepad.com/blog/2008/04/xunitnet-10-rc3.html&lt;/a&gt;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:0cdc5d08-84c6-49c0-8341-ae8e2044cf08" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/NUnit" rel="tag"&gt;NUnit&lt;/a&gt;,&lt;a href="http://technorati.com/tags/xUnit" rel="tag"&gt;xUnit&lt;/a&gt;,&lt;a href="http://technorati.com/tags/TDD" rel="tag"&gt;TDD&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Agile" rel="tag"&gt;Agile&lt;/a&gt;&lt;/div&gt;&lt;img src ="http://www.peterprovost.org/aggbug/24284.aspx" width = "1" height = "1" /&gt;</content></entry><entry><title>AaronX is blogging!</title><link rel="alternate" type="text/html" href="http://www.peterprovost.org/archive/2008/03/27/24252.aspx" /><id>http://www.peterprovost.org/archive/2008/03/27/24252.aspx</id><created>2008-03-27T09:08:00Z</created><issued>2008-03-27T17:08:00-08:00</issued><modified>2008-03-27T09:08:00Z</modified><content type="text/html" mode="escaped">&lt;p&gt;I never thought I'd see the day, but my good friend AaronX has finally started blogging. He and used to have a blog-like site that was just cool links that we found, little or no commentary and this this his new take on that idea.&lt;/p&gt; &lt;p&gt;&lt;a title="http://denversurfreport.blogspot.com/" href="http://denversurfreport.blogspot.com/"&gt;http://denversurfreport.blogspot.com/&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Enjoy!&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:f2d40d09-0357-4221-af90-036af7c9cb11" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/AaronX" rel="tag"&gt;AaronX&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Denver" rel="tag"&gt;Denver&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Music" rel="tag"&gt;Music&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Movies" rel="tag"&gt;Movies&lt;/a&gt;&lt;/div&gt;&lt;img src ="http://www.peterprovost.org/aggbug/24252.aspx" width = "1" height = "1" /&gt;</content></entry><entry><title>Edjez is back!</title><link rel="alternate" type="text/html" href="http://www.peterprovost.org/archive/2008/03/07/24191.aspx" /><id>http://www.peterprovost.org/archive/2008/03/07/24191.aspx</id><created>2008-03-07T07:34:00Z</created><issued>2008-03-07T15:34:00-08:00</issued><modified>2008-03-07T07:34:00Z</modified><content type="text/html" mode="escaped">&lt;p&gt;My good friend Eduardo Jezierski has returned to the blog-o-sphere. &lt;a href="http://edjez.instedd.org/"&gt;His new blog&lt;/a&gt; is up and running and his first post explains what he's been doing at &lt;a href="http://www.instedd.org/"&gt;InSTEDD&lt;/a&gt; since leaving Microsoft.&lt;/p&gt; &lt;p&gt;He's promised me that he'll blog about all kinds of interesting technology and how they're using it for really cool humanitarian efforts around the world.&lt;/p&gt; &lt;p&gt;Good to see you Ed and good luck on your mission!&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:4c7dcdb9-bd77-421a-bef2-5bdf9d9e8eef" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/edjez" rel="tag"&gt;edjez&lt;/a&gt;,&lt;a href="http://technorati.com/tags/instedd" rel="tag"&gt;instedd&lt;/a&gt;&lt;/div&gt;&lt;img src ="http://www.peterprovost.org/aggbug/24191.aspx" width = "1" height = "1" /&gt;</content></entry><entry><title>List of musical works in unusual time signatures</title><link rel="alternate" type="text/html" href="http://www.peterprovost.org/archive/2008/02/26/24163.aspx" /><id>http://www.peterprovost.org/archive/2008/02/26/24163.aspx</id><created>2008-02-26T11:59:00Z</created><issued>2008-02-26T19:59:00-08:00</issued><modified>2008-02-26T11:59:00Z</modified><content type="text/html" mode="escaped">&lt;p&gt;Haha... I love the Internet sometimes. I was sitting here in my office listening to the Tool song Jambi, tapping my foot along, counting the beats on a background thread as I am wont to do...&lt;/p&gt; &lt;p&gt;"Hmm... this is in 9/4 time signature. COOL!"&lt;/p&gt; &lt;p&gt;You see, I've always loved finding songs that have unusual time signatures. One quick search later and I found this little page over on Answers.com:&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.answers.com/topic/list-of-musical-works-in-unusual-time-signatures"&gt;List of musical works in unusual time signatures&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Cool. I'm gonna have to dig through my music for some of those.&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:801d7c67-4171-4840-aa78-78a6bfae0c60" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Music" rel="tag"&gt;Music&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Tool" rel="tag"&gt;Tool&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Time%20Signatures" rel="tag"&gt;Time Signatures&lt;/a&gt;&lt;/div&gt;&lt;img src ="http://www.peterprovost.org/aggbug/24163.aspx" width = "1" height = "1" /&gt;</content></entry><entry><title>Agile Chronicles: Leading Volunteers with Agility</title><link rel="alternate" type="text/html" href="http://www.peterprovost.org/archive/2008/02/26/24162.aspx" /><id>http://www.peterprovost.org/archive/2008/02/26/24162.aspx</id><created>2008-02-26T10:36:00Z</created><issued>2008-02-26T18:36:00-08:00</issued><modified>2008-02-26T10:36:00Z</modified><content type="text/html" mode="escaped">&lt;p&gt;I found this nice article today in this month's Agile Chronicles: &lt;/p&gt; &lt;p&gt;&lt;a href="http://www.agilechronicles.com/blog/2008/02/leading-volunte.html"&gt;Agile Chronicles: Leading Volunteers with Agility&lt;/a&gt; &lt;/p&gt; &lt;p&gt;I found it particularly relevant because I am an officer in a club and have often felt that I could better apply some of the agile values to that organization and not just to my work as in software development.&lt;/p&gt; &lt;p&gt;Enjoy!&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:9a1c4734-5b80-4298-ad77-ac54cca841df" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Agile" rel="tag"&gt;Agile&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Volunteer" rel="tag"&gt;Volunteer&lt;/a&gt;,&lt;a href="http://technorati.com/tags/Management" rel="tag"&gt;Management&lt;/a&gt;&lt;/div&gt;&lt;img src ="http://www.peterprovost.org/aggbug/24162.aspx" width = "1" height = "1" /&gt;</content></entry><entry><title>Changes for me</title><link rel="alternate" type="text/html" href="http://www.peterprovost.org/archive/2008/02/25/24155.aspx" /><id>http://www.peterprovost.org/archive/2008/02/25/24155.aspx</id><created>2008-02-25T11:55:00Z</created><issued>2008-02-25T19:55:00-08:00</issued><modified>2008-02-25T11:55:00Z</modified><content type="text/html" mode="escaped">&lt;p&gt;Someone pointed out today that I hadn't been blogging lately (guilty as charged) and that I hadn't blogged anything at all about recent changes in my work life.&lt;/p&gt; &lt;p&gt;A year ago, various personal and family issues led me to make a promise to my wife that I would move her back to Denver. We've enjoyed Seattle a lot, but with her Lupus and other things, she needed to be closer to her family. This led me to start looking around for opportunities that would let me get back to Denver.&lt;/p&gt; &lt;p&gt;Long story short, I have moved on from P&amp;amp;P and am now working as a Program Manager on the Visual Studio Team System Architect Edition product. This role will allow me to live in Denver and work remotely most of the time. I still plan to be back in the Redmond area every month or two, though.&lt;/p&gt; &lt;p&gt;We're doing some really exciting stuff on the VSTS-AE product at the moment that I'm really looking forward to sharing with you all soon, so please stay tuned. I think I feel my blogging genes firing up again. :)&lt;/p&gt;&lt;img src ="http://www.peterprovost.org/aggbug/24155.aspx" width = "1" height = "1" /&gt;</content></entry><entry><title>Windows PowerShell Quick Start</title><link rel="alternate" type="text/html" href="http://www.peterprovost.org/archive/2008/02/25/24154.aspx" /><id>http://www.peterprovost.org/archive/2008/02/25/24154.aspx</id><created>2008-02-25T11:45:00Z</created><issued>2008-02-25T19:45:00-08:00</issued><modified>2008-02-25T11:45:00Z</modified><content type="text/html" mode="escaped">&lt;p&gt;Not sure how I missed this before, but I was looking for something today and this popped up in my search engine. &lt;/p&gt; &lt;p&gt;&lt;a href="http://channel9.msdn.com/wiki/default.aspx/Channel9.WindowsPowerShellQuickStart"&gt;Channel9 Wiki: Windows PowerShell Quick Start&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Perfect!&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:264dfd0d-8952-40a9-ab8f-aa6b809dd507" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/PowerShell" rel="tag"&gt;PowerShell&lt;/a&gt;&lt;/div&gt;&lt;img src ="http://www.peterprovost.org/aggbug/24154.aspx" width = "1" height = "1" /&gt;</content></entry><entry><title>Happy Birthday Sis!</title><link rel="alternate" type="text/html" href="http://www.peterprovost.org/archive/2008/01/14/24005.aspx" /><id>http://www.peterprovost.org/archive/2008/01/14/24005.aspx</id><created>2008-01-14T19:52:00Z</created><issued>2008-01-15T03:52:00-08:00</issued><modified>2008-01-14T19:52:00Z</modified><content type="text/html" mode="escaped">&lt;p&gt;Happy Birthday to my wonderful sister Michelle. You are a great sis, a great mom, smart business woman and a good friend. Hopefully we can all get back together soon. Love you. &lt;/p&gt; &lt;p&gt;--Peter&lt;/p&gt;&lt;img src ="http://www.peterprovost.org/aggbug/24005.aspx" width = "1" height = "1" /&gt;</content></entry><entry><title>Heroes and Villains</title><link rel="alternate" type="text/html" href="http://www.peterprovost.org/archive/2008/01/14/24004.aspx" /><id>http://www.peterprovost.org/archive/2008/01/14/24004.aspx</id><created>2008-01-14T14:23:00Z</created><issued>2008-01-14T22:23:00-08:00</issued><modified>2008-01-14T14:23:00Z</modified><content type="text/html" mode="escaped">&lt;p&gt;Recently I was involved in a discussion of teams and roles and whether the 'hero model' is healthy.&lt;/p&gt; &lt;p&gt;In general parlance, the hero model is one where we encourage people to be superstars, to stand out, and to save the day. This is a common model in many companies and many people attribute individual compensation models as being the culprit.&lt;/p&gt; &lt;p&gt;Here is how the thinking goes. When you recognize and reward people for standout, rock-star, save-the-day behaviors, what you are really doing is rewarding people for not being team players. Or perhaps they are team players, but they are on a team that is more like a figure skating team than a basketball team. On a figure skating team, each person is individually judged and the scores are combined to create the team score. The 'team' doesn't actually work together to achieve their final score.&lt;/p&gt; &lt;p&gt;A basketball team, however, doesn't work this way. It is more like a machine where each moving part tightly meshes with the other pieces in the system. When one part fails or under performs, the entire team fails or under performs. As the old saying goes, "A chain is only as strong as its weakest link."&lt;/p&gt; &lt;p&gt;Most agile-minded folks like the idea of basketball teams and don't really like the idea of figure skating teams. Most agilists will talk about teams as if they are organisms. They will use metaphors like family, system, machine, and others, that show how the parts are all working together. Many non-agile folks will talk about team members as resources and describe the team in language that make it sound like the component parts are replaceable and interchangeable.&lt;/p&gt; &lt;p&gt;Now, lets get back to the idea of Heroes. The gymnastics team loves heroes. In fact, they depend on heroes. The team may all be made up of heroes in the ideal case, but there is always the poor schmuck who doesn't have a good day, who falls, or who gets hit in the kneecap by an opponent's boyfriend.&lt;/p&gt; &lt;p&gt;Let's look at that a bit closer. The opponent in the famous kneecap case was a fellow team member. Was a Hero. She was heralded, along with the kneecapped skater, as one of the next great skating Heroes of her generation. But I would propose, and most would agree, that she was not a Hero. She wasn't one before the kneecapping and she obviously wasn't one after the kneecapping. She was a Villain.&lt;/p&gt; &lt;p&gt;If you think back to your comic book lore, there are some interesting characteristics of Heroes and Villains. Heroes are almost always reluctant. They don't want to have to do what they want to do. For the most part, they just want to be regular folks. They don't want to be different, or shining; they want to be just like everyone else. They'd rather be on the team of humanity than outside it.&lt;/p&gt; &lt;p&gt;Villains in the other hand love to light up. Love to be noticed and get attention. In fact, for most of them, that is their number one goal. They will engineer situations to get attention, to look better than the other guy and.. to get paid.&lt;/p&gt; &lt;p&gt;So here's my assertion as it related to software development teams: The Hero Model doesn't exist. What does exist is more properly named the Villain Model. Organizations that recognize, reward and encourage people to stand-out will create a system on Villains. We are engineers, and it is our nature to want to hack our way around obstacles to success. It is what we do. Presented with a system like we're discussing here, some folks will eventually figure out that to 'get ahead' you have to compete with your team members. You have to stand-out, be a Hero, save-the-day, get the bonus, the gold star, the promotion.&lt;/p&gt; &lt;p&gt;But as I said, when you set out to be a Hero, you are almost always a Villain! You will go after the best projects, leaving the trash for others. You'll sign up for the best work items, leaving the bugs for lesser mortals. You'll avoid pair programming, because that is sharing the glory. You'll try to 'own' key pieces of the system to protect your asset base. Some people, as we have seen in the figure skating story, will actually attempt to undermine their competitors by kneecapping them. Remember, Heroes are reluctant.&lt;/p&gt; &lt;p&gt;So... are you in an organization that rewards kneecapping villains? Are you a kneecapper yourself? If you aren't, do you know who is?&lt;/p&gt;&lt;img src ="http://www.peterprovost.org/aggbug/24004.aspx" width = "1" height = "1" /&gt;</content></entry><entry><title>P&amp;amp;P Composite Application Guidance for WPF</title><link rel="alternate" type="text/html" href="http://www.peterprovost.org/archive/2007/11/13/23778.aspx" /><id>http://www.peterprovost.org/archive/2007/11/13/23778.aspx</id><created>2007-11-13T08:21:00Z</created><issued>2007-11-13T16:21:00-08:00</issued><modified>2007-11-13T08:21:00Z</modified><content type="text/html" mode="escaped">&lt;p&gt;I completely forgot to blog this a couple of weeks ago, but Glenn Block, Product Manager for our UX/Client work, recently announced our plans for providing guidance (ala Composite UI App Block) for WPF applications.&lt;/p&gt; &lt;p&gt;A few important things from Glenn's post for those familiar with CAB and our other assets in this space:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;strong&gt;What is WPF Composite Client?&lt;/strong&gt; &lt;p&gt;This is not a&amp;nbsp; new version of CAB . It is an entirely new&amp;nbsp; set of&amp;nbsp; libraries and guidance,&amp;nbsp; built from the ground&amp;nbsp; up, targeting development of new WPF Composite applications.&amp;nbsp; We'll be working with both the UIFX and WPF teams, the same people who build the platform.  &lt;p&gt;We are&amp;nbsp; not discarding everything that we did in the client space and starting from scratch. We've done a lot of work around patterns such as Modularity (composition), Services, Dependency injection, Event Brokering,&amp;nbsp; etc.&amp;nbsp; These concepts are&amp;nbsp; essential for&amp;nbsp; building Composite applications&amp;nbsp; and we will carry&amp;nbsp; them forward&amp;nbsp; into the new guidance.&amp;nbsp; However, you should expect their manifestations to be very different than what&amp;nbsp; you see today in CAB.&amp;nbsp; We're not changing the APIs for fun. We think there are&amp;nbsp; numerous compelling reasons&amp;nbsp; to do so:  &lt;ol&gt; &lt;li&gt;&lt;strong&gt;CAB was not built to support WPF.&lt;/strong&gt;&amp;nbsp; While you can get a n&amp;nbsp; application to work in WPF&amp;nbsp; using some flavor of CAB , you can't make use of WPF's full functionality. WPF is an inherently different paradigm than WinForms. For example,&amp;nbsp; RoutedEvents in WPF are entirely different than WinForm Events. Controls in WPF are look-less while in Win Forms controls have a specific look and feel, etc. &lt;/li&gt; &lt;li&gt;&lt;strong&gt;WPF does not offer the "Drag" and "Drop" Win Forms development experience.&lt;/strong&gt; CAB&amp;nbsp; development scenarios depend upon the rich tooling and productivity experience provided by Visual Studio.&amp;nbsp; The WPF developer experience is entirely different&amp;nbsp; and incompatible.&amp;nbsp; We feel that customers&amp;nbsp; will not succeed in mechanically migrating their existing WinForms applications to WPF&amp;nbsp; and should not try. There are no upgrade wizards&amp;nbsp; such as the VB6 to VB.NET migration tools.&amp;nbsp; The transition from WinForms to WPF requires substantial effort and most developers face a steep learning curve. For these&amp;nbsp; reasons, the new offering&amp;nbsp; will not focus on migration scenarios. &lt;/li&gt; &lt;li&gt;&lt;strong&gt;We've learned.&lt;/strong&gt; Over the years we've&amp;nbsp; received&amp;nbsp; great&amp;nbsp; feedback , positive and negative,&amp;nbsp; on&amp;nbsp; our CAB implementation.&amp;nbsp; We've heard&amp;nbsp; many times&amp;nbsp; that&amp;nbsp; it&amp;nbsp; is too heavy,&amp;nbsp; too complicated, too tightly coupled, too hard to grasp, etc.&amp;nbsp; Acropolis evaluators have provided new insights and suggested new approaches. We think the best way to address the concerns and tackle the new ideas -- perhaps the only way -- is with a clean break.&amp;nbsp; &lt;/li&gt; &lt;li&gt;&lt;strong&gt;Win Forms is not dead.&lt;/strong&gt; I've actually had emails from customers saying that Win Forms was being retired this year . This myth must be dispelled. Win Forms&amp;nbsp; is very much alive and there are future investments in Win Forms yet to come. Win Forms is the recommended breadth solution for LOB application development for the foreseeable future. &lt;/li&gt;&lt;/ol&gt;&lt;/blockquote&gt; &lt;p&gt;Read the rest of Glenn's post here: &lt;a title="http://blogs.msdn.com/gblock/archive/2007/10/26/wpf-composite-client-guidance-it-s-coming.aspx" href="http://blogs.msdn.com/gblock/archive/2007/10/26/wpf-composite-client-guidance-it-s-coming.aspx"&gt;http://blogs.msdn.com/gblock/archive/2007/10/26/wpf-composite-client-guidance-it-s-coming.aspx&lt;/a&gt;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:d6a822bf-544a-4842-bf23-92bf9403b309" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags:  		&lt;a href="http://technorati.com/tags/P&amp;amp;P/" rel="tag"&gt;P&amp;amp;P&lt;/a&gt; 		,  		&lt;a href="http://technorati.com/tags/CAB/" rel="tag"&gt;CAB&lt;/a&gt; 		,  		&lt;a href="http://technorati.com/tags/WPF/" rel="tag"&gt;WPF&lt;/a&gt; 		&lt;/div&gt;&lt;img src ="http://www.peterprovost.org/aggbug/23778.aspx" width = "1" height = "1" /&gt;</content></entry><entry><title>TDD with PowerShell - Mocking Things</title><link rel="alternate" type="text/html" href="http://www.peterprovost.org/archive/2007/11/12/23757.aspx" /><id>http://www.peterprovost.org/archive/2007/11/12/23757.aspx</id><created>2007-11-12T08:04:00Z</created><issued>2007-11-12T16:04:00-08:00</issued><modified>2007-11-12T08:04:00Z</modified><content type="text/html" mode="escaped">&lt;p&gt;Recently, I’ve been dabbling with doing TDD in PowerShell. I think there may be a TDD Framework brewing in my head, but at this point I haven't done enough to figure out what such a framework would look like. Often I find that the functions I’m writing depend heavily on built-in cmdlets and BCL types and there can be issues mocking them out when the underlying .NET type isn’t easy to mock out. This isn’t so much an issue with PS as it is an issue with .NET, but since PS is very close to the edge of the world (where the code touches the user), it can be hard to mock.  &lt;p&gt;That said, as with most dynamic scripting evnironments, you can mock out a lot of things. Suppose you want to test a function that depends on get-childitem. Because functions evaluate before cmdlets, you can actually replace it by defining a function with that name: &lt;pre&gt;&lt;font color="blue"&gt;function&lt;/font&gt; &lt;font color="#2b91af"&gt;get-childitem&lt;/font&gt;() 
{ 
   &lt;font color="blue"&gt;return&lt;/font&gt; @()
} &lt;/pre&gt;
&lt;p&gt;Now you have a naked stub get-childitem that returns an empty array. All is good so far. Next you need a gci that returns a single FileInfoObject and for your test you want to have the “archive” bit set on this file. You try to create a new replacement function for get-childitem: &lt;pre&gt;&lt;font color="blue"&gt;function&lt;/font&gt; &lt;font color="#2b91af"&gt;get-childitem&lt;/font&gt;() 
{ 
   &lt;font color="#35687d"&gt;$fi&lt;/font&gt; = &lt;font color="#2b91af"&gt;new-object&lt;/font&gt; System.IO.FileInfo(“bogus.txt”) 
   &lt;font color="#35687d"&gt;$fi&lt;/font&gt;.Attributes = [System.IO.FileAttributes]::Archive 
} 
&lt;/pre&gt;
&lt;p&gt;But at this point you discover that you can’t set the Archive bit, because the file doesn’t exist. 
&lt;p&gt;This is actually a common problem we run into when we TDD up against another API that isn’t mock friendly. In an OO language like C#, I will typically wrap it up in another class &amp;amp; interface that I own and then mock out the interface for my code. This is do-able in PS, but a little more complicated because you may have to implement a fair amount of extra code to create and return a PSObject that has the interface you expect to find in your calling code. (This code can be a lot smaller, but less clear if you want… I opted for clarity): &lt;pre&gt;&lt;font color="blue"&gt;function&lt;/font&gt; &lt;font color="#2b91af"&gt;get-childitem&lt;/font&gt;() 
{ 
   &lt;font color="#35687d"&gt;$fi&lt;/font&gt; = &lt;font color="#2b91af"&gt;new-object&lt;/font&gt; PSObject 
   &lt;font color="#35687d"&gt;$getter&lt;/font&gt; = { &lt;font color="blue"&gt;return&lt;/font&gt; [System.IO.FileAttributes]::Archive } 
   &lt;font color="#2b91af"&gt;Add-member&lt;/font&gt; –inputObject &lt;font color="#35687d"&gt;$fi&lt;/font&gt; –memberType ScriptProperty –name Attributes –value &lt;font color="#35687d"&gt;$getter&lt;/font&gt; &lt;font color="#35687d"&gt;$secondValue&lt;/font&gt; &lt;font color="#35687d"&gt;$setter&lt;/font&gt; 
   &lt;font color="blue"&gt;Return&lt;/font&gt; &lt;font color="#35687d"&gt;$fi&lt;/font&gt;
} 
&lt;/pre&gt;
&lt;p&gt;The challenge with this approach is the amount of code it takes to mock out all of the parts that you need. For example, if you need the Mode script property that comes built in to PowerShell for DirectoryInfo and FileInfo, then you will have to add them to your mock. If you also need to support the setter for the Attributes property, then you will need to add that (and possibly a Note member to hold the data). 
&lt;p&gt;As with all mocking exercises, this gets complicated when interacting with real things and since PowerShell is really about interacting with real things, it is hard. 
&lt;p&gt;Enjoy!&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:8823fc01-aa9d-4982-b17a-502f4ddfbb7d" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: 
		&lt;a href="http://technorati.com/tags/Agile/" rel="tag"&gt;Agile&lt;/a&gt;
		, 
		&lt;a href="http://technorati.com/tags/TDD/" rel="tag"&gt;TDD&lt;/a&gt;
		, 
		&lt;a href="http://technorati.com/tags/Powershell/" rel="tag"&gt;Powershell&lt;/a&gt;
		, 
		&lt;a href="http://technorati.com/tags/Mock%20Objects/" rel="tag"&gt;Mock Objects&lt;/a&gt;
		&lt;/div&gt;&lt;img src ="http://www.peterprovost.org/aggbug/23757.aspx" width = "1" height = "1" /&gt;</content></entry><entry><title>Tabs in Vim - How did I miss this?</title><link rel="alternate" type="text/html" href="http://www.peterprovost.org/archive/2007/11/08/23738.aspx" /><id>http://www.peterprovost.org/archive/2007/11/08/23738.aspx</id><created>2007-11-08T08:34:00Z</created><issued>2007-11-08T16:34:00-08:00</issued><modified>2007-11-08T08:34:00Z</modified><content type="text/html" mode="escaped">&lt;p&gt;Yesterday John Lam did a keynote for the P&amp;amp;P Summit where he talked about the DLR, Ruby, Dynamic Languages and all that goodness. John is a smart, fun, engaging speaker and it was a great talk.&lt;/p&gt; &lt;p&gt;At the end of it I found myself wanting to run up on stage with everyone else to ask my question. But I decided against it. Because my question was WAAAAY off topic.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;"How did you get those Tabs in your GVim widow???"&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;I figured with a bit of Googling I could find the answer and I did. It turns out that since Vim 7.0, there have been tabs you just don't see them unless you ask for them.&lt;/p&gt; &lt;p&gt;Rather than rehash all the details, I'll just point you to this excellent article on linux.com by Joe 'Zonker' Brockmeier:&lt;/p&gt; &lt;p&gt;&lt;a title="http://www.linux.com/articles/59533" href="http://www.linux.com/articles/59533"&gt;http://www.linux.com/articles/59533&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Happy vimming! :)&lt;/p&gt;&lt;img src ="http://www.peterprovost.org/aggbug/23738.aspx" width = "1" height = "1" /&gt;</content></entry><entry><title>PowerShell++ (aka PowerShell is better with friends)</title><link rel="alternate" type="text/html" href="http://www.peterprovost.org/archive/2007/10/18/23594.aspx" /><id>http://www.peterprovost.org/archive/2007/10/18/23594.aspx</id><created>2007-10-18T09:10:00Z</created><issued>2007-10-18T17:10:00-08:00</issued><modified>2007-10-18T09:10:00Z</modified><content type="text/html" mode="escaped">&lt;p&gt;Yes, my love affair with &lt;a href="http://www.microsoft.com/windowsserver2003/technologies/management/powershell/default.mspx"&gt;Windows PowerShell&lt;/a&gt; continues. I've rediscovered a couple of things that make the PowerShell experience even better.&lt;/p&gt; &lt;p&gt;The most recent one for me is &lt;a href="http://thepowershellguy.com/blogs/posh/pages/powertab.aspx"&gt;PowerTab&lt;/a&gt;. PowerTab takes the extensible Tab-completion feature of PowerShell to rediculous extremes. Imagine Intelli-crack for everything... functions, cmdlets, paths, .NET types and methods, parameters, etc. Truly amazing work. (Here's a video to whet your appetite: &lt;a title="PowerTab 0.93 and BDD 2007 teaser" href="http://thepowershellguy.com/blogs/posh/archive/2007/06/05/powertab-0-93-and-bdd-2007-teaser.aspx"&gt;PowerTab 0.93 and BDD 2007 teaser&lt;/a&gt;)&lt;/p&gt; &lt;p&gt;Another one isn't really about PowerShell per se, as much as it is about redisovering some gems from my past. I've always been a &lt;a href="http://www.vim.org/"&gt;VIM&lt;/a&gt; guy (as opposed to an Emacs guy). In fact, I'm the maintainer of the &lt;a href="http://www.vim.org/scripts/script.php?script_id=1327"&gt;VIM syntax files for PowerShell&lt;/a&gt;. But there are lots of other gems in the Unix world that make PowerShell even better.&lt;/p&gt; &lt;p&gt;There are a number of projects on CodePlex and others that are attempting to recreate all the old Unix utils as PowerShell cmdlets, and in some cases they make sense. For example, when you use the unix 'tail' command, it returns you a big ol' string. For PowerShell you would probably prefer to have it return an array of strings to save you a step in your&amp;nbsp; command pipeline.&lt;/p&gt; &lt;p&gt;But there are things that aren't really about returning objects to you. Things that are more about manipulating files and such. For example, suppose you want to do a global search and replace in a file. Sure you can do this with a few lines of PowerShell script. You could even create a custom function of cmdlet to generalize it for you.&lt;/p&gt; &lt;p&gt;Or you could just use 'sed', the old Unix stream editor. It is &lt;a href="http://www.student.northpark.edu/pemente/sed/sed1line.txt"&gt;simple&lt;/a&gt;, &lt;a href="http://sed.sourceforge.net/grabbag/tutorials/"&gt;amazingly powerful&lt;/a&gt;, and works every time. There are a surprising number of useful gems (like 'less' for example) from the Unix world that have been ported over to Win32 and they all work wonderfully with PowerShell. There are two projects on Source Forge that I keep an eye on for these kinds of things:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;GnuWin32 - &lt;a title="http://gnuwin32.sourceforge.net/packages.html" href="http://gnuwin32.sourceforge.net/packages.html"&gt;http://gnuwin32.sourceforge.net/packages.html&lt;/a&gt;&amp;nbsp;(has almost everything)&lt;/li&gt; &lt;li&gt;UnxUtils - &lt;a title="http://unxutils.sourceforge.net/" href="http://unxutils.sourceforge.net/"&gt;http://unxutils.sourceforge.net/&lt;/a&gt;&amp;nbsp;(not updated in a long time)&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;The final tidbit is the #PowerShell IRC channel on &lt;a href="http://freenode.net/faq.shtml"&gt;FreeNode.net&lt;/a&gt;. Yes... I use IRC.&amp;nbsp;IRC is still the best open and freely available distributed chat system out there. Again, like so many of the old Unix things, it is simple, powerful and works every time. There are lots of very intertesting channels on FreeNode, most of which are about technology and not the newest bad reality TV show. If you're interested in giving IRC a try, check out the &lt;a href="http://silverex.org/news/"&gt;Silverex X-Chat client&lt;/a&gt; and look for me on Freenode as PProvost.&lt;/p&gt; &lt;p&gt;So all you PowerShell junkies... don't forget your roots. There are still gems to be mined from the olden days.&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:ce53eec8-b756-41bb-8251-cbb3de873549" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/PowerShell" rel="tag"&gt;PowerShell&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Gnu" rel="tag"&gt;Gnu&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Unix" rel="tag"&gt;Unix&lt;/a&gt;, &lt;a href="http://technorati.com/tags/IRC" rel="tag"&gt;IRC&lt;/a&gt;&lt;/div&gt;&lt;img src ="http://www.peterprovost.org/aggbug/23594.aspx" width = "1" height = "1" /&gt;</content></entry><entry><title>Silly Vista Features I Want</title><link rel="alternate" type="text/html" href="http://www.peterprovost.org/archive/2007/10/11/23562.aspx" /><id>http://www.peterprovost.org/archive/2007/10/11/23562.aspx</id><created>2007-10-11T13:47:00Z</created><issued>2007-10-11T21:47:00-08:00</issued><modified>2007-10-11T13:47:00Z</modified><content type="text/html" mode="escaped">&lt;p&gt;I enjoy Windows Vista. I really do. But I'm also a keyboard junkie (despite being a poor typer). For years I've found myself wanting to cut people's mouse cords when I see them doing things that could be 100x faster by hitting the right keystroke.&lt;/p&gt; &lt;p&gt;As a Vista + Keyboard guy, however, I find that I want a few things that aren't there.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;Quick Launch Shortcut Overlays&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;I love the Quick Launch bar. Why? Because I love that WIN+# runs the program in that numbered "slot" in the bar. So, WIN+1 runs the first, WIN+2 the second, and so on.&lt;/p&gt; &lt;p&gt;But after about three or four buttons on that bar, I have to count them to see which number to press, which sucks. I'd like nice little overlays that show the number. Something like this:&lt;/p&gt; &lt;p&gt;&lt;a href="http://www.peterprovost.org/Files/SillyVistaFeaturesIWant_CF6D/MyQuickLaunchBar.png" atomicselection="true"&gt;&lt;img style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" height="30" alt="MyQuickLaunchBar" src="http://www.peterprovost.org/Files/SillyVistaFeaturesIWant_CF6D/MyQuickLaunchBar_thumb.png" width="265" border="0"&gt;&lt;/a&gt; &lt;/p&gt; &lt;p&gt;Ahh... much better.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;em&gt;Address Bar Shortcut Keys&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;I've seen a lot of people who know about putting the address bar on their Windows Task Bar. It is nice, you can quickly type or paste a URL or local file address and it will popup an IE or Explorer window showing that address. Kinda cool, but I can't seem to figure out how to get the cursor there without reaching over for my mouse.&lt;/p&gt; &lt;p&gt;Boo!&lt;/p&gt; &lt;p&gt;UPDATE: As I was writing this post, I realized that in Vista I don't need this feature, or even that address bar on my screen. I can just hit the Windows key and start typing and it will do exactly what I wanted. DUH! I knew that! But still... why can't I get there with a simple shortcut key?&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:0769d12a-0e5e-47d9-ade6-0c1b3c6c42be" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Windows%20Vista" rel="tag"&gt;Windows Vista&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Keyboard%20Shortcut" rel="tag"&gt;Keyboard Shortcut&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Quick%20Launch" rel="tag"&gt;Quick Launch&lt;/a&gt;&lt;/div&gt;&lt;img src ="http://www.peterprovost.org/aggbug/23562.aspx" width = "1" height = "1" /&gt;</content></entry><entry><title>What has the P&amp;amp;P client team been up to?</title><link rel="alternate" type="text/html" href="http://www.peterprovost.org/archive/2007/10/02/23503.aspx" /><id>http://www.peterprovost.org/archive/2007/10/02/23503.aspx</id><created>2007-10-02T13:48:00Z</created><issued>2007-10-02T21:48:00-08:00</issued><modified>2007-10-02T13:48:00Z</modified><content type="text/html" mode="escaped">&lt;p&gt;I've been collecting these in my Inbox and figured they needed to go out here. As you may recall, before becoming a "suit", I was the dev lead for the Composite UI Application Block (aka CAB) and for the first P&amp;amp;P software factory, the Smart Client Software Factory v1.&lt;/p&gt; &lt;p&gt;Here's what my old team has been up to lately:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Announcing Web Client bundles&lt;br&gt; &lt;a href="http://blogs.msdn.com/gblock/archive/2007/09/19/announcing-web-client-bundles.aspx"&gt;http://blogs.msdn.com/gblock/archive/2007/09/19/announcing-web-client-bundles.aspx&lt;/a&gt;&lt;/li&gt; &lt;li&gt;What has the Web Client Team been doing recently?&lt;br&gt;&lt;a href="http://blogs.msdn.com/mpuleio/archive/2007/09/19/what-has-the-web-client-team-been-doing-recently.aspx"&gt;http://blogs.msdn.com/mpuleio/archive/2007/09/19/what-has-the-web-client-team-been-doing-recently.aspx&lt;/a&gt;&lt;/li&gt; &lt;li&gt;The Contextual AutoComplete Guidance Bundle is Available on CodePlex&lt;br&gt;&lt;a href="http://blogs.msdn.com/mpuleio/archive/2007/09/19/the-contextual-autocomplete-guidance-bundle-is-available-on-codeplex.aspx"&gt;http://blogs.msdn.com/mpuleio/archive/2007/09/19/the-contextual-autocomplete-guidance-bundle-is-available-on-codeplex.aspx&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Enjoy!&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:b69c868e-7d59-4f7f-8c28-f20544553a86" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/CAB" rel="tag"&gt;CAB&lt;/a&gt;, &lt;a href="http://technorati.com/tags/.NET" rel="tag"&gt;.NET&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Smart%20Client" rel="tag"&gt;Smart Client&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Patterns%20&amp;amp;%20Practives" rel="tag"&gt;Patterns &amp;amp; Practives&lt;/a&gt;, &lt;a href="http://technorati.com/tags/P&amp;amp;P" rel="tag"&gt;P&amp;amp;P&lt;/a&gt;&lt;/div&gt;&lt;img src ="http://www.peterprovost.org/aggbug/23503.aspx" width = "1" height = "1" /&gt;</content></entry><entry><title>xUnit.net - Jim Newkirk's New Unit Testing Framework</title><link rel="alternate" type="text/html" href="http://www.peterprovost.org/archive/2007/09/20/23410.aspx" /><id>http://www.peterprovost.org/archive/2007/09/20/23410.aspx</id><created>2007-09-20T15:01:00Z</created><issued>2007-09-20T23:01:00-08:00</issued><modified>2007-09-20T15:01:00Z</modified><content type="text/html" mode="escaped">&lt;p&gt;I've been waiting for them to announce this for a while, but it has finally happened. Jim, Brad and co. have finally released and announced their new unit testing framework for .NET. Here's an excerpt from &lt;a href="http://jamesnewkirk.typepad.com/posts/2007/09/announcing-xuni.html"&gt;Jim's post&lt;/a&gt;&amp;nbsp;(click thru to read the whole thing):&lt;/p&gt; &lt;blockquote&gt; &lt;h3&gt;&lt;strong&gt;Announcing xUnit.net&lt;/strong&gt;&lt;/h3&gt; &lt;p&gt;In the 5 years since the release of NUnit 2.0, there have been millions of lines of code written using the various unit testing frameworks for .NET. About a year ago it became clear to myself and &lt;a href="http://www.agileprogrammer.com/dotnetguy"&gt;Brad Wilson&lt;/a&gt; that there were some very clear patterns of success (and failure) with the tools we were using for writing tests. Rather than repeating guidance about "do X" or "don't do Y", it seemed like it was the right time to reconsider the framework itself and see if we could codify some of those rules.  &lt;p&gt;Additionally, the .NET framework itself has evolved a lot since its v1 release in early 2002. Being able to leverage some of the new framework features can help us write clearer tests.  &lt;p&gt;Another aspect of change that we wanted to affect was bringing the testing framework more closely in line with the .NET platform. Many of the decisions we made, which we enumerate below, were driven by this desire. We wanted an architecture which is built specifically for programmer testing (specifically Test-Driven Development), which can also be very easily extended to support other kinds of testing (like automated acceptance tests).  &lt;p&gt;Finally, there have been advances in other unit test library implementations that have not really surfaced in the .NET community.  &lt;p&gt;While any one of these reasons would not necessarily have been sufficient to create a new testing framework, the combination of them all made us want to undertake a new project: &lt;a href="http://www.codeplex.com/xunit"&gt;xUnit.net&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Jim has been chatting about this for years with&amp;nbsp;Brad Wilson, Scott Densmore, Brian Button, myself and many, many others in hallway chats, at conferences and via email and it has finally happened.&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:97ec08c9-e1f0-40d8-9acc-03d53a3dd6b2" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/NUnit" rel="tag"&gt;NUnit&lt;/a&gt;, &lt;a href="http://technorati.com/tags/TDD" rel="tag"&gt;TDD&lt;/a&gt;, &lt;a href="http://technorati.com/tags/xUnit.net" rel="tag"&gt;xUnit.net&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Test-Driven%20Development" rel="tag"&gt;Test-Driven Development&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Agile" rel="tag"&gt;Agile&lt;/a&gt;, &lt;a href="http://technorati.com/tags/XP" rel="tag"&gt;XP&lt;/a&gt;&lt;/div&gt; &lt;p&gt;I can't wait to see what people think. Congrats Jim and team!&lt;/p&gt;&lt;img src ="http://www.peterprovost.org/aggbug/23410.aspx" width = "1" height = "1" /&gt;</content></entry><entry><title>.NET Cheat Sheets</title><link rel="alternate" type="text/html" href="http://www.peterprovost.org/archive/2007/09/19/23398.aspx" /><id>http://www.peterprovost.org/archive/2007/09/19/23398.aspx</id><created>2007-09-19T16:19:00Z</created><issued>2007-09-20T00:19:00-08:00</issued><modified>2007-09-19T16:19:00Z</modified><content type="text/html" mode="escaped">&lt;p&gt;I was looking to remind myself how to do milliseconds formatting for DateTime objects and ran across a few useful links and cheat sheets for things like that:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a title="http://www.geekzilla.co.uk/View00FF7904-B510-468C-A2C8-F859AA20581F.htm" href="http://www.geekzilla.co.uk/View00FF7904-B510-468C-A2C8-F859AA20581F.htm"&gt;http://www.geekzilla.co.uk/View00FF7904-B510-468C-A2C8-F859AA20581F.htm&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a title="http://john-sheehan.com/blog/index.php/net-cheat-sheets/" href="http://john-sheehan.com/blog/index.php/net-cheat-sheets/"&gt;http://john-sheehan.com/blog/index.php/net-cheat-sheets/&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;The first had what I wanted in a comment at the bottom and the second just looks like it is useful to have around.&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:33d11ab3-57a0-4977-ac0d-242be97c8734" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/.NET" rel="tag"&gt;.NET&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Programming" rel="tag"&gt;Programming&lt;/a&gt;&lt;/div&gt;&lt;img src ="http://www.peterprovost.org/aggbug/23398.aspx" width = "1" height = "1" /&gt;</content></entry><entry><title>Progressive Rendering on Agile Projects</title><link rel="alternate" type="text/html" href="http://www.peterprovost.org/archive/2007/09/19/23397.aspx" /><id>http://www.peterprovost.org/archive/2007/09/19/23397.aspx</id><created>2007-09-19T13:44:00Z</created><issued>2007-09-19T21:44:00-08:00</issued><modified>2007-09-19T13:44:00Z</modified><content type="text/html" mode="escaped">&lt;p&gt;There was another discussion on the internal agile discussion list that I thought was worth talking about here.&lt;/p&gt; &lt;p&gt;The question was, "How much detail should work items in your product backlog have?"&lt;/p&gt; &lt;p&gt;&lt;a href="http://blogs.msdn.com/ericgu/"&gt;Eric Gunnerson&lt;/a&gt;&amp;nbsp;replied:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;It depends on where it is in the backlog.  &lt;p&gt;Items that are just entered and/or are quite a ways out can be fairly general.  &lt;p&gt;Items that are near that top have to have sufficient detail for the team to be able to generate sprint items from them.  &lt;p&gt;To start, I think it’s more important to capture absolutely everything, and then work at doing the refinement as you need it. &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;And I followed up with this:  &lt;blockquote&gt; &lt;p&gt;+1 from me on Eric’s description.  &lt;p&gt;Basically when something is “way down the plan”, it need be nothing more than a reminder to the person who added it to the backlog. A title and perhaps a description. If they actually have some idea of acceptance criteria then put that too, but it certainly isn’t required. A “T-Shirt size” doesn’t hurt if your team uses such things.  &lt;p&gt;As the item floats up the stack, you need to add more detail to it. Before it can get into a Release Plan (I’m more of an XP-er than a Scrummie), it needs more detail. It may need to get broken down. You will need to think about where it fits in your skeleton architecture. You want to have a sense of what the design might look like.  &lt;p&gt;For it to get through the iteration plan, it needs more information. Better estimating. Clearer acceptance criteria. Etc.  &lt;p&gt;I like to call this “Progressive Rendering”. Everything in agile is about progressively discovering more detail as the detail is needed. It is about doing a thing at the last responsible moment.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;At least that's how I like to think of it. :)&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:aa36681e-d128-4d9b-8646-939b20b882cd" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Agile" rel="tag"&gt;Agile&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Planning" rel="tag"&gt;Planning&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Progressive%20Rendering" rel="tag"&gt;Progressive Rendering&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Development" rel="tag"&gt;Development&lt;/a&gt;, &lt;a href="http://technorati.com/tags/XP" rel="tag"&gt;XP&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Scrum" rel="tag"&gt;Scrum&lt;/a&gt;&lt;/div&gt;&lt;img src ="http://www.peterprovost.org/aggbug/23397.aspx" width = "1" height = "1" /&gt;</content></entry><entry><title>World Clock</title><link rel="alternate" type="text/html" href="http://www.peterprovost.org/archive/2007/09/18/23387.aspx" /><id>http://www.peterprovost.org/archive/2007/09/18/23387.aspx</id><created>2007-09-18T08:52:00Z</created><issued>2007-09-18T16:52:00-08:00</issued><modified>2007-09-18T08:52:00Z</modified><content type="text/html" mode="escaped">&lt;p&gt;Here's an interesting little app for those of you who worry too much about death, disease, world population, etc.&lt;/p&gt; &lt;p&gt;&lt;a title="http://www.chippynews.com/worldclock.htm" href="http://www.chippynews.com/worldclock.htm"&gt;http://www.chippynews.com/worldclock.htm&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Enjoy!&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:e0a8f9d4-10ee-451f-ba97-d98e08d26167" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Clock" rel="tag"&gt;Clock&lt;/a&gt;, &lt;a href="http://technorati.com/tags/World%20Population" rel="tag"&gt;World Population&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Fun" rel="tag"&gt;Fun&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Games" rel="tag"&gt;Games&lt;/a&gt;&lt;/div&gt;&lt;img src ="http://www.peterprovost.org/aggbug/23387.aspx" width = "1" height = "1" /&gt;</content></entry><entry><title>On Becoming an Agile Coach</title><link rel="alternate" type="text/html" href="http://www.peterprovost.org/archive/2007/09/06/23305.aspx" /><id>http://www.peterprovost.org/archive/2007/09/06/23305.aspx</id><created>2007-09-06T12:50:00Z</created><issued>2007-09-06T20:50:00-08:00</issued><modified>2007-09-06T12:50:00Z</modified><content type="text/html" mode="escaped">&lt;p&gt;Today on one of the internal MSFT agile aliases, a friend of mine asked&amp;nbsp;and answered a question he gets all the time:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;How do I become an Agile coach?&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;He pointed out that you can become a Certified Scrum Master by taking a course, but that you aren't really a coach until and unless you have real experiences to back it up.&lt;/p&gt; &lt;p&gt;I replied to the thread with this...&lt;/p&gt; &lt;p&gt;My experiences mirror yours. But as you point out, not everyone can just go “work with Ward”. ?  &lt;p&gt;Personally, I like this kind of an answer (sports metaphor intended):  &lt;blockquote&gt; &lt;p&gt;You can’t really set out to be a coach without first being a player. Get good at playing your position. Once you are good at that position, take time to learn how the other positions work. Learn how different kinds of people play different positions. Try out other positions when appropriate. Work to learn to think holistically and outside of your own comfort zone. Read a lot. Practice a lot. Talk to coaches as much as you can, and be sure to take it all with a grain of salt.  &lt;p&gt;A coach is someone who can combine theory with their own unique experiences and find a way to use that to lead others to achieve success. To be a coach you have to have good communication skills, so if that is an area that needs attention, work on that too.  &lt;p&gt;Finally, as with so many other leadership roles, it is important to recognize that coach is a recognition that others make of you. You can’t be designated or self-designate yourself as a coach or a leader. When people ask you to come and help coach them, then you are a coach.  &lt;p&gt;Another thing that matters a lot from my perspective is being able to be pragmatic and not dogmatic. But as Shu-Ha-Ri [1] teaches us, sometimes we have to start out following dogma (Shu) to better understand what is really going on underneath it all (Ha) and perhaps if we’re lucky achieve enlightenment (Ri). &lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;[1] More reading on Shu-Ha-Ri: &lt;a href="http://www.aikidofaq.com/essays/tin/shuhari.html"&gt;The Aikido FAQ&lt;/a&gt;, &lt;a href="http://alistair.cockburn.us/index.php/ASD_book_extract:_%22Unknowable_and_incommunicable%22#Shu-Ha-Ri"&gt;Alastair Cockburn’s Unknowable and Incommunicable&lt;/a&gt;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:4ea52150-0d44-4c62-bef9-0e0070d0f27e" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Agile" rel="tag"&gt;Agile&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Shu-Ha-Ri" rel="tag"&gt;Shu-Ha-Ri&lt;/a&gt;, &lt;a href="http://technorati.com/tags/XP" rel="tag"&gt;XP&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Scrum" rel="tag"&gt;Scrum&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Coach" rel="tag"&gt;Coach&lt;/a&gt;&lt;/div&gt;&lt;img src ="http://www.peterprovost.org/aggbug/23305.aspx" width = "1" height = "1" /&gt;</content></entry><entry><title>New Unit Testing Features in Orcas</title><link rel="alternate" type="text/html" href="http://www.peterprovost.org/archive/2007/08/28/23214.aspx" /><id>http://www.peterprovost.org/archive/2007/08/28/23214.aspx</id><created>2007-08-28T11:23:00Z</created><issued>2007-08-28T19:23:00-08:00</issued><modified>2007-08-28T11:23:00Z</modified><content type="text/html" mode="escaped">&lt;p&gt;A while back Naysawn Naderi has posted a series of write-ups of the upcoming features in Visual Studio Orcas (that I forgot to blog about) that are specifically to address the needs of TDD and developer-oriented testing. I was on the committee of people who helped advise their work in this area and while there is still a lot of work to do, they are doing some good stuff that should help:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Better Execution Times&lt;/li&gt; &lt;li&gt;Run Tests Context Menus&lt;/li&gt; &lt;li&gt;Short cut keys to run tests (WOOT!)&lt;/li&gt; &lt;li&gt;Disable the "test deployment" icki-ness&lt;/li&gt; &lt;li&gt;Support for the Abstract Test Pattern via Test inheritance (boo!)&lt;/li&gt; &lt;li&gt;Click thru to the point of failure&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Yes, we all know these things should have been there in V1, but they weren't. And now we're trying to make it better.&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://blogs.msdn.com/nnaderi/archive/2007/05/11/new-unit-testing-features-in-orcas-part-1.aspx"&gt;Part 1&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://blogs.msdn.com/nnaderi/archive/2007/05/14/new-unit-testing-features-in-orcas-part-2.aspx"&gt;Part 2&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;Grats to Naysawn and team for helping move the ball along.&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:d5870918-1995-4ad7-90f8-879fa7795a0a" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/TDD" rel="tag"&gt;TDD&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Unit%20Testing" rel="tag"&gt;Unit Testing&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Visual%20Studio" rel="tag"&gt;Visual Studio&lt;/a&gt;&lt;/div&gt;&lt;img src ="http://www.peterprovost.org/aggbug/23214.aspx" width = "1" height = "1" /&gt;</content></entry><entry><title>Another Agile Computer Repave Done</title><link rel="alternate" type="text/html" href="http://www.peterprovost.org/archive/2007/07/16/23053.aspx" /><id>http://www.peterprovost.org/archive/2007/07/16/23053.aspx</id><created>2007-07-16T11:29:00Z</created><issued>2007-07-16T19:29:00-08:00</issued><modified>2007-07-16T11:29:00Z</modified><content type="text/html" mode="escaped">&lt;p&gt;&lt;strong&gt;&lt;u&gt;Introduction&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;As many of you know, I repave/reformat my computer often. I always used to say that I did it every 6 months, but it seems that it gets more and more frequent as my tolerance goes down and I get better at the repave process. I now can have a full repave done and be back to functional in about 2.5 hours. I can start it, go to a meeting, come back for 15 mins, go to another meeting and when I get back I'm pretty much functional. &lt;/p&gt; &lt;p&gt;Not everything that was installed will be installed, but actually that is the point. Since the 90s Freeware Software explosion, I have loved tinkering with new tools and things. Over time they accrete onto my system. Some I uninstall, some I don't. Some I keep using, some I forget about. Some uninstall cleanly, some don't. &lt;/p&gt; &lt;p&gt;Almost all of them however, leave a fingerprint behind in the registry or the filesystem. And like many people who don't like fingerprints on their computer screens, I don't like fingerprints in my operating system.&lt;/p&gt; &lt;p&gt;A number of people have asked me how I do my repaves this efficiently. There are a few tips and tricks, but none of them are particularly new or surprising. It is essentially an application of agile techniques applied to a non-software problem:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Stack rank your backlog and keep it prioritized as you&amp;nbsp;learn more and things change  &lt;li&gt;Have clear release criteria so you know when you are done  &lt;li&gt;Use good discipline and practices to enable you to respond positively to change&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;The Process&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;How these are specifically implemented in my system is as follows.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Stack rank your backlog and keep it prioritized as you&amp;nbsp;learn more and things change&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;For years, I have been keeping a "log" of the software I install on my system. Every time I install something, I open up the list and add it to the bottom. The list has two sections, "Done" and "Backlog" indicating what has been done and what I think I still need to do. It looks something like this:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;u&gt;Done&lt;/u&gt;&lt;/p&gt; &lt;p&gt;[x] Windows Vista 32-bit IT Supported Image&lt;br&gt;[x] eTrust Antivirus&lt;br&gt;[x] Restore My Profile from Backup&lt;br&gt;[x] Office 2007&lt;br&gt;[x] Configure and run Microsoft Update&lt;br&gt;[x] Configure Outlook and start First Sync w/ Exchange&lt;br&gt;[x] Password Minder&lt;br&gt;[x] ISA Firewall Client&lt;/p&gt; &lt;p&gt;&lt;u&gt;Backlog&lt;/u&gt;&lt;/p&gt; &lt;p&gt;[ ] Windows Live Writer&lt;br&gt;[ ] X-Chat2&lt;br&gt;[ ] Live Meeting Console&lt;br&gt;[ ] Vim&lt;br&gt;[ ] Configure Consolas as a console font&lt;br&gt;[ ] etc&lt;br&gt;[ ] etc&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Although this log is now a OneNote page, it was for a long time nothing more than a text file on my desktop. When I started a new repave, the first thing I would do is copy the old file over to the new empty desktop. I delete the old Backlog because since they were never done on my last build, it is very unlikely that I need them on this build. I then move the Done list down into the Backlog list and assume that the stack rank is correct since that was the order that I needed them last time.&lt;/p&gt; &lt;p&gt;As I install software or configure settings that I like, I move them up from the Backlog to the bottom of the Done list (or just add them to the Done list if I didn't have them on the last build).&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Have clear release criteria so you know when you are done&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;This one is actually simple: stop when you don't need any more. Do more when you need more.&lt;/p&gt; &lt;p&gt;How this manifests itself is that there are two big "cut lines" that occur. The first cut line is about on par with what I show in the Done list above. At that point, I can do about 75-80% of my job as a manager. When I was doing more active development, my developer tools were immediately after this cut line and above a number of other things. The two major cutlines I had back then were "usable computer" (OS, email, office, etc.) and then "developer computer" (usable + dev tools). As a manager, new tools (mostly internal corporate tools) are in the second list and the developer tools have moved lower down the stack to be installed only when I need them.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Use good discipline and practices to enable you to respond positively to change&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;This is the part that people really want to know about when they ask me about this, but ultimately as with Agile Software Development, this is the part that enabled you to be agile not the part that makes you agile. (More on that in a later post.)&lt;/p&gt; &lt;p&gt;The specific practices I apply are fairly simple:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Everything in your Home - Keep everything that you care about keeping between build in your user profile "home" directory (C:\Users\Username on Vista). Don't put anything anywhere else that you need to keep between builds.  &lt;li&gt;Profile Backups - XCOPY backup your user profile directory to an external hard drive before reformatting your drive. (The XCOPY options you want are "/h /e /y /c".) You can use Robocopy if you prefer, but the command line switches are much more confusing.  &lt;li&gt;Single Development Directory - I keep all my "side project" source code in a Subversion repository in the sky. On my local system, I have a C:\Dev directory that I keep my working copies in, but I don't back this up other than making sure everything here is stored in a version control system somewhere.  &lt;li&gt;Program Files overlay on a backup drive - This is a trick Brad Wilson taught me. I keep a directory named "Program Files" on my external drive that has all of the XCOPY-able programs that I like to have on my system. This includes things like Password Minder, HotKeyPlus, PureText, etc.  &lt;li&gt;User bin directory in my Profile - This is another directory full of binaries, but these are in my profile (e.g. C:\Users\Username\bin) and are typically little command line tools like grep, awk, svn, etc.  &lt;li&gt;Helpful Setup Scripts - I have a few PowerShell scripts that I have created for setting %PATH%, %EDITOR%, %VISUAL% etc. and for setting up shortcuts to some of the XCOPY-able "Program Files".&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;&lt;strong&gt;&lt;u&gt;Conclusion&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;I've been living my computing life this way for years now. The specific practices I've used have evolved over time, but the principles and intent have remained unchanged for&amp;nbsp;a very long time. It allows me to test-drive new software, configurations, tools, etc. and if I screw up my machine, I don't care. Repave it. &lt;/p&gt; &lt;p&gt;It also helps acccount for registry and file system bloat. You know what I mean, even the most perfect uninstaller will leave stuff behind. Hopefully very little, but stuff nonetheless. A clean wipe helps get rid of that stuff.&lt;/p&gt; &lt;p&gt;So there you go... an agile approach to maintaining and managing your computer. People often don't believe me, but I can do my repave back to "usable work computer" in about 3 hours, which really helps me feel free to do it more often.&lt;/p&gt; &lt;p&gt;Enjoy!&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:663bd39f-45d1-4bfa-8e1e-61c0dddda016" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/Agile" rel="tag"&gt;Agile&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Technology" rel="tag"&gt;Technology&lt;/a&gt;, &lt;a href="http://technorati.com/tags/Windows%20Vista" rel="tag"&gt;Windows Vista&lt;/a&gt;&lt;/div&gt;&lt;img src ="http://www.peterprovost.org/aggbug/23053.aspx" width = "1" height = "1" /&gt;</content></entry><entry><title>Print Head Cleaning for my Canon S600 Ink Jet Printer</title><link rel="alternate" type="text/html" href="http://www.peterprovost.org/archive/2007/07/15/23051.aspx" /><id>http://www.peterprovost.org/archive/2007/07/15/23051.aspx</id><created>2007-07-15T16:52:00Z</created><issued>2007-07-16T00:52:00-08:00</issued><modified>2007-07-15T16:52:00Z</modified><content type="text/html" mode="escaped">&lt;p&gt;Last week our home printer started blinking yellow seven times. A quick look in the user guide told me that it was a defective or clogged print head. Yuck. I knew that really meant either fixing it or buying a new printer since this one is out of warranty, so I started digging on the ol' intarweb.&lt;/p&gt; &lt;p&gt;A found a number of articles, all with similar but different approaches. Almost all of them involved soaking in filtered or distilled water, some used isopropyl alcohol, some used special "ink jet cleaning solution". A few recommended forcing it through with a syringe, and one guy even showed you &lt;a href="http://www.nifty-stuff.com/forum/viewtopic.php?id=241"&gt;how to completely take it apart&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;What I ended up doing, and it seems to have worked, is this:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Remove the cartridges, set them aside. If the rest of this takes very long, cover the outputs with tape.&lt;/li&gt; &lt;li&gt;Remove the print head. Mine just lifted out. If it is harder than that, you have a different printer than I do.&lt;/li&gt; &lt;li&gt;Set it in a shallow dish and soak it for 5-10 mins in isopropyl rubbing alcohol.&lt;/li&gt; &lt;li&gt;After it loosens up, use a Q-Tip swab and some alcohol and VERY CAREFULLY remove any gunked up ink on the head. Avoid touching the little slots too much, since they are VERY small and that is where the printing all happens. Mess them up and you will be buying a new print head (or a new printer).&lt;/li&gt; &lt;li&gt;Once you think you've got it clean (some people do this for days, I did it for about 15 minutes), dry it carefully. I used a bit of compressed air to help get it dry, but again, be careful.&lt;/li&gt; &lt;li&gt;Replace the print head and reinsert the cartridges.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;The problem I had at this point is that the printer still thought it was broken and I couldn't get it to do a Deep Cleaning or anything. The yellow light continued to blink seven times.&lt;/p&gt; &lt;p&gt;Boo.&lt;/p&gt; &lt;p&gt;I dit a bit more digging and was just about to give up when I ran into a post that told &lt;a href="http://www.fixyourownprinter.com/forums/inkjet/15284#13"&gt;how to do a full reset on most Canon printers&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&amp;nbsp; &lt;p&gt;Here are the steps (in case that link dies):&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Disconnect powercord, Hold Down Power and Resume Buttons &lt;/li&gt; &lt;li&gt;Connect the powercord and unit will turn on &lt;/li&gt; &lt;li&gt;Release Power Button, then click it once &lt;/li&gt; &lt;li&gt;Release both Power and Resume Buttons &lt;/li&gt; &lt;li&gt;Green Power light will be on steady, amber Resume light went off &lt;/li&gt; &lt;li&gt;Then at about 1 second intervals ... click Resume, click Resume, then click Power...In a few seconds Startup Cycle Machinations will occur and finish &lt;/li&gt; &lt;li&gt;Do a Button Power off ... a Button Power on wont work ...&amp;nbsp; unplug then replug power ... Button Power on / off , Machinations OK, &lt;/li&gt;&lt;/ol&gt; &lt;p&gt;So, that worked for me. Please assume that following any of the steps can break your printer, &lt;strong&gt;so if you aren't prepared to deal with that outcome, take it to a repair shop instead.&lt;/strong&gt;&lt;/p&gt;&lt;img src ="http://www.peterprovost.org/aggbug/23051.aspx" width = "1" height = "1" /&gt;</content></entry></feed>