<?xml version="1.0" encoding="UTF-8"?>
<feed xml:lang="en-US" xmlns="http://www.w3.org/2005/Atom">
  <title>Diligent Designer - Home</title>
  <id>tag:www.diligentdesigner.com,2008:mephisto/</id>
  <generator version="0.7.3" uri="http://mephistoblog.com">Mephisto Noh-Varr</generator>
  <link href="http://www.diligentdesigner.com/feed/atom.xml" rel="self" type="application/atom+xml"/>
  <link href="http://www.diligentdesigner.com/" rel="alternate" type="text/html"/>
  <updated>2008-05-10T03:09:37Z</updated>
  <entry xml:base="http://www.diligentdesigner.com/">
    <author>
      <name>Robert Pierce</name>
    </author>
    <id>tag:www.diligentdesigner.com,2008-05-10:13</id>
    <published>2008-05-10T02:05:56Z</published>
    <updated>2008-05-10T03:09:37Z</updated>
    <category term="Ruby, Rails, Web Development"/>
    <link href="http://www.diligentdesigner.com/2008/5/10/unfortunate-word-wrapping" rel="alternate" type="text/html"/>
    <title>Unfortunate Word Wrapping</title>
<content type="html">
            &lt;p&gt;I&#8217;ve always been suspicious of copy meant for web pages.&lt;/p&gt;


	&lt;p&gt;&lt;img src=&quot;http://diligentdesigner.com/assets/2008/5/10/god.jpg&quot; /&gt;&lt;/p&gt;


	&lt;p&gt;Leaving your beautiful layout to the vagaries of browser quirks and user font choices seems kind of like crafting a beautiful print piece and then sending it off to the printer knowing they&#8217;re likely to substitute their local (or arbitrary) version of the font metrics; and you&#8217;ll never see the final piece. It gets sent straight to the customer or public from the printer.&lt;/p&gt;


	&lt;p&gt;That&#8217;s what web layout feels like sometimes. No wonder there&#8217;s a significant strata of designers who gravitate towards Flash for their web designs.&lt;/p&gt;


	&lt;p&gt;I found a great example in my surfing tonight (I don&#8217;t think God would wear a shirt like that).&lt;/p&gt;


	&lt;p&gt;Source: &lt;a href=&quot;http://www.puregospeltruth.com/healing-revival-lakeland-florida-todd-bentley.html&quot; title=&quot;puregospeltruth.com&quot;&gt;puregospeltruth.com&lt;/a&gt;&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://www.diligentdesigner.com/">
    <author>
      <name>Robert Pierce</name>
    </author>
    <id>tag:www.diligentdesigner.com,2008-03-07:10</id>
    <published>2008-03-07T07:12:00Z</published>
    <updated>2008-03-07T08:33:11Z</updated>
    <category term="Ruby, Rails, Web Development"/>
    <link href="http://www.diligentdesigner.com/2008/3/7/ruby-studio-review" rel="alternate" type="text/html"/>
    <title>Ruby Studio Review</title>
<content type="html">
            &lt;h2&gt;Thoughts on Pragmatic Studios&#8217; Ruby Studio&lt;/h2&gt;
&lt;div class=&quot;right top&quot;&gt;
  &lt;a href=&quot;http://diligentdesigner.com/assets/2008/3/3/RS0208_Shot1.jpg&quot;&gt;&lt;img src=&quot;http://diligentdesigner.com/assets/2008/3/3/RS0208_Shot1.jpg&quot; height=&quot;225&quot; alt=&quot;Ruby Studio - Denver, CO&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://diligentdesigner.com/assets/2008/3/3/RS0208_Shot2.jpg&quot;&gt;&lt;img src=&quot;http://diligentdesigner.com/assets/2008/3/3/RS0208_Shot2.jpg&quot; height=&quot;225&quot; alt=&quot;Ruby Studio - Denver, CO&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://diligentdesigner.com/assets/2008/3/3/RS0208_Shot3.jpg&quot;&gt;&lt;img src=&quot;http://diligentdesigner.com/assets/2008/3/3/RS0208_Shot3.jpg&quot; height=&quot;225&quot; alt=&quot;Ruby Studio - Denver, CO&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://diligentdesigner.com/assets/2008/3/3/RS0208_Shot4.jpg&quot;&gt;&lt;img src=&quot;http://diligentdesigner.com/assets/2008/3/3/RS0208_Shot4.jpg&quot; height=&quot;225&quot; alt=&quot;Ruby Studio - Denver, CO&quot; width=&quot;300&quot; /&gt;&lt;/a&gt;
&lt;small&gt;I snapped a few pictures with my little digital camera just to get at least some kind of visual record. Certainly nothing like the last studio I was at where &lt;a href=&quot;http://duncandavidson.com/&quot;&gt;James Duncan Davidson&lt;/a&gt; was taking pictures like &lt;a href=&quot;http://flickr.com/photos/x180/92261644/in/set-72057594055298824/&quot;&gt;this&lt;/a&gt;.&lt;/small&gt;
&lt;/div&gt;

	&lt;p&gt;Last week I was able to attend the &lt;a href=&quot;http://pragmaticstudio.com/ruby-intro/&quot;&gt;Ruby Studio&lt;/a&gt; in Denver put on by guys at &lt;a href=&quot;http://pragmaticstudio.com/&quot;&gt;The Pragmatic Studio&lt;/a&gt;. It was a great experience and I highly recommend it to anyone who is serious about learning Ruby for professional or personal use. &lt;a href=&quot;http://pragdave.blogs.pragprog.com/pragdave/&quot;&gt;Dave Thomas&lt;/a&gt; and &lt;a href=&quot;http://chadfowler.com/&quot;&gt;Chad Fowler&lt;/a&gt; both did a great job of instructing and connecting with their audience.&lt;/p&gt;


&lt;h3&gt;Here are few of my thoughts/suggestions for anyone who is considering attending:&lt;/h3&gt;

	&lt;p&gt;1. &lt;b&gt;Sit close to the front and engage with the instructors.&lt;/b&gt; You (or someone who cares about you) will be investing alot of time and money so you can be there; make the most of it. Dave and Chad were great about answering questions and seemed to enjoy the audience interaction. Just don&#8217;t ask questions to pontificate or try to impress Dave or Chad (or the rest of the group); chances are they won&#8217;t be.&lt;/p&gt;


	&lt;p&gt;2. &lt;b&gt;Listen to &lt;a href=&quot;http://pragmaticstudio.com/about&quot;&gt;Nicole Clark&lt;/a&gt;&lt;/b&gt; (The event coordinator/boss) when she suggests that you turn off your internet connection during the day (they provide wireless access). On the first day I was probably as much a culprit as the next person about checking email, etc. By the second day I was able to stay off (except for a few quick checks during breaks) and enjoyed completely focusing on the programming tasks at hand.&lt;/p&gt;


	&lt;p&gt;3. &lt;b&gt;Bring a Mac and use &lt;a href=&quot;http://macromates.com/&quot;&gt;TextMate&lt;/a&gt;&lt;/b&gt;. I felt bad at times for those in the audience without the Mac/TextMate combo because that is what both Dave and Chad were using from the front. The code-&amp;gt;test-&amp;gt;code cycle went very fast at times and, although the integration is really cool between &lt;span class=&quot;caps&quot;&gt;OSX&lt;/span&gt;, Ruby, Textmate and Terminal, for those without that setup it must have been frustrating to watch and not emulate. One of the reasons I think I was able to keep up is that I had the same software/workflow setup that was being demonstrated. If you&#8217;re using some other setup, come prepared and already knowing the workflow of how to write, run and test simple ruby programs in your environment&amp;mdash; it&#8217;ll pay off. &lt;em&gt;(A personal confession: Attending the Rails Studio in Jan &#8216;06 with my Dell laptop and watching Dave and Mike demo code with TextTate on the Mac and seeing so many guys around me working with on MacBook Pros was the last little nudge that pushed me into finally moving back to Macs after many years of Windows use. I&#8217;ve never looked back.)&lt;/em&gt;&lt;/p&gt;


	&lt;p&gt;4. &lt;b&gt;Make the effort to meet other people there&lt;/b&gt;. I found that it was a tough balance at times between wanting to really focus on learning and the benefit of getting to know fellow attendees. While lunches are a great time to spend time getting to know fellow attendees, I think they could have structured a few networking/social opportunities for one or more of the evenings; that would have helped break the ice even more. The alumni-only mailing list/yahoo group is a great place to foster and continue relationships after the event.&lt;img class=&quot;right&quot; src=&quot;http://www.diligentdesigner.com/assets/2008/3/7/studiotextmate.jpg&quot; height=&quot;167&quot; width=&quot;360&quot;&gt;&lt;/p&gt;


5. &lt;b&gt;Follow (and type) along in TextMate&lt;/b&gt; (or your editor) with Chad and Dave&#8217;s examples. One of the things I found to be most helpful was to actually type the code they were demonstrating on the screen. There were only a one or two times when I fell far enough behind that it was a problem. The rest of the time I was benefiting from actually typing and running the code we were discussing. I created a &#8220;Ruby Studio&#8221; project in TextMate and then a subfolder for each day. I started a new file for each new topic, section or module they demonstrated. I also kept a general notes file open where I would jot general notes. Here&#8217;s a sample from the first day:
&lt;div class=&quot;column span-20 pull-1 last&quot;&gt;&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td title=&quot;click to toggle&quot; class=&quot;line_numbers&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;5&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;7&lt;tt&gt;
&lt;/tt&gt;8&lt;tt&gt;
&lt;/tt&gt;9&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;11&lt;tt&gt;
&lt;/tt&gt;12&lt;tt&gt;
&lt;/tt&gt;13&lt;tt&gt;
&lt;/tt&gt;14&lt;tt&gt;
&lt;/tt&gt;15&lt;tt&gt;
&lt;/tt&gt;16&lt;tt&gt;
&lt;/tt&gt;17&lt;tt&gt;
&lt;/tt&gt;18&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;co&quot;&gt;Learning&lt;/span&gt; to program like a &lt;span class=&quot;co&quot;&gt;Ruby&lt;/span&gt; programmer--learning the idioms of &lt;span class=&quot;co&quot;&gt;Ruby&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;span class=&quot;co&quot;&gt;The&lt;/span&gt; soul of &lt;span class=&quot;co&quot;&gt;Ruby&lt;/span&gt; is &lt;span class=&quot;r&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;co&quot;&gt;Japan&lt;/span&gt;. &lt;span class=&quot;co&quot;&gt;A&lt;/span&gt; different philosophy of programming. &lt;span class=&quot;co&quot;&gt;Wabi&lt;/span&gt;-sabi (sp?)&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;span class=&quot;co&quot;&gt;Use&lt;/span&gt; &lt;span class=&quot;co&quot;&gt;MacPorts&lt;/span&gt; &lt;span class=&quot;r&quot;&gt;for&lt;/span&gt; macs on ruby&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;span class=&quot;co&quot;&gt;Ruby&lt;/span&gt; is wonderfully &lt;span class=&quot;pc&quot;&gt;self&lt;/span&gt;-contained (install &lt;span class=&quot;r&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;pc&quot;&gt;self&lt;/span&gt;-contained paths)&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;span class=&quot;co&quot;&gt;Updating&lt;/span&gt; gems doesn&lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;t overwrite older versions of gems&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;# Update gem itself&lt;tt&gt;
&lt;/tt&gt;sudo gem update --system&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;Add a -y flag to gem install to default to yes to install dependencies&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;gem dependency rails&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;Consider using gems for internal projects as well.&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;

	&lt;p&gt;6. &lt;b&gt;Buy, read and bring Dave&#8217;s &lt;a href=&quot;http://www.pragprog.com/titles/ruby3&quot;&gt;Programming Ruby (Pickaxe)&lt;/a&gt; book&lt;/b&gt; with you. You will will be glad you did. Not only will you have a better understanding of the material (and can better appreciate the personal observations and nuances from Dave and Chad), but you&#8217;ll also find some eerie similarities between the examples in the book and the ones used in class. &lt;em&gt;(Ask Dave to autograph your book; I think he secretly gets a kick out of it; I know I would.)&lt;/em&gt;&lt;/p&gt;


	&lt;p&gt;7. &lt;b&gt;Know what you want to get out of the three days&lt;/b&gt; and have a plan. I came with a specific goal in mind of getting over a hump in my Ruby programming. I&#8217;m happy to report that my time at Ruby Studio did exactly what I had hoped it would. I&#8217;m now much more able to get down to writing and implementing ideas with Ruby; instead of having to stop and look up syntax, examples and patterns every few seconds. It was very gratifying to dig into the guts of the &lt;a href=&quot;http://capify.org&quot;&gt;Capistrano&lt;/a&gt; gem when I got home after the Studio  and really understand what was going on with the code &lt;em&gt;(One of Chad&#8217;s suggestions for followup work was to download some popular gems and look through the Ruby code)&lt;/em&gt;.&lt;/p&gt;


	&lt;p&gt;&lt;img class=&quot;right&quot; src=&quot;http://www.diligentdesigner.com/assets/2008/3/7/ruby.gif&quot; height=&quot;137&quot; width=&quot;137&quot;&gt;&lt;/p&gt;


	&lt;p&gt;Let&#8217;s face it, this kind of focused and expert training doesn&#8217;t come cheap (If you&#8217;re not local to the training location you&#8217;re looking at spending on the north side of $2,000 between tuition, travel and lodging). I feel grateful to have the resources to be able to attend and I&#8217;ve been very happy with my two experiences so far with Pragmatic Studios.&lt;/p&gt;


	&lt;p&gt;It&#8217;s not easy to put on an excellent multi-day training seminar and these guys do a very good job of it. I believe you&#8217;ll come away confident and inspired to go out and create great applications using Ruby.&lt;/p&gt;


	&lt;p&gt;The next &lt;a href=&quot;http://pragmaticstudio.com/ruby-intro/&quot;&gt;Ruby Studio&lt;/a&gt; is slated for this summer.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://www.diligentdesigner.com/">
    <author>
      <name>Robert Pierce</name>
    </author>
    <id>tag:www.diligentdesigner.com,2008-02-22:8</id>
    <published>2008-02-22T22:21:00Z</published>
    <updated>2008-02-23T17:54:54Z</updated>
    <category term="Ruby, Rails, Web Development"/>
    <link href="http://www.diligentdesigner.com/2008/2/22/fun-with-autotest-growl" rel="alternate" type="text/html"/>
    <title>Fun with Autotest &amp; Growl</title>
<content type="html">
            &lt;div class=&quot;right&quot;&gt;
  &lt;img src=&quot;http://diligentdesigner.com/assets/2008/2/23/pass.png&quot; alt=&quot;pass.png&quot; /&gt;
  &lt;img src=&quot;http://diligentdesigner.com/assets/2008/2/23/pending.png&quot; alt=&quot;pending.png&quot; /&gt;
  &lt;img src=&quot;http://diligentdesigner.com/assets/2008/2/23/fail.png&quot; alt=&quot;fail.png&quot; /&gt;
&lt;/div&gt;
&lt;p&gt;So tonight I was about halfway into &lt;a href=&quot;http://nubyonrails.com/&quot;&gt;Geoffrey Grosenbach&amp;rsquo;s&lt;/a&gt; &lt;a href=&quot;https://peepcode.com/products/rspec-mocks-and-models&quot;&gt;RSpec Mocks and Models&lt;/a&gt; screencast and remembered that I had run into a roadblock the other night trying to get autotest to run correctly. I couldn&#8217;t very well be attempting &lt;a href=&quot;http://behaviour-driven.org/&quot;&gt;&lt;span class=&quot;caps&quot;&gt;BDD&lt;/span&gt;&lt;/a&gt; without a functioning autotest. And of course I couldn&amp;rsquo;t very run autotest without implementing &lt;a href=&quot;http://growl.info/&quot;&gt;growl&lt;/a&gt; notifications. And of course I couldn&#8217;t implement growl notifications without making some cool graphics that would make me happy every time I saw them.&lt;/p&gt; 
&lt;p&gt;So, being the &amp;ldquo;leans-more-toward-designer-than-developer&amp;rdquo; kind of developer that I am&amp;mdash;here I am &amp;lt;strike&gt;two&amp;lt;/strike&gt; &amp;lt;strike&gt;three&amp;lt;/strike&gt; four hours later, having a ball, but not much closer to really getting my mind wrapped around &lt;a href=&quot;http://rspec.info/&quot;&gt;RSpec&lt;/a&gt; and &lt;span class=&quot;caps&quot;&gt;BDD&lt;/span&gt;. I did finally get autotest and the growl notifications working and enjoyed a fun little Photoshop diversion&amp;mdash;plus I got some time in on my new publishing platform (still tweaking styles and layout of my Mephisto blog theme).&lt;/p&gt;
&lt;a href=&quot;http://wiki.c3mediagroup.com/media/dd/FunwithAutotestandGrowl_Fnl.mov&quot;&gt;&lt;img class=&quot;right top&quot; src=&quot;http://diligentdesigner.com/assets/2008/2/23/FunwithAutotestandGrowl.jpg&quot; alt=&quot;image&quot; /&gt;&lt;/a&gt;
&lt;p&gt;I&amp;rsquo;ve recently committed to trying to give back a little to the ruby/rails online community that has helped me so much over the years. So I decided to take the time to put the files up tonight (along with the code I found worked for me, and a simple screencast so you can see them in action). Maybe someone will find these useful and perhaps even enjoy their development a tiny bit more.&lt;/p&gt;
&lt;h4&gt;Download Brief Screencast&lt;/h4&gt;
&lt;p&gt;&lt;a href=&quot;http://wiki.c3mediagroup.com/media/dd/FunwithAutotestandGrowl_Fnl.mov&quot;&gt;FunwithAutotestandGrowl_Fnl.mov&lt;/a&gt; &lt;small&gt;(9mb Quicktime File)&lt;/small&gt;&lt;/p&gt;
&lt;h4&gt;Graphic files:&lt;/h4&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://diligentdesigner.com/assets/2008/2/23/pass.png&quot;&gt;pass.png&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://diligentdesigner.com/assets/2008/2/23/pending.png&quot;&gt;pending.png&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://diligentdesigner.com/assets/2008/2/23/fail.png&quot;&gt;fail.png&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://diligentdesigner.com/assets/2008/2/23/AutoestGrowlButtons.psd.zip&quot;&gt;AutoestGrowlButtons.psd.zip&lt;/a&gt; &lt;em&gt;(Photoshop source file)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;~/.autotest listing&lt;/h4&gt;
&lt;div class=&quot;column span-20 pull-1 last&quot;&gt;&lt;table class=&quot;CodeRay&quot;&gt;&lt;tr&gt;
  &lt;td title=&quot;click to toggle&quot; class=&quot;line_numbers&quot;&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;5&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;7&lt;tt&gt;
&lt;/tt&gt;8&lt;tt&gt;
&lt;/tt&gt;9&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;11&lt;tt&gt;
&lt;/tt&gt;12&lt;tt&gt;
&lt;/tt&gt;13&lt;tt&gt;
&lt;/tt&gt;14&lt;tt&gt;
&lt;/tt&gt;15&lt;tt&gt;
&lt;/tt&gt;16&lt;tt&gt;
&lt;/tt&gt;17&lt;tt&gt;
&lt;/tt&gt;18&lt;tt&gt;
&lt;/tt&gt;19&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;20&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class=&quot;code&quot;&gt;&lt;pre&gt;  require &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;autotest/redgreen&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  require &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;autotest/timestamp&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;'&lt;/span&gt;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;  &lt;span class=&quot;r&quot;&gt;module&lt;/span&gt; &lt;span class=&quot;cl&quot;&gt;Autotest::Growl&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;    &lt;span class=&quot;r&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;pc&quot;&gt;self&lt;/span&gt;.growl title, msg, img, pri=&lt;span class=&quot;i&quot;&gt;0&lt;/span&gt;, stick=&lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;      system &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;growlnotify -n autotest --image &lt;/span&gt;&lt;span class=&quot;il&quot;&gt;&lt;span class=&quot;dl&quot;&gt;#{&lt;/span&gt;img&lt;span class=&quot;dl&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt; -p &lt;/span&gt;&lt;span class=&quot;il&quot;&gt;&lt;span class=&quot;dl&quot;&gt;#{&lt;/span&gt;pri&lt;span class=&quot;dl&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt; -m &lt;/span&gt;&lt;span class=&quot;il&quot;&gt;&lt;span class=&quot;dl&quot;&gt;#{&lt;/span&gt; msg.inspect&lt;span class=&quot;dl&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt; &lt;/span&gt;&lt;span class=&quot;il&quot;&gt;&lt;span class=&quot;dl&quot;&gt;#{&lt;/span&gt;title&lt;span class=&quot;dl&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt; &lt;/span&gt;&lt;span class=&quot;il&quot;&gt;&lt;span class=&quot;dl&quot;&gt;#{&lt;/span&gt;stick&lt;span class=&quot;dl&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;    &lt;span class=&quot;r&quot;&gt;end&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;    &lt;span class=&quot;co&quot;&gt;Autotest&lt;/span&gt;.add_hook &lt;span class=&quot;sy&quot;&gt;:ran_command&lt;/span&gt; &lt;span class=&quot;r&quot;&gt;do&lt;/span&gt; |autotest|&lt;tt&gt;
&lt;/tt&gt;      output = autotest.results.grep(&lt;span class=&quot;rx&quot;&gt;&lt;span class=&quot;dl&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;ch&quot;&gt;\d&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;ch&quot;&gt;\s&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;.*examples?&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;/&lt;/span&gt;&lt;/span&gt;).last.slice(&lt;span class=&quot;rx&quot;&gt;&lt;span class=&quot;dl&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;ch&quot;&gt;\d&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;+)&lt;/span&gt;&lt;span class=&quot;ch&quot;&gt;\s&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;.*examples?,&lt;/span&gt;&lt;span class=&quot;ch&quot;&gt;\s&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;ch&quot;&gt;\d&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;+)&lt;/span&gt;&lt;span class=&quot;ch&quot;&gt;\s&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;.*failures?(?:,&lt;/span&gt;&lt;span class=&quot;ch&quot;&gt;\s&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;ch&quot;&gt;\d&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;+)&lt;/span&gt;&lt;span class=&quot;ch&quot;&gt;\s&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;.*pending)?&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;/&lt;/span&gt;&lt;/span&gt;)&lt;tt&gt;
&lt;/tt&gt;      &lt;span class=&quot;c&quot;&gt;# if output =~ /[1-9]\sfailures?/ &lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;      &lt;span class=&quot;r&quot;&gt;if&lt;/span&gt; output =~ &lt;span class=&quot;rx&quot;&gt;&lt;span class=&quot;dl&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;[1-9][0-9]?&lt;/span&gt;&lt;span class=&quot;ch&quot;&gt;\s&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;failure&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;/&lt;/span&gt;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;        growl &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;Test Results&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;il&quot;&gt;&lt;span class=&quot;dl&quot;&gt;#{&lt;/span&gt;output&lt;span class=&quot;dl&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;~/Library/autotest/fail.png&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;i&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;-s&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;      &lt;span class=&quot;r&quot;&gt;elsif&lt;/span&gt; output =~ &lt;span class=&quot;rx&quot;&gt;&lt;span class=&quot;dl&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;pending&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;/&lt;/span&gt;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;        growl &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;Test Results&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;il&quot;&gt;&lt;span class=&quot;dl&quot;&gt;#{&lt;/span&gt;output&lt;span class=&quot;dl&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;~/Library/autotest/pending.png&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;      &lt;span class=&quot;r&quot;&gt;else&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;        growl &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;Test Results&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;il&quot;&gt;&lt;span class=&quot;dl&quot;&gt;#{&lt;/span&gt;output&lt;span class=&quot;dl&quot;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class=&quot;s&quot;&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;~/Library/autotest/pass.png&lt;/span&gt;&lt;span class=&quot;dl&quot;&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;      &lt;span class=&quot;r&quot;&gt;end&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;    &lt;span class=&quot;r&quot;&gt;end&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  &lt;span class=&quot;r&quot;&gt;end&lt;/span&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;h3&gt;Lessons Learned&lt;/h3&gt;
&lt;p&gt;The problem I had with getting autotest to work had to do with version conflicts between zentest and rspec. Just be aware that it can potentially exist and Google your way through it. I can&#8217;t even remember how or what I changed anymore to get it working, but I am using the following versions successfully as of this writing: rspec (1.1.3), ZenTest (3.9.1), rails (2.0.2).&lt;/p&gt;

