<rss version="2.0" 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:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Tools</title>
        <link>http://geekswithblogs.net/coredump/category/7048.aspx</link>
        <description>Tools</description>
        <language>en-US</language>
        <copyright>Russell Ball</copyright>
        <managingEditor>rt_ball@yahoo.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <item>
            <title>Vil: Dead as in Doornail?</title>
            <link>http://geekswithblogs.net/coredump/archive/2007/12/20/117899.aspx</link>
            <description>&lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;I spent some time last week working with &lt;a href="http://www.1bot.com/"&gt;Vil&lt;/a&gt;, a free code analysis tool that can be used to locate potential quality &lt;/font&gt;&lt;font size="2"&gt;&lt;strong&gt;&lt;img vspace="10" hspace="10" align="right" src="http://farm3.static.flickr.com/2302/2125657447_1327babd1a.jpg?v=0" alt="" /&gt;&lt;/strong&gt;&lt;/font&gt;&lt;font size="2"&gt;issues and high risk areas in your code. While working on it, I learned all about various code metrics such as cyclomatic complexity, eCouplings, and LCOM (Lack of Cohesion in Methods) and experimented with setting appropriate thresholds for each. &lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;
&lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;I also incorporated all the required command line switches into our Nant script and even dusted off my XSLT skills in order to create a custom stylesheet to summarize the results and display them nicely on our main Cruise Control report. To my surprise several of the other developers at work seemed genuinely interested in the potential feedback we could get from this tool (people can only get so excited about cyclomatic complexity).&lt;/font&gt;&lt;/p&gt;
&lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;There was one major problem. All the fun I was having was restricted to one small dll. This is because &lt;span style="font-weight: bold;"&gt;Vil has a built-in limit so that a license key is required when you try to analyze a dll that has more than 100 types in it&lt;/span&gt;. The website indicates that all you need to do to attain this license is to send them an email. I did that. Twice. That was two weeks ago and I still haven't heard anything back yet.&lt;/font&gt;&lt;/p&gt;
&lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;&lt;img align="left" src="http://farm3.static.flickr.com/2315/2125657481_5ed4a7f738.jpg?v=0" alt="" /&gt;Vil is free, so one could argue that I am just getting what I paid for. I guess I figured that since Vil was incorporated into the WebDashboard for CruiseControl, it was established enough to be a safe bet. I was wrong. The last update on the website was two years ago and it was only a vague promise of a new version that would support the 2.0 framework. The new version never appeared and the current version seems to be from mid 2004.&lt;/font&gt;&lt;/p&gt;
&lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;I'm not even sure why the creator of Vil decided to include a built-in limit since the license to unlock it is supposedly still free. Perhaps he had some intention of eventually making it a commercial product or maybe he just wanted to keep statistics on larger customers. If it was an open source project and the source code were available, then I wouldn't mind digging through the code to remove this restriction myself. But there is no source code to be found.&lt;/font&gt;&lt;/p&gt;
&lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;&lt;strong&gt;A Plea to the Project Owner&lt;/strong&gt;: I understand there are plenty of good reasons to abandon a project that you weren't making any money on. However, if you are calling it quits, could you please make one last altruistic gesture and either release the source code or else publish one last version without this restriction? It seems like a lot of work to have spent on an otherwise decent tool only to let it fall into oblivion because of this license issue.&lt;/font&gt;&lt;/p&gt;
&lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;&lt;strong&gt;Recommendation to Potential Vil Users: &lt;/strong&gt;Don't bother investigating this tool unless you already have one of the fabled golden license keys. I'm migrating back to &lt;a href="http://www.ndepend.com/"&gt;NDepend&lt;/a&gt; instead. I've already worked with NDepend and think that it is a far better tool, but I gave Vil a try because it seemed like it would be a lot easier to integrate into Cruise Control due to the built-in support.&lt;/font&gt;&lt;/p&gt;
&lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;&lt;strong&gt;Request To CruiseControl Developers:&lt;/strong&gt; Please remove Vil plugins and stylesheets from the next version of Cruise Control. It's aggravating to spend time getting it to work only to later have to abandon it because it only works with trivially small projects.&lt;/font&gt;&lt;/p&gt;
&lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;OK, Rant complete. I feel better now.&lt;/font&gt;&lt;/p&gt;
&lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;&lt;strong&gt;Side Note&lt;/strong&gt;: Apparently the phrase "Dead as a Doornail" is a very old expression and can even be found in a few of Shakespeare's plays like Henry IV. Based on a quick google search, it appears that nobody really knows why doornails are any more dead than all the other inanimate objects (for example house nails). I saw a few weak guesses, but no explanations that were really compelling. I guess language is as uncontrollable and mysterious as the internet. &lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117899"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117899" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/coredump/aggbug/117899.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Russell Ball</dc:creator>
            <guid>http://geekswithblogs.net/coredump/archive/2007/12/20/117899.aspx</guid>
            <pubDate>Fri, 21 Dec 2007 05:49:46 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/coredump/comments/117899.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/coredump/archive/2007/12/20/117899.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/coredump/comments/commentRss/117899.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/coredump/services/trackbacks/117899.aspx</trackback:ping>
        </item>
        <item>
            <title>Are You Mocking My Code?</title>
            <link>http://geekswithblogs.net/coredump/archive/2007/12/19/117831.aspx</link>
            <description>&lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;I've been playing around with mock objects using Rhino.Mocks for the last few months, but today was the first time that I had an unfettered coding win and became a true convert. &lt;/font&gt;&lt;/p&gt;
&lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;I was introduced to NUnit about five years ago from a co-worker (thanks Dewayne) and gradually became a true &lt;/font&gt;&lt;font size="2"&gt;&lt;img width="251" vspace="10" hspace="10" height="166" align="right" src="http://ayende.com/Blog/images/ayende_com/Blog/WindowsLiveWriter/58880aca9487_1547/image.png" alt="" /&gt;&lt;/font&gt;&lt;font size="2"&gt;believer. Unfortunately, I was a late-bloomer in the area of mocking, so by the time I finished my last big project I had left a suite of about 500 database driven tests that took almost 2 hours to run and were a maintenance nightmare. The vast majority of my unit testing efforts revolved around SQL initialization and cleanup scripts that massaged the database into just the state I needed for each tests case scenario. &lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;
&lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;Although this approach definitely made me a wizard when it came debugging data-related production issue quickly, it was too high of price to pay for the benefits I was receiving. Although I remember thinking in the beginning that this "realistic" approach to testing was much more valuable than the "fake" tests that didn't hit the database, by the end of the process I was no longer so sure. I still believed in the value of unit testing, but I knew there had to be a better way of doing it. &lt;/font&gt;&lt;/p&gt;
&lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;During my stint as an architect, I read enough about mocking to know that it was a good idea in theory, but of course I had little opportunity to put that theory to the test. Now that I am a code monkey again, I can say with certainty that mocking is an absolutely essential aspect of Test Driven Development and not simply a "nice-to have" supplemental activity like I assumed before.&lt;/font&gt;&lt;/p&gt;
&lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;&lt;strong&gt;Why is Mocking Critical?&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;ol style="font-family: Arial;"&gt;
    &lt;li&gt;&lt;font size="2"&gt;&lt;strong&gt;It makes debugging easier - &lt;/strong&gt;When a database driven test fails, the problem could be anywhere and in my experience it is most often related to a problem with the initialization script (i.e. accidental order-based test dependencies). This often led me to ignore test failures when I was pressed for time because I knew that it was likely just another false alarm. However, when a test that uses mock objects fails, I am not only fairly certain that it is a problem with the code rather than the test, but I also know exactly where the problem is because I've guaranteed the behavior of every piece of code except the part that I am trying to test. &lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font size="2"&gt;&lt;strong&gt;It makes writing tests faster and easier&lt;/strong&gt; - One of the biggest barriers to adoption for TDD for most developers continues to be the perception that it takes too long. I can give a dozen reasons why that perception is wrong, but in the end I think it is more productive to simply find ways to shorten that process. That is exactly what mocking does. Writing out a series of Expect.Call() statements is an order of magnitude faster than trying to write data manipulation statements.&lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font size="2"&gt;&lt;strong&gt;It makes tests execute faster -&lt;/strong&gt; Don't underestimate the power of fast feedback. Even if you are not a die-hard continuous integration practitioner, you have to admit that the longer your tests take to run the less likely you and other developers will be to actually run them. Even if you do religiously run them at night, the longer feedback cycle dramatically decreases one of the main benefits of TDD, which is the increased coding speed that comes from test-backed confidence and not having to waste time on excessive analysis and fretting about possible unknown collateral damaged. &lt;/font&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;&lt;strong&gt;What does Mocking Require?&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;ol style="font-family: Arial;"&gt;
    &lt;li&gt;&lt;font size="2"&gt;&lt;strong&gt;Interface Based Programming&lt;/strong&gt; - If you use Rhino.Mocks, then every class that you mock must implement an interface. With the help of ReSharper, interfaces can be created from an existing class and propagated to the rest of your codebase with just a few keystrokes. This alone makes the price of ReSharper worth it if you are going to start using mocking in a Legacy system that was designed without using interfaces. &lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font size="2"&gt;&lt;strong&gt;Dependency Injection&lt;/strong&gt; - One of the first stumbling blocks I ran into came from complex collaborations from objects that weren't able to be mocked because they were created inside of methods. You can quickly get around this with a little refactoring by making collaborating objects private member variables and then adding a constructor overload to expose them during testing. It is usually a relatively fast and low-risk design change to make.&lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font size="2"&gt;&lt;strong&gt;Identifying Code Seams&lt;/strong&gt; - If you find yourself getting frustrated and beginning to think that you are stuck in a code base that is impossible to mock, then stop and read the book &lt;a href="http://www.amazon.com/Working-Effectively-Legacy-Robert-Martin/dp/0131177052"&gt;Working Effectively With Legacy Code&lt;/a&gt; by Michael Feathers. I'm about a quarter of the way through this right now and it is one of the most helpful tech books I've ever read. The author is fearless and infinitely resourceful when it comes to getting code of any language and any quality under test. In fact, many of his examples are in C++ and even C, so that means that you have no excuses when it comes to your own project. He gives lots of practical advice on how to find the "seams", which are the easiest and most cost-effective places to modify code so that you can begin to mock it.&lt;/font&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;&lt;strong&gt;A Practical Example?&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;Here is an MbUnit test that I wrote today before I tackled a production bug that was assigned to me. It mocks the IPaymentTypeItem, which has read-only properties and thus is normally only allowed to be populated from the database. The Expect.Calls() are just done for the methods and properties calls that are actually made on the object in the piece of code I am testing. You can get a full tutorial with better explanations of the API calls &lt;a href="http://ayende.com/projects/rhino-mocks.aspx"&gt;here&lt;/a&gt;.&lt;/font&gt;&lt;/p&gt;
&lt;div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; font-family: Arial; background-color: rgb(244, 244, 244);"&gt;
&lt;div style="border-style: none; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);"&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; background-color: white;"&gt;&lt;font size="2"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   1:&lt;/span&gt; [RowTest]&lt;/font&gt;&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);"&gt;&lt;font size="2"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   2:&lt;/span&gt; [Row(&lt;span style="color: rgb(0, 96, 128);"&gt;"%B409999999999999^Russ's Coffee Emporium^09011211000019900000000?;"&lt;/span&gt;,&lt;span style="color: rgb(0, 96, 128);"&gt;"409999999999999"&lt;/span&gt;)]&lt;/font&gt;&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; background-color: white;"&gt;&lt;font size="2"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   3:&lt;/span&gt; [Row(&lt;span style="color: rgb(0, 96, 128);"&gt;";4409999999999999=090112110000199?"&lt;/span&gt;,&lt;span style="color: rgb(0, 96, 128);"&gt;"409999999999999"&lt;/span&gt;)]            &lt;/font&gt;&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);"&gt;&lt;font size="2"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   4:&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt; Should_Load_Correctly_With_Partial_Track(&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; trackData, &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; expCardNumber)&lt;/font&gt;&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; background-color: white;"&gt;&lt;font size="2"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   5:&lt;/span&gt; {&lt;/font&gt;&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);"&gt;&lt;font size="2"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   6:&lt;/span&gt;     MockRepository mocks = &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; MockRepository();&lt;/font&gt;&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; background-color: white;"&gt;&lt;font size="2"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   7:&lt;/span&gt;     IPaymentTypeItem payment = (IPaymentTypeItem) mocks.DynamicMock(&lt;span style="color: rgb(0, 0, 255);"&gt;typeof&lt;/span&gt; (IPaymentTypeItem));&lt;/font&gt;&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);"&gt;&lt;font size="2"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   8:&lt;/span&gt;     Expect.Call(payment.BinFirstDigit).Return(expCardNumber.substring(0,1));&lt;/font&gt;&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; background-color: white;"&gt;&lt;font size="2"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;   9:&lt;/span&gt;     Expect.Call(payment.IsCreditCard).Return(&lt;span style="color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;);&lt;/font&gt;&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);"&gt;&lt;font size="2"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  10:&lt;/span&gt;     Expect.Call(payment.PaymentTypeValue).Return(PaymentType.VisaCard);&lt;/font&gt;&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; background-color: white;"&gt;&lt;font size="2"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  11:&lt;/span&gt;     mocks.ReplayAll();&lt;/font&gt;&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);"&gt;&lt;font size="2"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  12:&lt;/span&gt;     FinancialCardEncoding encoding = FinancialCardEncoding.CreateCardEncoding(trackData,payment,&lt;span style="color: rgb(0, 0, 255);"&gt;true&lt;/span&gt;);                &lt;/font&gt;&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; background-color: white;"&gt;&lt;font size="2"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  13:&lt;/span&gt;     Assert.AreEqual(0,encoding.Errors.Count);&lt;/font&gt;&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; background-color: rgb(244, 244, 244);"&gt;&lt;font size="2"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  14:&lt;/span&gt;     Assert.AreEqual(expCardNumber,encoding.PrimaryAccountNumber);&lt;/font&gt;&lt;/pre&gt;
&lt;pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; background-color: white;"&gt;&lt;font size="2"&gt;&lt;span style="color: rgb(96, 96, 96);"&gt;  15:&lt;/span&gt;     mocks.VerifyAll();&lt;/font&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/p&gt;
&lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;Rhino.Mocks is certainly not the only mocking framework out there, but so far I like it because it takes a strongly typed approach rather than relying on strings which means I get to use intellisense. Whatever framework you do choose, I highly recommend that you take the time to learn it well and incorporate it thoroughly into your development as soon as possible.&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117831"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117831" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/coredump/aggbug/117831.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Russell Ball</dc:creator>
            <guid>http://geekswithblogs.net/coredump/archive/2007/12/19/117831.aspx</guid>
            <pubDate>Wed, 19 Dec 2007 06:12:44 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/coredump/comments/117831.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/coredump/archive/2007/12/19/117831.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/coredump/comments/commentRss/117831.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/coredump/services/trackbacks/117831.aspx</trackback:ping>
        </item>
        <item>
            <title>Friends Don't Let Friends Use the Start Menu</title>
            <link>http://geekswithblogs.net/coredump/archive/2007/12/15/117732.aspx</link>
            <description>&lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;I've read and listened to &lt;a href="http://www.hanselman.com/blog/"&gt;Scott Hanselman&lt;/a&gt; sing the praises of &lt;a href="http://www.bayden.com/SlickRun/"&gt;SlickRun&lt;/a&gt; for a long time, but I just recently got around to using it. &lt;/font&gt;&lt;/p&gt;
&lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;For those of you who are as slow to catch on as me, it is essentially just a tricked-out version of the Run window that allows you launch programs &lt;span style="font-weight: bold;"&gt;much faster than you can through the traditional hide-and-seek start menu approach&lt;/span&gt;. This is especially true if you are a tool addict and have a start menu that stretches across your screen. &lt;/font&gt;&lt;/p&gt;
&lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;Best of all, &lt;span style="font-weight: bold;"&gt;it is FREE&lt;/span&gt;, which is one of the few things that still fits into my budget these days. It also only takes seconds to grok and begin saving time with it.&lt;/font&gt;&lt;/p&gt;
&lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;To get started, all you have to do is right-click on the floating SlickRun textbox and select "New Magic Word". When the dialog box with the nifty wizard hat pops up, &lt;span style="font-weight: bold;"&gt;you simply drag the magic geen lightsaber&lt;/span&gt; circled below over to an open program and it will figure out the program's filepath. You can also create the mapping by just &lt;span style="font-weight: bold;"&gt;dragging a shortcut from the start menu&lt;/span&gt; on to the floating SlickRun textbox prompt.&lt;/font&gt;&lt;/p&gt;
&lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;&lt;img vspace="10" hspace="10" alt="" src="http://farm3.static.flickr.com/2289/2111387881_3eab512e5a.jpg?v=0" /&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;Next, you think of a clever and creative keyword (for example NCoverExplorer for NCoverExplorer) and then optionally assign paramters to it. Parameters are cool because you can do things like &lt;span style="font-weight: bold;"&gt;open FireFox and surf to your favorite porn site in one swift and efficient motion&lt;/span&gt;. For NCoverExplorer, I set the parameter value to the path of the NCover xml result file that gets generated from our automated build process. &lt;/font&gt;&lt;/p&gt;
&lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;Finally, thanks to the magic of intellisense, you just have to type a couple of letters until the keyword you want appears in the textbox and then hit return in order to launch it. Easy, huh?&lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;
&lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;&lt;img width="500" vspace="10" hspace="10" height="189" alt="" src="http://farm3.static.flickr.com/2244/2112310438_06720cc58a.jpg?v=0" /&gt;&lt;/font&gt; &lt;/p&gt;
&lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;Just remember, REAL geeks don't use the start menu. If you don't want all the other geeks laughing at you and kicking silicon dust in your face in the computer lab, then I suggest you download SlickRun immediately. &lt;br /&gt;
&lt;/font&gt;&lt;/p&gt;
&lt;br /&gt;
&lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;&lt;strong&gt;Helpful Configuration Hints&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;ul style="font-family: Arial;"&gt;
    &lt;li&gt;&lt;font size="2"&gt;If you're used to Windows-R to launch programs, you can change the default SlickRun hotkey (Windows-Q) to this more familiar one by setting GrabWinR=1 in the slickRun.ini. You can find this config file in your computer's app data directory (directory locations vary based on the OS), but it won't actually be created until you close SlickRun for the first time. &lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font size="2"&gt;I also like turning the ChaseCursor option on so that launcher window pops up where ever your cursor happens to be after hitting the hotkey combination. This saves me from having to shift my focus to a different part of the screen... Yes, I know that it seems lazy beyond words to recommend a feature just because it saves my eyeballs from having to move a few centimeters.&lt;/font&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style="font-family: Arial;"&gt;&lt;font size="2"&gt;&lt;strong&gt;Notes about Vista&lt;/strong&gt;&lt;/font&gt;&lt;/p&gt;
&lt;ul style="font-family: Arial;"&gt;
    &lt;li&gt;&lt;font size="2"&gt;SlickRun is not quite as compelling on Vista because of the built in launcher in the Vista start menu. However, I still like using it on Vista because it offers more flexibility in terms of creating more logical words for program names as well as automatically passing in parameters to the program.&lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font size="2"&gt;Setting up magic words by dragging shortcuts from the start menu to the SlickRun prompt doesn't work on Vista for some reason.&lt;/font&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;font size="2"&gt;&lt;span style="font-weight: bold; font-family: Arial;"&gt;Interesting SlickRun Factoid&lt;br /&gt;
