<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/stylesheets/rss.css" type="text/css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Robby on Rails: Tag design</title>
    <link>http://www.robbyonrails.com/articles/tag/design</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>thoughts.sort_by{|t| t[:topic]}.collect </description>
    <item>
      <title>Tip: Link to Unimplemented</title>
      <description>&lt;p&gt;Throughout our design and development process, we&amp;#8217;re working around areas of the site that are not yet implemented but we also want to be able to allow our clients to demo their application. In an effort to manage their expectations, we need to be careful about what we link to. If a page/widget isn&amp;#8217;t ready to be demo&amp;#8217;d yet, we should avoid providing pathways to get interact with or navigate there. However, when we&amp;#8217;re implementing &lt;span class="caps"&gt;HTML&lt;/span&gt;/CSS for pages, it&amp;#8217;s sometimes makes sense to not hide certain things on the screen.&lt;/p&gt;


	&lt;p&gt;For example, let&amp;#8217;s suppose that you&amp;#8217;re working on the primary navigation of an application. You know what the other sections are going to be, but you&amp;#8217;ve only implemented a few of them so far. Your &lt;span class="caps"&gt;HTML&lt;/span&gt;/CSS person is working on the design for the navigation and wants to have them be proper links&amp;#8230; even to pages that don&amp;#8217;t yet exist.&lt;/p&gt;


	&lt;p&gt;One option, which is quite common, is to provide a link with &lt;code&gt;href="#"&lt;/code&gt;. This works to some extent, but when people click on things, they naturally expect something to happen in response.&lt;/p&gt;


	&lt;p&gt;This approach doesn&amp;#8217;t mesh well with our team as we don&amp;#8217;t really want to field any questions like, &amp;#8220;the navigation links are all broken. Nothing happens!&amp;#8221;&lt;/p&gt;


	&lt;p&gt;So, a pattern that we&amp;#8217;ve been using for a while is to trigger a javascript alert for every link within an implemented area that is linking to something that isn&amp;#8217;t yet implemented.&lt;/p&gt;


	&lt;p&gt;Let&amp;#8217;s take a really basic javascript function like:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
# public/javascripts/application.js
function unimplemented() {
  alert("NOTICE\n\nThis feature is not implemented yet. Please check back again soon!");
}
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;This allows us to do the following:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  &amp;lt;a href="javascript:unimplemented();"&amp;gt;link text&amp;lt;/a&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;When someone clicks the link, they&amp;#8217;ll see a typical javascript alert message. This informs our clients/beta testers that we&amp;#8217;re paying attention to what works and what doesn&amp;#8217;t.&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/ecx1/unimplemented"&gt;&lt;img src="http://img.skitch.com/20080327-pbcddnkj85bu6m9x7mspme5y6.preview.jpg" alt="unimplemented" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080"&gt;Uploaded with &lt;a href="http://plasq.com/"&gt;plasq&lt;/a&gt;&amp;#8217;s &lt;a href="http://skitch.com"&gt;Skitch&lt;/a&gt;!&lt;/span&gt;&lt;/div&gt;

	&lt;p&gt;Let&amp;#8217;s take it a step further and push this into a view helper.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
# app/helpers/application_helper.rb
def link_to_unimplemented( link_text, *args )
  link_to_function( link_text, 'unimplemented()', *args)
end
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Now, we&amp;#8217;re able to use &lt;code&gt;link_to_unimplemented&lt;/code&gt; and pass any arguments that you&amp;#8217;d pass to the default &lt;code&gt;link_to&lt;/code&gt; view helper.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
&amp;lt;%= link_to_unimplemented( 'link text', { :class =&amp;gt; 'link_class_name' } ) -%&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Now our web designers can go about their work and use this helper as necessary.&lt;/p&gt;


	&lt;p&gt;An nice benefit for doing this is that we have a pattern that we follow so that we can rely upon to make sure that we don&amp;#8217;t forget anything. This is the equivalent of adding @TODO@s throughout our code base.&lt;/p&gt;


	&lt;p&gt;If we search through &lt;code&gt;app/views&lt;/code&gt; for &amp;#8216;&lt;strong&gt;&lt;code&gt;link_to_unimplemented&lt;/code&gt;&lt;/strong&gt;&amp;#8217; we should be able to prevent missing any broken links. In the next screenshot, I&amp;#8217;m using &lt;code&gt;grep&lt;/code&gt; with colorized matches.&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/ecxh/unimplemented-2"&gt;&lt;img src="http://img.skitch.com/20080327-eg83hqhgpspk4n71hquswjpasf.preview.jpg" alt="unimplemented 2" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080"&gt;Uploaded with &lt;a href="http://plasq.com/"&gt;plasq&lt;/a&gt;&amp;#8217;s &lt;a href="http://skitch.com"&gt;Skitch&lt;/a&gt;!&lt;/span&gt;&lt;/div&gt; 

	&lt;p&gt;As you can see, we have something left to implement in that area of the application. :-)&lt;/p&gt;


	&lt;p&gt;This has been one of those lightweight patterns that we&amp;#8217;ve been able to adopt and it&amp;#8217;s definitely helped manage the expectations of our clients throughout our development process.&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;d love to hear your thoughts on this. How does your team handle things like this?&lt;/p&gt;


	&lt;h2&gt;Related Posts&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.robbyonrails.com/articles/2007/08/01/designers-developers-and-the-x_-factor"&gt;Designers, Developers, and the x_ Factor&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://www.robbyonrails.com/articles/2007/10/06/spice-up-your-terminal-with-colored-grep-pattern-results"&gt;Spice up your Terminal with colored grep pattern results&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;