&lt;h3&gt;Acknowledgements:&lt;/h3&gt;
&lt;ol&gt;
  &lt;li&gt;Geoffrey Grosenbach for his excellent &lt;a href=&quot;http://peepcode.com/&quot;&gt;PeepCode screencasts&lt;/a&gt; that have helped me so much.
  &lt;li&gt;James Deville for the &lt;a href=&quot;http://devillecompanies.org/2007/08/14/growl-autotest-and-rspec-108/&quot;&gt;writeup and code&lt;/a&gt; that worked for me and my setup. &lt;em&gt;(Be sure to read Eric Wollesen&#8217;s comment with an update to the regex.)&lt;/em&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;Reference&lt;/h3&gt;
&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;http://peepcode.com/products/rspec-basics&quot;&gt;RSpec Basics Peepcode Screencast&lt;/a&gt; (peepcode.com)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://wincent.com/knowledge-base/Setting_up_autotest_to_use_Growl&quot;&gt;Setting up autotest to use Growl&lt;/a&gt; (wincent.com)&lt;/li&gt;
&lt;/ol&gt;
          </content>  </entry>
  <entry xml:base="http://www.diligentdesigner.com/">
    <author>
      <name>Robert Pierce</name>
    </author>
    <id>tag:www.diligentdesigner.com,2008-02-10:9</id>
    <published>2008-02-10T22:00:00Z</published>
    <updated>2008-03-03T07:18:10Z</updated>
    <category term="Ruby, Rails, Web Development"/>
    <link href="http://www.diligentdesigner.com/2008/2/10/rails-diagramming-stencil-for-graffletopia" rel="alternate" type="text/html"/>
    <title>Rails Diagramming Stencil for OmniGraffle</title>