&lt;/span&gt;&lt;/font&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;font size="2"&gt;&lt;span style="font-family: Arial;"&gt;This was actually written in Delphi. I'm going to let you come up with your own Delphi jokes so as to avoid any hate mail from either one of the remaining Delphi programmers out there. &lt;br /&gt;
    &lt;/span&gt;&lt;/font&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt; &lt;a href="http://reddit.com/submit?url=http://geekswithblogs.net/coredump/archive/2007/12/15/117732.aspx&amp;amp;title=Friends+Don%27t+Let+Friends+Use+the+Start+Menu++"&gt;&lt;img src="http://webhelperbrowser.com/i/reddit.gif" alt="add to Reddit" /&gt;&lt;/a&gt; &lt;a href="http://digg.com/submit?phase=2&amp;amp;url=http://geekswithblogs.net/coredump/archive/2007/12/15/117732.aspx"&gt;&lt;img src="http://webhelperbrowser.com/i/digg.gif" alt="digg it" /&gt;&lt;/a&gt; &lt;a href="http://del.icio.us/post?url=http://geekswithblogs.net/coredump/archive/2007/12/15/117732.aspx&amp;amp;title=Friends+Don%27t+Let+Friends+Use+the+Start+Menu++"&gt;&lt;img src="http://webhelperbrowser.com/i/delicious.gif" alt="add to del.icio.us" /&gt;&lt;/a&gt; &lt;a href="http://technorati.com/faves?sub=addfavbtn&amp;amp;add=http://geekswithblogs.net/coredump"&gt;&lt;img alt="Add to Technorati Favorites" src="http://static.technorati.com/pix/fave/btn-fave2.png" /&gt;&lt;/a&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117732"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117732" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/coredump/aggbug/117732.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Russell Ball</dc:creator>
            <guid>http://geekswithblogs.net/coredump/archive/2007/12/15/117732.aspx</guid>
            <pubDate>Sat, 15 Dec 2007 06:35:48 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/coredump/comments/117732.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/coredump/archive/2007/12/15/117732.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/coredump/comments/commentRss/117732.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/coredump/services/trackbacks/117732.aspx</trackback:ping>
        </item>
        <item>
            <title>A Touching VSS Moment</title>
            <link>http://geekswithblogs.net/coredump/archive/2007/12/06/117459.aspx</link>
            <description>&lt;font size="2"&gt;&lt;span style="font-family: Arial;"&gt;Today it was decided that a bug fix that I recently added to our production branch in Visual Source Safe would not be included in an upcoming hotfix release as originally planned, so I was asked to remove it. &lt;/span&gt;&lt;br style="font-family: Arial;" /&gt;
&lt;br style="font-family: Arial;" /&gt;
&lt;span style="font-family: Arial;"&gt;My fix only touched 6 files, so my first thought was just to do it manually. Then I saw the rollback button in the 'Show History' window. If I were a betting man, I would have put good money on this functionality not only failing, but also wreaking havoc with our version history. However, I was feeling strangely brave today so I held my breath and clicked the button anyways.&lt;/span&gt;&lt;br style="font-family: Arial;" /&gt;
&lt;/font&gt;&lt;br style="font-family: Arial;" /&gt;
&lt;font size="2"&gt;&lt;span style="font-family: Arial;"&gt;Contrary to all expectations, it actually worked. It erased the historical records that came after the version I rolled back to, &lt;/span&gt;&lt;span style="font-family: Arial;"&gt;but since I already had those changes merged into the mainline I was in a forgiving mood and considered it an unfettered success.&lt;/span&gt;&lt;br style="font-family: Arial;" /&gt;
&lt;br style="font-family: Arial;" /&gt;
&lt;span style="font-family: Arial;"&gt;In fact, I was so pleasantly surprised that I started to utter what might have been the first positive words about VSS that ever came out of my mouth. However, before I could finish my sentence I was greeted with this response.&lt;/span&gt;&lt;br style="font-family: Arial;" /&gt;
&lt;span style="font-family: Arial;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;img vspace="10" hspace="10" align="absmiddle" src="http://farm3.static.flickr.com/2237/2091197327_5cd1241bed.jpg?v=0" style="font-family: Arial;" alt="" /&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;span style="font-family: Arial;"&gt;&lt;br /&gt;
I guess VSS was verklempt due to my kind words. Either that or it detected the ever so subtle note of sarcasm in my voice and closed in a huff. Truth be told, I don't think it ever forgave me for the &lt;a href="http://geekswithblogs.net/coredump/archive/2007/11/08/116703.aspx"&gt;poem&lt;/a&gt; I wrote about it several weeks ago.&lt;/span&gt;&lt;br /&gt;
&lt;br style="font-family: Arial;" /&gt;
&lt;span style="font-family: Arial;"&gt;I bet SubVersion is not this sensitive to criticism.&lt;/span&gt;&lt;br style="font-family: Arial;" /&gt;
&lt;/font&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117459"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=117459" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/coredump/aggbug/117459.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Russell Ball</dc:creator>
            <guid>http://geekswithblogs.net/coredump/archive/2007/12/06/117459.aspx</guid>
            <pubDate>Fri, 07 Dec 2007 05:41:05 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/coredump/comments/117459.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/coredump/archive/2007/12/06/117459.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/coredump/comments/commentRss/117459.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/coredump/services/trackbacks/117459.aspx</trackback:ping>
        </item>
        <item>
            <title>A Couple Firefox Add-On Gems</title>
            <link>http://geekswithblogs.net/coredump/archive/2007/11/17/116904.aspx</link>
            <description>&lt;font size="2"&gt;&lt;span style="font-family: Arial;"&gt;This week I installed a few nifty Firefox Add-Ons, &lt;/span&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/12" style="font-family: Arial;"&gt;All-In-One-Gestures&lt;/a&gt;&lt;span style="font-family: Arial;"&gt; and  &lt;/span&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/1419" style="font-family: Arial;"&gt;IE Tab&lt;/a&gt;&lt;span style="font-family: Arial;"&gt;.  &lt;/span&gt;&lt;br style="font-family: Arial;" /&gt;
