<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Fooberry</title>
  <id>http://fooberry.com</id>
  <updated>1900-05-17T00:00:00Z</updated>
  <author>
    <name>Mark Borcherding</name>
  </author>
  <entry>
    <title>BDD Tool Showdown</title>
    <link href="http://fooberry.com/2010/10/07/bdd-tool-showdown/" rel="alternate"/>
    <id>http://fooberry.com/2010/10/07/bdd-tool-showdown/</id>
    <published>2010-10-07T00:00:00Z</published>
    <updated>2010-10-07T00:00:00Z</updated>
    <author>
      <name>Mark Borcherding</name>
    </author>
    <summary type="html">&lt;p&gt;I&amp;rsquo;ve been doing, or trying to do BDD for about a year now. It&amp;rsquo;s been a journey and it feels like after each week I find something I want to do differently. In the past few months, it&amp;rsquo;s been the choice of testing tools&amp;hellip;&lt;/p&gt;
</summary>
    <content type="html">&lt;p&gt;I&amp;rsquo;ve been doing, or trying to do BDD for about a year now. It&amp;rsquo;s been a journey and it feels like after each week I find something I want to do differently. In the past few months, it&amp;rsquo;s been the choice of testing tools.&lt;/p&gt;

&lt;h1&gt;In The beginning&lt;/h1&gt;

