<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Object Mentor Blog: Scala Bowling Kata - somewhere in the middle...</title>
    <link>http://blog.objectmentor.com/articles/2009/10/05/scala-bowling-kata-somewhere-in-the-middle</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description></description>
    <item>
      <title>Scala Bowling Kata - somewhere in the middle...</title>
      <description>I need to do some work with Scala to update our Concurrency in Java class. We want to demonstrate some other approaches to concurrency, e.g., Scala Actors (among others). I began by shaving yaks:
	&lt;ul&gt;
	&lt;li&gt;Installed the &lt;a href="http://www.scala-lang.org/node/94"&gt;Eclipse Scala Plugin&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;Installed Scala using Mac Ports&lt;/li&gt;
		&lt;li&gt;Figured out how to get those things playing nice (the plugin page pretty much did that, but in a nutshell, add a few jar files to the classpath)&lt;/li&gt;
	&lt;/ul&gt;


Next, I wanted to use some &lt;span class="caps"&gt;BDD&lt;/span&gt; tool. I&amp;#8217;m going to try and stop using the term &lt;span class="caps"&gt;TDD&lt;/span&gt; simply because the T, which stands for Test in &lt;span class="caps"&gt;TDD&lt;/span&gt;, really means &amp;#8220;desired behavior&amp;#8221;. I considered calling it Trait Driven Development, but:
	&lt;ul&gt;
	&lt;li&gt;We don&amp;#8217;t need &lt;span class="caps"&gt;YADT&lt;/span&gt; &amp;#8211; Yet another damn term&lt;/li&gt;
		&lt;li&gt;Trait is a heavily overloaded word&lt;/li&gt;
		&lt;li&gt;I like the term &lt;span class="caps"&gt;BDD&lt;/span&gt; better and it fits.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Anyway, one such choice was &lt;a href="http://code.google.com/p/specs/"&gt;Specs&lt;/a&gt;, which is what I decided to use.&lt;/p&gt;


So back to yak shaving:
	&lt;ul&gt;
	&lt;li&gt;I added another jar to my classpath in Eclipse&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://code.google.com/p/specs/wiki/RunningSpecs#Run_your_specification_with_JUnit4_in_Eclipse"&gt;Then read how to get it running in Eclipse&lt;/a&gt;. Not too bad, I suppose.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;So now I need to learn Scala. Sure, I&amp;#8217;ve used it, but far less than Ruby. So it took me several hours to get specs running along with writing some Scala code to score a game &amp;#8211; I&amp;#8217;m glad I know the domain at least.&lt;/p&gt;


	&lt;p&gt;I wanted to make similar behaviors to the ones I wrote for the &lt;a href="http://blog.objectmentor.com/articles/2009/10/01/bowling-game-kata-in-ruby"&gt;Ruby version&lt;/a&gt;, which I did.&lt;/p&gt;


However, unlike the Ruby version, I was curious what would happen if I:
	&lt;ul&gt;
	&lt;li&gt;Took an approach similar to Uncle Bob &amp;#8211; strikes take one slot in an array&lt;/li&gt;
		&lt;li&gt;Added input validation&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;On the one hand, there are some interesting things I managed to create. On the other hand, I&amp;#8217;ve got a bit of a mess. I have a stateful object to avoid passing parameters so that I can write some of the code cleanly. I know I need to add in an intermediate computational object, and I&amp;#8217;m going to get to that. However, I wanted to get feedback on what I&amp;#8217;ve put out there so far.&lt;/p&gt;