&lt;br style="font-family: Arial;" /&gt;
&lt;span style="font-weight: bold; font-family: Arial;"&gt;I tried All-In-One-Gestures after watching how fast a co-worker was able to navigate on the&lt;/span&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;img vspace="10" hspace="10" align="left" src="http://farm3.static.flickr.com/2125/2038196619_ac2943540f.jpg?v=0" alt="" style="font-family: Arial;" /&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;span style="font-weight: bold; font-family: Arial;"&gt; web by using this Add-On&lt;/span&gt;&lt;span style="font-family: Arial;"&gt;. It allows you to right-click anywhere on a web page and move the mouse left to go backward or right to go for forward. &lt;/span&gt;&lt;br style="font-family: Arial;" /&gt;
&lt;br style="font-family: Arial;" /&gt;
&lt;span style="font-family: Arial;"&gt;Navigating this way is definitely much faster than using the browser toolbar buttons and helps me stay in a better flow when trying to quickly scan oodles of google results. &lt;/span&gt;&lt;br style="font-family: Arial;" /&gt;
&lt;br style="font-family: Arial;" /&gt;
&lt;span style="font-family: Arial;"&gt; For some reason I also really like the little red line affect that shows up on the page, but I'm easily impressed like that.&lt;/span&gt;&lt;br style="font-family: Arial;" /&gt;
&lt;br style="font-family: Arial;" /&gt;
&lt;span style="font-family: Arial;"&gt; The other Add-On, &lt;/span&gt;&lt;span style="font-weight: bold; font-family: Arial;"&gt;IE Tab, lets you view how a web page will be displayed in Internet Explorer by simply clicking on a button at the bottom of the page&lt;/span&gt;&lt;span style="font-family: Arial;"&gt;. This came in handy when I was trying to figure out why a Cruise Control report generated by FxCop was not working. On a hunch, I toggled to IE and realized that the XSL had browser compatibility issues because it worked fine in IE. It was nice to be able to verify this by simply toggling view modes rather than having to start a different browser and then navigate to the page.&lt;/span&gt;&lt;br style="font-family: Arial;" /&gt;
&lt;br style="font-family: Arial;" /&gt;
&lt;span style="font-weight: bold; font-family: Arial;"&gt;The moral of the story:&lt;/span&gt;&lt;span style="font-family: Arial;"&gt; Always pay attention to how your co-workers do things. I don't think I ever met somebody who didn't have at least one time saving tool or trick up their sleeves that I could steal to my great benefit. I like to think of every productivity enhancing tool or technique as a little investment. It may take a little "seed money" in terms of time and effort, but it is amazing how quickly the dividends begin to pay off so that my overall time savings quickly surpasses my initial investment.&lt;/span&gt;&lt;br style="font-family: Arial;" /&gt;
&lt;/font&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=116904"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=116904" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/coredump/aggbug/116904.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Russell Ball</dc:creator>
            <guid>http://geekswithblogs.net/coredump/archive/2007/11/17/116904.aspx</guid>
            <pubDate>Sat, 17 Nov 2007 18:21:15 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/coredump/comments/116904.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/coredump/archive/2007/11/17/116904.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/coredump/comments/commentRss/116904.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/coredump/services/trackbacks/116904.aspx</trackback:ping>
        </item>
        <item>
            <title>EditPlus: A Kinder, Gentler Way To Build Nant Scripts</title>
            <link>http://geekswithblogs.net/coredump/archive/2007/11/08/116729.aspx</link>
            <description>&lt;font size="2"&gt;&lt;span style="font-family: Arial;"&gt;I've been working on Nant scripts this week and the experience has been much more enjoyable since a co-worker showed me how he used &lt;/span&gt;&lt;a href="http://www.editplus.com/download.html" style="font-family: Arial;"&gt;EditPlus&lt;/a&gt;&lt;span style="font-family: Arial;"&gt; &lt;/span&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;span style="font-family: Arial;"&gt;(thanks Raoul).&lt;/span&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;span style="font-family: Arial;"&gt; After a few quick customizations, I was able to not only get syntax highlighting for my build files but also execute Nant from within the tool and see the output from the bottom pane. Anything that decreases context switching when I have a gajillion windows open is pretty nifty in my book.&lt;br /&gt;
&lt;br /&gt;
Here's a picture of a build file with my custom button circled at the top and the nant output in the bottom pane..&lt;br style="font-family: Arial;" /&gt;
&lt;/span&gt; &lt;br style="font-family: Arial;" /&gt;
&lt;img alt="" src="http://farm3.static.flickr.com/2149/1925374229_a4c781e14e.jpg?v=0" style="font-family: Arial;" /&gt;&lt;br style="font-family: Arial;" /&gt;
&lt;br style="font-family: Arial;" /&gt;
&lt;span style="font-family: Arial;"&gt;Here are a list of tweaks that I made:&lt;/span&gt;&lt;br style="font-family: Arial;" /&gt;
&lt;/font&gt;
&lt;ul style="font-family: Arial;"&gt;
    &lt;li&gt;&lt;font size="2"&gt;For syntax highlighting:&lt;br /&gt;
    &lt;/font&gt;
    &lt;ol&gt;
        &lt;li&gt;&lt;font size="2"&gt;Under the Document menu, go to 'Change File Type' and select XML.&lt;br /&gt;
        &lt;/font&gt;&lt;/li&gt;
    &lt;/ol&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;font size="2"&gt;To create a custom button that will execute the build you are editing:&lt;/font&gt; &lt;font size="2"&gt;&lt;br /&gt;
    &lt;/font&gt;
    &lt;ol&gt;
        &lt;li&gt;&lt;font size="2"&gt;Select 'UserToolbar' under the View menu to get the user configurable buttons to appear.&lt;/font&gt;&lt;/li&gt;
        &lt;li&gt;&lt;font size="2"&gt;Click on the first button &lt;/font&gt;&lt;font size="2"&gt;(the hammer icon)&lt;/font&gt;&lt;font size="2"&gt; of the user toolbar that appears and choose 'Configure User Tools'.&lt;/font&gt;&lt;/li&gt;
        &lt;li&gt;&lt;font size="2"&gt;On the dialog box that appears, click the 'Add Tool' button and select 'Program'. &lt;br /&gt;
        &lt;/font&gt;&lt;/li&gt;
        &lt;li&gt;&lt;font size="2"&gt;For the Command field, navigate to the location of your Nant executable.&lt;/font&gt;&lt;/li&gt;
        &lt;li&gt;&lt;font size="2"&gt;For Argument field, enter the buildfile argument (-f:) and then choose 'FileName' from the drop down so that the name of the current build file you are editing will dynamically be sent as a command line parameter.&lt;/font&gt;&lt;/li&gt;
        &lt;li&gt;&lt;font size="2"&gt;For the Initial Directory textbox, choose 'File Directory' so that the path of the current file will be dynamically sent as a command line parameter.&lt;br /&gt;
        &lt;/font&gt;&lt;/li&gt;
    &lt;/ol&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;font size="2"&gt;To view the output from Nant in the bottom pane:&lt;/font&gt;
    &lt;ol&gt;
        &lt;li&gt;&lt;font size="2"&gt;Click on the 'Capture Output' checkbox from the previous dialog box.&lt;/font&gt;     &lt;/li&gt;
    &lt;/ol&gt;
    &lt;/li&gt;
&lt;/ul&gt;
&lt;font size="2"&gt;In order to execute your Nant script, simply click on the first button that becomes enabled on the user toolbar.&lt;/font&gt;&lt;font size="2"&gt; This is what the dialog box looks like for the above steps:&lt;br /&gt;
&lt;img src="http://farm3.static.flickr.com/2408/1891885523_3bb29ece64.jpg?v=0" alt="" style="font-family: Arial;" /&gt;&lt;br style="font-family: Arial;" /&gt;
&lt;br style="font-family: Arial;" /&gt;
Happy Nant scripting!&lt;br /&gt;
&lt;/font&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=116729"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=116729" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/coredump/aggbug/116729.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Russell Ball</dc:creator>
            <guid>http://geekswithblogs.net/coredump/archive/2007/11/08/116729.aspx</guid>
            <pubDate>Fri, 09 Nov 2007 02:06:36 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/coredump/comments/116729.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/coredump/archive/2007/11/08/116729.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/coredump/comments/commentRss/116729.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/coredump/services/trackbacks/116729.aspx</trackback:ping>
        </item>
        <item>
            <title>A Poetic Tribute to Visual Source Safe</title>
            <link>http://geekswithblogs.net/coredump/archive/2007/11/08/116703.aspx</link>
            <description>&lt;font size="2"&gt;&lt;span style="font-family: Arial;"&gt;Recent source control woes have inspired me to write this little poem about my least favorite source control system.&lt;/span&gt;&lt;br style="font-family: Arial;" /&gt;
