<?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>The Haystack. &#187; Design</title>
	<atom:link href="http://www.the-haystack.com/category/design/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.the-haystack.com</link>
	<description>Web, design, and web design</description>
	<lastBuildDate>Thu, 05 Jan 2012 10:36:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Learn You a Flexbox for Great Good!</title>
		<link>http://www.the-haystack.com/2012/01/04/learn-you-a-flexbox/</link>
		<comments>http://www.the-haystack.com/2012/01/04/learn-you-a-flexbox/#comments</comments>
		<pubDate>Wed, 04 Jan 2012 21:48:59 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[browsers]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Layout]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[flexbox]]></category>

		<guid isPermaLink="false">http://www.the-haystack.com/?p=350</guid>
		<description><![CDATA[So you want to learn Flexbox? Perhaps you&#8217;ve heard about it. Perhaps you&#8217;ve read a tutorial or two about it. Perhaps you&#8217;ve even played around with it already. If you&#8217;ve never heard of Flexbox, or if it&#8217;s been awhile since &#8230; <a href="http://www.the-haystack.com/2012/01/04/learn-you-a-flexbox/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>So you want to learn Flexbox? Perhaps you&#8217;ve heard about it. Perhaps you&#8217;ve read a <a href="http://www.the-haystack.com/2010/01/23/css3-flexbox-part-1">tutorial</a> or two about it. Perhaps you&#8217;ve even played around with it already.</p>
<p>If you&#8217;ve never heard of Flexbox, or if it&#8217;s been awhile since you&#8217;ve used it, forget what you know. We&#8217;re starting over! The spec has been rewritten; the last version at the time of this writing is dated 29 November 2011!</p>
<h2>What you&#8217;ll need</h2>
<p>Currently, Chrome Canary has a partial implementation of the spec. If you&#8217;d like to follow along, you&#8217;ll need nothing more than Chrome Canary and your favorite text editor.</p>
<ul>
<li>Chrome Canary: <a href="http://tools.google.com/dlpage/chromesxs">http://tools.google.com/dlpage/chromesxs</a>;</li>
<li>Your favorite text editor: <a href="http://www.vim.org/">http://www.vim.org/</a> (Relax, <em>relax</em>)</li>
</ul>
<p>Ready? Let&#8217;s get to it!</p>
<h2>What is Flexbox?</h2>
<p>Flexbox is a nickname for CSS Flexible Box Layout Module. It&#8217;s one of a few CSS Working Drafts having to do with visual layout. Flexbox offers us a new box model which has been optimized for laying out user interfaces. In short: the children of a “box” can be ordered either vertically or horizontally within their parent, and we can control what happens to any remaining space. It is possible to nest these boxes, allowing for very complex layouts.</p>
<h3>Caution!</h3>
<p>There are other CSS layout modules in development which, in my opinion, are much more suited to general page layout than Flexbox. Flexbox is fairly straightforward, but can become unruly when used for complex layouts. In any case it is <a href="http://www.xanthir.com/blog/b4580" title="Why Flexboxes Aren't Good for Page Layout">not the best solution for all types of layout</a>. But for UI-components like buttons, forms, toolbars or rows and columns of content/media blocks for which you&#8217;d normally use floats, Flexbox makes code simpler and is a huge time-saver. Flexbox is designed to play nicely with existing CSS properties. Thus, you are still free to use floats or other types of positioning on non-Flexbox elements.</p>
<h2>Three Little Boxes</h2>
<p>If you&#8217;re feeling a bit lazy, you&#8217;re welcome to simply download and edit the <a href="/playground/css3-flexbox/new-flexbox.html">demo page</a> Otherwise&#8230;</p>
<p>Open your editor, create a simple HTML document with a single box. In this case, we&#8217;ll use a <code>div</code>:</p>
<pre>
<code>
    &lt;!DOCTYPE html&gt;
    &lt;html lang="en"&gt;
        &lt;head&gt;
             &lt;meta charset="utf-8"&gt;
             &lt;title&gt;Flexbox&lt;/title&gt;
        &lt;/head&gt;
        &lt;body&gt;
            &lt;div&gt;
            &lt;/div&gt;
        &lt;/body&gt;
    &lt;/html&gt;
</code>
</pre>
<p>Great, But it would be nice to see something, so we&#8217;ll have to add some style:</p>
<pre>
<code>
    &lt;style&gt;
        body&gt;div {
            height: 500px;
            padding: 1em;
            background-color: gray;
        }
    &lt;/style&gt;
</code>
</pre>
<p>Now we&#8217;ll put three boxes into our <code>div</code>. These are, of course, the first <code>div</code>&#8216;s children:</p>
<pre>
<code>
    &lt;div&gt;
        &lt;div&gt;A&lt;/div&gt;
        &lt;div&gt;B&lt;/div&gt;
        &lt;div&gt;C&lt;/div&gt;
    &lt;/div&gt;
</code>
</pre>
<p>Let&#8217;s style those as well:</p>
<pre>
<code>
    div&gt;div {
        width: 100px;
        height: 100px;
        background-color: pink;
    }
</code>
</pre>
<p>Now look at this page in Canary. Nothing unusual here, just three block-level elements one under another, as block-level elements are known to do. But we&#8217;ll put a stop to <em>that</em>. We&#8217;ve created our own Flexbox playground, so let&#8217;s play.</p>
<h2>Defining a flexbox</h2>
<p>We would like to apply the magic of Flexbox to the children of our parent <code>div</code>. We do so with the <code>display</code> property. By applying <code>display: flexbox;</code> to our parent <code>div</code>, we tell it to use the Flexbox box model. If we wanted our parent <code>div</code> to be inline instead of block-level, we&#8217;d use <code>display: inline-flexbox;</code>.</p>
<pre>
<code>
    body&gt;div {
        display: -webkit-flexbox; /* We need the prefix for now, unfortunately. */
        height: 500px;
        padding: 1em;
        background-color: gray;
    }
</code>
</pre>
<p>Our three child <code>div</code>s, which we&#8217;ll call <em>flexbox items</em> from now on, now live according to the Flexbox box model. Beware: there are rules that determine what a flexbox item is. For example, if we were to use <code>position: absolute;</code> on one of the three boxes, it would <em>no longer be a flexbox item</em> since we&#8217;ve applied a different positioning model. Read <a href="http://www.w3.org/TR/css3-flexbox/#flex-items">more about flexbox items</a> in the spec.</p>
<p>Back to our little exercise. Take a look at the page in your browser. The flexbox items look a bit as if we had applied <code>inline</code>, <code>inline-block</code> or <code>float</code> to them. This is because the Flexbox default is to position flexbox items horizontally. The main difference so far is that we have only added a rule <em>to the parent</em> and not to the items themselves.</p>
<h2>Source-order independence</h2>
<p>Flexible Box Layout Module gets its name from the fact that it allows us to create flexible boxes. In other words, boxes can become flexible by utilizing available space. We&#8217;ll get to that in a minute. But Flexbox offers something at least equally important to us, especially in this Age of Mobile: source-order independence. Let&#8217;s play around and see how we can change the order of flexbox items.</p>
<pre>
<code>
    body&gt;div {
        display: -webkit-flexbox; 
        -webkit-flex-flow: row-reverse;
        height: 500px;
        padding: 1em;
        background-color: gray;
    }
</code>
</pre>
<p>OMG. Our flexbox items are now right-aligned and the order is reversed! We do this with the <code>flex-flow</code> property, for which <code>row</code> is the default value. <code>row-reverse</code> flips this around. You might have already guessed that when you want to position flexbox items vertically, you would use <code>column</code> or <code>column-reverse</code>. At the time of this writing, Canary does not support <code>column-reverse</code>, but try out <code>column</code> and see what happens! When you&#8217;re done playing around, set the value back to <code>row</code> and we&#8217;re ready for our next step.</p>
<p>By the way, <code>flex-flow</code> also takes a value for wrapping flexbox items to new rows (or columns, depending on which you&#8217;re using). The values <code>wrap</code> and <code>wrap-reverse</code> serve this purpose, as the default is a single row (or column) of flexbox items which overflows the parent. <code>wrap</code> and <code>wrap-reverse</code> still haven&#8217;t been implemented at the time of this writing (I&#8217;m saying that a lot). But let&#8217;s say, just for fun, that we could use <code>wrap</code> today:</p>
<pre>
<code>
    body&gt;div {
        display: -webkit-flexbox; 
        -webkit-flex-flow: row wrap; /* `wrap` gives us a multi-line flexbox. */
        height: 500px;
        padding: 1em;
        background-color: gray;
    }
</code>
</pre>
<h3>Mirror, mirror&#8230;</h3>
<p>All the properties dealing with order, direction or alignment of flexbox items are influenced by the current <em>writing mode</em>. The writing mode is the original direction of the text. Many of us are used to top-to-bottom, left-to-right. But as soon as these are changed, the output of the directional Flexbox properties will also change. You&#8217;ve already seen what <code>row-reverse</code> does. But what if your writing mode isn&#8217;t the default (top-to-bottom, left-to-right) but top-to-bottom, right-to-left? Your flexbox items would be laid out from right-to-left <em>in the first place</em>, and <code>row-reverse</code> would flip things so they&#8217;re left-to-right.</p>
<p>Try it out:</p>
<pre>
<code>
    body&gt;div {
        display: -webkit-flexbox; 
        direction: rtl; /* The `writing-mode` property currently has no visual effect in Canary. The `direction` property will suffice for our example. */
        -webkit-flex-flow: row;
        height: 500px;
        padding: 1em;
        background-color: gray;
    }
</code>
</pre>
<p>Look at the page in your browser. Now replace <code>row</code> with <code>row-reverse</code>. See what happens?</p>
<p>Confusing? Perhaps a little at first, but the properties all work logically based on the current writing mode. As most of us usually work with the same writing mode most of the time, it shouldn&#8217;t be much of a problem.</p>
<p>In order to understand the effect many Flexbox properties have on flexbox items, it is important to understand what the <em>main axis</em> and the <em>cross axis</em> are. The <em>main axis</em> is the axis along which the flexbox items are placed. In other words, if the flexbox items have been placed horizontally (<code>flex-flow: row;</code>), then the main axis is horizontal. The <em>cross axis</em> is perpendicular to the main axis. In our example, that would be vertical. When using <code>flex-flow: column;</code>, this is switched: the main axis is vertical and the cross axis is horizontal.</p>
<p>That&#8217;s a pain to explain well. Just to be sure we&#8217;re clear, here&#8217;s an illustration:</p>
<p><!-- ascii diagrams for ditaa</p>
<p>HORIZONTAAL MAIN AXIS</p>
<p>               |<br />
    +----------------------+<br />
    | +----+ +----+ +----+ |<br />
----| |cPNK| |cPNK| |cPNK| |---- <- Main axis is horizontaal,<br />
    | +----+ +----+ +----+ |        omdat flexbox items horizontaal<br />
    |                      |        zijn geplaatst.<br />
    |                      |<br />
    |c888                  |<br />
    +----------------------+<br />
               |</p>
<p>               ^<br />
               |</p>
<p>    Cross axis is verticaal</p>
<p>--------------------------------------------------------------------<br />
VERTICAAL MAIN AXIS</p>
<p>               |<br />
    +----------------------+<br />
    | +----+               |<br />
    | |cPNK|               |<br />
    | +----+               |<br />
    |                      |<br />
    | +----+               |<br />
----| |cPNK|               |---- <-Cross axis is horizontaal<br />
    | +----+               |<br />
    |                      |<br />
    | +----+               |<br />
    | |cPNK|               |<br />
    | +----+               |<br />
    |c888                  |<br />
    +----------------------+<br />
               |</p>
<p>               ^<br />
               |</p>
<p>    Main axis is verticaal<br />
    omdat flexbox items verticaal<br />
    zijn geplaatst.<br />
--></p>
<p><img src="http://www.the-haystack.com/wp-content/uploads/2012/01/fb-axis.png" alt="When items are horizontally positioned, the main axis is horizontal." title="When items are horizontally positioned, the main axis is horizontal." width="720" height="672" class="aligncenter size-full wp-image-395" style="max-width:100%;" /></p>
<p>Remember main axis and cross axis, because we&#8217;ll need them in a bit.</p>
<h2>Order! Order in the court!</h2>
<p>Let&#8217;s look at another property which helps the cause for source-order independence: <code>flex-order</code>.</p>
<p>In your example code, make sure you&#8217;ve set <code>flex-flow</code> to <code>row</code> and have removed <code>direction: rtl;</code>. If things are as they should be, you&#8217;ll have three flexbox items: A, B and C, in the top left of <code>body&gt;div</code>. Imagine that although our code contains these items in that order, that we want to display them in the order A-C-B. To do this, we&#8217;ll use <code>flex-order</code>:</p>
<pre>
<code>
    div:nth-child(2) { /* Yes, I could have used an ID or a class. But, hey, whatever. */
        -webkit-flex-order: 1;
    }
</code>
</pre>
<p>Check things out in your browser. The order of the flexbox items should be A-C-B.</p>
<p><code>flex-order</code> places flexbox items into <em>ordered groups</em>. Boxes without an explicit <code>flex-order</code> are in group 0 and remain in source order. In our example, the second flexbox item (B) is placed in group 1. A and C remain in group 0 and in source order (A before C). Since group 1 comes after group 0, the B comes last. If we had wanted the order B-A-C, we could have left B in group 0 and put A and C into group 1:</p>
<pre>
<code>
    div&gt;div:first-child,
    div&gt;div:last-child {
        -webkit-flex-order: 1;
    }
</code>
</pre>
<h2>Flexibility</h2>
<p>One of the nicest aspects of Flexbox is the ability to create flexible elements. We can decide what to do with any remaining space in our <code>body&gt;div</code> (in this example). We can divide this space up between the flexbox items, or we can make the widths or heights of one or more of these items <em>flexible</em>, alotting a certain amount of available space to each.</p>
<p>We&#8217;ll look at flexibility first and then come back to distributing available space.</p>
<p>Imagine that our three flexbox items are buttons in a web application which might also be used on mobile devices. Sometimes we have three, but sometimes we only have two (just nod and go along with it). We&#8217;d like to say, “No matter how many of these buttons there are, I want them all to generally be the same width, and these widths should be such that the row of buttons takes up all the available width of the parent.” We&#8217;d normally resort to Javascript for these types of layout problems, but Flexbox might put an end to that. See what happens when we make our flexbox items flexible with the <code>flex()</code> function:</p>
<pre>
<code>
    div&gt;div {
        /* width: 100px; */
        width: -webkit-flex(1 0 100px);
        height: 100px;
        background-color: pink;
    }
</code>
</pre>
<p>The <code>flex()</code> function can be used as a value for <code>width</code> or <code>height</code>. <code>flex()</code> takes three values: positive flex, negative flex and <em>preferred size</em>. The last two parameters are optional; the default for negative flex is 0 and the default for preferred size is 0px. Here&#8217;s how <code>flex()</code> works in a nutshell:</p>
<ol>
<li>The <em>preferred width</em> is applied to the flexbox items.</li>
<li>If there is any space left over in the parent, this space is divided up into parts and added to the widths of the flexbox items according to the positive flex value. </li>
<li>If the flexbox items overflow the parent (e.g. together they are wider than the parent), then the negative flex value is used for determining the widths of the items. Please note that negative flex is a <em>positive</em> value (e.g. 2 and not -2).</li>
</ol>
<p>A positive flex value of 1 basically means “one equal part of the available space”. A value of two would mean something like “twice the amount of available space as the items that have <code>flex(1)</code>”. So it&#8217;s nothing like “two parts whiskey, one part cola”. The easiest way to learn it is to try it out. Type the following code <em>under</em> your rules for <code>div&gt;div</code>:</p>
<pre>
<code>
    div&gt;div:first-child,
    div&gt;div:last-child {
        width: -webkit-flex(2);
        background-color: magenta; /* This allows us to see the difference clearly. Plus, it hurts your eyes. */
    }
</code>
</pre>
<p>If you check your browser, you&#8217;ll see that the first and the last flexbox items don&#8217;t each have 2 parts of the available space. Rather, they have <em>two times as much</em> available space as the middle box, which has <code>flex(1)</code>. I know, I know. Just be glad you&#8217;re not a browser maker. Unless you are, in which case: have fun and please get this implemented ASAP!</p>
<p>Also, please note that this does <em>not</em> mean that the two outermost boxes are <em>two times as wide</em> as the center box. We&#8217;re only dealing with how the available space in the parent is being distributed.</p>
<p>Remove the declaration you just added. Remove one of the <code>div</code>s and look at the result in your browser. Once you&#8217;ve seen what happens, put the <code>div</code> back in again.</p>
<p>There&#8217;s plenty more about <code>flex()</code> and any other gory details you might want to know about Flexbox; these can all be found in the <a href="http://www.w3.org/TR/css3-flexbox/">spec</a>.</p>
<h2>Alignment of flexbox items</h2>
<p>Did you remember everything about main axis and cross axis? Excellent. Because the <code>flex-pack</code> property determines how flexbox items are aligned along the main axis. In our example file, the main axis is horizontal. In order to study the effect of <code>flex-pack</code>, remove <code>flex()</code> and change the width back to 100px:</p>
<pre>
<code>
    div&gt;div {
        width: 100px;
        height: 100px;
        background-color: pink;
    }
</code>
</pre>
<p><code>flex-pack</code> accepts one of four possible values: <code>start</code>, <code>end</code>, <code>justify</code> and <code>center</code>. Pretty clear. Let&#8217;s center our flexbox items. We do this on the parent:</p>
<pre>
<code>
    body&gt;div {
        display: -webkit-flexbox; 
        -webkit-flex-flow: row;
        -webkit-flex-pack: center; /* &lt;-- */
        height: 500px;
        padding: 1em;
        background-color: gray;
    }
</code>
</pre>
<p>Go ahead and play with the other values until you like it.</p>
<p>Of course, there is a property for aligning flexbox items along the <em>cross axis</em>: <code>flex-align</code>. The possible values differ slightly from <code>flex-pack</code>. The most important thing to remember is that while <code>flex-pack</code> is applied to the <em>parent</em> of the flexbox items, <code>flex-align</code> is applied to <em>the flexbox items themselves</em>.</p>
<pre>
<code>
    div&gt;div {
        width: 100px;
        height: 100px;
        background-color: pink;
        -webkit-flex-align: center; /* Also: start | end | baseline | stretch  &lt;-- Try these vales as well! */
    }
</code>
</pre>
<p>Not all the values are supported yet, but I don&#8217;t think we&#8217;ll need to wait very long. As the spec solidifies, implementation should come fairly quickly. The browser makers are quite interested in Flexbox.</p>
<h2>Enough! Time to play</h2>
<p>There are a couple of other properties having to do with multi-line flexboxes, but since we can&#8217;t try those out yet, we&#8217;ll stop here for now. Hopefully we&#8217;ve handled enough material to get you started playing around with the “new” Flexbox. Try and consider practical applications. How could Flexbox help within the context of “responsive design” and mobile? What possibilities open up for form styling? Navigation?</p>
<p>You don&#8217;t need to be able to use this today in actual projects to learn and experiment with the possibilities. Implementation might come quicker than you think, and you&#8217;ll already have a head start.</p>
<p>Have fun!</p>
<p><ins datetime="2012-01-04T20:43:48+00:00">Note: This article first <a href="http://fronteers.nl/blog/2011/12/learn-you-a-flexbox-for-great-good">appeared in the Dutch language</a> for the <a href="http://fronteers.nl/blog/categorieen/adventskalender">Fronteers Advent Calendar</a>. Payment for the article was a modest donation to <a href="http://iccf-holland.org/">ICCF Holland</a>.</ins></p>
]]></content:encoded>
			<wfw:commentRss>http://www.the-haystack.com/2012/01/04/learn-you-a-flexbox/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>It&#8217;s okay to do adaptive layout. Really.</title>
		<link>http://www.the-haystack.com/2011/02/22/adaptive-layout-okay/</link>
		<comments>http://www.the-haystack.com/2011/02/22/adaptive-layout-okay/#comments</comments>
		<pubDate>Tue, 22 Feb 2011 21:31:28 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Layout]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[adaptive layout]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[responsive design]]></category>

		<guid isPermaLink="false">http://www.the-haystack.com/?p=321</guid>
		<description><![CDATA[Vasilis wrote yesterday about how he altered the layout of the Tropenmuseum website (English homepage) to adapt to different screen sizes. Then came the comments. Nothing really wrong with any of them, but the whole &#8220;layout is not the only &#8230; <a href="http://www.the-haystack.com/2011/02/22/adaptive-layout-okay/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://vasilis.nl/">Vasilis</a> wrote yesterday about how he <a href="http://www.frankwatching.com/archive/2011/02/21/flexibele-lay-out-website-tropenmuseum-geschikt-voor-elk-scherm/" title="This article is in Dutch">altered the layout</a> of the <a href="http://www.tropenmuseum.nl/">Tropenmuseum</a> website <ins datetime="2011-02-23T20:45:00+01:00">(<a href="http://www.tropenmuseum.nl/-/MUS/5853/Tropenmuseum">English homepage</a>)</ins> to adapt to different screen sizes.</p>
<p>Then came the comments. Nothing really wrong with any of them, but the whole &#8220;layout is not the only thing that should concern you; performance/context/content/blah is also (maybe even <strong>more</strong> important)&#8221; thing is getting very tired. Why? Because <strong>nobody is saying those things aren&#8217;t important.</strong></p>
<p>Here&#8217;s a fact: If the homepage of site [x] is 100kB, then it&#8217;s 100kB. If I make that page look decent on several devices via adaptive layout&mdash;unless I go overboard&mdash;it is still going to be 100kB. Okay, maybe 101kB. It&#8217;s either zoom hell or not. So people can complain about that, but unless they&#8217;re willing to add to the client&#8217;s budget, the extra layout flexibility is (often, not always) a relatively quick readability and usability win. <em>Device-agnosticism should be baked into the design approach anyway</em>. There&#8217;s absolutely no harm in it.</p>
<p>So no, do not ignore content strategy and performance. And if you do content strategy, then you&#8217;d do well to be thinking about design. Device-agnostic design applies here as well. </p>
<p>Don&#8217;t feel bad about doing adaptive layout just because these other things are <em>also</em> important. It&#8217;s okay. Really.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.the-haystack.com/2011/02/22/adaptive-layout-okay/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Are flashy HTML5/CSS3 “demos” helping?</title>
		<link>http://www.the-haystack.com/2010/08/07/are-html5-css-demos-helping/</link>
		<comments>http://www.the-haystack.com/2010/08/07/are-html5-css-demos-helping/#comments</comments>
		<pubDate>Sat, 07 Aug 2010 07:41:39 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[Babble]]></category>
		<category><![CDATA[browsers]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.the-haystack.com/?p=248</guid>
		<description><![CDATA[The lack of forward movement in front-end web development by government agencies may be our own fault, says Chris Heilmann. And I agree. Completely. I&#8217;ve been increasingly biting in my reactions to many admittedly fun but practically useless “demos”, “experiments” &#8230; <a href="http://www.the-haystack.com/2010/08/07/are-html5-css-demos-helping/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The lack of forward movement in front-end web development by government agencies may be our own fault, <a href="http://www.wait-till-i.com/2010/08/05/uk-government-says-no-to-upgrading-ie6-who-is-to-blame/">says Chris Heilmann</a>. And I agree. Completely.</p>
<p>I&#8217;ve been increasingly biting in my reactions to many admittedly fun but practically useless “demos”, “experiments” and other assorted <abbr>HTML</abbr>5 and <abbr>CSS</abbr>3 nonsense like <abbr>CSS</abbr>3 icons. I always get flack for this, and I probably will now.</p>
<p>While these experiments are easily defended—“just wanted to see what was possible”—they are generally non-complex (though they can be tedious; take one look at a <abbr>CSS</abbr>3 icon or font). They are, put bluntly, simply a way to show off. And as long as that works, it will continue. But what are these experiments helping, aside from the reputations of those who make them(!)?</p>
<p>Please note that many of these experiments utilize a technique that I and many other art directors and designers have used for ages, which greatly enhances product appeal. It involves simply combining two things you wouldn&#8217;t ordinarily expect to be together: <abbr>CSS</abbr> and fonts. <abbr>CSS</abbr> and icons. <abbr>HTML</abbr> and games. Peanut butter and chocolate—Hershey/Reese&#8217;s Peanut Butter Cups have used this to their advantage for years. And so forth. The first person to build real beer from Javascript will be speaking at conferences for years to come.</p>
<p>I could say more, but Chris Heilmann said it so well, there is no need:</p>
<blockquote><p>Right now, we are happily thinking we innovate and push the envelope where in reality we are making each other go “Oooohhhh” while a large chunk of the audience that could benefit from our knowledge is stuck with really poor experiences on the web.</p></blockquote>
<p>If you haven&#8217;t, please take a moment to read his <a href="http://www.wait-till-i.com/2010/08/05/uk-government-says-no-to-upgrading-ie6-who-is-to-blame/">article</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.the-haystack.com/2010/08/07/are-html5-css-demos-helping/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What we can learn from the Defiant Dog</title>
		<link>http://www.the-haystack.com/2010/03/13/defiant-dog/</link>
		<comments>http://www.the-haystack.com/2010/03/13/defiant-dog/#comments</comments>
		<pubDate>Sat, 13 Mar 2010 12:50:20 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[defiant dog]]></category>
		<category><![CDATA[ian broyles]]></category>
		<category><![CDATA[usability]]></category>
		<category><![CDATA[vasilis van gemert]]></category>

		<guid isPermaLink="false">http://www.the-haystack.com/?p=212</guid>
		<description><![CDATA[Ian Broyles&#8216; amusing one-page site Defiantdog.com features a photo of a dog, and a button containing the word &#8220;sit&#8221;. This is fabulously funny, considering that nothing (visible) happens when one clicks the button. I didn&#8217;t think much about it until &#8230; <a href="http://www.the-haystack.com/2010/03/13/defiant-dog/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://ianbroyles.tumblr.com">Ian Broyles</a>&#8216; amusing one-page site <a href="http://defiantdog.com/">Defiantdog.com</a> features a photo of a dog, and a button containing the word &#8220;sit&#8221;. This is fabulously funny, considering that nothing (visible) happens when one clicks the button.</p>
<p><img src="http://www.the-haystack.com/wp-content/uploads/2010/03/defiantdog.jpg" alt="A photo of a dog standing, with a button labeled Sit." title="defiantdog" width="294" height="246" class="aligncenter size-full wp-image-213" /></p>
<p>I didn&#8217;t think much about it until Vasilis van Gemert <a href="http://lovenonsense.com/23">posted about it</a> and Ian <a href="http://ianbroyles.tumblr.com/post/333139223/defiantdog-com-analytics-for-the-last-30-days">published some stats</a>; at that point in time visitors clicked an average of 23 times per visit. 23 times is a lot of clicking, which means some conditioning and expectation are at work.</p>
<p>As pattern-seeking beings, we tend to follow our conditioning. A button must be there for a reason—let&#8217;s click it. It says &#8220;sit&#8221;, therefore the dog will probably sit, won&#8217;t it? 23 clicks on average indicates to me that the average user is not considering whether this is just an image or instead some type of interactive movie. 23 clicks indicates bell/salivate. Button/action-expectation.</p>
<p>Let&#8217;s say you have javascript disabled, for whatever reason. You fill out a form. You click the submit button, not knowing that in this case the developer has made a javascript-dependent button (this is <em>common</em>). You might say you have encountered a Defiant Dog: something which doesn&#8217;t do as it&#8217;s told, or doesn&#8217;t react according to expectations.  </p>
<p>Ian&#8217;s fun experiment confirms two things which many of us know but are always worth repeating:</p>
<ol>
<li>When users expect things to happen on our websites, it&#8217;s most likely that <em>we</em> have done something to trigger those expectations</li>
<li>Users will almost always think it&#8217;s <em>their own fault</em> (and may even click 23 times before deciding it&#8217;s not)
</li>
</ol>
<p>It&#8217;s been said that without expectation, there is no disappointment. While not a new idea, this take-away from the Defiant Dog is still timely, as you&#8217;ll notice anytime you see something you think should be clickable but isn&#8217;t. Or when a relationship is falsely implied between multiple <abbr title="user interface">UI</abbr> elements.</p>
<p>Managing expectations is a design problem. It&#8217;s up to us as web designers to find the defiant dogs in our websites and applications, and get them to sit.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.the-haystack.com/2010/03/13/defiant-dog/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A gentle introduction to CSS3 Flexible Box Module (Part 1)</title>
		<link>http://www.the-haystack.com/2010/01/23/css3-flexbox-part-1/</link>
		<comments>http://www.the-haystack.com/2010/01/23/css3-flexbox-part-1/#comments</comments>
		<pubDate>Sat, 23 Jan 2010 09:11:25 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Layout]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[flexbox]]></category>

		<guid isPermaLink="false">http://www.the-haystack.com/?p=182</guid>
		<description><![CDATA[Note: There is no Part 2 to this introduction, as the Flexbox spec has been changed significantly since this post was written. I did, however, write up an introduction to the newer version of the spec, though I couldn&#8217;t really &#8230; <a href="http://www.the-haystack.com/2010/01/23/css3-flexbox-part-1/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><ins datetime="2012-01-04T21:56:53+00:00">Note: There is <em>no Part 2</em> to this introduction, as the Flexbox spec has been changed significantly since this post was written. I did, however, write up an <a href="http://www.the-haystack.com/2012/01/04/learn-you-a-flexbox/">introduction to the newer version</a> of the spec, though I couldn&#8217;t really call it Part 2.</ins></p>
<p>A portion of what we do as web designers involves arranging elements horizontally or vertically on the screen. As of yet, <abbr>CSS</abbr> lacks a suitable mechanism for this task. Enter <abbr>CSS</abbr>3 Flexible Box Module (“Flexbox” for short).</p>
<p>Flexbox is one of three <abbr>W3C</abbr> draft specs (as of this writing) dealing with general layout issues and has its strengths and weaknesses compared to the other two. But as it has already been implemented in Firefox (and I predict there is a good chance it will be implemented in Safari in some form), you might want to play around with it. Even if it doesn&#8217;t get implemented in anything other than Firefox, some of the principles regarding flexible available space have already been injected into the other modules. Plus, it&#8217;s pretty fun.</p>
<p>The <a href="http://www.w3.org/TR/css3-flexbox/">draft</a> describes Flexbox as:</p>
<blockquote><p>[...] a <abbr>CSS</abbr> box model optimized for interface design. It provides an additional layout system alongside the ones already in <abbr>CSS</abbr>. [CSS21] In this new box model, the children of a box are laid out either horizontally or vertically, and unused space can be assigned to a particular child or distributed among the children by assignment of “flex” to the children that should expand. Nesting of these boxes (horizontal inside vertical, or vertical inside horizontal) can be used to build layouts in two dimensions. This model is based on the box model in the <abbr title="XML User Interface Language">XUL</abbr> user-interface language used for the user interface of many Mozilla-based applications (such as Firefox).</p></blockquote>
<p>This is pretty clear. It implies two important things:</p>
<ol>
<li>No more abusing floats, and no more getting abused by floats</li>
<li>We can create true flexible layouts, and the browser will do the calculations for us</li>
</ol>
<p>Basically, Flexbox is a small part of <abbr>XUL</abbr> ported to <abbr>CSS</abbr>. Cool as it may be, I remain of the opinion that the power of Flexbox is in the layout of things like UI components (think forms and toolbars and such) rather than in general page layout. So let&#8217;s not get carried away and make Flexbox the new float. For general page layout, we need a true grid-based model; I&#8217;ll come back to that in the near future. For now, let&#8217;s dive in.</p>
<p>Flexbox gives us a new value for the <code>display</code> property (the <em>box</em> value), and eight new properties:</p>
<ul>
<li>box-orient</li>
<li>box-flex</li>
<li>box-align</li>
<li>box-direction</li>
<li>box-flex-group</li>
<li>box-lines</li>
<li>box-ordinal-group</li>
<li>box-pack</li>
</ul>
<p>Today, we&#8217;ll ease into this and just focus on <em>box-orient</em> and <em>box-flex</em>, and tackle the other properties in Part 2.</p>
<p>Let&#8217;s say we have three paragraphs, each of which introduces one of three product lines for a client website. Our designer has determined that these teaser paragraphs are to be placed adjacent to one another along a horizontal axis, essentially forming three columns.</p>
<pre>
<code>
&lt;div id="products"&gt;
    &lt;p id="phones"&gt;First child&lt;/p&gt;
    &lt;p id="computers"&gt;Second child&lt;/p&gt;
    &lt;p id="fast-cars"&gt;Third child&lt;/p&gt;
&lt;/div&gt;
</code>
</pre>
<p>How would you currently tackle this? Most, without thinking, would simply float these paragraphs, perhaps adding <code>overflow:hidden;</code> to the parent in order to clear the floats. Nothing very special. But we could also do it quite easily with Flexbox:</p>
<pre>
<code>
#products { 
    display: box;
    box-orient: horizontal;
    }
</code>
</pre>
<p>In the above code, we&#8217;re simply telling the parent to behave according to this (flex)box model, and to lay out all its children along the horizontal axis. No floats. Yay.</p>
<p><code>box-orient</code> accepts four values, but two of them are important for all intents and purposes: horizontal and vertical. Self-explanatory. </p>
<p>The widths of the children remain as specified (or their inherent width if not specified). This means that if the total widths of all the children is less than the total width of the parent, we&#8217;ll get something like this:</p>
<p><img src="http://www.the-haystack.com/wp-content/uploads/2010/01/flex01.gif" alt="3 child elements retain their inherent widths within the parent element" title="flex01" width="475" height="297" class="alignnone size-full wp-image-190" /></p>
<p>But what if you wanted paragraphs one and two to have specific widths and paragraph three to adjust itself depending on the available space within the parent? Flexbox to the rescue:</p>
<pre>
<code>
#products { 
    display: box;
    box-orient: horizontal;
    }
    #fast-cars {
        box-flex: 1;
        }
</code>
</pre>
<p>Here, we&#8217;re telling the last child to become flexible, and to take up available space. Since we&#8217;ve only allocated space to one element, it will take up <em>all</em> of the available space:</p>
<p><img src="http://www.the-haystack.com/wp-content/uploads/2010/01/flex02.gif" alt="The 3rd child element, having flex, takes up the available space." title="flex02" width="475" height="297" class="alignnone size-full wp-image-191" /></p>
<p>Note that the element only becomes flexible along the orientation axis of the box; in this case the element becomes flexible horizontally.</p>
<p>The value for box-flex is relative. So if we were to make the second and third children flexible:</p>
<pre>
<code>
#products { 
    display: box;
    box-orient: horizontal;
    }
    #computers {
        box-flex: 1;
        }
    #fast-cars {
        box-flex: 1;
        }