<content type="html">
            &lt;div class=&quot;right top&quot;&gt;
  &lt;img src=&quot;http://diligentdesigner.com/assets/2008/2/29/rails_diagramming_graffletopia.png&quot; alt=&quot;Rails Diagramming Stencil&quot; /&gt;
&lt;/div&gt;
&lt;p&gt;I created some stencils for &lt;a href=&quot;http://www.omnigroup.com/applications/omnigraffle/&quot;&gt;OmniGraffle&lt;/a&gt; that help with designing the schema of your application. The stencil file is posted on &lt;a href=&quot;http://graffletopia.com/stencils/318&quot;&gt;Graffletopia&lt;/a&gt; for download.&lt;/p&gt;

&lt;h4&gt;Excerpt from the site:&lt;/h4&gt;
&lt;blockquote&gt;&lt;p&gt;Some helpful stencils for designing your database and models. Sort of an Entity Relationship Diagram (ERD) with some added stuff that helps me think through what&#8217;s going to go on when I get to coding.&lt;/p&gt;

&lt;p&gt;Don&#8217;t feel bad if (like me) you are more of a Designer/Developer and just use the plain arrow to connect things. The &lt;span class=&quot;caps&quot;&gt;ERD&lt;/span&gt; stuff can make your head explode if you go too deep.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;In case you&#8217;re new to these kinds of things, you can add more name/type rows to the tables by clicking in a row and hitting Cmd-Enter (or menu Edit -&amp;gt; Tables -&amp;gt; Insert Row). That one was not so obvious to me initially either.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://www.diligentdesigner.com/">
    <author>
      <name>Robert Pierce</name>
    </author>
    <id>tag:www.diligentdesigner.com,2008-02-04:5</id>
    <published>2008-02-04T16:08:00Z</published>
    <updated>2008-02-23T10:38:10Z</updated>
    <category term="Inspiration"/>
    <link href="http://www.diligentdesigner.com/2008/2/4/take-it-all-in" rel="alternate" type="text/html"/>
    <title>Take it all in</title>
