<?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>Alkesh's Blog &#187; Uncategorized</title>
	<atom:link href="http://alkesh.vaghmaria.com/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://alkesh.vaghmaria.com</link>
	<description>This is not the blog you're looking for...</description>
	<lastBuildDate>Fri, 25 Mar 2011 13:18:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>CukeUp!</title>
		<link>http://alkesh.vaghmaria.com/2011/03/cukeup/</link>
		<comments>http://alkesh.vaghmaria.com/2011/03/cukeup/#comments</comments>
		<pubDate>Fri, 25 Mar 2011 13:18:45 +0000</pubDate>
		<dc:creator>Alkesh</dc:creator>
				<category><![CDATA[geek]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://alkesh.vaghmaria.com/?p=91</guid>
		<description><![CDATA[Here is a write up of my notes for the excellent CukeUp event I attended yesterday. All the sessions were videoed, so you can watch them by going to the CukeUp page. Keynote Aslak Hellesøy Aslak described the components of cucumber, namely Gherkin, Aruba, Cucumber and Cucumber-Rails. I hadn&#8217;t realised that Aruba, which is used [...]]]></description>
			<content:encoded><![CDATA[<p>Here is a write up of my notes for the excellent <a href="http://skillsmatter.com/event/home/cukeup">CukeUp</a> event I attended yesterday.<br />
All the sessions were videoed, so you can watch them by going to the <a href="http://skillsmatter.com/event/home/cukeup">CukeUp page</a>.</p>
<h2>Keynote</h2>
<p><em>Aslak Hellesøy</em></p>
<ul>
<li>Aslak described the components of cucumber, namely Gherkin, Aruba, Cucumber and Cucumber-Rails.<br />
I hadn&#8217;t realised that Aruba, which is used for testing command-line programs with cucumber, is actually used by the Cucumber features themselves.</li>
<li>Cucumber has overtaken Fitnesse in terms of downloads</li>
<li>Various documentation sources were mentioned: the cucumber wiki, the cucumber relish pages, <a href="http://cuke4ninja.com/">Secret Ninja Cucumber Scrolls</a>, and there is also a PragProg Cucumber book in progress.</li>
<li>The future roadmap of cucumber was interesting &#8211; Cuke4Duke will be replaced with a proper redesign and rewrite of cucumber in java (to be called Cucumber.java). The design of Cucumber.java will actually prompt a rewrite of the ruby cucumber, reducing the size of the codebase significantly</li>
<li>There is also an online web-based editor for cucumber in progress, based on <a href="http://ace.ajax.org/">ACE</a>, which is <a href="http://cukes.info/trycuke/">available to try now</a>.</li>
</ul>
<h2>What Makes a Good Feature File</h2>
<p><em>David De Florinier and Gojko Adzic</em></p>
<p>The main points I took out of this session were:</p>
<ul>
<li>Cucumber features should be specifications, not scripts</li>
<li><a href="http://gojko.net/">Gojko&#8217;s blog</a> has articles on writing cucumber features</li>
</ul>
<h2>Wip, Kanban, whole-team BDD</h2>
<p><em>Perryn Fowler</em></p>
<ul>
<li>I liked Perryn&#8217;s idea of &#8220;Kanban Dots&#8221; for limiting WIP &#8211; basically blue dot stickers you put on your kanban wall, and you are only allowed to put cards next to dots.</li>
<li>Traditionally, in lean manufacturing, WIP limits helped reduce the amount of storage space needed. I liked the analogy for lean software development, where WIP limits help reduce the amount of &#8220;head space&#8221; required.</li>
<li>For whole-team BDD, an initial cut of the feature (or &#8216;cuke&#8217;) should be written at the analysis stage, for the customer.</li>
<li>The customer should be shown the cukes when the development is complete, at the showcase stage</li>
<li>It is possible to use cucumber to police WIP limits &#8211; e.g. using the config <code>--tags @wip[2] --wip</code> will fail the build if there are more than 2 wip features</li>
<li>Perryn did mention using &#8220;Flows&#8221; and &#8220;Mechanics&#8221; &#8211; where a flow is a high level scenario, and a mechanic is a more detailed scenario. There wasn&#8217;t much detail on this, other than that <a href="http://relishapp.com/">Relish</a> might support this kind of pattern in the future.</li>
</ul>
<h2>Deliberate Discovery</h2>
<p><em>Dan North and Elizabeth Keogh</em></p>
<p>This talk is well worth <a href="http://skillsmatter.com/podcast/home/deliberate-discovery-step-away-from-the-tools">watching</a> &#8211; it provides lots to think about.</p>
<ul>
<li>Ignorance is the biggest constraint in a software project</li>
<li>If you were going to redo a project from scratch, it would generally take much less to do the second time around</li>
<li>Assume ignorance, and second order ignorance (you don&#8217;t know what you don&#8217;t know)</li>
<li>Options have value &#8211; sometimes it is wise not to commit to a certain option too early</li>
<li>Get all stakeholders together at the beginning, to avoid &#8220;oh crap&#8221; moments further down the line, where you discover you&#8217;ve chosen the wrong option</li>
<li>Prioritise by ignorance &#8211; i.e. the areas you know least about</li>
<li>Create a learning environment &#8211; missing an opportunity to learn is waste.</li>
</ul>
<h2>CukeSalad</h2>
<p><em>Antony Marcano</em></p>
<ul>
<li><a href="http://antonymarcano.com">Anthony&#8217;s blog</a></li>
<li><a href="https://github.com/RiverGlide/CukeSalad">CukeSalad on github</a></li>
<li>CukeSalad tries to solve the fact that acceptance tests are often too low-level &#8211; they describe the actual interactions with the webpage, or API</li>
<li>CukeSalad has Goals (what the feature is trying to achieve), Tasks (stages to achieving the goal), and Actions (the interactions required to complete the task)</li>
<li>CukeSalad allows you to write one set of features, and then use them with different adaptors to test, for example, your GUI, CLI, API</li>
<li>Attempts to help with: wordsmithing of scenarios, organisation and reuse of steps, maintenance of steps.</li>
</ul>
<h2>Cucumber-Chef</h2>
<p><em>Stephen Nelson-Smith</em></p>
<p>The cucumber-chef project allows you to test your chef scripts that spin up large numbers of servers. The project uses LXC (linux containers), so you can run one ec2 instance, and then use multiple LXCs &#8211; which is cheaper and faster than spinning up large numbers of ec2 instances just for testing.</p>
<p>At the time of writing, the gem was not available &#8211; but it should appear on github soon.</p>
<h2>SongKick</h2>
<p><em>Joseph Wilk</em></p>
<ul>
<li>check out <a href="http://blog.josephwilk.net/">Joseph&#8217;s blog</a></li>
<li>Songkick found Gherkin was not good for user-experience testing &#8211; they generally had hand-drawn diagrams attached to features to show what it would look like</li>
<li>Publishing your cukes (e.g. relish) helps stop the steps being developer-centric</li>
<li>Abstract your steps using something like CukeSalad or Page Model</li>
<li>Songkick tried using testjour to distribute their tests onto multiple machines, and speed up the build &#8211; rails projects should use hydra for this (there wasn&#8217;t much detail on this)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://alkesh.vaghmaria.com/2011/03/cukeup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Rails Project Best Practices</title>
		<link>http://alkesh.vaghmaria.com/2010/03/new-rails-project-best-practices/</link>
		<comments>http://alkesh.vaghmaria.com/2010/03/new-rails-project-best-practices/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 11:29:42 +0000</pubDate>
		<dc:creator>Alkesh</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://alkesh.vaghmaria.com/?p=74</guid>
		<description><![CDATA[Every now and again, our team creates a new Rails app. The last time we did this, we had a discussion about how we could make our new Rails app easier to maintain and test, as well as reducing the duplication across multiple Rails apps. Here&#8217;s the list of recommendations we came up with: Cucumber [...]]]></description>
			<content:encoded><![CDATA[<p>Every now and again, our team creates a new Rails app.<br />
The last time we did this, we had a discussion about how we could make our new Rails app easier to maintain and test, as well as reducing the duplication across multiple Rails apps.</p>
<p>Here&#8217;s the list of recommendations we came up with:</p>
<p><strong><a href="http://cukes.info">Cucumber</a> Feature Tests</strong></p>
<ul>
<li>Don&#8217;t change generated step definition files (e.g. web_steps.rb from <a href="http://github.com/brynary/webrat">webrat</a>), instead add new steps to new files.</li>
<li>Extract common steps (ones used in more than one project) to a template</li>
</ul>
<p><strong>WebMock</strong></p>
<ul>
<li>Use <a href="http://github.com/bblimke/webmock">webmock</a> instead of <a href="http://github.com/kerryb/fakettp">FakeTTP</a>. We seems to have occasional problems with FakeTTP.</li>
</ul>
<p><strong>Template</strong></p>
<ul>
<li>Use a <a href="http://m.onkey.org/2008/12/4/rails-templates">template</a> for common stuff such as Capistrano Tasks, Rake Tasks, Scripts and Cucumber Step Definitions &#8211; as well as the usual initial project setup</li>
</ul>
<p><strong>Configuration</strong></p>
<ul>
<li>Instead of using constants in production.rb, use a <a href="http://robots.thoughtbot.com/post/344833329/mygem-configure-block">configuration class</a>.</li>
</ul>
<p><strong>Continuous Integration</strong></p>
<ul>
<li>Have tests that test installing from scratch</li>
<li>Have tests that test upgrades</li>
<li>Have a test that uses the latest versions of gems</li>
</ul>
<p>(you can never have too many tests).</p>
<p><strong>Deployment</strong></p>
<ul>
<li>Use <a href="http://github.com/mislav/git-deploy">git-deploy</a> instead of just capistrano &#8211; it&#8217;s faster, easier, and uses the power of <a href="http://git-scm.com">git</a></li>
</ul>
<p><strong>REST</strong></p>
<ul>
<li>Use <a href="http://restfulie.caelum.com.br">Restfulie</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://alkesh.vaghmaria.com/2010/03/new-rails-project-best-practices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.260 seconds -->

