<?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>class BrianYamabe extends Journeyman implements SoftwareDeveloper {</title>
	<atom:link href="http://brianyamabe.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://brianyamabe.com</link>
	<description>public Blog documentDevelopment(Passion passion) {</description>
	<lastBuildDate>Mon, 01 Mar 2010 17:24:03 +0000</lastBuildDate>
	
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Cwirla goes Worldwide</title>
		<link>http://brianyamabe.com/2010/03/01/cwirla-goes-worldwide/</link>
		<comments>http://brianyamabe.com/2010/03/01/cwirla-goes-worldwide/#comments</comments>
		<pubDate>Mon, 01 Mar 2010 17:24:02 +0000</pubDate>
		<dc:creator>byamabe</dc:creator>
				<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://brianyamabe.com/?p=59</guid>
		<description><![CDATA[What follows are the download statistics for the first full week that &#8220;Cwirla&#8221; was available. I have no idea what they mean. I&#8217;m just surprised that France and China were 2nd and 3rd in downloads.






  


    Title
    

      Units
    

 [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>What follows are the download statistics for the first full week that &#8220;<a href="http://yamabe.net/2010/02/22/the-cwirla-iphone-app/">Cwirla</a>&#8221; was available. I have no idea what they mean. I&#8217;m just surprised that France and China were 2nd and 3rd in downloads.
</p>
<table border="0" cellspacing="0" cellpadding="0" class="ta1">
<colgroup>
<col width="99"/>
<col width="99"/>
<col width="99"/>
  </colgroup>
<tr class="ro1">
<td class="Default">
    Title
    </td>
<td class="Default">
      Units
    </td>
<td class="Default">
      Country Code
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      46
    </td>
<td class="ce1">
      US
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      37
    </td>
<td class="ce1">
      FR
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      36
    </td>
<td class="ce1">
      CN
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      22
    </td>
<td class="ce1">
      IT
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      22
    </td>
<td class="ce1">
      BR
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      12
    </td>
<td class="ce1">
      GB
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      9
    </td>
<td class="ce1">
      CA
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      8
    </td>
<td class="ce1">
      DE
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      7
    </td>
<td class="ce1">
      IN
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      7
    </td>
<td class="ce1">
      AU
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      6
    </td>
<td class="ce1">
      MX
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      5
    </td>
<td class="ce1">
      ZA
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      5
    </td>
<td class="ce1">
      PH
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      5
    </td>
<td class="ce1">
      KR
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      4
    </td>
<td class="ce1">
      ES
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      4
    </td>
<td class="ce1">
      JP
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      3
    </td>
<td class="ce1">
      AT
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      3
    </td>
<td class="ce1">
      IL
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      3
    </td>
<td class="ce1">
      TR
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      2
    </td>
<td class="ce1">
      NL
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      2
    </td>
<td class="ce1">
      BE
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      2
    </td>
<td class="ce1">
      CL
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      2
    </td>
<td class="ce1">
      SE
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla Blue
    </td>
<td class="Default">
      2
    </td>
<td class="ce1">
      US
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      2
    </td>
<td class="ce1">
      MY
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      2
    </td>
<td class="ce1">
      TH
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      1
    </td>
<td class="ce1">
      SA
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      1
    </td>
<td class="ce1">
      CH
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      1
    </td>
<td class="ce1">
      RU
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      1
    </td>
<td class="ce1">
      KW
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      1
    </td>
<td class="ce1">
      AR
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      1
    </td>
<td class="ce1">
      TW
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      1
    </td>
<td class="ce1">
      LU
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      1
    </td>
<td class="ce1">
      DK
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      1
    </td>
<td class="ce1">
      SG
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      1
    </td>
<td class="ce1">
      NO
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      1
    </td>
<td class="ce1">
      AE
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      1
    </td>
<td class="ce1">
      HK
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      1
    </td>
<td class="ce1">
      ID
    </td>
</tr>
<tr class="ro1">
<td class="Default">
      Cwirla
    </td>
<td class="Default">
      1
    </td>
<td class="ce1">
      EG
    </td>
</tr>
<tr class="ro1">
<td class="Default"></td>
<td class="Default">272
    </td>
<td class="Default"></td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://brianyamabe.com/2010/03/01/cwirla-goes-worldwide/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Cwirla iPhone App</title>
		<link>http://brianyamabe.com/2010/02/22/the-cwirla-iphone-app/</link>
		<comments>http://brianyamabe.com/2010/02/22/the-cwirla-iphone-app/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 22:55:50 +0000</pubDate>
		<dc:creator>byamabe</dc:creator>
				<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://brianyamabe.com/?p=53</guid>
		<description><![CDATA[I received approval last Friday evening for my first two iPhone Applications (they work on the iPod Touch and should work on the iPad when it is released). The inspiration for the Apps came from Pastor Todd Wilken when, after discussing the video I made &#8220;There&#8217;s a Pastor for That&#8220;, wished for a &#8220;Cwirla App&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>I received approval last Friday evening for my first two iPhone Applications (they work on the iPod Touch and should work on the iPad when it is released). The inspiration for the Apps came from Pastor Todd Wilken when, after discussing the video I made &#8220;<a href="http://yamabe.net/2009/10/24/issues-etc-promo-video-theres-a-pastor-for-that/">There&#8217;s a Pastor for That</a>&#8220;, <a href="http://issuesetc.org/?p=717">wished for a &#8220;Cwirla App&#8221;</a> for his iPod Touch. Well, I couldn&#8217;t resist the inspiration and put together the Cwirla app which is available in two versions. <a href="http://itunes.apple.com/us/app/cwirla/id356726990?mt=8">The free version <img src="http://yamabe.net/wp-content/uploads/2010/02/cwirla-icon.png" alt="cwirla-icon.png" border="0" width="57" height="57" /></a> is a collection of wisdom from Pastor Cwirla excerpted from episodes of <a href="http://godwhisperers.org">The God Whisperers</a>. The <a href="http://itunes.apple.com/us/app/cwirla-blue/id356730400?mt=8%20#iTunes">$0.99 &#8220;blue&#8221; version <img src="http://yamabe.net/wp-content/uploads/2010/02/cwirla-blue-icon.png" alt="cwirla-blue-icon.png" border="0" width="57" height="57" /></a> includes the same excerpts, plus it includes the story about Pastor Cwirla&#8217;s confirmation class which includes some &#8220;home schooler alert&#8221; language. It also includes some risque quotes if you &#8220;shake&#8221; Pastor Cwirla. All proceeds will go to the God Whisperers coffers.</p>
]]></content:encoded>
			<wfw:commentRss>http://brianyamabe.com/2010/02/22/the-cwirla-iphone-app/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Clock is Ticking</title>
		<link>http://brianyamabe.com/2010/02/18/the-clock-is-ticking/</link>
		<comments>http://brianyamabe.com/2010/02/18/the-clock-is-ticking/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 18:08:40 +0000</pubDate>
		<dc:creator>byamabe</dc:creator>
				<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://brianyamabe.com/?p=47</guid>
		<description><![CDATA[My urge to try a new kind of development got to me again and I&#8217;ve jumped on the iPhone development bandwagon. The nice thing about iPhone development is that the definition of a proper application is a lot more basic than a web or desktop application. I started my dive into iPhone development last week [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>My urge to try a new kind of development got to me again and I&#8217;ve jumped on the iPhone development bandwagon. The nice thing about iPhone development is that the definition of a proper application is a lot more basic than a web or desktop application. I started my dive into iPhone development last week with <a href="http://www.amazon.com/gp/product/1430224592?ie=UTF8&amp;tag=yamabe-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1430224592">Beginning iPhone 3 Development</a>. I put together my first app and submitted it for app store approval yesterday. I&#8217;ll put together a proper announcement after it has been approved and I&#8217;ll also do a series on the development and submission process.</p>
<div class="posttagsblock"><a href="http://technorati.com/tag/iPhone" rel="tag">iPhone</a></div>
]]></content:encoded>
			<wfw:commentRss>http://brianyamabe.com/2010/02/18/the-clock-is-ticking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Python vs. Ruby</title>
		<link>http://brianyamabe.com/2010/02/17/python-vs-ruby/</link>
		<comments>http://brianyamabe.com/2010/02/17/python-vs-ruby/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 15:11:51 +0000</pubDate>
		<dc:creator>byamabe</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://brianyamabe.com/?p=45</guid>
		<description><![CDATA[I found this really enlightening post and presentation on Python vs. Ruby from a Python guy, Gary Bernhardt. Gary first talks about some features of Ruby that violate the &#8220;Zen of Python.&#8221; He only presents 5 violations, but you can see for yourself that Ruby does violates most of this &#8220;Zen.&#8221; Then Gary goes on [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>I found this really <a href="http://blog.extracheese.org/2010/02/python-vs-ruby-a-battle-to-the-death.html">enlightening post</a> and <a href="http://vimeo.com/9471538">presentation</a> on Python vs. Ruby from a Python guy, Gary Bernhardt. Gary first talks about some features of Ruby that violate the &#8220;<a href="http://www.python.org/dev/peps/pep-0020/">Zen of Python</a>.&#8221; He only presents 5 violations, but you can see for yourself that Ruby does violates most of this &#8220;Zen.&#8221; Then Gary goes on to discuss he likes about Ruby, namely RSpec and Cucumber. Then he points out that these cool packages are possible because Ruby allows you to violate the &#8220;Zen of Python.&#8221; It is the very thing that he dislikes that makes the things he likes possible!</p>
<p>After watching the presentation, I have pretty much the exact same feelings as the presenter and yet, as of now, I&#8217;d rather work in Ruby. I love the ideals of Python especially &#8220;one obvious way to do it&#8221; which is not at all the case with Ruby. I can&#8217;t stand the idea that a framework is mucking with the base functionality of the language behind my back like Rails does. But these are the very influences that have lead to a Ruby community that focuses on BDD which in practice is what I enjoy.</p>
]]></content:encoded>
			<wfw:commentRss>http://brianyamabe.com/2010/02/17/python-vs-ruby/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Joy of Refactoring in the Green</title>
		<link>http://brianyamabe.com/2010/01/22/the-joy-of-refactoring-in-the-green/</link>
		<comments>http://brianyamabe.com/2010/01/22/the-joy-of-refactoring-in-the-green/#comments</comments>
		<pubDate>Fri, 22 Jan 2010 20:32:02 +0000</pubDate>
		<dc:creator>byamabe</dc:creator>
				<category><![CDATA[BDD/TDD]]></category>
		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://brianyamabe.com/?p=43</guid>
		<description><![CDATA[I was BDDing some code for an idea I had for a Church Year website. I was using RSpec to drive the code that would return the church season based on a date. Some seasons are based on a fixed date, like Christmas, and others are relative to another date, Advent starts 3 weeks before [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>I was BDDing some code for an idea I had for a Church Year website. I was using RSpec to drive the code that would return the church season based on a date. Some seasons are based on a fixed date, like Christmas, and others are relative to another date, Advent starts 3 weeks before the Sunday before Christmas. I didn&#8217;t document all the steps I took to write the code (I&#8217;m thinking of doing this as a kata), but what I wanted to point out was that at one point, I was &#8220;in the Green&#8221; and saw a bunch of duplicate code, ill-named method, and obscure variable names. I started making changes left and right while running the tests after each change and remaining &#8220;in the Green.&#8221; The experience was amazing to say the least. I hadn&#8217;t felt so proud of my code or excited about programming in a long time. I&#8217;ve always intellectually believed in the benefits of BDD, but that was the first time I&#8217;ve felt it emotionally. I can see why some people refuse to work any other way.</p>
<div class="posttagsblock"><a href="http://technorati.com/tag/RSpec" rel="tag">RSpec</a></div>
]]></content:encoded>
			<wfw:commentRss>http://brianyamabe.com/2010/01/22/the-joy-of-refactoring-in-the-green/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Does Anyone Have the Perfect Editor?</title>
		<link>http://brianyamabe.com/2010/01/06/does-anyone-have-the-perfect-editor/</link>
		<comments>http://brianyamabe.com/2010/01/06/does-anyone-have-the-perfect-editor/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 05:58:05 +0000</pubDate>
		<dc:creator>byamabe</dc:creator>
				<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://brianyamabe.com/?p=40</guid>
		<description><![CDATA[MPW, CodeWarrior, Visual Studio, Emacs, XEmacs, vi, NetBeans, Eclipse, TextMate, XMLSpy, NotePad, and any number of editors/IDEs all which I&#8217;ve used to write code. It&#8217;s crazy, but I&#8217;ve gone through more editors than programming languages and I still haven&#8217;t settled on one that makes me really happy. I almost standardized on Emacs, but it was [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>MPW, CodeWarrior, Visual Studio, Emacs, XEmacs, vi, NetBeans, Eclipse, TextMate, XMLSpy, NotePad, and any number of editors/IDEs all which I&#8217;ve used to write code. It&#8217;s crazy, but I&#8217;ve gone through more editors than programming languages and I still haven&#8217;t settled on one that makes me really happy. I almost standardized on Emacs, but it was too much like Linux in that I spent too much time working on it instead of using it. I almost standardized on Eclipse, but that thing is such a memory pig on Windows. I feel like ditching that thing but it&#8217;s the standard at work. I want TextMate&#8217;s simplicity and project-wide find, Emacs&#8217; auto-complete and integrated shell, and Eclipses debugging and refactoring tools.</p>
<p>One of the big things that thwarts my efforts to find a single editor/IDE is that I use Windows at work and a Mac for everything else. If I ever leave my current job, I&#8217;m working somewhere that&#8217;s a Mac shop or is platform agnostic so I can choose a Mac to work on.</p>
<p>What brought this on? I was flirting with Emacs again, did I mention I love the integrated shell? Checked out the Cucumber bundle for TextMate, did I mention I love running tests with command-R? And suffered through a day of 400MB Eclipse taking 10s of seconds to open a JSP, did I mention that Eclipse is a memory pig on Windows?!?!</p>
]]></content:encoded>
			<wfw:commentRss>http://brianyamabe.com/2010/01/06/does-anyone-have-the-perfect-editor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ADD or a Better Way?</title>
		<link>http://brianyamabe.com/2010/01/01/add-or-a-better-way/</link>
		<comments>http://brianyamabe.com/2010/01/01/add-or-a-better-way/#comments</comments>
		<pubDate>Sat, 02 Jan 2010 04:54:45 +0000</pubDate>
		<dc:creator>byamabe</dc:creator>
				<category><![CDATA[BDD/TDD]]></category>
		<category><![CDATA[Law And Gospel]]></category>
		<category><![CDATA[Rails]]></category>

		<guid isPermaLink="false">http://brianyamabe.com/?p=38</guid>
		<description><![CDATA[I&#8217;ve done it again and decided to change the technology I&#8217;m going to use to build LaG. Some my attribute this to technological ADD which I freely admit to, but this time I believe my reasons are substantive.
Uncertain Future of App Engine Patch
I was pretty excited about being able to use Django on Google App [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>I&#8217;ve done it again and decided to change the technology I&#8217;m going to use to build LaG. Some my attribute this to technological ADD which I freely admit to, but this time I believe my reasons are substantive.</p>
<p><b>Uncertain Future of App Engine Patch</b></p>
<p>I was pretty excited about being able to use Django on Google App Engine with App Engine Patch. However, in recent weeks I noticed that most of the questions to the mailing list were only responded to by the original poster. I personally experienced this when I had a question about a problem loading fixtures and didn&#8217;t get a single reply. Then a recent thread on the future of App Engine Patch stated that the maintainers were looking into using a new Django-based framework. Well, I&#8217;m just not willing to invest my time in a dead framework. Strike 1.</p>
<p><b>Wary of Google App Engine</b></p>
<p>I&#8217;ve always been concerned about being locked into App Engine, but the lure of hosting that was free to start and could be scaled with usage needs was very attractive. My desire for a solution that is cheap to start and can scale with need is still very high, but I think there are enough ~$20 per month VPS solutions out there that I&#8217;m willing to forgo the $0 starting point for more freedom, control and flexibility. Check Swing.</p>
<p><font face="verdana, arial, helvetica, clean, sans-serif"><span style="border-collapse: collapse; line-height: 12px;"><b>Desire to Focus on Testing and BDD</b></span></font></p>
<p><font face="verdana, arial, helvetica, clean, sans-serif"><span style="border-collapse: collapse; line-height: 12px;">Since I&#8217;m going to be the only QA for LaG (aside from the users <img src='http://brianyamabe.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> , I really want to have as much automated testing in place as I can. Django and Python have plenty of facilities to do unit testing and BDD, but the community as a whole doesn&#8217;t focus much on it and there don&#8217;t seem to be a whole lot of best practices around it. While googling Python BDD, most of the references were to say, &#8220;We can do that with Doctest and py.test,&#8221; but not a whole lot of examples.</span></font></p>
<p><font face="verdana, arial, helvetica, clean, sans-serif"><span style="border-collapse: collapse; line-height: 12px;"><b>Back to the Bad Boy of Software Development</b></span></font></p>
<p><font face="verdana, arial, helvetica, clean, sans-serif"><span style="border-collapse: collapse; line-height: 12px;">Since I was reevaluating my technology choices, I decided to check in on Rails which I hadn&#8217;t looked at in 2+ years. Part of the reason I moved away from the Ruby/Rails scene was that it seemed that things were always changing and not in just subtle ways. I felt like I couldn&#8217;t keep up with all that was going on and wanted more stable, measured approach to my choice of frameworks. Well, things haven&#8217;t changed much. There&#8217;s Rails + Merb = Rails 3, RSpec, Remarkable, Cucumber, etc. all still evolving at fast, if no longer breakneck, speed. But there was still the focus on testing and high quality code. There are also a lot of solutions to help with deployment that didn&#8217;t exist 2+ years ago. So I&#8217;m reacquainting myself with Rails and RSpec and getting an introduction to Cucumber by going through <a href="http://www.amazon.com/gp/product/1934356379?ie=UTF8&amp;tag=yamabe-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=1934356379">The RSpec Book</a> beta. I&#8217;m feeling pretty confident that this will be the technology I stick with, but I&#8217;ve told myself that before. <img src='http://brianyamabe.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </span></font></p>
<div class="posttagsblock"><a href="http://technorati.com/tag/Rails" rel="tag">Rails</a></div>
]]></content:encoded>
			<wfw:commentRss>http://brianyamabe.com/2010/01/01/add-or-a-better-way/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FBML vs iFrame</title>
		<link>http://brianyamabe.com/2009/12/11/fbml-vs-iframe/</link>
		<comments>http://brianyamabe.com/2009/12/11/fbml-vs-iframe/#comments</comments>
		<pubDate>Fri, 11 Dec 2009 20:02:45 +0000</pubDate>
		<dc:creator>byamabe</dc:creator>
				<category><![CDATA[Law And Gospel]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://brianyamabe.com/?p=36</guid>
		<description><![CDATA[I&#8217;ve been working on the HTML and CSS for LaG using Espresso. I first created the markup in a base html file and then I&#8217;ve adding the CSS classes and styles as needed. I&#8217;ve now come to the point where I&#8217;m going to start implementing the UI in the server. The first decision I need [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>I&#8217;ve been working on the HTML and CSS for LaG using <a href="http://macrabbit.com/espresso/">Espresso</a>. I first created the markup in a base html file and then I&#8217;ve adding the CSS classes and styles as needed. I&#8217;ve now come to the point where I&#8217;m going to start implementing the UI in the server. The first decision I need to make is whether to implement the UI using FBML or an iFrame for the FaceBook app.</p>
<p>In a previous application, I used FBML because it was easier to get something that looked like it was integrated with FaceBook. Also, if I recall correctly, it was easier to pass the FaceBook session between server trips. I know I didn&#8217;t explicitly have to add a URL parameter to any of the links I generated to pass it along. I didn&#8217;t look to see if there was a simple solution to this, but I assumed I would need to do something.</p>
<p>Then today I noticed this note in Mafia Wars, &#8220;&#8230; we deployed iframe technology to dramatically speed up the game&#8230;&#8221; Well that kinda sold me. If an iFrame application is faster, that&#8217;s what I&#8217;ll go with. It also allows me to use common JavaScript libraries like jQuery and I&#8217;m less concerned about looking like an integrated application, so that one less reason to go with FBML.</p>
<p>Finally, iFrame development will be a lot easier than FBML because with FBML you have to go through FaceBook servers so the FBML will render. Using an iFrame will allow me to develop LaG as if it is any other web application.</p>
<div class="posttagsblock"><a href="http://technorati.com/tag/Facebook" rel="tag">Facebook</a></div>
]]></content:encoded>
			<wfw:commentRss>http://brianyamabe.com/2009/12/11/fbml-vs-iframe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Just Trying to Test Leads to Cleaner Code</title>
		<link>http://brianyamabe.com/2009/10/27/just-trying-to-test-leads-to-cleaner-code/</link>
		<comments>http://brianyamabe.com/2009/10/27/just-trying-to-test-leads-to-cleaner-code/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 16:45:01 +0000</pubDate>
		<dc:creator>byamabe</dc:creator>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[Google App Engine]]></category>
		<category><![CDATA[Law And Gospel]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://brianyamabe.com/?p=34</guid>
		<description><![CDATA[As I mentioned in my last post, I&#8217;ve been trying to get some unit testing going so that I can keep focused and gain a higher level of comfort with the code I&#8217;m writing. I started by trying move a business method that had crept into the model and put it in its own business [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>As I mentioned in my last post, I&#8217;ve been trying to get some unit testing going so that I can keep focused and gain a higher level of comfort with the code I&#8217;m writing. I started by trying move a business method that had crept into the model and put it in its own business class. To test the new business class I tried to use <a href="http://www.voidspace.org.uk/python/mock/">Mock</a> to imitate the behavior of the data model, but I couldn&#8217;t find a way to get it to mimic the behavior of a Query object which is both indexed and has methods on it. I did learn that Django fixtures were supported by app-engine-patch. In fact, I learned that most of the ./manage.py functionality works. I had incorrectly assumed that app-engine-patch only allowed you run a Django app on App Engine server, not that it could be used like standard Django. After writing a test for the new business class, I created a fixture to support the test. Well, the test kept failing even though it should have passed. I did some digging, and it seems that the models in the fixture that have relationships aren&#8217;t getting loaded. I&#8217;ve got a question out to the list to see if this is actually the case, but I can&#8217;t think of another explanation.</p>
<p>So, I didn&#8217;t actually get any unit tests working, but while writing the test I noticed that there were model classes in my view as well as the database classes in my controller and business logic in my models. So now I&#8217;ve got it all cleaned up and the code appears to be working (no tests though). I keep seeing what kind of tests I can write and maybe someone will fix the problem with models with relationships in fixtures.</p>
]]></content:encoded>
			<wfw:commentRss>http://brianyamabe.com/2009/10/27/just-trying-to-test-leads-to-cleaner-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Refatoring for Unit Testing</title>
		<link>http://brianyamabe.com/2009/10/17/refatoring-for-unit-testing/</link>
		<comments>http://brianyamabe.com/2009/10/17/refatoring-for-unit-testing/#comments</comments>
		<pubDate>Sat, 17 Oct 2009 17:44:43 +0000</pubDate>
		<dc:creator>byamabe</dc:creator>
				<category><![CDATA[Django]]></category>
		<category><![CDATA[Google App Engine]]></category>

		<guid isPermaLink="false">http://brianyamabe.com/?p=32</guid>
		<description><![CDATA[I&#8217;ve been working on LaG for a month or so. Progress has been slow, because I haven&#8217;t set enough short term goals. I really need to get back to my GTD weekly review to prioritize and get to a list of actions for the project.
Most of the work I have done has been to flesh [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>I&#8217;ve been working on LaG for a month or so. Progress has been slow, because I haven&#8217;t set enough short term goals. I really need to get back to my GTD weekly review to prioritize and get to a list of actions for the project.</p>
<p>Most of the work I have done has been to flesh out the data model. I had some basic functionality that I wanted to implement, and then I fleshed out the data model and functionality to support it. The one thing that was nagging me was that there weren&#8217;t any unit tests. I know that unit tests are a good thing. I&#8217;ve even done some TDD/BDD and have been very happy with the results. I&#8217;ve also had the experience where TDD/BDD has made me feel like I wasn&#8217;t actually moving closer to delivering anything of value. I was writing good (in my mind at least) code, but wasn&#8217;t getting closer to end user functionality. I decided that I needed to get some tests written and that it would also help me by focusing me on a task that would move LaG forward.</p>
<p>Part of the reason I had avoided writing tests was that I assumed that <a href="http://code.google.com/p/app-engine-patch/">app-engine-patch</a> didn&#8217;t support the same unit testing that is available in standard Django. Of course it took me all of one Google search to find that I was wrong. So, I fired up ./manage.py test and 26 tests ran and passed . Cool, now I had to add my tests.</p>
<p><b>No Business Logic in model.py</b></p>
<p>I recently read a tweet from UncleBob about isolating 3rd party API&#8217;s. For Django/app-engine-patch, I consider model.py to be owned by the API. It will be very different for each of the implementations and I would like to be able to port the app to a standard Django deployment if GAE is no longer appropriate. I found that some business logic has crept into model.py. The first thing I need to do is to write a test and pull this functionality out of model.py.</p>
<p><b>No db in the Business Layer</b></p>
<p>I also found that some google.appengine.ext.db calls had crept into my business layer. So my next task will be to write a test and remove any db calls from my business layer.</p>
<p>I think my decision to focus on just getting some functionality and database modeling done without testing was appropriate. I wanted to get a feel for what I would be able to do and what the application would feel like. But now, it&#8217;s time for me to clean up the code and get to TDDing. Sometimes l need to just write code to keep myself motivated, and other times I need to be more disciplined and follow a process to gain focus. I&#8217;m not sure the Agile term &#8217;spike&#8217; is exactly write, but that what it feel like to me. A short interval where you experiment and just code, then go back to disciplined development.</p>
]]></content:encoded>
			<wfw:commentRss>http://brianyamabe.com/2009/10/17/refatoring-for-unit-testing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