<content type="html">
            &lt;p&gt;A Super Bowl Moment of Wealth&lt;/p&gt;


	&lt;p&gt;&lt;img src=&quot;http://diligentdesigner.com/assets/2008/2/23/jefffeagles.jpg&quot; /&gt;
Although I can&#8217;t say I was enthralled with the Super Bowl this year, the last few minutes were as compelling as almost any other game this year.&lt;/p&gt;


	&lt;p&gt;A tiny flicker of a moment at the conclusion of the game caught my attention and has stayed with me overnight.&lt;/p&gt;


	&lt;p&gt;In the chaotic conclusion following the end of the game, a cameraman caught Giants punter Jeff Feagles celebrating with his wife and son on the field. Although they were obviously enjoying the moment, the capturing of them seemed an afterthought to the cameraman and producer; almost as if they caught that moment while desperately trying to cue up one of the stars. But in that brief moment they captured, what was to me, the most wealthy moment of the night. Feagles&#8217; son, while exulting in the experience of being down on the winning Super Bowl field, looked up at his dad, dazed, seemingly needing help understanding how to deal with the emotions and experience. His dad just looked at him and said. &#8220;Just take it in son. Just take it all in.&#8221;&lt;/p&gt;


	&lt;p&gt;Take it in. Take it all in.&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://www.diligentdesigner.com/">
    <author>
      <name>Robert Pierce</name>
    </author>
    <id>tag:www.diligentdesigner.com,2008-01-17:7</id>
    <published>2008-01-17T19:02:00Z</published>
    <updated>2008-02-22T08:51:30Z</updated>
    <category term="Principles"/>
    <link href="http://www.diligentdesigner.com/2008/1/17/dieter-rams-10-principles-for-good-design" rel="alternate" type="text/html"/>
    <title>Dieter Rams' 10 principles for good design</title>