</description>
      <pubDate>Thu, 27 Mar 2008 06:10:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:f2aad3fb-9728-4db3-8504-a7bf2bd76b24</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/03/27/tip-link-to-unimplemented</link>
      <category>Ruby on Rails</category>
      <category>Ruby</category>
      <category>Programming</category>
      <category>PLANET ARGON</category>
      <category>clients</category>
      <category>javascript</category>
      <category>helper</category>
      <category>development</category>
      <category>design</category>
      <category>html</category>
      <category>tip</category>
    </item>
    <item>
      <title>Review: FogBugz, part 1</title>
      <description>&lt;p&gt;Today, I thought that I&amp;#8217;d give &lt;a href="http://www.fogcreek.com/FogBugz/"&gt;FogBugz&lt;/a&gt; a quick trial. A few of our &lt;a href="http://planetargon.com/consulting.html"&gt;Rails consulting&lt;/a&gt; clients use it and I&amp;#8217;m hearing that others are as well.&lt;/p&gt;


	&lt;p&gt;Along the way, I&amp;#8217;m bringing one of &lt;a href="http://plasq.com/skitch"&gt;my favorite tools&lt;/a&gt; so that I can share some things thoughts (visually) along the way.&lt;/p&gt;


	&lt;h2&gt;Signing up for a free trial&lt;/h2&gt;


	&lt;p&gt;My first impression of FogBugz was, &amp;#8220;nice homepage design&amp;#8230; but what is that screenshot of?&amp;#8221;&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/re9e/fogbugz-project-management-software"&gt;&lt;img src="http://img.skitch.com/20080101-mn5fjy9ud1tfu3jaff2j6w7i91.preview.jpg" alt="FogBugz - Project Management Software" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a style="font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080" href="http://plasq.com/skitch"&gt;Uploaded with Skitch!&lt;/a&gt;&lt;/div&gt;

	&lt;p&gt;I&amp;#8217;m not a designer, but the interface in the screenshot isn&amp;#8217;t jumping out to me as something that you&amp;#8217;d expect to see in a modern web application. While I appreciate the default browser colors for links (this is really important)... I think they could have found a better way to distinguish which bug links you&amp;#8217;ve previously viewed. It&amp;#8217;s very likely that you&amp;#8217;ll most bugs many times, so having the color be different might not make sense in the same way it would when reading content on a web site. Again, I&amp;#8217;m not a designer and I&amp;#8217;d be curious to hear from a designer on this. Just something that I initially thought.&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/re9k/fogbugz-project-management-software"&gt;&lt;img src="http://img.skitch.com/20080101-gcbmutaqm96cku2xtbw1k852pd.preview.jpg" alt="FogBugz - Project Management Software" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a style="font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080" href="http://plasq.com/skitch"&gt;Uploaded with Skitch!&lt;/a&gt;&lt;/div&gt;

	&lt;p&gt;Okay, this sign up form seems really easy to start with. I&amp;#8217;m used to free trials being really simple to get going. So, I enter in my sub-domain selection and provide my email address on the following page so that they can confirm that I&amp;#8217;m legit.&lt;/p&gt;


	&lt;p&gt;(several minutes later&amp;#8230;)&lt;/p&gt;


	&lt;p&gt;Okay, this process required me to jump from my browser to my email to my browser &lt;strong&gt;back to my email&lt;/strong&gt; and then back again to my browser. It&amp;#8217;s really frustrating for an application to force me to go back and forth between my browser and email client. I think the initial email is something I can cope with, but I found it a bit silly to have to wait for another email to receive a link to login to my new account, especially considering I already knew the &lt;span class="caps"&gt;URL&lt;/span&gt; as that was the first thing that I provided. The application could have provided the link (or redirected me) to the following form, which I had a few things to comment on.&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://skitch.com/robbyrussell/re9s/change-choose-wtf"&gt;&lt;img src="http://img.skitch.com/20080101-896cy8drte742fj14f9pnkgu52.preview.jpg" alt="change choose wtf" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a style="font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080" href="http://plasq.com/skitch"&gt;Uploaded with Skitch!&lt;/a&gt;&lt;/div&gt;

	&lt;p&gt;At first glance, this might not seem like much&amp;#8230; but I&amp;#8217;m becoming more and more disappointed by the choice of language that we&amp;#8217;re using in applications. First of all, this is the &lt;strong&gt;first&lt;/strong&gt; time that I&amp;#8217;ve seen this page. I&amp;#8217;m not &lt;em&gt;changing&lt;/em&gt; my password&amp;#8230; what you&amp;#8217;re really asking me to do is, &amp;#8220;Create (or set) a password.&amp;#8221; There are other verbs that you could use here, but &lt;strong&gt;change&lt;/strong&gt; really isn&amp;#8217;t appropriate.  Also, &lt;a href="http://dictionary.reference.com/browse/choose"&gt;choose&lt;/a&gt; doesn&amp;#8217;t work here either.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  chose; choos·ing.
  –verb (used with object)
  1.    to select from a number of possibilities; pick by preference:  
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;What am I choosing from? Again, you&amp;#8217;re asking me to create a new password.. not change one and definitely not choose one, unless you&amp;#8217;re implying that I should choose one from a collection of ones that I already use.&lt;/p&gt;


	&lt;p&gt;One might argue that we can make an assumption about what they mean, but it&amp;#8217;s simple problems like this that can seriously confuse people that use the software we design and develop. As people interact with minor problems like this, their perception of the software as being helpful and friendly&amp;#8230; can quickly deteriorate.&lt;/p&gt;


	&lt;p&gt;Okay, so that was my first several minutes of getting into my new FogBugz account.&lt;/p&gt;


	&lt;p&gt;Coming soon&amp;#8230; Robby will share his thoughts on managing bugs with FogBugz.&lt;/p&gt;
</description>
      <pubDate>Tue, 01 Jan 2008 15:43:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:45d7ba05-55b1-409f-8d45-ab87e05b8831</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2008/01/01/review-fogbugz-part-1</link>
      <category>interaction</category>
      <category>fogbugz</category>
      <category>review</category>
      <category>design</category>
      <category>IxD</category>
      <category>usability</category>
      <category>development</category>
      <category>users</category>
    </item>
    <item>
      <title>That Checkbox Needs a Label</title>
      <description>&lt;p&gt;As a user of many web applications, I often find myself noticing little things that slow me down. One such thing is the use of checkboxes in web forms. It&amp;#8217;s not the problem of checkboxes itself, it&amp;#8217;s the face that checkboxes require the user to really focus their attention to a fairly small box on the page and perform a click inside. If you&amp;#8217;re filling out a form really quickly, it&amp;#8217;s almost guaranteed that you&amp;#8217;ll take advantage of you your tab key to get through each field quickly. Sometimes there are &lt;code&gt;select&lt;/code&gt; boxes, which require the user to make selections with their mouse. Checkboxes drive me crazy because it requires more time to position the cursor and move on.&lt;/p&gt;


	&lt;p&gt;So, when I see a form like this, I don&amp;#8217;t see it being very quick to interact with.&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://myskitch.com/robbyrussell/missing_label-20071201-222047.jpg" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;While I&amp;#8217;m not in love with the date selection interface here, my bigger pain has been the checkbox in the form. Why? Because they forgot to use the &lt;code&gt;&amp;lt;label for=""&amp;gt;&lt;/code&gt; HTML tag.&lt;/p&gt;


	&lt;p&gt;What&amp;#8217;s the problem? Well, I don&amp;#8217;t have the convenience of clicking on the label text, which would toggle the corresponding checkbox.&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://myskitch.com/robbyrussell/missing_label-20071201-222751.jpg" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;I know, many of you know all about this&amp;#8230; but I run into this problem everywhere. This is an accessibility issue for people and really just increases the chances for a frustrating user experience. When you use the label tag properly&amp;#8230; it will provide a larger amount of the screen for people to click, which reduces the chance of not clicking in the right spot. The label tag was designed with this in mind so that people could click &lt;em&gt;close enough&lt;/em&gt; to trigger the desired action.&lt;/p&gt;


	&lt;p&gt;Here is an example of where it becomes really useful.&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://myskitch.com/robbyrussell/good_label_for_usage-20071201-224846.jpg" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;So, the lesson? Please remember to use the label for tag. :-)&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
&amp;lt;input type="checkbox" id="remember_me" name="remember_me" value="true" /&amp;gt;
&amp;lt;label for="remember_me"&amp;gt;Remember info?&amp;lt;/label&amp;gt;  
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;This is an easy thing to forget when building web applications. We&amp;#8217;ve forgot and I&amp;#8217;m sure you have too. I just wanted to point it out though because I see this happen so much&amp;#8230; even in new sites.&lt;/p&gt;


	&lt;p&gt;Perhaps you run into similar problems with web applications that can be fixed with just a little more &lt;span class="caps"&gt;HTML&lt;/span&gt;. Care to share your experiences?&lt;/p&gt;


	&lt;p&gt;For more information, read &lt;a href="http://diveintoaccessibility.org/day_28_labeling_form_elements.html"&gt;Labeling form elements&lt;/a&gt;  from the &lt;a href="http://diveintoaccessibility.org/"&gt;Dive Into Accessibility&lt;/a&gt; site.&lt;/p&gt;
</description>
      <pubDate>Sun, 02 Dec 2007 00:43:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:efe7de1c-ff24-41f9-9ef0-4cdb23f20523</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2007/12/02/that-checkbox-needs-a-label</link>
      <category>Programming</category>
      <category>html</category>
      <category>forms</category>
      <category>checkboxes</category>
      <category>interaction</category>
      <category>design</category>
      <category>web</category>
      <category>applications</category>
      <category>usability</category>
      <category>IxD</category>
      <category>accessibility</category>
    </item>
    <item>
      <title>Saying Goodbye Was Never This Hard</title>
      <description>&lt;p&gt;There was a post the other day on Signal vs Noise about the pain of opting out of mailing lists titled, &lt;a href="http://www.37signals.com/svn/posts/723-redonkulous-unsubscribe-delays"&gt;Redonkulous unsubscribe delays&lt;/a&gt;, which I was reminded of after the following experience.&lt;/p&gt;


	&lt;p&gt;Earlier today, I got an email notification from my old &lt;a href="http://friendster.com"&gt;Friendster&lt;/a&gt; account, which ended up being spam. I hadn&amp;#8217;t logged into the account in ages and looked around at my profile and others. No meaningful interaction between my friends in a few years. It&amp;#8217;s felt like a ghost town. So, I thought&amp;#8230; &amp;#8220;should I just delete my account?&amp;#8221; I was thinking about doing the same thing with my &lt;a href="http://facebook.com"&gt;Facebook&lt;/a&gt; account as well, because I&amp;#8217;m getting tired of being invited to applications a few times a day due to a friend leaving my name checked when they sign up for a game. (this is getting old&amp;#8230;)&lt;/p&gt;


	&lt;p&gt;So, I decided to kill the Friendster account, which I&amp;#8217;ve had since February 2003. Oh&amp;#8230; the good ole days of social-networking sites.&lt;/p&gt;


	&lt;p&gt;Upon filling out a form I got the following error with the notification, &amp;#8220;Please list the other social networking site you switched to.&amp;#8221;&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://myskitch.com/robbyrussell/friendster_cancel_account-20071201-213815/"&gt;&lt;img src="http://myskitch.com/robbyrussell/friendster_cancel_account-20071201-213815.jpg/preview.jpg" alt="Friendster Cancel Account" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a style="font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080" href="http://plasq.com/skitch"&gt;Uploaded with Skitch!&lt;/a&gt;&lt;/div&gt;

	&lt;p&gt;The tone of this error message is very rude and helped support my decision to leave the site.&lt;/p&gt;


	&lt;p&gt;While I appreciate that they&amp;#8217;re looking for feedback, they shouldn&amp;#8217;t demand it out of me. As a result, my response was&amp;#8230;&lt;/p&gt;


&lt;div class="thumbnail"&gt;&lt;a href="http://myskitch.com/robbyrussell/friendster_cancel_account-20071201-214935/"&gt;&lt;img src="http://myskitch.com/robbyrussell/friendster_cancel_account-20071201-214935.jpg/preview.jpg" alt="Friendster Cancel Account" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a style="font-family: Lucida Grande, Trebuchet, sans-serif, Helvetica, Arial; font-size: 10px; color: #808080" href="http://plasq.com/skitch"&gt;Uploaded with Skitch!&lt;/a&gt;&lt;/div&gt;

	&lt;p&gt;Wait a minute. You&amp;#8217;re demanding that I list the sites that I&amp;#8217;m switching to&amp;#8230; &lt;strong&gt;in 20 characters or less&lt;/strong&gt;? Thanks for giving me the opportunity to &lt;span class="caps"&gt;LOLBUG&lt;/span&gt; you. Sigh. Who makes these interaction decisions there?&lt;/p&gt;


	&lt;p&gt;If they really wanted to get some useful feedback, perhaps they could have asked me nicer.&lt;/p&gt;


	&lt;p&gt;So, I decided to head over to Facebook and compare their process.&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://myskitch.com/robbyrussell/facebook___deactivate_account-20071201-215619.jpg" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;At first glance, this looks very much like the form that I was presented with on Friendster. Except that I can only select one reason why I am leaving and I can think of a few. However, when I made a selection&amp;#8230; something surprised me.&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://myskitch.com/robbyrussell/facebook___deactivate_account-20071201-220041.jpg" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;Okay, so maybe I&amp;#8217;ll leave my Facebook account around for the time being. Perhaps there is a Facebook application out there that will be get my attention.. but to date, this has yet to happen.&lt;/p&gt;


	&lt;p&gt;&lt;small&gt;This post is dedicated to the memory of Robby Russell&amp;#8217;s Friendster Profile. Feb. 2003 &amp;#8211; Dec. 2007. R.I.P.&lt;/small&gt;&lt;/p&gt;
</description>
      <pubDate>Sun, 02 Dec 2007 00:07:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:259e1138-6774-4ce5-bc8d-279bcaf765a1</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2007/12/02/saying-goodbye-was-never-this-hard</link>
      <category>interaction</category>
      <category>design</category>
      <category>friendster</category>
      <category>facebook</category>
      <category>lolbug</category>
      <category>optout</category>
    </item>
    <item>
      <title>Skitch... my favorite desktop application of 2007?</title>
      <description>&lt;p&gt;It just occurred to me that &lt;a href="http://myskitch.com/robbyrussell/rmad_-_action_alerts__nalgene_boycott-20070712-161219/"&gt;my first Skitch&lt;/a&gt; was on July 7th, 2007. 7/7/7. I&amp;#8217;ve been meaning to post an article about how Skitch has changed the way &lt;a href="http://planetargon.com/about.html"&gt;our team&lt;/a&gt; approaches reporting bugs and communicating ideas visually.&lt;/p&gt;


	&lt;p&gt;First of all, &lt;a href="http://plasq.com/skitch"&gt;the Skitch web site&lt;/a&gt; advertises it (&lt;a href="http://plasq.com/skitch#demo"&gt;see video&lt;/a&gt;) as a fun tool for playing with photos and sharing stuff with friends/family. While this is true, I think their bigger market could be those of us who work in the web design and development community. It took a less than a week for Skitch to become a tool that I rely on the most during my day to day work and since it keeps surprising me that people aren&amp;#8217;t using it and/or haven&amp;#8217;t heard about it&amp;#8230; I thought that I&amp;#8217;d share how we&amp;#8217;re using it at &lt;a href="http://planetargon.com"&gt;Planet Argon&lt;/a&gt;.&lt;/p&gt;


	&lt;h2&gt;Introducing &amp;#8220;LOLBUGZ&amp;#8221;&lt;/h2&gt;


	&lt;p&gt;Our team is currently using &lt;a href="http://lighthouseapp.com"&gt;Lighthouse&lt;/a&gt; for managing bugs/tickets for internal and client projects. If there is one way to slow down bug fixing cycle.. .it&amp;#8217;s the ticket submission process. It takes a lot of time and commitment to try and communicate some problems that you&amp;#8217;ll find in a web application. This is why screenshots can be so useful to helping speed up the process. Skitch allows us to not only provide a screenshot really quickly, but it gives us the ability to focus our attention with shapes and text, which provides more context when viewing an image.&lt;/p&gt;


	&lt;p&gt;For example, here are a few real-world Skitches that I&amp;#8217;ve used to report some problems.&lt;/p&gt;


	&lt;p&gt;What happened to this drop down?&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://myskitch.com/robbyrussell/highrise_dropdown...-20071102-153422.jpg/preview.jpg" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;This pagination needs some &lt;span class="caps"&gt;CSS&lt;/span&gt;-Love!&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://myskitch.com/robbyrussell/contiki_holidays___contikipedia___articles_tagged_with__europe-20071014-173118.jpg/preview.jpg" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;Oh no! Tags are getting grouped together&amp;#8230;&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://myskitch.com/robbyrussell/contiki-20070926-165250.jpg/preview.jpg" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;Styling has gone crazy&amp;#8230;&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://myskitch.com/robbyrussell/contiki_holidays___robbyrussell_s_profile-20071014-232305.jpg/preview.jpg" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;I mastered an unordered list! (hooray!!)&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://myskitch.com/robbyrussell/contiki-20070926-162150.jpg/preview.jpg" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;This list isn&amp;#8217;t scaling anymore&amp;#8230;&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://myskitch.com/robbyrussell/contiki__create_a_new_ticket-20071001-202613.jpg/preview.jpg" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;Side note: &lt;span class="caps"&gt;LOL BUGZ&lt;/span&gt; was a term coined by Rick Olson at &lt;a href="http://activereload.com"&gt;Active Reload&lt;/a&gt; to describe the tickets that I post for &lt;a href="http://lighthouseapp.com"&gt;Lighthouse&lt;/a&gt;. ;-)&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://myskitch.com/robbyrussell/tickets_projects-20070925-141221.jpg/preview.jpg" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;Trying out 15 during the initial releases for the iPhone&amp;#8230; bug report sent via twitter to Erik Kastner.&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://myskitch.com/robbyrussell/15_on_iphone_alpha-20071120-104208.jpg" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;As you can see, using Skitch helps communicate some very specific things without needing to type a huge description. Of course, we do try our best to add more context with our tickets. For example, here is a &lt;a href="http://activereload.lighthouseapp.com/projects/44/tickets/444-members-people-and-the-confusion"&gt;real-world example of a ticket&lt;/a&gt; that I posted on Lighthouse. As you&amp;#8217;ll see, there are a few skitches embedded in the tickets, which works &lt;em&gt;much&lt;/em&gt; better  than attaching screenshots to tickets.&lt;/p&gt;


	&lt;p&gt;One of the best features of Skitch is it&amp;#8217;s work-flow. Within a few seconds, I can do the following tasks.&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Take a screenshot of a specific region of my screen&lt;/li&gt;
		&lt;li&gt;Add some arrows and text&lt;/li&gt;
		&lt;li&gt;Click on &lt;strong&gt;Webpost&lt;/strong&gt;, which will upload directly to myskitch.com&lt;/li&gt;
		&lt;li&gt;Click on &lt;strong&gt;Share&lt;/strong&gt; to navigate to the new upload&lt;/li&gt;
		&lt;li&gt;Click on the &lt;strong&gt;embed&lt;/strong&gt; textfield and it uses JS to copy the embed html into my paste buffer&lt;/li&gt;
		&lt;li&gt;Paste the html snippet directly into the ticket that I&amp;#8217;m reporting&lt;/li&gt;
		&lt;li&gt;Submit my &lt;span class="caps"&gt;LOL BUG&lt;/span&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Side note: it also allows you to upload to Flickr, a ftp account, etc.&lt;/p&gt;


	&lt;p&gt;Over the past four months, Skitch has become one of my favorite &lt;span class="caps"&gt;OS X&lt;/span&gt; tools. The interface is lightweight and the workflow is almost perfect (feature request: providing the embed code in my paste buffer without needing to go to myskitch would be A+++)&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;ve also used &lt;a href="http://jingproject.com/"&gt;Jing&lt;/a&gt;, which works on Windows and &lt;span class="caps"&gt;OS X&lt;/span&gt; and does video. I&amp;#8217;ve not found it to be as intuitive for working in this manner. In fact, the work-flow leaves a lot to be desired. However! It does do video and this has come in handy a few times for showing people some &amp;#8220;live&amp;#8221; interaction-type bugs that can&amp;#8217;t be communicated as easily through text/images.&lt;/p&gt;


	&lt;p&gt;If you&amp;#8217;re not using Skitch yet and are on &lt;span class="caps"&gt;OS X&lt;/span&gt;&amp;#8230; I highly recommend that you try it out for a few weeks during a bug fixing sprint. We&amp;#8217;ve gotten our clients and almost everybody on the team using it in this fashion. The productivity increases haven&amp;#8217;t gone unnoticed.&lt;/p&gt;


	&lt;p&gt;That&amp;#8217;s not to say that it&amp;#8217;s not fun for point out things that aren&amp;#8217;t related to your project bugs. ;-)&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://myskitch.com/robbyrussell/home__pitchfork-20070728-124442.jpg/preview.jpg" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://myskitch.com/robbyrussell/happy_bosses_day___-20071016-080950.jpg/preview.jpg" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://myskitch.com/robbyrussell/planetargon-street-2-20071010-093822.jpg/preview.jpg" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;Happy Skitching!&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;&lt;span class="caps"&gt;UPDATE&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;


	&lt;p&gt;Plasq liked the writeup and gave me 50 extra invites to pass out for Skitch. So, if you&amp;#8217;re in need of one&amp;#8230; &lt;a href="mailto:robby@planetargon.com"&gt;ask me via email&lt;/a&gt;. Thanks Plasq team!&lt;/p&gt;
</description>
      <pubDate>Tue, 20 Nov 2007 13:04:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:7b519cb1-f5aa-43cb-ac60-60ca7eae194c</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2007/11/20/skitch-my-favorite-desktop-application-of-2007</link>
      <category>PLANET ARGON</category>
      <category>bugs</category>
      <category>skitch</category>
      <category>tickets</category>
      <category>design</category>
      <category>development</category>
      <category>agile</category>
      <category>apple</category>
      <category>osx</category>
    </item>
    <item>
      <title>Zeldman on Web Design</title>
      <description>&lt;p&gt;In a new article on &lt;a href="http://alistapart.com"&gt;A List Apart&lt;/a&gt;, Jeffrey Zeldman writes:&lt;/p&gt;


	&lt;blockquote&gt;
		&lt;p&gt;&amp;#8220;Some who don’t understand web design nevertheless have the job of creating websites or supervising web designers and developers. Others who don’t understand web design are nevertheless professionally charged with evaluating it on behalf of the rest of us. Those who understand the least make the most noise. They are the ones leading charges, slamming doors, and throwing money—at all the wrong people and things.&amp;#8221;&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;p&gt;He goes on to describe Web Design as, &lt;em&gt;&amp;#8220;as the creation of digital environments that facilitate and encourage human activity; reflect or adapt to individual voices and content; and change gracefully over time while always retaining their identity.&amp;#8221;&lt;/em&gt;&lt;/p&gt;


	&lt;p&gt;Read the rest of the article, &lt;a href="http://www.alistapart.com/articles/understandingwebdesign"&gt;Understanding Web Design&lt;/a&gt; on alistapart.com.&lt;/p&gt;
</description>
      <pubDate>Tue, 20 Nov 2007 12:01:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:ef61cc5a-dc64-45fd-97cc-598a63a6f23c</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2007/11/20/zeldman-on-web-design</link>
      <category>design</category>
      <category>web</category>
      <category>zeldman</category>
      <category>quotes</category>
      <category>link</category>
    </item>
    <item>
      <title>RubyURL: new design and code base</title>
      <description>&lt;p&gt;Yesterday evening, I deployed the new version of &lt;a href="http://rubyurl.com"&gt;RubyURL&lt;/a&gt;. This was a collaborative effort between &lt;a href="http://chriszgriffin.com/"&gt;Chris Griffin&lt;/a&gt; and I, which we&amp;#8217;re happy to finally push live.&lt;/p&gt;


	&lt;p&gt;There are a few things that we&amp;#8217;re going to push out in near future, such as an &lt;span class="caps"&gt;API&lt;/span&gt; and a new RubyGem.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.flickr.com/photos/robbyrussell/1051199668/" title="Photo Sharing"&gt;&lt;img src="http://farm2.static.flickr.com/1331/1051199668_84a2781b5e.jpg" width="500" height="458" alt="RubyURL » Keep it short (and sweet)" /&gt;&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Chris volunteered to work on the new design and I did most of the programming in Ruby on Rails. When we worked on this, we really wanted to keep the process as simple as possible, despite &lt;a href="http://www.robbyonrails.com/articles/2007/07/16/rubyurl-2-0-on-the-horizon"&gt;some of the problems&lt;/a&gt; that the site has been having.&lt;/p&gt;


	&lt;p&gt;In the end, we have a Rails application that is only 85 lines of code and has a 1:2.3 code-to-spec ratio. I wanted to keep it under 100 lines of code. This means that there is some breathing room for further development.&lt;/p&gt;


	&lt;p&gt;We also tried out a beta account that I was given for &lt;a href="http://roundhaus.com/"&gt;RoundHaus&lt;/a&gt; for Subversion hosting. We had a really good experience using their service and were impressed by the plethora of useful features that came with the repository, such as continuous integration, rcov/code coverage stats, and twitter integration!.&lt;/p&gt;


	&lt;p&gt;If you find a bug, be sure to submit a ticket on the &lt;a href="http://planetargon.lighthouseapp.com/projects/4059-rubyurl/"&gt;RubyURL bug tracker&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;On a side note, we deployed this on a brand new &lt;a href="http://railsboxcar.com"&gt;Rails Boxcar&lt;/a&gt;, our new hosting solution that will be launched in the very near future. ;-)&lt;/p&gt;
