<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>upstream agile - software &#187; europe</title>
	<atom:link href="http://upstre.am/tag/europe/feed/" rel="self" type="application/rss+xml" />
	<link>http://upstre.am</link>
	<description></description>
	<lastBuildDate>Mon, 16 Aug 2010 09:07:46 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Railsconf Europe 2007 Roundup 3 (rubyworks)</title>
		<link>http://upstre.am/2007/09/24/railsconf-europe-2007-roundup-3-rubyworks/</link>
		<comments>http://upstre.am/2007/09/24/railsconf-europe-2007-roundup-3-rubyworks/#comments</comments>
		<pubDate>Mon, 24 Sep 2007 22:06:19 +0000</pubDate>
		<dc:creator>Alexander Lang</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[2007]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[europe]]></category>
		<category><![CDATA[haproxy]]></category>
		<category><![CDATA[mongrel]]></category>
		<category><![CDATA[monit]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[railsconf]]></category>
		<category><![CDATA[rubyworks]]></category>
		<category><![CDATA[runit]]></category>
		<category><![CDATA[stack]]></category>
		<category><![CDATA[thoughtworks]]></category>

		<guid isPermaLink="false">http://upstream-berlin.com/blog/2007/09/24/railsconf-europe-2007-roundup-3-rubyworks/</guid>
		<description><![CDATA[rubyworks is a full rails stack put together also by thoughtworks. this time it&#8217;s all open source. it features haproxy (supposed to be much faster and light weight than apache_mod_balancer) as load balancer, mongrel as application server, monit and runit for monitoring and controlling mongrel, mysql/postgrs/oracle ruby bindings for database connectivity and also bindings for [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://rubyworks.rubyforge.org/">rubyworks</a> is a full rails stack put together also by <a href="http://www.thoughtworks.com/">thoughtworks</a>. this time it&#8217;s all open source. it features <a href="http://haproxy.1wt.eu/">haproxy</a> (supposed to be much faster and light weight than apache_mod_balancer) as load balancer, <a href="http://mongrel.rubyforge.org/">mongrel</a> as application server, <a href="http://www.tildeslash.com/monit/">monit</a> and <a href="http://smarden.org/runit/">runit</a> for monitoring and controlling mongrel, mysql/postgrs/oracle ruby bindings for database connectivity and also bindings for ferret, libxml, hpricot and rmagick.</p>
<p>everything is nicely packaged as rpms and <a href="http://debian.org">debian</a> packages so it can easily be installed within 5 minutes (it really works). even better, the packages at the same time pretend to be ruby gems, so you can safely install other debian packages *and* gems that depend on one of the libraries provided by rubyworks.</p>
<p>now we had already set up a cluster of 6 servers for <a href="http://www.autoki.com">autoki</a> with everything set up more or less perfectly so why would we need rubyworks? answer: to steal the config files for runit/monit and haproxy. our mongrel setup has always been a bit shaky, especially when it came to restarting the mongrels after a deployment. after using the rubyworks setup with runit now everything is stable. (btw runit can run and supervise any process in *nix and is ready to be the successor of the old init which is used by most linux distros to start up all the processes. one advantage is that it starts all processes at once instead of piece by piece, plus runit handles putting a process in the background and keeping it alive there, something mongrel is especially bad at).</p>
]]></content:encoded>
			<wfw:commentRss>http://upstre.am/2007/09/24/railsconf-europe-2007-roundup-3-rubyworks/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Railsconf Europe 2007 Roundup 2 (mingle)</title>
		<link>http://upstre.am/2007/09/24/railsconf-europe-2007-roundup-2-mingle/</link>
		<comments>http://upstre.am/2007/09/24/railsconf-europe-2007-roundup-2-mingle/#comments</comments>
		<pubDate>Mon, 24 Sep 2007 22:04:00 +0000</pubDate>
		<dc:creator>Alexander Lang</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[2007]]></category>
		<category><![CDATA[europe]]></category>
		<category><![CDATA[mingle]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[railsconf]]></category>
		<category><![CDATA[thoughtworks]]></category>

		<guid isPermaLink="false">http://upstream-berlin.com/blog/2007/09/24/railsconf-europe-2007-roundup-2-mingle/</guid>
		<description><![CDATA[Mingle is the new agile project management tool from thoughtworks studios. it&#8217;s not open source but it&#8217;s free for up to five users &#8211; sounds like a fair offer to me. for everyone who thinks differently &#8211; it&#8217;s written in ruby and deployed using jruby, but the class file decompiler is part of the jdk. [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://studios.thoughtworks.com/mingle-project-intelligence">Mingle</a> is the new agile project management tool from <a>thoughtworks studios</a>. it&#8217;s not open source but it&#8217;s free for up to five users &#8211; sounds like a fair offer to me. for everyone who thinks differently &#8211; it&#8217;s written in ruby and deployed using jruby, but the class file decompiler is part of the jdk. i wonder how long they can actually make people pay for it. hello open source business models?</p>
<p>anyway, when thilo installed mingle from one of the cds given out to all conference attendees we first were a bit disappointed. after the installation you basically get a nice looking  but totally empty screen leaving you with not much more than a big question mark over your head. we didn&#8217;t have much time then so that was it for mingle until i attended the corresponding session where things got a bit clearer: mingle is a completely customizable tool. the only thing that&#8217;s hard coded are users and cards/stories/tickets/you-name-it and that everything is a wiki page &#8211; the rest is up to you. the main features are these:</p>
<ul>
<li>define your own attributes for your cards: you can add new attributes to your cards and in place edit all of them &#8211; auto complete shows you a list of values that have been entered into that field before</li>
<li>filter cards by any combination of attributes and save the filter, after which you can add it as a tab on the top</li>
<li>card transitions &#8211; create a set of transitions where a card with a specific state can be transitioned to another state, e.g. from status open to status accepted and assigned to a person. this enables the project team to map their work flows into mingle</li>
<li>create graphs and tables from the cards &#8211; multiple graph types are supported for easy tracking of iteration progress or number of bugs etc.</li>
<li>project templates &#8211; so you don&#8217;t have to sit in front of a blank screen as we did</li>
</ul>
<p>mingle looks like it could become a really cool tool. after all, <a href="http://trac.edgewall.org/">trac</a> is getting a bit boring after all these years(?) and we&#8217;ve actually stopped using its ticketing system, because it wasn&#8217;t easy enough to change it to our needs.</p>
]]></content:encoded>
			<wfw:commentRss>http://upstre.am/2007/09/24/railsconf-europe-2007-roundup-2-mingle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Railsconf Europe 2007 Roundup 1 (rspec)</title>
		<link>http://upstre.am/2007/09/24/railsconf-europe-2007-roundup-1-rspec/</link>
		<comments>http://upstre.am/2007/09/24/railsconf-europe-2007-roundup-1-rspec/#comments</comments>
		<pubDate>Mon, 24 Sep 2007 21:58:22 +0000</pubDate>
		<dc:creator>Alexander Lang</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[2007]]></category>
		<category><![CDATA[bdd]]></category>
		<category><![CDATA[europe]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[railsconf]]></category>
		<category><![CDATA[rspec]]></category>
		<category><![CDATA[storyrunner]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[testing]]></category>

		<guid isPermaLink="false">http://upstream-berlin.com/blog/2007/09/24/railsconf-europe-2007-roundup-1-rspec/</guid>
		<description><![CDATA[Last week was RailsConf 2007 in Berlin. Only a couple of days have passed and it already seems so far away. Time for some blogging before everybody forgets that it even took place and nobody&#8217;s going to read this So here&#8217;s the interesting part of the sessions I attended: A Half-day of Behavior-driven Development on [...]]]></description>
			<content:encoded><![CDATA[<p>Last week was RailsConf 2007 in Berlin. Only a couple of days have passed and it already seems so far away. Time for some blogging before everybody forgets that it even took place and nobody&#8217;s going to read this <img src='http://upstre.am/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  So here&#8217;s the interesting part of the sessions I attended:</p>
<h3>A Half-day of Behavior-driven Development on Rails (<a href="http://rspec.rubyforge.org/">rspec</a>)</h3>
<p>This was the first session on tutorial day and for me one of the most interesting. It basically gave a looong introduction to behavior driven design, how it evolved from things like TDD and who realized what while enganged in which project back in the good old times. One of the interesting parts for me was when they talked about the whole story writing/specification process. I had heard most of it before but it was a good refreshment. The central statement was to write &#8220;Software that matters&#8221;, and to achieve this, you&#8217;d have to get the specs right &#8211; as we <a>XP</a>ers know this should be done by collecting <a href="http://www.extremeprogramming.org/rules/userstories.html">user stories</a>. The suggested format for such a story was this:</p>
<p><span id="more-135"></span></p>
<blockquote><p>
  As a [role]<br />
  I want [feature]<br />
  so that [outcome]
</p></blockquote>
<p>Example:</p>
<blockquote><p>
  As an administrator<br />
  I want to see the list of users<br />
  so that i can choose which one to delete.
</p></blockquote>
<p>Great, a template for writing story cards. Following the story, you need an acceptance test that verifies that the story has been implemented. The suggested format is this:</p>
<blockquote><p>
  given [context]<br />
  given [more context]<br />
  when [event]<br />
  when &#8230;<br />
  then [outcome]<br />
  then &#8230;
</p></blockquote>
<p>Example:</p>
<blockquote><p>
  Given i am logged in as root<br />
  Given a list of users<br />
  When i view /users<br />
  Then i see all the users
</p></blockquote>
<p>Now in the early days you would write this on a story card or on some other maybe non-digital, maybe digital surface, but you would not do this: run the acceptance test as code. (I&#8217;m aware there are some projects who&#8217;ve tried/done it but I&#8217;ve never found one too convincing and really used it). Now you can. They actually implemented a new feature in <a href="http://rspec.rubyforge.org/svn/trunk/">rspec trunk</a> called StoryRunner to do exactly this and here&#8217;s how it looks:</p>
<p>Story &#8216;As an administrator<br />
I want to see the list of users<br />
so that i can choose which one to delete.&#8217; do</p>
<p>Scenario &#8216;logged in as root with 2 users in system&#8217; do</p>
<p>  Given &#8216;i am logged in as&#8217;, &#8216;root&#8217; do |name|<br />
    @user = create_user :name => name<br />
    post /sessions/create, :name => name, :password => @user.password<br />
  end</p>
<p>  Given &#8216;a list of users&#8217; do<br />
   @users = [create_user, create_user]<br />
  end</p>
<p>  When &#8216;i view&#8217;, &#8216;/users&#8217; do |location|<br />
    get location<br />
  end</p>
<p>  Then &#8216;i see all the users&#8217; do<br />
    @users.each do |user|<br />
      response.should have_text(user.name)<br />
    end<br />
  end</p>
<p>  def create_user<br />
    &#8230;<br />
  end</p>
<p>end</p>
<p>end</p>
<p>How cool is that, but it doesn&#8217;t even stop here. You can now reuse the code blocks you have created (!!):</p>
<p>Scenario &#8216;logged in admin with no users in the system&#8217;<br />
  Given &#8216;i am logged in as&#8217;, &#8216;root&#8217;<br />
  Given &#8216;there are no users&#8217; do<br />
    User.delete_all<br />
  end<br />
  When &#8216;i view &#8216;, &#8216;/users&#8217;<br />
  Then &#8216;i see a message that there ar no users&#8217; do<br />
    response.should have_text &#8216;nobody there&#8217;<br />
  end<br />
end</p>
<p>Ok, technically speaking it&#8217;s actually not much more than reusing code but the way it&#8217;s done in StoryRunner, you are almost forced to create your own, application specific testing DSL! (Did I mention how fantastic this is?). For a <a href="http://evang.eli.st/blog/2007/9/1/user-stories-with-rspec-s-story-runner">better example which includes a &#8220;normal&#8221; rails integration test and compares it to an rspec story implementation</a> see the <a href="http://evang.eli.st/blog/">evang.ei.st</a> blog. </p>
<p>Of course they also showed the &#8220;usual&#8221; rspec stuff (referred to as &#8220;classic rspec&#8221;) for specing models and controllers. I you haven&#8217;t already go back to the evang.eli.st and check out <a href="http://evang.eli.st/blog/2007/9/15/easy-controller-tests-and-expressing-intent-through-expectations">Easy Controller Tests and Expressing Intent Through Expectations</a> &#8211; a really good (imho) introduction on writing controllers using <del>test</del> spec first.</p>
<p>Enough for now, I&#8217;m sure there will be more on rspec here soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://upstre.am/2007/09/24/railsconf-europe-2007-roundup-1-rspec/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (user agent is rejected)
Database Caching 8/16 queries in 0.007 seconds using disk

Served from: upstre.am @ 2010-09-10 09:55:59 -->