&lt;br style="font-family: Arial;" /&gt;
&lt;/font&gt;
&lt;div style="font-family: Arial;"&gt;
&lt;div style="margin-left: 40px;"&gt;&lt;font size="2"&gt;&lt;span style="font-style: italic;"&gt; VSS, I hate you so&lt;/span&gt;&lt;br style="font-style: italic;" /&gt;
&lt;span style="font-style: italic;"&gt; And I can not wait to see you go.&lt;/span&gt;&lt;br style="font-style: italic;" /&gt;
&lt;br style="font-style: italic;" /&gt;
&lt;span style="font-style: italic;"&gt; You have the word safe in your name &lt;/span&gt;&lt;br style="font-style: italic;" /&gt;
&lt;span style="font-style: italic;"&gt; Yet since you came&lt;/span&gt;&lt;br style="font-style: italic;" /&gt;
&lt;span style="font-style: italic;"&gt; my IDE has crashed&lt;/span&gt;&lt;br style="font-style: italic;" /&gt;
&lt;span style="font-style: italic;"&gt; And my files have been trashed.&lt;/span&gt;&lt;br style="font-style: italic;" /&gt;
&lt;br style="font-style: italic;" /&gt;
&lt;span style="font-style: italic;"&gt; If your integration were not so lame,&lt;/span&gt;&lt;br style="font-style: italic;" /&gt;
&lt;span style="font-style: italic;"&gt; Then maybe I could do a simple rename;&lt;/span&gt;&lt;br style="font-style: italic;" /&gt;
&lt;span style="font-style: italic;"&gt; All I wanted was a little bit of history&lt;/span&gt;&lt;br style="font-style: italic;" /&gt;
&lt;span style="font-style: italic;"&gt; But a few files I did purge and now it's all a mystery.&lt;/span&gt;&lt;br style="font-style: italic;" /&gt;
&lt;br style="font-style: italic;" /&gt;
&lt;span style="font-style: italic;"&gt; Branching and merging is something we no longer dare&lt;/span&gt;&lt;br style="font-style: italic;" /&gt;
&lt;span style="font-style: italic;"&gt; So we copy and paste with much care;&lt;/span&gt;&lt;br style="font-style: italic;" /&gt;
&lt;span style="font-style: italic;"&gt; A changeset would help reduce the friction&lt;/span&gt;&lt;br style="font-style: italic;" /&gt;
&lt;span style="font-style: italic;"&gt;and make release reports seem less like fiction.&lt;/span&gt;&lt;br style="font-style: italic;" /&gt;
&lt;br style="font-style: italic;" /&gt;
&lt;span style="font-style: italic;"&gt; If only you would realize&lt;/span&gt;&lt;br style="font-style: italic;" /&gt;
&lt;span style="font-style: italic;"&gt; that it should not take days to Analyze;&lt;/span&gt;&lt;br style="font-style: italic;" /&gt;
&lt;span style="font-style: italic;"&gt; And it is wrong that I should have to be leery&lt;/span&gt;&lt;br style="font-style: italic;" /&gt;
&lt;span style="font-style: italic;"&gt; when all I want to do is a simple query.&lt;/span&gt;&lt;br style="font-style: italic;" /&gt;
&lt;br style="font-style: italic;" /&gt;
&lt;span style="font-style: italic;"&gt; Because of your file based sharing&lt;/span&gt;&lt;br style="font-style: italic;" /&gt;
&lt;span style="font-style: italic;"&gt;About disk space and security we gave up caring;&lt;/span&gt;&lt;br style="font-style: italic;" /&gt;
&lt;span style="font-style: italic;"&gt; Haven't you heard of atomic commits?&lt;br /&gt;
If so, perhaps my project wouldn't be on the fritz.&lt;br /&gt;
&lt;br /&gt;
If only I could create a simple diversion&lt;/span&gt;&lt;br style="font-style: italic;" /&gt;
&lt;span style="font-style: italic;"&gt;Then I could quickly upgrade to Subversion.&lt;br /&gt;
Perhaps if we had Perforce or Vault&lt;br /&gt;
Then our development wouldn't grind to a halt.&lt;br /&gt;
&lt;br style="font-style: italic;" /&gt;
&lt;/span&gt; &lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;span style="font-style: italic;"&gt; VSS, I hate you so&lt;/span&gt;&lt;br style="font-style: italic;" /&gt;
&lt;span style="font-style: italic;"&gt; And I can not wait to see you go.&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/font&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;font size="2"&gt;&lt;span style="font-family: Arial;"&gt;For a non-rhyming look at some of the short-comings of VSS, I recommend this &lt;/span&gt;&lt;a style="font-family: Arial;" href="http://www.highprogrammer.com/alan/windev/sourcesafe.html"&gt;article &lt;/a&gt;&lt;span style="font-family: Arial;"&gt;by Alan de Smet.&lt;/span&gt;&lt;br style="font-family: Arial;" /&gt;
&lt;/font&gt;
&lt;div style="margin-left: 40px; font-family: Arial;"&gt; &lt;/div&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=116703"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=116703" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/coredump/aggbug/116703.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Russell Ball</dc:creator>
            <guid>http://geekswithblogs.net/coredump/archive/2007/11/08/116703.aspx</guid>
            <pubDate>Thu, 08 Nov 2007 06:03:05 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/coredump/comments/116703.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/coredump/archive/2007/11/08/116703.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/coredump/comments/commentRss/116703.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/coredump/services/trackbacks/116703.aspx</trackback:ping>
        </item>
        <item>
            <title>Still an Open Source Virgin</title>
            <link>http://geekswithblogs.net/coredump/archive/2007/11/06/116639.aspx</link>
            <description>&lt;font size="2"&gt;&lt;span style="font-family: Arial;"&gt;I was setting up Cruise Control the other day and trying to figure out why it wasn't working on a certain source control folder. I noticed a strange error in the cruise control log about there being an invalid character in the path, so I decided to take advantage of the fact that it is an open source project and download the source code so I could step through it in the debugger and see what the exact problem was. &lt;/span&gt;&lt;br style="font-family: Arial;" /&gt;