Specifically, 
	&lt;ul&gt;
	&lt;li&gt;What do you think of the (bdd-style) examples from specc?&lt;/li&gt;
		&lt;li&gt;What is the correct way to write the Times(20).Do( ...) thing I came up with, there&lt;i&gt; &lt;b&gt;has&lt;/b&gt;&lt;/i&gt; be a better way? &lt;/li&gt;
		&lt;li&gt;For the part of the bowling scoring code that is not stateful (read this as, does not violate the &lt;span class="caps"&gt;SRP&lt;/span&gt;), what do you think of it?&lt;/li&gt;
		&lt;li&gt;How would you remove most/all of the state (other than the individual rolls) out of the Bowling scorer class? (Or would you choose to have the roll() method return a new instance of BowlingScorer with the new score recorded?)&lt;/li&gt;
		&lt;li&gt;Notice that the class maintains a mini state machine in the form of tracking whether the first ball of he current frame (not tracked) has or has not been thrown. That&amp;#8217;s only there to be able to perform input validation. I considered:
	&lt;ul&gt;
	&lt;li&gt;Walking the array&lt;/li&gt;
		&lt;li&gt;Going to 2 slots for every frame (making it easy to find the frame)&lt;/li&gt;
		&lt;li&gt;Storing a frame object (ok, I didn&amp;#8217;t really consider it, but I did think about it)&lt;/li&gt;
		&lt;li&gt;The mini state machine&lt;/li&gt;
	&lt;/ul&gt;
	&lt;/li&gt;
		&lt;li&gt;nextFrameScore uses the index instance variable, and changes it. This both violates command-query separation and demonstrates a violation of the &lt;span class="caps"&gt;SRP&lt;/span&gt;, but it made the scoreAt method look nice.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;An interesting side effect is that scoring marks (strikes and spares) uses the same approach, sum up three rolls total.&lt;/p&gt;


	&lt;p&gt;I know this needs work. What I&amp;#8217;ve got works according to its current specification (its examples), so in a sense, that&amp;#8217;s a good thing because I&amp;#8217;ve already stared experimenting with trying out different solutions. However, I am painfully aware of how unaware I am of Scala at the moment, so your (hopefully gentle) feedback will tell me what I need to learn next.&lt;/p&gt;


	&lt;p&gt;Looking forward to the virtual beating &amp;#8230;&lt;/p&gt;


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


Here are the two files I&amp;#8217;ve created so far (and to be clear, all of the examples pass):
&lt;p&gt;&lt;/p&gt;
&lt;b&gt;&lt;i&gt;BowlingScorerExampleGroup.scala&lt;/b&gt;&lt;/i&gt;
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_scala "&gt;package com.om.example

import org.specs._

object BowlingScorerExampleGroup extends SpecificationWithJUnit {
  var scorer = new BowlingScorer();

  def roll(value:Int) {
    scorer.roll(value) 
  }

  def rollMany(rolls:Int, value:Int) {
    0.until(rolls).foreach { arg =&amp;gt; scorer.roll(value) }
  }

  def haveAScoreOf(expected:Int) {
    scorer.score must_== expected
  }

  def strike {
    roll(10)
  }

  def spare {
    rollMany(2, 5) 
  }

  abstract class IDo {
    def Do(block: =&amp;gt; Unit) 
  }

  def Times(count:Int): IDo = {
    return new IDo {
      def Do(block: =&amp;gt; Unit) {
        1.to(count).foreach( arg =&amp;gt; block )
      }
    }
  }

  &amp;quot;A Newly Created Bowling Scorer&amp;quot; should {
    haveAScoreOf(0)
  }

  &amp;quot;A game with all 0's&amp;quot; should {
    Times(20).Do( roll(0) )
    haveAScoreOf(0)
  }

  &amp;quot;A game with all 1's&amp;quot; should {
    Times(20).Do { roll(1) }
    haveAScoreOf(20)
  }

  &amp;quot;A game with a single spare followed by a 5&amp;quot; should {
    spare
    roll(5)
    haveAScoreOf(20)
  }

  &amp;quot;A game with all 5's&amp;quot; should {
    Times(10).Do( spare ) 
    roll(5)
    haveAScoreOf(150)
  }

  &amp;quot;A game with a single strike followed by a 4&amp;quot; should {
    strike
    roll(4)
    haveAScoreOf(18)
  }

  &amp;quot;A game with a strike, spare then an open frame with two 3's&amp;quot; should {
    strike
    spare
    Times(2).Do( roll(3) )
    haveAScoreOf(39)
  }

  &amp;quot;A game with strike, spare then an open frame with two 3's&amp;quot; should {
    spare
    strike
    Times(2).Do( roll(3) )
    haveAScoreOf(42)
  }

  &amp;quot;A Dutch 200 game, Spare-Strike&amp;quot; should {
    Times(5).Do { 
      spare 
      strike
    }
    spare
    haveAScoreOf(200)
  }

  &amp;quot;A Dutch 200 game, Strike-Spare&amp;quot; should {
    Times(5).Do { 
      strike
      spare 
    }
    strike
    haveAScoreOf(200)
  } 

  &amp;quot;A Perfect game&amp;quot; should {
    Times(12).Do( strike ) 
    haveAScoreOf(300)
  }

  &amp;quot;The score for each frame of a Perfect game, each frame&amp;quot; should {
    Times(12).Do( strike ) 
    1.to(10).foreach{ frame =&amp;gt; scorer.scoreAt(frame) must_== 30 * frame }
  }

  &amp;quot;An individaul roll of &amp;gt; 10&amp;quot; should {
    roll(11) must throwA[IllegalArgumentException]
  }

  &amp;quot;An iniviaul roll of &amp;lt; 0&amp;quot; should {
    roll(-1) must throwA[IllegalArgumentException]
  }

  &amp;quot;A frame trying to contain more than 10 pins&amp;quot; should {
    roll(8)
    roll(3) must throwA[IllegalArgumentException]
  }
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

	&lt;p&gt;&lt;b&gt;&lt;i&gt;BowlingScorer.scala&lt;/b&gt;&lt;/i&gt;
&lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_scala "&gt;package com.om.example

class BowlingScorer {
  var rolls:Array[Int] = Array()
  var index:Int = 0
  var firstBallInFrameThrown: Boolean = false;

  def roll(roll:Int) = {
    validate(roll)
    record(roll)
  }

  def validate(roll:Int) {
    if((0).to(10).contains(roll) == false)
      throw new IllegalArgumentException(&amp;quot;Individaul rolls must be from 0 .. 10&amp;quot;)

    if(openScoreAt(indexToValidate) + roll &amp;gt; 10)
      throw new IllegalArgumentException(&amp;quot;Total of rolls for frame must not exceed 10&amp;quot;);
  }

  def record(roll: Int) {
    rolls = rolls ++ Array(roll)
    firstBallInFrameThrown = firstBallInFrameThrown == false &amp;amp;&amp;amp; roll != 10
  }

  def indexToValidate = {
    if(firstBallInFrameThrown) rolls.length - 1 else rolls.length
  }

  def scoreAt(frame:Int) = {
    1.to(frame).foldLeft(0) { (total, frame) =&amp;gt;  total + nextFrameScore  }
  }

  def score = {
    scoreAt(10)
  }

  def nextFrameScore = {
    var result = 0;
    if(isStrike(index)) {
      result += markScoreAt(index)
      index += 1
    } else if(isSpare(index)) {
      result += markScoreAt(index);
      index += 2
    } else {
      result += openScoreAt(index);
      index += 2
    }
    result
  }

  def isStrike(index:Int) = {
    valueAt(index) == 10
  }

  def markScoreAt(index:Int) = {
    sumNext(index, 3)
  }

  def isSpare(index:Int) = {
    openScoreAt(index) == 10
  }

  def openScoreAt(index:Int) = {
    sumNext(index, 2)
  }

  def sumNext(index:Int, count:Int) = {
    index.until(index+count).foldLeft(0)(_ + valueAt(_))
  }

