<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Chris Johnston</title>
	<atom:link href="http://www.fuzzylizard.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.fuzzylizard.com</link>
	<description>Web development and design with a little VFX thrown in for fun</description>
	<lastBuildDate>Mon, 14 Sep 2009 23:06:35 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>The importance of User Experience</title>
		<link>http://www.fuzzylizard.com/archives/2009/09/14/1062/</link>
		<comments>http://www.fuzzylizard.com/archives/2009/09/14/1062/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 23:06:10 +0000</pubDate>
		<dc:creator>Chris Johnston</dc:creator>
				<category><![CDATA[Application Development]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://www.fuzzylizard.com/?p=1062</guid>
		<description><![CDATA[One of the things that I am passionate about is the need for applications to be both usable and aesthetically pleasing for the people using them. If your application does not meet these two requirements then, in my opinion, you have failed. This means that every development team needs UX people. Or as Michael Feathers&#8217; [...]]]></description>
			<content:encoded><![CDATA[<p>One of the things that I am passionate about is the need for applications to be both usable and aesthetically pleasing for the people using them. If your application does not meet these two requirements then, in my opinion, you have failed. This means that every development team needs UX people. Or as <a href="http://michaelfeathers.typepad.com/michael_feathers_blog/2009/09/thoughts-on-the-future-of-the-boutique-software-shop.html">Michael Feathers&#8217; puts it</a>, &#8220;To put it more boldly: it&#8217;s not that development teams need UX people, it&#8217;s more like UX teams need developers.&#8221;</p>
<p>Michael Feathers has written a blog post relating software development to cooking. In it, he asks the question, &#8220;Where are the high-end restaurants of software development?&#8221; His answer is that they are in the smaller boutique development shops popping up around the world. The shops that adhere to the ideas behind the <a href="http://manifesto.softwarecraftsmanship.org/">Software Craftsmanship movement</a>.</p>
<p>In this article, he also states that in this day and age, UX is the defining aspect of developing applications and those teams that do not understand that developing software is all about the customer are doomed. I can&#8217;t agree more with this idea. The only thing that matters to a customer of your software is how easy and pleasing is it to use. We as developers can no longer have the attitude that we will create software and, well, the users will just have to learn how to use it. Everything we do needs to be customer and user centered.</p>
<p>Michael also puts forth the idea that as developers we need to learn how to do UX and be able to use those tools when called on. We don&#8217;t need to be experts in design or layout, but we should have a shallow understanding of the principles and how to apply them when sitting with a customer.</p>
<p>I want to take this one step further by saying that I think UX also has a responsibility to share their knowledge with developers and have them present during every stage of the UI development process. Just as it is wrong to have developers who know nothing about usability, it is just as wrong to have UX people who do everything in secret and then simply hand developers a design expecting them to implement it. </p>
<p>We need to tear down this curtain that exists between developers and UX and work needs to be done on both sides. One of the best projects I ever worked on involved developers working with designers and UX people creating wireframes and doing lo-fi prototyping with the users throughout the entire development process. Everyone on the team owned the success and failure of the application and in the end we created one of the best apps I have ever worked on. We were able to create an application that the users were excited to start using.</p>
<p>I have also worked on teams were the UX team showed up to standups in the morning and then handed designs to the developers. There were no discussions on whether something was implementable and there was no insight into where the designs came from. For all I know they outsourced the photoshop work to penguins in Antarctica. How can the team own the entire application if one part of it is created in isolation?</p>
<p>If you are passionate about creating software applications that can actually be used by people and passionate about the quality of those application then go read <a href="http://michaelfeathers.typepad.com/michael_feathers_blog/2009/09/thoughts-on-the-future-of-the-boutique-software-shop.html">Michael Feathers&#8217; article.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fuzzylizard.com/archives/2009/09/14/1062/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ioXtreme</title>
		<link>http://www.fuzzylizard.com/archives/2009/06/08/1057/</link>
		<comments>http://www.fuzzylizard.com/archives/2009/06/08/1057/#comments</comments>
		<pubDate>Mon, 08 Jun 2009 04:13:48 +0000</pubDate>
		<dc:creator>Chris Johnston</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[hardware]]></category>

		<guid isPermaLink="false">http://www.fuzzylizard.com/?p=1057</guid>
		<description><![CDATA[I have got to get me one of these when they come out. Imagine having all of your programs starting up from scratch with the same speed as if you had maximized them. The ioXtreme is 80GB of high-performance, non-volatile storage in the form of a PCI Express card. 
There are only two problems with [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.fusionio.com/ioxtreme/">I have got to get me one of these when they come out</a>. Imagine having all of your programs starting up from scratch with the same speed as if you had maximized them. The ioXtreme is 80GB of high-performance, non-volatile storage in the form of a PCI Express card. </p>
<p>There are only two problems with it, one, it isn&#8217;t available yet and two, when it is available it will be $895USD.</p>
<p><a href="http://www.fusionio.com/ioxtreme/"><img src="http://www.fuzzylizard.com/wp-content/uploads/2009/06/ioxtreme.jpg" alt="ioXtreme 80 GB high-performance, non-volatile storage" title="ioxtreme" width="460" height="257" class="size-full wp-image-1058" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.fuzzylizard.com/archives/2009/06/08/1057/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Designing imperfection into websites</title>
		<link>http://www.fuzzylizard.com/archives/2009/05/06/1055/</link>
		<comments>http://www.fuzzylizard.com/archives/2009/05/06/1055/#comments</comments>
		<pubDate>Tue, 05 May 2009 16:48:37 +0000</pubDate>
		<dc:creator>Chris Johnston</dc:creator>
				<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://www.fuzzylizard.com/?p=1055</guid>
		<description><![CDATA[Here is an interesting article on the need to design imperfection into websites in order to make them more human and more accessible.
Elegant Web experiences walk a fine line separating simplicity (yawn) from chaos (huh?). And the rules that govern the quality of the attempt are derived from considerations of natural organization. This can still [...]]]></description>
			<content:encoded><![CDATA[<p>Here is an <a href="http://changeorder.typepad.com/weblog/2009/04/that-was-perfect-can-you-do-it-again.html">interesting article on the need to design imperfection into websites</a> in order to make them more human and more accessible.</p>
<blockquote><p>Elegant Web experiences walk a fine line separating simplicity (yawn) from chaos (huh?). And the rules that govern the quality of the attempt are derived from considerations of natural organization. This can still be elegant &#8212; as long as the chaos is modulated within a stable container, constrained by a well-designed illusion of natural order.</p></blockquote>
<blockquote><p>Great Web sites have feel &#8212; what Leonard Koren had called &#8220;heartfelt intelligence.&#8221;&#8230;Feel only comes about when you tear away the illusion of perfection.</p></blockquote>
<blockquote><p>Words are merely the leavings of our intellect, strung together into a story. The same goes for designed artifacts. The more imperfect the artifact, the more they tell of the passage of time, and the more human they become.</p></blockquote>
<blockquote><p>So a postulate I&#8217;d like to put forth is that when the proper amount of imperfection is present in a designed Web experience, it feels more human. A Web site that is more human becomes more useful, right? Here, we have to be careful. A web site is only more useful if it is elegant in its imperfection.</p></blockquote>
<p>I don&#8217;t usually include this many quotes, but with this article, a precis does a much better job then I ever could. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.fuzzylizard.com/archives/2009/05/06/1055/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML 4.01 or xHTML 1?</title>
		<link>http://www.fuzzylizard.com/archives/2009/04/29/1053/</link>
		<comments>http://www.fuzzylizard.com/archives/2009/04/29/1053/#comments</comments>
		<pubDate>Tue, 28 Apr 2009 15:53:29 +0000</pubDate>
		<dc:creator>Chris Johnston</dc:creator>
				<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://www.fuzzylizard.com/?p=1053</guid>
		<description><![CDATA[Dave Shea has decided to move away from implementing websites using xHTML and is using HTML 4.01. His main reason:
I made the switch more because of overall trends. Six years ago, many of us thought XHTML would be the future of the web and we’d be living in an XML world by now. But in [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://mezzoblue.com/archives/2009/04/20/switched/">Dave Shea has decided to move away from implementing websites using xHTML and is using HTML 4.01</a>. His main reason:</p>
<blockquote><p>I made the switch more because of overall trends. Six years ago, many of us thought XHTML would be the future of the web and we’d be living in an XML world by now. But in the intervening time it’s become fairly apparent to myself and others that XHTML2 really isn’t going anywhere, at least not in the realm that we care about. For me, a guy who builds web sites and applications for clients that have to work in today’s browsers, XHTML2 is a non-issue. No browser support, no use to today’s web authors. End of story.</p></blockquote>
<p>This is something I have not really thought about much over the last few years. I made the switch from HTML to xHTML and haven&#8217;t really looked back. Now, I am going to have to look into this. I don&#8217;t really see anything that xHTML offers over HTML 4.01. I do like the fact that xHTML is easier to parse using an XML parser, but this is a small point given libraries like <a href="http://wiki.github.com/why/hpricot">Hpricot</a> and <a href="http://github.com/tenderlove/nokogiri/tree/master">Nokogiri</a>.</p>
<p>What do others think? Is there any reason to use xHTML over HTML 4.01?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fuzzylizard.com/archives/2009/04/29/1053/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Time to move beyond 960?</title>
		<link>http://www.fuzzylizard.com/archives/2009/04/28/1051/</link>
		<comments>http://www.fuzzylizard.com/archives/2009/04/28/1051/#comments</comments>
		<pubDate>Mon, 27 Apr 2009 21:05:44 +0000</pubDate>
		<dc:creator>Chris Johnston</dc:creator>
				<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://www.fuzzylizard.com/?p=1051</guid>
		<description><![CDATA[A width of 960 pixels has become the de facto standard for creating fixed-width web sites. Cameron Moll is asking if it is time to move beyond this width, and if so, what do we move to? I personally really like 960 as a width. It makes for easy to read lines of text and [...]]]></description>
			<content:encoded><![CDATA[<p>A width of 960 pixels has become the de facto standard for creating fixed-width web sites. <a href="http://cameronmoll.com/archives/2009/04/is_it_time_to_move_beyond_960/">Cameron Moll is asking if it is time to move beyond this width</a>, and if so, what do we move to? I personally really like 960 as a width. It makes for easy to read lines of text and helps to ensure that they don&#8217;t get too long. </p>
<p>He proposes widths of 1020, 1040, and 1080. I am not sure the extra 60 to 120 pixels will really make that big of a difference.</p>
<p>With most computer monitors now displaying 1280 or larger horizontal resolutions, it is definitely something to think about.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fuzzylizard.com/archives/2009/04/28/1051/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Multistage deployments with Capistrano</title>
		<link>http://www.fuzzylizard.com/archives/2009/04/25/1046/</link>
		<comments>http://www.fuzzylizard.com/archives/2009/04/25/1046/#comments</comments>
		<pubDate>Fri, 24 Apr 2009 15:52:33 +0000</pubDate>
		<dc:creator>Chris Johnston</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.fuzzylizard.com/?p=1046</guid>
		<description><![CDATA[I have been trying to set up a Capistrano script for deploying to a staging and production server. I found this very well written tutorial showing how to set up the various cap scripts to work with mod_rails (Passenger). 
One note, Capistrano does not copy over the database.yml file. You need to put this in [...]]]></description>
			<content:encoded><![CDATA[<p>I have been trying to set up a Capistrano script for deploying to a staging and production server. I found <a href="http://www.cjohansen.no/en/rails/multi_staging_environment_for_rails_using_capistrano_and_mod_rails">this very well written tutorial</a> showing how to set up the various cap scripts to work with mod_rails (Passenger). </p>
<p>One note, Capistrano does not copy over the database.yml file. You need to put this in yourself. This tripped me up for a while since I was assuming that it would somehow magically take the database.yml.template file I had and turn it into a database.yml file that I would then have to configure. The Ruby magic doesn&#8217;t extend that far <img src='http://www.fuzzylizard.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> .</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fuzzylizard.com/archives/2009/04/25/1046/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Keep CSS layout in layouts not in view pages</title>
		<link>http://www.fuzzylizard.com/archives/2009/04/16/1040/</link>
		<comments>http://www.fuzzylizard.com/archives/2009/04/16/1040/#comments</comments>
		<pubDate>Thu, 16 Apr 2009 01:11:43 +0000</pubDate>
		<dc:creator>Chris Johnston</dc:creator>
				<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.fuzzylizard.com/?p=1040</guid>
		<description><![CDATA[When using layouts in Rails, I strongly suggest keeping as much of the container elements in the layout and using content_for to create sections in which content can be placed.
I am working on a site right now that has used the YUI Grids to layout the site (something I highly recommend for anyone designing a [...]]]></description>
			<content:encoded><![CDATA[<p>When using layouts in Rails, I strongly suggest keeping as much of the container elements in the layout and using <code>content_for</code> to create sections in which content can be placed.</p>
<p>I am working on a site right now that has used the YUI Grids to layout the site (something I highly recommend for anyone designing a site from scratch). Most of the site uses a two column layout. The <code>application.html.erb</code> file looks like this:</p>
<pre name="code" class="html">
&lt;body&gt;
  &lt;div id="doc" class="yui-t6"&gt;
    &lt;div id="hd" role="banner"&gt;
      &lt;%= render_partial "shared/header" %&gt;
    &lt;/div&gt;

    &lt;div id="bd" role="main"&gt;
      &lt;%= yield :content %&gt;
    &lt;/div&gt;

    &lt;div id="ft" role="contentinfo"&gt;
      &lt;%= render_partial "shared/footer" %&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/body&gt;
</pre>
<p>What is missing is the part that divides the page into your content area and your, in this case, right-hand side area. This part was placed in the rest of the view files. Not only does this mean that it is repeated everywhere and a huge pain to change, it also means that it is much harder for coders, who may not know YUI CSS Grids, to properly lay out pages. In the case of the app that I am modifying, it has also meant that parts of the CSS layout are strewn careless between regular pages and partials.</p>
<p>Instead, this is how the layout page should look:</p>
<pre name="code" class="html">
&lt;body&gt;
  &lt;div id="doc" class="yui-t6"&gt;
    &lt;div id="hd" role="banner"&gt;
      &lt;%= render_partial "shared/header" %&gt;
    &lt;/div&gt;

    &lt;div id="bd" role="main"&gt;
      &lt;div id="yui-main"&gt;
        &lt;div class="yui-b"&gt;
          &lt;div class="yui-g"&gt;
            &lt;%= yield :content %&gt;
          &lt;/div&gt;
        &lt;/div&gt;
      &lt;/div&gt;
      &lt;div class="yui-b"&gt;
        &lt;%= yield :side_content %&gt;
      &lt;/div&gt;
    &lt;/div&gt;

    &lt;div id="ft" role="contentinfo"&gt;
      &lt;%= render_partial "shared/footer" %&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/body&gt;
</pre>
<p>This keeps everything clean and makes for view pages that look like the following.</p>
<pre name="code" class="html">
&lt;% content_for :content do %&gt;
  put content here
&lt;% end %&gt;

&lt;% content_for :side_content do %&gt;
  put side content here
&lt;% end %&gt;
</pre>
<p>I think that makes it much easier to see what is happening within view pages. It also keeps all the layout code in one place.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fuzzylizard.com/archives/2009/04/16/1040/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Keep CSS clean</title>
		<link>http://www.fuzzylizard.com/archives/2009/04/14/1038/</link>
		<comments>http://www.fuzzylizard.com/archives/2009/04/14/1038/#comments</comments>
		<pubDate>Tue, 14 Apr 2009 04:23:07 +0000</pubDate>
		<dc:creator>Chris Johnston</dc:creator>
				<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://www.fuzzylizard.com/?p=1038</guid>
		<description><![CDATA[I have spent the last few days working with the CSS in an existing web application. It isn&#8217;t pretty. My biggest pet peeve with it is all the special cases that exist. If you find yourself doing a lot of the following you are in for a world of hurt when it comes time to [...]]]></description>
			<content:encoded><![CDATA[<p>I have spent the last few days working with the CSS in an existing web application. It isn&#8217;t pretty. My biggest pet peeve with it is all the special cases that exist. If you find yourself doing a lot of the following you are in for a world of hurt when it comes time to redesign your site.</p>
<pre name="code" class="css">
.homepage h3 {
  some style
}
.about h3 {
}
div.box h3 {
}
</pre>
<p>My advice is to create a style guide and stick to it throughout the entire site. That way, when you use <code>h3</code> you will know exactly what it is going to look like and it will stay consistent throughout the entire web site.</p>
<p>Another side benefit of doing this is your CSS file will be greatly reduced in size and will be understandable. This will also save on download times for those visiting your site.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fuzzylizard.com/archives/2009/04/14/1038/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Filling browser with background colour using YUI Grids</title>
		<link>http://www.fuzzylizard.com/archives/2009/04/08/1035/</link>
		<comments>http://www.fuzzylizard.com/archives/2009/04/08/1035/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 03:07:14 +0000</pubDate>
		<dc:creator>Chris Johnston</dc:creator>
				<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://www.fuzzylizard.com/?p=1035</guid>
		<description><![CDATA[I am not sure if anyone else has had this problem, but one thing I have never liked about using Yahoo! UI Grids library is that I could never get a background colour applied to &#60;body&#62; to fill the entire background. It would only go to the bottom of the #doc div. So if that [...]]]></description>
			<content:encoded><![CDATA[<p>I am not sure if anyone else has had this problem, but one thing I have never liked about using <a href="http://developer.yahoo.com/yui/grids/">Yahoo! UI Grids</a> library is that I could never get a background colour applied to <code>&lt;body&gt;</code> to fill the entire background. It would only go to the bottom of the <code>#doc</code> div. So if that happened to be half way up your browser window you were left with half a window of white.</p>
<p>I finally figured out how to solve this. Grids, or Reset, adds a <code>background</code> CSS attribute to the <code>html</code> element. To get rid of this, and have your background fill the entire browser simply use</p>
<pre>
html {
  background: none;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.fuzzylizard.com/archives/2009/04/08/1035/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programatically adding tags to contacts in Highrise</title>
		<link>http://www.fuzzylizard.com/archives/2009/04/03/1028/</link>
		<comments>http://www.fuzzylizard.com/archives/2009/04/03/1028/#comments</comments>
		<pubDate>Thu, 02 Apr 2009 22:53:02 +0000</pubDate>
		<dc:creator>Chris Johnston</dc:creator>
				<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://www.fuzzylizard.com/?p=1028</guid>
		<description><![CDATA[I have been playing with adding tags to contacts in Highrise programatically. Unfortunately, 37Signals has not added this functionality to the API for Highrise so you have to hack it in. Based on a post on adding contacts, the following code will add a single tag to a contact.

require 'rubygems'
require 'net/http'

contact_id = 12345
connection = Net::HTTP.new("your_account.highrisehq.com")
req [...]]]></description>
			<content:encoded><![CDATA[<p>I have been playing with adding tags to contacts in <a href="http://www.highrisehq.com/">Highrise</a> programatically. Unfortunately, 37Signals has not added this functionality to the API for Highrise so you have to hack it in. <a href="http://forum.37signals.com/highrise/posts/search?q=net%3A%3Ahttp">Based on a post on adding contacts</a>, the following code will add a single tag to a contact.</p>
<pre name="code" class="ruby">
require 'rubygems'
require 'net/http'

contact_id = 12345
connection = Net::HTTP.new("your_account.highrisehq.com")
req = Net::HTTP::Post.new("/parties/#{contact_id}/tags")
req["content-type"] = "application/xml"
req.basic_auth("your_api_token", 'X')
req.set_form_data({"name" => "new_or_existing_tag"}, ";")
response = connection.request(req)
puts response
</pre>
<p>This will return a bunch of JavaScript that you can ignore.</p>
<p>For comparison, here is the same code using <a href="http://railstips.org/2008/7/29/it-s-an-httparty-and-everyone-is-invited">HTTParty</a>. A very nice, easy to use library for interacting with ReST services.</p>
<pre name="code" class="ruby">
require 'rubygems'
require 'httparty'

class Tag
  include HTTParty
  base_uri "your_site.highrisehq.com"
  basic_auth 'your_api_token', 'X'

  def add_tag_to_contact(tag, contact_id)
    self.class.post("/parties/#{contact_id}/tags", :query => { :name => tag })
  end
end

puts Tag.new.add_tag_to_contact("tag_as_string", "1")
</pre>
<p>The goal of all this is to create a Highrise API wrapper that includes the ability to manipulate tags. Highrise is great, but the lack of Tags in the API really reduces what you can do with the tool since there is no facility for creating or manipulating lists.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fuzzylizard.com/archives/2009/04/03/1028/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 3.024 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2010-03-11 16:16:39 -->