</description>
      <pubDate>Wed, 08 Aug 2007 08:58:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:9306d9e7-32b5-4afc-ba15-46cc3bc8590a</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2007/08/08/rubyurl-new-design-and-code-base</link>
      <category>RubyURL</category>
      <category>Ruby on Rails</category>
      <category>Ruby</category>
      <category>Programming</category>
      <category>PLANET ARGON</category>
      <category>rubyurl</category>
      <category>design</category>
      <category>development</category>
      <category>launch</category>
      <category>boxcar</category>
      <category>rubyonrails</category>
      <category>rails</category>
    </item>
    <item>
      <title>Designers, Developers, and the x_ Factor</title>
      <description>&lt;p&gt;Our team is lucky enough to be in a position where we have both designers &lt;span class="caps"&gt;AND&lt;/span&gt; developers working on the same code base in parallel.&lt;/p&gt;


	&lt;p&gt;Since Ruby on Rails adopts the Model-View-Control pattern for separating business logic from the presentation layer, we&amp;#8217;re able to give our designers a lot of breathing room to to design the interface, whether it&amp;#8217;s for interaction or aesthetic reasons. However, sometimes this breathing room has resulted in small bugs slipping into the application interface. In general, nothing disastrous, but each bug that slips into the queue, slows down the project and we want to avoid as much of that as possible.&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;d like to share a few issues that we&amp;#8217;ve seen occur on various occasions, and then show you what we&amp;#8217;ve done to avoid them happening again.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Scenario #1:&lt;/strong&gt; The case of the changed &lt;code&gt;div&lt;/code&gt; id, (victim: designer)&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Designer adds a few &lt;span class="caps"&gt;HTML&lt;/span&gt; elements to the page, defines an &lt;code&gt;id&lt;/code&gt; on a &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; tag and styles it with &lt;span class="caps"&gt;CSS&lt;/span&gt;.&lt;/li&gt;
		&lt;li&gt;A few days later, a developer needs to make some changes, tests it in their favorite browser and commits.&lt;/li&gt;
		&lt;li&gt;Later, the designer doesn&amp;#8217;t understand why the styling is all messed up. &amp;#8220;It &lt;em&gt;was&lt;/em&gt; working fine.&amp;#8221; &lt;/li&gt;
		&lt;li&gt;...minutes, hours&amp;#8230; go by where the designer tries to track down the issue. &amp;#8220;Oh! Someone renamed the &lt;code&gt;id&lt;/code&gt; in this &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; tag. Sigh.&amp;#8221; &lt;/li&gt;
		&lt;li&gt;Developer apologies, but explains that he needed to do it because he needed to make it work with his new &lt;span class="caps"&gt;RJS&lt;/span&gt; code.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;&lt;strong&gt;Scenario #2:&lt;/strong&gt; The case of the changed &lt;code&gt;div&lt;/code&gt; id, (victim: developer)&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Developer is implementing this cool new Ajax feature into the web application
	&lt;ul&gt;
	&lt;li&gt;The code relies on there being one or many &lt;span class="caps"&gt;HTML&lt;/span&gt; elements in the &lt;span class="caps"&gt;DOM&lt;/span&gt; with specific &lt;code&gt;id&lt;/code&gt; values defined.&lt;/li&gt;
	&lt;/ul&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Example: &lt;code&gt;&amp;lt;div id="notification_message"&amp;gt;&lt;/code&gt;&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;A few days later, a designer is making some changes to the layout and needs to restyle some of the view that this &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; tag is defined. Designer decides to change the id to a different value for any variety of reasons. (or perhaps they changed it to use a class instead of styling it by the id). Often times, we don&amp;#8217;t know who set the id or class&amp;#8230; and many times the developers aren&amp;#8217;t savvy enough with &lt;span class="caps"&gt;HTML&lt;/span&gt; and designers end up cleaning things up a bit. &lt;/li&gt;
		&lt;li&gt;Later, code is checked in and designer didn&amp;#8217;t notice that the Ajax was now breaking as they weren&amp;#8217;t focusing on just the layout.&lt;/li&gt;
		&lt;li&gt;Day or two later, developer sees bug, &amp;#8220;Feature X isn&amp;#8217;t working, throwing JavaScript error&amp;#8230;&amp;#8221; &lt;/li&gt;
		&lt;li&gt;Developer is confused, &amp;#8220;Hey, that was working! What happened?&amp;#8221; &lt;/li&gt;
		&lt;li&gt;Developer tracks down the problem, discusses with designer, they figure out a solution. Problem solved.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;I could outline a few other examples, but I really wanted to highlight these two types of situations, as our team has seen this happen on several occasions. Luckily, we&amp;#8217;ve learned through these experiences and have taken some measures to try and avoid them in the future.&lt;/p&gt;


	&lt;h2&gt;Moving forward (together)&lt;/h2&gt;


	&lt;p&gt;Both of the examples above, were essentially the same problem, but resulted in problems for a different role in the design and development cycle. While, I&amp;#8217;ve definitely been the victim of #2 several times myself, I know that I&amp;#8217;ve also been the guilty of #1. So, what can we do as designers and developers to work with each other without causing these little problems from occurring? (remember: many little problems can add up to a lot of wasted time spent resolving them)&lt;/p&gt;


	&lt;p&gt;Several months ago, I had a meeting with &lt;a href="http://chriszgriffin.com/"&gt;Chris&lt;/a&gt; (User Interface Designer) and &lt;a href="http://blog.imperialdune.com/"&gt;Graeme&lt;/a&gt; (Lead Architect/Developer) to discuss this very problem. At the time, we were implementing a lot of Ajax into an application and were occasionally running into Scenario #2. We discussed a few possible ways of communicating that, &amp;#8220;yes, this div id should &lt;span class="caps"&gt;NOT&lt;/span&gt; be changed (without talking to a developer first)!&amp;#8221;&lt;/p&gt;


	&lt;h3&gt;Idea 1: Comment our &amp;#8220;special&amp;#8221; &lt;span class="caps"&gt;HTML&lt;/span&gt; elements&lt;/h3&gt;


	&lt;p&gt;We discussed using ERb comments in our views to do something like the following.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  &amp;lt;% # no seriously, please don't change this id, it's needed for some Ajax stuff %&amp;gt;
  &amp;lt;div id="notification_message"&amp;gt;
    ...
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;We all agreed that, while effective, it was going to clutter up our &lt;span class="caps"&gt;RHTML&lt;/span&gt; code more than any of us desired.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Team Response:&lt;/strong&gt; &lt;em&gt;Meh.&lt;/em&gt;&lt;/p&gt;


	&lt;h3&gt;Idea 2: Reserve id&amp;#8217;s for developers&lt;/h3&gt;


	&lt;p&gt;Another idea that came up, was to ask that designers only use classes and ids wold be used by the developers when they needed it.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  &amp;lt;div id="developer_terriroty" class="designer_territory"&amp;gt;
    ...
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;Chris pointed out that this wasn&amp;#8217;t an ideal solution as there is a distinct case for when to use ids versus classes.. and he is very strict about adhering to the &lt;span class="caps"&gt;HTML&lt;/span&gt;/CSS standards.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Team Response&lt;/strong&gt;: &lt;em&gt;Not hot about it&amp;#8230;&lt;/em&gt;&lt;/p&gt;


	&lt;h3&gt;Idea 3: Naming convention for Ajax-dependent elements&lt;/h3&gt;


	&lt;p&gt;The third idea that was discussed, was specifying a naming convention for any elements that were needed by our Ajax code. We played around on the whiteboard with some ideas and settled on the idea that we&amp;#8217;d prefix our id&amp;#8217;s with something easy to remember for both designers and developers.&lt;/p&gt;


	&lt;p&gt;We agreed on&amp;#8230; &lt;code&gt;x_&lt;/code&gt; (x underscore), which would make an element id look something like this:&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  &amp;lt;div id="x_notification_message"&amp;gt;
    ...
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;&lt;strong&gt;x == ajax&lt;/strong&gt;... get it?&lt;/p&gt;


	&lt;p&gt;While this adds the strain of typing two more characters to much of our &lt;span class="caps"&gt;RJS&lt;/span&gt; code, we don&amp;#8217;t run into Scenario #2 very often anymore.&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  render :update do |page|
    page[:x_notification_message] = 'Something exciting happened... and this is your notification!'
    page[:x_notification_message].visual_effect :highlight
  end
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;or in client-side JavaScript (where we also use this)...&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;
  $('x_notification_message').do_something