  def valueAt(index:Int) = {
    if(rolls.length &amp;gt; index) rolls.apply(index) else 0
  }
}&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 05 Oct 2009 23:33:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:23cd72fc-e4b5-4dbd-b219-e4bb2e4b92c7</guid>
      <author>Brett Schuchert</author>
      <link>http://blog.objectmentor.com/articles/2009/10/05/scala-bowling-kata-somewhere-in-the-middle</link>
      <category>Schuchert's Scattered Synapses </category>
      <category>Scala</category>
      <category>bdd</category>
      <category>specs</category>
      <category>bowling</category>
      <category>kata</category>
    </item>
    <item>
      <title>"Scala Bowling Kata - somewhere in the middle..." by iPhone contacts backup</title>
      <description>&lt;p&gt;It is so hard to understand this. can u explain more about this topic.&lt;/p&gt;</description>
      <pubDate>Sun, 15 Jan 2012 01:33:28 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:e83889f8-bb01-4b9c-809f-0a53667302b9</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/05/scala-bowling-kata-somewhere-in-the-middle#comment-197900</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - somewhere in the middle..." by garage wall storage </title>
      <description>&lt;p&gt;You still have an extremely beneficial weblog I have already been here looking at for about quite some time currently. I am a newcomer plus your achievement is extremely significantly a great inspiration personally. Carry on the nice article!&lt;/p&gt;</description>
      <pubDate>Fri, 13 Jan 2012 02:44:04 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:79825f0f-f50d-453c-9e7d-a2a66b95cd5c</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/05/scala-bowling-kata-somewhere-in-the-middle#comment-197676</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - somewhere in the middle..." by Supra Cuttler</title>
      <description>&lt;p&gt;As some conservative Republicans sought an alternative to Mitt Romney &lt;a href="http://www.supuksale.com/supra-pilot-shoes-c-49.html" rel="nofollow"&gt;Supra Pilot Shoes&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 30 Nov 2011 00:17:50 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:842cd47d-2fc1-4340-94f1-f791172ecf76</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/05/scala-bowling-kata-somewhere-in-the-middle#comment-179889</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - somewhere in the middle..." by christian louboutin</title>
      <description>&lt;p&gt;Berkeley had a liberal element in the student body who tended to be quite active. I think that&#8217;s in general a feature of intellectually active places.&lt;/p&gt;</description>
      <pubDate>Fri, 04 Nov 2011 20:07:40 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:6aad8379-881c-435b-8461-0bb0b34e7d5e</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/05/scala-bowling-kata-somewhere-in-the-middle#comment-168375</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - somewhere in the middle..." by Tips For Bowling</title>
      <description>&lt;p&gt;Berkeley had a liberal element in the student body who tended to be quite active. I think that&amp;#8217;s in general a feature of intellectually active places.&lt;/p&gt;</description>
      <pubDate>Tue, 18 Oct 2011 12:25:24 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:aacc94ec-f224-4ec0-85a1-26923e58c39c</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/05/scala-bowling-kata-somewhere-in-the-middle#comment-159092</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - somewhere in the middle..." by Christian</title>
      <description>&lt;p&gt;asa sdf+09a8s0+ 90s8a9sss&lt;/p&gt;</description>
      <pubDate>Mon, 10 Oct 2011 23:21:44 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:693796fd-6094-456d-95d5-54ad974ed8ec</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/05/scala-bowling-kata-somewhere-in-the-middle#comment-153978</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - somewhere in the middle..." by moncler</title>
      <description>&lt;p&gt;asdfs fgh98f7g88f8f8f&lt;/p&gt;</description>
      <pubDate>Mon, 10 Oct 2011 23:04:24 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:cc9cf4a0-5410-43c1-b512-52037b3443e1</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/05/scala-bowling-kata-somewhere-in-the-middle#comment-153960</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - somewhere in the middle..." by Louboutins</title>
      <description>&lt;p&gt;asdasd +9f8as9+d9fs&lt;/p&gt;</description>
      <pubDate>Mon, 10 Oct 2011 23:00:24 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:01591d30-7d0f-4069-9079-191853a505c5</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/05/scala-bowling-kata-somewhere-in-the-middle#comment-153937</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - somewhere in the middle..." by what is an iva</title>
      <description>&lt;p&gt;To read a worth knowing article is so overwhelming.&lt;/p&gt;</description>
      <pubDate>Tue, 04 Oct 2011 01:01:34 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:9726fe8a-e86a-4c28-b50e-638648253752</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/05/scala-bowling-kata-somewhere-in-the-middle#comment-149807</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - somewhere in the middle..." by bagsupplyer</title>
      <description>&lt;p&gt;It is nice of you to post this.I will pay more attention on it.
&lt;a href="http://www.bagsupplyer.com/Prada-shoes-n271/" rel="nofollow"&gt;Discount fashion women Prada Lowcut shoes from China for wholesale free shipping,more order,more discount&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Sun, 04 Sep 2011 02:41:05 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:507fb86f-3726-469a-8811-1b6b51fb75ec</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/05/scala-bowling-kata-somewhere-in-the-middle#comment-136810</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - somewhere in the middle..." by beats by dre store</title>
      <description>&lt;p&gt;Would you like to banckup iphone SMS to mac, macBook, macbookPro as .txt files? Now a software iphone SMS to&lt;a href="http://www.drdrebeatsheadphones-australia.com" rel="nofollow"&gt;high quality headphones&lt;/a&gt;