&lt;br style="font-family: Arial;" /&gt;
&lt;span style="font-family: Arial;"&gt;It wasn't long before I discovered the source of the error, which was a newline character embedded in the source control folder name. Since I am a vocal Visual Source Safe hater, I naturally assumed that the problem had to do with VSS data being corrupted so I scheduled some VSS maintenance and called it a day.&lt;/span&gt;&lt;br style="font-family: Arial;" /&gt;
&lt;br style="font-family: Arial;" /&gt;
&lt;img vspace="10" hspace="10" alt="" src="http://farm3.static.flickr.com/2153/1876577543_72bb52ec53.jpg?v=0" style="font-family: Arial;" /&gt;&lt;br style="font-family: Arial;" /&gt;
&lt;span style="font-family: Arial;"&gt;When VSS analyzer did not fix the problem, I took a closer look and realized that I had unfairly blamed VSS and the real problem was a bug in the Cruise Control code that parses out the output from the VSS command line tool (thank god PowerShell eliminates the need for much of this parsing voodoo). If the folder path in VSS is too long, then the command output wraps and Cruise Control incorrectly inserts a newline character inside the folder path.&lt;/span&gt;&lt;br style="font-family: Arial;" /&gt;
&lt;br style="font-family: Arial;" /&gt;
&lt;span style="font-family: Arial;"&gt;The problem was easy enough to fix by stripping out the rogue newline character, so I recompiled Cruise Control, replaced the problem dll, and all was well in the world.&lt;/span&gt;&lt;br style="font-family: Arial;" /&gt;
&lt;br style="font-family: Arial;" /&gt;
&lt;span style="font-family: Arial;"&gt;At that point, it occurred to me that other people must be running into this problem, so I decided to try being a good open source citizen for once and submit the bug fix. I had never tried this before, so I read the &lt;/span&gt;&lt;a href="http://cruisecontrol.sourceforge.net/contributions.html" style="font-family: Arial;"&gt;contribution procedures&lt;/a&gt;&lt;span style="font-family: Arial;"&gt; posted on the home page and followed their polite suggestions. I created a diff file of my fix, wrote up a detailed description of the problem, and even found a unit test that someone had commented out that failed under the current code base and worked with my fix.&lt;/span&gt;&lt;br style="font-family: Arial;" /&gt;
&lt;br style="font-family: Arial;" /&gt;
&lt;span style="font-family: Arial;"&gt;I was just about ready to submit a JIRA ticket in their &lt;/span&gt;&lt;a href="http://jira.public.thoughtworks.org/browse/CC" style="font-family: Arial;"&gt;bug tracking system&lt;/a&gt;&lt;span style="font-family: Arial;"&gt;, when it occurred to me that I should probably browse the current VSS tickets first. It turns out that my issue was not only recorded in the system, but had just been marked as resolved by someone else the week before. Doh! I guess I should have tried that first, huh?&lt;/span&gt;&lt;br style="font-family: Arial;" /&gt;
&lt;br style="font-family: Arial;" /&gt;
&lt;img vspace="10" hspace="10" src="http://farm3.static.flickr.com/2296/1877474870_1f41ab6666.jpg?v=0" alt="" style="font-family: Arial;" /&gt;&lt;br style="font-family: Arial;" /&gt;
&lt;br style="font-family: Arial;" /&gt;
&lt;span style="font-family: Arial;"&gt;Oh well, at least I got practice going through the procedure for being an open source contributor. There are still an lots of open tickets for the current Cruise Control release, so perhaps I'll grab one of them while I have everything already set up. &lt;/span&gt;&lt;br style="font-family: Arial;" /&gt;
&lt;br style="font-family: Arial;" /&gt;
&lt;span style="font-family: Arial;"&gt;After all, I don't want to be an open source virgin forever.&lt;/span&gt;&lt;br style="font-family: Arial;" /&gt;
&lt;/font&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=116639"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=116639" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/coredump/aggbug/116639.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Russell Ball</dc:creator>
            <guid>http://geekswithblogs.net/coredump/archive/2007/11/06/116639.aspx</guid>
            <pubDate>Tue, 06 Nov 2007 14:10:59 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/coredump/comments/116639.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/coredump/archive/2007/11/06/116639.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/coredump/comments/commentRss/116639.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/coredump/services/trackbacks/116639.aspx</trackback:ping>
        </item>
        <item>
            <title>The Resharper Challenge: What if You Could Only Have 7 Features?</title>
            <link>http://geekswithblogs.net/coredump/archive/2007/10/23/116249.aspx</link>
            <description>&lt;font size="2" style="font-family: Arial;"&gt;I was working with someone who doesn't have ReSharper today and I noticed for the first time that I have developed some feature addictions because I actually winced when I watched him fully type out a property and then manually do an "extract method" refactoring.&lt;br /&gt;