&lt;/code&gt;&lt;/pre&gt;

	&lt;p&gt;I find that this helps our team keep a clear distinction between what can and shouldn&amp;#8217;t be changed in the views by our designers. Sometimes they have a good reason to do so, but they know that if there is &lt;code&gt;x_&lt;/code&gt;, then they should ask one of the developers on the team for assistance in renaming it without causing any problems in the application. It also allows our designers to add classes to these elements, or style the id that we&amp;#8217;ve defined.&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;Team Response&lt;/strong&gt;: &lt;em&gt;Wow, was that all we needed to agree on? Hooray!&lt;/em&gt;&lt;/p&gt;


	&lt;p&gt;This leads me to some other problems that have/may come up, but I&amp;#8217;ll discuss that in my next post on this topic, when I&amp;#8217;ll show you how we can use RSpec to avoid these sorts of designer versus developer problems.&lt;/p&gt;


	&lt;p&gt;If you&amp;#8217;re working in a similar environment, how are your designers and developers working, together, in perfect harmony?&lt;/p&gt;


	&lt;p&gt;Until next time, remember to &lt;a href="http://www.robbyonrails.com/articles/2007/05/23/hug-your-designer-day-part-2"&gt;hug your designer&lt;/a&gt;. ...and if you&amp;#8217;re still having developer &lt;em&gt;design&lt;/em&gt; your applications, consider hiring a designer. ;-)&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;&lt;span class="caps"&gt;UPDATE&lt;/span&gt;:&lt;/strong&gt; changed examples after a few comments about using div_for as another solution. (see comments for details)&lt;/p&gt;
