<?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>aimee daniells &#187; learning</title>
	<atom:link href="http://edendevelopment.co.uk/blogs/aimee/tag/learning/feed/" rel="self" type="application/rss+xml" />
	<link>http://edendevelopment.co.uk/blogs/aimee</link>
	<description>apprentice to Enrique Comba Riepenhausen</description>
	<lastBuildDate>Wed, 25 Aug 2010 16:20:09 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Design Patterns study group</title>
		<link>http://edendevelopment.co.uk/blogs/aimee/2010/01/17/design-patterns-study-group/</link>
		<comments>http://edendevelopment.co.uk/blogs/aimee/2010/01/17/design-patterns-study-group/#comments</comments>
		<pubDate>Sun, 17 Jan 2010 16:26:36 +0000</pubDate>
		<dc:creator>aimee</dc:creator>
				<category><![CDATA[i use tags, not categories]]></category>
		<category><![CDATA[design patterns]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[practice]]></category>
		<category><![CDATA[study group]]></category>

		<guid isPermaLink="false">http://edendevelopment.co.uk/blogs/aimee/?p=41</guid>
		<description><![CDATA[A new thing at Eden is we have started a study group and we are currently studying the Gang of Four Design Patterns book. I&#8217;ve read this before but i&#8217;ve not studied it. I guess i got an overview and thought to myself, &#8220;Well, i know where to look if i ever want to look [...]]]></description>
			<content:encoded><![CDATA[<p>A new thing at Eden is we have started a study group and we are currently studying the <a href="http://www.amazon.co.uk/Design-patterns-elements-reusable-object-oriented/dp/0201633612/">Gang of Four Design Patterns</a> book. I&#8217;ve read this before but i&#8217;ve not <em>studied</em> it. I guess i got an overview and thought to myself, &#8220;Well, i know where to look if i ever want to look up a pattern &#8230;&#8221; &#8211; Have i ever looked up a pattern since? No! ;)</p>
<p>So i&#8217;m really glad to be studying it this time and really getting to know the patterns properly so that i can use them readily whenever appropriate. It&#8217;s good to have the opportunity to discuss one pattern at a time in a group. Here&#8217;s a photo from the first study group last week:</p>
<p><a href="http://www.flickr.com/photos/edendevelopment/4270900463/" title="Design Patterns Study Group by edendevelopment, on Flickr"><img src="http://farm5.static.flickr.com/4038/4270900463_ce679fffb6.jpg" width="500" height="375" alt="Design Patterns Study Group" /></a></p>
<p>As part of my studying, i am implementing examples of the patterns in Ruby. Last week i coded the Factory Method example. It&#8217;s funny how i can skim over the code in the book and convince myself that i understand it, but coming to implement it for myself in a different language was a challenge. One that i thoroughly enjoyed, i have to say! :) I&#8217;m happy to say that i now fully understand the factory method!</p>
<p>I&#8217;ve also been writing tests to ensure the code works as i expect. This has been useful because i&#8217;ve learned about Test::Unit which was previously unknown to me. When i joined Eden i learned RSpec and Cucumber (or story_runner or whatever it was called back then). Other than that i&#8217;d never tested Ruby before.</p>
<p>This week i have been implementing sorting algorithms as strategies. I wasn&#8217;t too impressed with the code examples in the book for the Strategy pattern, largely because they left out all the code that actually differs between the strategies! So i decided to make up my own example. It has been good to refresh my memory on sorting algorithms at the same time as clarifying how the Strategy pattern works.</p>
<p>You can follow along with my workings on <a href="http://github.com/sermoa/ruby_design_patterns">sermoa/ruby_design_patterns</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://edendevelopment.co.uk/blogs/aimee/2010/01/17/design-patterns-study-group/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A testing framework</title>
		<link>http://edendevelopment.co.uk/blogs/aimee/2009/11/28/a-testing-framework/</link>
		<comments>http://edendevelopment.co.uk/blogs/aimee/2009/11/28/a-testing-framework/#comments</comments>
		<pubDate>Sat, 28 Nov 2009 12:38:18 +0000</pubDate>
		<dc:creator>aimee</dc:creator>
				<category><![CDATA[i use tags, not categories]]></category>
		<category><![CDATA[apprenticeship]]></category>
		<category><![CDATA[bdd]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[learning]]></category>

		<guid isPermaLink="false">http://edendevelopment.co.uk/blogs/aimee/?p=22</guid>
		<description><![CDATA[Enrique has amended my task so that i cannot use any existing testing framework, not even Ruby&#8217;s built-in Test::Unit. However, i must practice test-driven development! Ha ha ha!
So here i am trying to ponder how to write a unit testing framework. Which is actually really nice because i get to decide the syntax i would [...]]]></description>
			<content:encoded><![CDATA[<p>Enrique has amended my task so that i cannot use any existing testing framework, not even Ruby&#8217;s built-in Test::Unit. However, i must practice test-driven development! Ha ha ha!</p>
<p>So here i am trying to ponder how to write a unit testing framework. Which is actually really nice because i get to decide the syntax i would like to use, and maybe &#8211; just maybe &#8211; i&#8217;ll come up with something that suits me really well and i&#8217;ll use again.</p>
<p>Enrique pointed me to the <a href="http://github.com/jimweirich/Given">Given</a> specification framework which i like because it uses the BDD &#8216;given/when/then&#8217; approach for unit-level specifications. I&#8217;m already used to this kind of format for Cucumber features. Effectively, we use &#8216;given/then/when&#8217; for Rspec, but it&#8217;s not made explicitly obvious. My comments in this trivial example should make it obvious:</p>
<pre>describe "example" do
  before do
    @counter = 1             #(given)
  end

  it "increments the counter" do
    @counter += 2            #(when)
    @counter.should == 3     #(then)
  end
end</pre>
<p>Now i think i could make the &#8216;given/when/then&#8217; more obvious, and i can also simplify it. I might actually change &#8216;then&#8217; to &#8216;expect&#8217;, meaning i can do away with the &#8217;should&#8217; method. Effectively i&#8217;m saying that whatever is in the &#8216;expect&#8217; block should return true, otherwise the spec fails. Here&#8217;s what i&#8217;m thinking of:</p>
<pre>spec do
  given { @counter = 1 }
  when { @counter += 2 }
  expect { @counter == 3 }
end</pre>
<p>I suppose this is what people call a DSL &#8211; a domain-specific language. That is the kind of language i&#8217;d like to use to write my specs. I&#8217;ve never written a DSL before, but i&#8217;m excited by the idea of being able to write specs like this, so i&#8217;m looking forward to giving it a go!</p>
<p>A little voice in the back of my head is telling me i&#8217;m going to have to finally understand &#8216;lambda&#8217; properly. Lambda is one of those things that never sticks in my head. I can look it up when i need to and blunder my way to making it work, but i never really understand what it&#8217;s doing or how or why. I have a suspicion that i&#8217;ll be making extensive use of &#8216;lambda&#8217; in my testing framework! :)</p>
]]></content:encoded>
			<wfw:commentRss>http://edendevelopment.co.uk/blogs/aimee/2009/11/28/a-testing-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Apprenticeship</title>
		<link>http://edendevelopment.co.uk/blogs/aimee/2009/11/25/apprenticeship/</link>
		<comments>http://edendevelopment.co.uk/blogs/aimee/2009/11/25/apprenticeship/#comments</comments>
		<pubDate>Wed, 25 Nov 2009 18:10:49 +0000</pubDate>
		<dc:creator>aimee</dc:creator>
				<category><![CDATA[i use tags, not categories]]></category>
		<category><![CDATA[apprenticeship]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[software crafting]]></category>
		<category><![CDATA[wiki]]></category>

		<guid isPermaLink="false">http://edendevelopment.co.uk/blogs/aimee/?p=18</guid>
		<description><![CDATA[I am pleased to say that today i have been offered an apprenticeship under Enrique Comba Riepenhausen and i have accepted! From this moment on we have entered into a formal mentor-apprentice relationship where i will learn as much as possible from Enrique, and Enrique will mentor me to become a better software crafter. I [...]]]></description>
			<content:encoded><![CDATA[<p>I am pleased to say that today i have been offered an apprenticeship under Enrique Comba Riepenhausen and i have accepted! From this moment on we have entered into a formal mentor-apprentice relationship where i will learn as much as possible from Enrique, and Enrique will mentor me to become a better software crafter. I expect it to be hard work but very rewarding.</p>
<p>I am proud and honoured to have been given this opportunity. I am glad that it has become official because i need my learning to be accountable to somebody. I am great at starting new things but really bad at following them through. To be answerable to Enrique will be very good for me, and i know that there is a lot that i can learn from Enrique.</p>
<p>My first task is to write a wiki engine in pure Ruby, with no libraries other than a testing framework. So no Rails, no Sinatra, no Mongrel, no plugins. This is to teach me the real core of Ruby as a language, without relying on other people&#8217;s code for shortcuts.</p>
<p>I guess the first thing i need to figure out is how to make the application listen for HTTP requests. Which i can honestly say right now i don&#8217;t have the faintest clue! Let the learning begin!</p>
]]></content:encoded>
			<wfw:commentRss>http://edendevelopment.co.uk/blogs/aimee/2009/11/25/apprenticeship/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