<content type="html">
            &lt;p&gt;&lt;img src=&quot;http://blog.c3mediagroup.com/wp-content/uploads/2008/01/ramive.jpg&quot; height=&quot;256&quot; alt=&quot;RamIve&quot; width=&quot;463&quot;&gt;This passion for &#8220;simplicity&#8221; and &#8220;honest design&#8221; that is always declared by Ive whenever he&#8217;s interviewed or appears in a promo video, is at the core of Dieter Rams&#8217; 10 principles for good design:&lt;/p&gt;


	&lt;p&gt;• Good design is innovative.
• Good design makes a product useful.
• Good design is aesthetic.
• Good design helps us to understand a product.
• Good design is unobtrusive.
• Good design is honest.
• Good design is durable.
• Good design is consequent to the last detail.
• Good design is concerned with the environment.
• Good design is as little design as possible.&lt;/p&gt;


	&lt;p&gt;From: &lt;a href=&quot;http://gizmodo.com/343641/1960s-braun-products-hold-the-secrets-to-apples-future&quot; title=&quot;The Future Of Apple Is In 1960s Braun: 1960s Braun Products Hold the Secrets to Apple's Future&quot;&gt;1960s Braun Products Hold the Secrets to Apple&#8217;s Future&lt;/a&gt;&lt;/p&gt;
          </content>  </entry>
  <entry xml:base="http://www.diligentdesigner.com/">
    <author>
      <name>Robert Pierce</name>
    </author>
    <id>tag:www.diligentdesigner.com,2006-12-22:4</id>
    <published>2006-12-22T19:42:00Z</published>
    <updated>2008-02-19T09:52:38Z</updated>
    <link href="http://www.diligentdesigner.com/2006/12/22/the-us-zipscribble-map" rel="alternate" type="text/html"/>
    <title>The US ZIPScribble Map</title>