</description>
      <pubDate>Wed, 01 Aug 2007 00:39:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:bcf3fb50-6b05-48cd-830f-43144d80c243</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2007/08/01/designers-developers-and-the-x_-factor</link>
      <category>Ruby on Rails</category>
      <category>Programming</category>
      <category>PLANET ARGON</category>
      <category>rails</category>
      <category>ajax</category>
      <category>development</category>
      <category>rubyonrails</category>
      <category>agile</category>
      <category>design</category>
      <category>process</category>
      <category>views</category>
      <category>designers</category>
      <category>developers</category>
      <category>rhtml</category>
      <category>erb</category>
      <category>conventions</category>
      <category>bugs</category>
    </item>
    <item>
      <title>RubyURL 2.0 on the horizon</title>
      <description>&lt;p&gt;&lt;a href="http://rubyurl.com"&gt;RubyURL&lt;/a&gt; was a project that I built about 2 1/2 years ago as a late night attempt to see what I could build and deploy with Ruby on Rails in a night. It&amp;#8217;s nearing 50,000 unique website links, has a Ruby gem that you can use with it, and rbot plugins.&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;ve rewritten it about three times in the past six months, to try out some new approaches, but haven&amp;#8217;t deployed with a new version as I&amp;#8217;ve been waiting for someone to help me with a new design. &lt;a href="http://chriszgriffin.com/"&gt;Chris&lt;/a&gt; has offered to help out and once we integrate his new design with it, we&amp;#8217;ll be launching it.&lt;/p&gt;


	&lt;p&gt;Everything is not great in RubyURL land though. It appears that it&amp;#8217;s become an easy target for comment spammers to abuse the site to generate rubyurls and paste those links in their spam comments. Several pissed off bloggers, forum administrators, and system administrators have emailed me to complain that I&amp;#8217;m spamming their site. Sadly, even with a basic disclaimer on the site, they still like to blame me for their spam. It&amp;#8217;s gotten common enough, that I&amp;#8217;ve written a template email that I respond with that explains how the site works and that I&amp;#8217;m not accountable for people posting links to my &lt;span class="caps"&gt;URL&lt;/span&gt; redirect tool.&lt;/p&gt;


	&lt;p&gt;You can see that it&amp;#8217;s popping up around the net via &lt;a href="http://www.google.com/search?q=rubyurl.com"&gt;a google search&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;So, I&amp;#8217;ve been trying to think of ways to make it easier for people to flag URLs as being abusive of the site. I&amp;#8217;ve not come up with any elegant solution that doesn&amp;#8217;t force the &lt;em&gt;good&lt;/em&gt; users of the site to have more steps in their process to create a basic RubyURL.&lt;/p&gt;


	&lt;p&gt;The ideal (and current) workflow:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;User navigates to http://rubyurl.com&lt;/li&gt;
		&lt;li&gt;User pastes in long url into text box/area&lt;/li&gt;
		&lt;li&gt;User submits form&lt;/li&gt;
		&lt;li&gt;User is provided with new (shortened) rubyurl&lt;/li&gt;
		&lt;li&gt;User copies the rubyurl and does what they want with it (generally&amp;#8230; pastes into IM, &lt;span class="caps"&gt;IRC&lt;/span&gt;, Email, etc.)&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;Some people have suggested using a user system to do this, but I really don&amp;#8217;t like that as a solution.&lt;/p&gt;


	&lt;p&gt;Another idea, which I built&amp;#8230; and later removed from my new version, involved having the original url load in a frame, and then provide a way for users to flag it as &amp;#8216;spam&amp;#8217;, &amp;#8216;nsfw&amp;#8217;, or &amp;#8216;dead&amp;#8217;. Then, we could provide the user with a warning that the following &lt;span class="caps"&gt;URL&lt;/span&gt; was flagged before, &lt;strong&gt;are you sure you want to continue?&lt;/strong&gt; I didn&amp;#8217;t like this as a solution in this way as it felt very obtrusive to have a rubyurl frame at the top of the browser window.&lt;/p&gt;


	&lt;p&gt;One person suggested a captcha to try and verify that the user is human, but there are problems with this.&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;I really dislike captchas. ;-)&lt;/li&gt;
		&lt;li&gt;This doesn&amp;#8217;t prevent spammers from using the ShortURL gem, which does everything via an &lt;span class="caps"&gt;API&lt;/span&gt;.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;In regards to the &lt;span class="caps"&gt;API&lt;/span&gt;, this could be enhanced by requiring that everyone register an email address to get an &lt;span class="caps"&gt;API&lt;/span&gt; key, but only solves the &lt;span class="caps"&gt;API&lt;/span&gt; abusers.&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;m starting to brainstorm some solutions that specifically help the requests made through the web. I haven&amp;#8217;t checked the logs enough yet to verify it, but I have a strong suspicion that much of the abuse is happening through a web-based bot, not through ShortURL&amp;#8230; because Ruby developers are nicer than that. (I hope&amp;#8230;)&lt;/p&gt;


	&lt;p&gt;So, I am curious&amp;#8230; dear readers of my blog. How might you solve this problem without disrupting the user experience? Or, should I just stick with what I&amp;#8217;ve got going and find a better way to respond to pissed off bloggers who think I&amp;#8217;m spamming them?&lt;/p&gt;


	&lt;p&gt;Discuss&amp;#8230;&lt;/p&gt;
