<?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/opensearchrss/1.0/" 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"><id>tag:blogger.com,1999:blog-13321238</id><updated>2013-05-19T19:21:47.208+10:00</updated><category term="AOP" /><category term="Visual Studio" /><category term="alt.net" /><category term="tools" /><category term="pdc" /><category term="workflow" /><category term="silverlight" /><category term="books" /><category term="ajax" /><category term="TFS" /><category term="development" /><category term="holiday" /><category term="Sandcastle" /><category term="alm" /><category term="community" /><category term="WP7" /><category term="how to" /><category term="games" /><category term="live writer" /><category term="readify" /><category term="communication" /><category term="open source" /><category term="general" /><category term="CruiseControl.NET" /><category term="VSTS" /><category term="blogger" /><category term="scrum" /><category term="agile" /><category term="tech industry" /><category term="powershell" /><category term="mocking" /><category term="tech.ed" /><category term="microsoft" /><category term="design" /><category term="VS11" /><category term=".net" /><category term="podcasting" /><category term="code contracts" /><category term="testing" /><category term="architecture" /><category term="blogging" /><category term="basics" /><category term="usability" /><category term="nhibernate" /><category term="management" /><category term="database" /><category term="presentations" /><title type="text">Richard Banks - Agile and .NET</title><subtitle type="html">Agile Development in a .NET world</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://www.richard-banks.org/feeds/posts/full" /><link rel="alternate" type="text/html" href="http://www.richard-banks.org/" /><link rel="next" type="application/atom+xml" href="http://www.richard-banks.org/feeds/posts/full?start-index=26&amp;max-results=25" /><author><name>Richard Banks</name><uri>https://plus.google.com/108737416426536739827</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-qMhF7F-2pE0/AAAAAAAAAAI/AAAAAAAABXo/ytojM-BZV84/s512-c/photo.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>576</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/RichardsBraindump" /><feedburner:info uri="richardsbraindump" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site.</feedburner:browserFriendly><entry><id>tag:blogger.com,1999:blog-13321238.post-8171842486214724959</id><published>2013-05-13T15:10:00.001+10:00</published><updated>2013-05-13T15:17:43.981+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="agile" /><category scheme="http://www.blogger.com/atom/ns#" term="community" /><title type="text">Lean Kanban Australia Conference</title><content type="html">A number of Australian agile community people, including my colleague &lt;a href="http://twitter.com/stevegodbold" target="_blank"&gt;Steve Godbold&lt;/a&gt;, have decided to run a conference for Lean and Kanban approaches.&lt;br /&gt;&lt;br /&gt;The interesting thing about this conference is that it is being funded and run using a crowd sourcing model and the organisers need to know if there's enough interest to run this thing.&amp;nbsp; Of course, this means they need you to get behind it and pledge something towards it and sooner rather than later.&lt;br /&gt;&lt;br /&gt;What do you need to do? Two things:&lt;br /&gt;&lt;br /&gt;1. Go to &lt;a href="http://www.pozible.com/lkanz"&gt;http://www.pozible.com/lkanz&lt;/a&gt;&amp;nbsp;and pledge something towards the conference&lt;br /&gt;2. Spread the word.&lt;br /&gt;&lt;br /&gt;Simple!&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=tpLhUnn4484:2_nwlG-PAAg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=tpLhUnn4484:2_nwlG-PAAg:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=tpLhUnn4484:2_nwlG-PAAg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=tpLhUnn4484:2_nwlG-PAAg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=tpLhUnn4484:2_nwlG-PAAg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=tpLhUnn4484:2_nwlG-PAAg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=tpLhUnn4484:2_nwlG-PAAg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=tpLhUnn4484:2_nwlG-PAAg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=tpLhUnn4484:2_nwlG-PAAg:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardsBraindump/~4/tpLhUnn4484" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.richard-banks.org/feeds/8171842486214724959/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.richard-banks.org/2013/05/lean-kanban-australia-conference.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13321238/posts/default/8171842486214724959" /><link rel="self" type="application/atom+xml" href="http://www.richard-banks.org/feeds/posts/default/8171842486214724959" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardsBraindump/~3/tpLhUnn4484/lean-kanban-australia-conference.html" title="Lean Kanban Australia Conference" /><author><name>Richard Banks</name><uri>https://plus.google.com/108737416426536739827</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-qMhF7F-2pE0/AAAAAAAAAAI/AAAAAAAABXo/ytojM-BZV84/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.richard-banks.org/2013/05/lean-kanban-australia-conference.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-13321238.post-62940248213458550</id><published>2013-04-17T22:18:00.001+10:00</published><updated>2013-04-17T22:18:17.380+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="development" /><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio" /><title type="text">What’s Visual Studio’s Code Map All About?</title><content type="html">&lt;p&gt;In Visual Studio 2012 Update 1 (VS 2012.1) Microsoft delivered a feature for the Ultimate edition called Code Map with the goal of visualising relationships in code.&lt;/p&gt;  &lt;p&gt;In Visual Studio 2012 Update 2 (VS 2012.2) they’ve extended the Code Map experience to include debugging support and the ability to generate code maps on the fly as a debugging session is conducted.&lt;/p&gt;  &lt;p&gt;If you saw the announcement then you may have had one of the following reactions. Reaction 1 would be something like “Oh. It’s in Ultimate. I don’t have it. I’ll ignore it”. The second might be similar to mine: “Is this really going to be that useful?”. After ignoring it for a bit I decided to answer that question for myself.&lt;/p&gt;  &lt;p&gt;For the purposes of this post, I’m used the excellent RestSharp project. You can grab it from &lt;a title="https://github.com/restsharp/RestSharp" href="https://github.com/restsharp/RestSharp"&gt;https://github.com/restsharp/RestSharp&lt;/a&gt;. Oh, if you’re not aware of what it does, it’s a library that help’s you build REST based client and server applications by taking away a lot of the plumbing work you would otherwise have to do.&lt;/p&gt;  &lt;h3&gt;Getting Started&lt;/h3&gt;  &lt;p&gt;To start begin by asking a simple question. How does RestSharp make a client request? I’d never looked at the internals of RestSharp before so I wasn’t sure where to look.&lt;/p&gt;  &lt;p&gt;Fortunately RestSharp comes with a set of unit and integration tests that I could use to explore the code with. I started with the integration tests and tried to find a suitable test in there to use and came across the &lt;strong&gt;Handles_Non_Existent_Domain()&lt;/strong&gt; test. That seems a reasonable place to start. Note that if you want to follow along at home you’ll need the &lt;a href="http://visualstudiogallery.msdn.microsoft.com/463c5987-f82b-46c8-a97e-b1cde42b9099" target="_blank"&gt;XUnit.Net Test Runner for Visual Studio 2012&lt;/a&gt; extension installed since the tests are written for xUnit.&lt;/p&gt;  &lt;p&gt;First thing to do? Set a breakpoint on the first line of the &lt;strong&gt;Handles_Non_Existent_Domain()&lt;/strong&gt; test and start debugging the test. When the breakpoint is hit open a Code Map for the debugging session by either clicking the button in the toolbar (highlighted in the screenshot), choosing &lt;strong&gt;Show Call Stack on Code Map&lt;/strong&gt; from the &lt;strong&gt;Debug &lt;/strong&gt;menu, or pressing &lt;strong&gt;Ctrl+Shift+`&lt;/strong&gt; if you’re using the default keyboard mappings.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-of6PDnFZKwM/UW6SzRMFB6I/AAAAAAAABY0/0YhCX3EYnR8/s1600-h/image%25255B64%25255D.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-RNFmqrRhAMY/UW6Sz5IF2II/AAAAAAAABY8/GAeVmzVUoOs/image_thumb%25255B22%25255D.png?imgmax=800" width="239" height="30" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Visual Studio will now split the document window and display a second document pane with the code map in it. Initially the code map will looks like this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-6KWbwb8Dld0/UW6S0pF5htI/AAAAAAAABZE/S8JCNHum8qQ/s1600-h/image%25255B67%25255D.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-_on6-8m6kYs/UW6S1QO2LPI/AAAAAAAABZM/3S8ABXzmt5s/image_thumb%25255B25%25255D.png?imgmax=800" width="238" height="107" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Not very interesting, right? Don’t worry, it gets better. Let’s start stepping into various methods to see how this test works.&lt;/p&gt;  &lt;h3&gt;Stepping Deeper&lt;/h3&gt;  &lt;p&gt;Press F11 to step into the &lt;strong&gt;RestClient&lt;/strong&gt; constructor. As you do, you will notice the code map updating. Continue to step through the code until the first call to &lt;strong&gt;AddHandler()&lt;/strong&gt; has completed. Your Code Map should now show something like the following:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-clukpHNl6Mc/UW6S1itMRmI/AAAAAAAABZU/avW5EMcfi1Q/s1600-h/image%25255B70%25255D.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh5.ggpht.com/-QMa0JH_rMyo/UW6S2I9KwGI/AAAAAAAABZc/nm2knATGgy8/image_thumb%25255B28%25255D.png?imgmax=800" width="431" height="412" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Note that as we step back up the call stack that the colours of nodes in the Code Map change to reflect that methods we have called but that are no longer in the call stack. It helps us keep track of where we’ve been, not just where we are now.&amp;#160; This is kinda cool. I no longer have to mentally keep this tree in my head, and can focus more on what the code is doing rather than where I’ve been and which methods might be relevant later on.&lt;/p&gt;  &lt;p&gt;Depending on your resolution, you may also start noticing the zoom level on your Code Map keeps resetting. If you want it to use a specific zoom value then go to the layout options and turn off “Automatically Layout when Debugging”&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-uSoBsNpX_pI/UW6S2_4fgZI/AAAAAAAABZk/Sc-U2B_lhBo/s1600-h/image%25255B72%25255D.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh5.ggpht.com/-vSgyzHQ1pkw/UW6S3VW1BLI/AAAAAAAABZs/O1C25Vsw944/image_thumb%25255B30%25255D.png?imgmax=800" width="404" height="322" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;What Happens When You Skip Over Methods?&lt;/h3&gt;  &lt;p&gt;The code map only updates when execution pauses. It means that if you step over methods the Code Map will not show you what happened in the code you stepped over. It also means that if you use multiple breakpoints and after hitting the first breakpoint continue execution until you hit the next one, then the Code Map will only reflect the call stack from when the breakpoints were hit. You won’t see anything related to what happened in between breakpoints.&lt;/p&gt;  &lt;p&gt;It helps keep the noise in the map down, and presumes that if you’ve skipped over code you’re also not interested in seeing it in the map. That seems to be a reasonable assumption to me.&lt;/p&gt;        &lt;p&gt;Anyway, let’s get back to the test we were stepping through and continue execution until we get to the line that calls the &lt;strong&gt;Client.Execute()&lt;/strong&gt; method.&lt;/p&gt;  &lt;p&gt;As you step into the method the Code Map will update. Look at the tooltip for the newly added node and you will see details of the method itself based on XML Doc comments, as shown:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-5_Gs73lF1YI/UW6S3zl-afI/AAAAAAAABZ0/jIM0xXFehI0/s1600-h/image%25255B74%25255D.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-GeT4m2wdRCo/UW6S4piqARI/AAAAAAAABZ8/MTqjBimzouU/image_thumb%25255B32%25255D.png?imgmax=800" width="590" height="206" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This can be handy when you’re deep within the bowels of something and can’t remember exactly how you got to where you are or which specific overload of a method was called.&lt;/p&gt;  &lt;p&gt;If we then step into the switch statement, we see that we’re passing in a value of &lt;strong&gt;Method.GET&lt;/strong&gt;. It might be handy to remember that; especially as both parts of the switch statement call &lt;strong&gt;Execute()&lt;/strong&gt;. We can make a note of that on the Code Map by right clicking the node and selecting &lt;strong&gt;Add Comment&lt;/strong&gt; (or hitting &lt;strong&gt;Ctrl+Shift+K&lt;/strong&gt;)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-Rnxe5_OKuwM/UW6S5AskseI/AAAAAAAABaE/OcPU__tr_Do/s1600-h/image%25255B82%25255D.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh5.ggpht.com/--R4tSY6vctw/UW6S5gCkICI/AAAAAAAABaM/Zmk8m-qCmPM/image_thumb%25255B40%25255D.png?imgmax=800" width="343" height="181" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;At various point you’ll notice that the some calls go through external code first. The code map will reflect this when it occurs by marking the fact on the call stack arrow, as shown.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-xKz6Nmmbf1o/UW6S6bBmhNI/AAAAAAAABaU/Yoj6UwxAkxU/s1600-h/image%25255B86%25255D.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-nMWL6RBfZPI/UW6S7OkDwzI/AAAAAAAABac/XX_oEjHVm5U/image_thumb%25255B44%25255D.png?imgmax=800" width="321" height="255" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h3&gt;Way Down Deep&lt;/h3&gt;  &lt;p&gt;If you continue to step through the code you will eventually get to the &lt;strong&gt;RestSharp.Http.GetRawResponse()&lt;/strong&gt; method and your Code Map will start to look somewhat busy, as follows:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-d2Fr-RZrGN0/UW6S7_xAnuI/AAAAAAAABak/kccHkf-Yn-s/s1600-h/image%25255B78%25255D.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-DQl-pjBPcxE/UW6S8144veI/AAAAAAAABas/nzMqUevKKTk/image_thumb%25255B36%25255D.png?imgmax=800" width="640" height="193" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;A lot of the nodes in the Code Map are not that interesting now that we’ve stepped through things and are improving our understand of how it fits together. It’s fast becoming noise. To organise the map better we could simply select nodes we’re not interested in anymore and delete them or we can choose to group them by selecting a few, hitting the mouse right-click context menu and choosing &lt;strong&gt;Add Parent Group&lt;/strong&gt;, to get something like the following:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-Q-TVqGWLoSw/UW6S9h1FasI/AAAAAAAABa0/_MaUw3FNF7w/s1600-h/image%25255B80%25255D.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh4.ggpht.com/-n4Fs7P0HRrk/UW6S-FXpXCI/AAAAAAAABa8/jrsB89iAsTw/image_thumb%25255B38%25255D.png?imgmax=800" width="542" height="295" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We can then simply collapse groups to hide items we’re not really interested in at the moment.&lt;/p&gt;  &lt;p&gt;With a little bit of judicious grouping I produced a Code Map as follows and now I have something that helps me better navigate the internals of RestSharp and get familiar with it.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-wHb0rM4d4dA/UW6S-9Xo-WI/AAAAAAAABbE/g6fgAhoqEyk/s1600-h/image%25255B85%25255D.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh4.ggpht.com/-bns9DM0j0u8/UW6TBwfSJHI/AAAAAAAABbM/TlyIBZNoMJo/image_thumb%25255B43%25255D.png?imgmax=800" width="640" height="462" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;Wrapping it Up&lt;/h2&gt;  &lt;p&gt;I can add to this map over time as I explore the code further and step through other tests to see how it works, I can also get a feel for which parts of the code are called often and what happens in those methods.&lt;/p&gt;  &lt;p&gt;If I wished I could also save the code map and share it with the rest of team, or grab an image of it and post it in the team wiki for documentation purposes or put it on the wall as a reference.&lt;/p&gt;  &lt;p&gt;While Code Maps might seem a little gimmicky at first, I’m finding them fast becoming an useful tool in helping me better understand code I’m wading through and in improving my knowledge of what exactly is happening when I’m using an application.&lt;/p&gt;  &lt;p&gt;Give Code Maps a try (assuming you have a copy of Ultimate) and see what you think.&lt;/p&gt;  &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=NtqCm0HS1Hc:rTeC0BsZGWc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=NtqCm0HS1Hc:rTeC0BsZGWc:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=NtqCm0HS1Hc:rTeC0BsZGWc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=NtqCm0HS1Hc:rTeC0BsZGWc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=NtqCm0HS1Hc:rTeC0BsZGWc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=NtqCm0HS1Hc:rTeC0BsZGWc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=NtqCm0HS1Hc:rTeC0BsZGWc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=NtqCm0HS1Hc:rTeC0BsZGWc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=NtqCm0HS1Hc:rTeC0BsZGWc:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardsBraindump/~4/NtqCm0HS1Hc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.richard-banks.org/feeds/62940248213458550/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.richard-banks.org/2013/04/whats-visual-studios-code-map-all-about.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13321238/posts/default/62940248213458550" /><link rel="self" type="application/atom+xml" href="http://www.richard-banks.org/feeds/posts/default/62940248213458550" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardsBraindump/~3/NtqCm0HS1Hc/whats-visual-studios-code-map-all-about.html" title="What’s Visual Studio’s Code Map All About?" /><author><name>Richard Banks</name><uri>https://plus.google.com/108737416426536739827</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-qMhF7F-2pE0/AAAAAAAAAAI/AAAAAAAABXo/ytojM-BZV84/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-RNFmqrRhAMY/UW6Sz5IF2II/AAAAAAAABY8/GAeVmzVUoOs/s72-c/image_thumb%25255B22%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.richard-banks.org/2013/04/whats-visual-studios-code-map-all-about.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-13321238.post-1411696657622284518</id><published>2013-04-11T18:00:00.001+10:00</published><updated>2013-04-11T18:00:09.809+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="presentations" /><category scheme="http://www.blogger.com/atom/ns#" term="agile" /><category scheme="http://www.blogger.com/atom/ns#" term="scrum" /><title type="text">Confessions of a Product Owner - Scrum Australia 2013</title><content type="html">The Scrum Australia 2013 conference has just finished and I had the pleasure of delivering a session for Product Owners aimed at helping them improve what they do and identify some of the mistakes they may be making. A big thank you to those who attended and for making the session as interactive as it was.&lt;br /&gt;&lt;br /&gt;As promised, I’m posting the slides from the session here. Just remember that the slides are an aid to the presentation and that the back half of the deck was designed for interactivity in the room, not for offline consumption. Regardless, here it is.&lt;br /&gt;&lt;br /&gt;&lt;iframe frameborder="0" height="366" src="https://skydrive.live.com/embed?cid=EF4A085C562CD5AD&amp;amp;resid=EF4A085C562CD5AD%211188&amp;amp;authkey=ANDZr8gqjtniMhA&amp;amp;em=2&amp;amp;wdAr=1.7777777777777776" width="610"&gt;This is an embedded &lt;a target="_blank" href="http://office.com"&gt;Microsoft Office&lt;/a&gt; presentation, powered by &lt;a target="_blank" href="http://office.com/webapps"&gt;Office Web Apps&lt;/a&gt;.&lt;/iframe&gt;  &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=bfhaLXZcE1U:4pzMbi-1SRk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=bfhaLXZcE1U:4pzMbi-1SRk:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=bfhaLXZcE1U:4pzMbi-1SRk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=bfhaLXZcE1U:4pzMbi-1SRk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=bfhaLXZcE1U:4pzMbi-1SRk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=bfhaLXZcE1U:4pzMbi-1SRk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=bfhaLXZcE1U:4pzMbi-1SRk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=bfhaLXZcE1U:4pzMbi-1SRk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=bfhaLXZcE1U:4pzMbi-1SRk:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardsBraindump/~4/bfhaLXZcE1U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.richard-banks.org/feeds/1411696657622284518/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.richard-banks.org/2013/04/confessions-of-product-owner-scrum.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13321238/posts/default/1411696657622284518" /><link rel="self" type="application/atom+xml" href="http://www.richard-banks.org/feeds/posts/default/1411696657622284518" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardsBraindump/~3/bfhaLXZcE1U/confessions-of-product-owner-scrum.html" title="Confessions of a Product Owner - Scrum Australia 2013" /><author><name>Richard Banks</name><uri>https://plus.google.com/108737416426536739827</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-qMhF7F-2pE0/AAAAAAAAAAI/AAAAAAAABXo/ytojM-BZV84/s512-c/photo.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://www.richard-banks.org/2013/04/confessions-of-product-owner-scrum.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-13321238.post-830143134312533854</id><published>2013-04-03T10:22:00.001+11:00</published><updated>2013-04-03T10:22:23.768+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="scrum" /><title type="text">Why a Short Feedback Cycle is a Good Thing</title><content type="html">&lt;p&gt;n 1981, Barry Boehm published information on the cost of change in software at various stages of the development cycle. The following chart shows this cost curve:   &lt;br /&gt;&lt;a href="http://lh3.ggpht.com/-pqEb15dzDL8/UVtoJxDIi6I/AAAAAAAABYI/1XbCRZ8tpC4/s1600-h/image%25255B4%25255D.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh3.ggpht.com/-7C3CsZ_r484/UVtoKaESqWI/AAAAAAAABYQ/MCcuTLL0uIY/image_thumb%25255B2%25255D.png?imgmax=800" width="366" height="294" /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;&lt;em&gt;Boehm's Cost of Change Curve – 1981&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;This model has historically led the industry to believe that the most important thing we can do is &lt;strong&gt;“get the requirements right!”&lt;/strong&gt;.&amp;#160; The thing is, the model above is somewhat incorrect. It assumes a traditional software development lifecycle is the only way software is built and that working software can only be used at the end of a project.&amp;#160; With the rise of agile development techniques this is no longer true and we can deliver usable software every week or two.&lt;/p&gt;  &lt;p&gt;Also, from the chart, consider that bottom axis – time. Time here represents the length of the feedback cycle; i.e. how long it takes to realise a problem exists and that a change is needed. Time is the critical element in determining the cost of any change. The longer we go before realising we need a change, the higher the cost of that change.   &lt;br /&gt;In an agile approach, the short iterations of a few weeks or less result in a much shorter feedback cycle.&lt;/p&gt;  &lt;p&gt;Scott Ambler published the following chart on the cost of change in relation to defect correction and the point in the development cycle where that defect is detected.&amp;#160; Again, the longer the feedback cycle the higher the cost of rectifying the problem.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-HQNqbANSTPE/UVtoLGAZp_I/AAAAAAAABYY/Djt1AN2mygc/s1600-h/image%25255B9%25255D.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh5.ggpht.com/-yZnKirtvtMw/UVtoLg_35oI/AAAAAAAABYg/-BPqlP6OWGU/image_thumb%25255B5%25255D.png?imgmax=800" width="511" height="396" /&gt;&lt;/a&gt;    &lt;br /&gt;&lt;em&gt;Image via Scott Ambler - &lt;/em&gt;&lt;a href="http://www.ambysoft.com/essays/whyAgileWorksFeedback.html"&gt;&lt;em&gt;http://www.ambysoft.com/essays/whyAgileWorksFeedback.html&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So by using Scrum and putting in place good engineering practices alongside a short feedback cycle we establish a number of mechanisms that help us rapidly detect mistakes in both requirements and their implementation. This in turn allows us to take corrective action and fix the problem while it is still cost effective for us to do so.&lt;/p&gt;  &lt;p&gt;In the end, this helps us keep our application quality high and provides better value to our end users and customers.&lt;/p&gt;  &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=d1B8ED1Vh4o:jJ2-KBx1rbc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=d1B8ED1Vh4o:jJ2-KBx1rbc:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=d1B8ED1Vh4o:jJ2-KBx1rbc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=d1B8ED1Vh4o:jJ2-KBx1rbc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=d1B8ED1Vh4o:jJ2-KBx1rbc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=d1B8ED1Vh4o:jJ2-KBx1rbc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=d1B8ED1Vh4o:jJ2-KBx1rbc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=d1B8ED1Vh4o:jJ2-KBx1rbc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=d1B8ED1Vh4o:jJ2-KBx1rbc:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardsBraindump/~4/d1B8ED1Vh4o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.richard-banks.org/feeds/830143134312533854/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.richard-banks.org/2013/04/why-short-feedback-cycle-is-good-thing.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13321238/posts/default/830143134312533854" /><link rel="self" type="application/atom+xml" href="http://www.richard-banks.org/feeds/posts/default/830143134312533854" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardsBraindump/~3/d1B8ED1Vh4o/why-short-feedback-cycle-is-good-thing.html" title="Why a Short Feedback Cycle is a Good Thing" /><author><name>Richard Banks</name><uri>https://plus.google.com/108737416426536739827</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-qMhF7F-2pE0/AAAAAAAAAAI/AAAAAAAABXo/ytojM-BZV84/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-7C3CsZ_r484/UVtoKaESqWI/AAAAAAAABYQ/MCcuTLL0uIY/s72-c/image_thumb%25255B2%25255D.png?imgmax=800" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://www.richard-banks.org/2013/04/why-short-feedback-cycle-is-good-thing.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-13321238.post-7021929627520657656</id><published>2013-02-18T07:17:00.001+11:00</published><updated>2013-02-18T07:17:11.083+11:00</updated><title type="text">I’m speaking at the Scrum Australia conference this April</title><content type="html">&lt;p&gt;The inaugural &lt;a href="http://www.scrum.com.au/" target="_blank"&gt;Scrum Australia conference&lt;/a&gt; is on in Sydney this April and I’ll be there, speaking about the mistakes Product Owners tend to make.&amp;#160; if that doesn’t interest you then fear not, as there’s plenty of other great content being delivered. Don’t believe me? Just have a &lt;a href="http://www.scrum.com.au/programme/programme-schedule/" target="_blank"&gt;look at the schedule&lt;/a&gt;. There’s even an open space event for making sure you get to talk with other people about topics that specifically interest you.&lt;/p&gt;  &lt;p&gt;This should be a great conference so talk to work and arrange some time out so you can get along on April 11 and 12. I’ll see you there!&lt;/p&gt;  &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=myy9EDxxn9w:1FowqyMsduA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=myy9EDxxn9w:1FowqyMsduA:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=myy9EDxxn9w:1FowqyMsduA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=myy9EDxxn9w:1FowqyMsduA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=myy9EDxxn9w:1FowqyMsduA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=myy9EDxxn9w:1FowqyMsduA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=myy9EDxxn9w:1FowqyMsduA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=myy9EDxxn9w:1FowqyMsduA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=myy9EDxxn9w:1FowqyMsduA:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardsBraindump/~4/myy9EDxxn9w" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.richard-banks.org/feeds/7021929627520657656/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.richard-banks.org/2013/02/im-speaking-at-scrum-australia.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13321238/posts/default/7021929627520657656" /><link rel="self" type="application/atom+xml" href="http://www.richard-banks.org/feeds/posts/default/7021929627520657656" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardsBraindump/~3/myy9EDxxn9w/im-speaking-at-scrum-australia.html" title="I’m speaking at the Scrum Australia conference this April" /><author><name>Richard Banks</name><uri>https://plus.google.com/108737416426536739827</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-qMhF7F-2pE0/AAAAAAAAAAI/AAAAAAAABXo/ytojM-BZV84/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.richard-banks.org/2013/02/im-speaking-at-scrum-australia.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-13321238.post-3108942762250840010</id><published>2013-01-31T06:50:00.001+11:00</published><updated>2013-01-31T06:50:59.660+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="TFS" /><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio" /><category scheme="http://www.blogger.com/atom/ns#" term="alm" /><title type="text">Git is now an option for TFS Source Control</title><content type="html">&lt;p&gt;Yes, it’s true. Hell has frozen over!&lt;/p&gt;  &lt;p&gt;After much waiting the TFS team have today announced that Git is a fully supported source control choice for TFS, and that Visual Studio 2012 now has tooling available for working with Git repositories, built right into the VS shell.&amp;#160; I know, right?! Oh, and it’s not some Microsoft half baked git like implementation, it’s the full thing.&lt;/p&gt;  &lt;p&gt;Here’s the announcement on Brian Harry’s blog: &lt;a title="http://blogs.msdn.com/b/bharry/archive/2013/01/30/git-init-vs.aspx" href="http://blogs.msdn.com/b/bharry/archive/2013/01/30/git-init-vs.aspx"&gt;http://blogs.msdn.com/b/bharry/archive/2013/01/30/git-init-vs.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And here’s a quick getting started post on the VSALM team blog: &lt;a title="http://blogs.msdn.com/b/visualstudioalm/archive/2013/01/30/getting-started-with-git-in-visual-studio-and-team-foundation-service.aspx" href="http://blogs.msdn.com/b/visualstudioalm/archive/2013/01/30/getting-started-with-git-in-visual-studio-and-team-foundation-service.aspx"&gt;http://blogs.msdn.com/b/visualstudioalm/archive/2013/01/30/getting-started-with-git-in-visual-studio-and-team-foundation-service.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So what’s stopping you? If you haven’t already created an account on &lt;a href="http://tfs.visualstudio.com"&gt;http://tfs.visualstudio.com&lt;/a&gt; then get to it. Download the bits for VS2012, create yourself a team project with Git as your source control provider and see what it’s like.&lt;/p&gt;  &lt;p&gt;P.S. In case you’ve forgotten, for those using a TFS server with the standard version control system, you can use &lt;a href="http://git-tf.codeplex.com" target="_blank"&gt;Git-Tf&lt;/a&gt; to put a local git repository in front of it.&lt;/p&gt;  &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=50NJ3FYvfdY:H7WUEysYUBI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=50NJ3FYvfdY:H7WUEysYUBI:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=50NJ3FYvfdY:H7WUEysYUBI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=50NJ3FYvfdY:H7WUEysYUBI:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=50NJ3FYvfdY:H7WUEysYUBI:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=50NJ3FYvfdY:H7WUEysYUBI:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=50NJ3FYvfdY:H7WUEysYUBI:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=50NJ3FYvfdY:H7WUEysYUBI:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=50NJ3FYvfdY:H7WUEysYUBI:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardsBraindump/~4/50NJ3FYvfdY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.richard-banks.org/feeds/3108942762250840010/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.richard-banks.org/2013/01/git-is-now-option-for-tfs-source-control.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13321238/posts/default/3108942762250840010" /><link rel="self" type="application/atom+xml" href="http://www.richard-banks.org/feeds/posts/default/3108942762250840010" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardsBraindump/~3/50NJ3FYvfdY/git-is-now-option-for-tfs-source-control.html" title="Git is now an option for TFS Source Control" /><author><name>Richard Banks</name><uri>https://plus.google.com/108737416426536739827</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-qMhF7F-2pE0/AAAAAAAAAAI/AAAAAAAABXo/ytojM-BZV84/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://www.richard-banks.org/2013/01/git-is-now-option-for-tfs-source-control.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-13321238.post-6597910972170519580</id><published>2013-01-25T10:29:00.001+11:00</published><updated>2013-01-25T10:29:16.197+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="scrum" /><title type="text">A Scrum Reading List</title><content type="html">&lt;p&gt;When I run one of my Scrum.org classes I’ll often mention various books that I’ve found useful and students will typically jot down those book names for looking up later. When one of the students in a class I did recently asked for links to all the books I mentioned I thought to myself “Why didn’t I have that list handy?” So, after that #facepalm feeling passed I organised myself and put together an Amazon ListMania list for future reference. Here it is for your perusal.&lt;/p&gt;  &lt;p&gt;Richard’s &lt;a href="http://www.amazon.com/Scrum-Reading-List/lm/R1SSXMY0DAE472/ref=cm_lm_byauthor_title_full" target="_blank"&gt;Scrum Reading List&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Enjoy!&lt;/p&gt;  &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=twm262WHtqo:pVTf8KPftuY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=twm262WHtqo:pVTf8KPftuY:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=twm262WHtqo:pVTf8KPftuY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=twm262WHtqo:pVTf8KPftuY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=twm262WHtqo:pVTf8KPftuY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=twm262WHtqo:pVTf8KPftuY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=twm262WHtqo:pVTf8KPftuY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=twm262WHtqo:pVTf8KPftuY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=twm262WHtqo:pVTf8KPftuY:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardsBraindump/~4/twm262WHtqo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.richard-banks.org/feeds/6597910972170519580/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.richard-banks.org/2013/01/a-scrum-reading-list.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13321238/posts/default/6597910972170519580" /><link rel="self" type="application/atom+xml" href="http://www.richard-banks.org/feeds/posts/default/6597910972170519580" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardsBraindump/~3/twm262WHtqo/a-scrum-reading-list.html" title="A Scrum Reading List" /><author><name>Richard Banks</name><uri>https://plus.google.com/108737416426536739827</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-qMhF7F-2pE0/AAAAAAAAAAI/AAAAAAAABXo/ytojM-BZV84/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.richard-banks.org/2013/01/a-scrum-reading-list.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-13321238.post-2565745184924753866</id><published>2013-01-22T09:31:00.001+11:00</published><updated>2013-01-22T09:31:57.100+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="scrum" /><title type="text">Oh dear. Another Waterfall #FAIL…. to the sum of $1.3 Billion</title><content type="html">&lt;p&gt;Have a read of this article on the NYTimes - &lt;a title="http://www.nytimes.com/2012/12/09/technology/air-force-stumbles-over-software-modernization-project.html" href="http://www.nytimes.com/2012/12/09/technology/air-force-stumbles-over-software-modernization-project.html"&gt;http://www.nytimes.com/2012/12/09/technology/air-force-stumbles-over-software-modernization-project.html&lt;/a&gt; about a failed US Air Force project. Failed to the cost of US$1.3 Billion, 6 years and with nothing to show for it. Nada. Zip. Diddly squat. Zero.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-9FaJwlXcobc/UP3B1I4ViII/AAAAAAAABXw/LKwEF6iZDW4/s1600-h/austin_powers_mike_myers_as_dr_evil%25255B2%25255D.jpg"&gt;&lt;img title="austin_powers_mike_myers_as_dr_evil" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; float: right; padding-top: 0px; padding-left: 0px; margin: 5px 0px 5px 5px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="austin_powers_mike_myers_as_dr_evil" align="right" src="http://lh5.ggpht.com/-9qzmGNNd3jc/UP3B2jq1wSI/AAAAAAAABX0/dC_YCWbC74Y/austin_powers_mike_myers_as_dr_evil_thumb.jpg?imgmax=800" width="244" height="197" /&gt;&lt;/a&gt;Take a few moments to get over that sick feeling you have in your stomach and then ask yourself “When will people learn?”&lt;/p&gt;  &lt;p&gt;I’m still shaking my head over this article.&amp;#160; And more so over statements like &lt;em&gt;“did not succeed in imposing the short deadlines of 18 to 24 months”.&lt;/em&gt; 2 years is short? Seriously?&lt;/p&gt;  &lt;p&gt;What about this; &lt;em&gt;“We’ve never tried to change all the processes, tools and languages of all 250,000 people in our business at once”&lt;/em&gt;? Or this; &lt;em&gt;“We started with a Big Bang approach and put every possible requirement into the program, which made it very large and very complex,”&lt;/em&gt;. It appears people still haven’t learned that the only thing you will likely get from a big bang approach is a loud explosion, lots of smoke and debris and, if people are involved, there’s usually plenty of blood on the walls. There’s always people involved.&lt;/p&gt;  &lt;p&gt;Unfortunately I know of far too many projects right now that are still taking the big bang approach and hoping it will work. Note that key word there – “hoping”.&amp;#160; Hope, as one of my former CEO’s used to love to say, Hope is not a business strategy.&lt;/p&gt;  &lt;p&gt;Companies should be learning the painful lessons of other organisation’s #FAILs and taking on more agile approaches.&amp;#160; Steve Denning has put together &lt;a href="http://www.forbes.com/sites/stevedenning/2012/12/11/reconciling-innovation-with-control-the-air-forces-1-3-billion-lesson-in-agile/" target="_blank"&gt;an interesting write up of the whole fiasco&lt;/a&gt; and the organisational impediments that prevented such an approach from being undertaken let alone being successful. Maybe the scale of waste in the project will be just the catalyst the military needs to genuinely improve, and maybe people will learn that COTS like Oracle or SAP or any of those consulting-ware packages combined with old-school systems integrators like CSC really aren’t worth the money they charge.&amp;#160; Then again, maybe not. #sigh&lt;/p&gt;  &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=-a_z3rsAHnw:fwj2rG3HvZ4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=-a_z3rsAHnw:fwj2rG3HvZ4:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=-a_z3rsAHnw:fwj2rG3HvZ4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=-a_z3rsAHnw:fwj2rG3HvZ4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=-a_z3rsAHnw:fwj2rG3HvZ4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=-a_z3rsAHnw:fwj2rG3HvZ4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=-a_z3rsAHnw:fwj2rG3HvZ4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=-a_z3rsAHnw:fwj2rG3HvZ4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=-a_z3rsAHnw:fwj2rG3HvZ4:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardsBraindump/~4/-a_z3rsAHnw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.richard-banks.org/feeds/2565745184924753866/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.richard-banks.org/2013/01/oh-dear-another-waterfall-fail-to-sum.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13321238/posts/default/2565745184924753866" /><link rel="self" type="application/atom+xml" href="http://www.richard-banks.org/feeds/posts/default/2565745184924753866" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardsBraindump/~3/-a_z3rsAHnw/oh-dear-another-waterfall-fail-to-sum.html" title="Oh dear. Another Waterfall #FAIL…. to the sum of $1.3 Billion" /><author><name>Richard Banks</name><uri>https://plus.google.com/108737416426536739827</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-qMhF7F-2pE0/AAAAAAAAAAI/AAAAAAAABXo/ytojM-BZV84/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-9qzmGNNd3jc/UP3B2jq1wSI/AAAAAAAABX0/dC_YCWbC74Y/s72-c/austin_powers_mike_myers_as_dr_evil_thumb.jpg?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.richard-banks.org/2013/01/oh-dear-another-waterfall-fail-to-sum.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-13321238.post-4205835801135536010</id><published>2012-11-06T11:38:00.001+11:00</published><updated>2012-11-06T11:38:48.923+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="microsoft" /><title type="text">//BUILD 2012 Wrap Up</title><content type="html">&lt;p&gt;This was an editorial for the Australian MSDN newsletter that got bumped for various reasons so I’m posting it here for your edutainment.&lt;/p&gt;  &lt;p&gt;----&lt;/p&gt;  &lt;p&gt;By now you’ve no doubt heard that both Windows 8 and Windows Phone 8 have been released to consumers and I’m sure many of you are looking forward to getting your hands on the exciting new Windows 8 tablets and ultrabooks or checking out the awesome new Windows Phone 8 handsets. When you do, I don’t think you’ll be disappointed!&lt;/p&gt;  &lt;p&gt;You may also have seen that attendees at //BUILD were given a Microsoft Surface RT and a Nokia Lumia 920 to build applications for. Having used both devices extensively for the past few days you can colour me impressed! These are wonderful pieces of kit! I’ve also spent time with some of the other offerings from Microsoft’s hardware partners and these devices have some serious competition.&amp;#160; Check out &lt;a href="http://channel9.msdn.com/Events/Build/2012/1-001"&gt;Steve Ballmer’s keynote&lt;/a&gt; to see some of these other devices in action.&lt;/p&gt;  &lt;p&gt;I’m also confident that the prophets of doom in the press predicting the end of the world as we know it will be proven wrong in time. I say this because I visited one of Microsoft’s retail stores in Bellevue a number of times this week to watch how “average consumers” interacted with the new Windows offerings. The store crowded every time I visited, which was great, though my confidence comes from seeing people pick up devices with some initial trepidation, play with them for a few minutes before cracking into a grin as they got how Windows 8 worked and then handing over their cash and walking out of the store with newly purchased devices!&lt;/p&gt;  &lt;p&gt;What this means is that the consumer demand is here, now and it’s huge! The question you need to ask yourself now is “what apps can I build to meet that demand?”. You already have the development skills you need; just learn the specifics of building Windows Store and/or Windows Phone apps and you’re all set to go.&amp;#160; Nothing is stopping you.&lt;/p&gt;  &lt;p&gt;Oh, that isn’t all that has happened this week either. There have been a slew of announcements from the ‘other’ Windows (Azure). Windows Azure web sites now support .NET 4.5, there are updates to Windows Azure Mobile Services, the Azure hosted &lt;a href="http://tfs.visualstudio.com/"&gt;Team Foundation Service&lt;/a&gt; has RTM’ed and it was announced that Halo 4 will be using Azure to scale out and meet the demands of the millions of gamers all wanting to frag each other.&lt;/p&gt;  &lt;p&gt;This week the Windows ecosystem has taken an evolutionary leap forward and the future is bright so if you haven’t already done so, go and check out the session recordings at &lt;a href="http://channel9.msdn.com/Events/Build/2012"&gt;Channel 9&lt;/a&gt; and then get started building great apps for both Windows 8 and Windows Phone 8 today.&lt;/p&gt;  &lt;p&gt;Finally, if you want learn about building modern apps using Visual Studio 2012 tooling then you should definitely check out the Microsoft and Readify &lt;a href="https://readify.net/microsoft-readify-2012-roadshow"&gt;Modern Apps, Modern Processes&lt;/a&gt; road show happening this month.&lt;/p&gt;  &lt;p&gt;Happy coding!&lt;/p&gt;  &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=jPwWGcJlZ7A:9u8iWS5-GnE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=jPwWGcJlZ7A:9u8iWS5-GnE:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=jPwWGcJlZ7A:9u8iWS5-GnE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=jPwWGcJlZ7A:9u8iWS5-GnE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=jPwWGcJlZ7A:9u8iWS5-GnE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=jPwWGcJlZ7A:9u8iWS5-GnE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=jPwWGcJlZ7A:9u8iWS5-GnE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=jPwWGcJlZ7A:9u8iWS5-GnE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=jPwWGcJlZ7A:9u8iWS5-GnE:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardsBraindump/~4/jPwWGcJlZ7A" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.richard-banks.org/feeds/4205835801135536010/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.richard-banks.org/2012/11/build-2012-wrap-up.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13321238/posts/default/4205835801135536010" /><link rel="self" type="application/atom+xml" href="http://www.richard-banks.org/feeds/posts/default/4205835801135536010" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardsBraindump/~3/jPwWGcJlZ7A/build-2012-wrap-up.html" title="//BUILD 2012 Wrap Up" /><author><name>Richard Banks</name><uri>https://plus.google.com/108737416426536739827</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-qMhF7F-2pE0/AAAAAAAAAAI/AAAAAAAABXo/ytojM-BZV84/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.richard-banks.org/2012/11/build-2012-wrap-up.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-13321238.post-324062878455515676</id><published>2012-09-27T09:52:00.001+10:00</published><updated>2012-09-28T19:00:13.032+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="microsoft" /><title type="text">Where are all the new desktop keyboards for Windows 8?</title><content type="html">&lt;p&gt;With Windows 8 being RTM’ed and a slew of new devices to be launched on October 26 (just a few weeks away) I can’t help but wonder where the new keyboards are.&amp;#160; Sure, Microsoft has &lt;a href="http://www.pocket-lint.com/news/46700/windows-eight-bluetooth-keyboards-mice-announced" target="_blank"&gt;announced some new keyboards and mice&lt;/a&gt;, but they’re not gesture enables and have no charm keys on them.&amp;#160; The keyboard is just a fairly standard keyboard with the new Windows logo on it.&amp;#160; Boring!&lt;/p&gt;  &lt;p&gt;&lt;img alt="Windows 8 Bluetooth keyboards and mice announced" src="http://cdn.pocket-lint.com/images/GXYy/windows-eight-bluetooth-keyboards-mice-announced-0.jpg?20120820-143904" /&gt;&lt;/p&gt;  &lt;p&gt;I was expecting something to be announced that supports the touch style gestures and the Windows 8 Charms. The &lt;a href="http://www.logitech.com/en-us/keyboards/keyboards/wireless-touch-keyboard-k400" target="_blank"&gt;Logitech K400&lt;/a&gt; is has potential with it’s inbuilt touchpad but is still missing the key elements.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-JKuU70mn7_s/UGOVCq0oNGI/AAAAAAAABV8/hrHD9fdeb80/s1600-h/image%25255B4%25255D.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/-HNP4q_9xXDQ/UGOVEh6SYtI/AAAAAAAABWE/iygGxbXSDVk/image_thumb%25255B2%25255D.png?imgmax=800" width="534" height="214" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So, what do I want on my keyboard?&lt;/p&gt;  &lt;p&gt;Firstly, I want the charms on my keyboard, mirroring what’s on screen.&amp;#160; Sure, I can press Win+C just like everyone else, but I’d rather a single key press. I’m lazy.&lt;/p&gt;  &lt;p&gt;I also want a mini-display on my keyboard that mirrors my current display so I can do swipes, pinch and zoom, and so on simply by using gestures on the in-keyboard display instead of reaching out across my desk to touch the screen and looking like a fool. Plus too much of that and I’d get a tired arm.&lt;/p&gt;  &lt;p&gt;I want something a little like this and I’m willing to pay for it:    &lt;br /&gt;&lt;a href="http://lh3.ggpht.com/-DD-7Hnet5zk/UGOVGTZK9AI/AAAAAAAABWM/Z4y3I8ZPHzA/s1600-h/SNAGHTML2ce30ce%25255B5%25255D.png"&gt;&lt;img title="SNAGHTML2ce30ce" 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="SNAGHTML2ce30ce" src="http://lh6.ggpht.com/-1DjCIQHtHN0/UGOVH473NOI/AAAAAAAABWU/3zmM7haW1RU/SNAGHTML2ce30ce_thumb%25255B2%25255D.png?imgmax=800" width="561" height="208" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Maybe something has already been announced, but if so I can’t find it.&lt;/p&gt;  &lt;h3&gt;UPDATE&lt;/h3&gt;  &lt;p&gt;I just came across the &lt;a href="http://www.razerzone.com/gaming-keyboards-keypads/razer-deathstalker-ultimate" target="_blank"&gt;DeathStalker keyboard from Razer&lt;/a&gt;.&amp;#160; This looks really promising. Here’s the main thing that could make it work – the &lt;a href="http://www.razerzone.com/switchblade-ui" target="_blank"&gt;Switchblade UI&lt;/a&gt;.&amp;#160; I could definitely see the charm keys up along the top of the trackpad and the trackpad itself looks like it has the display and multitouch capabilities sorted already.&amp;#160; Looks like all we need is a Windows 8 app written for it.&amp;#160; Does anyone have some rock hard C++ skills? :-)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-1qTjDoVu7EE/UGVnEhZoeBI/AAAAAAAABWs/s-XKyuTevWQ/s1600-h/image%25255B5%25255D.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh5.ggpht.com/-0_HhNV0MsXA/UGVnGk8Fb7I/AAAAAAAABW0/E0-PqXgvFL8/image_thumb%25255B2%25255D.png?imgmax=800" width="644" height="326" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=pYU4drFgSq8:JLpWHK_bFdM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=pYU4drFgSq8:JLpWHK_bFdM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=pYU4drFgSq8:JLpWHK_bFdM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=pYU4drFgSq8:JLpWHK_bFdM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=pYU4drFgSq8:JLpWHK_bFdM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=pYU4drFgSq8:JLpWHK_bFdM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=pYU4drFgSq8:JLpWHK_bFdM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=pYU4drFgSq8:JLpWHK_bFdM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=pYU4drFgSq8:JLpWHK_bFdM:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardsBraindump/~4/pYU4drFgSq8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.richard-banks.org/feeds/324062878455515676/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.richard-banks.org/2012/09/where-are-all-new-desktop-keyboards-for.html#comment-form" title="27 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13321238/posts/default/324062878455515676" /><link rel="self" type="application/atom+xml" href="http://www.richard-banks.org/feeds/posts/default/324062878455515676" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardsBraindump/~3/pYU4drFgSq8/where-are-all-new-desktop-keyboards-for.html" title="Where are all the new desktop keyboards for Windows 8?" /><author><name>Richard Banks</name><uri>https://plus.google.com/108737416426536739827</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-qMhF7F-2pE0/AAAAAAAAAAI/AAAAAAAABXo/ytojM-BZV84/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-HNP4q_9xXDQ/UGOVEh6SYtI/AAAAAAAABWE/iygGxbXSDVk/s72-c/image_thumb%25255B2%25255D.png?imgmax=800" height="72" width="72" /><thr:total>27</thr:total><feedburner:origLink>http://www.richard-banks.org/2012/09/where-are-all-new-desktop-keyboards-for.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-13321238.post-1182315527510077496</id><published>2012-09-13T21:42:00.001+10:00</published><updated>2012-09-13T21:42:22.853+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="development" /><title type="text">HATEOAS? Surely we can come up with a better acronym!</title><content type="html">&lt;p&gt;Today on twitter I mentioned that a class I was teaching REST to was having trouble with the HATEOAS acronym and what it was all about.&lt;/p&gt;  &lt;p&gt;For reference HATEOAS stands for &lt;font color="#ff0000"&gt;H&lt;/font&gt;ypermedia &lt;font color="#ff0000"&gt;A&lt;/font&gt;s &lt;font color="#ff0000"&gt;T&lt;/font&gt;he &lt;font color="#ff0000"&gt;E&lt;/font&gt;ngine &lt;font color="#ff0000"&gt;O&lt;/font&gt;f &lt;font color="#ff0000"&gt;A&lt;/font&gt;pplication &lt;font color="#ff0000"&gt;S&lt;/font&gt;tate. The concept that an application’s state is in the hypermedia sent between client and server and that both the client and server themselves are stateless.&lt;/p&gt;  &lt;p&gt;The awesome &lt;a href="http://www.paulbatum.com/" target="_blank"&gt;Paul Batum&lt;/a&gt; responded with this:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-BvRtp--0fcs/UFHGlwxdFsI/AAAAAAAABVg/quJuTfpmqlw/s1600-h/image%25255B5%25255D.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-N0QqncAmjkQ/UFHGnO4MuFI/AAAAAAAABVo/POimgUuV3KQ/image_thumb%25255B3%25255D.png?imgmax=800" width="478" height="226" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I completely agree with his sentiments and for that reason I’m proposing a new acronym. This one is a TLA, and one you can say! What more could you want. So here it is:&lt;/p&gt;  &lt;p&gt;&lt;font size="4"&gt;&lt;strong&gt;ASH&lt;/strong&gt;&amp;#160;&lt;/font&gt;– &lt;font size="4"&gt;&lt;strong&gt;A&lt;/strong&gt;&lt;/font&gt;pplication &lt;font size="4"&gt;&lt;strong&gt;S&lt;/strong&gt;&lt;/font&gt;tate in &lt;font size="4"&gt;&lt;strong&gt;H&lt;/strong&gt;&lt;/font&gt;ypermedia&lt;/p&gt;  &lt;p&gt;What do you think? Can you come up with something better? What would you propose? Drop comment on the post and let’s see what you think.&lt;/p&gt;  &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=BfP4ZQ6rSjo:CKa_3P7W1IM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=BfP4ZQ6rSjo:CKa_3P7W1IM:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=BfP4ZQ6rSjo:CKa_3P7W1IM:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=BfP4ZQ6rSjo:CKa_3P7W1IM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=BfP4ZQ6rSjo:CKa_3P7W1IM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=BfP4ZQ6rSjo:CKa_3P7W1IM:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=BfP4ZQ6rSjo:CKa_3P7W1IM:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=BfP4ZQ6rSjo:CKa_3P7W1IM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=BfP4ZQ6rSjo:CKa_3P7W1IM:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardsBraindump/~4/BfP4ZQ6rSjo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.richard-banks.org/feeds/1182315527510077496/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.richard-banks.org/2012/09/hateoas-surely-we-can-come-up-with.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13321238/posts/default/1182315527510077496" /><link rel="self" type="application/atom+xml" href="http://www.richard-banks.org/feeds/posts/default/1182315527510077496" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardsBraindump/~3/BfP4ZQ6rSjo/hateoas-surely-we-can-come-up-with.html" title="HATEOAS? Surely we can come up with a better acronym!" /><author><name>Richard Banks</name><uri>https://plus.google.com/108737416426536739827</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-qMhF7F-2pE0/AAAAAAAAAAI/AAAAAAAABXo/ytojM-BZV84/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-N0QqncAmjkQ/UFHGnO4MuFI/AAAAAAAABVo/POimgUuV3KQ/s72-c/image_thumb%25255B3%25255D.png?imgmax=800" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://www.richard-banks.org/2012/09/hateoas-surely-we-can-come-up-with.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-13321238.post-8190485458343884874</id><published>2012-09-06T10:01:00.001+10:00</published><updated>2012-09-06T10:01:46.440+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio" /><title type="text">Visual Studio 2012 Cookbook is now available</title><content type="html">&lt;p&gt;I’m pleased to announce that my &lt;a href="http://www.packtpub.com/microsoft-visual-studio-2012-first-look-cookbook/book" target="_blank"&gt;Visual Studio 2012 Cookbook&lt;/a&gt; is now available from Packt Publishing.&amp;#160; Amazon and other distributors should have it available shortly.&lt;/p&gt;  &lt;p&gt;As a developer you should always know how to make the most of the tools at your disposal and the Visual Studio 2012 Cookbook is a great way to reduce the learning and discovery time for your shiny new IDE. The book is a “ramp up” book that aims to quickly familiarise you with the major new features of VS2012 and assumes you have a working knowledge of a prior Visual Studio version.&lt;/p&gt;  &lt;p&gt;Because it’s a ramp up book it won’t be for everyone, however it’s priced so it can be more time efficient to buy the e-book (or tree-book if you must) and use it to learn the new features rather than trying to find the same information by either exploring the app click by click or scouring the web looking for “what’s new” articles.&lt;/p&gt;  &lt;p&gt;Go ahead, buy a copy today, and don’t forget to get one for your Mum as well!&amp;#160; I’ve got starving children to feed!&lt;/p&gt;  &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=yT6Dpc_rupI:cYE3T3o9OxU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=yT6Dpc_rupI:cYE3T3o9OxU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=yT6Dpc_rupI:cYE3T3o9OxU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=yT6Dpc_rupI:cYE3T3o9OxU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=yT6Dpc_rupI:cYE3T3o9OxU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=yT6Dpc_rupI:cYE3T3o9OxU:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=yT6Dpc_rupI:cYE3T3o9OxU:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=yT6Dpc_rupI:cYE3T3o9OxU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=yT6Dpc_rupI:cYE3T3o9OxU:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardsBraindump/~4/yT6Dpc_rupI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.richard-banks.org/feeds/8190485458343884874/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.richard-banks.org/2012/09/visual-studio-2012-cookbook-is-now.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13321238/posts/default/8190485458343884874" /><link rel="self" type="application/atom+xml" href="http://www.richard-banks.org/feeds/posts/default/8190485458343884874" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardsBraindump/~3/yT6Dpc_rupI/visual-studio-2012-cookbook-is-now.html" title="Visual Studio 2012 Cookbook is now available" /><author><name>Richard Banks</name><uri>https://plus.google.com/108737416426536739827</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-qMhF7F-2pE0/AAAAAAAAAAI/AAAAAAAABXo/ytojM-BZV84/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://www.richard-banks.org/2012/09/visual-studio-2012-cookbook-is-now.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-13321238.post-6467638283792855380</id><published>2012-09-04T20:38:00.001+10:00</published><updated>2012-09-04T20:38:29.038+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="TFS" /><title type="text">Using Git-Tf with TFSPreview.com</title><content type="html">&lt;p&gt;You may have noticed a few weeks back that Microsoft has released an open source project named &lt;a href="http://gittf.codeplex.com/"&gt;Git-Tf&lt;/a&gt; which is very similar to &lt;a href="http://git-tfs.com/"&gt;Git-Tfs&lt;/a&gt; in that it allows you to have a local git repository that can push/pull from a remote TFS server.&lt;/p&gt;  &lt;p&gt;The first question? Why would Microsoft do this if Git-Tfs already exists and does the job? The answer is pretty simple. The Git-Tfs project is windows only, and Microsoft wanted a cross platform solution so that linux, Mac/XCode developers can also put their source into TFS.&amp;#160; Microsoft even talked to the git-tfs team first before building their own version and then open sourcing it.&lt;/p&gt;  &lt;p&gt;One of the problems with the initial versions of git-tf was that it didn’t talk to TFSPreview.com because of the requirement to login using a Live Id. That’s all changed in recent days so here’s how to get it working:&lt;/p&gt;  &lt;h3&gt;Step 1 – Enable Basic Auth on your account&lt;/h3&gt;  &lt;p&gt;This was an &lt;a href="http://tfspreview.com/en-us/home/news/2012/aug-27/"&gt;update&lt;/a&gt; in the TFSPreview service made at the end of August that allows you to set up basic auth credentials for your account. You will need to enable it.&lt;/p&gt;  &lt;p&gt;Go to your profile and turn it on:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-wXidOoVVP9c/UEXaC1j4T7I/AAAAAAAABUk/MNUA913XkHI/s1600-h/image%25255B7%25255D.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh5.ggpht.com/-aEkYgDCTCGQ/UEXaD6hYxYI/AAAAAAAABUo/dbckD7ZGENQ/image_thumb%25255B3%25255D.png?imgmax=800" width="297" height="191" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Next, go to the credentials tab and enable the alternate credentials.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-JcNsH4HqhJw/UEXaE9nb94I/AAAAAAAABU0/f3Svy2rqAgA/s1600-h/image%25255B9%25255D.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh5.ggpht.com/-Wt75eshLQiQ/UEXaGVr-BeI/AAAAAAAABU8/QS9FmNl6BTA/image_thumb%25255B5%25255D.png?imgmax=800" width="640" height="441" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;h3&gt;Step 2 – Update Git-Tf (if required)&lt;/h3&gt;  &lt;p&gt;You may need to update your git-tf version if you already have it installed.&amp;#160; You should be running version 1.0.1.20120827 or later.&lt;/p&gt;  &lt;p&gt;Use &lt;strong&gt;git tf --version&lt;/strong&gt; to check what you are currently running and you can get the latest version from the &lt;a href="http://go.microsoft.com/fwlink/?LinkId=261658"&gt;Microsoft Downloads&lt;/a&gt; page.&lt;/p&gt;  &lt;h3&gt;Step 3 – Clone your repository&lt;/h3&gt;  &lt;p&gt;This is pretty simple.&amp;#160; Simply use the &lt;strong&gt;git tf clone&lt;/strong&gt; command and point it at your tfspreview account.&lt;/p&gt;  &lt;p&gt;Here’s me cloning one of my projects&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-hEf5pW9F5XY/UEXaHUReSwI/AAAAAAAABVE/3vv3XAoZMSc/s1600-h/image%25255B15%25255D.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://lh6.ggpht.com/-pY3nSWXYAZk/UEXaIhS2QtI/AAAAAAAABVM/6wjkPq-MiTU/image_thumb%25255B9%25255D.png?imgmax=800" width="640" height="108" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And then you’re done! You’ve now got yourself a local git repository connected to tfspreview and everything is all set to go!&lt;/p&gt;  &lt;p&gt;Fantastic :-)&lt;/p&gt;  &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=ZKcHoy5I17I:YOdNjKR59hA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=ZKcHoy5I17I:YOdNjKR59hA:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=ZKcHoy5I17I:YOdNjKR59hA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=ZKcHoy5I17I:YOdNjKR59hA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=ZKcHoy5I17I:YOdNjKR59hA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=ZKcHoy5I17I:YOdNjKR59hA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=ZKcHoy5I17I:YOdNjKR59hA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=ZKcHoy5I17I:YOdNjKR59hA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=ZKcHoy5I17I:YOdNjKR59hA:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardsBraindump/~4/ZKcHoy5I17I" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.richard-banks.org/feeds/6467638283792855380/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.richard-banks.org/2012/09/using-git-tf-with-tfspreviewcom.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13321238/posts/default/6467638283792855380" /><link rel="self" type="application/atom+xml" href="http://www.richard-banks.org/feeds/posts/default/6467638283792855380" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardsBraindump/~3/ZKcHoy5I17I/using-git-tf-with-tfspreviewcom.html" title="Using Git-Tf with TFSPreview.com" /><author><name>Richard Banks</name><uri>https://plus.google.com/108737416426536739827</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-qMhF7F-2pE0/AAAAAAAAAAI/AAAAAAAABXo/ytojM-BZV84/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh5.ggpht.com/-aEkYgDCTCGQ/UEXaD6hYxYI/AAAAAAAABUo/dbckD7ZGENQ/s72-c/image_thumb%25255B3%25255D.png?imgmax=800" height="72" width="72" /><thr:total>0</thr:total><feedburner:origLink>http://www.richard-banks.org/2012/09/using-git-tf-with-tfspreviewcom.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-13321238.post-4318278073500417464</id><published>2012-09-03T16:12:00.001+10:00</published><updated>2012-09-03T16:12:58.813+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="scrum" /><title type="text">An Exercise in Analysing Estimates</title><content type="html">&lt;p&gt;I’m currently coaching an organisation undergoing a Scrum implementation and we’re having some problems with velocity within teams and the consistency of estimates across teams.&amp;#160; The teams are delivering well, but velocity is a little choppy and the teams are feeling a little blind as to their true rate of progress.&lt;/p&gt;  &lt;p&gt;As an exercise we looked at the stories the teams sized up and took on across a few sprints, and we looked at their estimated effort for each story once they did the task breakdowns and had built their sprint backlog.&lt;/p&gt;  &lt;h2&gt;The Data&lt;/h2&gt;  &lt;p&gt;Here’s what we saw after a few sprints:&lt;/p&gt;  &lt;h3&gt;Team 1&lt;/h3&gt;  &lt;table cellspacing="0" cellpadding="2" width="400" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Points&lt;/td&gt;        &lt;td valign="top" width="133"&gt;Avg Estimated Time&lt;/td&gt;        &lt;td valign="top" width="133"&gt;Standard Deviation&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;3&lt;/td&gt;        &lt;td valign="top" width="133"&gt;2.5&lt;/td&gt;        &lt;td valign="top" width="133"&gt;1.32&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;5&lt;/td&gt;        &lt;td valign="top" width="133"&gt;2.67&lt;/td&gt;        &lt;td valign="top" width="133"&gt;1.89&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;8&lt;/td&gt;        &lt;td valign="top" width="133"&gt;7.67&lt;/td&gt;        &lt;td valign="top" width="133"&gt;3.25&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;10&lt;/td&gt;        &lt;td valign="top" width="133"&gt;9.75&lt;/td&gt;        &lt;td valign="top" width="133"&gt;1.77&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;13&lt;/td&gt;        &lt;td valign="top" width="133"&gt;9.67&lt;/td&gt;        &lt;td valign="top" width="133"&gt;7.23&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;20&lt;/td&gt;        &lt;td valign="top" width="133"&gt;19.86&lt;/td&gt;        &lt;td valign="top" width="133"&gt;9.33&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;30&lt;/td&gt;        &lt;td valign="top" width="133"&gt;22&lt;/td&gt;        &lt;td valign="top" width="133"&gt;0&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h3&gt;Team 2&lt;/h3&gt;  &lt;table cellspacing="0" cellpadding="2" width="400" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="133"&gt;Points&lt;/td&gt;        &lt;td valign="top" width="133"&gt;Avg Estimated Time&lt;/td&gt;        &lt;td valign="top" width="133"&gt;Standard Deviation&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;3&lt;/td&gt;        &lt;td valign="top" width="133"&gt;2&lt;/td&gt;        &lt;td valign="top" width="133"&gt;.71&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;5&lt;/td&gt;        &lt;td valign="top" width="133"&gt;8&lt;/td&gt;        &lt;td valign="top" width="133"&gt;0&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;8&lt;/td&gt;        &lt;td valign="top" width="133"&gt;9.5&lt;/td&gt;        &lt;td valign="top" width="133"&gt;4.69&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;13&lt;/td&gt;        &lt;td valign="top" width="133"&gt;23.5&lt;/td&gt;        &lt;td valign="top" width="133"&gt;16.99&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="133"&gt;20&lt;/td&gt;        &lt;td valign="top" width="133"&gt;44.67&lt;/td&gt;        &lt;td valign="top" width="133"&gt;9.29&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Before you measure, understand the goal&lt;/h2&gt;  &lt;p&gt;The temptation when looking at any numbers here is to over analyse things and fall into the trap of “we need better estimates” and forget about the true aim of any Scrum Team, which is to deliver creatively and productively deliver business value to your customers.&lt;/p&gt;  &lt;p&gt;The primary goal is always delivery! Not better estimates. The only reason we estimate in the first place is to help our product owners forecast when items are likely to be completed.&lt;/p&gt;  &lt;p&gt;With that said, if we have bad estimates we will have bad forecasts and unhappy product owners and customers.&amp;#160; We would like to have reasonable estimates so that we have reasonable forecasts, but not if it means we spend so much time estimating that we forget to get out there and build some awesome stuff that makes people happy.&lt;/p&gt;  &lt;p&gt;The purpose of this exercise is to improve our understanding of the estimates we are providing, But remember, better estimates are a secondary objective and inconsequential compared to the prime objective of delivery.&lt;/p&gt;  &lt;h2&gt;When scaling, should teams have a consistent baseline?&lt;/h2&gt;  &lt;p&gt;Both teams are working on the same product, though in different areas of the product to avoid stepping on each other’s toes.&amp;#160; Initially each time has sized the work they are doing using individual product backlogs.&lt;/p&gt;  &lt;p&gt;Do they need to have some level of consistency between teams? Maybe – maybe not.&amp;#160; In my customer’s case they would like that consistency because they’re having trouble knowing how long things will take and are having trouble forecasting using the velocity numbers from each team.&amp;#160; While at the moment the teams are fairly separate, this may not always be the case and if the teams end up working on the same area of the product it would be nice to know that if Team 1 sizes something at 5 points that Team 2 would size the item at 5 points as well.&lt;/p&gt;  &lt;p&gt;If the teams stayed distinct all the way through development, this consistency wouldn’t be required.&lt;/p&gt;  &lt;h2&gt;Cross team sizing comparison&lt;/h2&gt;  &lt;p&gt;Look at the estimated effort for a 13 point story in Team 1.&amp;#160; It’s about 10 hours.&amp;#160; The same 10 hours in Team 2 is an 8 point story.&lt;/p&gt;  &lt;p&gt;Why the difference? Is it just because Team 1 is much faster than Team 2? Do they just have a higher velocity and are more awesome than the other team?&lt;/p&gt;  &lt;p&gt;Is it because Team 2 is working on items that are harder than they estimated when they sized them?&lt;/p&gt;  &lt;p&gt;Honestly, the numbers can’t tell you.&amp;#160; You would have to look beyond the numbers to see what’s going on.&lt;/p&gt;  &lt;p&gt;In the case of my customer the two teams are roughly equivalent. Same team size, roughly the same domain knowledge and skill level. As such I would expect that both teams estimating the same sized items would come out with approximately the same number of hours for the effort involved.&lt;/p&gt;  &lt;p&gt;When that’s added to the understanding of the numbers I’m inclined to think that Team 1 is simply estimating using higher numbers than Team 2.&amp;#160; This is not uncommon for teams starting with Scrum and learning to do sizing for themselves.&amp;#160; As long as they stay consistent, their team velocities will cancel out any “padding” of the story points they have done.&lt;/p&gt;  &lt;h2&gt;Relative sizing is “Relative”&lt;/h2&gt;  &lt;p&gt;Now we come to the more interesting thing we can consider in the estimate statistics and the one I’m much more interested in raising the awareness of within the teams.&lt;/p&gt;  &lt;p&gt;Firstly, no team sized any 1 or 2 point stories.&amp;#160; This is a smell straight away for me and makes me think the team are padding their sizes.&amp;#160; After talking to the team, I know this to be the case and it’s something they’re having to unlearn.&lt;/p&gt;  &lt;p&gt;Next, if we consider relative sizing then the difference between a 5 point story and a 20 point story should be about 4 times.&lt;/p&gt;  &lt;p&gt;In Team 1, a 5 point story is 2.67 hours.&amp;#160; A 20 point story should be around 10 hours.&amp;#160; Instead we see that 10 hours works out to be around the 13 point size and the 20 point story is about 20 hours.&amp;#160; Almost 8 times the 5 point items.&lt;/p&gt;  &lt;p&gt;Maybe it’s just that Team 1 didn’t use 5 as their “average” size story, but rather 8 points.&amp;#160; Let’s see.&amp;#160; An 8 point story is almost 8 hours.&amp;#160; OK.&amp;#160; So a 20 point story would be about 20 hours – not bad.&amp;#160; However the 13 point story doesn’t fit, nor does the 5 point story.&lt;/p&gt;  &lt;h4&gt;Only 3 estimate brackets?&lt;/h4&gt;  &lt;p&gt;In fact looking at the average estimates it would that the team can only estimate in Small, Medium and Large timeframes where small is about 3 hours or less (half a day).&amp;#160; Medium is a day (8-10 hours) and Large is 20 hours (2-3 days).&amp;#160; Again, this is not uncommon for teams starting out and something I’ll need to work through with the teams to help improve their understanding of what they are doing so that they can inspect &amp;amp; adapt.&lt;/p&gt;  &lt;h4&gt;What about Team 2?&lt;/h4&gt;  &lt;p&gt;Doing the same analysis of Team 2 we see that a 5 point story is 8 hours estimated work.&amp;#160; That means a 20 point story should be around 32 hours. Well, a 20 point story is 45 hours, it’s a difference, but not overly large..&lt;/p&gt;  &lt;p&gt;However, the 5 and 8 point stories are fairly similar in size, so maybe the 8 is more akin to a “medium” story.&amp;#160; 8 points is about 10 hours, give or take, so a 20 point story should be around 25 hours.&amp;#160; Now we have a size gap of almost 50%.&amp;#160; This is very similar to the behaviour we saw in Team 1.&lt;/p&gt;  &lt;p&gt;Again, looking at the sizes it would appear that we have 4 obvious sizing ranges.&amp;#160; Small, 2 hours.&amp;#160; Medium, 8 hours,&amp;#160; Large, 3 days and Very Large, 5-6 days.&lt;/p&gt;  &lt;p&gt;Why didn’t Team 1 have a similar Very Large story size in their estimates?&amp;#160; Likely because they recognized the Very Large story and broke it down into smaller items.&lt;/p&gt;  &lt;h2&gt;Why measure standard deviation?&lt;/h2&gt;  &lt;p&gt;You will have noticed that the stats have a standard deviation column.&amp;#160; This is so we can see the volatility of the estimated effort for the various story sizes.&amp;#160; For example the 13 point stories for Team 2 are all over the place.&amp;#160; A standard deviation of 16 hours is very large – that’s a 2 day variation in effort and likely indicates that the team is still learning what their story points feel like in terms of effort.&lt;/p&gt;  &lt;h2&gt;DON’T ABUSE THE NUMBERS – They’re just indicators&lt;/h2&gt;  &lt;p&gt;Now that we’ve looked at these numbers, what do we do with them?&lt;/p&gt;  &lt;p&gt;We want to use them to Inspect and Adapt; to learn how to be better than we are today, but we must remember that the numbers are just indicators.&amp;#160; We may even be looking at numbers that are misleading.&amp;#160; If we pay too much attention to the numbers people will start to change behaviour to make them look better.&amp;#160; We don’t want the teams to start gaming the numbers since that would reduce visibility and transparency.&lt;/p&gt;  &lt;p&gt;While the statistics would seem to indicate that the team do not completely understanding their requirements (the high standard deviations), or that they are padding estimates and still learning what relative sizing is all about, we cannot rely on the statistics alone.&lt;/p&gt;  &lt;p&gt;We should take these numbers to the teams for their next retrospective and talk them through. Let’s see what the team can make of them and what steps they suggest for getting better at estimating.&lt;/p&gt;  &lt;p&gt;Since these teams are wanting to improve, information like this can help.&lt;/p&gt;  &lt;p&gt;Given the estimate size bandings one suggestion for the teams is to move away from story points for a time and adopt T-Shirt sizing instead.&amp;#160; Given they have already got this with their Small/Medium/Large time breakdowns it may help them with their estimating in the short term and then we can revisit the points approach in later sprints once they have a better understanding of themselves and what they are estimating.&lt;/p&gt;  &lt;p&gt;The final thought: It’s OK to look at your statistics.&amp;#160; Learn from them, but don’t be ruled by them.&lt;/p&gt;  &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=ONjtDIXO5cE:a6K2nsTbY30:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=ONjtDIXO5cE:a6K2nsTbY30:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=ONjtDIXO5cE:a6K2nsTbY30:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=ONjtDIXO5cE:a6K2nsTbY30:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=ONjtDIXO5cE:a6K2nsTbY30:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=ONjtDIXO5cE:a6K2nsTbY30:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=ONjtDIXO5cE:a6K2nsTbY30:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=ONjtDIXO5cE:a6K2nsTbY30:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=ONjtDIXO5cE:a6K2nsTbY30:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardsBraindump/~4/ONjtDIXO5cE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.richard-banks.org/feeds/4318278073500417464/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.richard-banks.org/2012/09/an-exercise-in-analysing-estimates.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13321238/posts/default/4318278073500417464" /><link rel="self" type="application/atom+xml" href="http://www.richard-banks.org/feeds/posts/default/4318278073500417464" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardsBraindump/~3/ONjtDIXO5cE/an-exercise-in-analysing-estimates.html" title="An Exercise in Analysing Estimates" /><author><name>Richard Banks</name><uri>https://plus.google.com/108737416426536739827</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-qMhF7F-2pE0/AAAAAAAAAAI/AAAAAAAABXo/ytojM-BZV84/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.richard-banks.org/2012/09/an-exercise-in-analysing-estimates.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-13321238.post-7260120401547785215</id><published>2012-07-16T11:08:00.001+10:00</published><updated>2012-07-16T11:08:07.818+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="community" /><title type="text">Do You Need Somone To Bounce Your Ideas and Problems Off?</title><content type="html">&lt;p&gt;Of course you do. Everyone does.&lt;/p&gt;  &lt;p&gt;The question is do you know who to talk to? Often the best person is someone outside of the situation you are in who can give you the perspective you don’t have and the ideas that you may not have come up with on your own.&lt;/p&gt;  &lt;p&gt;Throughout my career leading teams there have been many times where I would’ve loved someone outside the company that I could freely talk to about what was happening and to have them poke holes in the approaches and decisions I was making, but I didn’t know who that could be.&lt;/p&gt;  &lt;p&gt;I’ve been thinking about this scenario for a while and it’s time to do something about it.&amp;#160; As a result I’m making myself available to technical leaders who want someone to confidentially bounce ideas off.&amp;#160; No sales pitches, no hidden agendas.&amp;#160; All I want is to build relationships and to genuinely help you come to the best decisions about the problems you have.&amp;#160; I’m not going to tell you how to do your job or pretend to know all there is about the day-to-day realities of your environment but I will be someone you can chat to openly about what’s going on and what problems you are facing.&lt;/p&gt;  &lt;p&gt;So if you’re located in Sydney and you hold some form of technical leadership role then please get in touch.&amp;#160; The easiest way to do so is to drop me an email at &lt;a href="mailto:richard.banks@readify.net"&gt;richard.banks@readify.net&lt;/a&gt; or via twitter (&lt;a href="http://twitter.com/rbanks54"&gt;@rbanks54&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;I’m looking forward to having a chat with you soon!&lt;/p&gt;  &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=2Q5xYzSuwFQ:atBdjtMhCuc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=2Q5xYzSuwFQ:atBdjtMhCuc:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=2Q5xYzSuwFQ:atBdjtMhCuc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=2Q5xYzSuwFQ:atBdjtMhCuc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=2Q5xYzSuwFQ:atBdjtMhCuc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=2Q5xYzSuwFQ:atBdjtMhCuc:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=2Q5xYzSuwFQ:atBdjtMhCuc:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=2Q5xYzSuwFQ:atBdjtMhCuc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=2Q5xYzSuwFQ:atBdjtMhCuc:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardsBraindump/~4/2Q5xYzSuwFQ" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.richard-banks.org/feeds/7260120401547785215/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.richard-banks.org/2012/07/do-you-need-somone-to-bounce-your-ideas.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13321238/posts/default/7260120401547785215" /><link rel="self" type="application/atom+xml" href="http://www.richard-banks.org/feeds/posts/default/7260120401547785215" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardsBraindump/~3/2Q5xYzSuwFQ/do-you-need-somone-to-bounce-your-ideas.html" title="Do You Need Somone To Bounce Your Ideas and Problems Off?" /><author><name>Richard Banks</name><uri>https://plus.google.com/108737416426536739827</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-qMhF7F-2pE0/AAAAAAAAAAI/AAAAAAAABXo/ytojM-BZV84/s512-c/photo.jpg" /></author><thr:total>2</thr:total><feedburner:origLink>http://www.richard-banks.org/2012/07/do-you-need-somone-to-bounce-your-ideas.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-13321238.post-4035599995510384804</id><published>2012-06-01T11:45:00.001+10:00</published><updated>2012-06-01T11:45:47.513+10:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio" /><title type="text">How To Prevent Visual Studio 2012 ALL CAPS Menus!</title><content type="html">&lt;p&gt;For all those people who can’t stand the ALL CAPS menus in Visual Studio 2012 there’s a way to switch them to normal casing.&lt;/p&gt;  &lt;p&gt;Crack open your registry editor and create the following registry key and value&lt;/p&gt;  &lt;p&gt;HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0\General\SuppressUppercaseConversion   &lt;br /&gt;REG_DWORD value: 1&lt;/p&gt;  &lt;p&gt;Here’s what it looks like BEFORE&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-wz9D9bqQwBQ/T8geqlkIEQI/AAAAAAAABS8/9cHKspI1Ics/s1600-h/image%25255B6%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" border="0" alt="image" src="http://lh6.ggpht.com/-8Fx6ZWCPv-k/T8get6hiSoI/AAAAAAAABTE/j1ChXoQZDLU/image_thumb%25255B2%25255D.png?imgmax=800" width="346" height="84" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And here it is after the change&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-WFnjjgvpgP0/T8geu4bhrFI/AAAAAAAABTM/pfsdb7RB1r4/s1600-h/image%25255B7%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" border="0" alt="image" src="http://lh5.ggpht.com/-QfxIM4ldFxA/T8gewvm6oFI/AAAAAAAABTU/ApCcE6aPiyM/image_thumb%25255B3%25255D.png?imgmax=800" width="346" height="84" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You’re all very welcome!&amp;#160; Now go tell your friends &lt;img style="border-bottom-style: none; border-left-style: none; border-top-style: none; border-right-style: none" class="wlEmoticon wlEmoticon-smile" alt="Smile" src="http://lh6.ggpht.com/-s9wPtd7I4eM/T8gex58iVWI/AAAAAAAABTc/kcBJYcMznh8/wlEmoticon-smile%25255B2%25255D.png?imgmax=800" /&gt;&lt;/p&gt;  &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=04-SjFcmxls:wRpa0GLxoBA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=04-SjFcmxls:wRpa0GLxoBA:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=04-SjFcmxls:wRpa0GLxoBA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=04-SjFcmxls:wRpa0GLxoBA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=04-SjFcmxls:wRpa0GLxoBA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=04-SjFcmxls:wRpa0GLxoBA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=04-SjFcmxls:wRpa0GLxoBA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=04-SjFcmxls:wRpa0GLxoBA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=04-SjFcmxls:wRpa0GLxoBA:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardsBraindump/~4/04-SjFcmxls" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.richard-banks.org/feeds/4035599995510384804/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.richard-banks.org/2012/06/how-to-prevent-visual-studio-2012-all.html#comment-form" title="145 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13321238/posts/default/4035599995510384804" /><link rel="self" type="application/atom+xml" href="http://www.richard-banks.org/feeds/posts/default/4035599995510384804" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardsBraindump/~3/04-SjFcmxls/how-to-prevent-visual-studio-2012-all.html" title="How To Prevent Visual Studio 2012 ALL CAPS Menus!" /><author><name>Richard Banks</name><uri>https://plus.google.com/108737416426536739827</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-qMhF7F-2pE0/AAAAAAAAAAI/AAAAAAAABXo/ytojM-BZV84/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-8Fx6ZWCPv-k/T8get6hiSoI/AAAAAAAABTE/j1ChXoQZDLU/s72-c/image_thumb%25255B2%25255D.png?imgmax=800" height="72" width="72" /><thr:total>145</thr:total><feedburner:origLink>http://www.richard-banks.org/2012/06/how-to-prevent-visual-studio-2012-all.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-13321238.post-567508545237230532</id><published>2012-04-18T11:33:00.001+10:00</published><updated>2012-09-01T14:25:11.755+10:00</updated><title type="text">Visual Studio 2012 Cookbook</title><content type="html">I know I’ve been a little quiet lately, but with good reason; I’m writing a book :-)&lt;br /&gt;&lt;a href="http://www.packtpub.com/microsoft-visual-studio-2012-first-look-cookbook/book"&gt;Visual Studio 2012 Cookbook&lt;/a&gt;&lt;br /&gt;&lt;img src="http://www.packtpub.com/sites/default/files/6525OT_%20Visual%20Studio%202012%20Cookbook_cov.jpg" /&gt;&lt;br /&gt;Short, sharp and to the point, and affordable as well! I’ll post more details as the publishing date gets closer, but there’s nothing stopping you preordering a copy now and helping me feed my starving children!&lt;br /&gt;&lt;h3&gt;I’m not the only one…&lt;/h3&gt;As it turns out, there are a number of other Aussies also writing books at the moment.&amp;nbsp; You should also have a look at what they’re offering and support Australian technical authors.&lt;br /&gt;&lt;img height="240" src="http://www.packtpub.com/sites/default/files/imagecache/productview/3128_Microsoft Silverlight 5 and Windows Azure Enterprise Integration_cov.jpg" width="194" /&gt;&lt;br /&gt;David Burela just released his Silverlight 5 &amp;amp; Azure book: &lt;a href="http://www.packtpub.com/microsoft-silverlight-5-enterprise-integration-on-windows-azure/book" title="http://www.packtpub.com/microsoft-silverlight-5-enterprise-integration-on-windows-azure/book"&gt;http://www.packtpub.com/microsoft-silverlight-5-enterprise-integration-on-windows-azure/book&lt;/a&gt;&lt;br /&gt;&lt;img height="240" src="http://www.packtpub.com/sites/default/files/1987OT_cov.jpg" style="display: inline;" width="194" /&gt;&lt;br /&gt;Luke Drumm is currently finishing an XNA 4.0 book: &lt;a href="http://www.packtpub.com/microsoft-xna-4-0-game-development-cookbook/book"&gt;http://www.packtpub.com/microsoft-xna-4-0-game-development-cookbook/book&lt;/a&gt;&lt;br /&gt;&lt;img height="240" src="http://ecx.images-amazon.com/images/I/515oDdqChAL._SL500_AA300_.jpg" style="display: inline;" width="240" /&gt;&lt;br /&gt;Alex Mackey, Mahesh Krishnan &amp;amp; William Tulloch are writing a .NET 4.5 book: &lt;a href="http://www.amazon.com/Introducing-NET-4-5-Alex-Mackey/dp/1430243325"&gt;http://www.amazon.com/Introducing-NET-4-5-Alex-Mackey/dp/1430243325&lt;/a&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=3IAyYWV8bu0:SnGjCtpvSJE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=3IAyYWV8bu0:SnGjCtpvSJE:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=3IAyYWV8bu0:SnGjCtpvSJE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=3IAyYWV8bu0:SnGjCtpvSJE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=3IAyYWV8bu0:SnGjCtpvSJE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=3IAyYWV8bu0:SnGjCtpvSJE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=3IAyYWV8bu0:SnGjCtpvSJE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=3IAyYWV8bu0:SnGjCtpvSJE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=3IAyYWV8bu0:SnGjCtpvSJE:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardsBraindump/~4/3IAyYWV8bu0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.richard-banks.org/feeds/567508545237230532/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.richard-banks.org/2012/04/visual-studio-11-first-look-cookbook.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13321238/posts/default/567508545237230532" /><link rel="self" type="application/atom+xml" href="http://www.richard-banks.org/feeds/posts/default/567508545237230532" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardsBraindump/~3/3IAyYWV8bu0/visual-studio-11-first-look-cookbook.html" title="Visual Studio 2012 Cookbook" /><author><name>Richard Banks</name><uri>https://plus.google.com/108737416426536739827</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-qMhF7F-2pE0/AAAAAAAAAAI/AAAAAAAABXo/ytojM-BZV84/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.richard-banks.org/2012/04/visual-studio-11-first-look-cookbook.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-13321238.post-1426380124888364532</id><published>2012-03-15T22:16:00.001+11:00</published><updated>2012-03-15T22:16:44.066+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="scrum" /><title type="text">What do I do With Partially Completed Stories in Scrum?</title><content type="html">&lt;p&gt;It’s not that rare an occurrence for a scrum team to get to the end of a sprint and find that they have one or more stories that don’t meet the definition of “Done!”.&lt;/p&gt;  &lt;h3&gt;Question&lt;/h3&gt;  &lt;p&gt;This week from one of my former &lt;a href="http://www.scrum.org/scrummaster/" target="_blank"&gt;Professional Scrum Master&lt;/a&gt; students asked me about this situation:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;”What should we do with un-done work at the end of the sprint?     &lt;br /&gt;I was thinking we have two options:      &lt;br /&gt;1) Move the user story to the backlog for re-prioritisation (maybe into the next sprint).&amp;#160; The problem here is that I’m not sure what to do with the story points as it screws up our sprint velocity      &lt;br /&gt;2) Split the user story.&amp;#160; In this case we would leave the old user story’s points as-is, then create a new user story with the remaining work and re-estimate with planning poker.      &lt;br /&gt;I was reviewing the scrum.org &lt;a href="http://www.scrum.org/scrumguides/" target="_blank"&gt;scrum guide&lt;/a&gt; and it doesn’t seem to have any details in this area.”&lt;/p&gt; &lt;/blockquote&gt;  &lt;h3&gt;Answer&lt;/h3&gt;  &lt;p&gt;The lack of detail in the scrum guide should be enough indication on the approach to take. If the scrum guide doesn’t talk about splitting stories then it’s probably reasonable to assume you shouldn’t do it :-)&lt;/p&gt;  &lt;p&gt;Putting the story back on the backlog for reprioritisation.&amp;#160; Sure, you won’t get any credit for the story in the current sprint because it’s not done, but it won’t screw up velocity either because velocity will be a true reflection of what you actually delivered during the sprint.&amp;#160; &lt;em&gt;We want velocity to measure our rate of delivery not our effort&lt;/em&gt;. On average, over a number of sprints the velocity figures will average out in any case.&amp;#160; So yes, you may well have a few peaks and troughs when looking at single sprints but looking across the last 3 to 5 sprints you should have a good reflection of your actual rate of progress.&lt;/p&gt;  &lt;p&gt;Not having a story finished and getting no credit for it also gives the team something to talk about during the retrospective. “Why didn’t we get to ‘done’ on story X?”.&lt;/p&gt;  &lt;p&gt;On the flip side, I don’t like splitting incomplete stories because&lt;/p&gt;  &lt;p&gt;1. it gives teams an “out” for not finishing properly and they get credit for effort not delivery. It stops them pushing for a goal and stymies the inspect and adapt process.&lt;/p&gt;  &lt;p&gt;2. how do you actually split the story that was almost finished?&amp;#160; Can you split it in such a way that the work that was “almost” finished meets the “done” definition?&amp;#160; Can you do it in such a way that your product owner is absolutely sure that the completed part of the story is Done and that their acceptance criteria are satisfied? Can you cleanly separate the business value delivered between the completed part and the incomplete part? I doubt it.&lt;/p&gt;  &lt;p&gt;Taking an incomplete story and splitting it just to make it look like you have a stable velocity reduces transparency and hides the truth of what you can actually achieve from your product owner, your stakeholders and most importantly yourselves.&amp;#160; Don’t do it.&lt;/p&gt;  &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=9owzLu6Ypso:ejyigQ6nw8Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=9owzLu6Ypso:ejyigQ6nw8Q:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=9owzLu6Ypso:ejyigQ6nw8Q:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=9owzLu6Ypso:ejyigQ6nw8Q:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=9owzLu6Ypso:ejyigQ6nw8Q:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=9owzLu6Ypso:ejyigQ6nw8Q:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=9owzLu6Ypso:ejyigQ6nw8Q:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=9owzLu6Ypso:ejyigQ6nw8Q:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=9owzLu6Ypso:ejyigQ6nw8Q:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardsBraindump/~4/9owzLu6Ypso" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.richard-banks.org/feeds/1426380124888364532/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.richard-banks.org/2012/03/what-do-i-do-with-partially-completed.html#comment-form" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13321238/posts/default/1426380124888364532" /><link rel="self" type="application/atom+xml" href="http://www.richard-banks.org/feeds/posts/default/1426380124888364532" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardsBraindump/~3/9owzLu6Ypso/what-do-i-do-with-partially-completed.html" title="What do I do With Partially Completed Stories in Scrum?" /><author><name>Richard Banks</name><uri>https://plus.google.com/108737416426536739827</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-qMhF7F-2pE0/AAAAAAAAAAI/AAAAAAAABXo/ytojM-BZV84/s512-c/photo.jpg" /></author><thr:total>5</thr:total><feedburner:origLink>http://www.richard-banks.org/2012/03/what-do-i-do-with-partially-completed.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-13321238.post-4726072217265482953</id><published>2012-03-04T18:05:00.001+11:00</published><updated>2012-03-04T18:05:57.083+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio" /><title type="text">The Visual Studio 11 Interface, With More Metro</title><content type="html">&lt;p&gt;Without getting into the “It sucks! No, It rocks!” debate about the new user interface there are some areas that people are particularly fired up about, including the use if colons as a placeholder for menu bars.&lt;/p&gt;  &lt;p&gt;On the &lt;a href="http://visualstudio.uservoice.com/forums/121579-visual-studio" target="_blank"&gt;Visual Studio User Voice site&lt;/a&gt; there’s a request to tweak the UI and &lt;a href="http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2623659-go-all-in-with-a-zune-style-metro-ui-see-my-makeo" target="_blank"&gt;go “all in” with the Metro styling&lt;/a&gt; borrowing from the Zune interface (an interface I happen to particularly like).&lt;/p&gt;  &lt;p&gt;Let’s have a look at the current UI as posted on the Visual Studio teams blog entry &lt;a href="http://blogs.msdn.com/b/visualstudio/archive/2012/02/23/introducing-the-new-developer-experience.aspx" target="_blank"&gt;Introducing the New Developer Experience&lt;/a&gt;:&lt;/p&gt;  &lt;p&gt;&lt;img src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-29-92-metablogapi/2248.dev11lightcolourtheme_5F00_0BC702C8.png" width="640" height="396" /&gt;&lt;/p&gt;  &lt;p&gt;Now let’s look at the proposed user interface with it’s makeover (via &lt;a href="http://i.imgur.com/Dh0zV.png"&gt;http://i.imgur.com/Dh0zV.png&lt;/a&gt;):&lt;/p&gt;  &lt;p&gt;&lt;img src="http://i.imgur.com/Dh0zV.png" width="640" height="407" /&gt;&lt;/p&gt;  &lt;p&gt;Not to be left as the sole alternative, here’s a slightly different take on it (via &lt;a title="http://i.imgur.com/EWH1R.png" href="http://i.imgur.com/EWH1R.png"&gt;http://i.imgur.com/EWH1R.png&lt;/a&gt;)&lt;/p&gt;  &lt;p&gt;&lt;img src="http://bit.ly/A1LZHh" width="640" height="407" /&gt;&lt;/p&gt;      &lt;p&gt;I’m not campaigning for votes for the feature (and at this stage the UI is going to be mostly set in stone in any case), but what I do want to do is point out that a consistent focus on the Metro design principles makes a difference.&lt;/p&gt;  &lt;p&gt;If you go Metro, go full metro, not some halfway house. The alternate user interfaces work in that they remove as much window chrome and scroll bar noise as possible, letting developers focus more on the content and they realise that if typography is king, then make typography king!&amp;#160; Fix menu fonts, title fonts, and so forth and be consistent about it.&amp;#160; By improving the typography they also managed to retain the shouty tab names in such a way that they don’t grate anywhere near as much as the current UI does.&amp;#160; The UI also feels cleaner because the ::::: lines aren’t there adding unnecessary noise.&lt;/p&gt;  &lt;p&gt;It’s interesting to see how much of a difference the Metro design language can actually make to a user interface, and definitely something to consider if you get asked by your users to create a Windows 7 or desktop application that feels like a Windows 8 Metro style application.&lt;/p&gt;  &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=yxxkb1XBZRo:aiArfFlZCF4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=yxxkb1XBZRo:aiArfFlZCF4:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=yxxkb1XBZRo:aiArfFlZCF4:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=yxxkb1XBZRo:aiArfFlZCF4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=yxxkb1XBZRo:aiArfFlZCF4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=yxxkb1XBZRo:aiArfFlZCF4:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=yxxkb1XBZRo:aiArfFlZCF4:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=yxxkb1XBZRo:aiArfFlZCF4:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=yxxkb1XBZRo:aiArfFlZCF4:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardsBraindump/~4/yxxkb1XBZRo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.richard-banks.org/feeds/4726072217265482953/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.richard-banks.org/2012/03/visual-studio-11-interface-with-more.html#comment-form" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13321238/posts/default/4726072217265482953" /><link rel="self" type="application/atom+xml" href="http://www.richard-banks.org/feeds/posts/default/4726072217265482953" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardsBraindump/~3/yxxkb1XBZRo/visual-studio-11-interface-with-more.html" title="The Visual Studio 11 Interface, With More Metro" /><author><name>Richard Banks</name><uri>https://plus.google.com/108737416426536739827</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-qMhF7F-2pE0/AAAAAAAAAAI/AAAAAAAABXo/ytojM-BZV84/s512-c/photo.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://www.richard-banks.org/2012/03/visual-studio-11-interface-with-more.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-13321238.post-2287644337089218414</id><published>2012-03-04T09:10:00.001+11:00</published><updated>2012-03-04T09:16:40.995+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="VS11" /><category scheme="http://www.blogger.com/atom/ns#" term="development" /><category scheme="http://www.blogger.com/atom/ns#" term="testing" /><title type="text">How To Unit Test Async Methods with MSTest, XUnit and VS11 Beta</title><content type="html">MSTest finally got some love with the Visual Studio 11 Beta and one of those changes was to enable tests to run asynchronously using the &lt;strong&gt;async&lt;/strong&gt; and &lt;strong&gt;await&lt;/strong&gt; keywords.&lt;br /&gt;&lt;br /&gt;This is required if you want to write tests against any async methods (especially with WinRT!) but can also be used anywhere else you need to perform asynchronous operations.&lt;br /&gt;&lt;br /&gt;Here’s a silly sample test to show you how it’s done&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: c#;"&gt;[TestMethod]&lt;br /&gt;public async Task LoadGoogleHomePageAsync()&lt;br /&gt;{&lt;br /&gt;    var client = new System.Net.Http.HttpClient();&lt;br /&gt;    var page = await client.GetStringAsync("www.google.com");&lt;br /&gt;    Microsoft.VisualStudio.TestTools.UnitTesting.StringAssert.Contains(page, "google");&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;XUnit also supports this option as shown here:&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: c#;"&gt;[Xunit.Fact]&lt;br /&gt;public async Task XUnitAsyncTestMethod()&lt;br /&gt;{&lt;br /&gt;    var c = new System.Net.Http.HttpClient();&lt;br /&gt;    var result = await c.GetStringAsync("http://www.google.com");&lt;br /&gt;    Xunit.Assert.Contains("google", result);&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;Be aware that if you have a testsettings file specified in the Unit Test Explorer that async tests will not work.&amp;nbsp; This applies to the beta only.&amp;nbsp; Apart from that everything works as expected.&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=G1B-YChQgRM:mOTO13jD_4s:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=G1B-YChQgRM:mOTO13jD_4s:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=G1B-YChQgRM:mOTO13jD_4s:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=G1B-YChQgRM:mOTO13jD_4s:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=G1B-YChQgRM:mOTO13jD_4s:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=G1B-YChQgRM:mOTO13jD_4s:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=G1B-YChQgRM:mOTO13jD_4s:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=G1B-YChQgRM:mOTO13jD_4s:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=G1B-YChQgRM:mOTO13jD_4s:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardsBraindump/~4/G1B-YChQgRM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.richard-banks.org/feeds/2287644337089218414/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.richard-banks.org/2012/03/how-to-unit-test-async-methods-with.html#comment-form" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13321238/posts/default/2287644337089218414" /><link rel="self" type="application/atom+xml" href="http://www.richard-banks.org/feeds/posts/default/2287644337089218414" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardsBraindump/~3/G1B-YChQgRM/how-to-unit-test-async-methods-with.html" title="How To Unit Test Async Methods with MSTest, XUnit and VS11 Beta" /><author><name>Richard Banks</name><uri>https://plus.google.com/108737416426536739827</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-qMhF7F-2pE0/AAAAAAAAAAI/AAAAAAAABXo/ytojM-BZV84/s512-c/photo.jpg" /></author><thr:total>5</thr:total><feedburner:origLink>http://www.richard-banks.org/2012/03/how-to-unit-test-async-methods-with.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-13321238.post-1692174643953903042</id><published>2012-03-03T20:43:00.001+11:00</published><updated>2012-03-03T20:43:40.860+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="presentations" /><category scheme="http://www.blogger.com/atom/ns#" term="tools" /><category scheme="http://www.blogger.com/atom/ns#" term="TFS" /><title type="text">Git-TFS Presentation at the 2012 MVP Summit</title><content type="html">&lt;p&gt;The day before the 2012 Microsoft MVP Summit kicked off in earnest there was an MVP-to-MVP day. For those of us in the Visual Studio ALM area we had a day long series of lightning talks about all sort of TFS related subjects, making for a good and wide-ranging day.&lt;/p&gt;  &lt;p&gt;For something different, I did a talk about git and TFS integration and how &lt;a href="https://github.com/git-tfs/" target="_blank"&gt;git-tfs&lt;/a&gt; can be used to hide many of the problems with TFS source control.&amp;#160; Below is a slightly modified version of the slide deck I used. &lt;/p&gt;  &lt;p&gt;I hope you find it useful.&lt;/p&gt;  &lt;div style="width: 425px" id="__ss_11842520"&gt;&lt;strong style="margin: 12px 0px 4px; display: block"&gt;&lt;a title="Git TFS" href="http://www.slideshare.net/rbanks54/git-tfs" target="_blank"&gt;Git TFS&lt;/a&gt;&lt;/strong&gt; &lt;iframe height="355" marginheight="0" src="http://www.slideshare.net/slideshow/embed_code/11842520?rel=0" frameborder="0" width="425" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;    &lt;div style="padding-bottom: 12px; padding-left: 0px; padding-right: 0px; padding-top: 5px"&gt;View more &lt;a href="http://www.slideshare.net/thecroaker/death-by-powerpoint" target="_blank"&gt;PowerPoint&lt;/a&gt; from &lt;a href="http://www.slideshare.net/rbanks54" target="_blank"&gt;Richard Banks&lt;/a&gt; &lt;/div&gt; &lt;/div&gt;  &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=kyWUiqR0fCM:vRlSV_3om-I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=kyWUiqR0fCM:vRlSV_3om-I:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=kyWUiqR0fCM:vRlSV_3om-I:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=kyWUiqR0fCM:vRlSV_3om-I:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=kyWUiqR0fCM:vRlSV_3om-I:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=kyWUiqR0fCM:vRlSV_3om-I:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=kyWUiqR0fCM:vRlSV_3om-I:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=kyWUiqR0fCM:vRlSV_3om-I:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=kyWUiqR0fCM:vRlSV_3om-I:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardsBraindump/~4/kyWUiqR0fCM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.richard-banks.org/feeds/1692174643953903042/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.richard-banks.org/2012/03/git-tfs-presentation-at-2012-mvp-summit.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13321238/posts/default/1692174643953903042" /><link rel="self" type="application/atom+xml" href="http://www.richard-banks.org/feeds/posts/default/1692174643953903042" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardsBraindump/~3/kyWUiqR0fCM/git-tfs-presentation-at-2012-mvp-summit.html" title="Git-TFS Presentation at the 2012 MVP Summit" /><author><name>Richard Banks</name><uri>https://plus.google.com/108737416426536739827</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-qMhF7F-2pE0/AAAAAAAAAAI/AAAAAAAABXo/ytojM-BZV84/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.richard-banks.org/2012/03/git-tfs-presentation-at-2012-mvp-summit.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-13321238.post-1925976331626602003</id><published>2012-03-03T19:59:00.001+11:00</published><updated>2012-03-03T20:56:05.582+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="tools" /><category scheme="http://www.blogger.com/atom/ns#" term="development" /><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio" /><category scheme="http://www.blogger.com/atom/ns#" term="alm" /><title type="text">Improved Unit Testing with Visual Studio 11 Beta</title><content type="html">&lt;a href="http://lh4.ggpht.com/-kKV7ACyilLA/T1HdSm74Z3I/AAAAAAAABP4/b6Jvt8_IYM8/s1600-h/image%25255B11%25255D.png"&gt;&lt;img align="left" alt="image" border="0" height="240" src="http://lh6.ggpht.com/-ahAO0fAOiF0/T1HdTD44N6I/AAAAAAAABQA/5ulG-49fNIM/image_thumb%25255B5%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; float: left; margin: 0px 10px 10px 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="212" /&gt;&lt;/a&gt;There’s just so much new stuff in the Visual Studio 11 Beta! In fact, someone should write a book about it… Oh wait, I am! (more on that when the time is right). For now, let’s have a look at one feature that makes me so very happy: Visual Studio’s new and improved unit testing capabilities.&lt;br /&gt;It’s widely recognised by those with a desire to do unit testing that there are better unit test frameworks out there than MSTest but given that Visual Studio has always been so tightly coupled with MSTest it’s always been more difficult than it should be to get other test frameworks working well in Visual Studio.&amp;nbsp; The TestDriven.NET and ReSharper test runners have helped, but the integration back to visual studio was always lacking.&lt;br /&gt;That all changes with the Visual Studio 11. Now it’s a case of “Use the framework that makes you happy. We don’t mind”.&lt;br /&gt;You want to use XUnit? No problem!    &lt;br /&gt;NUnit? Easy!    &lt;br /&gt;MSTest (without the baggage it usually has)? Sure thing!    &lt;br /&gt;QUnit for JavaScript? Bring it on!    &lt;br /&gt;Something random that we’ve never heard of? Write an adapter and it’ll work just fine!&lt;br /&gt;&lt;h3&gt; Dogs and Cats Living Together!&lt;/h3&gt;Visual Studio 11 introduced a test adapter model so that any test framework can run inside Visual Studio if there is an adapter for it.&amp;nbsp; The adapter model also means that you can not only run XUnit, NUnit, or any other type of test but you can run them in the same test assembly if you really wanted to! Why? I don’t know! But you can :-)&lt;br /&gt;Maybe you have a suite of MSTest tests but you also want use XUnit’s data driven test features because &lt;a href="http://www.richard-banks.org/2010/03/mstest-sucks-for-unit-tests.html" target="_blank"&gt;MSTest sucks for unit testing&lt;/a&gt;. You can do just that.&amp;nbsp; It’s really nice.&lt;br /&gt;Note: In MSTest’s favour, in this release when MSTest is used in a plain old class library for unit testing the MSTest test adapter uses a cut down, light weight version of MSTest with just the features needed for unit testing and none of the baggage that it normally comes with, making it quite usable for most unit testing needs. For most developers with an existing investment in MSTest tests they will see an improvement in performance as a result.&lt;br /&gt;&lt;h3&gt; Pre-Requisites&lt;/h3&gt;Get yourself started by loading the appropriate adapter for your unit test framework from the Visual Studio Extension Manager.&amp;nbsp; MSTest is already in the box so you don’t have to worry about that one.&amp;nbsp; In this screen shot I’ve loaded up the &lt;a href="http://xunit.codeplex.com/" target="_blank"&gt;XUnit&lt;/a&gt;, &lt;a href="http://www.nunit.org/" target="_blank"&gt;NUnit&lt;/a&gt; and &lt;a href="http://chutzpah.codeplex.com/" target="_blank"&gt;Chutzpah&lt;/a&gt; test adapters.&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/-37SwZw6hBwc/T1HdTX5Kh3I/AAAAAAAABQI/Mn_31u3A8AA/s1600-h/SNAGHTML5b8384c%25255B6%25255D.png"&gt;&lt;img alt="SNAGHTML5b8384c" border="0" height="442" src="http://lh3.ggpht.com/-feyQmQYP2ss/T1HdT-Tu97I/AAAAAAAABQQ/KM3b2tWdVWo/SNAGHTML5b8384c_thumb%25255B3%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="SNAGHTML5b8384c" width="640" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h2&gt; Running Unit Tests&lt;/h2&gt;Create a new C# Assembly project (NOT a test project) and add the XUnit and NUnit test frameworks to your project using NuGet&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/-CkDaKMxqJhY/T1HdUfiB1eI/AAAAAAAABQY/fePx1sFDo8Q/s1600-h/SNAGHTML5c26ddd%25255B5%25255D.png"&gt;&lt;img alt="SNAGHTML5c26ddd" border="0" height="427" src="http://lh3.ggpht.com/-hck3xCardUY/T1HdVMYFVWI/AAAAAAAABQg/e8z-hz8VQZQ/SNAGHTML5c26ddd_thumb%25255B2%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="SNAGHTML5c26ddd" width="640" /&gt;&lt;/a&gt;&lt;br /&gt;You can also add a reference to Microsoft.VisualStudio.QualityTools.UnitTestFramework so that you can do MSTest based unit tests.&lt;br /&gt;Here, I’ve started by adding a simple XUnit test, then building the code and running the unit test as shown:&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/-2io0-1hoCjQ/T1HdVhVdNGI/AAAAAAAABQo/5N6foa6e2gY/s1600-h/SNAGHTML5d08bb9%25255B6%25255D.png"&gt;&lt;img alt="SNAGHTML5d08bb9" border="0" height="480" src="http://lh4.ggpht.com/-fJFzFgU678A/T1HdWDkyiHI/AAAAAAAABQw/hP7U_5VbHWg/SNAGHTML5d08bb9_thumb%25255B3%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="SNAGHTML5d08bb9" width="589" /&gt;&lt;/a&gt;&lt;br /&gt;As you can see in the output window there is now a “Discover test started” phase where Visual Studio looks at the assemblies and determines what tests are in the system so that it can spin up the right framework and execute the tests.&lt;br /&gt;The Unit Test explorer on the left shows the tests that were run, the time it took and any error information for failed tests.&lt;br /&gt;In the same code I have then added MSTest and NUnit tests as shown, however at this stage I have not yet built the project – take note of the unsaved changes icon in the document tab, indicating that the project is neither saved nor built as yet:&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/-zX9vPpCtZsg/T1HdWzezY3I/AAAAAAAABQ4/VZLr6pZnINw/s1600-h/image%25255B10%25255D.png"&gt;&lt;img alt="image" border="0" height="449" src="http://lh4.ggpht.com/-OCx9XEpV_vU/T1HdXlY80EI/AAAAAAAABRA/YaJXkSBumdQ/image_thumb%25255B4%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="640" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h3&gt; Run Tests After Build (Almost Continuous Testing)&lt;/h3&gt;Continuous Testing is the idea that as you do your work all the unit tests are constantly running in the background and giving you live feedback when there are problems code by highlighting where tests have failed and where your code is broken.&amp;nbsp; The immediate feedback cycle makes test driven development an even faster development process since there’s no waiting around for all the tests to run.&lt;br /&gt;Visual Studio has taken a step towards this ideal with the “Run Tests After Build” option as shown in the image below. Turn that setting on and as soon as you compile your code Visual Studio will run the tests automatically on a background thread so that you don’t end up with a blocked UI and can get on with coding the next thing on your list.&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/-pw0LrJJRHUg/T1HdYPodMVI/AAAAAAAABRI/KVJS9s7PuNc/s1600-h/image%25255B17%25255D.png"&gt;&lt;img alt="image" border="0" height="175" src="http://lh4.ggpht.com/-97zRajE7lrE/T1HdYsOMN_I/AAAAAAAABRQ/Tnvhzsuz8W4/image_thumb%25255B9%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="572" /&gt;&lt;/a&gt;&lt;br /&gt;If a test failed the unit test explorer goes red and it’s obvious that there’s a problem.&amp;nbsp; The interesting thing is that in smaller projects the tests often run so fast that you don’t even notice them happening!&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-CvYlh8abA4E/T1HdY1UF-4I/AAAAAAAABRY/2GdLSF5DD-o/s1600-h/SNAGHTML5de845a%25255B5%25255D.png"&gt;&lt;img alt="SNAGHTML5de845a" border="0" height="467" src="http://lh4.ggpht.com/-wEJeHzcL9pk/T1HdZ6njg9I/AAAAAAAABRg/a7mQDZ_P2Vs/SNAGHTML5de845a_thumb%25255B2%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="SNAGHTML5de845a" width="640" /&gt;&lt;/a&gt;&lt;br /&gt;As a tip, once you’ve been using the test after build feature for a while you will probably want to stop the Output window from popping up every time you build so that you don’t have to keep closing it.&amp;nbsp; You can do this in the Visual Studio Options as shown&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/-VHsOJRYEUYU/T1HdaDqGK3I/AAAAAAAABRo/EhDFojou2qY/s1600-h/SNAGHTML5e0d612%25255B5%25255D.png"&gt;&lt;img alt="SNAGHTML5e0d612" border="0" height="372" src="http://lh3.ggpht.com/-mUK3WI_7u3g/T1HdauOXw7I/AAAAAAAABRw/N_tArTI0C5c/SNAGHTML5e0d612_thumb%25255B2%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="SNAGHTML5e0d612" width="640" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h3&gt; Don’t Forget JavaScript Unit Tests!&lt;/h3&gt;OK, I won’t.&amp;nbsp; Make sure you have the Chutzpah test adapter Visual Studio extension installed (see above).&lt;br /&gt;In a standard web project include QUnit or Jasmine in your project and then create a JavaScript file for your tests.&amp;nbsp; Once you have your tests written run them as you normally would and Chutzpah will do the tricky work of finding the tests and running them.&amp;nbsp; Here’s a screen shot of a web project with a QUnit test in it&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/-qFUraQ23VYs/T1Hda96LxOI/AAAAAAAABR4/vp4ub10Lp6c/s1600-h/SNAGHTML6029dd3%25255B5%25255D.png"&gt;&lt;img alt="SNAGHTML6029dd3" border="0" height="352" src="http://lh5.ggpht.com/-pNBDU03DgRc/T1HdbY1SKHI/AAAAAAAABSA/Hppyu4wv4v4/SNAGHTML6029dd3_thumb%25255B2%25255D.png?imgmax=800" style="background-image: none; border: 0px currentColor; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="SNAGHTML6029dd3" width="640" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;h3&gt; Conclusion&lt;/h3&gt;So there you have it! A brief overview of the new unit testing features in Visual Studio 11 Beta. Go and get it now and start playing with it.&lt;br /&gt;Having Visual Studio automatically running your tests each time you do a build will change your development workflow for the better and keep you more focused on coding and help you stay in the mythical zone if you ever get there.&lt;br /&gt;Remember that since all tests run in the background and this removes the time spent waiting for tests to finish that you can have tens of thousands of tests taking minutes to run each time and you won’t even feel a delay in your development activities.&amp;nbsp; Fantastic!&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=u_AUtoUyjP8:k3LMgWYVNOY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=u_AUtoUyjP8:k3LMgWYVNOY:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=u_AUtoUyjP8:k3LMgWYVNOY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=u_AUtoUyjP8:k3LMgWYVNOY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=u_AUtoUyjP8:k3LMgWYVNOY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=u_AUtoUyjP8:k3LMgWYVNOY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=u_AUtoUyjP8:k3LMgWYVNOY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=u_AUtoUyjP8:k3LMgWYVNOY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=u_AUtoUyjP8:k3LMgWYVNOY:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardsBraindump/~4/u_AUtoUyjP8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.richard-banks.org/feeds/1925976331626602003/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.richard-banks.org/2012/03/get-visual-studio-11-beta-right-now-for.html#comment-form" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13321238/posts/default/1925976331626602003" /><link rel="self" type="application/atom+xml" href="http://www.richard-banks.org/feeds/posts/default/1925976331626602003" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardsBraindump/~3/u_AUtoUyjP8/get-visual-studio-11-beta-right-now-for.html" title="Improved Unit Testing with Visual Studio 11 Beta" /><author><name>Richard Banks</name><uri>https://plus.google.com/108737416426536739827</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-qMhF7F-2pE0/AAAAAAAAAAI/AAAAAAAABXo/ytojM-BZV84/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-ahAO0fAOiF0/T1HdTD44N6I/AAAAAAAABQA/5ulG-49fNIM/s72-c/image_thumb%25255B5%25255D.png?imgmax=800" height="72" width="72" /><thr:total>2</thr:total><feedburner:origLink>http://www.richard-banks.org/2012/03/get-visual-studio-11-beta-right-now-for.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-13321238.post-3222301978256913529</id><published>2012-02-04T21:38:00.001+11:00</published><updated>2012-02-04T21:38:23.561+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="agile" /><category scheme="http://www.blogger.com/atom/ns#" term="management" /><title type="text">Why do Developers Underestimate</title><content type="html">&lt;p&gt;There’s a very funny response to a question on Quora doing the rounds at the moment.&amp;#160; The question is “Why are software development task estimations regularly off by a factor of 2-3?”&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.quora.com/Engineering-Management/Why-are-software-development-task-estimations-regularly-off-by-a-factor-of-2-3/answer/Michael-Wolfe" target="_blank"&gt;The response&lt;/a&gt; (go ahead and read it) makes an analogy to hiking from San Francisco to Los Angeles to visit friends, underestimating the distance, terrain and rate of progress as well as encountering a number of impediments like the weather, colds, blisters and so forth.&amp;#160; It’s a really good read.&lt;/p&gt;  &lt;p&gt;It was mentioned on the &lt;a href="http://groups.google.com.au/group/ozaltdotnet?hl=en-GB" target="_blank"&gt;Australian Alt.Net mailing list&lt;/a&gt;, this week and followed up with the question of &lt;em&gt;“so what do we learn from it?”&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Two simple lessons come to mind.&lt;/p&gt;  &lt;h2&gt;Lesson 1: It takes time to produce a reasonable estimate&lt;/h2&gt;  &lt;p&gt;On any reasonable project don’t expect to be accurate if your estimate takes you less than 5 minutes to arrive at.&amp;#160; In the example, it’s pretty obvious that little time was spent coming up with the estimate for how long the hike might take.&amp;#160; Once they’d decided they were going to hike, taking time to estimate how long it would take was just stealing time from actually hiking!&lt;/p&gt;  &lt;p&gt;As developers, we allow ourselves to do this all the time.&amp;#160; “I like to write code, I don’t like to estimate. If I get the estimate done quick then I can get back to doing what I like.” &lt;/p&gt;  &lt;p&gt;Stop it.&amp;#160; You’re only storing up pain for yourself down the track.&lt;/p&gt;  &lt;h2&gt;Lesson 2: Think about what might slow you down&lt;/h2&gt;  &lt;p&gt;When you estimate think about what might slow you down.&amp;#160; Very few teams do this but it’s critical if you want to be more realistic about how long something will take.&lt;/p&gt;  &lt;p&gt;Most developers estimate with the same approach that they test their own code.&amp;#160; They only consider the happy path.&lt;/p&gt;  &lt;p&gt;You can hear them in their heads saying “It takes this long to do that. And that long to do that. And … then put it all together and the estimate is X months!!”.&lt;/p&gt;  &lt;p&gt;Very few developers then say, “so the baseline is X months.&amp;#160; Now what is likely to slow us down?”.&amp;#160; Yet there are so many things that can do just that.&lt;/p&gt;  &lt;p&gt;Want a basic list? How about the following:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Have you done anything like this before?&amp;#160; How vague are the requirements you have at the time of estimating?&lt;/li&gt;    &lt;li&gt;How well do you know the technology you’re using?&amp;#160; Or the design and techniques you’ll be implementing with?&lt;/li&gt;    &lt;li&gt;How well do you know the people on your team? Are you all co-located? Can you communicate easily?&lt;/li&gt;    &lt;li&gt;Does your team have all the skills you need to get the job done or will you have to rely on other’s being available?&lt;/li&gt;    &lt;li&gt;How well do we know the problem you’re being asked to solve?&lt;/li&gt;    &lt;li&gt;How well can you communicate with your customer(s)? How available will they be?&lt;/li&gt;    &lt;li&gt;How bad are the worst people on your team and how much will they slow everyone down?&lt;/li&gt;    &lt;li&gt;How’s team morale? Are people likely to leave mid project and take a whole lot of knowledge with them? How long would it take to replace them and get them up to speed?&lt;/li&gt;    &lt;li&gt;How sucky is the code you’re working on?&lt;/li&gt;    &lt;li&gt;How likely is it that people on the team will get pulled off on to other work? And how often?&lt;/li&gt;    &lt;li&gt;If you’re estimating will you be doing the work? Or are you estimating on behalf of someone else without involving them?&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;That’s a starting list of things all teams should consider when estimating and all of those items should be used to take your “happy path” estimate and adjust it from there.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;So next time you need to estimate something, keep these two simple lessons in mind and good luck!&lt;/p&gt;  &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=tKxU0NVpzQ0:9aLeQhj-ZFY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=tKxU0NVpzQ0:9aLeQhj-ZFY:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=tKxU0NVpzQ0:9aLeQhj-ZFY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=tKxU0NVpzQ0:9aLeQhj-ZFY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=tKxU0NVpzQ0:9aLeQhj-ZFY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=tKxU0NVpzQ0:9aLeQhj-ZFY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=tKxU0NVpzQ0:9aLeQhj-ZFY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=tKxU0NVpzQ0:9aLeQhj-ZFY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=tKxU0NVpzQ0:9aLeQhj-ZFY:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardsBraindump/~4/tKxU0NVpzQ0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.richard-banks.org/feeds/3222301978256913529/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.richard-banks.org/2012/02/why-do-developers-underestimate.html#comment-form" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13321238/posts/default/3222301978256913529" /><link rel="self" type="application/atom+xml" href="http://www.richard-banks.org/feeds/posts/default/3222301978256913529" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardsBraindump/~3/tKxU0NVpzQ0/why-do-developers-underestimate.html" title="Why do Developers Underestimate" /><author><name>Richard Banks</name><uri>https://plus.google.com/108737416426536739827</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-qMhF7F-2pE0/AAAAAAAAAAI/AAAAAAAABXo/ytojM-BZV84/s512-c/photo.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://www.richard-banks.org/2012/02/why-do-developers-underestimate.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-13321238.post-5103362901708355462</id><published>2011-11-24T10:39:00.001+11:00</published><updated>2011-11-24T10:39:46.036+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="development" /><title type="text">Parameters: You’re Doing It Wrong!</title><content type="html">&lt;p&gt;Having parameters for a method is perfectly fine however like anything, they can be used for evil. So let me give you a tip: If your code looks anything like this method signature (and I kid you not, this is a real method) then YOU”RE DOING IT WRONG!&lt;/p&gt;  &lt;p&gt;SaveContentSetItem(ContentSetItem,String,String,Int32,Int32,Int32,Int32,DateTime,DateTime,DateTime,DateTime,   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; DateTime,DateTime,DateTime ,DateTime,Boolean,Boolean,Boolean,Int32,Int32,Int32,Int32,Int32,Int32 ,Boolean,    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Boolean,Boolean,Boolean,Boolean,Single,Boolean,Boolean ,Boolean,Boolean,Boolean,Boolean,Boolean,Boolean,    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Boolean,Boolean ,Boolean,Boolean,Boolean,Boolean,Boolean,Boolean,Boolean,Boolean,    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; FileLocation,String,Stream,String,FileDisplayFormat,Boolean,Stream)&lt;/p&gt;  &lt;p&gt;Please, for the love of all things good, turn off your computer right now. Pack it in a box.&amp;#160; Put the box in a locked safe.&amp;#160; Put the safe in a bunker under a mountain. Seal the bunker using 40 foot thick concrete and collapse the entrance.&amp;#160; Place a minefield and barbed wire around the bunker, and never EVER WRITE A LINE OF CODE AGAIN!&lt;/p&gt;  &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=VJeIdF-zijU:ULh3_a1z-WE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=VJeIdF-zijU:ULh3_a1z-WE:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=VJeIdF-zijU:ULh3_a1z-WE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=VJeIdF-zijU:ULh3_a1z-WE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=VJeIdF-zijU:ULh3_a1z-WE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=VJeIdF-zijU:ULh3_a1z-WE:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=VJeIdF-zijU:ULh3_a1z-WE:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=VJeIdF-zijU:ULh3_a1z-WE:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=VJeIdF-zijU:ULh3_a1z-WE:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardsBraindump/~4/VJeIdF-zijU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.richard-banks.org/feeds/5103362901708355462/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.richard-banks.org/2011/11/parameters-youre-doing-it-wrong.html#comment-form" title="11 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13321238/posts/default/5103362901708355462" /><link rel="self" type="application/atom+xml" href="http://www.richard-banks.org/feeds/posts/default/5103362901708355462" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardsBraindump/~3/VJeIdF-zijU/parameters-youre-doing-it-wrong.html" title="Parameters: You’re Doing It Wrong!" /><author><name>Richard Banks</name><uri>https://plus.google.com/108737416426536739827</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-qMhF7F-2pE0/AAAAAAAAAAI/AAAAAAAABXo/ytojM-BZV84/s512-c/photo.jpg" /></author><thr:total>11</thr:total><feedburner:origLink>http://www.richard-banks.org/2011/11/parameters-youre-doing-it-wrong.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-13321238.post-8386122928873489761</id><published>2011-11-23T11:01:00.001+11:00</published><updated>2011-11-23T11:01:15.043+11:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="books" /><title type="text">Ready Player One</title><content type="html">&lt;p&gt;&lt;a href="http://lh3.ggpht.com/-WKebYzjQDGo/Tsw3wEmakjI/AAAAAAAABPE/sIzu-kxW4xU/s1600-h/image%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 8px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://lh3.ggpht.com/-alU4DpuKbIM/Tsw3yIbeRkI/AAAAAAAABPM/EVs81C-wQf8/image_thumb%25255B1%25255D.png?imgmax=800" width="158" height="240" /&gt;&lt;/a&gt;I wouldn’t normally mention a fiction book here as your taste for books is likely to be different to mine, however in this case I’ll make an exception.&amp;#160; I’ve just finished reading “&lt;a href="http://www.amazon.com/Ready-Player-One-ebook/dp/B004J4WKUQ/ref=tmm_kin_title_0?ie=UTF8&amp;amp;m=AG56TWVU5XWC2&amp;amp;qid=1321957674&amp;amp;sr=8-1"&gt;Ready Player One&lt;/a&gt;” and enjoyed it so much I read it in just 2 days whilst catching planes and trains and by skipping on sleep.&amp;#160; It was such a good read I simply couldn’t put it down!&amp;#160; I loved it!&lt;/p&gt;  &lt;p&gt;Why so? Because it’s a near future, sci-fi book with a big virtual reality/gaming element that I think most geeks will love, especially those who know what an easter-egg is and those with a good knowledge of 80’s geek-, gaming- and/or pop-culture.&amp;#160; Plus it’s got some seriously fun puzzles to try and solve before the reveal happens.&lt;/p&gt;  &lt;p&gt;This book was also Amazon’s book of the month for August 2011, and deservedly so.&amp;#160; Here’s the Amazon review quoted verbatim:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://www.amazon.com/gp/feature.html?docId=1000706551"&gt;&lt;strong&gt;Amazon Best Books of the Month, August 2011:&lt;/strong&gt;&lt;/a&gt; &lt;em&gt;Ready Player One&lt;/em&gt; takes place in the not-so-distant future--the world has turned into a very bleak place, but luckily there is OASIS, a virtual reality world that is a vast online utopia. People can plug into OASIS to play, go to school, earn money, and even meet other people (or at least they can meet their avatars), and for protagonist Wade Watts it certainly beats passing the time in his grim, poverty-stricken real life. Along with millions of other world-wide citizens, Wade dreams of finding three keys left behind by James Halliday, the now-deceased creator of OASIS and the richest man to have ever lived. The keys are rumored to be hidden inside OASIS, and whoever finds them will inherit Halliday’s fortune. But Halliday has not made it easy. And there are real dangers in this virtual world. Stuffed to the gills with action, puzzles, nerdy romance, and 80s nostalgia, this high energy cyber-quest will make geeks everywhere feel like they were separated at birth from author Ernest Cline.&lt;em&gt;--Chris Schluep&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;That review made it sound a little formulaic and it could easily have fallen into that trap, but blissfully it doesn’t.&amp;#160; It’s a fast paced, highly entertaining, well written book and my inner geek loved each and every bit of it, especially the retro 80’s references; from &lt;a href="http://www.clubdevo.com/"&gt;Devo&lt;/a&gt; to &lt;a href="http://www.acdc.com/"&gt;AC/DC&lt;/a&gt;, &lt;a href="http://www.wizards.com/DND/"&gt;Dungeons and Dragons&lt;/a&gt; to &lt;a href="http://en.wikipedia.org/wiki/Car_Wars"&gt;Car Wars&lt;/a&gt; (awesome!) and from &lt;a href="http://www.imdb.com/title/tt0091042/"&gt;Ferris Bueller&lt;/a&gt; to &lt;a href="http://www.imdb.com/title/tt0083413/"&gt;Family Ties&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;As a bonus, this is Ernest Cline’s debut novel.&amp;#160; If he keeps up this level of writing or, even better, improves then I can’t wait to see what he comes up with next!&lt;/p&gt;      &lt;p&gt;P.S. In the interests of full disclosure I’ve got no affiliations with the book or author and I get no kickbacks for mentioning this book, though I wouldn’t mind if there were some, hint, hint!&lt;/p&gt;  &lt;p&gt;If you haven’t read it, go grab it (just a suggestion) and if you have, did you enjoy as much as I did?&lt;/p&gt;  &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=rplkBqsGyUY:Vp34-4pb9Xk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=rplkBqsGyUY:Vp34-4pb9Xk:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=rplkBqsGyUY:Vp34-4pb9Xk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=rplkBqsGyUY:Vp34-4pb9Xk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=rplkBqsGyUY:Vp34-4pb9Xk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=rplkBqsGyUY:Vp34-4pb9Xk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?i=rplkBqsGyUY:Vp34-4pb9Xk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=rplkBqsGyUY:Vp34-4pb9Xk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/RichardsBraindump?a=rplkBqsGyUY:Vp34-4pb9Xk:G79ilh31hkQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/RichardsBraindump?d=G79ilh31hkQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/RichardsBraindump/~4/rplkBqsGyUY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://www.richard-banks.org/feeds/8386122928873489761/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.richard-banks.org/2011/11/i-wouldnt-normally-mention-fiction-book.html#comment-form" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/13321238/posts/default/8386122928873489761" /><link rel="self" type="application/atom+xml" href="http://www.richard-banks.org/feeds/posts/default/8386122928873489761" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/RichardsBraindump/~3/rplkBqsGyUY/i-wouldnt-normally-mention-fiction-book.html" title="Ready Player One" /><author><name>Richard Banks</name><uri>https://plus.google.com/108737416426536739827</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="//lh3.googleusercontent.com/-qMhF7F-2pE0/AAAAAAAAAAI/AAAAAAAABXo/ytojM-BZV84/s512-c/photo.jpg" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-alU4DpuKbIM/Tsw3yIbeRkI/AAAAAAAABPM/EVs81C-wQf8/s72-c/image_thumb%25255B1%25255D.png?imgmax=800" height="72" width="72" /><thr:total>3</thr:total><feedburner:origLink>http://www.richard-banks.org/2011/11/i-wouldnt-normally-mention-fiction-book.html</feedburner:origLink></entry></feed>