</code>
</pre>
<p>These would each take up the same amount of available space, in fact dividing the available space equally between them.</p>
<p><img src="http://www.the-haystack.com/wp-content/uploads/2010/01/grid02.gif" alt="2 of the 3 child elements share the available space in the parent element." title="flex03" width="475" height="297" class="alignnone size-full wp-image-192" /></p>
<p> Should we give the last child <code>box-flex: 3;</code>, then it would take three times as much available space as the second child.</p>
<p>Check out the <a href="http://www.the-haystack.com/playground/css3-flexbox/flexbox.html">demo</a> <del datetime="2010-10-04T023:30:00+00:00">(this will only work in Firefox)</del> or download the demo <a href="http://www.the-haystack.com/playground/css3-flexbox/flexbox.html.zip">source code</a> (.zip-file, 1kB).</p>
<p>Without even considering the other six properties, there are lots of possibilities here. Although I am not in favor of using this module for page layout, it can be done, as you can see in the demo.</p>
<p>We&#8217;ll get back to the other properties at a later date. In the meantime, if you want to play around with this, why not? It will <del datetime="2010-02-17T08:34:06+00:00">only work in Firefox</del> <ins datetime="2010-02-17T08:34:06+00:00">work in Firefox and (newer) webkit browsers</ins>; just prefix the display value and properties with <code>-moz-</code> <ins datetime="2010-02-17T08:34:06+00:00">or <code>-webkit-</code> respectively</ins>: </p>
<ul>
<li><code>display: -moz-box;</code></li>
<li><code>-moz-box-orient</code></li>
<li><code>-moz-box-flex</code></li>
<li><ins datetime="2010-02-17T08:34:06+00:00"><code>display: -webkit-box;</code></ins></li>
<li><ins datetime="2010-02-17T08:34:06+00:00"><code>-webkit-box-orient</code></ins></li>
<li><ins datetime="2010-02-17T08:34:06+00:00"><code>-webkit-box-flex</code></ins></li>
</ul>
<p>Please be advised: this is meant to be a surface-level introduction to a draft spec. At the time of this writing, most people won&#8217;t find this applicable to anything outside of experimentation. There is, however, value in learning about the content of somewhat lesser-known working drafts, if only to be able to compare one to another.</p>
<p>Enjoy!</p>
<div style="margin-top:3em;padding:1em;border:1px solid silver;"><a rel="license" href="http://creativecommons.org/licenses/by/3.0/"><img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by/3.0/88x31.png" /></a><br /><span xmlns:dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/Text" property="dc:title" rel="dc:type">A Gentle Introduction to CSS3 Flexible Box Module (Part 1)</span> by <a xmlns:cc="http://creativecommons.org/ns#" href="http://www.the-haystack.com/2010/01/23/css3-flexbox-part-1/" property="cc:attributionName" rel="cc:attributionURL">Stephen Hay</a> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0 Unported License</a>.</div>
]]></content:encoded>
			<wfw:commentRss>http://www.the-haystack.com/2010/01/23/css3-flexbox-part-1/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>Never Mind the Process, Here&#8217;s the Finished Website</title>
		<link>http://www.the-haystack.com/2010/01/16/never-mind-the-process/</link>
		<comments>http://www.the-haystack.com/2010/01/16/never-mind-the-process/#comments</comments>
		<pubDate>Sat, 16 Jan 2010 00:02:52 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[Babble]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[clients]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[requirements]]></category>

		<guid isPermaLink="false">http://www.the-haystack.com/?p=165</guid>
		<description><![CDATA[Praise be to Karen McGrane, who dared to defend Lorem Ipsum. Her article couldn&#8217;t be more timely, as the festering sore that is the Cult of Content-is-King-and-Design-is-Just-a-Decorative-Sauce-on-the-Content-Entree has started to bleed profusely. And it&#8217;s pissing me off. As is the &#8230; <a href="http://www.the-haystack.com/2010/01/16/never-mind-the-process/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Praise be to <a href="http://karenmcgrane.com/">Karen McGrane</a>, who dared to <a href="http://karenmcgrane.com/2010/01/10/in-defense-of-lorem-ipsum/">defend Lorem Ipsum</a>. Her article couldn&#8217;t be more timely, as the festering sore that is the Cult of Content-is-King-and-Design-is-Just-a-Decorative-Sauce-on-the-Content-Entree has started to bleed profusely. And it&#8217;s pissing me off. As is the alarming thought trend that all deliverables should mimic the final product.</p>
<h2>On content</h2>
<p>Content is important. After all, it&#8217;s content people who come up with job titles like Content Strategist, which pretty much means One Who Thinks About Content. Which content, for whom, when, where, why, how&#8230; It&#8217;s absolutely necessary, because clients don&#8217;t do it. Not at the level that it should be done.</p>
<p>Paul Rand, one of the most well-respected designers this world has seen, called design “a method of putting form and content together”. If you would agree with this statement (as I do), you can infer the role of the designer as the one who must successfully combine two <em>components</em>: form and content (the designer will first busy herself with the form component). These two are not mutually exclusive. They are separate components which share a common goal and should be developed on a parallel track to one another. This, however, does not mean that they should be <em>reviewed by the client together at every stage</em>.</p>
<h2>On clients</h2>
<p>Two quick facts about clients:</p>
<ol>
<li>Many don&#8217;t know what they want, and when they do, they don&#8217;t know how to communicate it</li>
<li>Many lack the imagination to “see through” design sketches</li>
</ol>
<p>These are the reasons we are hired in the first place. But these two facts have paved a dangerous path across the lawn of the creative process. An alarming number of web professionals today seem to advocate making preliminary deliverables mimic the finished product&#8211; the more accurate, the better.</p>
<p>This is, well, stupid.</p>
<p>It&#8217;s not stupid if don&#8217;t track your hours. It&#8217;s not stupid if you don&#8217;t care if or how much you are paid for your work. It isn&#8217;t stupid if you don&#8217;t mind doing twice as much work for nothing. Your clients will love you for it, and you&#8217;ll be doomed to continue doing it for the rest of your career.</p>
<h2>On designing in the browser</h2>
<p>When <a href="http://www.stuffandnonsense.co.uk/">Andy Clarke</a> first started talking about “<a href="http://forabeautifulweb.com/blog/about/walls_come_tumbling_down_presentation_slides_and_transcript/">designing in the browser</a>”, I thought it was a great idea. Then people started misinterpreting this to mean “executing the creative process in the browser”. If Andy really <em>designed</em> in the browser, his designs would be shit. What he was of course referring to was the <em>execution of a design idea</em> in the browser as opposed to a tool like Photoshop, which doesn&#8217;t communicate Web Things the way a browser does. He strives for more realism in his deliverables. He&#8217;s simply working based on the two Client Truths listed above. And if you&#8217;ve ever done designs in Photoshop, you&#8217;ll know that applying client changes to those documents is akin to cutting off your own fingers one knuckle at at time. HTML is much easier.</p>
<p>That said, there is certainly a place for Photoshop <em>sketches</em>. It&#8217;s possible to put together a quick <em>visual impression</em> of a website in far less time than it would take to work out in HTML. I&#8217;m referring to the basic idea of a website, an impression of the design language, intended to gauge if we are on the write track before spending many more hours mocking things up in HTML, which is, in fact, templating. I am <em>not</em> referring to creating finished static design visuals. These are the bane of the web designer&#8217;s existence, and should be avoided at all costs. If you really understand your client&#8217;s needs, that means you&#8217;ve done your homework, and you&#8217;ve actually designed <em>before</em> the browser. Otherwise: baby steps.</p>
<h2>On communication</h2>
<p>Imagine that your job was to drive your client somewhere. They aren&#8217;t quite sure where they want to go, but a lot of sun would be nice. And perhaps water. You could drive them to California, but once they hear about Florida, they might prefer that and demand that you drive them there (at your cost, because you&#8217;re the one who chose to go ahead and drive to California).</p>
<p>A better way would be to <em>communicate</em> with the client, asking them if they prefer dry heat or humidity, surfing or Spring Break parties, earthquakes or hurricanes. Based on this information, you could show and tell about both places, help them weigh the pros and cons, and help them in their decision. Then drive. Only then.</p>
<p>Making websites is a <em>process</em>. Creativity is a <em>process</em>. Pacing and leading clients is a <em>process</em>. You&#8217;re not going to eliminate frustration by trying to come up with real content, a polished design and working browser functionality on the first go. You will lose money, though, and perhaps your sanity.</p>
<p>There&#8217;s a reason for storyboards. But wait, shouldn&#8217;t Pixar just go ahead and build and render the complete movie so that the studio execs can see how it will <em>really</em> look?. Then, if they like it, it&#8217;s done! Yeah, right. Good luck with that.</p>
<p>There&#8217;s a reason that advertising teams consist of an art director and a copywriter: design and content. They&#8217;re bed buddies. But these teams pitch <em>ideas</em>, and <em>then</em> work them out. That&#8217;s why we have wireframes. That&#8217;s why we have Photoshop. That&#8217;s why we have Lorem Ipsum. And that&#8217;s why we have, most importantly, good old pencil and paper.</p>
<h2>On balance</h2>
<p>Here&#8217;s what I think: some web professionals want to focus more on deliverables than on people. But guess what: it&#8217;s all about people. We need to help our clients along and communicate with them. If you want good deliverables the first time around, the answer is not to use “real” content and a design which is in fact finished HTML/CSS/Javascript in a real browser. The answer is to ask focused questions, discover the pressing problems, to introduce your client to your potential solutions to those problems. Give them tidbits: here&#8217;s an impression of how the site could look visually. Here are some things you might want to consider concerning your content. Work your way up to real content in a real browser. When done right, that point can come quickly.</p>
<p>It&#8217;s too much to show a client all these things at once in the very beginning. There are too many factors, and it&#8217;s impossible to tell which factors will influence their opinions at that moment, which makes revision a nightmare at best. <em>Of course</em> content and form should each be developed with the other in mind. But consider <em>presenting</em> separately at first. Yes, that could mean that Lorem Ipsum is an option. That could mean that Photoshop is an option. That could mean that a sketch on a napkin, with a good, old-fashioned <em>explanation</em> of how things work, is an option. When you know enough, put form and content together.</p>
<h2>On bed buddies</h2>
<p>And forget the content versus design war. They need each other. In the words of Paul Rand, “when form predominates, meaning is blunted. but when content predominates, interest lags.”</p>
]]></content:encoded>
			<wfw:commentRss>http://www.the-haystack.com/2010/01/16/never-mind-the-process/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Designing this site, part 2: Values, goals and requirements</title>
		<link>http://www.the-haystack.com/2009/07/24/designing-this-site-part2-goals/</link>
		<comments>http://www.the-haystack.com/2009/07/24/designing-this-site-part2-goals/#comments</comments>
		<pubDate>Fri, 24 Jul 2009 07:26:45 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[Creativity]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Redesign]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[goals]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[requirements]]></category>

		<guid isPermaLink="false">http://www.the-haystack.com/?p=91</guid>
		<description><![CDATA[A week of hard client work behind me and it&#8217;s time to be my own client. And just as my clients would tell you when I badger them with the questions I&#8217;ll be asking myself, the first part of good &#8230; <a href="http://www.the-haystack.com/2009/07/24/designing-this-site-part2-goals/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A week of hard client work behind me and it&#8217;s time to be my own client. And just as my clients would tell you when I badger them with the questions I&#8217;ll be asking myself, the first part of good design is not necessarily the fun part. It&#8217;s about asking questions, sometimes difficult, but always meant to encourage focus. Focus on what the website <em>needs</em> to be, and for whom.</p>
<p>As I mentioned last week, I&#8217;m redesigning this website, which for non-colorblind visitors is the pukey–green monstrosity before you. The color combination has been a joy to me, watching people dry–heave and reach for their feed readers while they still had the chance. But those days are numbered. I consider it quite unacceptable to be creative director of a <a href="http://www.cinnamon.nl">reputable web design firm</a> and not have a personal site which shows the same amount of thought and effort that goes into client work.</p>
<p>I&#8217;ll be putting my money where my mouth is, and using the same process I&#8217;ve evangelized for years and use for clients all the time. The <a href="http://changethis.com/48.04.DesignFunnel">Design Funnel</a> is nothing new; many designers follow similar processes. I claim no patented process. It&#8217;s simply a (traditional?) process which I&#8217;d like to see more designers utilize, especially in this age of jumping–right–into–Photoshop, but also for those who don&#8217;t <em>sketch</em> before designing in the browser. It&#8217;s about thinking through before doing. It&#8217;s about <em>design</em> instead of <em>decoration</em>, which is so prevalent on today&#8217;s Web. This site is an example of decoration, and that shows. And that&#8217;s a pity.</p>
<p>Step one is defining values and goals. Defining the problem isn&#8217;t enough (and defining possible solutions at this point borders on evil—if you&#8217;re a designer, you know that a <em>lot</em> of clients tend to do this). My problem is pretty much stated in the second paragraph. But what&#8217;s important to me? Let&#8217;s not worry about formulating at this stage. This stage is about aggregation. To do this, I&#8217;ll answer some of the questions I ask my own clients.</p>
<h2>What do I want (the site) to communicate, show, tell or do?</h2>
<p>I work hard, with a talented team, for some awesome clients, many of whom are very happy with our work. Client work is nevertheless sprinkled with compromise and factors such as existing brain–dead branding by brain–dead design firms. This is actually the hallmark of good designers: working within constraints. But that doesn&#8217;t mean it&#8217;s easy. It also doesn&#8217;t mean the end result will fit your personal taste.</p>
<p>The Haystack <em>should</em> fit my personal taste. It should be what I feel is appropriate design, and I want to design it myself. It should demonstrate my ability as a designer and art director, and should adapt to the content I choose to publish. It should not overpower the content, nor should it be mere decoration for the content. It should be pleasurable to visit and read (okay, calmly, slowly, place the feed reader on the ground and kick it over to me). </p>
<p>It should be an online repository for all thoughts, ideas, discoveries, code, images, sketches and anything else I&#8217;d like to share publicly. It should be technically adaptable to my usual flurries of endless ideas, re-evaluation and mind–changing. It&#8217;s a bird, it&#8217;s a plane, it&#8217;s…</p>
<h2>For whom?</h2>
<p>I&#8217;ll be writing and posting about things for which I have a passion, and that means mostly design and web development, art, technology and any combination thereof. Therefore the audience will be (and is) industry creatives, developers and perhaps a few societal misfits <ins datetime="2009-07-24:T12:00:00Z" title="Changed as a result of fschaap's comment on this post.">and some very <a href="#comment-148263">nice people</a></ins>. Oh yeah—some family and friends who will get here by clicking on the little blue <em>E</em>.</p>
<h2>Any branding guidelines or creative considerations?</h2>
<p>No brand. But the site should make a mark by being recognizable. Creatively, I&#8217;d like to be able to tailor the design of posts and pages to the content. Being able to <a href="http://www.zeldman.com/daily/0403b.shtml#artdirection">art direct</a> my own posts will be one of the biggest advantages to the redesign. <a href="http://jasonsantamaria.com/articles/a-new-day/">Jason Santa Maria does this</a> fantastically; he&#8217;s chosen not to let his <abbr title="Content Management System">CMS</abbr> determine his design possibilities. The new site should allow me to art direct the full design of a post: type, color, layout and imagery.</p>
<p>It should be standards–compliant. It should be accessible. It should uphold basic usability principles, but I&#8217;m giving myself some space on that one. Usability purists, simply turn off <abbr>CSS</abbr> completely, thank you.</p>
<h2>Technical considerations?</h2>
<ul>
<li>Write it in <abbr>HTML5</abbr>, just for the challenge of getting the design I want using a moving target. I will, however, think twice about using vague so-called “semantic” elements like <code>&lt;aside&gt;</code>.</li>
<li>Use as much <abbr>CSS3</abbr> as possible. Not necessarily the decorative stuff like <code>border-radius</code> et. al., but really cool stuff like <a href="http://www.w3.org/TR/css3-mediaqueries/">media queries</a> and the tastier <a href="http://www.w3.org/TR/css3-selectors">selectors</a>.</li>
<li>Use <a href="http://drupal.org">Drupal</a>, because I&#8217;ve got 2+ years experience with it, and it will allow me the flexibility I want in implementing a design. Plus, it is quite awesome.</li>
</ul>
<h2>Next steps</h2>
<p>Reading through this, I realize that if a client had sent this to me as their wish list, I would&#8217;ve had a conniption fit at the office. It&#8217;s a good thing I know what I mean by all of the above. Now that I&#8217;ve got it typed out, though, it&#8217;s enough to get the ideas flowing. We&#8217;ll cover it and let it simmer for a while.</p>
<p>And then it will be time to start sketching.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.the-haystack.com/2009/07/24/designing-this-site-part2-goals/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Designing this site: prologue</title>
		<link>http://www.the-haystack.com/2009/07/16/designing-this-site-prologue/</link>
		<comments>http://www.the-haystack.com/2009/07/16/designing-this-site-prologue/#comments</comments>
		<pubDate>Thu, 16 Jul 2009 09:29:19 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[Creativity]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Redesign]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[process]]></category>
		<category><![CDATA[webdesign]]></category>

		<guid isPermaLink="false">http://www.the-haystack.com/?p=86</guid>
		<description><![CDATA[I don&#8217;t blog much. Which is weird, because I have plenty of things I&#8217;d love to just get down “on paper”, so to speak. But I&#8217;m a designer. I love beautiful things. This blog in its current form doesn&#8217;t fall &#8230; <a href="http://www.the-haystack.com/2009/07/16/designing-this-site-prologue/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I don&#8217;t blog much. Which is weird, because I have plenty of things I&#8217;d love to just get down “on paper”, so to speak. But I&#8217;m a designer. I love beautiful things. This blog in its current form doesn&#8217;t fall into that category. That makes it less enticing to deal with.</p>
<p>Fact is, client work comes first during work time. And family comes first during personal time (and work creeps in all too often). So when to blog? When to play around with stuff I can&#8217;t play around with (yet) in client work?</p>
<p>In one of our recent conversations on the highs and woes :) of web work, <a href="http://www.quirksmode.org">ppk</a> suggested that I kill two birds with one stone: design my blog and write about the process. So I can actually do my own blog design (the current one is a third-party <abbr title="WordPress">WP</abbr> theme) and write on the blog at the same time, instead of waiting until the design is “finished”, which all of you designers out there know is never the case. </p>
<p>It made me think about <a href="http://www.markboulton.co.uk/journal/comments/design_by_community/">what Mark Boulton and Leisa Reichelt did</a> for Drupal, and <a href="http://forabeautifulweb.com/blog/about/the_new_internationalist_home_page_challenge/">what Andy did</a> with New Internationalist. Not necessarily the part about inviting feedback (which was a key factor in Mark&#8217;s process), but the part about <em>publishing</em> the process. Being open about this process will allow me to “think out loud”. And I&#8217;m sure some of my talented friends will give helpful and critical feedback along the way.</p>
<p>So my thoughts at this point are basically:</p>
<ul>
<li>Create the design I want, which should at least <em>hint</em> at the fact that I am an experienced designer.</li>
<li>Switch from WordPress to <a href="http://drupal.org">Drupal</a>. While I like WordPress, I <em>love</em> Drupal and know much more about using it.</li>
<li>Use <a href="http://www.w3.org/TR/html5/">HTML5</a>. Like it or not, HTML5 is coming, and now&#8217;s the time to start playing with it. Some problems with HTML5 are <a href="http://www.alistapart.com/articles/semanticsinhtml5/">obvious</a>, but others will only see light in practice.</li>
<li>Although I&#8217;m not a fan of the mainly decorative parts of <a href="http://www.w3.org/Style/CSS/current-work">CSS3</a> which browsers have been quick to implement, there are some parts of CSS3 I&#8217;d already like to take advantage of.</li>
</ul>
<p>That&#8217;s a start. I&#8217;ll be posting my thoughts, sketches and experiences here, documenting what I can for myself and whoever might be interested.</p>
<p>We&#8217;ll see where it goes.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.the-haystack.com/2009/07/16/designing-this-site-prologue/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Paul Boag exposes web designer secrets</title>
		<link>http://www.the-haystack.com/2009/02/05/paul-boag-secrets/</link>
		<comments>http://www.the-haystack.com/2009/02/05/paul-boag-secrets/#comments</comments>
		<pubDate>Thu, 05 Feb 2009 20:37:27 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[Babble]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Humor]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[sarcasm]]></category>
		<category><![CDATA[web design]]></category>

		<guid isPermaLink="false">http://www.the-haystack.com/?p=83</guid>
		<description><![CDATA[The unholy and disgraceful Bad Boy of the Web, Paul Boag, has tarnished the good names of all web designers worldwide by exposing our deepest, darkest secrets (we have ten of them, BTW) in masked-magician fashion. This blasphemy was brought &#8230; <a href="http://www.the-haystack.com/2009/02/05/paul-boag-secrets/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The unholy and disgraceful Bad Boy of the Web, <a href="http://headscape.co.uk/people/boag.html" title="Read the Bab Boy's profile">Paul Boag</a>, has tarnished the good names of all web designers worldwide by <a href="http://boagworld.com/design/10_things_a_web_designer_would/" title="10 things a web designer would never tell you">exposing our deepest, darkest secrets</a> (we have ten of them, BTW) in masked-magician fashion. This blasphemy was brought to our attention by an obviously saddened and shocked <a href="http://twitter.com/Malarkey/statuses/1180743343">Andy Clarke</a>, who also informed us that Paul was not the first one to <a href="http://fwob.blogspot.com/2005/07/how-to-handle-web-deisgner.html" title="How to handle a web designer">let the cat out of the bag</a>.</p>
<p>There&#8217;s no more hiding for us now, so go ahead clients: <a href="http://boagworld.com/design/10_things_a_web_designer_would/" title="10 things a web designer would never tell you">read all about how to get the upper hand</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.the-haystack.com/2009/02/05/paul-boag-secrets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Design Funnel: A Manifesto for Meaningful Design</title>
		<link>http://www.the-haystack.com/2008/07/14/design-funnel/</link>
		<comments>http://www.the-haystack.com/2008/07/14/design-funnel/#comments</comments>
		<pubDate>Mon, 14 Jul 2008 18:02:17 +0000</pubDate>
		<dc:creator>Stephen</dc:creator>
				<category><![CDATA[Creativity]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.the-haystack.com/?p=78</guid>
		<description><![CDATA[It seems to me that in the past 20 years, design creativity has become increasingly driven and limited by design tools, rather than the brains using them. This leads to a high level of design sameness and general lack of &#8230; <a href="http://www.the-haystack.com/2008/07/14/design-funnel/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It seems to me that in the past 20 years, design creativity has become increasingly driven and limited by design tools, rather than the brains using them. This leads to a high level of design sameness and general lack of creativity. Many (web) design curricula are now tool-based, and I notice many designers skipping or drastically shortening the thinking process behind a design, preferring to dive into Photoshop or (insert tool here).</p>
<p>If what Paul Rand once said is true, that design is a method of putting form and content together, then one of the fundamental tasks of a designer is to understand this content, and funnel the abstract wishes and values of the client into a usable design language (which can then be implemented using tools). <strong>Only then</strong> will the design have more meaning and creative depth.</p>
<p>I&#8217;ve advocated the large-to-small, abstract-to-specific process for years, and we utilize it at <a href="http://www.cinnamon.nl">Cinnamon</a> whenever possible. I&#8217;m happy to have had the opportunity to write a <a href="http://www.changethis.com/48.04.DesignFunnel">manifesto</a> for <a href="http://www.changethis.com">ChangeThis</a> describing this philosophy.</p>
<p>If you&#8217;re interested in a design process which encourages effective creative thinking (and therefore yields effective design), please <a href="http://www.changethis.com/48.04.DesignFunnel">check it out</a> and give it away. And feel free to post your thoughts.</p>
<p>While you&#8217;re at it, go ahead and check out Hugh MacLeod&#8217;s famous and <a href="http://www.changethis.com/6.HowToBeCreative">excellent manifesto</a> on being more creative.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.the-haystack.com/2008/07/14/design-funnel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