&lt;p&gt;Similar to most people&amp;rsquo;s experience with testing on the .Net platform, it begins with NUnit, then to xUnit.net. The differences there aren&amp;rsquo;t really that important for this topic. I wasn&amp;rsquo;t doing &lt;em&gt;true&lt;/em&gt; BDD, but I was writing &lt;em&gt;BDDish&lt;/em&gt; type tests.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;:::C
[TestFixture] public When_something_happens {
  public When_something_happens(){
    Given();
    When();
  }

  public void Given(){
    // setup context
  }

  public void When(){
    // what I'm testing 
  }

  [Test] public void then_bar_should_happen(){
    // make sure it happened
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now that&amp;rsquo;s not &lt;em&gt;that&lt;/em&gt; bad. It works and is sorta BDD. It was good enough to carry us for six months or so.&lt;/p&gt;

&lt;p&gt;What&amp;rsquo;s nice about this is it fits into the existing build scripts. We already have Nunit (or xUnit.net) test. We already run them on our CI server and we already report their success or failure. There is nothing more to do.&lt;/p&gt;

&lt;h1&gt;Cucumber&lt;/h1&gt;

&lt;p&gt;I&amp;rsquo;ve been playing with Ruby, and Rails, for some time and really love Cucumber. Cucumber is really amazing when testing Ruby, and more specifically Rails. There are gems that make setting up test data a snap. It&amp;rsquo;s as beautiful and fun as writing tests are ever going to be&amp;hellip;in Ruby.&lt;/p&gt;

&lt;p&gt;Now I admit I looked at driving our acceptance tests in Ruby, using Cucumber and RSpec. The thought of using Ruby, or rather &lt;em&gt;more&lt;/em&gt; Ruby than Rake, at work was exciting, but it wasn&amp;rsquo;t right for us. Setting up the context in the database was all rework. There had to be a better way.&lt;/p&gt;

&lt;h1&gt;Cuke4Nuke&lt;/h1&gt;

&lt;p&gt;Cucumber is great, but didn&amp;rsquo;t fit that well to our .Net environment, but Cuke4Nuke looks to bridge that gap. It would let us write our specs in Gherkin and our steps in NUnit. After some time spent working on the setup, it started to work, but it didn&amp;rsquo;t feel that great. Honestly, I can&amp;rsquo;t remember why, but I didn&amp;rsquo;t really like it.&lt;/p&gt;

&lt;p&gt;The most important benefit for us was it got some of our tests in Gherkin.&lt;/p&gt;

&lt;h1&gt;SpecFlow&lt;/h1&gt;

&lt;p&gt;We started using &lt;a href="http://www.specflow.org/"&gt;SpecFlow&lt;/a&gt; a few weeks after using Cuke4Nuke. It&amp;rsquo;s basically the same setup (from my perspective) as Cuke4Nuke. It has specs written in Gherkin and Tests written in NUnit. It was much easier to get up and running.&lt;/p&gt;

&lt;p&gt;What I think is the biggest benefit of SpecFlow over Cuke4Nuke was the use of build providers to create the NUnit test fixture file. Why this is so huge is I can be in Visual Studio, smack my keyboard chord to run my tests (or use your favorite GUI tool) and boom. It runs.&lt;/p&gt;

&lt;p&gt;Don&amp;rsquo;t get me wrong. I love my command line, but I like that it boils down to an NUnit test. This is also good news for our build server. It is already running and reporting NUnit tests. Nothing more to do.&lt;/p&gt;

&lt;p&gt;There are some draw backs to SpecFlow. The steps aren&amp;rsquo;t very DRY.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;:::java
[Given(@"a foo exists")] 
public void Given_a_foo_exists(){
  _aFoo = new Foo();
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Not that bad, but it does start to be a pain. It uses the regular expression in the method attribute to match against the steps in the feature file. While this redundancy is something I don&amp;rsquo;t like, it also offers a lot of flexibility.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;:::java
[Given(@"there (?:are|is) (.*) foo(?:s?)"] 
public void Given_foos(int amount){
  _foos = new List&amp;lt;Foo&amp;gt;();
  // add as many as amount
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;What I like is I can now match &lt;code&gt;Given there are 5 foos&lt;/code&gt; and &lt;code&gt;Given there is 1 foo&lt;/code&gt; with the same statement. This lets the features read more naturally with little redundancy.&lt;/p&gt;

&lt;h1&gt;StorEvil&lt;/h1&gt;

&lt;p&gt;&lt;a href="http://github.com/davidmfoley/storevil"&gt;StorEvil&lt;/a&gt; is the newest testing framework to come to my attention, and they are doing some really amazing things. I am still really new to this tool, so it&amp;rsquo;s best if you watch their screencasts.&lt;/p&gt;

&lt;iframe src="http://player.vimeo.com/video/10119193" width="400" height="275" frameborder="0"&gt;&lt;/iframe&gt;


&lt;p&gt;&lt;a href="http://vimeo.com/10119193"&gt;StorEvil 0.1 Quick Start&lt;/a&gt; from &lt;a href="http://vimeo.com/user2961244"&gt;Dave Foley&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;




&lt;iframe src="http://player.vimeo.com/video/10218044" width="400" height="225" frameborder="0"&gt;&lt;/iframe&gt;


&lt;p&gt;&lt;a href="http://vimeo.com/10218044"&gt;StorEvil tutorial: Basic Grammar&lt;/a&gt; from &lt;a href="http://vimeo.com/user2961244"&gt;Dave Foley&lt;/a&gt; on &lt;a href="http://vimeo.com"&gt;Vimeo&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;What I really like about it is there are no redundancies with the regular expression to match the step definition and the method name. At first I was a little worried they would drop the ability to have parameterized step definitions, but they account for that with special tokens in the method names (e.g. &lt;code&gt;public void Given_there_are_arg0_foos(int amount){}&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;But wait! There&amp;rsquo;s more! You don&amp;rsquo;t need to write a step definition for those really simple steps like &lt;code&gt;Then the name should be Bob&lt;/code&gt;. How does it work? Watch the screencast. It really is brilliant. I&amp;rsquo;m not sure this feature will replace all the &lt;code&gt;Then&lt;/code&gt; steps. Something like &lt;code&gt;Then the number of foos should be 2&lt;/code&gt; might be more awkward this way that a simple step.&lt;/p&gt;

&lt;p&gt;It might be too premature for me to say what I don&amp;rsquo;t like about StorEvil, especially since I haven&amp;rsquo;t played with it yet, but I&amp;rsquo;ll be kind.&lt;/p&gt;

&lt;p&gt;It looks like it has its own runner, which means there is some config that goes along with it. This will probably reduce as the tool matures, but SpecFlow fit nicely into my existing tooling, with only me having to say &amp;ldquo;Here&amp;rsquo;s another NUnit assembly.&amp;rdquo; That&amp;rsquo;s nice. I like how I have tooling that already reruns my NUnit tests when I build, and now I&amp;rsquo;d have to workout something for StorEvil.&lt;/p&gt;

&lt;p&gt;Even though I said the redundancy of SpecFlow&amp;rsquo;s regular expressions was a drawback, it does offer a lot of flexibility while writing tests. StorEvil uses reflection to find it&amp;rsquo;s steps so I would probably end up needing a &lt;code&gt;Given_there_is_1_foo()&lt;/code&gt; and &lt;code&gt;Given_there_are_arg0_foos()&lt;/code&gt; step. Not that big of a deal since one will just call the other.&lt;/p&gt;

&lt;p&gt;It would be nice to write something like this.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;:::java
Given(@"there (?:are|is) (.*) foo(?:s?)", () =&amp;gt; 
  _foos = new List&amp;lt;Foo&amp;gt;();
  // add them all
  );
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;You could still find the &lt;code&gt;should&lt;/code&gt; steps automagically and skip writing that test. The drawback here is you would need a common base class to get that &lt;code&gt;Given&lt;/code&gt; method right on step class. Let&amp;rsquo;s drop all those underscores and look a little more like RSpec.&lt;/p&gt;

&lt;h1&gt;Overall&lt;/h1&gt;

&lt;p&gt;I will definitely look into StorEvil and keep my eye on it, but the zero friction of SpecFlow on our current process will keep me using it.&lt;/p&gt;

&lt;h1&gt;Update&lt;/h1&gt;

&lt;p&gt;As expected, my ignorance didn&amp;rsquo;t do StorEvil justice. From @&lt;a href="http://twitter.com/#!/davidmfoley"&gt;davidmfoley&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;&amp;hellip; StorEvil also has a R# runner and an MSBuild task
http://bit.ly/cwryeB Just add StorEvil.TeamCity.DLL to your config (or the Assemblies setting if using the MSBuild task) gives you in-progress test results and trending/etc. reports in TeamCity&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;After talking with him and reading some more of the documentation, there aren&amp;rsquo;t any reasons I can see to not give it a whirl.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Encryption Side Effect</title>
    <link href="http://fooberry.com/2010/09/20/encryption-side-effect/" rel="alternate"/>
    <id>http://fooberry.com/2010/09/20/encryption-side-effect/</id>
    <published>2010-09-20T00:00:00Z</published>
    <updated>2010-09-20T00:00:00Z</updated>
    <author>
      <name>Mark Borcherding</name>
    </author>
    <summary type="html">&lt;p&gt;We finally worked auto-encrypting certain sections of our &lt;code&gt;web.config&lt;/code&gt; into our build scripts. Nothing is particularly exciting about this, except for the side effect that puzzled  me for a while&amp;hellip;&lt;/p&gt;
</summary>
    <content type="html">&lt;p&gt;We finally worked auto-encrypting certain sections of our &lt;code&gt;web.config&lt;/code&gt; into our build scripts. Nothing is particularly exciting about this, except for the side effect that puzzled  me for a while.&lt;/p&gt;

&lt;p&gt;We&amp;rsquo;re encrypting using &lt;code&gt;aspnet_regiis.exe&lt;/code&gt; like many other people probably are.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;aspnet_regiis -pe "connectionStrings" -app "/MyApplication" -prov "MyProvider"
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This all works fine and dandy, but after doing so, our redirects stopped working. This makes no sense, but the following section of the web.config is missing.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;:::xml
&amp;lt;system.webServer&amp;gt;
&amp;lt;rewrite&amp;gt;
    &amp;lt;rules&amp;gt;
        &amp;lt;rule name="Redirect HTTP to HTTPS"
              stopProcessing="true"
              enabled="#{redirect_to_https}"&amp;gt;
        &amp;lt;match url="(.*)"/&amp;gt;
        &amp;lt;conditions&amp;gt;
          &amp;lt;add input="{HTTPS}" pattern="^OFF$"/&amp;gt;
        &amp;lt;/conditions&amp;gt;
        &amp;lt;action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther"/&amp;gt;
      &amp;lt;/rule&amp;gt;
    &amp;lt;/rules&amp;gt;
  &amp;lt;/rewrite&amp;gt;
&amp;lt;/system.webServer&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Huh? Every time we run the encryption, this section disappears.&lt;/p&gt;

&lt;p&gt;Turns out, we had another &lt;code&gt;system.webServer&lt;/code&gt; section in the &lt;code&gt;web.config&lt;/code&gt; somewhere. That section remained and this one was &lt;em&gt;cleaned up&lt;/em&gt;. Combining these sections works just fine.&lt;/p&gt;

&lt;p&gt;Surprisingly, the redirects actually worked before. IIS must find both sections and read them both. I imagine there might be cases were other &lt;code&gt;web.config&lt;/code&gt; sections go missing after running that encryption statement.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>When Routing Order Matters</title>
    <link href="http://fooberry.com/2010/09/13/when-routing-order-matters/" rel="alternate"/>
    <id>http://fooberry.com/2010/09/13/when-routing-order-matters/</id>
    <published>2010-09-13T00:00:00Z</published>
    <updated>2010-09-13T00:00:00Z</updated>
    <author>
      <name>Mark Borcherding</name>
    </author>
    <summary type="html">&lt;p&gt;I&amp;rsquo;m taking my first real steps into Rails with a pet project. It&amp;rsquo;s exciting and fun and I make a lot of wrong steps along the way. The most recent revolves around routing. Here&amp;rsquo;s a brief bit. I have two models, breweries and beers. (We side project what we love right?) Breweries have many beers, but beers can be viewed on their own. At first, I had my routes laid out like this:&lt;/p&gt;
</summary>
    <content type="html">&lt;p&gt;I&amp;rsquo;m taking my first real steps into Rails with a pet project. It&amp;rsquo;s exciting and fun and I make a lot of wrong steps along the way. The most recent revolves around routing. Here&amp;rsquo;s a brief bit. I have two models, breweries and beers. (We side project what we love right?) Breweries have many beers, but beers can be viewed on their own. At first, I had my routes laid out like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;:::ruby
resources :beers
resources :breweries do
  resources :beers
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;That all works well. I can route to &lt;code&gt;/beers/1/beers&lt;/code&gt; and &lt;code&gt;/beers&lt;/code&gt;. The only problem is the views for beer create links that always go back to the initial &lt;code&gt;/beers&lt;/code&gt; route. The new, show, edit, etc. all break out of the route that includes the brewery id. The obvious fix is to just do this in the view.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;:::ruby
&amp;lt;%= link_to 'new' , ( params[:brewery_id].nil? ? new_brewery_beer_path : new_beer_path ) %&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;That is pretty lame though right? Shouldn&amp;rsquo;t we maybe move that to the helper?&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;:::ruby
def via_brewery?
  !params[:brewery_id].nil?
end

def new_path
  if via_brewery? 
    return new_brewery_beer_path(:brewery_id =&amp;gt; params[:brewery_id]) 
  else
    return new_beer_path
  end
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Better. Not super lame, but still messy. We still need functions for each type of route and that doesn&amp;rsquo;t feel very DRY. So what to do.&lt;/p&gt;

&lt;p&gt;I thought it might be finding that &lt;code&gt;/beers&lt;/code&gt; route because it appears first, and maybe if I change that order, things might work better.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;:::ruby
resources :breweries do
  resources :beers
end
resources :beers
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Well you know what? It does work! It looks through those routes in order. When you&amp;rsquo;re visiting via the &lt;code&gt;/beers&lt;/code&gt; route, you don&amp;rsquo;t have a &lt;code&gt;:brewery_id&lt;/code&gt; so that first route gets skipped, and we get the second. When we have the id, we get the first route. Now we have a much simpler view.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;:::ruby
&amp;lt;%= link_to 'new', :controller =&amp;gt; :beers, :action =&amp;gt; :new %&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Much much better! The more I use Ruby and Rails, but more I love it. Something like that in .Net would have been much more difficult.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Passion vs Stuff</title>
    <link href="http://fooberry.com/2010/09/04/passion-vs-stuff/" rel="alternate"/>
    <id>http://fooberry.com/2010/09/04/passion-vs-stuff/</id>
    <published>2010-09-04T00:00:00Z</published>
    <updated>2010-09-04T00:00:00Z</updated>
    <author>
      <name>Mark Borcherding</name>
    </author>
    <summary type="html">&lt;p&gt;Over the past view days I once again went undercover at a Ruby conference, &lt;a href="http://rubyhoedown.com/"&gt;Ruby Hoedown&lt;/a&gt; in Nahsville, Tennessee. I say undercover because I&amp;rsquo;m not a rubyist by trade, but only as a hobbyist&amp;hellip;&lt;/p&gt;
</summary>
    <content type="html">&lt;p&gt;Over the past view days I once again went undercover at a Ruby conference, &lt;a href="http://rubyhoedown.com/"&gt;Ruby Hoedown&lt;/a&gt; in Nahsville, Tennessee. I say undercover because I&amp;rsquo;m not a rubyist by trade, but only as a hobbyist.&lt;/p&gt;

&lt;p&gt;The ruby conferences I have been to are in stark contrast to those in the .Net world. The tersest comparison I can come up with is &lt;em&gt;Passion vs Stuff&lt;/em&gt;. I don&amp;rsquo;t want to make it sound like Ruby people are passionate and .Net people are all materialistic, because that isn&amp;rsquo;t the case; however the conference content usually aligns to the comparison.&lt;/p&gt;

&lt;p&gt;Don&amp;rsquo;t believe me? Here is my impressions of my last .Net Conference.&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Here&amp;rsquo;s stuff that just come out. Here is stuff you can use in Visual Studio. Here&amp;rsquo;s some cool stuff. Here&amp;rsquo;s blinking stuff. Here&amp;rsquo;s new stuff. Here&amp;rsquo;s old stuff. Here&amp;rsquo;s stuff in a bag. Here is stuff that is coming out&amp;hellip;eventually. Here&amp;rsquo;s demos and demos of stuff&amp;hellip;.stuff stuff stuff.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;So what does a Ruby conference sound like in comparison?&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Here&amp;rsquo;s this problem I solved. Here&amp;rsquo;s this pattern I found. Here is this social phenomena I found. Here&amp;rsquo;s why you should care about X. Here is this movement that&amp;rsquo;s really cool.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;The list is shorter on purpose because there have been fewer speakers, and fewer attendees at the Ruby conferences than at the .Net ones, but every topic is usually amazing. People talk about &lt;em&gt;ideas&lt;/em&gt; they really care about, instead of the tools they bought to fix the problem. If a tool does come up, it&amp;rsquo;s usually by the tool creator and brought up in the context of having a problem, but no tool existed to solve it.&lt;/p&gt;

&lt;p&gt;To illustrate the differences in the conference style even more, I cannot imagine having an open signup to give &lt;a href="http://en.wikipedia.org/wiki/Lightning_Talk"&gt;lightning talks&lt;/a&gt; at a .Net conference. What would people say? Would anyone even sign up? What are they passionate about? I don&amp;rsquo;t know, but they should be passionate about something or have 10 minutes of something interesting to talk about.&lt;/p&gt;

&lt;p&gt;I don&amp;rsquo;t want to write a review of Ruby Hoedown when the conference is only half over, but the keynoter of the first day, &lt;a href="http://benscofield.com/"&gt;Ben Scofield&lt;/a&gt;, gave a great talk about achieving excellence. Basically you&amp;rsquo;re either on the pathway to excellence or you&amp;rsquo;ve decided to remain adequate. &lt;em&gt;It sounds bad, but trust me it isn&amp;rsquo;t.&lt;/em&gt; It perfectly aligns to my comparison of the conference cultures. You&amp;rsquo;re either here because you want to be promoted or you&amp;rsquo;re here because you&amp;rsquo;re still on that path. Both reasons are valid and I&amp;rsquo;m sure both reasons are represented at either conference.&lt;/p&gt;

&lt;p&gt;So here&amp;rsquo;s my call to action, and it&amp;rsquo;s easy. &lt;em&gt;Go to a Ruby conference.&lt;/em&gt; You don&amp;rsquo;t have to start coding Ruby and I promise you that you will find the talks, maybe not all of them, relate to your daily work. You&amp;rsquo;ll learn a lot about Ruby. You&amp;rsquo;ll learn that a &lt;em&gt;ton&lt;/em&gt; of people actually write tests. You&amp;rsquo;ll meet people from all walks of life. You&amp;rsquo;ll see that slides don&amp;rsquo;t have to have bullet points and screenshots. Most importantly, you will see speeches from people we are really passionate about their craft.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>St. Louis Day of .Net 2010 Review</title>
    <link href="http://fooberry.com/2010/08/22/st-louis-day-of-net-2010-review/" rel="alternate"/>
    <id>http://fooberry.com/2010/08/22/st-louis-day-of-net-2010-review/</id>
    <published>2010-08-22T00:00:00Z</published>
    <updated>2010-08-22T00:00:00Z</updated>
    <author>
      <name>Mark Borcherding</name>
    </author>
    <summary type="html">&lt;p&gt;This weekend was the 2010 St Louis Day(s) of .Net. This year the event proved to be bigger and better than last year with more speakers, more rooms and more attendees. While still at the same venue, the &lt;a href="http://www.ameristar.com/St_Charles.aspx"&gt;Ameristar Casino in St Charles&lt;/a&gt;, they held sessions in several new rooms&amp;hellip;&lt;/p&gt;
</summary>
    <content type="html">&lt;p&gt;This weekend was the 2010 St Louis Day(s) of .Net. This year the event proved to be bigger and better than last year with more speakers, more rooms and more attendees. While still at the same venue, the &lt;a href="http://www.ameristar.com/St_Charles.aspx"&gt;Ameristar Casino in St Charles&lt;/a&gt;, they held sessions in several new rooms.&lt;/p&gt;

&lt;h1&gt;The Good&lt;/h1&gt;

&lt;p&gt;I really enjoyed most of the sessions I attended. With the few that I didn&amp;rsquo;t, I was able to easily bounce out the door and either find one that was more interesting or strike up a conversation with someone in the hallways. I was never bored.&lt;/p&gt;

&lt;h2&gt;Sketching with Sketchflow&lt;/h2&gt;

&lt;p&gt;There were a few presenters that left a great impression on me. I first have to mention &lt;a href="http://www.stlouisdayofdotnet.com/SpeakerDetail.aspx?SpeakerID=24"&gt;Brad Nunnally&lt;/a&gt;. I saw his session last year and was really impressed with his presentation skills. He gave a great talk&amp;hellip;last year. This year, in his &lt;a href="http://www.stlouisdayofdotnet.com/SessionDetail.aspx?SessionID=35"&gt;Sketching with Sketchflow&lt;/a&gt; session, he completely changed and upped his game. He gave a short talk about UX, similar to part of his session last year, and then jumped into a demo; however, this was no well scripted and practiced demo, it was a spontaneous and crowd-sourced demo.&lt;/p&gt;

&lt;p&gt;Brad took ideas from the audience on what application he was going to use to demo Sketchflow. He used a webcam to let the crowd watch as he hand sketched the rough prototype, and then fired up Sketch flow and did an impressive job of translating the drawings into an interactive prototype. His session was by far the most engaging of the traditional session I attended. I am by far more tolerant of stumbles when things are ad hoc as opposed to those during something that should be well prepared, like the keynote.&lt;/p&gt;

&lt;h2&gt;@dahlbyk to stress your brain&lt;/h2&gt;

&lt;p&gt;I might have &lt;a href="http://twitter.com/jasonbock/status/21501952068"&gt;a geek crush&lt;/a&gt; on &lt;a href="http://www.stlouisdayofdotnet.com/SpeakerDetail.aspx?SpeakerID=9"&gt;Keith Dahlby&lt;/a&gt;, &lt;a href="http://twitter.com/dahlbyk"&gt;@dahlbyk&lt;/a&gt;.  I&amp;rsquo;ve seen him speak several times, first at a St. Lous SharePoint conference a couple years ago. His sessions are always the most technically in-depth sessions at the conference, or at least in depth in areas that interest me.&lt;/p&gt;

&lt;p&gt;Keith did two sessions, &lt;em&gt;LINQ Internals II: System.Interactive&lt;/em&gt; and &lt;em&gt;Dynamic Data Demystified&lt;/em&gt;. His LINQ talk highlighted several functions that will replace my home grown versions, such as &lt;code&gt;Zip&lt;/code&gt; and &lt;code&gt;ForEach&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;His dynamic talk shed light on the new &lt;code&gt;dynamic&lt;/code&gt; keyword and some possible uses for it beyond just executing Ruby or Python scripts. It&amp;rsquo;s exciting to get duck typing in a statically type language such as C#. There was some talk about why anyone would want to use &lt;code&gt;dynamic&lt;/code&gt;. I would point them to &lt;a href="http://www.amazon.com/Design-Patterns-Ruby-Russ-Olsen/dp/0321490452"&gt;Design Patterns in Ruby&lt;/a&gt;, which takes the &lt;a href="http://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1282523284&amp;amp;sr=8-1"&gt;GoF patterns&lt;/a&gt; and implement them in Ruby. Several patterns implement the exact same as C#, but a few, such as &lt;code&gt;Adapter&lt;/code&gt; and &lt;code&gt;Proxy&lt;/code&gt; implement more elegantly via meta-programming. I see potential of using &lt;code&gt;dynamic&lt;/code&gt; in the same effect.&lt;/p&gt;

&lt;h2&gt;Bi-directional Presentations&lt;/h2&gt;

&lt;p&gt;My favorite addition to this year&amp;rsquo;s DODN was the introduction of the open spaces. When I initially planned out my schedule I circled almost ever open space session. I like hearing from several smart people at once and having the ability to add my own two cents to the conversation. I attended two open space sessions; &lt;em&gt;BDD&lt;/em&gt; with &lt;a href="http://www.stlouisdayofdotnet.com/SpeakerDetail.aspx?SpeakerID=40"&gt;Lee Brandt&lt;/a&gt; (&lt;a href="http://twitter.com/leebrandt"&gt;@leebrandt&lt;/a&gt;) and &lt;em&gt;Automating Your IT Shop&lt;/em&gt; with &lt;a href="http://www.stlouisdayofdotnet.com/SpeakerDetail.aspx?SpeakerID=26"&gt;Rob Reynolds&lt;/a&gt; (&lt;a href="https://twitter.com/ferventcoder"&gt;@ferventcoder&lt;/a&gt;), both of which were awesome.&lt;/p&gt;

&lt;p&gt;I saw Lee&amp;rsquo;s BDD talk at last year&amp;rsquo;s DODN and it really validated some of the steps I was talking at the time. This year he was was able to help me ease some of my pains with BDD that developed over the past year. It was also good to hear some other people talk about their experiences. It&amp;rsquo;s good to hear your not alone in some of the troubles you&amp;rsquo;ve had or in the manner in which you&amp;rsquo;ve addressed those troubles.&lt;/p&gt;

&lt;p&gt;One of the sessions I was looking forward to the most was the automation talk with Rob Reynolds. I&amp;rsquo;ve followed him on Twitter for some time and followed the open source projects he works supports. I was looking forward to meeting him in person. Automation is something I&amp;rsquo;ve been addicted to as well. While being in a small shop, with only a few major application to support, there are definitely pains to be automated away. There were more people in this session than the BDD session and as a result more voices in the conversation. While initially about automation, the conversation shifted to tooling in general, which was fine. There was still interesting conversation. There are several tools I find very disgusting, such as TFS, which made it hard to bite my tongue as they were recommended, but I did my best.&lt;/p&gt;

&lt;p&gt;Moderating an open space session sounds hard and scary to me, but both sessions were wonderful and among my favorite sessions at the conference.&lt;/p&gt;

&lt;h2&gt;Bring out your dead books&lt;/h2&gt;

&lt;p&gt;The organizers had a great idea for a community book drive benefitting a local charity. I was really excited to be able to offload some of my books to somewhere else than the recycle bin, but both days I forgot to bring them along. While my wife was glad I didn&amp;rsquo;t bring any new books home, I was slightly disappointed. I saw some XCode books in the photos before the conference and was sure they would still be there by the time I made it to the table, but alas they were not. I did see a handful of other Macs there, but surprised the Xcode books were snagged up.&lt;/p&gt;

&lt;h1&gt;The Bad&lt;/h1&gt;

&lt;p&gt;There were a few things about the conference I didn&amp;rsquo;t like.&lt;/p&gt;

&lt;h2&gt;Filled to the brim&lt;/h2&gt;

&lt;p&gt;I&amp;rsquo;m sure it&amp;rsquo;s hard to anticipate which sessions will draw a crowd. The size of the rooms varied significantly. My first session of the day was &lt;em&gt;Website Usability 101&lt;/em&gt; with Tim Barcz. I&amp;rsquo;ve seen Tim before and would see him based on his reputation alone. His first session was crowded and hot. So hot in fact I started to sweat and had to leave. There were a few other sessions like this. I think this could easily be eliminated by allowing people to &lt;em&gt;like&lt;/em&gt; sessions to gauge interest before committing to the room.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note:&lt;/em&gt; I didn&amp;rsquo;t mean to imply Tim&amp;rsquo;s session in any way deserves to be mentioned in &lt;em&gt;The Bad&lt;/em&gt;, but more the room selection was a poor choice. Tim&amp;rsquo;s session was excellent and I would see him again.&lt;/p&gt;

&lt;h2&gt;80 minutes downtime&lt;/h2&gt;

&lt;p&gt;Lunch was again too long. 80 minutes is way too long. At first I wasn&amp;rsquo;t worried about it because they initially planned some open space conversations over lunch. That sounds great to me as I&amp;rsquo;m already a fan of open spaces. Unfortunately the sessions didn&amp;rsquo;t happen. We were left taking 80 minutes to eat a sandwich and sit around.&lt;/p&gt;

&lt;h2&gt;Too Cool For School&lt;/h2&gt;

&lt;p&gt;Another thing I didn&amp;rsquo;t like about the conference was the choice of venue for the social event. &lt;a href="http://www.ameristar.com/St_Charles_Entertainment_Home_Nightclub.aspx"&gt;Home&lt;/a&gt; is too swank for me. I really don&amp;rsquo;t want to pay for $6 beers in an environment that makes it hard to talk to the person next to you. I would be happy with a room full of beer and pizza boxes. The social event at &lt;em&gt;Ruby Midwest&lt;/em&gt; was a BBQ dinner with about 10 lighting talks of 10 minutes each. It was amazing. There were tables of people. You could talk. It was interesting. Last year at Strange Loop they held a similar event at the Duck Room of Blueberry Hill. Much more interesting than some cool kid night club.&lt;/p&gt;

&lt;h1&gt;The Ugly&lt;/h1&gt;

&lt;p&gt;There was one thing I found rather disturbing and disgusting. There over a thousand tiny plastic bottles of water sitting in the trash at the end of each day. It&amp;rsquo;s wasteful, but apparently no one cared. Both days I took one bottle of water and refilled it from the drinking fountain. The water was colder and I wasn&amp;rsquo;t unnecessarily filling the trash cans.&lt;/p&gt;

&lt;p&gt;Maybe next year we could forgo some of the SWAG for a reusable bottle. This was part of the gift bag at a Tech. Ed. I was lucky enough to attend. It reflects poorly on us that we are so wasteful.&lt;/p&gt;

&lt;h1&gt;For next year&lt;/h1&gt;

&lt;p&gt;First of all, we need to call it &amp;ldquo;Day&lt;em&gt;s&lt;/em&gt; of .Net&amp;rdquo;. For the past two years it has been two days, as opposed to the single day of the first event. It&amp;rsquo;s time we were technically correct.&lt;/p&gt;

&lt;p&gt;I&amp;rsquo;ve already mentioned some of the other changes I would like to see: gauging interest in sessions before committing to the rooms, more casual social event, shorter lunch. I think each of those would make the event more enjoyable to everyone.&lt;/p&gt;

&lt;p&gt;Another aspect of the event I find frustrating is the abundance of demo-fests sessions. I realize a broad and shallow level of sessions draws more of a crowd, but there were so few sessions that went deep. I&amp;rsquo;m not sure if that was by design, and several technically deep presentations were declined or if there were so few submitted. I don&amp;rsquo;t want to attend a sales pitch, which I felt like some of the sessions were.&lt;/p&gt;

&lt;h1&gt;Compared to Ruby Midwest&lt;/h1&gt;

&lt;p&gt;I was lucky enough to attend Ruby Midwest earlier this summer. It was a great conference even though my Ruby experience is limited. Being immersed in something challenging and over my head was exciting. I was able to draw a few comparisons.&lt;/p&gt;

&lt;h2&gt;Enterprise vs Community&lt;/h2&gt;

&lt;p&gt;One thing I noticed was the difference between the focus of the session. It would be safe to say I heard the word &amp;ldquo;enterprise&amp;rdquo; at DODN as much as I heart the word &amp;ldquo;community&amp;rdquo; at Ruby Midwest. Some might believe that is a testament to the &lt;em&gt;professional&lt;/em&gt; nature of C# over the child play of Ruby, but I don&amp;rsquo;t think that is the case. While I agree there aren&amp;rsquo;t as high of a percentage of people using open source in the .Net space compared to Ruby, we do still have open source projects, several of which had major contributors present at the event, but speaking of something more &lt;em&gt;enterprisy&lt;/em&gt; of course.&lt;/p&gt;

&lt;p&gt;I would like to see entire sessions dedicated to open source projects. Show me &lt;em&gt;Mass Transit&lt;/em&gt; or &lt;em&gt;Rhino Mocks&lt;/em&gt;. Talk to me about why you created it, what problems it solves, and services built on top of it. Show me how to get involved. Show me how to start an OSS project, what mistakes you made, how to avoid them. We&amp;rsquo;re all passionate about programming. We do it when we&amp;rsquo;re not at work and we want, or should want to get involved.&lt;/p&gt;

&lt;h2&gt;Where&amp;rsquo;s the web&lt;/h2&gt;

&lt;p&gt;Where were the sessions on JavaScript or HTML5? I counted two. Out of all those sessions there wasn&amp;rsquo;t room for more? At Ruby Midwest I saw a session on CSS meta-frameworks that blew my mind. I would bet 90% of the web developers have never heard of .Less, or the SASS/SCSS tools it was derived from. Why not more sessions on jQuery? Silverlight is not killing the web. We are still writing HTML and JavaScript. How many people there understand closures or the module pattern or how/why to write a jQuery plugin?&lt;/p&gt;

&lt;p&gt;When I do some eyeball analysis of distribution of the sessions, they lean heavy toward Silverlight and away form web technologies. Is this really the distribution of our development projects, or is it the distribution Microsoft wants us to be?&lt;/p&gt;

&lt;h2&gt;Don&amp;rsquo;t you Git it?&lt;/h2&gt;

&lt;p&gt;There were several talks on TFS, and zero on any DVCS. Even in the automation open space people don&amp;rsquo;t understand what a DVCS gives you or why you would want to create a personal branch.&lt;/p&gt;

&lt;h2&gt;I&amp;rsquo;m more than the code I write&lt;/h2&gt;

&lt;p&gt;The most interesting talk at Ruby Midwest was one on Open Government. It didn&amp;rsquo;t have anything to do with a language feature or super cool new tool, but with getting government, at all levels, to release data and make useful information out of that data. It was less about the tech and more about doing cool things with the tech. It was fascinating to hear about the open government movement and what they were doing to make the world a better place. I don&amp;rsquo;t think presenting an &lt;em&gt;idea&lt;/em&gt; should be left out.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Evolutionary Git Prompt</title>
    <link href="http://fooberry.com/2010/08/06/evolutionary-git-prompt/" rel="alternate"/>
    <id>http://fooberry.com/2010/08/06/evolutionary-git-prompt/</id>
    <published>2010-08-06T00:00:00Z</published>
    <updated>2010-08-06T00:00:00Z</updated>
    <author>
      <name>Mark Borcherding</name>
    </author>
    <summary type="html">&lt;p&gt;As might have been assumed in &lt;a href="/2010/07/27/my-colorful-git-prompt/"&gt;my previous post&lt;/a&gt; we are transitioning to git and Im tailoring my command prompt to something that suits the way I think and the information I want to see change over time. Right now my prompt gives me several immediate clues:&lt;/p&gt;


&lt;p&gt;  &lt;ul&gt;   &lt;li&gt; the branch name&lt;/li&gt;    &lt;li&gt;if the branch is dirty (via red)&lt;/li&gt;    &lt;li&gt;if there are files being staged (via yellow)&lt;/li&gt;    &lt;li&gt;what the changes are&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;+ adding files&lt;/li&gt;      &lt;li&gt;~ changing files&lt;/li&gt;      &lt;li&gt;&amp;ndash; removing files&lt;/li&gt;      &lt;li&gt;? untracked files&lt;/li&gt;      &lt;li&gt;&amp;ndash;&amp;gt; renaming files&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;As I use git more and more, not scenarios arise. The most recent one is what happens if you change a file after you stage it.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="/wp-content/uploads/2010/08/SS2010.08.0610.34.45.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="SS-2010.08.06-10.34.45" border="0" alt="SS-2010.08.06-10.34.45" src="/wp-content/uploads/2010/08/SS2010.08.0610.34.45_thumb.png" width="365" height="220" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In this case we staged a and then made more changes. What should the command prompt look like? It is something that is important to me because I might be unaware that there are changes that arent going to be committed.&amp;#160; &lt;/p&gt;  &lt;p&gt;But how do you show that? That other symbols Im using are pretty clear. What about this case?&lt;/p&gt;  &lt;p&gt;Maybe something like:&lt;/p&gt;  &lt;p&gt;&lt;font color="#808080" size="4" face="Courier"&gt;d:\temp\foo (&lt;font color="#ffff00"&gt;master ~1&lt;/font&gt;&lt;font color="#ff0000"&gt;~&lt;/font&gt;) &amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;I kind a like that because it tells me there is one file will only partially be committed. The prompt could get very large but given this case is rare, its unlikely to be that big of a deal.&amp;#160; Those changes made after the stage will &lt;em&gt;not be &lt;/em&gt;committed.&lt;/p&gt;&lt;/p&gt;
</summary>
    <content type="html">&lt;p&gt;As might have been assumed in &lt;a href="/2010/07/27/my-colorful-git-prompt/"&gt;my previous post&lt;/a&gt; we are transitioning to git and Im tailoring my command prompt to something that suits the way I think and the information I want to see change over time. Right now my prompt gives me several immediate clues:&lt;/p&gt;


&lt;p&gt;  &lt;ul&gt;   &lt;li&gt; the branch name&lt;/li&gt;    &lt;li&gt;if the branch is dirty (via red)&lt;/li&gt;    &lt;li&gt;if there are files being staged (via yellow)&lt;/li&gt;    &lt;li&gt;what the changes are&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;+ adding files&lt;/li&gt;      &lt;li&gt;~ changing files&lt;/li&gt;      &lt;li&gt;&amp;ndash; removing files&lt;/li&gt;      &lt;li&gt;? untracked files&lt;/li&gt;      &lt;li&gt;&amp;ndash;&amp;gt; renaming files&lt;/li&gt;   &lt;/ul&gt; &lt;/ul&gt;  &lt;p&gt;As I use git more and more, not scenarios arise. The most recent one is what happens if you change a file after you stage it.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="/wp-content/uploads/2010/08/SS2010.08.0610.34.45.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="SS-2010.08.06-10.34.45" border="0" alt="SS-2010.08.06-10.34.45" src="/wp-content/uploads/2010/08/SS2010.08.0610.34.45_thumb.png" width="365" height="220" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In this case we staged a and then made more changes. What should the command prompt look like? It is something that is important to me because I might be unaware that there are changes that arent going to be committed.&amp;#160; &lt;/p&gt;  &lt;p&gt;But how do you show that? That other symbols Im using are pretty clear. What about this case?&lt;/p&gt;  &lt;p&gt;Maybe something like:&lt;/p&gt;  &lt;p&gt;&lt;font color="#808080" size="4" face="Courier"&gt;d:\temp\foo (&lt;font color="#ffff00"&gt;master ~1&lt;/font&gt;&lt;font color="#ff0000"&gt;~&lt;/font&gt;) &amp;gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;I kind a like that because it tells me there is one file will only partially be committed. The prompt could get very large but given this case is rare, its unlikely to be that big of a deal.&amp;#160; Those changes made after the stage will &lt;em&gt;not be &lt;/em&gt;committed.&lt;/p&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>YouTrack under SSL</title>
    <link href="http://fooberry.com/2010/07/30/youtrack-under-ssl/" rel="alternate"/>
    <id>http://fooberry.com/2010/07/30/youtrack-under-ssl/</id>
    <published>2010-07-30T00:00:00Z</published>
    <updated>2010-07-30T00:00:00Z</updated>
    <author>
      <name>Mark Borcherding</name>
    </author>
    <summary type="html">&lt;p&gt;I have to admit, this post is going to be lame. I wont be offended if you stop reading now because it is mostly for my own benefit.&lt;/p&gt;


&lt;p&gt;  &lt;p&gt;Recently we moved our YouTrack server to a publicly accessible server and got it all setup with an URL like &lt;a href="http://dev.acme.com"&gt;http://dev.acme.com&lt;/a&gt;. We then wanted to move out TeamCity server to the same box so moved both TeamCity and YouTrack into a Tomcat app server and gave them URLs like dev.acme.com/teamCity and dev.acme.com/youTrack. Sweet. Everything is going great.&amp;#160; We have them talking to each other. &lt;/p&gt;  &lt;p&gt;Lets flip them over to talk on only SSL. This wasnt was easy as I hoped. Actually it was super simple, but finding the steps was painful. If you look for how to setup SSL with Tomcat you find a load of articles using tools and certificates we dont have handy. We do have our wild card certificate from IIS that we can export and then &lt;a href="http://tp.its.yale.edu/pipermail/cas/2005-July/001337.html"&gt;the steps are easy&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Sweet. While I was in that file I commented out the Tomcat connector on port 80 so IIS could listen on that port. Im more familiar with IIS and setting up the HTTP to HTTPS redirect was easier for me in IISwhich I did next. &lt;/p&gt;  &lt;p&gt;All done. Everything is golden right? It works. It redirects to HTTPS if you request HTTP. Awesomeexcept we cannot attach files. Bummer.&lt;/p&gt;  &lt;p&gt;We get asked questions like:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Are you using a proxy?     &lt;br /&gt;Please specifiy procy if you are using one, otherwise it is impossible to post the attachment.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Since we are not using a proxy I said no and then got another error message.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Sorry, cannot attach the image.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Luckily this was an &lt;a href="http://youtrack.jetbrains.net/issue/JT-3522?projectKey=JT&amp;amp;query=proxy"&gt;easy fix&lt;/a&gt; as well. This was a fairly easy issue to find since JetBrains publicly tracks the issues with YouTrack. That was exactly out problem. We had YouTrack setup to listen on &lt;a href="http://dev.acme.com/youTrack"&gt;http://dev.acme.com/youTrack&lt;/a&gt; instead of &lt;a href="https://dev.acme.com/youTrack"&gt;https://dev.acme.com/youTrack&lt;/a&gt;. Switching that in the settings fixed our problem. &lt;/p&gt;&lt;/p&gt;
</summary>
    <content type="html">&lt;p&gt;I have to admit, this post is going to be lame. I wont be offended if you stop reading now because it is mostly for my own benefit.&lt;/p&gt;


&lt;p&gt;  &lt;p&gt;Recently we moved our YouTrack server to a publicly accessible server and got it all setup with an URL like &lt;a href="http://dev.acme.com"&gt;http://dev.acme.com&lt;/a&gt;. We then wanted to move out TeamCity server to the same box so moved both TeamCity and YouTrack into a Tomcat app server and gave them URLs like dev.acme.com/teamCity and dev.acme.com/youTrack. Sweet. Everything is going great.&amp;#160; We have them talking to each other. &lt;/p&gt;  &lt;p&gt;Lets flip them over to talk on only SSL. This wasnt was easy as I hoped. Actually it was super simple, but finding the steps was painful. If you look for how to setup SSL with Tomcat you find a load of articles using tools and certificates we dont have handy. We do have our wild card certificate from IIS that we can export and then &lt;a href="http://tp.its.yale.edu/pipermail/cas/2005-July/001337.html"&gt;the steps are easy&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Sweet. While I was in that file I commented out the Tomcat connector on port 80 so IIS could listen on that port. Im more familiar with IIS and setting up the HTTP to HTTPS redirect was easier for me in IISwhich I did next. &lt;/p&gt;  &lt;p&gt;All done. Everything is golden right? It works. It redirects to HTTPS if you request HTTP. Awesomeexcept we cannot attach files. Bummer.&lt;/p&gt;  &lt;p&gt;We get asked questions like:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Are you using a proxy?     &lt;br /&gt;Please specifiy procy if you are using one, otherwise it is impossible to post the attachment.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Since we are not using a proxy I said no and then got another error message.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Sorry, cannot attach the image.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Luckily this was an &lt;a href="http://youtrack.jetbrains.net/issue/JT-3522?projectKey=JT&amp;amp;query=proxy"&gt;easy fix&lt;/a&gt; as well. This was a fairly easy issue to find since JetBrains publicly tracks the issues with YouTrack. That was exactly out problem. We had YouTrack setup to listen on &lt;a href="http://dev.acme.com/youTrack"&gt;http://dev.acme.com/youTrack&lt;/a&gt; instead of &lt;a href="https://dev.acme.com/youTrack"&gt;https://dev.acme.com/youTrack&lt;/a&gt;. Switching that in the settings fixed our problem. &lt;/p&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>My Colorful Git Prompt</title>
    <link href="http://fooberry.com/2010/07/27/my-colorful-git-prompt/" rel="alternate"/>
    <id>http://fooberry.com/2010/07/27/my-colorful-git-prompt/</id>
    <published>2010-07-27T00:00:00Z</published>
    <updated>2010-07-27T00:00:00Z</updated>
    <author>
      <name>Mark Borcherding</name>
    </author>
    <summary type="html">&lt;p&gt;We all like color dont we? We also love the command line right? Well, if you dont, you should love it. There is nothing I hate more than seeing a screen full of gray text. You can provide a lot of context via color, especially in your prompt.&lt;/p&gt;


&lt;p&gt;  &lt;p&gt;Take my git prompt for example.&amp;#160; I easily know if I have any changes in the branch, if Im staging changes and an overview of the changes. &lt;/p&gt;  &lt;p&gt;&lt;a href="/wp-content/uploads/2010/07/image1.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="/wp-content/uploads/2010/07/image_thumb1.png" width="629" height="499" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This is done in PowerShell. If youre still using cmd as your shell, you should stop immediately. Especially if you use git. I highly recommend checking out &lt;a href="http://github.com/dahlbyk/posh-git"&gt;posh-git&lt;/a&gt;. Auto-complete on git commands and branch names is awesome. &lt;/p&gt;  &lt;p&gt;Also, you can checkout the &lt;a href="http://github.com/MarkBorcherding/roaming-profile/tree/master/powershell/"&gt;source for this prompt&lt;/a&gt;. Figuring out all the changes takes some time on a large codebase, but for me its worth it.&lt;/p&gt;&lt;/p&gt;
</summary>
    <content type="html">&lt;p&gt;We all like color dont we? We also love the command line right? Well, if you dont, you should love it. There is nothing I hate more than seeing a screen full of gray text. You can provide a lot of context via color, especially in your prompt.&lt;/p&gt;


&lt;p&gt;  &lt;p&gt;Take my git prompt for example.&amp;#160; I easily know if I have any changes in the branch, if Im staging changes and an overview of the changes. &lt;/p&gt;  &lt;p&gt;&lt;a href="/wp-content/uploads/2010/07/image1.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="/wp-content/uploads/2010/07/image_thumb1.png" width="629" height="499" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This is done in PowerShell. If youre still using cmd as your shell, you should stop immediately. Especially if you use git. I highly recommend checking out &lt;a href="http://github.com/dahlbyk/posh-git"&gt;posh-git&lt;/a&gt;. Auto-complete on git commands and branch names is awesome. &lt;/p&gt;  &lt;p&gt;Also, you can checkout the &lt;a href="http://github.com/MarkBorcherding/roaming-profile/tree/master/powershell/"&gt;source for this prompt&lt;/a&gt;. Figuring out all the changes takes some time on a large codebase, but for me its worth it.&lt;/p&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Mixing WebForms and MVC</title>
    <link href="http://fooberry.com/2010/07/02/mixing-webforms-and-mvc/" rel="alternate"/>
    <id>http://fooberry.com/2010/07/02/mixing-webforms-and-mvc/</id>
    <published>2010-07-02T00:00:00Z</published>
    <updated>2010-07-02T00:00:00Z</updated>
    <author>
      <name>Mark Borcherding</name>
    </author>
    <summary type="html">&lt;p&gt;We have a moderately large WebForms web application, but we are trying to transition to MVC. On the surface it sounds pretty simple. We can create controllers to do small functions of our page. we can be AJAXy if we so desire and all will be great. &lt;/p&gt;


&lt;p&gt;  &lt;p&gt;Lets give it a try.&amp;#160; We want to add a customer search to our master page.&amp;#160; Simple enough right?&lt;/p&gt;  &lt;p&gt;&lt;a href="/wp-content/uploads/2010/07/image.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="/wp-content/uploads/2010/07/image_thumb.png" width="643" height="431" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;All I really need is a controller that redirects to our existing search page.&amp;#160; No problem. Seems simple enough. Let me code up the controller in a simpler, reduced test case.&lt;/p&gt;  &lt;p&gt;Done in 15 minutes.&lt;/p&gt;  &lt;p&gt;OK. Now we just need to drop a tiny form that posts to our controller on our master pagewait&amp;#160; a minute. WebForms has a HUGE form that takes up the entire page! I cant nest a form inside a form. This means I cant post inside the form to anywhere but the same form.&lt;/p&gt;  &lt;p&gt;I know&amp;#160; what youre thinking. I shouldnt &lt;em&gt;post &lt;/em&gt;to search anyway. I should &lt;em&gt;get&lt;/em&gt; instead. Yes. I agree, but this example is contrived. I actually came across this problem when I wanted to create a controller that merged two customers together and redirect to the surviving customer. In that case we &lt;em&gt;do&lt;/em&gt; want to postso bear with my invalid semantics. &lt;/p&gt;  &lt;p&gt;Anyway. We cant POST. hmm..I guess we have to do something like this (remember in real life Im merging and not searching&amp;quot;):&lt;/p&gt;  &lt;pre name="code" css="c#"&gt;[HttpGet] public ActionResult SearchViaGet(string searchTerm, bool isQuickSearch){}&lt;/pre&gt;&lt;/p&gt;
</summary>
    <content type="html">&lt;p&gt;We have a moderately large WebForms web application, but we are trying to transition to MVC. On the surface it sounds pretty simple. We can create controllers to do small functions of our page. we can be AJAXy if we so desire and all will be great. &lt;/p&gt;


&lt;p&gt;  &lt;p&gt;Lets give it a try.&amp;#160; We want to add a customer search to our master page.&amp;#160; Simple enough right?&lt;/p&gt;  &lt;p&gt;&lt;a href="/wp-content/uploads/2010/07/image.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="/wp-content/uploads/2010/07/image_thumb.png" width="643" height="431" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;All I really need is a controller that redirects to our existing search page.&amp;#160; No problem. Seems simple enough. Let me code up the controller in a simpler, reduced test case.&lt;/p&gt;  &lt;p&gt;Done in 15 minutes.&lt;/p&gt;  &lt;p&gt;OK. Now we just need to drop a tiny form that posts to our controller on our master pagewait&amp;#160; a minute. WebForms has a HUGE form that takes up the entire page! I cant nest a form inside a form. This means I cant post inside the form to anywhere but the same form.&lt;/p&gt;  &lt;p&gt;I know&amp;#160; what youre thinking. I shouldnt &lt;em&gt;post &lt;/em&gt;to search anyway. I should &lt;em&gt;get&lt;/em&gt; instead. Yes. I agree, but this example is contrived. I actually came across this problem when I wanted to create a controller that merged two customers together and redirect to the surviving customer. In that case we &lt;em&gt;do&lt;/em&gt; want to postso bear with my invalid semantics. &lt;/p&gt;  &lt;p&gt;Anyway. We cant POST. hmm..I guess we have to do something like this (remember in real life Im merging and not searching&amp;quot;):&lt;/p&gt;  &lt;pre name="code" css="c#"&gt;[HttpGet] public ActionResult SearchViaGet(string searchTerm, bool isQuickSearch){}&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;It feels really nasty. What makes it even worse is we have to use Ajax to pull the values from the inputs and build the request URL. If they dont have JavaScript enabledoh well. No search for you!&lt;/p&gt;




&lt;p&gt;I cant really think of a way around this. With MVC, and without the giant WebForms form, this page would comprised of several tiny forms. For now, the no JS problem isnt that big of a deal. The app is used by internal users only so if they dont have JS enabled we can just laugh at them until they either turn it on, or we feel bad that they dont know how to turn it on, and turn it on for them.&lt;/p&gt;




&lt;p&gt;Where we do have a problem is when we try to use pages like this via our ancient mobile devices. We cant trust JS on those bricks and if I had to bet, there would be no search for them either.&lt;/p&gt;

</content>
  </entry>
  <entry>
    <title>I'm feeling Lucky in the Omnibox</title>
    <link href="http://fooberry.com/2010/05/14/im-feeling-lucky-in-the-omnibox/" rel="alternate"/>
    <id>http://fooberry.com/2010/05/14/im-feeling-lucky-in-the-omnibox/</id>
    <published>2010-05-14T00:00:00Z</published>
    <updated>2010-05-14T00:00:00Z</updated>
    <author>
      <name>Mark Borcherding</name>
    </author>
    <summary type="html">&lt;p&gt;Google gets it right a lot of the time, including bringing back what Im looking for as the first result. I might be one of the few people who actually use the &lt;em&gt;Im Feeling Lucky &lt;/em&gt;button on the Google Search page, but I do it in a sneaky way.&amp;#160; I do it from my omnibox in &lt;a href="http://www.google.com/chrome"&gt;Google Chrome&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;  &lt;p&gt;If youre not using the omnibox to search in Chrome, youre not one of the cool kids in my book.&amp;#160; Just type what you want and hit enter to search your default search engine. &lt;/p&gt;  &lt;p&gt;What you might not know is you can search other sites as well. Type the domain, press tab and if youve already searched that domain, chances are Chrome will help you out.&lt;/p&gt;  &lt;p&gt;&lt;a href="/wp-content/uploads/2010/05/image.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="/wp-content/uploads/2010/05/image_thumb.png" width="603" height="193" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Type your search results and press enter and abracadabra, youre searching Wikipedia. This is very useful as I usually want to search a specific site for my information. &lt;/p&gt;  &lt;p&gt;What I also like to do is skip my search results page and follow the Im Feeling Lucky first result. A lot of times Ive already searched for it, or am pretty sure the first hit will get me what I want. To do that setup a new search engine with whatever keyword you want. I picked L, but it could easily be lucky or whatever.&lt;/p&gt;  &lt;p&gt;&lt;a href="/wp-content/uploads/2010/05/image1.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="/wp-content/uploads/2010/05/image_thumb1.png" width="754" height="660" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Here is the full text of the URL.&lt;/p&gt;  &lt;pre&gt;http://www.google.com/search?hl=en&amp;amp;q=%s&amp;amp;btnI=I%27m+Feeling+Lucky&amp;amp;aq=f&amp;amp;oq=&lt;/pre&gt;&lt;/p&gt;
</summary>
    <content type="html">&lt;p&gt;Google gets it right a lot of the time, including bringing back what Im looking for as the first result. I might be one of the few people who actually use the &lt;em&gt;Im Feeling Lucky &lt;/em&gt;button on the Google Search page, but I do it in a sneaky way.&amp;#160; I do it from my omnibox in &lt;a href="http://www.google.com/chrome"&gt;Google Chrome&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;  &lt;p&gt;If youre not using the omnibox to search in Chrome, youre not one of the cool kids in my book.&amp;#160; Just type what you want and hit enter to search your default search engine. &lt;/p&gt;  &lt;p&gt;What you might not know is you can search other sites as well. Type the domain, press tab and if youve already searched that domain, chances are Chrome will help you out.&lt;/p&gt;  &lt;p&gt;&lt;a href="/wp-content/uploads/2010/05/image.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="/wp-content/uploads/2010/05/image_thumb.png" width="603" height="193" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Type your search results and press enter and abracadabra, youre searching Wikipedia. This is very useful as I usually want to search a specific site for my information. &lt;/p&gt;  &lt;p&gt;What I also like to do is skip my search results page and follow the Im Feeling Lucky first result. A lot of times Ive already searched for it, or am pretty sure the first hit will get me what I want. To do that setup a new search engine with whatever keyword you want. I picked L, but it could easily be lucky or whatever.&lt;/p&gt;  &lt;p&gt;&lt;a href="/wp-content/uploads/2010/05/image1.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="/wp-content/uploads/2010/05/image_thumb1.png" width="754" height="660" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Here is the full text of the URL.&lt;/p&gt;  &lt;pre&gt;http://www.google.com/search?hl=en&amp;amp;q=%s&amp;amp;btnI=I%27m+Feeling+Lucky&amp;amp;aq=f&amp;amp;oq=&lt;/pre&gt;&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;




&lt;p&gt;Now just press L, plus maybe a space, then tab.&lt;/p&gt;




&lt;p&gt;&lt;a href="/wp-content/uploads/2010/05/image2.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="/wp-content/uploads/2010/05/image_thumb2.png" width="781" height="171" /&gt;&lt;/a&gt; &lt;/p&gt;




&lt;p&gt;&lt;/p&gt;




&lt;p&gt;True, the page youre going to end up on is the link below , but it takes less time to just type it and press enter than to see if that is what you want, press down and then enter. Also that link isnt always the same location.&lt;/p&gt;




&lt;p&gt;Anyway, I hope youre feeling lucky punkAre yafeeling lucky. (you know that was coming)&lt;/p&gt;

</content>
  </entry>
</feed>

