<?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>RB design + interactive: San Francisco Bay Area graphic design &#38; web development</title>
	<atom:link href="http://rb-d.com/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://rb-d.com/blog</link>
	<description>RB&#039;s latest updates, tips, freebies and more</description>
	<lastBuildDate>Thu, 10 May 2012 22:27:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Website for Ansa Group</title>
		<link>http://rb-d.com/blog/?p=819</link>
		<comments>http://rb-d.com/blog/?p=819#comments</comments>
		<pubDate>Thu, 10 May 2012 22:27:24 +0000</pubDate>
		<dc:creator>Natasha</dc:creator>
				<category><![CDATA[Latest From RB]]></category>

		<guid isPermaLink="false">http://rb-d.com/blog/?p=819</guid>
		<description><![CDATA[New website for Ansa Group, a global leadership coaching team based in San Francisco, California.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="clear:right; float:right; margin-right:0px; margin-left:10px; margin-top:0px; margin-bottom:10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Frb-d.com%2Fblog%2F%3Fp%3D819"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Frb-d.com%2Fblog%2F%3Fp%3D819&amp;source=kramskaya&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>New website for Ansa Group, a global leadership coaching team based in San Francisco, California.</p>
<p><img title="websites_ansagroup.jpg" src="/blog/wp-content/uploads/2012/websites_ansagroup.jpg" border="0" alt="websites_ansagroup.jpg" width="720" height="503" /></p>
]]></content:encoded>
			<wfw:commentRss>http://rb-d.com/blog/?feed=rss2&amp;p=819</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>We&#8217;ve moved!</title>
		<link>http://rb-d.com/blog/?p=817</link>
		<comments>http://rb-d.com/blog/?p=817#comments</comments>
		<pubDate>Fri, 20 Apr 2012 20:32:15 +0000</pubDate>
		<dc:creator>Natasha</dc:creator>
				<category><![CDATA[Latest From RB]]></category>

		<guid isPermaLink="false">http://rb-d.com/blog/?p=817</guid>
		<description><![CDATA[We are back to San Francisco downtown, and our new phone number is 415.418.9018.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="clear:right; float:right; margin-right:0px; margin-left:10px; margin-top:0px; margin-bottom:10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Frb-d.com%2Fblog%2F%3Fp%3D817"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Frb-d.com%2Fblog%2F%3Fp%3D817&amp;source=kramskaya&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>We are back to San Francisco downtown, and our new phone number is 415.418.9018.</p>
]]></content:encoded>
			<wfw:commentRss>http://rb-d.com/blog/?feed=rss2&amp;p=817</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8230;and we&#8217;re now on Veer, too!</title>
		<link>http://rb-d.com/blog/?p=810</link>
		<comments>http://rb-d.com/blog/?p=810#comments</comments>
		<pubDate>Fri, 27 Jan 2012 20:26:40 +0000</pubDate>
		<dc:creator>Natasha</dc:creator>
				<category><![CDATA[Latest From RB]]></category>

		<guid isPermaLink="false">http://rb-d.com/blog/?p=810</guid>
		<description><![CDATA[In addition to iStock, our photos can now be found on Veer.com.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="clear:right; float:right; margin-right:0px; margin-left:10px; margin-top:0px; margin-bottom:10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Frb-d.com%2Fblog%2F%3Fp%3D810"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Frb-d.com%2Fblog%2F%3Fp%3D810&amp;source=kramskaya&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>In addition to iStock, our photos can now be found on Veer.com.</p>
<p><img title="3788617_P_fresh_strawberries_in_hands.jpeg" src="/blog/wp-content/uploads/2012/3788617_P_fresh_strawberries_in_hands.jpeg" border="0" alt="3788617_P_fresh_strawberries_in_hands.jpeg" width="400" height="261" /></p>
]]></content:encoded>
			<wfw:commentRss>http://rb-d.com/blog/?feed=rss2&amp;p=810</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Official iStock photographers&#8230;</title>
		<link>http://rb-d.com/blog/?p=803</link>
		<comments>http://rb-d.com/blog/?p=803#comments</comments>
		<pubDate>Wed, 18 Jan 2012 18:27:05 +0000</pubDate>
		<dc:creator>Natasha</dc:creator>
				<category><![CDATA[Latest From RB]]></category>

		<guid isPermaLink="false">http://rb-d.com/blog/?p=803</guid>
		<description><![CDATA[It&#8217;s official! Our work is now on iStockphoto. Woo-hoo!]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="clear:right; float:right; margin-right:0px; margin-left:10px; margin-top:0px; margin-bottom:10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Frb-d.com%2Fblog%2F%3Fp%3D803"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Frb-d.com%2Fblog%2F%3Fp%3D803&amp;source=kramskaya&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>It&#8217;s official! Our work is now on iStockphoto. Woo-hoo!</p>
<p><a href="http://www.istockphoto.com/stock-photo-18955755-hello-my-name-is.php" target="_blank"><img title="stock_photo_18955755_hello_my_name_is.jpeg" src="/blog/wp-content/uploads/2012/stock_photo_18955755_hello_my_name_is.jpeg" border="0" alt="stock_photo_18955755_hello_my_name_is.jpeg" width="380" height="268" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://rb-d.com/blog/?feed=rss2&amp;p=803</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Website for CRMantra</title>
		<link>http://rb-d.com/blog/?p=801</link>
		<comments>http://rb-d.com/blog/?p=801#comments</comments>
		<pubDate>Wed, 14 Dec 2011 22:12:26 +0000</pubDate>
		<dc:creator>Natasha</dc:creator>
				<category><![CDATA[Latest From RB]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[interactive]]></category>
		<category><![CDATA[multipage]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[slideshow]]></category>
		<category><![CDATA[website]]></category>

		<guid isPermaLink="false">http://rb-d.com/blog/?p=801</guid>
		<description><![CDATA[A new website for CRMantra, customer relationship management solutions provider from Emeryville, California.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="clear:right; float:right; margin-right:0px; margin-left:10px; margin-top:0px; margin-bottom:10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Frb-d.com%2Fblog%2F%3Fp%3D801"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Frb-d.com%2Fblog%2F%3Fp%3D801&amp;source=kramskaya&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>A new website for CRMantra, customer relationship management solutions provider from Emeryville, California.</p>
<p><img title="websites_crmantra.jpg" src="/blog/wp-content/uploads/2011/websites_crmantra.jpg" border="0" alt="websites_crmantra.jpg" width="717" height="543" /></p>
]]></content:encoded>
			<wfw:commentRss>http://rb-d.com/blog/?feed=rss2&amp;p=801</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Assy® Screws by Würth</title>
		<link>http://rb-d.com/blog/?p=781</link>
		<comments>http://rb-d.com/blog/?p=781#comments</comments>
		<pubDate>Wed, 23 Nov 2011 22:16:47 +0000</pubDate>
		<dc:creator>Natasha</dc:creator>
				<category><![CDATA[Absurdities]]></category>

		<guid isPermaLink="false">http://rb-d.com/blog/?p=781</guid>
		<description><![CDATA[These are the most amazing quality screws we&#8217;ve seen. Made by a German manufacturer, these screws have a special tip so there in no need to drill pilot holes. But look at the name on the box! Assy — &#8216;nuf said! :))]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="clear:right; float:right; margin-right:0px; margin-left:10px; margin-top:0px; margin-bottom:10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Frb-d.com%2Fblog%2F%3Fp%3D781"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Frb-d.com%2Fblog%2F%3Fp%3D781&amp;source=kramskaya&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>These are the most amazing quality screws we&#8217;ve seen. Made by a <a href="http://www.wuerth.com/web/de/wuerthcom/unternehmen/fhrungsgremien/stiftungsaufsichtsrat/reinholdwrth/innovationen/innovationen_1.php" target="_blank">German manufacturer</a>, these screws have a special tip so there in no need to drill pilot holes. But look at the name on the box! Assy — &#8216;nuf said! :))</p>
<p><img title="assy_screws.jpg" src="/blog/wp-content/uploads/2011/assy_screws.jpg" border="0" alt="assy_screws.jpg" width="520" height="392" /></p>
]]></content:encoded>
			<wfw:commentRss>http://rb-d.com/blog/?feed=rss2&amp;p=781</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fundamental issues&#8230;</title>
		<link>http://rb-d.com/blog/?p=787</link>
		<comments>http://rb-d.com/blog/?p=787#comments</comments>
		<pubDate>Wed, 23 Nov 2011 16:47:58 +0000</pubDate>
		<dc:creator>Natasha</dc:creator>
				<category><![CDATA[Absurdities]]></category>

		<guid isPermaLink="false">http://rb-d.com/blog/?p=787</guid>
		<description><![CDATA[About a year ago, we received an email from a potential client: “I need help with my project. Attached is a sample image, please send it back with following changes (specified). Also, send me your best quote for the entire project.” designer: We don’t provide free work, but please see attached examples of similar work [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="clear:right; float:right; margin-right:0px; margin-left:10px; margin-top:0px; margin-bottom:10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Frb-d.com%2Fblog%2F%3Fp%3D787"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Frb-d.com%2Fblog%2F%3Fp%3D787&amp;source=kramskaya&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>About a year ago, we received an email from a potential client:<br />
“I need help with my project. Attached is a sample image, please send it back with following changes (specified). Also, send me your best quote for the entire project.”</p>
<p>designer:<br />
We don’t provide free work, but please see attached examples of similar work we did (sent a whole bunch of similar examples). Here is more about our process (our rates, contract-based, deposit required, all standard stuff outlined). And, here is a project quote.</p>
<p>client:<br />
“Thanks. I&#8217;ll call you this afternoon or tomorrow to talk more about work involved.”</p>
<p>designer:<br />
Waiting for a call&#8230;</p>
<p>client: (about a week later)<br />
“I’m sorry I haven’t called you! I’ll call you to discuss and move with this soon. Sorry for the delay and speak soon.”</p>
<p>designer:<br />
No problem. We’ll be here!</p>
<p>client: (2 months later)<br />
“I have some more time now and would like to get this done. Can you please call me when you have a chance so that we can discuss this further. You had given me this quote (gives wrong numbers), can you please confirm that it still remains valid? I need this to be done in 2 days (apparently now there is a hot deadline). I will call tomorrow with payment info for deposit.”</p>
<p>designer:<br />
Contacted client, re-sent quote, sent out contract, etc. Ready to start work. Next day — deadline is approaching — still no contract sent back and no payment info for deposit.</p>
<p>client:<br />
At the end of the day, calling the office to “chat” more about the project. Designer is gone for the day. Message was sent to designer right after client’s call, with a summary — client still wants to chat more, no contract is sent back, no payment info. Designer is sending out a quick email to the client to check in.</p>
<p>client’s response:<br />
<i>“I never said that I wasn&#8217;t ready for deposit! Your colleague is probably making up things. We never talked about deposit At All! Anyway, I have no issues with you but definitely have some fundamental issues when people make up stories which your colleague just did. Thanks for willing to help, I&#8217;ll find someone else!”</i></p>
<p>Summary: if you can’t really afford hiring a professional, please don’t :)</p>
]]></content:encoded>
			<wfw:commentRss>http://rb-d.com/blog/?feed=rss2&amp;p=787</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Logo for Ansa Group</title>
		<link>http://rb-d.com/blog/?p=778</link>
		<comments>http://rb-d.com/blog/?p=778#comments</comments>
		<pubDate>Sat, 19 Nov 2011 03:46:33 +0000</pubDate>
		<dc:creator>Natasha</dc:creator>
				<category><![CDATA[Latest From RB]]></category>

		<guid isPermaLink="false">http://rb-d.com/blog/?p=778</guid>
		<description><![CDATA[New project in our portfolio — logo design for Ansa Group, a global leadership coaching team based in San Francisco, California.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="clear:right; float:right; margin-right:0px; margin-left:10px; margin-top:0px; margin-bottom:10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Frb-d.com%2Fblog%2F%3Fp%3D778"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Frb-d.com%2Fblog%2F%3Fp%3D778&amp;source=kramskaya&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>New project in our portfolio — logo design for Ansa Group, a global leadership coaching team based in San Francisco, California.</p>
<p><img title="logos_ansa.jpg" src="/blog/wp-content/uploads/2011/logos_ansa.jpg" border="0" alt="logos_ansa.jpg" width="775" height="360" /></p>
]]></content:encoded>
			<wfw:commentRss>http://rb-d.com/blog/?feed=rss2&amp;p=778</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Custom Error Pages in CakePHP</title>
		<link>http://rb-d.com/blog/?p=763</link>
		<comments>http://rb-d.com/blog/?p=763#comments</comments>
		<pubDate>Wed, 16 Nov 2011 05:55:45 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://rb-d.com/blog/?p=763</guid>
		<description><![CDATA[If you ever need to set some custom error pages for CakePHP, it&#8217;s really easy to do. Unfortunately, it&#8217;s a pain to figure out on your own, since it&#8217;s not really covered well in the CakePHP cookbook. Here&#8217;s a quick run down to help you set them up. In development, you almost always want to [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="clear:right; float:right; margin-right:0px; margin-left:10px; margin-top:0px; margin-bottom:10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Frb-d.com%2Fblog%2F%3Fp%3D763"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Frb-d.com%2Fblog%2F%3Fp%3D763&amp;source=kramskaya&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>If you ever need to set some custom error pages for CakePHP, it&#8217;s really easy to do. Unfortunately, it&#8217;s a pain to figure out on your own, since it&#8217;s not really covered well in the CakePHP cookbook. Here&#8217;s a quick run down to help you set them up.</p>
<p>In development, you almost always want to have your errors echoed out to the screen, so you can track them down (missing controllers etc.) but on a live server you most definitely don&#8217;t. Fortunately, it&#8217;s easy to change what&#8217;s echoed to the screen simply by changing the debug level in cake. </p>
<p>To do that you open up the app/Config/core.php. Set Debug to 0 for your live server:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;color: #D76F2D;">Configure<span style="color: #339933;color: #605b55;">::</span><span style="color: #004000;">write</span><span style="color: #009900;color: #605b55;">&#40;</span><span style="color: #0000ff;">'debug'</span><span style="color: #339933;color: #605b55;">,</span> <span style="color: #cc66cc;color: #00F;">0</span><span style="color: #009900;color: #605b55;">&#41;</span><span style="color: #339933;color: #605b55;">;</span></pre></div></div>

<p>When you switch the debug level, cake will also swap out what error doc it&#8217;ll load into the view. This way, you can make a view for those 404&#8242;s that&#8217;ll only show up when Debug is 0. It&#8217;s easy enough to do, just create the file app/View/Errors/error400.ctp (and yes that&#8217;s a 400 not a 404) and you&#8217;re done. Something like this:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;color: #D76F2D;"><span style="color: #339933;color: #605b55;">&lt;</span>div <span style="color: #000000; font-weight: bold;color: #804800; font-weight: bold;">class</span><span style="color: #339933;color: #605b55;">=</span><span style="color: #0000ff;color: #3366CC; font-style: italic">&quot;error&quot;</span><span style="color: #339933;color: #605b55;">&gt;</span>
  <span style="color: #339933;color: #605b55;">&lt;</span>h1<span style="color: #339933;color: #605b55;">&gt;</span>Whoops<span style="color: #339933;color: #605b55;">!</span> We can’t find your page<span style="color: #339933;color: #605b55;">...&lt;/</span>h2<span style="color: #339933;color: #605b55;">&gt;</span>
  <span style="color: #339933;color: #605b55;">&lt;</span>h2<span style="color: #339933;color: #605b55;">&gt;</span><span style="color: #cc66cc;color: #00F;">404</span><span style="color: #339933;color: #605b55;">&lt;/</span>h2<span style="color: #339933;color: #605b55;">&gt;</span>
<span style="color: #339933;color: #605b55;">&lt;/</span>div<span style="color: #339933;color: #605b55;">&gt;</span></pre></div></div>

<p>Another thing to note; if a controller exists, but the action doesn&#8217;t (i.e. http://example.com/controller/bad_action/), you&#8217;ll get a 500 error, not a 404. This is probably what you want most of the time, but don&#8217;t forget, static pages, normally accessed by http://example.com/pages/page_name, will throw a 500, not a 404 error, if page_name doesn&#8217;t exist. In short, make an error500.ctp page to cover these (app/View/Errors/error500.ctp).</p>
<p>With those two files in place, when you&#8217;re in development (debug = 2) , you&#8217;ll get a full trace of any errors in you application, like you want, but when you move your app to your live server (debug = 0), you&#8217;ll get your custom 404 &#038; 500 error pages. Pretty neat&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://rb-d.com/blog/?feed=rss2&amp;p=763</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Our work is featured on Academy of Art University&#8217;s website</title>
		<link>http://rb-d.com/blog/?p=757</link>
		<comments>http://rb-d.com/blog/?p=757#comments</comments>
		<pubDate>Tue, 15 Nov 2011 01:10:38 +0000</pubDate>
		<dc:creator>Natasha</dc:creator>
				<category><![CDATA[Etcetera]]></category>

		<guid isPermaLink="false">http://rb-d.com/blog/?p=757</guid>
		<description><![CDATA[Each month, Academy of Art University&#8217;s Alumni Association chooses three portfolios to highlight on its website. Our work has been chosen this month! Academy of Art University was founded in 1929 in San Francisco and is the largest art and design school in the United States.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="clear:right; float:right; margin-right:0px; margin-left:10px; margin-top:0px; margin-bottom:10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Frb-d.com%2Fblog%2F%3Fp%3D757"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Frb-d.com%2Fblog%2F%3Fp%3D757&amp;source=kramskaya&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Each month, Academy of Art University&#8217;s Alumni Association chooses three portfolios to highlight on its website. Our work has been chosen this month! Academy of Art University was founded in 1929 in San Francisco and is the largest art and design school in the United States.</p>
<p><img title="rb_design_at_academy_art.jpg" src="/blog/wp-content/uploads/2011/rb_design_at_academy_art.jpg" border="0" alt="rb_design_at_academy_art.jpg" width="584" height="719" /></p>
]]></content:encoded>
			<wfw:commentRss>http://rb-d.com/blog/?feed=rss2&amp;p=757</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TDD CakePHP 2.0</title>
		<link>http://rb-d.com/blog/?p=740</link>
		<comments>http://rb-d.com/blog/?p=740#comments</comments>
		<pubDate>Wed, 26 Oct 2011 04:05:32 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://rb-d.com/blog/?p=740</guid>
		<description><![CDATA[Now that CakePHP 2.0 is out we finally have a really good testing framework, namely PHPUnit. The problem is that many people coming to CakePHP for the first time, and/or to testing really have a hard time trying to figure it all out, and there are a few tiny but crucial details missing from the [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="clear:right; float:right; margin-right:0px; margin-left:10px; margin-top:0px; margin-bottom:10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Frb-d.com%2Fblog%2F%3Fp%3D740"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Frb-d.com%2Fblog%2F%3Fp%3D740&amp;source=kramskaya&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Now that CakePHP 2.0 is out we finally have a really good testing framework, namely PHPUnit. The problem is that many people coming to CakePHP for the first time, and/or to testing really have a hard time trying to figure it all out, and there are a few tiny but crucial details missing from the install directions for PHPUnit, and the testing instructions in the CakePHP 2.0 book.</p>
<p>To install PHPUnit, the cookbook is mostly right. Note on OSX, you&#8217;ll want to use sudo (most of the commands are in the terminal of course):</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: #D76F2D;"><span style="color: #c20cb9; font-weight: bold;color: #804800; font-weight: bold;">sudo</span> pear upgrade PEAR
<span style="color: #c20cb9; font-weight: bold;color: #804800; font-weight: bold;">sudo</span> pear config-set auto_discover <span style="color: #000000;color: #00F;">1</span>
<span style="color: #c20cb9; font-weight: bold;color: #804800; font-weight: bold;">sudo</span> pear <span style="color: #c20cb9; font-weight: bold;color: #804800; font-weight: bold;">install</span> pear.phpunit.de<span style="color: #000000; font-weight: bold;color: #605b55;">/</span>PHPUnit-3.5.15</pre></div></div>

<p>You&#8217;re still not done though. You need to make sure that pear&#8217;s path is in your <strong>php.ini</strong> file, or else it won&#8217;t work (it isn&#8217;t with the stock OSX PHP install). To find pear&#8217;s path, do this (it&#8217;s likely <strong>/usr/lib/php</strong>):</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: #D76F2D;">pear config-get php_dir</pre></div></div>

<p>Now edit your <strong>php.ini </strong>file and make sure your php includes path has your pear directory in it (I use the <a href="http://code.google.com/p/macvim/">MacVim</a> editor, which I recommend):</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: #D76F2D;"><span style="color: #c20cb9; font-weight: bold;color: #804800; font-weight: bold;">sudo</span> mvim <span style="color: #000000; font-weight: bold;color: #605b55;">/</span>etc<span style="color: #000000; font-weight: bold;color: #605b55;">/</span>php.ini</pre></div></div>

<p>find the &#8216;include_path=&#8217; line and add pear&#8217;s directory to it. Make it look something like this:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;color: #D76F2D;">include_path<span style="color: #339933;color: #605b55;">=</span><span style="color: #0000ff;color: #3366CC; font-style: italic">&quot;.:/usr/lib/php:/usr/lib/pear:/usr/lib/php/PHPunit:/usr/lib/php/PEAR&quot;</span></pre></div></div>

<p>Restart apache, and PHPUnit should now work:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;color: #D76F2D;"><span style="color: #c20cb9; font-weight: bold;color: #804800; font-weight: bold;">sudo</span> apachectl restart</pre></div></div>

<p>From here you can follow CakePHP&#8217;s book on <a href="http://book.cakephp.org/2.0/en/development/testing.html">how to do testing</a>:</p>
<p>Note, that there is a typo in the manual:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;color: #D76F2D;"><span style="color: #000000; font-weight: bold;color: #804800; font-weight: bold;">&lt;?php</span>
<span style="color: #000000; font-weight: bold;color: #804800; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;color: #804800; font-weight: bold;">function</span> setUp<span style="color: #009900;color: #605b55;">&#40;</span><span style="color: #009900;color: #605b55;">&#41;</span> <span style="color: #009900;color: #605b55;">&#123;</span>
    parent<span style="color: #339933;color: #605b55;">::</span><span style="color: #004000;">setUp</span><span style="color: #009900;color: #605b55;">&#40;</span><span style="color: #009900;color: #605b55;">&#41;</span><span style="color: #339933;color: #605b55;">;</span>
    <span style="color: #000088;">$View</span> <span style="color: #339933;color: #605b55;">=</span> <span style="color: #000000; font-weight: bold;color: #804800; font-weight: bold;">new</span> View<span style="color: #009900;color: #605b55;">&#40;</span><span style="color: #009900;color: #605b55;">&#41;</span><span style="color: #339933;color: #605b55;">;</span>
    <span style="color: #000088;">$this</span><span style="color: #339933;color: #605b55;">-&gt;</span><span style="color: #004000;">Progress</span> <span style="color: #339933;color: #605b55;">=</span> <span style="color: #000000; font-weight: bold;color: #804800; font-weight: bold;">new</span> ProgresHelper<span style="color: #009900;color: #605b55;">&#40;</span><span style="color: #000088;">$View</span><span style="color: #009900;color: #605b55;">&#41;</span><span style="color: #339933;color: #605b55;">;</span>
<span style="color: #009900;color: #605b55;">&#125;</span></pre></div></div>

<p>should be:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;color: #D76F2D;"><span style="color: #000000; font-weight: bold;color: #804800; font-weight: bold;">&lt;?php</span>
<span style="color: #000000; font-weight: bold;color: #804800; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;color: #804800; font-weight: bold;">function</span> setUp<span style="color: #009900;color: #605b55;">&#40;</span><span style="color: #009900;color: #605b55;">&#41;</span> <span style="color: #009900;color: #605b55;">&#123;</span>
    parent<span style="color: #339933;color: #605b55;">::</span><span style="color: #004000;">setUp</span><span style="color: #009900;color: #605b55;">&#40;</span><span style="color: #009900;color: #605b55;">&#41;</span><span style="color: #339933;color: #605b55;">;</span>
    <span style="color: #000088;">$View</span> <span style="color: #339933;color: #605b55;">=</span> <span style="color: #000000; font-weight: bold;color: #804800; font-weight: bold;">new</span> View<span style="color: #009900;color: #605b55;">&#40;</span><span style="color: #009900;color: #605b55;">&#41;</span><span style="color: #339933;color: #605b55;">;</span>
    <span style="color: #000088;">$this</span><span style="color: #339933;color: #605b55;">-&gt;</span><span style="color: #004000;">Progress</span> <span style="color: #339933;color: #605b55;">=</span> <span style="color: #000000; font-weight: bold;color: #804800; font-weight: bold;">new</span> ProgressHelper<span style="color: #009900;color: #605b55;">&#40;</span><span style="color: #000088;">$View</span><span style="color: #009900;color: #605b55;">&#41;</span><span style="color: #339933;color: #605b55;">;</span>
<span style="color: #009900;color: #605b55;">&#125;</span></pre></div></div>

<p>In TDD, the object is to write a test for what you want your application to do before you write any code. You run it, make sure the test you wrote fails, then you figure out how to write the code to make it pass.</p>
<p>So if you were to follow along with the <a href="http://book.cakephp.org/2.0/en/tutorials-and-examples/blog/blog.html">Blog</a> tutorial in the cookbook, most everywhere you&#8217;re asked to enter code, figure out how to write a test for it first. This is a great way to learn too. Often figuring out how to write the test will solidify your knowledge of how the code actually works.</p>
<p>There is a lot to testing, and it is a whole other subject you need to study, but it&#8217;s worth it. As any application grows, the complexity of it goes thru the roof, and if you&#8217;ve ever had a large app, that fear of making changes to your code comes from not having tests. Clients almost always want to build on their apps, and thus the little app you made slowly becomes a monster, and if you started it out with TDD, it will be one that you&#8217;ve already tamed. </p>
]]></content:encoded>
			<wfw:commentRss>http://rb-d.com/blog/?feed=rss2&amp;p=740</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Here is my official Academy Alumni badge :)</title>
		<link>http://rb-d.com/blog/?p=735</link>
		<comments>http://rb-d.com/blog/?p=735#comments</comments>
		<pubDate>Wed, 28 Sep 2011 18:46:11 +0000</pubDate>
		<dc:creator>Natasha</dc:creator>
				<category><![CDATA[Etcetera]]></category>

		<guid isPermaLink="false">http://rb-d.com/blog/?p=735</guid>
		<description><![CDATA[Graphic Design School]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="clear:right; float:right; margin-right:0px; margin-left:10px; margin-top:0px; margin-bottom:10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Frb-d.com%2Fblog%2F%3Fp%3D735"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Frb-d.com%2Fblog%2F%3Fp%3D735&amp;source=kramskaya&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<div id="aaubadge" class="aaubadge" style="width: 125px; height: 100px; margin: 0; padding: 0; border: 0; outline: 0; font-size: 1px; line-height: 1px; position: relative; text-decoration: none; background: none;"><img id="aaubadge_img" class="aaubadge_img"  width="125" height="100" border="0" style="border: 0; padding: 0; margin: 0; outline: 0;position: absolute; top: 0; left: 0;"  src="http://alumni.academyart.edu/images/alumni_badge.jpg" alt="Academy of Art University of Graphic Design School Alumni"/><a id="aaubadge_a" class="aaubadge_a" style="display: block; background-image: none; background: none; font-size: 11px;line-height: 11px; height:21px; width: 125px; font-family: Arial, Helvetica, sans-serif; color: #ffffff; padding: 79px 0 0 0; margin: 0; border: 0; display: block; position: absolute; top: 0; left: 0; text-decoration: none; font-weight: normal; text-align: center; vertical-align: bottom; outline: none; background: url(http://alumni.academyart.edu/images/alumni_badge.jpg) no-repeat left top; zoom: 1;" href="http://www.academyart.edu/graphic-design-school/index.html">Graphic Design School</a></div>
]]></content:encoded>
			<wfw:commentRss>http://rb-d.com/blog/?feed=rss2&amp;p=735</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Identity design for ReNew Water</title>
		<link>http://rb-d.com/blog/?p=729</link>
		<comments>http://rb-d.com/blog/?p=729#comments</comments>
		<pubDate>Tue, 09 Aug 2011 05:27:52 +0000</pubDate>
		<dc:creator>Natasha</dc:creator>
				<category><![CDATA[Latest From RB]]></category>

		<guid isPermaLink="false">http://rb-d.com/blog/?p=729</guid>
		<description><![CDATA[Here are the identity items we designed for ReNew Water, a company that provides nature-powered water treatment solutions.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="clear:right; float:right; margin-right:0px; margin-left:10px; margin-top:0px; margin-bottom:10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Frb-d.com%2Fblog%2F%3Fp%3D729"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Frb-d.com%2Fblog%2F%3Fp%3D729&amp;source=kramskaya&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Here are the identity items we designed for ReNew Water, a company that provides nature-powered water treatment solutions.</p>
<p><img title="identity_teichert.jpg" src="/blog/wp-content/uploads/2011/identity_teichert.jpg" border="0" alt="identity_teichert.jpg" width="775" height="400" /></p>
]]></content:encoded>
			<wfw:commentRss>http://rb-d.com/blog/?feed=rss2&amp;p=729</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Music on the iPad</title>
		<link>http://rb-d.com/blog/?p=706</link>
		<comments>http://rb-d.com/blog/?p=706#comments</comments>
		<pubDate>Sun, 26 Jun 2011 19:42:38 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Etcetera]]></category>

		<guid isPermaLink="false">http://rb-d.com/blog/?p=706</guid>
		<description><![CDATA[I&#8217;ve had an iPad for about two weeks now, and I have to say it&#8217;s a great piece of kit. You can really use it for making music; it&#8217;s a boon to have both in the studio and for live performance. There are some caveats to using the iPad, but overall it&#8217;s been a positive [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="clear:right; float:right; margin-right:0px; margin-left:10px; margin-top:0px; margin-bottom:10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Frb-d.com%2Fblog%2F%3Fp%3D706"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Frb-d.com%2Fblog%2F%3Fp%3D706&amp;source=kramskaya&amp;style=normal&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>I&#8217;ve had an iPad for about two weeks now, and I have to say it&#8217;s a great piece of kit.  You can really use it for making music; it&#8217;s a boon to have both in the studio and for live performance. There are some caveats to using the iPad, but overall it&#8217;s been a positive experience.</p>
<p>First off, the iPad is not a laptop replacement. Most gripes about the iPad are from people who misunderstand what the iPad is and should do. It&#8217;s not going to run stacks of 96kHz 24bit VST&#8217;s, nor will you see large industrial strength DAW&#8217;s like Logic Pro, or Ableton ported to it. The iPad simply doesn&#8217;t have the muscle. It also isn&#8217;t a file server, so don&#8217;t expect it to hold 500GB of your music collection. Complaints about its’ ports and the requisite dongles to get various connections are somewhat valid. However, I believe that Apple is attempting to move away from wires, and embrace the cloud. And while it may be a hard transition for a few, it’s a good move; much like how getting off of 3½ inch floppies took some getting used to, but I doubt you miss them now.</p>
<p>So what really is the iPad? It&#8217;s an interface, controller, terminal, and sketch pad. For musicians,  that means you can sketch out musical ideas, wether it&#8217;s composition, or sound design, on your lunch break, use it to control your desktop software (like Logic Pro, or Ableton) live or in the studio, or play a &#8216;simple&#8217; stand-alone software instrument live.</p>
<p>So far the most useful apps for me have been Horizon, a JP-8000 clone and touchAble, an interface for Ableton Live. I use Horizon for sketching out ideas, and for playing live, and touchAble for controlling Ableton both live and in the studio.</p>
<p>Horizon really does sound nice, it&#8217;s not an exact replacement of my venerable JP-8000, but I do use it for live performance, and I love the way it sounds (plus it saves me the trouble of lugging around another synth). It&#8217;s got a limited amount of routing options, but enough to keep things interesting, the sound of it&#8217;s filters are decent (the added formant filter is very nice) and it has all the standard things you&#8217;d expect, filter &amp; amp ADSR&#8217;s, two LFO&#8217;s, two OSC&#8217;s, etc. While it&#8217;s missing a number of the original JP&#8217;s features, it&#8217;s arpeggiator I think is better, and it&#8217;s still just as playable.</p>
<p>The best tool though is touchAble. For Ableton users, it alone will justify the purchase of an iPad. It really shows the power of the iPad&#8217;s multitouch; you can easily drop in multiple loops, adjust faders for several tracks, and tweak a handful of synth parameters effortlessly. Anything you need to control in Ableton, you can control with the touchAble. And no MIDI cables &#8211; it&#8217;s all done over a Wi-Fi connection!</p>
<p>I also use mugician, a very unique microtonal instrument with an expressive sound, and YUMI, a pretty good, though simple, violin emulator. There are some nice looking mini DAWs too like iSequence (their demo video is pretty impressive), FL Studio Mobile and a classic remake for the iPad, ReBirth.</p>
<p>The iPad is making workstation DAWs and plugins truly accessible in a way that hardware controllers don&#8217;t, and it&#8217;s giving users the ability to be creative on the go without lugging around laptops and looking for power outlets. The iPad won&#8217;t replace my laptop, but I don&#8217;t want or need it to and it&#8217;s been a nice addition to the studio&#8230; plus I can read all my Boris Akunin novels on it :)</p>
]]></content:encoded>
			<wfw:commentRss>http://rb-d.com/blog/?feed=rss2&amp;p=706</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