&lt;a href="http://www.drdrebeatsheadphones-australia.com" rel="nofollow"&gt;new design headphones&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 23 Aug 2011 03:29:46 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:c30d00c4-ad70-4d61-94c6-200947744d39</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/05/scala-bowling-kata-somewhere-in-the-middle#comment-131684</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - somewhere in the middle..." by Daycare Grants in South Dakota</title>
      <description>&lt;p&gt;I got these guides very helpful. Here I got much stuff to know..&lt;a href="http://daycaregrants.org/south-Dakota" rel="nofollow"&gt;Daycare Grants in South Dakota&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 29 Jun 2011 23:43:36 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:e0685e39-f125-4b83-9e14-e2a04bb89a10</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/05/scala-bowling-kata-somewhere-in-the-middle#comment-113218</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - somewhere in the middle..." by Illinois Foreclosure Help</title>
      <description>&lt;p&gt;I got these guides very helpful. Here I got much stuff to know..
&lt;a href="http://www.foreclosurehelp.org/illinois" rel="nofollow"&gt;Illinois Foreclosure Help&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 29 Jun 2011 23:40:43 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:f54aceb2-f72f-4ed5-ac1e-367d85b24c5f</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/05/scala-bowling-kata-somewhere-in-the-middle#comment-113217</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - somewhere in the middle..." by absorbant</title>
      <description>&lt;p&gt;I got these guides very helpful. Here I got much stuff to know..&lt;a href="http://www.thejanitorialsupply.com/spilfyter-absorbents.html" rel="nofollow"&gt;absorbant&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 29 Jun 2011 11:53:13 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:ea16520f-d74a-4556-9b9a-1b8a9be8c60c</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/05/scala-bowling-kata-somewhere-in-the-middle#comment-113172</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - somewhere in the middle..." by New Hampshire Daycare Form</title>
      <description>&lt;p&gt;Good effort! keep up the good work!