</description>
      <pubDate>Mon, 16 Jul 2007 22:23:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:ac491655-7a58-4921-8d48-6165a9fcb383</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2007/07/16/rubyurl-2-0-on-the-horizon</link>
      <category>RubyURL</category>
      <category>rubyurl</category>
      <category>rails</category>
      <category>spam</category>
      <category>design</category>
      <category>workflow</category>
      <category>question</category>
    </item>
    <item>
      <title>AT&amp;amp;T Online Support could use some QA</title>
      <description>&lt;p&gt;So, I was trying to send AT&amp;#38;T wireless a support email through their online system and got stuck at the following screen.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.flickr.com/photos/robbyrussell/532790656/" title="Photo Sharing"&gt;&lt;img src="http://farm2.static.flickr.com/1412/532790656_abec9581a1.jpg" width="500" height="271" alt="Umm... how?" /&gt;&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Come on guys&amp;#8230; you can design a better form than this&amp;#8230; and I&amp;#8217;m now going to have to try and sneak in a question under a sub-topic that doesn&amp;#8217;t apply to my question&amp;#8230; just so I can send  you an email?&lt;/p&gt;


	&lt;p&gt;Getting help shouldn&amp;#8217;t be so hard&lt;sup&gt;&lt;a href="#fn1"&gt;1&lt;/a&gt;&lt;/sup&gt;.&lt;/p&gt;


	&lt;p id="fn1"&gt;&lt;sup&gt;1&lt;/sup&gt; At least I can &lt;strong&gt;Print this page&lt;/strong&gt; and show all my friends&amp;#8230;&lt;/p&gt;
</description>
      <pubDate>Wed, 06 Jun 2007 01:15:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:0768eb70-34e7-4b59-b849-2f6363df6b76</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2007/06/06/at-t-online-support-could-use-some-qa</link>
      <category>Business</category>
      <category>design</category>
      <category>interaction</category>
      <category>support</category>
      <category>at</category>
      <category>t</category>
      <category>cingular</category>
    </item>
    <item>
      <title>Hug Your Designer Day, part 2</title>
      <description>&lt;p&gt;In an effort to increase awareness of the importance of good Interaction and Interface Design in Web Development&amp;#8230; I &lt;a href="http://www.robbyonrails.com/articles/2007/05/22/hug-your-designer-day"&gt;suggested that today be&lt;/a&gt;... &lt;strong&gt;Hug Your Designer Day.&lt;/strong&gt;&lt;/p&gt;


	&lt;h2&gt;Designers Versus Developers&lt;/h2&gt;


	&lt;p&gt;Are you seeing a lot of this in your Design and Development teams?&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://flickr.com/photos/planetargon/511292992/in/photostream"&gt;&lt;img src="http://farm1.static.flickr.com/210/511292992_5d363c556f.jpg" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;small&gt;&lt;a href="http://allisbe.com"&gt;Allison Beckwith&lt;/a&gt;, Experience Director and &lt;a href="http://blog.imperialdune.com"&gt;Graeme Nelson&lt;/a&gt;, Lead Architect&lt;/small&gt;&lt;/p&gt;


	&lt;h2&gt;Happy Designers and Happy Developers&lt;/h2&gt;


	&lt;p&gt;Well, maybe it&amp;#8217;s time that your developers gave your designers a hug&amp;#8230;&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://flickr.com/photos/planetargon/511292936/in/photostream/"&gt;&lt;img src="http://farm1.static.flickr.com/199/511292936_e0b87fcd70.jpg?v=0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;small&gt;Alain Bloch, Web Developer and &lt;a href="http://chriszgriffin.com/"&gt;Chris Griffin&lt;/a&gt;, User Interface Designer&lt;/small&gt;&lt;/p&gt;


	&lt;p&gt;Also&amp;#8230; to celebrate &lt;strong&gt;Hug Your Designer Day&lt;/strong&gt;, &lt;a href="http://slash7.com"&gt;Amy Hoy&lt;/a&gt; was kind enough to &lt;a href="http://slash7.com/articles/2007/5/23/rubber-meet-road-railsconf-talk"&gt;post her slides&lt;/a&gt; and &lt;a href="http://amyhoy-presentations.s3.amazonaws.com/rubber_meet_road.mp3"&gt;some audio&lt;/a&gt; that I recorded of her talk at &lt;a href="http://railsconf.org"&gt;RailsConf 07&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;Let&amp;#8217;s all take a moment to thank the designers who put the experience of the users first. The success of our projects rely on everyone working together. Hug Your Designer! (they might hug back&amp;#8230;)&lt;/p&gt;
</description>
      <pubDate>Wed, 23 May 2007 17:04:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:af253abc-136a-4e45-b154-accf3577311c</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2007/05/23/hug-your-designer-day-part-2</link>
      <category>Business</category>
      <category>PLANET ARGON</category>
      <category>design</category>
      <category>designers</category>
      <category>developers</category>
      <category>development</category>
      <category>teamwork</category>
      <category>planetargon</category>
      <category>allison</category>
      <category>graeeme</category>
      <category>chris</category>
      <category>alain</category>
    </item>
    <item>
      <title>Hug Your Designer Day</title>
      <description>&lt;p&gt;Amy Hoy, of &lt;a href="http://slash7.com"&gt;slash7&lt;/a&gt; fame, gave a talk titled, &lt;a href="http://conferences.oreillynet.com/cs/rails2007/view/e_sess/11632"&gt; Rubber, Meet Road: Getting Designers Running with Rails&lt;/a&gt;, which provided a good overview of some of the problems that designers and developers face when working together. This was one of my favorite talks, because she essentially explained several of the problems that our team has faced in the past and in many ways, still encounter from time to time. A few things that I was surprised to hear, was that several companies leave their developers to implement &lt;span class="caps"&gt;HTML&lt;/span&gt;/CSS in the Rails applications, rather than let their designers into the area. Some teams, provide a directory in &lt;code&gt;public/&lt;/code&gt; for their designers to write their &lt;span class="caps"&gt;HTML&lt;/span&gt;/CSS. Amy said that she preferred to work in the standard view directories (as a designer), which is exactly how our team works.&lt;/p&gt;


	&lt;p&gt;In fact, I agreed with Amy on several points.&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;Developers say, &amp;#8220;We can&amp;#8217;t do that&amp;#8221; too often, when really&amp;#8230; we mean, &amp;#8220;We won&amp;#8217;t/don&amp;#8217;t want to) do that&amp;#8221; &lt;/li&gt;
		&lt;li&gt;Template languages create extra barriers to training designers. Stick with &lt;span class="caps"&gt;RHTML&lt;/span&gt;&amp;#8230; designers won&amp;#8217;t be afraid of ERb syntax if you sit down with them and explain some of it. Move the ugly stuff to helpers&amp;#8230; like you should be anyways!&lt;/li&gt;
		&lt;li&gt;Teach your designers how to use subversion&amp;#8230; let them break it first and then help them&amp;#8230; they&amp;#8217;ll love you for it&lt;/li&gt;
		&lt;li&gt;When meeting clients with a designer and a developer&amp;#8230; don&amp;#8217;t let the developer speak too much about implementation when it hasn&amp;#8217;t been designed yet. Interaction Design should dictate architecture not vice-versa.&lt;/li&gt;
	&lt;/ul&gt;


	&lt;blockquote&gt;
		&lt;p&gt;&amp;#8220;Stop, Collaborate, and Listen&amp;#8221;&amp;#8212;Vanilla Ice&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;p&gt;I&amp;#8217;d like to personally thank Amy for being a diplomatic designer and telling the hundreds of developers that showed up for her talk to remember that designers and developers&amp;#8230; think differently&amp;#8230; and that&amp;#8217;s a good thing for the application and ultimately&amp;#8230; the user experience.&lt;/p&gt;


	&lt;p&gt;Having said that, I&amp;#8217;d like to request that tomorrow, May 23rd, be&amp;#8230; &lt;strong&gt;Hug Your Designer Day&lt;/strong&gt;.&lt;/p&gt;