<content type="html">
            &lt;p&gt;I found this interesting &lt;a href=&quot;http://site.com/&quot;&gt;zip code resource/artwork&lt;/a&gt; at &lt;a href=&quot;http:&lt;strong&gt;&lt;/strong&gt;//eagereyes.org/Applications/ZIPScribbleMap.html&#8221;&amp;gt;EagerEyes.org&lt;/a&gt;. It caught my eye because this year I came to learn more about Zip Codes than I thought I ever would during the mailer campaigns for a Pacific Advisors workshop project.&lt;/p&gt;
&lt;h3&gt;&lt;a href=&quot; /&gt;result&lt;/a&gt; is surprising and much more interesting than expected.&lt;/blockquote&gt;
          </content>  </entry>
  <entry xml:base="http://www.diligentdesigner.com/">
    <author>
      <name>Robert Pierce</name>
    </author>
    <id>tag:www.diligentdesigner.com,2006-11-10:6</id>
    <published>2006-11-10T13:39:30Z</published>
    <updated>2008-02-19T19:43:51Z</updated>
    <category term="Business Matters"/>
    <link href="http://www.diligentdesigner.com/2006/11/10/dance-close-to-the-revenue-line" rel="alternate" type="text/html"/>
    <title>Dance Close to the Revenue Line</title>