&lt;br /&gt;
This surprised me since I have only really been consistently using ReSharper for the last month and am still far from my goal of becoming a &lt;a href="http://geekswithblogs.net/coredump/archive/2007/08/30/115079.aspx"&gt;ReSharper Jedi&lt;/a&gt;. Nevertheless, the dozen or so keystrokes that I  have mastered and consistently use are making a noticeable difference in removing some of the coding noise that usually distracts me and slows me down while coding.&lt;br /&gt;
&lt;br /&gt;
In keeping with the lucky seven theme from my last post, I decided to share seven favorite features. In other words, if there were suddenly a terrible ReSharper feature shortage and the Programming Gestapo started forcing everyone to ration their features, this is what I would choose. &lt;br /&gt;
&lt;br /&gt;
&lt;/font&gt;&lt;font size="2" style="font-family: Arial;"&gt; &lt;/font&gt;&lt;font size="2" style="font-family: Arial;"&gt;(NOTE: All shortcut keys are according to the VS Bindings)&lt;br /&gt;
&lt;br /&gt;
&lt;/font&gt;
&lt;ol style="font-family: Arial;"&gt;
    &lt;li&gt;&lt;font size="2"&gt;&lt;span style="font-weight: bold;"&gt;Auto-inserting using statements&lt;/span&gt; &lt;span style="font-style: italic;"&gt;(alt + return at prompt)&lt;/span&gt; - This is by far my favorite feature. How does it know what I wanted so quickly?&lt;/font&gt;&lt;/li&gt;
    &lt;font size="2"&gt;&lt;img alt="" src="http://farm3.static.flickr.com/2399/1615960081_d6922b26f7.jpg?v=0" /&gt;&lt;/font&gt;
    &lt;li&gt;&lt;font size="2"&gt;&lt;span style="font-weight: bold;"&gt;Generating properties, constructors, &amp;amp; overrides&lt;/span&gt; &lt;span style="font-style: italic;"&gt;(Alt + Ins)&lt;/span&gt; - For properties, it lets you choose from a list of  private variables without properties. For constructors, it lets you choose from a list of possible properties to use as parameters.&lt;br /&gt;
    &lt;/font&gt;&lt;/li&gt;
    &lt;font size="2" style="font-family: Arial;"&gt;&lt;img vspace="10" hspace="50" src="http://farm3.static.flickr.com/2109/1702268879_1f49216528.jpg?v=0" alt="" /&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;span style="font-family: Arial;"&gt;     &lt;/span&gt;&lt;/font&gt;&lt;font size="2" style="font-family: Arial;"&gt;&lt;br /&gt;
    &lt;/font&gt;
    &lt;li&gt;&lt;font size="2" style="font-family: Arial;"&gt;&lt;span style="font-weight: bold;"&gt;Identifying Dead Code &lt;/span&gt;&lt;span style="font-style: italic;"&gt;(text colored gray)&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;:&lt;/span&gt; No more excuses for letting unused code clutter your code base. &lt;/font&gt;&lt;font size="2" style="font-family: Arial;"&gt;      &lt;br /&gt;
    &lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font size="2" style="font-family: Arial;"&gt;&lt;span style="font-weight: bold;"&gt;Extract Method&lt;/span&gt; &lt;span style="font-style: italic;"&gt;(Ctl + Alt + M)&lt;/span&gt; - It figures out which parameters you'll need to pass in and replaces the highlighted text with a call to the new method.&lt;/font&gt; &lt;font size="2"&gt;&lt;img vspace="10" hspace="50" src="http://farm3.static.flickr.com/2368/1703123534_6a887f05e0.jpg?v=0" style="font-family: Arial;" alt="" /&gt;&lt;span style="font-family: Arial;"&gt;     &lt;/span&gt;&lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font size="2" style="font-family: Arial;"&gt;&lt;span style="font-weight: bold;"&gt;Rename &lt;/span&gt;(F2) - This is a LOT smarter and quicker than the Visual Studio Find &amp;amp; Replace.&lt;/font&gt;&lt;font size="2" style="font-family: Arial;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/li&gt;
    &lt;li&gt;&lt;font size="2" style="font-family: Arial;"&gt;&lt;span style="font-weight: bold;"&gt;Find        Usages &lt;/span&gt;&lt;span style="font-style: italic;"&gt;(Shift + Alt + F12) - &lt;/span&gt;This also beats the pants off of Find &amp;amp; Replace for doing impact analysis.&lt;/font&gt;&lt;br style="font-family: Arial;" /&gt;
    &lt;/li&gt;
    &lt;font size="2"&gt; &lt;/font&gt; &lt;font size="2" style="font-family: Arial;"&gt;&lt;img vspace="10" hspace="50" src="http://farm3.static.flickr.com/2280/1703209860_eb79726370.jpg?v=0" alt="" /&gt;&lt;br /&gt;
    &lt;/font&gt; &lt;font size="2"&gt;
    &lt;li&gt;&lt;font size="2" style="font-family: Arial;"&gt;&lt;span style="font-weight: bold;"&gt;Go ToType&lt;/span&gt;&lt;span style="font-style: italic;"&gt; (Ctl + N) &lt;/span&gt;- I like how it pops up at my cursor, filters the list while I type, and shows the location of the files.&lt;br /&gt;
    &lt;/font&gt;&lt;/li&gt;
    &lt;/font&gt;&lt;/ol&gt;
    &lt;font size="2"&gt;&lt;font size="2" style="font-family: Arial;"&gt;     &lt;img vspace="10" hspace="100" src="http://farm3.static.flickr.com/2296/1702269109_87949b82fe.jpg?v=0" alt="" /&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;br style="font-family: Arial;" /&gt;
    &lt;/font&gt; &lt;font size="2" style="font-family: Arial;"&gt;&lt;br /&gt;
    &lt;/font&gt;&lt;/font&gt;&lt;font size="2" style="font-family: Arial;"&gt; I fully expect this list to change as I get more proficient with the tool and as I start working on a 2.0 .NET project instead of a 1.1 project so that I can use the latest version of ReSharper. &lt;br /&gt;
    &lt;/font&gt;&lt;font size="2"&gt;&lt;font size="2" style="font-family: Arial;"&gt;&lt;br /&gt;
    Which seven features would you choose? If you had to recommend one killer feature that I am missing out on, which one would it be?&lt;br /&gt;
    &lt;/font&gt;&lt;/font&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=116249"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=116249" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/coredump/aggbug/116249.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Russell Ball</dc:creator>
            <guid>http://geekswithblogs.net/coredump/archive/2007/10/23/116249.aspx</guid>
            <pubDate>Tue, 23 Oct 2007 05:28:38 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/coredump/comments/116249.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/coredump/archive/2007/10/23/116249.aspx#feedback</comments>
            <slash:comments>8</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/coredump/comments/commentRss/116249.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/coredump/services/trackbacks/116249.aspx</trackback:ping>
        </item>
        <item>
            <title>In Praise of MbUnit</title>
            <link>http://geekswithblogs.net/coredump/archive/2007/10/19/116174.aspx</link>
            <description>&lt;font size="2"&gt;&lt;span style="font-family: Arial;"&gt;I've played with MbUnit before and was immediately impressed, but I haven't tried using it on a project until today. I was surprised by how quickly and easily I was able to convert all of my NUnit tests. All I had to do was switch the references from NUnit.Framework to MbUnit.Framework and then do a quick find and replace for my using statements. After that everything magically worked. Kudos to the MbUnit team for not pulling an 'MSTest' move and renaming all the attributes and keywords. &lt;/span&gt;&lt;br style="font-family: Arial;" /&gt;
&lt;span style="font-family: Arial;"&gt;&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;
&lt;font size="2"&gt;&lt;span style="font-family: Arial;"&gt;Best of all, I was able to add several new tests quickly by simply adding parameters to my test methods and then using the MbUnit Row attribute to dynamically pass in multiple values. This simple feature not only helped eliminate quite a bit of duplicate test code, but it also encouraged me to exercise my code with more test data which immediately led me to find some new bugs.&lt;br style="font-family: Arial;" /&gt;
&lt;/span&gt;&lt;/font&gt;&lt;br /&gt;
&lt;img vspace="10" hspace="10" src="http://farm3.static.flickr.com/2226/1641809818_cd913f5812.jpg?v=0" alt="" /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;font size="2"&gt;&lt;span style="font-family: Arial;"&gt;I especially like how the MbUnit test runner lists each parameter as a separate test so you can easily see which one of the data elements caused the problem. It's also nice to have multiple views of the test at the same time (Author/Category/Namespace).&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;/font&gt;&lt;img vspace="10" hspace="10" src="http://farm3.static.flickr.com/2185/1640934435_f1dff43ea5.jpg?v=0" alt="" /&gt;&lt;br /&gt;
&lt;font size="2"&gt;&lt;br style="font-family: Arial;" /&gt;
&lt;span style="font-family: Arial;"&gt;If you haven't already tried using MbUnit, I highly recommend it. There is almost no effort involved in learning to use it, especially if you've ever used NUnit.&lt;/span&gt;&lt;/font&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=116174"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=116174" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/coredump/aggbug/116174.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Russell Ball</dc:creator>
            <guid>http://geekswithblogs.net/coredump/archive/2007/10/19/116174.aspx</guid>
            <pubDate>Fri, 19 Oct 2007 22:22:34 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/coredump/comments/116174.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/coredump/archive/2007/10/19/116174.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/coredump/comments/commentRss/116174.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/coredump/services/trackbacks/116174.aspx</trackback:ping>
        </item>
    </channel>
</rss>