<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;C0MFRncyfyp7ImA9WhBbEU8.&quot;"><id>tag:blogger.com,1999:blog-4726251688144615011</id><updated>2013-05-09T10:43:37.997-07:00</updated><category term="C#" /><category term="NUnit" /><category term="XUnit" /><category term="TimeAction Action Debug Timing StopWatch Lambda Lambdas" /><category term="PowerShell" /><category term="NuGet" /><category term="Git" /><category term="bug" /><category term="TFS" /><category term="OData" /><category term="StatLight" /><category term="Unity" /><category term="UnitDriven" /><category term="i4o" /><category term="MSTest" /><category term="Unit Tests" /><category term="Silverlight" /><category term="bisect" /><category term="Testing" /><title>Developing on Staxmanade</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://staxmanade.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://staxmanade.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Jason Jarrett</name><uri>https://plus.google.com/112910204617314300568</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-Lz16PAsLf5Q/AAAAAAAAAAI/AAAAAAAAAAA/UnHrBhHKHC0/s512-c/photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>122</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/DevelopingOnStaxmande" /><feedburner:info uri="developingonstaxmande" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;C0MFSX47eyp7ImA9WhBbEU8.&quot;"><id>tag:blogger.com,1999:blog-4726251688144615011.post-7531002266877282598</id><published>2013-05-09T10:43:00.001-07:00</published><updated>2013-05-09T10:43:38.003-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-05-09T10:43:38.003-07:00</app:edited><title>Developer humor</title><content type="html">&lt;p&gt;I literally cried this morning as I scanned these posts.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Note: Don't have a drink in hand or mouth when reading these.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Enjoy:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="http://martinvalasek.com/blog/pictures-from-a-developers-life" href="http://martinvalasek.com/blog/pictures-from-a-developers-life"&gt;http://martinvalasek.com/blog/pictures-from-a-developers-life&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a title="http://martinvalasek.com/blog/pictures-from-a-developers-life-part-2" href="http://martinvalasek.com/blog/pictures-from-a-developers-life-part-2"&gt;http://martinvalasek.com/blog/pictures-from-a-developers-life-part-2&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a title="http://martinvalasek.com/blog/pictures-from-a-developers-life-part-3" href="http://martinvalasek.com/blog/pictures-from-a-developers-life-part-3"&gt;http://martinvalasek.com/blog/pictures-from-a-developers-life-part-3&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;If you’re a git user.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="http://wheningit.tumblr.com/" href="http://wheningit.tumblr.com/"&gt;http://wheningit.tumblr.com/&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;img src="http://feeds.feedburner.com/~r/DevelopingOnStaxmande/~4/wVvu8EELCbI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://staxmanade.blogspot.com/feeds/7531002266877282598/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4726251688144615011&amp;postID=7531002266877282598" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/7531002266877282598?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/7531002266877282598?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevelopingOnStaxmande/~3/wVvu8EELCbI/developer-humor.html" title="Developer humor" /><author><name>Jason Jarrett</name><uri>https://plus.google.com/112910204617314300568</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-Lz16PAsLf5Q/AAAAAAAAAAI/AAAAAAAAAAA/UnHrBhHKHC0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://staxmanade.blogspot.com/2013/05/developer-humor.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMFQHcyfyp7ImA9WhBQF0g.&quot;"><id>tag:blogger.com,1999:blog-4726251688144615011.post-1212077867569423204</id><published>2013-03-19T21:06:00.001-07:00</published><updated>2013-03-19T21:06:51.997-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-19T21:06:51.997-07:00</app:edited><title>RichEditBox gives UnauthorizedAccessException (Access is denied) error when SetText called.</title><content type="html">&lt;p&gt;While working on a little &lt;a href="http://apps.microsoft.com/windows/en-US/app/share-data-inspector/c33bae47-43d7-4d1b-bbee-01f09850d6dc" target="_blank"&gt;WinRT app&lt;/a&gt; I recently spent WAY too much time trying to figure out why I was getting the following exception&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;System.UnauthorizedAccessException was unhandled by user code      &lt;br /&gt;&amp;#160; HResult=-2147024891       &lt;br /&gt;&amp;#160; Message=Access is denied. (Exception from HRESULT: 0x80070005 (E_ACCESSDENIED))       &lt;br /&gt;&amp;#160; Source=Windows.UI       &lt;br /&gt;&amp;#160; StackTrace:       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; at Windows.UI.Text.ITextDocument.SetText(TextSetOptions options, String value)&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;when all I was trying to do was programmatically set the text of a RichEditBox. EX:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;theRichEditBox.&lt;strong&gt;Document.SetText&lt;/strong&gt;(Windows.UI.Text.TextSetOptions.FormatRtf, textValue);&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;After searching and searching and eventually taking a walk to cool down, I decided that I would play with the IsReadOnly flag. I have it set to “True” in the XAML because I don’t want users to edit the text. I then wondered if this was causing the problem.&lt;/p&gt;  &lt;p&gt;I tweaked the code as shown below and it magically started working. Notice how I’m turning off the IsReadOnly flag off, then setting the text, and returning the read only state after the text has changed.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;theRichEditBox.&lt;strong&gt;IsReadOnly = false;&lt;/strong&gt;       &lt;br /&gt;theRichEditBox.&lt;strong&gt;Document.SetText&lt;/strong&gt;(Windows.UI.Text.TextSetOptions.FormatRtf, textValue);       &lt;br /&gt;theRichEditBox.&lt;strong&gt;IsReadOnly = true;&lt;/strong&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Dear Exception: you were not helpful. Sigh.&lt;/p&gt;  &lt;img src="http://feeds.feedburner.com/~r/DevelopingOnStaxmande/~4/B4xmbyLRaco" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://staxmanade.blogspot.com/feeds/1212077867569423204/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4726251688144615011&amp;postID=1212077867569423204" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/1212077867569423204?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/1212077867569423204?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevelopingOnStaxmande/~3/B4xmbyLRaco/richeditbox-gives-unauthorizedaccessexc.html" title="RichEditBox gives UnauthorizedAccessException (Access is denied) error when SetText called." /><author><name>Jason Jarrett</name><uri>https://plus.google.com/112910204617314300568</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-Lz16PAsLf5Q/AAAAAAAAAAI/AAAAAAAAAAA/UnHrBhHKHC0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://staxmanade.blogspot.com/2013/03/richeditbox-gives-unauthorizedaccessexc.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4HQX4zcSp7ImA9WhBQEUk.&quot;"><id>tag:blogger.com,1999:blog-4726251688144615011.post-6336817187080513636</id><published>2013-03-12T21:12:00.001-07:00</published><updated>2013-03-12T21:12:10.089-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-03-12T21:12:10.089-07:00</app:edited><title>Windows 8 Share Charm Data Inspector</title><content type="html">&lt;p&gt;In a previous &lt;a href="http://elegantcode.com/2013/03/03/windows-8-hackathon-good-for-participants-bad-for-microsoft/" target="_blank"&gt;post&lt;/a&gt; I mentioned I would share the app I created during a Windows 8 hackathon event.&lt;/p&gt;  &lt;p&gt;I spent some more time adding polish, testing, re-thinking my initial designs and today, I’m excited to say that it is now in the &lt;a href="http://apps.microsoft.com/windows/en-US/app/share-data-inspector/c33bae47-43d7-4d1b-bbee-01f09850d6dc" target="_blank"&gt;app store&lt;/a&gt;!&lt;/p&gt;  &lt;h4&gt;What does this app do?&lt;/h4&gt;  &lt;p&gt;The &lt;a href="http://apps.microsoft.com/windows/en-US/app/share-data-inspector/c33bae47-43d7-4d1b-bbee-01f09850d6dc" target="_blank"&gt;Share Data Inspector&lt;/a&gt; is an application that allows you to inspect the details of data being shared from other applications through the Windows 8 Share Charm (Win+H).&lt;/p&gt;  &lt;p&gt;For example, if you open the &lt;a href="http://apps.microsoft.com/windows/en-us/app/video/64b22df1-5a9c-4c88-aa1f-42cefaf8b281" target="_blank"&gt;Video&lt;/a&gt; app, select a movie and use the share charm (Win+H) to share the video, what data is actually shared? The &lt;a href="http://apps.microsoft.com/windows/en-US/app/share-data-inspector/c33bae47-43d7-4d1b-bbee-01f09850d6dc" target="_blank"&gt;Share Data Inspector&lt;/a&gt; will appear up as an application you can share the just about any data with and you can inspect at a lower level what values are shared.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;This application will give you insights into data that you never thought was being shared.&lt;/strong&gt;&lt;/p&gt;  &lt;h4&gt;How do I get the app?&lt;/h4&gt;  &lt;p&gt;Open your Windows 8 App Store and search for “&lt;a href="http://apps.microsoft.com/windows/en-US/app/share-data-inspector/c33bae47-43d7-4d1b-bbee-01f09850d6dc" target="_blank"&gt;Share Data Inspector&lt;/a&gt;”. (or click the link “View in Windows Store” button.&lt;/p&gt;  &lt;h4&gt;I’d like to suggest a feature:&lt;/h4&gt;  &lt;p&gt;If you’ve downloaded the trial app and would like to see some improvements. Head &lt;a href="https://github.com/staxmanade/ShareDataInspector/issues" target="_blank"&gt;over to this site, suggest a feature&lt;/a&gt; and help this application grow from a hackathon created app into a full-fledged application.&lt;/p&gt;  &lt;p&gt;Happy Sharing!&lt;/p&gt;  &lt;img src="http://feeds.feedburner.com/~r/DevelopingOnStaxmande/~4/EbggCNXCMLI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://staxmanade.blogspot.com/feeds/6336817187080513636/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4726251688144615011&amp;postID=6336817187080513636" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/6336817187080513636?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/6336817187080513636?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevelopingOnStaxmande/~3/EbggCNXCMLI/windows-8-share-charm-data-inspector.html" title="Windows 8 Share Charm Data Inspector" /><author><name>Jason Jarrett</name><uri>https://plus.google.com/112910204617314300568</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-Lz16PAsLf5Q/AAAAAAAAAAI/AAAAAAAAAAA/UnHrBhHKHC0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://staxmanade.blogspot.com/2013/03/windows-8-share-charm-data-inspector.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0UAR3c5fip7ImA9WhBWGEQ.&quot;"><id>tag:blogger.com,1999:blog-4726251688144615011.post-8784764381670118134</id><published>2013-03-07T22:55:00.001-08:00</published><updated>2013-04-13T15:14:06.926-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-04-13T15:14:06.926-07:00</app:edited><title>Windows 8 Hackathon: Good for participants. Bad for Microsoft.</title><content type="html">Last weekend I participated in a &lt;a href="http://renohackathon.com/" target="_blank"&gt;Windows 8 hackathon&lt;/a&gt;. In 24 hours of coding I had an app created and submitted to the App Store for certification.&lt;br /&gt;
&lt;h4&gt;
24 hours to create an app?&lt;/h4&gt;
I'll share details about the app I created in a future post. &lt;strong&gt;For now, I have since removed my app from the review process in the Developer Portal.&lt;/strong&gt;&lt;br /&gt;
Before I get into why I (temporarily) removed my app. I would like to first talk about a number of the real benefits I saw with the hackathon.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;I work from home as a remote employee. &lt;a href="http://www.bobcowherd.com/2013/03/managing-remote-teams.html?m=1"&gt;Don't worry I'm not at Yahoo&lt;/a&gt;. The event was a fun change of pace; working in a room of developers hacking away on their own ideas. You could feel the energy and this energy is probably why it was possible to burn the midnight oil hacking on my own app. &lt;/li&gt;
&lt;li&gt;This contest forced me to work all the way through submitting an app to the store which I believe to be more of a mental hurdle than an actual one. This process was definitely made easier with Microsoft on hand to answer questions and get over some of the non-obvious steps in the process. &lt;/li&gt;
&lt;li&gt;Working in a room with the others proved to be useful when you got stuck on something. Shouting out &lt;a href="http://twitter.com/#!/jessetanderson/status/308087741256704001"&gt;'I'm stuck on problem X&lt;/a&gt;’ and have someone there to point you in the right direction and unblock you is great. &lt;/li&gt;
&lt;li&gt;The short timeframe forces you to focus on your &lt;a href="http://en.wikipedia.org/wiki/Minimum_viable_product"&gt;Minimum Viable Product&lt;/a&gt;. Work on what is necessary and avoid getting side tracked. &lt;/li&gt;
&lt;li&gt;Related to the focus above I really got into the zone hacking away at my app; this certainly reminded me of why I love this profession. &lt;/li&gt;
&lt;li&gt;Meet developers in the area. &lt;/li&gt;
&lt;li&gt;Learn interesting problem domains and how others tackle them in their apps. &lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
Now, why am I really writing this post?&lt;/h4&gt;
&lt;strong&gt;I believe Microsoft is shooting themselves in the foot with how they are running these hackathons.&lt;/strong&gt;&lt;br /&gt;
I can’t say I speak for how the hackathons are being run, but my experience showed me the following.&lt;br /&gt;
With Microsoft’s own employees running these events and &lt;a href="http://idioms.thefreedictionary.com/give+a+lick+and+a+promise" target="_blank"&gt;not giving a lick&lt;/a&gt; to the quality of the applications being submitted they are setting themselves up for failure.&lt;br /&gt;
&lt;strike&gt;I can see from a marketing perspective that having a large number of apps in the store will help them drive more people to their platform.&lt;/strike&gt; That’s crap. There are far too many reasons Microsoft should be driving &lt;strong&gt;QUALITY&lt;/strong&gt; into the store and not quantity.&lt;br /&gt;
Let’s list a few reasons this is going to backfire:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;NOBODY wants to use crappy apps developed in 24 hours. NOBODY! &lt;/li&gt;
&lt;li&gt;There are very few apps that can be written in 24 hours without maintaining some sort of a quality bar. &lt;/li&gt;
&lt;li&gt;The certification process will get clogged causing the testers to care less about finding quality issues and pounding through “numbers”. &lt;/li&gt;
&lt;li&gt;We'll have a huge collection of crappy apps where the sheer number of apps will make finding a good quality app nearly impossible. &lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
How can they make this better?&lt;/h4&gt;
Something interesting about this is generally when you talk about Pros/Cons to something, you have to give-up something to fix a Con and that sometimes means taking away from the Pros.&lt;br /&gt;
However, I feel like we can keep ALL of the pros I listed above while also reducing the amount of Cons if only Microsoft incentivized their employees to drive quality into the store.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Do&lt;/strong&gt; – push people to get an app done and help them through the app store &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Do&lt;/strong&gt; – provide guidance around how to build-in quality &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Do&lt;/strong&gt; – provide some metrics that will help the app succeed in the end (design, best practices, possibly even saying, “That’s been done”) &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Do&lt;/strong&gt; – recommend they cancel submitting their application if it hasn’t met the developers quality metric. (This isn’t going to save the app store, but would help to reduce the number of write-once-let-die-in-the-store apps) &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Don't – &lt;/strong&gt;offer a prize for "the most apps submitted" within 24 hours. &lt;/li&gt;
&lt;/ul&gt;
I’ve developed on the Microsoft platform for a long time and really hope there is a place for the Microsoft App Store in the future, but with their push for a large number of apps they’re not setting themselves up for an easy road back in the game.&lt;img src="http://feeds.feedburner.com/~r/DevelopingOnStaxmande/~4/fcPkxcMHncE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://staxmanade.blogspot.com/feeds/8784764381670118134/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4726251688144615011&amp;postID=8784764381670118134" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/8784764381670118134?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/8784764381670118134?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevelopingOnStaxmande/~3/fcPkxcMHncE/windows-8-hackathon-good-for.html" title="Windows 8 Hackathon: Good for participants. Bad for Microsoft." /><author><name>Jason Jarrett</name><uri>https://plus.google.com/112910204617314300568</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-Lz16PAsLf5Q/AAAAAAAAAAI/AAAAAAAAAAA/UnHrBhHKHC0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://staxmanade.blogspot.com/2013/03/windows-8-hackathon-good-for.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YCRn47fCp7ImA9WhBSF08.&quot;"><id>tag:blogger.com,1999:blog-4726251688144615011.post-5738252807281431512</id><published>2013-02-24T10:06:00.001-08:00</published><updated>2013-02-24T10:06:07.004-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-02-24T10:06:07.004-08:00</app:edited><title>DefinitelyTyped TypeScript definitions now on NuGet</title><content type="html">&lt;p&gt;I recently started playing with &lt;a href="http://typescriptlang.com"&gt;TypeScript&lt;/a&gt; on an asp.net MVC web application.&lt;/p&gt;  &lt;p&gt;We're leveraging some third party js libraries and found the type definition files over at &lt;a href="https://github.com/DefinitelyTyped"&gt;DefinitelyTyped&lt;/a&gt; a huge help when dealing with libraries not originally written in TypeScript.&lt;/p&gt;  &lt;p&gt;The first thing I tried to do was add them via &lt;a href="http://NuGet.org"&gt;NuGet&lt;/a&gt; and when I didn’t see them up there, I strolled to the DefinitelyTyped issues list and saw an open GitHub issue requesting the functionality.&lt;/p&gt;  &lt;p&gt;So I took on the task.&lt;a href="https://github.com/DefinitelyTyped/NugetAutomation" target="_blank"&gt; Created a PowerShell script&lt;/a&gt; to automate publishing and synchronize changes to the DefinitelyTyped repo up to NuGet.&lt;/p&gt;  &lt;p&gt;This morning I pulled the trigger and published 127 different NuGet packages for each DefinitelyTyped TypeScript definitions.&lt;/p&gt;  &lt;p&gt;As an example:&lt;/p&gt;  &lt;p&gt;If you ran this in visual studio &lt;a href="http://docs.nuget.org/docs/start-here/using-the-package-manager-console" target="_blank"&gt;NuGet Package Manager console&lt;/a&gt;&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Install-Package angularjs.TypeScript.DefinitelyTyped&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;You would get the following installed into your project&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-M-Q0keizTuw/USpWhznpr7I/AAAAAAAAAdY/D-BmRudlu7o/s1600-h/image6.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-2JCiZc1PA0s/USpWiWDj7YI/AAAAAAAAAdg/65ME1YNxY8Y/image_thumb2.png?imgmax=800" width="251" height="298" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Note how we didn’t ask it to install jQuery? The powershell script leverages the reference path:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;/// &amp;lt;reference path=&amp;quot;../jquery/jquery.d.ts&amp;quot; /&amp;gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;in each TypeScript definition to help determine dependencies. We then configure the NuGet package with a dependency on the jquery DefinitelyTyped TypeScript definition package.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-F4LdO6b047w/USpWij91nqI/AAAAAAAAAdo/qfi1WEmIan0/s1600-h/image10.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://lh4.ggpht.com/-NIwRCVXvDt4/USpWjTbMChI/AAAAAAAAAdw/2qJuHxlECfk/image_thumb4.png?imgmax=800" width="321" height="75" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Happy TypeScripting!&lt;/p&gt;  &lt;img src="http://feeds.feedburner.com/~r/DevelopingOnStaxmande/~4/xms-7hq2i2Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://staxmanade.blogspot.com/feeds/5738252807281431512/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4726251688144615011&amp;postID=5738252807281431512" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/5738252807281431512?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/5738252807281431512?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevelopingOnStaxmande/~3/xms-7hq2i2Y/definitelytyped-typescript-definitions.html" title="DefinitelyTyped TypeScript definitions now on NuGet" /><author><name>Jason Jarrett</name><uri>https://plus.google.com/112910204617314300568</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-Lz16PAsLf5Q/AAAAAAAAAAI/AAAAAAAAAAA/UnHrBhHKHC0/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-2JCiZc1PA0s/USpWiWDj7YI/AAAAAAAAAdg/65ME1YNxY8Y/s72-c/image_thumb2.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://staxmanade.blogspot.com/2013/02/definitelytyped-typescript-definitions.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUABR3s6cSp7ImA9WhBSFko.&quot;"><id>tag:blogger.com,1999:blog-4726251688144615011.post-9174760565721137945</id><published>2013-02-23T18:42:00.001-08:00</published><updated>2013-02-23T18:42:36.519-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-02-23T18:42:36.519-08:00</app:edited><title>How do I undo a bad rebase in Git?</title><content type="html">&lt;p&gt;If you use &lt;a href="http://git-scm.com/"&gt;git&lt;/a&gt; and leverage the &lt;a href="http://git-scm.com/book/en/Git-Branching-Rebasing"&gt;rebase&lt;/a&gt; command, you've probably run across a merge issue during the rebase and if you’ve ever felt like, “man, I wish I had a ‘do-over’.&lt;/p&gt;  &lt;p&gt;If you’re still in the middle of a rebase it's easy to start over:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;git rebase --abort&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;But let's say you started with this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-S4iRqI3gJ9A/USl-FkXa8GI/AAAAAAAAAcw/DIiCekbZNNc/s1600-h/image3.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-VUhs8KUeoYw/USl-GO4JjUI/AAAAAAAAAc4/ZIW6B8i84Jk/image_thumb1.png?imgmax=800" width="227" height="149" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Did a git rebase and are now looking at:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-wKnvAJZeBE8/USl-GZw_02I/AAAAAAAAAdA/Rjrc0ACrf3A/s1600-h/image7.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://lh5.ggpht.com/-Vm2Z6nDv_ow/USl-Gh_VygI/AAAAAAAAAdI/4JeII5vjceE/image_thumb3.png?imgmax=800" width="244" height="126" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Except you screwed up during a merge conflict and now un-sure how you can get your ‘do-over’.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;I was pleasantly surprised at how easy it was. (If you know key)&lt;/p&gt;  &lt;p&gt;Leveraging the &lt;a href="http://www.kernel.org/pub/software/scm/git/docs/git-reflog.html"&gt;git reflog&lt;/a&gt;, you can go back in time and check out your branch as though the rebase never happened.&lt;/p&gt;  &lt;p&gt;In the following link, I put together a set of steps to create a git repo that puts you into this position (of a bad rebase) and then describes how to get out of it.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://github.com/staxmanade/GitRebaseReflogFixSample"&gt;https://github.com/staxmanade/GitRebaseReflogFixSample&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I'd love to hear any feedback on this repo. Or try submitting a pull request or post a GitHub issue.&lt;/p&gt;  &lt;p&gt;Happy Git'ing!&lt;/p&gt;  &lt;img src="http://feeds.feedburner.com/~r/DevelopingOnStaxmande/~4/uq-qZice4zk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://staxmanade.blogspot.com/feeds/9174760565721137945/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4726251688144615011&amp;postID=9174760565721137945" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/9174760565721137945?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/9174760565721137945?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevelopingOnStaxmande/~3/uq-qZice4zk/how-do-i-undo-bad-rebase-in-git.html" title="How do I undo a bad rebase in Git?" /><author><name>Jason Jarrett</name><uri>https://plus.google.com/112910204617314300568</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-Lz16PAsLf5Q/AAAAAAAAAAI/AAAAAAAAAAA/UnHrBhHKHC0/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-VUhs8KUeoYw/USl-GO4JjUI/AAAAAAAAAc4/ZIW6B8i84Jk/s72-c/image_thumb1.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://staxmanade.blogspot.com/2013/02/how-do-i-undo-bad-rebase-in-git.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkcNR3o7eip7ImA9WhBTF04.&quot;"><id>tag:blogger.com,1999:blog-4726251688144615011.post-4614929746429949173</id><published>2013-02-12T22:48:00.001-08:00</published><updated>2013-02-12T22:48:16.402-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-02-12T22:48:16.402-08:00</app:edited><title>It's Markdown, no, PowerShell. Wait its Markdown formatted PowerShell.</title><content type="html">&lt;p&gt;I created an &lt;a href="http://github.com/staxmanade/PowershellPresentation" target="_blank"&gt;introductory presentation on PowerShell&lt;/a&gt; a while back and posted it &lt;a href="http://github.com/staxmanade/" target="_blank"&gt;on my GitHub&lt;/a&gt;. I first gave the presentation at the &lt;a href="http://softwaredevelopersgroup.com/"&gt;NNSDG&lt;/a&gt; and decided to also submit it as a talk to the &lt;a href="http://boisecodecamp.com/"&gt;Boise Code Camp&lt;/a&gt; this year. (Looks like I'll be going – track me down &lt;a href="https://twitter.com/staxmanade" target="_blank"&gt;@staxmanade&lt;/a&gt; if you’d like to say hello)&lt;/p&gt;  &lt;p&gt;I’ve become quite a fan of Markdown lately and thought, “what if this not only looked like PowerShell, but looked even better as Markdown…?”&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;After experimenting a little, I found that it actually works quite well.&lt;/p&gt;  &lt;p&gt;For example:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;PowerShell (Markdown)&lt;/strong&gt;&lt;/p&gt;  &lt;pre&gt;## String Interpolation&lt;br /&gt;&lt;br /&gt;### Single quotes `don't` interpolate&lt;br /&gt;    'Hello $groupName' &lt;br /&gt;    &lt;br /&gt;### Double quotes `DO` interpolate&lt;br /&gt;    &amp;quot;Hello $groupName&amp;quot;&lt;br /&gt;        &lt;br /&gt;    &lt;br /&gt;### Wrap `$(...)` around expression within an string&lt;br /&gt;    &amp;quot;groupName variable is of type: $($groupName.GetType().FullName)&amp;quot;&lt;br /&gt;    &amp;quot;2 + 1564 = $(2 + 1564)&amp;quot;&lt;br /&gt;    &amp;quot;Current DateTime is = $(get-date)&amp;quot;&lt;br /&gt;    &amp;quot;Current DateTime is = $([System.DateTime]::Now)&amp;quot;&lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;### Escape characters with the ` (back-tick)&lt;br /&gt;    &amp;quot;Escape a quotation `&amp;quot;This is quoted`&amp;quot;.&amp;quot;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;Formatted Markdown&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/-lUeiRSS4rBo/URs3LcasBbI/AAAAAAAAAcY/h2NTLneqWP8/s1600-h/image11.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://lh5.ggpht.com/-iNFDygzQL0o/URs3L15uv8I/AAAAAAAAAcg/jbjRHwUTi8E/image_thumb4.png?imgmax=800" width="634" height="628" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&amp;#160;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;One issue I have is the way GitHub/markdown formats extra whitespace (it doesn’t). So I’ve worked around that so that I can get the vertical whitespace that I need in the Markdown version by placing a link to a spacer image: &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;![vertical space](&lt;a href="http://is.gd/VertSpace"&gt;http://is.gd/VertSpace&lt;/a&gt;)&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;This isn’t ideal because my PowerShell is littered with this snippet, but something that can easily be search/replaced before using the raw version as a PowerShell script.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I also think that you could potentially do this with many different programming languages. (At least ones that don’t depend on whitespace and have a form of block comments)&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Nifty eh?&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Happy PowerDowning or MarkShelling!&lt;/p&gt;  &lt;img src="http://feeds.feedburner.com/~r/DevelopingOnStaxmande/~4/YBYz_9hRsxI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://staxmanade.blogspot.com/feeds/4614929746429949173/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4726251688144615011&amp;postID=4614929746429949173" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/4614929746429949173?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/4614929746429949173?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevelopingOnStaxmande/~3/YBYz_9hRsxI/it-markdown-no-powershell-wait-its.html" title="It&amp;#39;s Markdown, no, PowerShell. Wait its Markdown formatted PowerShell." /><author><name>Jason Jarrett</name><uri>https://plus.google.com/112910204617314300568</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-Lz16PAsLf5Q/AAAAAAAAAAI/AAAAAAAAAAA/UnHrBhHKHC0/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-iNFDygzQL0o/URs3L15uv8I/AAAAAAAAAcg/jbjRHwUTi8E/s72-c/image_thumb4.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://staxmanade.blogspot.com/2013/02/it-markdown-no-powershell-wait-its.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak4DQHY6fSp7ImA9WhNbGUw.&quot;"><id>tag:blogger.com,1999:blog-4726251688144615011.post-3477073765850652545</id><published>2013-01-22T21:29:00.001-08:00</published><updated>2013-01-22T21:29:31.815-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2013-01-22T21:29:31.815-08:00</app:edited><title>Testacular cannot find Chrome on windows.</title><content type="html">&lt;p&gt;I recently started playing with &lt;a href="http://angularjs.org/"&gt;AngularJS&lt;/a&gt;. After downloading the &lt;a href="https://github.com/angular/angular-seed"&gt;seed project&lt;/a&gt; and trying to run the tests with &lt;a href="http://vojtajina.github.com/testacular/"&gt;Testacular&lt;/a&gt;, I bumped into small issue that was not immediately obvious to resolve.&lt;/p&gt;  &lt;p&gt;When I ran the “./scripts/test.bat” I would get the following error(s) in my console:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;info: Testacular server started at &lt;a href="http://localhost:9876/"&gt;http://localhost:9876/&lt;/a&gt;       &lt;br /&gt;info (launcher): Starting browser Chrome       &lt;br /&gt;error (launcher): Cannot start Chrome       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CreateProcessW: The system cannot find the path specified.&lt;/p&gt;    &lt;p&gt;info (launcher): Trying to start Chrome again.      &lt;br /&gt;error (launcher): Cannot start Chrome       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CreateProcessW: The system cannot find the path specified.&lt;/p&gt;    &lt;p&gt;info (launcher): Trying to start Chrome again.      &lt;br /&gt;error (launcher): Cannot start Chrome       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CreateProcessW: The system cannot find the path specified.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Tracked down link on a Google thread: &lt;a title="https://groups.google.com/forum/?fromgroups=#!msg/angular/1li0HKtW56U/lKyT_VId0b0J" href="https://groups.google.com/forum/?fromgroups=#!msg/angular/1li0HKtW56U/lKyT_VId0b0J"&gt;https://groups.google.com/forum/?fromgroups=#!msg/angular/1li0HKtW56U/lKyT_VId0b0J&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;It appears that Testacular looks for the chrome browser in a CHROME_BIN environment variable.&lt;/p&gt;  &lt;p&gt;To resolve the issue I ran the following PowerShell script and I was able to run the tests.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;[System.Environment]::SetEnvironmentVariable(&amp;quot;CHROME_BIN&amp;quot;, &amp;quot;C:\Program Files (x86)\Google\Chrome\Application\chrome.exe&amp;quot;)&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;em&gt;Your path to chrome may vary!&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Happy Testing!&lt;/p&gt;  &lt;img src="http://feeds.feedburner.com/~r/DevelopingOnStaxmande/~4/PpW-A2abO48" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://staxmanade.blogspot.com/feeds/3477073765850652545/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4726251688144615011&amp;postID=3477073765850652545" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/3477073765850652545?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/3477073765850652545?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevelopingOnStaxmande/~3/PpW-A2abO48/testacular-cannot-find-chrome-on-windows.html" title="Testacular cannot find Chrome on windows." /><author><name>Jason Jarrett</name><uri>https://plus.google.com/112910204617314300568</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-Lz16PAsLf5Q/AAAAAAAAAAI/AAAAAAAAAAA/UnHrBhHKHC0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://staxmanade.blogspot.com/2013/01/testacular-cannot-find-chrome-on-windows.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08DR3o_fSp7ImA9WhNXGE8.&quot;"><id>tag:blogger.com,1999:blog-4726251688144615011.post-4701021537741571455</id><published>2012-12-06T08:41:00.001-08:00</published><updated>2012-12-06T13:37:56.445-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-12-06T13:37:56.445-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PowerShell" /><title>Easily set Visual Studio keyboard bindings with the Nuget Package Manager Console</title><content type="html">&lt;p&gt;After a fresh install of Visual Studio, I often re-configure some options and setup keyboard bindings. This tends to be a bit of a pain as each and every time I have to remember what setting is in what U.I. configuration pane and how do I find/configure that again? I also will often forget about certain settings until the point I need them and it really breaks my coding rhythm down to go hunt for and reconfigure these options.&lt;/p&gt;  &lt;p&gt;I recently found a simple solution to get my VS just the way I want it.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;P.S. Some of you may want to tell me all about the VS import/export settings, and you may be right, but I just haven’t spent the time to use/understand/easily find a way to integrate it into my ‘flow’.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;So I present to you “MY happy path” to Visual Studio Environment configuration.&lt;/p&gt;  &lt;h4&gt;1. Install the NuGet Package Manager Extension&lt;/h4&gt;  &lt;p&gt;You’re going to probably install this extension anyway, so go-ahead and &lt;a href="http://docs.nuget.org/docs/start-here/installing-nuget"&gt;install it now&lt;/a&gt; if you don’t already have it… We need this so you can get access to the NuGet Package Manager Console&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-leOq9kWDh78/UMDKoOAS6vI/AAAAAAAAAb8/xUeM3ZRRhfo/s1600-h/image3.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://lh4.ggpht.com/-vDO9vE_i-y4/UMDKohZ5WdI/AAAAAAAAAcE/6kWeoto-_ao/image_thumb1.png?imgmax=800" width="745" height="209" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h4&gt;2. Execute Function Set-VisualStudioEnvironmentConfiguration&lt;/h4&gt;  &lt;p&gt;Wait! What is “&lt;a href="https://github.com/staxmanade/DevMachineSetup/blob/master/GlobalScripts/Set-VisualStudioEnvironmentConfiguration.ps1"&gt;Set-VisualStudioEnvironmentConfiguration&lt;/a&gt;”?&lt;/p&gt;  &lt;p&gt;This is a little function that I have in &lt;a href="https://github.com/staxmanade/DevMachineSetup"&gt;My PowerShell $Profile&lt;/a&gt; which gets setup on all development environment.&lt;/p&gt;  &lt;h4&gt;So what’s in this PowerShell script?&lt;/h4&gt;  &lt;p&gt;As of writing this, I only have two specific setup commands, but thought I’d share as an example of what you can do:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Set a keyboard binding to a specific command.      &lt;pre&gt;# Map Ctrl+W to close a tab&lt;br /&gt;$DTE.Commands.Item(&amp;quot;File.Close&amp;quot;).Bindings = &amp;quot;Global::Ctrl+W&amp;quot;;&lt;/pre&gt;&lt;br /&gt;  &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;ShowLineNumbers for all language files. &lt;br /&gt;    &lt;pre&gt;# Turn on line numbers for ALL language types&lt;br /&gt;($DTE.Properties(&amp;quot;TextEditor&amp;quot;, &amp;quot;AllLanguages&amp;quot;) | where {$_.Name -eq &amp;quot;ShowLineNumbers&amp;quot; } ).Value = $true&lt;/pre&gt;&lt;br /&gt;  &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Turn on whitespace? &lt;br /&gt;    &lt;pre&gt;# This doesn't work and I wish it did... &lt;br /&gt;$DTE.ExecuteCommand(&amp;quot;Edit.ViewWhiteSpace&amp;quot;)&lt;br /&gt;# Fails with: &amp;quot;Command &amp;quot;Edit.ViewWhiteSpace&amp;quot; is not available.&amp;quot;&lt;br /&gt;# &lt;strong&gt;Maybe one of you can help me out?&lt;/strong&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;    &lt;h4&gt;&lt;br /&gt;      &lt;ol&gt;How can I find and setup the settings I like?&lt;/ol&gt;&lt;br /&gt;    &lt;/h4&gt;&lt;br /&gt;I’m no VS expert and only know as much about the $DTE object as what I’ve written about here, but I’ll give you some tips and you can go from there… &lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;Google/Bing are your friends. Type “DTE Visual Studio {TheThingYouWantToAccomplish}” &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;After your search, most examples you find will be VB macros and as it turns out VB (in this case) translates nicely to PowerShell (EX:&amp;#160; &lt;br /&gt;&lt;font size="3" face="Cordia New"&gt;&amp;#160; VB Macro:&amp;#160; DTE.Commands.Item(&amp;quot;File.Close&amp;quot;).Bindings = &amp;quot;Global::Ctrl+W&amp;quot; &lt;br /&gt;      &lt;br /&gt;PowerShell: &lt;strong&gt;$&lt;/strong&gt;DTE.Commands.Item(&amp;quot;File.Close&amp;quot;).Bindings = &amp;quot;Global::Ctrl+W&amp;quot; &lt;br /&gt;&lt;br /&gt;      &lt;br /&gt;&lt;/font&gt;See the difference? (yep just the ‘$’ at the beginning of the PowerShell one) Nifty eh? &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;Don’t be afraid to use PowerShell to search/filter things in the $DTE. Try this: &lt;br /&gt;    &lt;br /&gt;&lt;font size="3" face="Cordia New"&gt;PM&amp;gt;&amp;#160; $DTE.Commands | &lt;strong&gt;where { $_.Name –match ‘Close’&lt;/strong&gt; } | select { $_.Name } &lt;br /&gt;&lt;br /&gt;      &lt;br /&gt;&lt;/font&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;Happy VS Environment setting-uppers!&lt;/ul&gt;  &lt;img src="http://feeds.feedburner.com/~r/DevelopingOnStaxmande/~4/7DGXg-y773M" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://staxmanade.blogspot.com/feeds/4701021537741571455/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4726251688144615011&amp;postID=4701021537741571455" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/4701021537741571455?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/4701021537741571455?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevelopingOnStaxmande/~3/7DGXg-y773M/easily-set-visual-studio-keyboard.html" title="Easily set Visual Studio keyboard bindings with the Nuget Package Manager Console" /><author><name>Jason Jarrett</name><uri>https://plus.google.com/112910204617314300568</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-Lz16PAsLf5Q/AAAAAAAAAAI/AAAAAAAAAAA/UnHrBhHKHC0/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-vDO9vE_i-y4/UMDKohZ5WdI/AAAAAAAAAcE/6kWeoto-_ao/s72-c/image_thumb1.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://staxmanade.blogspot.com/2012/12/easily-set-visual-studio-keyboard.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08DR3o_fCp7ImA9WhNXGE8.&quot;"><id>tag:blogger.com,1999:blog-4726251688144615011.post-1540321000493579900</id><published>2012-11-01T09:55:00.001-07:00</published><updated>2012-12-06T13:37:56.444-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-12-06T13:37:56.444-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PowerShell" /><title>More than slightly modified “CD” command for PowerShell</title><content type="html">A while back I wrote about a &lt;a href="http://elegantcode.com/2011/07/16/slightly-modified-cd-command-for-powershell/" target="_blank"&gt;Slightly modified “CD” Command for PowerShell&lt;/a&gt;. &lt;br /&gt;
Since that point, I’ve made a number of updates and would like to share them.&lt;br /&gt;
The first change I made was to move the “CD” script in that post to a &lt;a href="https://github.com/staxmanade/PsProfile/blob/master/GlobalScripts/Change-Directory.ps1" target="_blank"&gt;new location&lt;/a&gt;. I’ve greatly extended how I setup my development environment and how my PowerShell environment is initialized. &lt;br /&gt;
&lt;blockquote&gt;
&lt;span style="background-color: white;"&gt;If you’re interested in how I setup my PS profile, take a look at the readme. Combine the setup with some &lt;a href="http://chocolatey.org/" target="_blank"&gt;Chocolatey&lt;/a&gt; and some &lt;a href="http://boxstarter.codeplex.com/" target="_blank"&gt;BoxStarter&lt;/a&gt; and you’re on your way to an amazingly automated development environment setup.&lt;/span&gt;&lt;/blockquote&gt;
Now on to the features I’ve added to the CD command.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;I often would do something like “CD $Profile” (which is a no-go because that is a file not a directory, but my intent was to get into the directory where the $Profile file lived).      &lt;br /&gt;      &lt;br /&gt;So I updated it so if you try to CD to a file, it will just take you to the directory where the file resides.       &lt;/li&gt;
&lt;li&gt;If you try to CD into a folder that doesn’t exist, it now prompts you to create it. &lt;em&gt;You could bypass the prompt with a -force|-f flag.&lt;/em&gt;&lt;a href="http://lh6.ggpht.com/-60i1Gy9oDaI/UJKpYXRavXI/AAAAAAAAAbY/2hB0iIpFEmc/s1600-h/image6.png"&gt;&lt;img alt="image" border="0" height="124" src="http://lh4.ggpht.com/-OcSX7gH6dz0/UJKpY8jiewI/AAAAAAAAAbg/zakK10j3HvU/image_thumb2.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="524" /&gt;&lt;/a&gt;       &lt;/li&gt;
&lt;li&gt;Lastly I fixed an issue reported by a commenter in the previous post about trying to CD into a folder with the same name as a history index. If you had a folder named “4” and you typed “CD 4” it previously wouldn’t take you the 4 directory, but instead lookup item 4 in your CD history and take you there. Now if you specify a number and that number lives in the current directory it will take precedence over your history value. &lt;em&gt;(To be fair, I only added this feature, and even since I originally wrote about the CD command I have yet to run into a need for this case. Probably because I don’t name my directories with numbers)&lt;/em&gt;. &lt;/li&gt;
&lt;/ul&gt;
Something I had only recently noticed is this script appears to work with other PowerShell drive providers. I only did a cursory test but can CD into the HKLM:\Software\MyTestFolderThatShouldntExist and it will prompt to create the ‘folder’. If I say yes, I end up with a new registry folder. &lt;img alt="Smile" class="wlEmoticon wlEmoticon-smile" src="http://lh5.ggpht.com/-eqb3EKYnXNo/UJKpadhpcFI/AAAAAAAAAbo/jBmQj4iLjgA/wlEmoticon-smile2.png?imgmax=800" style="border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none;" /&gt; Not sure how useful that is, but with the abstraction layer PowerShell drives give us it’s interesting.&lt;br /&gt;
&lt;br /&gt;
If you’d like to grab just the CD script you can download it here.    &lt;br /&gt;&lt;a href="https://github.com/staxmanade/DevMachineSetup/blob/master/GlobalScripts/Change-Directory.ps1"&gt;https://github.com/staxmanade/DevMachineSetup/blob/master/GlobalScripts/Change-Directory.ps1&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Happy system navigation with PowerShell.&lt;img src="http://feeds.feedburner.com/~r/DevelopingOnStaxmande/~4/sj3kCbyBIhI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://staxmanade.blogspot.com/feeds/1540321000493579900/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4726251688144615011&amp;postID=1540321000493579900" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/1540321000493579900?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/1540321000493579900?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevelopingOnStaxmande/~3/sj3kCbyBIhI/more-than-slightly-modified-cd-command.html" title="More than slightly modified “CD” command for PowerShell" /><author><name>Jason Jarrett</name><uri>https://plus.google.com/112910204617314300568</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-Lz16PAsLf5Q/AAAAAAAAAAI/AAAAAAAAAAA/UnHrBhHKHC0/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-OcSX7gH6dz0/UJKpY8jiewI/AAAAAAAAAbg/zakK10j3HvU/s72-c/image_thumb2.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://staxmanade.blogspot.com/2012/11/more-than-slightly-modified-cd-command.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A08FRXw7fip7ImA9WhNXGE8.&quot;"><id>tag:blogger.com,1999:blog-4726251688144615011.post-3855606587838151279</id><published>2012-10-25T21:43:00.001-07:00</published><updated>2012-12-06T13:36:54.206-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-12-06T13:36:54.206-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="PowerShell" /><title>PowerShell Presentation at the Northern Nevada Software Dev Group.</title><content type="html">Last night I gave a talk on PowerShell to the &lt;a href="http://softwaredevelopersgroup.com/"&gt;Northern Nevada Software Developers Group&lt;/a&gt;.&lt;br /&gt;
If interested, the presentation material is up on my &lt;a href="https://github.com/staxmanade/PowerShellPresentation"&gt;GitHub account&lt;/a&gt;.&lt;br /&gt;
Thanks to all who attended!&lt;br /&gt;
Happy Scripting! &lt;img src="http://feeds.feedburner.com/~r/DevelopingOnStaxmande/~4/DNpBT079XNs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://staxmanade.blogspot.com/feeds/3855606587838151279/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4726251688144615011&amp;postID=3855606587838151279" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/3855606587838151279?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/3855606587838151279?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevelopingOnStaxmande/~3/DNpBT079XNs/powershell-presentation-at-northern.html" title="PowerShell Presentation at the Northern Nevada Software Dev Group." /><author><name>Jason Jarrett</name><uri>https://plus.google.com/112910204617314300568</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-Lz16PAsLf5Q/AAAAAAAAAAI/AAAAAAAAAAA/UnHrBhHKHC0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://staxmanade.blogspot.com/2012/10/powershell-presentation-at-northern.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0ADSXg7fCp7ImA9WhNXGE8.&quot;"><id>tag:blogger.com,1999:blog-4726251688144615011.post-8577341582531555502</id><published>2012-10-19T08:12:00.001-07:00</published><updated>2012-12-06T13:36:18.604-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-12-06T13:36:18.604-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="TFS" /><category scheme="http://www.blogger.com/atom/ns#" term="bug" /><category scheme="http://www.blogger.com/atom/ns#" term="bisect" /><title>TFS bisect the manual way (When was that bug introduced?)</title><content type="html">I’d like to share a powerful workflow I originally found using &lt;a href="http://git-scm.com/" target="_blank"&gt;git&lt;/a&gt; and its powerful git-bisect command and how I’ve leveraged the idea when using &lt;a href="http://msdn.microsoft.com/en-us/vstudio/ff637362.aspx" target="_blank"&gt;TFS&lt;/a&gt;.&lt;br /&gt;
&lt;h4&gt;
What is a bisect on your source history?&lt;/h4&gt;
&lt;a href="http://www.kernel.org/pub/software/scm/git/docs/git-bisect.html" target="_blank"&gt;Git’s bisect&lt;/a&gt; command is extremely powerful and I won’t be covering it here. However git describes its feature as a way to:&lt;br /&gt;
&lt;blockquote&gt;
Find by binary search the change that introduced a bug&lt;/blockquote&gt;
&lt;h4&gt;
Why do I need to look through source code history to find why a bug was introduced?&lt;/h4&gt;
It’s true, that many bugs are so basic that once you hear about the bug you immediately understand where it is, why it’s broken and how to fix. In that scenario this approach is not something you need. &lt;br /&gt;
However, &lt;strong&gt;if you know a bug was introduced sometime in the past but are not sure when or how it was introduced&lt;/strong&gt;, I think we could all agree that doing a binary search through the history of your code’s changes is a pretty good approach to finding the specific change-set that introduced a bug. Once you have a handle on the specific code change that was made, it becomes much easier to understand how it changed and track down the reason a bug was introduced and how to fix it.&lt;br /&gt;
&lt;h4&gt;
High level steps/concept:&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;First you should have discovered a reproducible bug &lt;/li&gt;
&lt;li&gt;Next we have to find a commit in the past where we know the bug does not exist. (Say you know that 3 weeks ago, this bug didn’t exist.) &lt;/li&gt;
&lt;li&gt;Now, from that “good” commit we do a binary search through source history to find when the bug was first introduced. Noting at each commit its goodness/badness state and continuing with the search until we’ve found the commit when the bug was introduced. &lt;/li&gt;
&lt;li&gt;Analyze the commit until you understand what and how the bug was introduced and fix it. &lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;
One manual approach to TFS bisect.&lt;/h4&gt;
There is not a built-in feature with TFS (that I’m aware of) and leaves us with some manual bookkeeping that we wouldn’t have to do if we were using git. &lt;br /&gt;
&lt;blockquote&gt;
Side Note: If you’re familiar with git, I’d recommend just using &lt;a href="https://github.com/git-tfs/git-tfs" target="_blank"&gt;git-TFS&lt;/a&gt; or the new &lt;a href="http://gittf.codeplex.com/" target="_blank"&gt;git-tf&lt;/a&gt; tool and just clone your TFS repro and use git-bisect to accomplish these steps.&lt;/blockquote&gt;
Let’s assume you can find a commit in the past that you know doesn’t have the bug.&lt;br /&gt;
Load up PowerShell and &lt;a href="http://elegantcode.com/2011/07/16/slightly-modified-cd-command-for-powershell/" target="_blank"&gt;CD&lt;/a&gt; into the root of your project directory. Execute a tf.exe command to pull a string output of your history into the clipboard. We’ll leverage this in our bookkeeping.&lt;br /&gt;
&lt;blockquote&gt;
&lt;span style="background-color: white;"&gt;I’m using PowerShell and have tf.exe on my %PATH%.&lt;/span&gt;&lt;br /&gt;
&lt;span style="background-color: white;"&gt;&amp;gt;tf history ./* /recursive /noprompt | clip&lt;/span&gt;&lt;/blockquote&gt;
Notice the pipe to the ‘clip’ command at the end of the TF call. This places the output of one command into the clipboard. &lt;br /&gt;
Let’s say the above command places the following into our clipboard.&lt;br /&gt;
[gist id=0373efef1f0150ed7faf]&lt;br /&gt;
Take the output of the command (that is now in your clipboard) and paste it into Excel (or notepad) wherever you want to keep track of your work.&lt;br /&gt;
We know that at commit ID #13 the bug did not exist. Let’s mark it as ‘&lt;span style="background-color: lime;"&gt;good&lt;/span&gt;’&lt;br /&gt;
&lt;a href="http://lh5.ggpht.com/-CvxFQzakVbw/UIFt0e8qZ2I/AAAAAAAAAZ4/RqGJBajGPe8/s1600-h/image27.png"&gt;&lt;img alt="image" border="0" height="113" src="http://lh5.ggpht.com/-kXlKM8aP2mI/UIFt0yqg9JI/AAAAAAAAAaA/6dgGmI4QOpg/image_thumb13.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="750" /&gt;&lt;/a&gt;&lt;br /&gt;
Now we start our binary search through the different commits to find our bug.&lt;br /&gt;
Find a midway commit between this commit (#13) and the most recent commit (#79).&lt;br /&gt;
You don’t have to be all mathematical about the binary search, I tend to just eyeball the ‘middle’ and go from there. But you’re more than welcome to execute the binary search perfectly. &lt;img alt="Smile" class="wlEmoticon wlEmoticon-smile" src="http://lh3.ggpht.com/-3eas7euoVvs/UIFt2DctXqI/AAAAAAAAAaI/eKGufXLAKlU/wlEmoticon-smile2.png?imgmax=800" style="border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none;" /&gt;&lt;br /&gt;
Now use your TFS tools to checkout this specific version. In this case we’ll checkout commit #46.&lt;br /&gt;
I tend to prefer the command line to check out the specific version as it’s easier to repeat these steps with commands and we already have the command open from earlier.&lt;br /&gt;
&lt;blockquote&gt;
&amp;gt;tf get ./* /recursive /force /overwrite /version:46&lt;/blockquote&gt;
Or you can use the GUI to get a specific version.&lt;br /&gt;
&lt;a href="http://lh3.ggpht.com/-OMvvDEn3-X8/UIFt2XesHqI/AAAAAAAAAaQ/Tt_AxEmJGX0/s1600-h/image11.png"&gt;&lt;img alt="image" border="0" height="143" src="http://lh3.ggpht.com/-qf-BMFlUVw4/UIFt3AoNTqI/AAAAAAAAAaY/NFM5bEn63ns/image_thumb5.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="253" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://lh5.ggpht.com/-3oweq7xMXqM/UIFt4kthkoI/AAAAAAAAAag/aNDmXsNf3gk/s1600-h/image19.png"&gt;&lt;img alt="image" border="0" height="308" src="http://lh4.ggpht.com/-Grq1CtfWikA/UIFt47L3zpI/AAAAAAAAAao/ZXyRbh3-2Ao/image_thumb9.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="585" /&gt;&lt;/a&gt;&lt;br /&gt;
With version #46 checked out, we run our tests and find that the bug exists here. Mark it as ‘&lt;span style="color: red;"&gt;bad&lt;/span&gt;’ to signify the bug is here.&lt;br /&gt;
&lt;a href="http://lh6.ggpht.com/-FzkYtFf-TGM/UIFt5ffnYdI/AAAAAAAAAaw/8Ao7cBlIPeA/s1600-h/image23.png"&gt;&lt;img alt="image" border="0" height="74" src="http://lh5.ggpht.com/-YPe9c_3-C2c/UIFt57-Q1UI/AAAAAAAAAa4/_A64INotcRk/image_thumb11.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="777" /&gt;&lt;/a&gt;&lt;br /&gt;
Now we can continue our binary search between commit 13 and 46 until we narrow down the exact commit where the bug first shows up.&lt;br /&gt;
&lt;a href="http://lh6.ggpht.com/-Z7QrMkL_0I4/UIFt6c3XKpI/AAAAAAAAAbA/9ibPBgIXkk8/s1600-h/image40.png"&gt;&lt;img alt="image" border="0" height="680" src="http://lh5.ggpht.com/-wPRYPnuhc1k/UIFt69bg1aI/AAAAAAAAAbI/TcWeM26jji4/image_thumb20.png?imgmax=800" style="background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="691" /&gt;&lt;/a&gt;&lt;br /&gt;
As you can see by the numbers to the left in the screenshot above, it took us 5 checkouts to find the commit where the bug was introduced.&lt;br /&gt;
Now the rest is up to you. I tend to spend time looking at the diff and understanding why the specific commit introduces the bug. If you keep the size of your regular commits small then it tends to be pretty easy to understand why the bug was introduced and how to fix it.&lt;br /&gt;
&lt;strong&gt;Don’t forget to ‘get latest’ before you try to do much work so you’re not stuck with your source code way back in time.&lt;/strong&gt;&lt;br /&gt;
&lt;h4&gt;
These steps should be automated.&lt;/h4&gt;
It’s true the bookkeeping should be done for us by a tool, and in fact I started writing a PowerShell implementation of this, but never finished and didn’t find it worth my time. The manual approach works well, and it’s not something I have to use often. However, I did find someone who’s written a tool that looks promising.&lt;br /&gt;
&lt;blockquote&gt;
&lt;a href="http://gr3dman.name/blorg/posts/2010-12-03-tf-bisect.html"&gt;http://gr3dman.name/blorg/posts/2010-12-03-tf-bisect.html&lt;/a&gt;&lt;/blockquote&gt;
&lt;br /&gt;
Happy bug hunting.&lt;img src="http://feeds.feedburner.com/~r/DevelopingOnStaxmande/~4/-aDfiZSC4_w" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://staxmanade.blogspot.com/feeds/8577341582531555502/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4726251688144615011&amp;postID=8577341582531555502" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/8577341582531555502?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/8577341582531555502?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevelopingOnStaxmande/~3/-aDfiZSC4_w/tfs-bisect-manual-way-when-was-that-bug.html" title="TFS bisect the manual way (When was that bug introduced?)" /><author><name>Jason Jarrett</name><uri>https://plus.google.com/112910204617314300568</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-Lz16PAsLf5Q/AAAAAAAAAAI/AAAAAAAAAAA/UnHrBhHKHC0/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-kXlKM8aP2mI/UIFt0yqg9JI/AAAAAAAAAaA/6dgGmI4QOpg/s72-c/image_thumb13.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://staxmanade.blogspot.com/2012/10/tfs-bisect-manual-way-when-was-that-bug.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUIEQXo-eip7ImA9WhRaGUo.&quot;"><id>tag:blogger.com,1999:blog-4726251688144615011.post-6272924254296773509</id><published>2012-02-22T21:05:00.000-08:00</published><updated>2012-02-22T21:05:00.452-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-22T21:05:00.452-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="NuGet" /><title>NuGet Project Uncovered: SpecificationExtensions.[MSTest | NUnit | Xunit]</title><content type="html">&lt;blockquote&gt;   &lt;p&gt;If you are coming to this series of posts for the first time you might check out &lt;a href="http://elegantcode.com/2012/01/22/nuget-project-uncovered-an-introduction-to-the-series/" target="_blank"&gt;my introductory post&lt;/a&gt; for a little context.&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;NOTE: this project is one I created and as it turns out this has now become it’s introductory post.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;The SpecificationExtensions.[MSTest | NUnit | Xunit] are a set of NuGet packages that add C# &lt;a href="http://staxmanade.blogspot.com/2009/02/fluent-specification-extensions.html" target="_blank"&gt;fluent specification extensions&lt;/a&gt; to your test project. I first blogged about this in early 2009 and have had a set of these that I take with me for every project I work on.&lt;/p&gt;  &lt;p&gt;There are a number of other options out there for specification extensions, but since I first created my original set, I haven’t used anything else (although I should as I might be able to learn a little from each).&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-uJQhZwjPHio/Tx-N8pcbXNI/AAAAAAAAAXk/-25MlBkeCDE/s1600-h/image_thumb10_thumb%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image_thumb10_thumb" border="0" alt="image_thumb10_thumb" src="http://lh6.ggpht.com/-2Bi6oO8kpwo/Tx-N9KJezHI/AAAAAAAAAXs/QGkMIlrCWSs/image_thumb10_thumb_thumb.png?imgmax=800" width="339" height="202" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;img src="http://feeds.feedburner.com/~r/DevelopingOnStaxmande/~4/PHqiQGlmuvY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://staxmanade.blogspot.com/feeds/6272924254296773509/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4726251688144615011&amp;postID=6272924254296773509" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/6272924254296773509?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/6272924254296773509?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevelopingOnStaxmande/~3/PHqiQGlmuvY/nuget-project-uncovered_22.html" title="NuGet Project Uncovered: SpecificationExtensions.[MSTest | NUnit | Xunit]" /><author><name>Jason Jarrett</name><uri>https://plus.google.com/112910204617314300568</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-Lz16PAsLf5Q/AAAAAAAAAAI/AAAAAAAAAAA/UnHrBhHKHC0/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-2Bi6oO8kpwo/Tx-N9KJezHI/AAAAAAAAAXs/QGkMIlrCWSs/s72-c/image_thumb10_thumb_thumb.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://staxmanade.blogspot.com/2012/02/nuget-project-uncovered_22.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcAQXY5fyp7ImA9WhRaGEU.&quot;"><id>tag:blogger.com,1999:blog-4726251688144615011.post-2198953834154128221</id><published>2012-02-21T21:04:00.000-08:00</published><updated>2012-02-21T21:04:00.827-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-21T21:04:00.827-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="NuGet" /><title>NuGet Project Uncovered: EventAggregator.Net</title><content type="html">&lt;blockquote&gt;   &lt;p&gt;If you are coming to this series of posts for the first time you might check out &lt;a href="http://elegantcode.com/2012/01/22/nuget-project-uncovered-an-introduction-to-the-series/" target="_blank"&gt;my introductory post&lt;/a&gt; for a little context.&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;NOTE: this project is one I created and as it turns out this has now become it’s introductory post.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href="http://nuget.org/packages/EventAggregator.Net" target="_blank"&gt;EventAggregator.Net&lt;/a&gt; is a single C# file that can provide a basis for a simple in memory Pub/Sub event aggregator.&lt;/p&gt;  &lt;p&gt;I extracted this out of my &lt;a href="http://StatLight.codeplex.com" target="_blank"&gt;StatLight&lt;/a&gt; project as I found that I often wanted a similar one and kept finding myself copy/pasting this into projects. I figured a single location for this project would be better and I use StatLight as the first dog bowl when I need to dog food the project.&lt;/p&gt;  &lt;p&gt;If you’re familiar with the…&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Install-Package Caliburn.Micro.EventAggregator      &lt;br /&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;…then you know probably know what this project is like. &lt;/p&gt;  &lt;p&gt;Its history starts a few years ago when I read &lt;a href="http://jeremydmiller.com/" target="_blank"&gt;Jeremey Miller’s&lt;/a&gt; Braindump on &lt;a href="http://codebetter.com/jeremymiller/2009/07/22/braindump-on-the-event-aggregator-pattern/" target="_blank"&gt;Event Aggregator Pattern&lt;/a&gt; and decided I wanted rip out StatLight’s usage of the Prism event aggregator and replace it with a similar one to the one found in StoryTeller. It’s gone through quite a few revisions inside of StatLight since then and eventually made its way into its own project.&lt;/p&gt;  &lt;p&gt;Some thanks have to go out to the great feedback and pull requests from &lt;a href="https://github.com/JakeGinnivan" target="_blank"&gt;Jake Ginnivan&lt;/a&gt; who found this project on his own (before I publicized it).&lt;/p&gt;  &lt;p&gt;If you’re interested in using it, I’d recommend checking out the source’s test project and the SampleUsage project. The SampleUsage project demonstrates how you can configure the tool to publish events in an async mode.&lt;/p&gt;  &lt;p&gt;One concept introduced in this EventAggregator is taking the IEventAggregator interface and breaking it up into two interfaces (&lt;strong&gt;IEventPublisher&lt;/strong&gt; and &lt;strong&gt;IEventSubscriptionManager&lt;/strong&gt;). This proved extremely useful when trying to diagnose components that did both aggregator subscription management vs ones that only published events. It even helped to easily diagnose components that did not correctly unregister objects.&lt;/p&gt;  &lt;img src="http://feeds.feedburner.com/~r/DevelopingOnStaxmande/~4/2Chgx595gas" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://staxmanade.blogspot.com/feeds/2198953834154128221/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4726251688144615011&amp;postID=2198953834154128221" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/2198953834154128221?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/2198953834154128221?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevelopingOnStaxmande/~3/2Chgx595gas/nuget-project-uncovered_21.html" title="NuGet Project Uncovered: EventAggregator.Net" /><author><name>Jason Jarrett</name><uri>https://plus.google.com/112910204617314300568</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-Lz16PAsLf5Q/AAAAAAAAAAI/AAAAAAAAAAA/UnHrBhHKHC0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://staxmanade.blogspot.com/2012/02/nuget-project-uncovered_21.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMCQXgyeip7ImA9WhRaGE0.&quot;"><id>tag:blogger.com,1999:blog-4726251688144615011.post-942666080441455564</id><published>2012-02-20T21:01:00.000-08:00</published><updated>2012-02-20T21:01:00.692-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-20T21:01:00.692-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="NuGet" /><title>NuGet Project Uncovered: DumpToText</title><content type="html">&lt;blockquote&gt;   &lt;p&gt;If you are coming to this series of posts for the first time you might check out &lt;a href="http://elegantcode.com/2012/01/22/nuget-project-uncovered-an-introduction-to-the-series/" target="_blank"&gt;my introductory post&lt;/a&gt; for a little context.&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;NOTE: this project is one I created and as it turns out this has now become its introductory post.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href="http://nuget.org/packages/DumpToText" target="_blank"&gt;DumpToText&lt;/a&gt; is a single C# extension I wrote a little while back. The inspiration from this came from the need to view the values of an object graph quickly and easily during a TDD session.&lt;/p&gt;  &lt;p&gt;Have you ever been doing TDD and something isn’t working quite as expected? Would it be nice to just dump out the values of an object quickly without having to spin up the debugger?&lt;/p&gt;  &lt;p&gt;The inspiration for this project came from an amazing feature of &lt;a href="http://www.linqpad.net/" target="_blank"&gt;LINQPad&lt;/a&gt;. If you have ever used &lt;a href="http://www.linqpad.net/" target="_blank"&gt;LINQPad&lt;/a&gt; then you’re aware of the amazing ability for it to take any object and create a view of it’s data. Take the simple anonymous type below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-FUvQoj6frYE/Tx-M2hAvSBI/AAAAAAAAAVw/Y4i1otS5L1k/s1600-h/image_thumb2_thumb%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image_thumb2_thumb" border="0" alt="image_thumb2_thumb" src="http://lh3.ggpht.com/-al7xfLogmlo/Tx-M28w8cWI/AAAAAAAAAV4/1okKyOMCZXo/image_thumb2_thumb_thumb.png?imgmax=800" width="471" height="315" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now wouldn’t it be great to have that “.Dump()” extension method at hand anywhere in your code and during a TDD session?&lt;/p&gt;  &lt;p&gt;That’s why I create &lt;a href="https://github.com/staxmanade/DumpToText" target="_blank"&gt;DumpToText&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Now if I have a test as follows and want to see it’s data. I can use the ‘.DumpToText()” extension method to have it print out an ASCII based representation of the object graph.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-skkqYdCd2xM/Tx-M3FJvFuI/AAAAAAAAAWA/Pj8HLy2gP2E/s1600-h/image_thumb4_thumb%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image_thumb4_thumb" border="0" alt="image_thumb4_thumb" src="http://lh4.ggpht.com/-AAcGZRujy6o/Tx-M3YkzlsI/AAAAAAAAAWI/tB5hBy3iff8/image_thumb4_thumb_thumb.png?imgmax=800" width="323" height="178" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-yhBKG4UbDVo/Tx-M3isuUYI/AAAAAAAAAWQ/e4StcIAJXwY/s1600-h/image_thumb6_thumb%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image_thumb6_thumb" border="0" alt="image_thumb6_thumb" src="http://lh4.ggpht.com/-4NWr0JakVmU/Tx-M4OgEzYI/AAAAAAAAAWY/Y5spI1MEfTo/image_thumb6_thumb_thumb.png?imgmax=800" width="390" height="156" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;By default this just uses the System.Diagnostics.Trace(…) to write the output to, but you can override the “write” implementation by giving your own delegate as shown below.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-WqWFeyFE9-w/Tx-M4J_zk_I/AAAAAAAAAWg/PgFlXKctwzk/s1600-h/image_thumb8_thumb%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image_thumb8_thumb" border="0" alt="image_thumb8_thumb" src="http://lh3.ggpht.com/-ZVMsOTKUgRo/Tx-M4ftO9JI/AAAAAAAAAWo/7MzVtczsP3o/image_thumb8_thumb_thumb.png?imgmax=800" width="871" height="52" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The below shows an example of a nested object that also has an array of items.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-ggox20Cy7Uo/Tx-M478HrOI/AAAAAAAAAWw/evox5Gb8UoU/s1600-h/image_thumb14_thumb%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image_thumb14_thumb" border="0" alt="image_thumb14_thumb" src="http://lh5.ggpht.com/-YAC_6gYOxPk/Tx-M5PrZCnI/AAAAAAAAAW4/hYIHCALLCVg/image_thumb14_thumb_thumb.png?imgmax=800" width="264" height="171" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-BG258OCC7hw/Tx-M5JXdreI/AAAAAAAAAXA/7gusCQdc-EA/s1600-h/image_thumb13_thumb1%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image_thumb13_thumb1" border="0" alt="image_thumb13_thumb1" src="http://lh6.ggpht.com/-ALeIoiAbOSA/Tx-M5oEQkJI/AAAAAAAAAXI/0ldXcIpDxmM/image_thumb13_thumb1_thumb.png?imgmax=800" width="573" height="349" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h5&gt;Anyone out there using &lt;a href="http://approvaltests.sourceforge.net/" target="_blank"&gt;ApprovalTests&lt;/a&gt;? (You can get it on NuGet)&lt;/h5&gt;  &lt;p&gt;I’ve not taken the chance to use ApprovalTests yet in a project, but I have a strong feeling that my DumpToText helper could be very useful when leveraged in conjunction with ApprovalTests. If anyone out there is using ApprovalTests, I’d love to hear how it’s going, and if you think that DumpToText would be useful there.&lt;/p&gt;  &lt;img src="http://feeds.feedburner.com/~r/DevelopingOnStaxmande/~4/Jk1txC8GUz4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://staxmanade.blogspot.com/feeds/942666080441455564/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4726251688144615011&amp;postID=942666080441455564" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/942666080441455564?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/942666080441455564?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevelopingOnStaxmande/~3/Jk1txC8GUz4/nuget-project-uncovered-dumptotext.html" title="NuGet Project Uncovered: DumpToText" /><author><name>Jason Jarrett</name><uri>https://plus.google.com/112910204617314300568</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-Lz16PAsLf5Q/AAAAAAAAAAI/AAAAAAAAAAA/UnHrBhHKHC0/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-al7xfLogmlo/Tx-M28w8cWI/AAAAAAAAAV4/1okKyOMCZXo/s72-c/image_thumb2_thumb_thumb.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://staxmanade.blogspot.com/2012/02/nuget-project-uncovered-dumptotext.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU4AQXs6fip7ImA9WhRaF0w.&quot;"><id>tag:blogger.com,1999:blog-4726251688144615011.post-3343006812309323410</id><published>2012-02-19T20:59:00.000-08:00</published><updated>2012-02-19T20:59:00.516-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-19T20:59:00.516-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="NuGet" /><title>NuGet Project Uncovered: Nancy</title><content type="html">&lt;blockquote&gt;   &lt;p&gt;If you are coming to this series of posts for the first time you might check out &lt;a href="http://elegantcode.com/2012/01/22/nuget-project-uncovered-an-introduction-to-the-series/" target="_blank"&gt;my introductory post&lt;/a&gt; for a little context.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href="http://nuget.org/packages/Nancy" target="_blank"&gt;Nancy&lt;/a&gt; is another project founded by an elegant coder. &lt;a href="http://elegantcode.com/about/andreas-hakansson/" target="_blank"&gt;Andreas&lt;/a&gt; has blogged about it a &lt;a href="http://bit.ly/xIlUmy" target="_blank"&gt;number of times here&lt;/a&gt; on ElegantCode. &lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Nancy is a lightweight HTTP framework for building web services and sites. The framework runs on both the .net framework and &lt;a href="http://mono-project.com/"&gt;Mono&lt;/a&gt;.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I have not used this project myself, but as I started to look it over I think I might have to spin up a site quickly just to try it out.&lt;/p&gt;  &lt;img src="http://feeds.feedburner.com/~r/DevelopingOnStaxmande/~4/s732ur41Fgo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://staxmanade.blogspot.com/feeds/3343006812309323410/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4726251688144615011&amp;postID=3343006812309323410" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/3343006812309323410?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/3343006812309323410?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevelopingOnStaxmande/~3/s732ur41Fgo/nuget-project-uncovered-nancy.html" title="NuGet Project Uncovered: Nancy" /><author><name>Jason Jarrett</name><uri>https://plus.google.com/112910204617314300568</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-Lz16PAsLf5Q/AAAAAAAAAAI/AAAAAAAAAAA/UnHrBhHKHC0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://staxmanade.blogspot.com/2012/02/nuget-project-uncovered-nancy.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMMQX85cCp7ImA9WhRaFk8.&quot;"><id>tag:blogger.com,1999:blog-4726251688144615011.post-18528304879387799</id><published>2012-02-18T20:58:00.000-08:00</published><updated>2012-02-18T20:58:00.128-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-18T20:58:00.128-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="NuGet" /><title>NuGet Project Uncovered: Extended.Wpf.Toolkit</title><content type="html">&lt;blockquote&gt;   &lt;p&gt;If you are coming to this series of posts for the first time you might check out &lt;a href="http://elegantcode.com/2012/01/22/nuget-project-uncovered-an-introduction-to-the-series/" target="_blank"&gt;my introductory post&lt;/a&gt; for a little context.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href="http://nuget.org/packages/Extended.Wpf.Toolkit" target="_blank"&gt;Extended.Wpf.Toolkit&lt;/a&gt; is a project that should not need an introduction, and if you follow this blog you’ve probably heard &lt;a href="http://elegantcode.com/about/brian-lagunas/" target="_blank"&gt;Brian&lt;/a&gt; talk about it. If not, check out some of the posts on the &lt;a href="http://bit.ly/yV7cma" target="_blank"&gt;Extended WPF Toolkit! &lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This project is one of the most download on codeplex, discussed on &lt;a href="http://channel9.msdn.com" target="_blank"&gt;Channel9&lt;/a&gt;, Coding4Fun, and is being leveraged by &lt;a href="http://www.telerik.com" target="_blank"&gt;Telerik&lt;/a&gt; in their &lt;a href="http://www.telerik.com/products/orm.aspx" target="_blank"&gt;Open Access ORM&lt;/a&gt; product.&lt;/p&gt;  &lt;h5&gt;Below is a sample of some of the controls you can find in the toolkit:    &lt;br /&gt;(but make sure you check out the &lt;a href="http://wpftoolkit.codeplex.com/" target="_blank"&gt;project site&lt;/a&gt; for the full list of controls)&lt;/h5&gt;  &lt;ul&gt;   &lt;li&gt;BusyIndicator &lt;/li&gt;    &lt;li&gt;Calculator &lt;/li&gt;    &lt;li&gt;ChildWindow &lt;/li&gt;    &lt;li&gt;ColorCanvas &lt;/li&gt;    &lt;li&gt;ColorPicker &lt;/li&gt;    &lt;li&gt;DateTimePicker &lt;/li&gt;    &lt;li&gt;Magnifier &lt;/li&gt;    &lt;li&gt;MultiLineTextEditor &lt;/li&gt;    &lt;li&gt;PrimitiveTypeCollectionEditor &lt;/li&gt;    &lt;li&gt;RichTextBox &lt;/li&gt;    &lt;li&gt;SplitButton &lt;/li&gt;    &lt;li&gt;WatermarkTextBox &lt;/li&gt;    &lt;li&gt;Wizard&lt;/li&gt; &lt;/ul&gt;  &lt;img src="http://feeds.feedburner.com/~r/DevelopingOnStaxmande/~4/g_96mZxYjHc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://staxmanade.blogspot.com/feeds/18528304879387799/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4726251688144615011&amp;postID=18528304879387799" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/18528304879387799?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/18528304879387799?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevelopingOnStaxmande/~3/g_96mZxYjHc/nuget-project-uncovered_18.html" title="NuGet Project Uncovered: Extended.Wpf.Toolkit" /><author><name>Jason Jarrett</name><uri>https://plus.google.com/112910204617314300568</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-Lz16PAsLf5Q/AAAAAAAAAAI/AAAAAAAAAAA/UnHrBhHKHC0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://staxmanade.blogspot.com/2012/02/nuget-project-uncovered_18.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4CQX86fyp7ImA9WhRaFUk.&quot;"><id>tag:blogger.com,1999:blog-4726251688144615011.post-7238979269689553649</id><published>2012-02-17T20:56:00.000-08:00</published><updated>2012-02-17T20:56:00.117-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-17T20:56:00.117-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="NuGet" /><title>NuGet Project Uncovered: TranslatorService.Speech</title><content type="html">&lt;blockquote&gt;   &lt;p&gt;If you are coming to this series of posts for the first time you might check out &lt;a href="http://elegantcode.com/2012/01/22/nuget-project-uncovered-an-introduction-to-the-series/" target="_blank"&gt;my introductory post&lt;/a&gt; for a little context.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href="http://nuget.org/packages/TranslatorService.Speech" target="_blank"&gt;TranslatorService.Speech&lt;/a&gt; is a small little wrapper around the Bing text to speech API. You will need to get a Bing api key to leverage this.&lt;/p&gt;  &lt;p&gt;Below is a sample usage of the library.&lt;/p&gt;  &lt;blockquote&gt;   &lt;pre&gt;SpeechSynthesizer speech = new SpeechSynthesizer(APP_ID);   &lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;  &lt;pre&gt;// To obtain a Bing Application ID, go to http://msdn.microsoft.com/en-us/library/ff512420.aspx  &lt;br /&gt; &lt;br /&gt;string text = &amp;quot;Have a nice day!&amp;quot;; &lt;br /&gt;string language = &amp;quot;en&amp;quot;; &lt;br /&gt; &lt;br /&gt;using (Stream stream = speech.GetSpeakStream(text, language)) &lt;br /&gt;{     &lt;br /&gt;    using (SoundPlayer player = new SoundPlayer(stream)) &lt;br /&gt;        player.PlaySync(); &lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I threw that into a quick test and was quite impress with how fast it worked.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Unfortunately I tried to translate a larger “paragraph” or so of text and saw.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;  &lt;p&gt;System.Net.WebException : The remote server returned an error: (400) Bad Request. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;  &lt;p&gt;at System.Net.HttpWebRequest.GetResponse() &lt;br /&gt;    &lt;br /&gt;at TranslatorService.Speech.SpeechSynthesizer.GetSpeakStream(String text, String language) &lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;at NuGetTestProject.Sample.SampleTest() in &lt;a href="projectfile:8A4BCF1F-3D9C-404F-AEC9-AB7DC9F7BFE9%2Ff%3AClass1.cs%3F14%3F1"&gt;Class1.cs: line 14&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I didn’t take the time to diagnose why, whether it’s a Bing problem or this library.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Some other observations:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;+ It supports some Async methods as well &lt;/li&gt;&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;- The Async methods don’t support the standard APM so I couldn’t easily wrap a task around. (I know there are some ways to make it work, but it’s not out of the box easy…) &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;  &lt;img src="http://feeds.feedburner.com/~r/DevelopingOnStaxmande/~4/BBSZnHm_oR0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://staxmanade.blogspot.com/feeds/7238979269689553649/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4726251688144615011&amp;postID=7238979269689553649" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/7238979269689553649?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/7238979269689553649?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevelopingOnStaxmande/~3/BBSZnHm_oR0/nuget-project-uncovered.html" title="NuGet Project Uncovered: TranslatorService.Speech" /><author><name>Jason Jarrett</name><uri>https://plus.google.com/112910204617314300568</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-Lz16PAsLf5Q/AAAAAAAAAAI/AAAAAAAAAAA/UnHrBhHKHC0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://staxmanade.blogspot.com/2012/02/nuget-project-uncovered.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkIEQXs8eSp7ImA9WhRaFEg.&quot;"><id>tag:blogger.com,1999:blog-4726251688144615011.post-4766738636879092589</id><published>2012-02-16T20:55:00.000-08:00</published><updated>2012-02-16T20:55:00.571-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-16T20:55:00.571-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="NuGet" /><title>NuGet Project Uncovered: JsValidator</title><content type="html">&lt;blockquote&gt;   &lt;p&gt;If you are coming to this series of posts for the first time you might check out &lt;a href="http://elegantcode.com/2012/01/22/nuget-project-uncovered-an-introduction-to-the-series/" target="_blank"&gt;my introductory post&lt;/a&gt; for a little context.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href="http://nuget.org/packages/JsValidator" target="_blank"&gt;JsValidator&lt;/a&gt;, on first glance, is a down right awesome gem of a NuGet. I’ve heard of &lt;a href="http://code.google.com/closure/compiler/" target="_blank"&gt;Google’s Closure Compiler&lt;/a&gt; before, but have never used it. This NuGet makes it a snap to use inside Visual Studio.&lt;/p&gt;  &lt;p&gt;When you first install the package:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font style="background-color: #ffffff"&gt;Install-Package JsValidator;&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;This NuGet tool automatically updates your project so it will execute the tool on compilation. Awesome if you are not an MSBuild expert as it just configures itself for you straight from the package install.&lt;/p&gt;  &lt;p&gt;Once installed, run a build on your solution. On first build you get an error. You’re probably thinking '”How can this tool be erroring, we just added it to the project”. This error is a good thing. It’s telling you that you now have a manual step to configure it correctly.&lt;/p&gt;  &lt;p&gt;Go check out the &lt;a href="http://jsvalidator.codeplex.com/" target="_blank"&gt;codeplex site&lt;/a&gt; as it will explain more on how to use it.&lt;/p&gt;  &lt;p&gt;I just might consider this on my next new javascript project in Visual Studio.net.&lt;/p&gt;  &lt;img src="http://feeds.feedburner.com/~r/DevelopingOnStaxmande/~4/KU667WzIDoQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://staxmanade.blogspot.com/feeds/4766738636879092589/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4726251688144615011&amp;postID=4766738636879092589" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/4766738636879092589?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/4766738636879092589?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevelopingOnStaxmande/~3/KU667WzIDoQ/nuget-project-uncovered-jsvalidator.html" title="NuGet Project Uncovered: JsValidator" /><author><name>Jason Jarrett</name><uri>https://plus.google.com/112910204617314300568</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-Lz16PAsLf5Q/AAAAAAAAAAI/AAAAAAAAAAA/UnHrBhHKHC0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://staxmanade.blogspot.com/2012/02/nuget-project-uncovered-jsvalidator.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUEMQXg7fyp7ImA9WhRaE0s.&quot;"><id>tag:blogger.com,1999:blog-4726251688144615011.post-7509709859458278305</id><published>2012-02-15T20:48:00.000-08:00</published><updated>2012-02-15T20:48:00.607-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-15T20:48:00.607-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="NuGet" /><title>NuGet Project Uncovered: FastMember</title><content type="html">&lt;blockquote&gt;   &lt;p&gt;If you are coming to this series of posts for the first time you might check out &lt;a href="http://elegantcode.com/2012/01/22/nuget-project-uncovered-an-introduction-to-the-series/" target="_blank"&gt;my introductory post&lt;/a&gt; for a little context.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href="http://nuget.org/packages/FastMember" target="_blank"&gt;FastMember&lt;/a&gt; would be something you pull in if you’re trying to do reflection to read properties of your objects, but starting to notice some performance issues. This project will emit some IL at runtime that can read your properties much faster than good old reflection (like below)&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font style="background-color: #ffffff"&gt;var value = typeof(MyObject).GetProperty(“MyProp”).GetValue(myObjInstance, new object[0]);&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Replace the above with.&lt;/p&gt;  &lt;blockquote&gt;   &lt;pre&gt;var accessor = TypeAccessor.Create(typeof(MyObject)); &lt;br /&gt;var value = accessor[obj, “MyProp”];&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;This project lets you either read or assign values to properties. (See my test below)&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://lh5.ggpht.com/-c07wZnNp_JQ/Tx-LBUyYFVI/AAAAAAAAAVg/hiErRW7eAqw/s1600-h/image_thumb1_thumb%25255B2%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image_thumb1_thumb" border="0" alt="image_thumb1_thumb" src="http://lh5.ggpht.com/-O9Oa3Z61lfc/Tx-LBzkyDtI/AAAAAAAAAVo/NtmF_YwKEfk/image_thumb1_thumb_thumb.png?imgmax=800" width="466" height="343" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;img src="http://feeds.feedburner.com/~r/DevelopingOnStaxmande/~4/VJIEoEc2Fe4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://staxmanade.blogspot.com/feeds/7509709859458278305/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4726251688144615011&amp;postID=7509709859458278305" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/7509709859458278305?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/7509709859458278305?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevelopingOnStaxmande/~3/VJIEoEc2Fe4/nuget-project-uncovered-fastmember.html" title="NuGet Project Uncovered: FastMember" /><author><name>Jason Jarrett</name><uri>https://plus.google.com/112910204617314300568</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-Lz16PAsLf5Q/AAAAAAAAAAI/AAAAAAAAAAA/UnHrBhHKHC0/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-O9Oa3Z61lfc/Tx-LBzkyDtI/AAAAAAAAAVo/NtmF_YwKEfk/s72-c/image_thumb1_thumb_thumb.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://staxmanade.blogspot.com/2012/02/nuget-project-uncovered-fastmember.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0YCQX87fSp7ImA9WhRaEkU.&quot;"><id>tag:blogger.com,1999:blog-4726251688144615011.post-2834696194499380048</id><published>2012-02-14T20:46:00.000-08:00</published><updated>2012-02-14T20:46:00.105-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-14T20:46:00.105-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="NuGet" /><title>NuGet Project Uncovered: FakeO</title><content type="html">&lt;blockquote&gt;   &lt;p&gt;If you are coming to this series of posts for the first time you might check out &lt;a href="http://elegantcode.com/2012/01/22/nuget-project-uncovered-an-introduction-to-the-series/" target="_blank"&gt;my introductory post&lt;/a&gt; for a little context.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href="http://nuget.org/packages/FakeO" target="_blank"&gt;FakeO&lt;/a&gt; is a fake object generation library. It doesn’t seem to play nicely with objects that require parameters in the constructor. However if you have lots of classes that have a default constructor and plain old get/set properties this project might be very useful.&lt;/p&gt;  &lt;p&gt;You can even specify not just random text or numbers to generate, but some specific context driven data.&lt;/p&gt;  &lt;p&gt;For example:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Random company name &lt;/li&gt;    &lt;li&gt;Lorem Ipsum to various lengths. &lt;/li&gt;    &lt;li&gt;Phone numbers &lt;/li&gt;    &lt;li&gt;Random strings based on a regex. &lt;/li&gt;    &lt;li&gt;etc…      &lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;pre&gt;// example FakeO call&lt;br /&gt;var comp = FakeO.Create.Fake&amp;lt;Company&amp;gt;(&lt;br /&gt;                c =&amp;gt; c.Name = FakeO.Company.Name(),&lt;br /&gt;                c =&amp;gt; c.Phone = FakeO.Phone.Number(),&lt;br /&gt;                c =&amp;gt; c.EmployeeCount = FakeO.Number.Next(100,200)); // random number from 100 to 200&lt;/pre&gt;&lt;/blockquote&gt;  &lt;img src="http://feeds.feedburner.com/~r/DevelopingOnStaxmande/~4/ME_ugH3Upag" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://staxmanade.blogspot.com/feeds/2834696194499380048/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4726251688144615011&amp;postID=2834696194499380048" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/2834696194499380048?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/2834696194499380048?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevelopingOnStaxmande/~3/ME_ugH3Upag/nuget-project-uncovered-fakeo.html" title="NuGet Project Uncovered: FakeO" /><author><name>Jason Jarrett</name><uri>https://plus.google.com/112910204617314300568</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-Lz16PAsLf5Q/AAAAAAAAAAI/AAAAAAAAAAA/UnHrBhHKHC0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://staxmanade.blogspot.com/2012/02/nuget-project-uncovered-fakeo.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DkAEQX49fyp7ImA9WhRaEUQ.&quot;"><id>tag:blogger.com,1999:blog-4726251688144615011.post-6908257812577837406</id><published>2012-02-13T20:45:00.000-08:00</published><updated>2012-02-13T20:45:00.067-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-13T20:45:00.067-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="NuGet" /><title>NuGet Project Uncovered: NaturalSpec</title><content type="html">&lt;blockquote&gt;   &lt;p&gt;If you are coming to this series of posts for the first time you might check out &lt;a href="http://elegantcode.com/2012/01/22/nuget-project-uncovered-an-introduction-to-the-series/" target="_blank"&gt;my introductory post&lt;/a&gt; for a little context.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href="http://nuget.org/packages/NaturalSpec" target="_blank"&gt;NaturalSpec&lt;/a&gt; is a BDD framework written in F#. This one is interesting due to F#’s concise nature and can give you very readable tests/specs.&lt;/p&gt;  &lt;p&gt;The below sample was pulled from the &lt;a href="https://github.com/forki/NaturalSpec" target="_blank"&gt;github readme&lt;/a&gt;.&lt;/p&gt;  &lt;blockquote&gt;   &lt;pre&gt;[&amp;lt;Scenario&amp;gt;]&lt;br /&gt;let ``When removing an element from a list it should not contain the element``() =&lt;br /&gt;  Given [1;2;3;4;5]                 // &amp;quot;Arrange&amp;quot; test context&lt;br /&gt;    |&amp;gt; When removing 3              // &amp;quot;Act&amp;quot;&lt;br /&gt;    |&amp;gt; It shouldn't contain 3       // &amp;quot;Assert&amp;quot;&lt;br /&gt;    |&amp;gt; It should contain 4          // another assertion&lt;br /&gt;    |&amp;gt; It should have (length 4)    // Assertion for length&lt;br /&gt;    |&amp;gt; It shouldn't have duplicates // Tests if the context contains duplicates&lt;br /&gt;    |&amp;gt; Verify                       // Verify scenario&lt;/pre&gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;It says you don’t have to learn F# to use it. Which I’d argue you may not have to learn F# as deep as you might to be able to code a production product in it, but you will definitely benefit from learning some as you go. You will also spend a bit of time learning the DSL that this project has created.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Regardless, this project has enough interest factor for me to play around with someday.&lt;/p&gt;  &lt;img src="http://feeds.feedburner.com/~r/DevelopingOnStaxmande/~4/ZnnfbwXtndI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://staxmanade.blogspot.com/feeds/6908257812577837406/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4726251688144615011&amp;postID=6908257812577837406" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/6908257812577837406?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/6908257812577837406?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevelopingOnStaxmande/~3/ZnnfbwXtndI/nuget-project-uncovered-naturalspec.html" title="NuGet Project Uncovered: NaturalSpec" /><author><name>Jason Jarrett</name><uri>https://plus.google.com/112910204617314300568</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-Lz16PAsLf5Q/AAAAAAAAAAI/AAAAAAAAAAA/UnHrBhHKHC0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://staxmanade.blogspot.com/2012/02/nuget-project-uncovered-naturalspec.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkcCQXs_eCp7ImA9WhRaEU0.&quot;"><id>tag:blogger.com,1999:blog-4726251688144615011.post-2607036508182284902</id><published>2012-02-12T20:41:00.000-08:00</published><updated>2012-02-12T20:41:00.540-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-12T20:41:00.540-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="NuGet" /><title>NuGet Project Uncovered: SpecsFor</title><content type="html">&lt;blockquote&gt;   &lt;p&gt;If you are coming to this series of posts for the first time you might check out &lt;a href="http://elegantcode.com/2012/01/22/nuget-project-uncovered-an-introduction-to-the-series/" target="_blank"&gt;my introductory post&lt;/a&gt; for a little context.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href="http://nuget.org/packages/SpecsFor" target="_blank"&gt;SpecsFor&lt;/a&gt; is a BDD framework. This project is nice in that it has packaged many of my favorite testing tools all into one package. Instead of pulling down &lt;a href="http://nunit.org/" target="_blank"&gt;NUnit&lt;/a&gt;, &lt;a href="http://code.google.com/p/moq/" target="_blank"&gt;Moq&lt;/a&gt;, &lt;a href="http://should.codeplex.com/" target="_blank"&gt;Should&lt;/a&gt;, &lt;a href="http://structuremap.net/structuremap/AutoMocker.htm" target="_blank"&gt;Automocking&lt;/a&gt;, and &lt;a href="https://github.com/derekgreer/expectedObjects" target="_blank"&gt;ExpectedObjects&lt;/a&gt; creating your own base fixture class. This project wraps all that up for you with a solid base spec class.&lt;/p&gt;  &lt;p&gt;The creator of this project spent some time and created a &lt;a href="http://specsfor.com/" target="_blank"&gt;nice project site&lt;/a&gt; with examples and documentation. &lt;/p&gt;  &lt;img src="http://feeds.feedburner.com/~r/DevelopingOnStaxmande/~4/Tr81hY8ixOQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://staxmanade.blogspot.com/feeds/2607036508182284902/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4726251688144615011&amp;postID=2607036508182284902" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/2607036508182284902?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/2607036508182284902?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevelopingOnStaxmande/~3/Tr81hY8ixOQ/nuget-project-uncovered-specsfor.html" title="NuGet Project Uncovered: SpecsFor" /><author><name>Jason Jarrett</name><uri>https://plus.google.com/112910204617314300568</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-Lz16PAsLf5Q/AAAAAAAAAAI/AAAAAAAAAAA/UnHrBhHKHC0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://staxmanade.blogspot.com/2012/02/nuget-project-uncovered-specsfor.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0EEQX0zeCp7ImA9WhRaEE8.&quot;"><id>tag:blogger.com,1999:blog-4726251688144615011.post-3224254033964568790</id><published>2012-02-11T20:40:00.000-08:00</published><updated>2012-02-11T20:40:00.380-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-11T20:40:00.380-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="NuGet" /><title>NuGet Project Uncovered: Disruptor-net</title><content type="html">&lt;blockquote&gt;   &lt;p&gt;If you are coming to this series of posts for the first time you might check out &lt;a href="http://elegantcode.com/2012/01/22/nuget-project-uncovered-an-introduction-to-the-series/" target="_blank"&gt;my introductory post&lt;/a&gt; for a little context.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href="http://nuget.org/packages/Disruptor" target="_blank"&gt;Disruptor-net&lt;/a&gt; is a port of the LMAX Disruptor which is a concurrent programming framework. The answer in this &lt;a href="http://stackoverflow.com/questions/6559308/how-does-lmaxs-disruptor-pattern-work" target="_blank"&gt;StackOverflow question&lt;/a&gt; gave a pretty good explanation of the project/pattern used.&lt;/p&gt;  &lt;p&gt;Project Source: &lt;a href="https://github.com/odeheurles/Disruptor-net"&gt;https://github.com/odeheurles/Disruptor-net&lt;/a&gt;&lt;/p&gt;  &lt;img src="http://feeds.feedburner.com/~r/DevelopingOnStaxmande/~4/AUtbWnBE02c" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://staxmanade.blogspot.com/feeds/3224254033964568790/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4726251688144615011&amp;postID=3224254033964568790" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/3224254033964568790?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/3224254033964568790?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevelopingOnStaxmande/~3/AUtbWnBE02c/nuget-project-uncovered-disruptor-net.html" title="NuGet Project Uncovered: Disruptor-net" /><author><name>Jason Jarrett</name><uri>https://plus.google.com/112910204617314300568</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-Lz16PAsLf5Q/AAAAAAAAAAI/AAAAAAAAAAA/UnHrBhHKHC0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://staxmanade.blogspot.com/2012/02/nuget-project-uncovered-disruptor-net.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0YAQXs-fCp7ImA9WhRbGU4.&quot;"><id>tag:blogger.com,1999:blog-4726251688144615011.post-101000924007733217</id><published>2012-02-10T20:39:00.000-08:00</published><updated>2012-02-10T20:39:00.554-08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-10T20:39:00.554-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="NuGet" /><title>NuGet Project Uncovered: Nukito</title><content type="html">&lt;blockquote&gt;   &lt;p&gt;If you are coming to this series of posts for the first time you might check out &lt;a href="http://elegantcode.com/2012/01/22/nuget-project-uncovered-an-introduction-to-the-series/" target="_blank"&gt;my introductory post&lt;/a&gt; for a little context.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;&lt;a href="http://nuget.org/packages/Nukito" target="_blank"&gt;Nukito&lt;/a&gt; is a project that’s taking AutoMocking to another level and baking it into the tooling/framework. If you use xUnit and Moq and want to avoid much of your redundant mock setup/verify code. You might want to take a look at this project.&lt;/p&gt;  &lt;p&gt;I didn’t dig very deep into this project, but it smells somewhat like &lt;a href="http://nuget.org/packages/AutoFixture" target="_blank"&gt;AutoFixture&lt;/a&gt; which I believe has more support for other frameworks and is a bit more popular. (Again I didn’t dig deep enough to understand the core differences).&lt;/p&gt;  &lt;img src="http://feeds.feedburner.com/~r/DevelopingOnStaxmande/~4/xUAT5lu6EIg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://staxmanade.blogspot.com/feeds/101000924007733217/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=4726251688144615011&amp;postID=101000924007733217" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/101000924007733217?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/4726251688144615011/posts/default/101000924007733217?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/DevelopingOnStaxmande/~3/xUAT5lu6EIg/nuget-project-uncovered-nukito.html" title="NuGet Project Uncovered: Nukito" /><author><name>Jason Jarrett</name><uri>https://plus.google.com/112910204617314300568</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh6.googleusercontent.com/-Lz16PAsLf5Q/AAAAAAAAAAI/AAAAAAAAAAA/UnHrBhHKHC0/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://staxmanade.blogspot.com/2012/02/nuget-project-uncovered-nukito.html</feedburner:origLink></entry></feed>