</description>
      <pubDate>Tue, 22 May 2007 17:18:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:e0bdb93c-877e-4e38-9439-d31362eb1ca0</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2007/05/22/hug-your-designer-day</link>
      <category>Ruby on Rails</category>
      <category>design</category>
      <category>interaction</category>
      <category>IxD</category>
      <category>amyhoy</category>
      <category>slash7</category>
      <category>collaboration</category>
      <category>rails</category>
      <category>development</category>
    </item>
    <item>
      <title>Embracing Failure, part 1</title>
      <description>&lt;p&gt;I&amp;#8217;m currently reading &lt;a href="http://www.amazon.com/Engineer-Human-Failure-Successful-Design/dp/0679734163"&gt;To Engineer is Human&lt;/a&gt;, by Henry Petroski and found the following applicable to software development and managing client and customer expectations.&lt;/p&gt;


	&lt;blockquote&gt;
		&lt;p&gt;&amp;#8220;As much as it is human to make mistakes, it is also human to want to avoid them. Murphy&amp;#8217;s Law, holding that anything that can go wrong will, is not a law of nature but a joke. All the light bulbs that last until we tire of the lamp, all the shoelaces that outlast their shoes, all the automobiles that give trouble-free service until they are traded in have the last laugh on Murphy. Just as he will not outlive his law, so nothing manufactured can be or is expected to last forever. Once we recognize this elementary fact, the possibility of a machine or a building being as near to perfect for its designed lifetime as its creators may strive to be for theirs is not only a realistic goal but also a reasonable expectation for consumers. It is only when we set ourselves such an unrealistic goal as buying a shoelace that will never break, inventing a perpetual motion machine, or building a vehicle that will never break down that we appear to be fools and not rational beings.&amp;#8221;&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;p&gt;I&amp;#8217;m sure that most of us are guilty of having high expectations for products that we purchased. (why does my ipod screen scratch so easily when in my pocket?) We also set high expectations for the code that we develop, which is why we (hopefully) continue to refine our process. We&amp;#8217;re bound to time and budget constraints, which often prevent us from testing every imaginable edge case. Given our constraints, problems are almost always going to arise. It&amp;#8217;s no wonder that we see Test-Driven Development as an important part of a healthy development process. We want to catch our failures as early as possible.&lt;/p&gt;


	&lt;p&gt;Our clients often have high expectations and it&amp;#8217;s almost always very reasonable. That&amp;#8217;s not to say that some clients will not have highly irrational expectations. It&amp;#8217;s our job to manage these expectations as best as possible.&lt;/p&gt;


	&lt;p&gt;Do we mislead our clients by convincing them that our &lt;span class="caps"&gt;TDD&lt;/span&gt;/BDD process is going to prevent any bugs from creeping from the woodwork after the development cycle is finished?&lt;/p&gt;


	&lt;p&gt;&lt;em&gt;&amp;#8220;I thought that we paid you to fully test the code?&amp;#8221;&lt;/em&gt;&lt;/p&gt;


	&lt;p&gt;Really&amp;#8230; is that even possible? Can we predict (and test) every possible interaction within an application? Highly unlikely.&lt;/p&gt;


	&lt;p&gt;What we &lt;em&gt;can&lt;/em&gt; do is plan for and embrace failure. We can help our clients understand that almost every application needs to be &lt;em&gt;maintained&lt;/em&gt; after it&amp;#8217;s initial development cycle. Bugs are inevitable and there needs to be a &lt;a href="http://daringfireball.net/linked/2007/march#wed-14-adobedevcycle"&gt;clear process for handling them&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;Perhaps I&amp;#8217;m abusing the bug fixing process by calling it a failure&amp;#8230; but I&amp;#8217;ve also found that yes&amp;#8230; many bugs are due to failure. Whether that be a failure to &lt;a href="http://behavior-driven.org/"&gt;specify application behavior&lt;/a&gt;, a failure to understand the project goals, a &lt;a href="http://www.robbyonrails.com/articles/2006/09/27/project-enlightenment-with-d3"&gt;failure in communication&lt;/a&gt;, ...or maybe a failure in our software architecture. We&amp;#8217;re constantly failing.. and it&amp;#8217;s okay!&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;IT&amp;#8217;S &lt;span class="caps"&gt;OKAY TO FAIL&lt;/span&gt;!&lt;/strong&gt; (some of the time&amp;#8230;)&lt;/p&gt;


	&lt;blockquote&gt;
		&lt;p&gt;&amp;#8220;No one &lt;em&gt;wants&lt;/em&gt; to learn by mistakes, but we cannot learn enough from successes to go beyond the state of the art. Contrary to their popular characterization as intellectual conservatives, engineers are really among the avant-garde. They are constantly seeking to employ new concepts to reduce the weigh and thus the cost of their structures, and they are constantly striving to do more with less so the resulting structure represents an efficient use of materials. The engineer always believes he is trying something without error, but the truth of the matter is that each new structure can be a new trial. In the meantime the layman, whose spokesman is often a poet or writer, can be threatened by both the failures &lt;em&gt;and&lt;/em&gt; the successes. Such is the nature not only of science and engineering, but of all human endeavors.&amp;#8221;&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;p&gt;As we&amp;#8217;re creating these virtual structures&amp;#8230; are we really taking the time to reflect on our failures? This is why some teams adopt practices like iteration retrospectives and post-mortems.&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;ll end this with a few questions, which I hope that you&amp;#8217;ll share your experiences about&amp;#8230;&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;In what ways is your team embracing the failures of your development projects?&lt;/li&gt;
		&lt;li&gt;How do you help manage your clients expectations&amp;#8230; so that they too can plan for and embrace failure? Isn&amp;#8217;t their new business venture on the web&amp;#8230; likely to experience some failure?&lt;/li&gt;
	&lt;/ul&gt;


	&lt;p&gt;We have so much to learn&amp;#8230;&lt;/p&gt;
</description>
      <pubDate>Tue, 10 Apr 2007 16:38:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:b216559d-75b1-443f-a42b-65a8feefe92d</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2007/04/10/embracing-failure-part-1</link>
      <category>Business</category>
      <category>Programming</category>
      <category>d3</category>
      <category>book</category>
      <category>tdd</category>
      <category>development</category>
      <category>testing</category>
      <category>agile</category>
      <category>design</category>
      <category>clients</category>
      <category>communication</category>
      <category>bdd</category>
      <category>failure</category>
      <category>expectations</category>
      <category>engineering</category>
    </item>
    <item>
      <title>Happy Birthday Allison</title>
      <description>&lt;p&gt;This morning was delightful. I woke up to find that &lt;a href="http://37signals.com"&gt;37signals&lt;/a&gt; had &lt;a href="http://www.37signals.com/svn/posts/337-screens-around-town-zune-php-developers-network-planet-argon-and-amex"&gt;referenced our website on Signal vs Noise&lt;/a&gt; this morning. In particular, they referenced the &lt;a href="http://www.planetargon.com/rails_hosting.html"&gt;Rails hosting&lt;/a&gt; order form on the &lt;a href="http://www.planetargon.com"&gt;&lt;span class="caps"&gt;PLANET ARGON&lt;/span&gt;&lt;/a&gt; site. What&amp;#8217;s interesting is that Allison created this design over a year and a half ago.. and we&amp;#8217;re actually in the process of a complete site redesign, which &lt;a href="http://chriszgriffin.com/"&gt;Chris&lt;/a&gt; and &lt;a href="http://allisbe.com"&gt;Allison&lt;/a&gt; are planning to blog about in depth. :-)&lt;/p&gt;


	&lt;p&gt;There are some discussions within the comments on the blog post about the design decisions that were made, some of which we&amp;#8217;ve already begun to address in our redesign process brainstorming (based on google analytic conversion data).&lt;/p&gt;


	&lt;p&gt;On top of that, today is our Experience Director, &lt;a href="http://allisbe.com"&gt;Allison Beckwith&amp;#8217;s&lt;/a&gt;, birthday.&lt;/p&gt;


	&lt;p&gt;Thanks for the linkage, 37signals!&lt;/p&gt;


	&lt;p&gt;...and&amp;#8230; Happy Birthday Allison!&lt;/p&gt;
</description>
      <pubDate>Wed, 28 Mar 2007 20:53:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:45efaed5-a403-4972-a365-fa69919f950e</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2007/03/28/happy-birthday-allison</link>
      <category>PLANET ARGON</category>
      <category>37signals</category>
      <category>planetargon</category>
      <category>design</category>
      <category>usability</category>
      <category>interaction</category>
    </item>
    <item>
      <title>Do Your Views in Ruby on Rails need a cleaning service?</title>
      <description>&lt;p&gt;I&amp;#8217;ve been working on a project with &lt;a href="http://blog.imperialdune.com/"&gt;Graeme&lt;/a&gt;, and we&amp;#8217;re spending some time cleaning up some &lt;span class="caps"&gt;RHTML&lt;/span&gt; views.&lt;/p&gt;


	&lt;p&gt;He posted an article earlier, titled, &lt;a href="http://blog.imperialdune.com/2007/3/27/dirty-views-clean-them-up"&gt;Dirty Views? Clean them up!&lt;/a&gt;, where he asks the following.&lt;/p&gt;


	&lt;blockquote&gt;
		&lt;p&gt;&amp;#8220;I am also looking for more information on best practices with views in Rails. There doesn’t seem to be much information on the subject.&amp;#8221;&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;p&gt;We&amp;#8217;re starting to re-evaluate how we approach our views and are curious what other teams are doing&amp;#8230; especially if you have a team thats approx 1/2 designers&amp;#8230; 1/2 developers per project. We&amp;#8217;ll be reviewing some of the other options for the View layer over the coming week(s) and welcome any suggestions/insight to this area of Rails&amp;#8230; head over to &lt;a href="http://blog.imperialdune.com/"&gt;Graeme&amp;#8217;s blog&lt;/a&gt; and share your thoughts. :-)&lt;/p&gt;
</description>
      <pubDate>Tue, 27 Mar 2007 21:55:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:81794704-13ac-465b-8862-82e0188e844e</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2007/03/27/do-your-views-in-ruby-on-rails-need-a-cleaning-service</link>
      <category>Ruby on Rails</category>
      <category>Ruby</category>
      <category>Programming</category>
      <category>PLANET ARGON</category>
      <category>views</category>
      <category>DRY</category>
      <category>rails</category>
      <category>rubyonrails</category>
      <category>best</category>
      <category>practices</category>
      <category>graeme</category>
      <category>design</category>
      <category>interface</category>
      <category>development</category>
    </item>
    <item>
      <title>Matz on Considering Interface</title>
      <description>&lt;p&gt;...back in Portland after being in London and New York City for the past two weeks. It&amp;#8217;s nice to be home. :-)&lt;/p&gt;


	&lt;p&gt;I came across &lt;a href="http://www.artima.com/intv/craftP.html"&gt;this interview with Matz&lt;/a&gt; earlier today. It was published almost three years ago (pre-Rails)... I&amp;#8217;m quite intrigued by what he is advocating here&amp;#8230;&lt;/p&gt;