&lt;a href="http://www.thejanitorialsupply.com/wypall-x60-wipers.html" rel="nofollow"&gt;wypall x60&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Tue, 10 May 2011 03:51:59 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:58030082-ef2e-41c3-84f3-8408781f54ca</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/05/scala-bowling-kata-somewhere-in-the-middle#comment-97575</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - somewhere in the middle..." by coach purses</title>
      <description>&lt;p&gt;Mr Coates &lt;a href="http://www.coachonlinehandbags.com" rel="nofollow"&gt;coach purses&lt;/a&gt; is the longest U.S. market popular with one of the most successful leather brand. Mr Coates &lt;a href="http://www.coachonlinehandbags.com" rel="nofollow"&gt;coach purses store&lt;/a&gt; represents the most admirable American fashion innovative style and traditional skills .  Mr Coates &lt;a href="http://www.coachonlinehandbags.com" rel="nofollow"&gt;coach bags&lt;/a&gt; have durable quality and exquisite technology, &lt;a href="http://www.coachonlinehandbags.com/conspicuous-coach-heels-c-79.html" rel="nofollow"&gt;Conspicuous Coach Heels&lt;/a&gt; in the female consumers have good reputation. Welcome to our shop &lt;a href="http://www.coachonlinehandbags.com/elegant-coach-purses-c-83.html" rel="nofollow"&gt;Elegant Coach Purses&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 09 May 2011 20:50:22 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:9c57eed9-ef5b-46d1-8ea4-6bd95078e09f</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/05/scala-bowling-kata-somewhere-in-the-middle#comment-97368</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - somewhere in the middle..." by New Hampshire Daycare Form</title>
      <description>&lt;p&gt;Nice posts! thumbs up!&lt;a href="http://www.daycareforms.org/new-Hampshire" rel="nofollow"&gt;New Hampshire Daycare Form&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Fri, 06 May 2011 02:07:21 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:8b1d44b9-1fd6-402e-a7d8-239433e4e10f</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/05/scala-bowling-kata-somewhere-in-the-middle#comment-95321</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - somewhere in the middle..." by okey oyunu oyna </title>
      <description>&lt;p&gt;yes it is very nice.&lt;/p&gt;


	&lt;p&gt;internette g&#246;r&#252;nt&#252;l&#252; olarak &lt;a href="http://www.okeyoyunu-oyna.com" rel="nofollow"&gt;okey oyunu oyna&lt;/a&gt;, ger&#231;ek kisilerle tanis,
 turnuva heyecanini yasa.&lt;/p&gt;</description>
      <pubDate>Thu, 28 Apr 2011 15:36:46 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:43537c53-b038-4144-9d8e-933d6580633e</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/05/scala-bowling-kata-somewhere-in-the-middle#comment-92809</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - somewhere in the middle..." by Foreclosure Help in Alaska</title>
      <description>&lt;p&gt;Thank You for this wonderful post!&lt;a href="http://daycaregrants.org/ohio" rel="nofollow"&gt;Ohio Daycare Grants&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 18 Apr 2011 10:13:55 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:63f91e9f-c6a0-48c9-b2b1-fa84f2290cd4</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/05/scala-bowling-kata-somewhere-in-the-middle#comment-86645</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - somewhere in the middle..." by Foreclosure Help in Alaska</title>
      <description>&lt;p&gt;I got these guides very helpful. Here I got much stuff to know..&lt;a href="http://www.foreclosurehelp.org/alaska" rel="nofollow"&gt;Foreclosure Help in Alaska&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Mon, 18 Apr 2011 10:08:12 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:4fd0b811-4092-48cf-9dc2-4fcf626342e4</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/05/scala-bowling-kata-somewhere-in-the-middle#comment-86644</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - somewhere in the middle..." by daycare job</title>
      <description>&lt;p&gt;Amazing! This is very informative blog. Thanks for sharing such a nice information with us. I appreciate your blog&lt;a href="http://www.ownadaycare.com/jobs/" rel="nofollow"&gt;daycare job&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Sat, 26 Mar 2011 01:20:41 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:740c977d-9a0b-4aef-9dd3-6f6f9f7a5bae</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/05/scala-bowling-kata-somewhere-in-the-middle#comment-75814</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - somewhere in the middle..." by zby  love</title>
      <description>&lt;p&gt;In place of a wheel train to add up the beats into seconds, minutes, and hours, it used &lt;i&gt;&lt;b&gt;&lt;a href="http://www.wholesalewatcheschina.com/wholesale-Kids-Sport-Watches-219-b0.html" rel="nofollow"&gt;kids sports watch&lt;/a&gt;&lt;/b&gt;&lt;/i&gt;digital counters. The higher Q factor of the resonator, along with quartz&amp;#8217;s low temperature coefficient, resulted in better accuracy than the best mechanical watches, while the elimination of all moving parts made the watch more shock-resistant and eliminated the need &lt;a href="http://www.wholesalewatcheschina.com/wholesale-Chronograph-Sports-Watch-278-b0.html" rel="nofollow"&gt;sport chronograph watches&lt;/a&gt;for periodic cleaning.&lt;/p&gt;</description>
      <pubDate>Tue, 15 Mar 2011 22:45:27 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:1a2484a0-4182-4e6f-bd4e-04e49147c7c9</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/05/scala-bowling-kata-somewhere-in-the-middle#comment-73020</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - somewhere in the middle..." by ssara</title>
      <description>&lt;p&gt;The new installation is very must complicated It should be more clear. &lt;a href="http://www.daycaregrants.org" rel="nofollow"&gt;daycare grants&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 03 Mar 2011 04:18:44 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:6a101b58-c284-4c55-b0ff-ac04a6984d0d</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/05/scala-bowling-kata-somewhere-in-the-middle#comment-68626</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - somewhere in the middle..." by mobile screening equipment</title>
      <description>&lt;p&gt;KEESTRACK?manufacturing expert of mobile crusher and mobile screening equipment. Company engaged in the research &amp;#38; development, manufacture, sales of track screening machine,mobile screening,cone crusher,jaw crusher,impact crusher,mobile screening equipment,mobile crushing equipment, till now we are proud to say we are at front of the industry.&lt;/p&gt;</description>
      <pubDate>Mon, 28 Feb 2011 23:37:40 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:4d1fbd1e-9fcb-4349-b065-f97a107993bb</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/05/scala-bowling-kata-somewhere-in-the-middle#comment-67609</link>
    </item>
    <item>
      <title>"Scala Bowling Kata - somewhere in the middle..." by evaporator</title>
      <description>&lt;p&gt;Your site is amazing.I am very impressed to see this,i want to come back for visiting your site.Keep doing Good as well as you can.&lt;/p&gt;</description>
      <pubDate>Mon, 28 Feb 2011 23:32:16 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:20b12b9d-5356-45a8-91ad-a56aa71a7556</guid>
      <link>http://blog.objectmentor.com/articles/2009/10/05/scala-bowling-kata-somewhere-in-the-middle#comment-67575</link>
    </item>
  </channel>
</rss>