<content type="html">
            &lt;p&gt;&lt;a href=&quot;http://www.amazon.com/gp/product/0743250885/103-1673426-8846230?v=glance&#38;n=283155&quot;&gt;&lt;img src=&quot;http://blog.hablets.com/images/nevercheckemail.jpg&quot; alt=&quot;Never Check E-Mail.. Title&quot; /&gt;&lt;/a&gt;My last trip to the bookstore, I happened upon a provacatively titled &lt;em&gt;&#8220;Never Check E-Mail in the Morning&#8221;&lt;/em&gt; by &lt;a href=&quot;http://www.juliemorgenstern.com/&quot; title=&quot;Julie Morgenstern's Site&quot;&gt;Julie Morgenstern&lt;/a&gt; during my habitual graze through the business section. Despite being a sucker for business and personal development books, I&#8217;ve lately been in an &#8220;I&#8217;ll pass&#8221; phase. Nevertheless, something about the book pinged my intuition as I gave it the once-over. This one was going to have at least one great nugget inside&amp;mdash;I felt it. I bought it and put it in my normal to-read cycle (briefcase-&lt;del&gt;&amp;gt;desk&lt;/del&gt;-&amp;gt;briefcase-&lt;del&gt;&amp;gt;nightstand&lt;/del&gt;-&amp;gt;).&lt;/p&gt;


	&lt;p&gt;I grazed through it once or twice over the past week and then started diving in today. Bingo. There it was on page 72 (of the Fireside paperback).&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Dance Close to the Revenue Line&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;&#8220;Everything you spend your time on should be assessed in terms of its proximity to the revenue line. What&#8217;s the revenue line? It&#8217;s the point at which your company is actually making or saving money.&lt;/p&gt;


&#8220;Which of the tasks on your to-do list are closest to your company&#8217;s revenue line? In most cases, it&#8217;s the activity that will immediately do the following:
&lt;ol&gt;
    &lt;li&gt;Generate revenue&lt;/li&gt;
    &lt;li&gt;Create the product or deliver the service&lt;/li&gt;
    &lt;li&gt;Save the company money&lt;/li&gt;
&lt;/ol&gt;
          </content>  </entry>
</feed>