&lt;blockquote&gt;
&lt;b&gt;Bill Venners:&lt;/b&gt; You also mentioned in your ten top tips: &amp;#8220;Be nice to others. Consider interface first: man-to-man, man-to-machine, and machine-to-machine. And again remember the human factor is important.&amp;#8221; What do you mean by, &amp;#8220;consider interface first?&amp;#8221; 

	&lt;p&gt;&lt;b&gt;Yukihiro Matsumoto:&lt;/b&gt; Interface is everything that we see as a user. If my computer is doing very complex things inside, but that complexity doesn&amp;#8217;t show up on the surface, I don&amp;#8217;t care. I don&amp;#8217;t care if the computer works hard on the inside or not. I just want the right result presented in a good manner. So that means the interface is everything, for a plain computer user at least, when they are using a computer. That&amp;#8217;s why we need to focus on interface.&lt;/p&gt;


	&lt;p&gt;Some software people—like weather forecasters, the number crunchers—feel that the inside matters most, but they are a very limited field of computer science. Most programmers need to focus on the surface, the interface, because that&amp;#8217;s the most important thing.&lt;/p&gt;


	&lt;p&gt;&lt;b&gt;Bill Venners:&lt;/b&gt; You also mentioned machine-to-machine interfaces, so are you just talking about interfaces for users or also for machines?&lt;/p&gt;


	&lt;p&gt;&lt;b&gt;Yukihiro Matsumoto:&lt;/b&gt; It&amp;#8217;s not just user interfaces. When machines are talking to each other via a protocol, they don&amp;#8217;t care how the other is implemented on the inside. The important thing is the proper output getting passed correctly via the proper protocol. That&amp;#8217;s what matters.&lt;/p&gt;


If you have a good interface on your system, and a budget of money and time, you can work on your system. If your system has bugs or is too slow, you can improve it. But if your system has a bad interface, you basically have nothing. It won&amp;#8217;t matter if it is a work of the highest craftsmanship on the inside. If your system has a bad interface, no one will use it. So the interface or surface of the system, whether to users or other machines, is very important.
&lt;/blockquote&gt;

	&lt;p&gt;One of things that we&amp;#8217;re really advocating with Dialogue-Driven Development is artifact generation. Wireframes and lightweight prototypes are great for &lt;strong&gt;generating constructive dialogue&lt;/strong&gt; between clients, users, and our team. We should make sure that we understand why and how users will use an interface before we worry about the code that will drive it. Too often we fall into a pattern of thinking where we&amp;#8217;re convinced that we can build an agnostic application that has various interfaces to a central repository of business logic and data. While we strive for this during development, it really should be focused on after some initial interaction design has been planned. Of course, this is my opinion.&lt;/p&gt;


	&lt;p&gt;So, I must ask you. When you&amp;#8217;re working with on a new project, do you focus on interface or code implementation first?&lt;/p&gt;
</description>
      <pubDate>Mon, 25 Sep 2006 10:11:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:4997b305-58fb-46a7-b0b7-163f32ed4f07</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2006/09/25/matz-on-considering-interface</link>
      <category>Ruby on Rails</category>
      <category>Ruby</category>
      <category>Programming</category>
      <category>d3</category>
      <category>agile</category>
      <category>d3</category>
      <category>dialogue</category>
      <category>prototypes</category>
      <category>clients</category>
      <category>interface</category>
      <category>IxD</category>
      <category>design</category>
    </item>
    <item>
      <title>Agile Interaction Design</title>
      <description>&lt;p&gt;I would like to start some dialogue with all of you&amp;#8230;&lt;/p&gt;


	&lt;p&gt;In a recent post, &lt;a href="http://jvoorhis.com"&gt;Jeremy Voorhis&lt;/a&gt; said the following about &lt;a href="http://www.powells.com/cgi-bin/biblio?inkey=65-0764526413-2"&gt;About Face 2.0&lt;/a&gt; in his post announcing his &lt;a href="http://www.jvoorhis.org/articles/2006/08/31/agile-book-club-interaction-design"&gt;Agile Book Club&lt;/a&gt;.&lt;/p&gt;


&lt;blockquote&gt;&lt;em&gt;
  About Face 2.0 isn&amp;#8217;t bad; it&amp;#8217;s full of some
  great advice. My biggest gripes with it are the follows:
&lt;ul&gt;
  &lt;li&gt;It declares that programmers are just unfit for interaction design.
  &lt;li&gt;It advocates for waterfall development.
  &lt;li&gt;Cooper has a defensive tone whenever discussing his beloved discipline
  of interaction design.
  &lt;li&gt;The web chapter is dated.
&lt;/ul&gt;
  If you can get over all of those things, it is full of great ideas,
  specifically about working with personas, and data entry and retrieval.&lt;/em&gt;
&lt;/blockquote&gt;

	&lt;p&gt;I disagree with a few of these conclusions. In particular, that Cooper advocates &lt;a href="http://en.wikipedia.org/wiki/Waterfall_model"&gt;waterfall development&lt;/a&gt;. I&amp;#8217;ve been hearing a lot of developers throw the word, &amp;#8220;waterfall&amp;#8221; around&amp;#8230; but why?&lt;/p&gt;


	&lt;p&gt;Take the following excerpt from this &lt;a href="http://www.fawcette.com/interviews/beck_cooper/"&gt;great conversation&lt;/a&gt; between Kent Beck, the father of XP, and Alan Cooper.&lt;/p&gt;


	&lt;blockquote&gt;
		&lt;p&gt;&lt;em&gt;&amp;#8220;During the design phase, the interaction designer works closely with the customers. During the detailed design phase, the interaction designer works closely with the programmers. There&amp;#8217;s a crossover point in the beginning of the design phase where the programmers work for the designer. Then, at a certain point the leadership changes so that now the designers work for the implementers. You could call these &amp;#8220;phases&amp;#8221;—I don&amp;#8217;t—but it&amp;#8217;s working together.&amp;#8221;&lt;/em&gt;[1]&lt;/p&gt;
	&lt;/blockquote&gt;


	&lt;p&gt;I&amp;#8217;m curious as to how anyone would consider this to resemble &lt;a href="http://www.waterfall2006.com"&gt;Waterfall&lt;/a&gt;, which might imply that Cooper&amp;#8217;s approach to Interaction Design is &lt;em&gt;incompatible&lt;/em&gt; with the &lt;a href="http://agilemanifesto.org/principles.html"&gt;principles behind the Agile Manifesto&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.extremeplanner.com/blog/"&gt;Dave Churchville&lt;/a&gt; posted an article last year titled, &lt;a href="http://www.extremeplanner.com/blog/2005_09_01_extremeplanner_archive.html"&gt;Agile Interaction Design?&lt;/a&gt;, which discussed how the role of an Interaction Designer (ID) can be compatible with Agile methodologies. &lt;em&gt;&amp;#8220;An ID team probably becomes the voice of the customer in Agile methods, and as such should be working closely with the development team as well as the users. In that sense, the ID role may be more of a liaison between customer and developer.&amp;#8221;&lt;/em&gt;&lt;/p&gt;


	&lt;p&gt;So, do you think that Interaction Design as described by Alan Cooper&amp;#8230; is compatible with the principles of the Agile Manifesto?&lt;/p&gt;


	&lt;p&gt;&lt;strong&gt;&lt;span class="caps"&gt;UPDATE&lt;/span&gt;&lt;/strong&gt; It looks like this conversation was picked up on &lt;a href="http://discuss.joelonsoftware.com/default.asp?joel.3.382847.14"&gt;the Joel on Software discussion boards&lt;/a&gt;.&lt;/p&gt;


	&lt;p id="fn1"&gt;&lt;sup&gt;1&lt;/sup&gt; &lt;a href="http://www.fawcette.com/interviews/beck_cooper/page8.asp"&gt;http://www.fawcette.com/interviews/beck_cooper/page8.asp&lt;/a&gt;&lt;/p&gt;
</description>
      <pubDate>Wed, 30 Aug 2006 14:36:00 -0500</pubDate>
      <guid isPermaLink="false">urn:uuid:69feb3d3-7ca0-46f3-afbb-247029093506</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2006/08/30/agile-interaction-design</link>
      <category>agile</category>
      <category>cooper</category>
      <category>interaction</category>
      <category>design</category>
      <category>question</category>
      <category>jvoorhis</category>
      <category>beck</category>
      <category>methodology</category>
      <category>principles</category>
    </item>
    <item>
      <title>Link: Rails for Designers</title>
      <description>&lt;p&gt;Kevin Clark has just posted, &lt;a href="http://glu.ttono.us/articles/2006/03/21/rails-for-designers"&gt;Rails for Designers&lt;/a&gt;, a blog entry that gives designers a nice intro into &lt;a href="http://www.rubyonrails.com"&gt;Ruby on Rails&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;I&amp;#8217;m reminded of a post by &lt;span class="caps"&gt;DHH&lt;/span&gt; last year titled &lt;a href="http://www.loudthinking.com/arc/000450.html"&gt;Why are designers so excited about Rails?&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Teach a &lt;span class="caps"&gt;HTML&lt;/span&gt;/CSS designer &lt;span class="caps"&gt;RHTML&lt;/span&gt; or &lt;a href="http://home.leetsoft.com/liquid"&gt;Liquid&lt;/a&gt;... and some &lt;span class="caps"&gt;SVN&lt;/span&gt;&amp;#8230; and you&amp;#8217;re in business!&lt;/p&gt;
</description>
      <pubDate>Tue, 21 Mar 2006 17:02:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:ca777301-9902-4315-8a1c-f6efdfc2641b</guid>
      <author>Robby Russell</author>
      <link>http://www.robbyonrails.com/articles/2006/03/21/link-rails-for-designers</link>
      <category>design</category>
      <category>rails</category>
    </item>
  </channel>
</rss>
