<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>Peter Fitzgibbons</title>
	
	<link>http://peter.fitzgibbons.info</link>
	<description>Ruby 'n Rails</description>
	<lastBuildDate>Tue, 30 Mar 2010 01:38:15 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/PeterJFitzgibbons-Blog" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="peterjfitzgibbons-blog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FPeterJFitzgibbons-Blog" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FPeterJFitzgibbons-Blog" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2FPeterJFitzgibbons-Blog" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.bloglines.com/sub/http://feeds.feedburner.com/PeterJFitzgibbons-Blog" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FPeterJFitzgibbons-Blog" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FPeterJFitzgibbons-Blog" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FPeterJFitzgibbons-Blog" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><item>
		<title>How to filter Autospec Warnings from C-libraries</title>
		<link>http://peter.fitzgibbons.info/2010/03/how-to-filter-autospec-warnings-from-c-libraries/</link>
		<comments>http://peter.fitzgibbons.info/2010/03/how-to-filter-autospec-warnings-from-c-libraries/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 03:23:09 +0000</pubDate>
		<dc:creator>Peter Fitzgibbons</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[autospec]]></category>
		<category><![CDATA[autotest]]></category>
		<category><![CDATA[rspec]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://peter.fitzgibbons.info/?p=132</guid>
		<description><![CDATA[I ran into this issue with Ruby 1.9 (not verified w/ 1.8.7) and the SDL C libraries on Mac OSX.  The specific issue here is related to the Objective-C wrapping of SDL (I guess?).  This issue is not necessarily seen on other platforms.
When running Autospec, noise abounds!
/Users/peterfitzgibbons/.rvm/rubies/ruby-1.9.1-p378/bin/ruby /Users/peterfitzgibbons/ruby-projects/wizardry/vendor/gems/rspec-1.3.0/bin/spec --autospec /Users/peterfitzgibbons/ruby-projects/wizardry/spec/gosu_star_catcher_spec.rb -O spec/spec.opts
Profiling enabled.
/Users/peterfitzgibbons/ruby-projects/wizardry
./Users/peterfitzgibbons/ruby-projects/wizardry
./Users/peterfitzgibbons/ruby-projects/wizardry
.

Top 10 slowest [...]]]></description>
			<content:encoded><![CDATA[<p>I ran into this issue with Ruby 1.9 (not verified w/ 1.8.7) and the SDL C libraries on Mac OSX.  The specific issue here is related to the Objective-C wrapping of SDL (I guess?).  This issue is not necessarily seen on other platforms.</p>
<p>When running Autospec, noise abounds!</p>
<pre>/Users/peterfitzgibbons/.rvm/rubies/ruby-1.9.1-p378/bin/ruby /Users/peterfitzgibbons/ruby-projects/wizardry/vendor/gems/rspec-1.3.0/bin/spec --autospec /Users/peterfitzgibbons/ruby-projects/wizardry/spec/gosu_star_catcher_spec.rb -O spec/spec.opts
Profiling enabled.
/Users/peterfitzgibbons/ruby-projects/wizardry
./Users/peterfitzgibbons/ruby-projects/wizardry
./Users/peterfitzgibbons/ruby-projects/wizardry
.

Top 10 slowest examples:
<span style="color: #ff0000;">0.2427560</span> GosuStarCatcher when initialized should have set dimensions
<span style="color: #ff0000;">0.1411460</span> GosuStarCatcher when initialized should have a background image
<span style="color: #ff0000;">0.1077080</span> GosuStarCatcher when drawn should have background

Finished in 0.526593 seconds

<span style="color: #339966;">3 examples, 0 failures</span>
2010-03-28 21:47:13.642 ruby[72302:903] *** __NSAutoreleaseNoPool(): Object 0x1005200f0 of class NSCFNumber autoreleased with no pool in place - just leaking
2010-03-28 21:47:13.645 ruby[72302:903] *** __NSAutoreleaseNoPool(): Object 0x100567690 of class NSConcreteValue autoreleased with no pool in place - just leaking
2010-03-28 21:47:13.646 ruby[72302:903] *** __NSAutoreleaseNoPool(): Object 0x11236f080 of class NSCFNumber autoreleased with no pool in place - just leaking
2010-03-28 21:47:13.647 ruby[72302:903] *** __NSAutoreleaseNoPool(): Object 0x1005300c0 of class NSConcreteValue autoreleased with no pool in place - just leaking
2010-03-28 21:47:13.649 ruby[72302:903] *** __NSAutoreleaseNoPool(): Object 0x100538b40 of class NSCFDictionary autoreleased with no pool in place - just leaking
2010-03-28 21:47:13.667 ruby[72302:903] *** attempt to pop an unknown autorelease pool (0x100db0a00)
2010-03-28 21:47:13.668 ruby[72302:903] *** __NSAutoreleaseNoPool(): Object 0x101976320 of class NSCFNumber autoreleased with no pool in place - just leaking
2010-03-28 21:47:13.668 ruby[72302:903] *** __NSAutoreleaseNoPool(): Object 0x1019f1d30 of class NSConcreteValue autoreleased with no pool in place - just leaking
2010-03-28 21:47:13.688 ruby[72302:903] *** __NSAutoreleaseNoPool(): Object 0x11236f080 of class NSCFNumber autoreleased with no pool in place - just leaking
2010-03-28 21:47:13.689 ruby[72302:903] *** __NSAutoreleaseNoPool(): Object 0x100589980 of class NSConcreteValue autoreleased with no pool in place - just leaking
2010-03-28 21:47:13.693 ruby[72302:903] *** __NSAutoreleaseNoPool(): Object 0x1019c1710 of class NSCFDictionary autoreleased with no pool in place - just leaking
2010-03-28 21:47:13.706 ruby[72302:903] *** attempt to pop an unknown autorelease pool (0x100db1a00)</pre>
<p>Solution?  Run autospec in terminal window-x with a file redirect of stdout :</p>
<pre>autospec 2&gt;&gt;autospec.log</pre>
<p>If you have issues, tail the log.  Most of the time, your useful info will be written to &amp;1 (stdout) because autospec is trappping all exceptions and wrapping.</p>
<p>Yeay, nice output!</p>
<pre>/Users/peterfitzgibbons/.rvm/rubies/ruby-1.9.1-p378/bin/ruby /Users/peterfitzgibbons/ruby-projects/wizardry/vendor/gems/rspec-1.3.0/bin/spec --autospec /Users/peterfitzgibbons/ruby-projects/wizardry/spec/gosu_star_catcher_spec.rb -O spec/spec.opts
Profiling enabled.
/Users/peterfitzgibbons/ruby-projects/wizardry
./Users/peterfitzgibbons/ruby-projects/wizardry
./Users/peterfitzgibbons/ruby-projects/wizardry
.

Top 10 slowest examples:
<span style="color: #ff0000;">0.2427560</span> GosuStarCatcher when initialized should have set dimensions
<span style="color: #ff0000;">0.1411460</span> GosuStarCatcher when initialized should have a background image
<span style="color: #ff0000;">0.1077080</span> GosuStarCatcher when drawn should have background

Finished in 0.526593 seconds

<span style="color: #339966;">3 examples, 0 failures

</span></pre>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?a=cbuG2D-LI1k:4RJl6QH54Zk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?a=cbuG2D-LI1k:4RJl6QH54Zk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?i=cbuG2D-LI1k:4RJl6QH54Zk:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://peter.fitzgibbons.info/2010/03/how-to-filter-autospec-warnings-from-c-libraries/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gosu Star Catcher : Iteration 1 – Basic Window</title>
		<link>http://peter.fitzgibbons.info/2010/03/gosu-star-catcher-iteration-1-basic-window/</link>
		<comments>http://peter.fitzgibbons.info/2010/03/gosu-star-catcher-iteration-1-basic-window/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 02:11:13 +0000</pubDate>
		<dc:creator>Peter Fitzgibbons</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[tdd]]></category>

		<guid isPermaLink="false">http://peter.fitzgibbons.info/?p=129</guid>
		<description><![CDATA[Following Tutorial steps 1 and 2.  Establishing a screen and background.  Not much exciting on the game progress.  As seems usual, Iteration 1 makes minimal app progress and continues to clean up infrastructure issues of Iteration 0
Github Tag for Iteration-01
Observations :

Most Gosu objects are opaque due to the Ruby wrapper of C++ Gosu library
Heavy use [...]]]></description>
			<content:encoded><![CDATA[<p>Following Tutorial steps 1 and 2.  Establishing a screen and background.  Not much exciting on the game progress.  As seems usual, Iteration 1 makes minimal app progress and continues to clean up infrastructure issues of Iteration 0</p>
<p>Github Tag for <a href="http://github.com/pjfitzgibbons/Gosu-Star-Catcher/tree/Iteration-01">Iteration-01</a></p>
<p>Observations :</p>
<ul>
<li>Most Gosu objects are opaque due to the Ruby wrapper of C++ Gosu library</li>
<li>Heavy use of mocking and expectations will be required to properly Spec the game</li>
</ul>
<p>Additions to environment:</p>
<ul>
<li>mocha gem : additional mocking tools above Rspec&#8217;s internal mocker</li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?a=O_2jv_jN8ac:j7RTW-m4OcU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?a=O_2jv_jN8ac:j7RTW-m4OcU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?i=O_2jv_jN8ac:j7RTW-m4OcU:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://peter.fitzgibbons.info/2010/03/gosu-star-catcher-iteration-1-basic-window/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gosu Star Catcher : Iteration 0</title>
		<link>http://peter.fitzgibbons.info/2010/03/gosu-star-catcher-iteration-0/</link>
		<comments>http://peter.fitzgibbons.info/2010/03/gosu-star-catcher-iteration-0/#comments</comments>
		<pubDate>Thu, 25 Mar 2010 14:56:51 +0000</pubDate>
		<dc:creator>Peter Fitzgibbons</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[tdd]]></category>

		<guid isPermaLink="false">http://peter.fitzgibbons.info/?p=126</guid>
		<description><![CDATA[I am naming the codebase of my Gosu Ruby Tutorial : Gosu Star Catcher
It&#8217;s on GitHub http://github.com/pjfitzgibbons/Gosu-Star-Catcher .
I&#8217;m using a basic Ruby library layout.. hand created.
Here are the components involved at the current moment :
rvm 0.1.23 by Wayne E. Seguin (wayneeseguin@gmail.com) [http://rvm.beginrescueend.com/]
ruby 1.9.1p378
*** LOCAL GEMS ***

archive-tar-minitar (0.5.2)
autotest (4.2.9)
autotest-fsevent (0.2.2)
bundler (0.9.11)
columnize (0.3.1)
ffi (0.6.3)
gosu (0.7.18)
linecache19 (0.5.11)
nice-ffi (0.3)
rake [...]]]></description>
			<content:encoded><![CDATA[<p>I am naming the codebase of my Gosu Ruby Tutorial : Gosu Star Catcher</p>
<p>It&#8217;s on GitHub http://github.com/pjfitzgibbons/Gosu-Star-Catcher .</p>
<p>I&#8217;m using a basic Ruby library layout.. hand created.</p>
<p>Here are the components involved at the current moment :</p>
<pre style="padding-left: 30px;">rvm 0.1.23 by Wayne E. Seguin (wayneeseguin@gmail.com) [http://rvm.beginrescueend.com/]</pre>
<pre style="padding-left: 30px;">ruby 1.9.1p378</pre>
<pre style="padding-left: 30px;">*** LOCAL GEMS ***

archive-tar-minitar (0.5.2)
autotest (4.2.9)
autotest-fsevent (0.2.2)
bundler (0.9.11)
columnize (0.3.1)
ffi (0.6.3)
gosu (0.7.18)
linecache19 (0.5.11)
nice-ffi (0.3)
rake (0.8.7)
rsdl (0.1.4)
rspec (1.3.0)
ruby-debug-base19 (0.11.23)
ruby-debug19 (0.11.6)
ruby-sdl-ffi (0.2)
ruby_core_source (0.1.4)
rubygame (2.6.2)
rubygems-update (1.3.6)
sys-uname (0.8.4)
</pre>
<p>Editor is <a href="http://macromates.com">Textmate</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?a=LpnsO_OpQZY:ZH-8AdjEr04:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?a=LpnsO_OpQZY:ZH-8AdjEr04:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?i=LpnsO_OpQZY:ZH-8AdjEr04:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://peter.fitzgibbons.info/2010/03/gosu-star-catcher-iteration-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Test-Driven Ruby Game Development</title>
		<link>http://peter.fitzgibbons.info/2010/03/test-driven-ruby-game-development/</link>
		<comments>http://peter.fitzgibbons.info/2010/03/test-driven-ruby-game-development/#comments</comments>
		<pubDate>Thu, 25 Mar 2010 14:25:41 +0000</pubDate>
		<dc:creator>Peter Fitzgibbons</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[gaming]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[tdd]]></category>

		<guid isPermaLink="false">http://peter.fitzgibbons.info/?p=124</guid>
		<description><![CDATA[I&#8217;ve been into a game development project using Ruby.  This is inspired by my friend Jared working on re-implementing Wizardry 1 (of Apple ][e fame) on (of all things) Excel and VBA.
So, I&#8217;ve reviewed several libraries.  Currently I&#8217;m trying Gosu for Ruby.
I will blog of my experience in following the Gosu Ruby Tutorial
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been into a game development project using Ruby.  This is inspired by my friend Jared working on re-implementing <a href="http://www.tk421.net/wizardry/">Wizardry 1</a> (of Apple ][e fame) on (of all things) Excel and VBA.</p>
<p>So, I&#8217;ve <a href="http://www.assembla.com/wiki/show/dKa5o4nxqr37mNeJe5afGb/Language_Platforms">reviewed several libraries</a>.  Currently I&#8217;m trying <a href="http://www.libgosu.org/">Gosu for Ruby</a>.</p>
<p>I will blog of my experience in following the <a href="http://code.google.com/p/gosu/wiki/RubyTutorial">Gosu Ruby Tutorial</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?a=EoJzG6JydUw:Ah9gpKkVku8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?a=EoJzG6JydUw:Ah9gpKkVku8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?i=EoJzG6JydUw:Ah9gpKkVku8:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://peter.fitzgibbons.info/2010/03/test-driven-ruby-game-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Notes from Chirb Dojo — Game of Life Kata</title>
		<link>http://peter.fitzgibbons.info/2009/11/chirb-game-of-life-kata/</link>
		<comments>http://peter.fitzgibbons.info/2009/11/chirb-game-of-life-kata/#comments</comments>
		<pubDate>Fri, 06 Nov 2009 19:48:02 +0000</pubDate>
		<dc:creator>Peter Fitzgibbons</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://peter.fitzgibbons.info/?p=120</guid>
		<description><![CDATA[The code was not much to look at.  We mostly rspec&#8217;d a few methods and learned that just because you &#8216;def to_s&#8217; doesn&#8217;t mean the implicit string conversion uses it!
I think the real issue we uncovered was that the implicit string conversion produces escaped string and calling #to_s produces unescaped strings.
Ruby Gems we used to [...]]]></description>
			<content:encoded><![CDATA[<p>The code was not much to look at.  We mostly rspec&#8217;d a few methods and learned that just because you &#8216;def to_s&#8217; doesn&#8217;t mean the implicit string conversion uses it!<br />
I think the real issue we uncovered was that the implicit string conversion produces escaped string and calling #to_s produces unescaped strings.</p>
<p>Ruby Gems we used to setup the environment.</p>
<ul>
<li>rspec</li>
<li>ZenTest</li>
<li>redgreen (for windows users)</li>
</ul>
<p>heredocs &#8212; we talked about how to produce heredocs   You can either use multi-line double-quoted, or &lt;&lt;-eot</p>
<pre>text = &lt;&lt;-eot
This is the heredoc text
It can even include evaluations #{Time.now} !!
eot</pre>
<p>More about heredocs : http://blog.jayfields.com/2006/12/ruby-multiline-strings-here-doc-or.html</p>
<p>A windows-implementation of textmate : http://www.e-texteditor.com/</p>
<p>The Ruby Way &#8212; Hal Fulton</p>
<p>http://www.google.com/url?sa=t&amp;source=web&amp;ct=res&amp;cd=1&amp;ved=0CAwQFjAA&amp;url=http%3A%2F%2Fwww.amazon.com%2FRuby-Way-Second-Techniques-Programming%2Fdp%2F0672328844&amp;ei=OuLwSsj_PIa1tgf59N26Cw&amp;usg=AFQjCNHhpmT3C35Xiianfordqb21_DsWIA&amp;sig2=Pb631QnepV_sAD8wmRuPTA</p>
<p>The Rails Way &#8212; Obie Fernandez</p>
<p>http://www.google.com/url?sa=t&amp;source=web&amp;ct=res&amp;cd=3&amp;ved=0CBYQFjAC&amp;url=http%3A%2F%2Fwww.amazon.com%2FRails-Way-Obie-Fernandez%2Fdp%2F0321445619&amp;ei=V-LwSunCEYeVtgfWib26Cw&amp;usg=AFQjCNGpPcvEJDxIOGEwWZZIp9HXnbPC0A&amp;sig2=0ofdwEJfrMOm7U3bR7c5OQ</p>
<p>The Rails Way Blog therailsway.com</p>
<p>Enumerable Module</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?a=--iD0w0_VHs:fF6OaNZqojI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?a=--iD0w0_VHs:fF6OaNZqojI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?i=--iD0w0_VHs:fF6OaNZqojI:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://peter.fitzgibbons.info/2009/11/chirb-game-of-life-kata/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to build an ActiveRecord Adapter — Part 1 – Initialization</title>
		<link>http://peter.fitzgibbons.info/2009/09/how-to-build-an-activerecord-adapter-part-1-initialization/</link>
		<comments>http://peter.fitzgibbons.info/2009/09/how-to-build-an-activerecord-adapter-part-1-initialization/#comments</comments>
		<pubDate>Thu, 10 Sep 2009 14:54:08 +0000</pubDate>
		<dc:creator>Peter Fitzgibbons</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://peter.fitzgibbons.info/?p=74</guid>
		<description><![CDATA[In this chapter, I&#8217;ll discuss the adapter initialization; how Rails 2.x reads from database.yml and launches the database initialization.
Rails Boot
Here is a condensation of the Rails boot process from Rails Guts.  As Mike Gunderloy suggests, it will be really helpful to have a blank rails app open with
 rake gems:freeze 
invoked :

script/server (vendor/rails/railties/lib/commands/server.rb) requires environment.rb [...]]]></description>
			<content:encoded><![CDATA[<p>In this chapter, I&#8217;ll discuss the adapter initialization; how Rails 2.x reads from database.yml and launches the database initialization.</p>
<h2>Rails Boot</h2>
<p>Here is a condensation of the Rails boot process <a href="http://railsguts.com/initialization.html" target="_self">from Rails Guts</a>.  As Mike Gunderloy suggests, it will be really helpful to have a blank rails app open with</p>
<pre class="brush: ruby;"> rake gems:freeze </pre>
<p>invoked :</p>
<ol>
<li>script/server (vendor/rails/railties/lib/commands/server.rb) requires environment.rb from the local path (./)</li>
<li>in environment.rb
<pre class="brush: ruby;"> Rails::Initializer.run do |config| </pre>
</li>
<li>Initializer.run has a default parameter
<pre class="brush: ruby;"> configuration = Configuration.new </pre>
<p>(that&#8217;s Rails::Configuration in railties/lib/initializer.rb)</li>
<li>Configuration#initialize is long, including
<pre class="brush: ruby;"> self.database_configuration_file = default_database_configuration_file </pre>
</li>
<li>Configuration#default_database_configuration_file is :
<pre class="brush: ruby;">
def default_database_configuration_file
 File.join(root_path, 'config', 'database.yml')
 end
</pre>
</li>
<li>Notice that the default command on Rails::Initializer#run was :process, so Initializer#process is now called, which includes #initialize_database &#8230;
<pre class="brush: ruby;">
def initialize_database
 if configuration.frameworks.include?(:active_record)
 ActiveRecord::Base.configurations = configuration.database_configuration
 ActiveRecord::Base.establish_connection
 end
 end
</pre>
<ol>
<li> Configuration#database_configuration is where the database.yml is loaded and returned to ActiveRecord::Base.configurations :
<pre class="brush: ruby;">
def database_configuration
 require 'erb'
 YAML::load(ERB.new(IO.read(database_configuration_file)).result)
 end
</pre>
</li>
</ol>
</li>
<li>Now were getting somewhere!!  AR::Base#establish_connection(nil) :
<ol>
<li>because the call is with spec = nil, #establish_connection is re-executed with RAILS_ENV</li>
<li>this time through, spec = RAILS_ENV (ie, :development), so #establish_connection is called <em>again</em>, this time with the database.yml hash-key of RAILS_ENV (from Configuration#database_configuration)</li>
<li>3rd time&#8217;s a charm!  Now, with spec set to config hash, require the adapter gem,
<pre class="brush: ruby;"> gem &quot;activerecord-#{spec[:adapter]}-adapter&quot; </pre>
<p>and execute the adapter-method (which is expected to be def&#8217;d from the adapter&#8217;s gem) :</p>
<pre class="brush: ruby;"> adapter_method = &quot;#{spec[:adapter]}_connection&quot; </pre>
</li>
</ol>
</li>
</ol>
<p>The adapter-method is the entry-point of our new adapter, so in my next post I&#8217;ll pick-apart the #establish_connection process and prepare for our multi-connection pooling adapter&#8217;s version.</p>
<pre><tt><tt><tt><tt>

</tt></tt></tt></tt></pre>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?a=uTF5K3OPz4A:eQCdI2tECr8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?a=uTF5K3OPz4A:eQCdI2tECr8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?i=uTF5K3OPz4A:eQCdI2tECr8:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://peter.fitzgibbons.info/2009/09/how-to-build-an-activerecord-adapter-part-1-initialization/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to build an ActiveRecord Adapter — Introduction</title>
		<link>http://peter.fitzgibbons.info/2009/08/how-to-build-an-activerecord-adapter-introduction/</link>
		<comments>http://peter.fitzgibbons.info/2009/08/how-to-build-an-activerecord-adapter-introduction/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 14:18:27 +0000</pubDate>
		<dc:creator>Peter Fitzgibbons</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://peter.fitzgibbons.info/?p=70</guid>
		<description><![CDATA[Well, I don&#8217;t know how many parts this will have&#8230; so lets just say 5 until I re-edit the introduction.
Inspiration and Perspiration
Thomas Edison told us how to invent.  So let&#8217;s get to it.  The Adapter we&#8217;ll build will assist in handling the problem of database-failover in Rails 2.3.2 applications
Inspired &#8211; Seamless Database Pool
Seamless Database Pool [...]]]></description>
			<content:encoded><![CDATA[<p>Well, I don&#8217;t know how many parts this will have&#8230; so lets just say 5 until I re-edit the introduction.</p>
<h2>Inspiration and Perspiration</h2>
<p>Thomas Edison told us how to invent.  So let&#8217;s get to it.  The Adapter we&#8217;ll build will assist in handling the problem of database-failover in Rails 2.3.2 applications</p>
<h3>Inspired &#8211; Seamless Database Pool</h3>
<p><a href="http://rubyforge.org/projects/seamlessdbpool/">Seamless Database Pool</a> gem provides us with a template to follow.  The SDP is focused purely on connection logic.  The true db adapter is used within the pool connections.  Our Adapter, like SDP, will simply serve as a proxy to handle the event when an ActiveRecord method (#select, #create, #update, #delete) encounters a DatabaseConnectionError.</p>
<h3>Perspired &#8211; Activerecord Failover Adapter</h3>
<p>Ok, we&#8217;re going to have to work for it this time.  Event though we have SDP as a template, there is A LOT of logic in there that is really not useful to us.  SDP is a load-balancing pool based upon a weighted one-write/many-read database cluster / replication group.</p>
<h3>Requirements</h3>
<p>Ahh, the real meat of our cookout.</p>
<ol>
<li>Configure Master + Slaves(multiple) in database.yml just like SDP</li>
<li>Use Master Always.  Well, until failover.</li>
<li>Use periodic timeouts to attempt re-connect to master</li>
<li>Retry db queries on alternate connection</li>
<li>Rollback transactions upon connection failure&#8230; then retry them?
<ol>
<li>Re-try the transaction in the alternate connection</li>
</ol>
</li>
<li>Allow #establish_connection to target master/slave (especially needed for targeted migrations)</li>
<li>Allow db:migrate to target master/slave through use of RAILS_ENV</li>
</ol>
<p>In my next post, we&#8217;ll start with #1 Configure Master + Slavees in database.yml</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?a=oEqJiU3dWPY:7Ow7YEEySu8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?a=oEqJiU3dWPY:7Ow7YEEySu8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?i=oEqJiU3dWPY:7Ow7YEEySu8:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://peter.fitzgibbons.info/2009/08/how-to-build-an-activerecord-adapter-introduction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ruby / Rails Continuous Integration w/ Cerberus + Git + SSH + OSX + ruby-switcher</title>
		<link>http://peter.fitzgibbons.info/2009/06/ruby-rails-continuous-integration-w-cerberus-git-ssh-osx-ruby-switcher/</link>
		<comments>http://peter.fitzgibbons.info/2009/06/ruby-rails-continuous-integration-w-cerberus-git-ssh-osx-ruby-switcher/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 16:31:34 +0000</pubDate>
		<dc:creator>Peter Fitzgibbons</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[CI]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[multi]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ssh]]></category>

		<guid isPermaLink="false">http://peter.fitzgibbons.info/?p=63</guid>
		<description><![CDATA[I recently completed configuration of continuous-integration between two servers.
Here&#8217;s the steps and notes that I have for the move.
System Layout
The system of servers/services comes together like this :
Git / Redmine
Git and Redmine run on server &#8216;redmine-server&#8217;, which is a CentOS 5 Intel box.  OpenSSH is installed, Redmine runs on Ruby 1.8.7, yum package install.
User on [...]]]></description>
			<content:encoded><![CDATA[<p>I recently completed configuration of continuous-integration between two servers.</p>
<p>Here&#8217;s the steps and notes that I have for the move.</p>
<h2>System Layout</h2>
<p>The system of servers/services comes together like this :</p>
<h3>Git / Redmine</h3>
<p>Git and Redmine run on server &#8216;redmine-server&#8217;, which is a CentOS 5 Intel box.  OpenSSH is installed, Redmine runs on Ruby 1.8.7, yum package install.<br />
User on this server is &#8216;git&#8217;</p>
<h3>Cerberus continuous integration</h3>
<p>Cerberus runs on an OSX box named &#8216;ci-server&#8217;, Leopard.<br />
Ruby on this box is installed using <a href="http://github.com/relevance/etc/blob/c0f4ad613c208eb80a239e1c986ecc9e29aa1d9e/bash/ruby_switcher.sh">ruby-switcher</a>, with 1.8.7p173 and 1.9.1p129r23412.<br />
My customization of that ruby-switcher is here <a href="http://peter.fitzgibbons.info/wp-content/uploads/2009/06/ruby_switcher.sh">ruby_switcher.sh</a>.<br />
User on this server is &#8216;cerberus&#8217;</p>
<h2>SSH setup Git -&gt; Cerberus</h2>
<p>The Git repository lives on a different server, so SSH is employed to protect passwords-cleartext over the wire.</p>
<p>There is an additional constraint in that Git hooks are &#8220;non-interactive&#8221;, so ssh keys must be configured to not challenge.  There are [security implications] to this.  The option I have chosen is passwordless &#8220;backup keys&#8221; for specific purposes.</p>
<pre>git@redmine-server $ ssh-keygen -t rsa -C git_ci_server@redmine_server
Generating public/private rsa key pair.
Enter file in which to save the key (/home/git/.ssh/id_rsa): \
  .ssh/id_rsa_git_ci_server
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in .ssh/id_rsa_git_ci_server.
Your public key has been saved in .ssh/id_rsa_git_ci_server.pub.
The key fingerprint is:
42:62:16:4c:00:74:7c:a9:96:90:5a:75:5d:08:c5:f9 git_ci_server@redmine_server</pre>
<p>Move the key to the target server ci-server</p>
<pre>[git@redmine-server]$ scp .ssh/id_rsa_git_ci_server.pub \
  cerberus@ci-server:id_rsa_git_ci_server.redmine-server</pre>
<pre>Password:</pre>
<pre>id_rsa_git_ci_server.pub                     100%  410     0.4KB/s   00:00</pre>
<pre>[git@redmine-server]$ ssh deployer@web-ci
Password:</pre>
<pre>Last login: Mon Jun 15 09:20:00 2009 from redmine-server

[cerberus@ci-server]$ cat id_rsa_git_ci_server.redmine-server
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAtOVHRlhLmUI/9XglQs6u9F1reUwAq2U0clJI2l
j5kAX5XkVW7FoiiGo4BfAqP3j69ynMBnLx/eUtcYcxHUKZfikwQbXnUdAUd8mIXoNhOfVZ/gqr
i0yS0XHpkGU2lJve3soqEIyYu2gxf5QPP18ibJeyFZ5QRTPUATfi1c6Pb12tsr4O9H+b5T08cU
ejvQP5ISyYH3ysPZwLQ3d1Ods9ZItm7h9/eoZQxgXpVLxUkQ3NO+JoktKlruGajTRgm5xP7NBd
gUZsC2vs84/mW64RWSzbl8fA5oKUhKQIDt7QSOGx2UVGYAoarFGTsvps5g9WnXTJ37XRT+ORHI
cpmO90mQ== git_ci_server@redmine_server
[cerberus@ci-server]$ cat id_rsa_git_ci_server.redmine-server &gt;&gt; .ssh/authorized_keys
[cerberus@ci-server]$ exit</pre>
<h4>SSH Backup-Key</h4>
<p>From &#8216;man ssh&#8217; :</p>
<pre> -i identity_file
    Selects a file from which the identity (private key) for RSA or DSA authentication is read.  The default is
    ~/.ssh/identity for protocol version 1, and ~/.ssh/id_rsa and ~/.ssh/id_dsa for protocol version 2.  Identity files
    may also be specified on a per-host basis in the configuration file.  It is possible to have multiple -i options
    (and multiple identities specified in configuration files).</pre>
<p>This Git server does not have ssh-agent running, so using -i will cause the indicated file to be the <em>only</em> identity used in the ssh session.</p>
<p>Now test the login using the backup-key switch of &#8217;ssh&#8217;</p>
<pre>[git@redmine-server]$ ssh -i .ssh/id_rsa_git_ci_server cerberus@ci-server
Last login: Mon Jun 15 10:53:38 2009 from redmine-server
[cerberus@ci-server]$</pre>
<p>The backup-key switch will be used in the Git post-receive hook for executing Cerberus build upon Git Push</p>
<h3>Git Post-Receive</h3>
<p>Simple.  Use ssh to call a build script on ci-server, which we&#8217;ll build after the break&#8230;</p>
<pre>#!/bin/sh
#
# An example hook script for the post-receive event
#
# This script is run after receive-pack has accepted a pack and the
# repository has been updated.  It is passed arguments in through stdin
# in the form
#  &lt;oldrev&gt; &lt;newrev&gt; &lt;refname&gt;
# For example:
#  aa453216d1b3e49e7f6f98441fa56946ddcd6a20 68f7abf4e6f922807889f52bc043ecd31b79f814 refs/heads/master
#
# see contrib/hooks/ for an sample, or uncomment the next line (on debian)
#

ssh -i ~/.ssh/id_rsa_git_ci_server cerberus@ci-server \
 bin/cerberus-build racc-webapp</pre>
<p>NOTE: the use of the -i switch</p>
<p>This hook is applied to each repository that will be monitored by Cerberus Continuous Integration.  It must be made executable so Git will execute it!</p>
<pre>[git@redmine-server]$ cp post-receieve repos/my_app/.git/hooks/post-receive
[git@redmine-server]$ chmod +x repos/my_app/.git/hooks/post-receive</pre>
<h2>Cerberus configuration</h2>
<p>Using the ruby-switcher, install the ruby of your choice (&#8217;install_ruby_187p173&#8242;).  The use it (&#8217;use_ruby_187&#8242;).</p>
<p>Install cerberus gem (note we are using local gem storage to accomodate ruby-switcher):</p>
<pre>[cerberus@ci-server]$ gem install cerberus</pre>
<p>Configure cerberus globals, especially email server config (for SMTP send).</p>
<p>I also configured the builder/rake to handle new migrations (Rails 2.3) and Rspec (rake spec)</p>
<pre>[cerberus@ci-server]$ cat .cerberus/config.yml
publisher:
#  active: mail jabber rss campfire
  mail:
    address: smtp.test.com
    port: 25
    domain: test.com
    authentication: :none
    sender: Cerberus CI &lt;cerberus@test.com&gt;
#    address: smtp.gmail.com
#    port: 587
#    domain: gmail.com
#    authentication: plain
#    user_name: someuser
#    password: somepassword
#    on_event: all
#  jabber:
#    jid: somemailbox@gmail.com/cerberus
#    password: somepassword
#  twitter:
#    login: twitter_username
#    password: twitter_password
#  irc:
#    nick: cerb
#    server: irc.freenode.net
#    channel: cerberus
#  campfire:
#    url: http://someemail:password@cerberustool.campfirenow.com/room/51660
#  rss:
#    file: /usr/www/rss.xml
builder:
  rake:
    task: db:migrate spec
#changeset_url: POINT_TO_YOUR_TRAC/changeset/
#hook:
#  rcov:
#    on_event: successful, setup #by default - run hook for any state
#    action: 'export CERBERUS_HOME=/home/anatol &amp;&amp; sudo chown www-data -R /home/anatol/cerberus &amp;&amp; rcov' #Add here any hook you want</pre>
<p>Configure the cerberus project. Note how the config points back to the repository</p>
<pre>[cerberus@ci-server]$ cerberus add git@redmine-server:my_app/.git \
  APPLICATION_NAME=my-app SCM=git</pre>
<p>Edit the configuration of the project to add project-level mailing addresses.  The BUILD WILL FAIL WITHOUT THIS!!!</p>
<pre>[cerberus@ci-server]$ cat .cerberus/config/my-app.yml
---
publisher:
  mail:
    recipients: someuser@test.com
scm:
  url: git@redmine-server:repos/my_app/.git
  type: git</pre>
<p>An initial build &#8216;cerberus build my-app&#8217; is required to set the sources.  This one will likely fail, as it is necessary to configure non-SCM files like &#8216;database.yml&#8217;.</p>
<p>You should receive email from &#8220;Cerberus CI&#8221; declaring your failure.</p>
<p>You have completed config.  Now FIX YOUR BROKEN CHECKIN FTW!!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?a=kHbcuPGFnQw:l_SZw2P6g-A:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?a=kHbcuPGFnQw:l_SZw2P6g-A:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?i=kHbcuPGFnQw:l_SZw2P6g-A:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://peter.fitzgibbons.info/2009/06/ruby-rails-continuous-integration-w-cerberus-git-ssh-osx-ruby-switcher/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tic Tac Toe 2 – Initial code and story-driven class.</title>
		<link>http://peter.fitzgibbons.info/2009/03/tic-tac-toe-2-initial-code-and-story-driven-class/</link>
		<comments>http://peter.fitzgibbons.info/2009/03/tic-tac-toe-2-initial-code-and-story-driven-class/#comments</comments>
		<pubDate>Thu, 19 Mar 2009 02:30:42 +0000</pubDate>
		<dc:creator>Peter Fitzgibbons</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[kata]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://peter.fitzgibbons.info/?p=55</guid>
		<description><![CDATA[Episode 2: Using the story from the ground up.
I could go into great detail&#8230; but I&#8217;m beat.  Creating the dev environment from the ground up was a lot of work.  I also needed to get some project details under way.
Here is what I needed to get Features and Specs to load up the library properly
Cucumber
Create [...]]]></description>
			<content:encoded><![CDATA[<h3>Episode 2: Using the story from the ground up.</h3>
<p>I could go into great detail&#8230; but I&#8217;m beat.  Creating the dev environment from the ground up was a lot of work.  I also needed to get some project details under way.</p>
<p>Here is what I needed to get Features and Specs to load up the library properly</p>
<h3>Cucumber</h3>
<p>Create a <a href="http://wiki.github.com/aslakhellesoy/cucumber/cucumberyml">cucumber.yml</a>.  This is necessary to set the default profile, which I wanted to get a little more pretty printing during the <em>cucumber</em> command.</p>
<p>In a step definition (grid_steps.rb), I needed the $LOAD_PATH to point to the lib, so I added the following to the top of support/env.rb</p>
<pre>$:.unshift File.expand_path(File.dirname(__FILE__) + "/../../lib")</pre>
<p>Also support RSpec expectations/matchers within the steps, so</p>
<pre>require 'spec/expectations'</pre>
<h3>RSpec</h3>
<p>Update the $LOAD_PATH here from a different location in the tree than features, from <em>./spec</em></p>
<pre>$:.unshift File.expand_path(File.dirname(__FILE__) + "/../lib")</pre>
<h3>Autotest integration</h3>
<p>In order to get cucumber integrated with autotest, add this to <em>cucumber.yml</em></p>
<pre>autotest: --format pretty features
autotest-all: --format pretty features</pre>
<p>Also <em>autospec</em> requires an environment switch, which I have added to <em>./bashrc</em> for convenience</p>
<pre>export AUTOFEATURE=true</pre>
<h3>Amber to Red to Green to Amber to Red to Green&#8230;</h3>
<p>With all the prettyness set up with cucumber and RSpec, we now have a new color in the Red-Green cycle.</p>
<p>Cucumber Features&#8217; Given/When/Then lines are displayed in Amber until each is properly trapped by a defined Given/When/Then in a steps definition file (./features/step_definitions/*.rb).</p>
<p>RSpec specs are displayed in amber if the spec is not defined (name only) like this</p>
<pre>it "this spec is not defined yet"</pre>
<p>Well, that&#8217;s about all I can handle for now.</p>
<p>I will make an attempt to trap the Amber-Red-Green cycle in git commits during my work tomorrow.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?a=gUcv7v7n7c8:FJyG8XBT2C0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?a=gUcv7v7n7c8:FJyG8XBT2C0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?i=gUcv7v7n7c8:FJyG8XBT2C0:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://peter.fitzgibbons.info/2009/03/tic-tac-toe-2-initial-code-and-story-driven-class/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TicTacToe 1- Dev Environment</title>
		<link>http://peter.fitzgibbons.info/2009/03/tictactoe-1-dev-environment/</link>
		<comments>http://peter.fitzgibbons.info/2009/03/tictactoe-1-dev-environment/#comments</comments>
		<pubDate>Wed, 18 Mar 2009 03:20:44 +0000</pubDate>
		<dc:creator>Peter Fitzgibbons</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[kata]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://peter.fitzgibbons.info/?p=51</guid>
		<description><![CDATA[Here&#8217;s the entirement development environment for TicTacToe.  This was actually rebuilt for this project as I deleted my last dev environment (A VirtualBox instance) during a system-repair process (wipe-drive-reinstall of Vista  

Ubuntu 8.10 Desktop as VirtualBox Guest on Vista Home Premium on Compaq C771.  NAT, 1gb ram, 16gb vhd, shared folders
Ruby 1.8 + dependencies [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s the entirement development environment for TicTacToe.  This was actually rebuilt for this project as I deleted my last dev environment (A VirtualBox instance) during a system-repair process (wipe-drive-reinstall of Vista <img src='http://peter.fitzgibbons.info/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<ul>
<li>Ubuntu 8.10 Desktop as VirtualBox Guest on Vista Home Premium on Compaq C771.  NAT, 1gb ram, 16gb vhd, shared folders</li>
<li>Ruby 1.8 + dependencies from Apt</li>
<li>Rubygems 1.3.1 installed from .tgz (Ubuntu 8.10 has trouble with Apt&#8217;s rubygems install)</li>
<li>Rails, RSpec, RSpec-Rails, Cucumber gems installed</li>
<li>NetBeans 6.5.1 / All Modules.  NBGit installed for Git integration.</li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?a=sigOLUkqjbg:NbD4rDl1ics:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?a=sigOLUkqjbg:NbD4rDl1ics:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/PeterJFitzgibbons-Blog?i=sigOLUkqjbg:NbD4rDl1ics:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://peter.fitzgibbons.info/2009/03/tictactoe-1-dev-environment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
