<?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>Space for a Name</title>
	<atom:link href="http://spaceforaname.com/feed" rel="self" type="application/rss+xml" />
	<link>http://spaceforaname.com</link>
	<description>An Experiment in Design</description>
	<lastBuildDate>Wed, 22 Apr 2009 18:57:53 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>We&#8217;ll Be Right Back After This Brief Development</title>
		<link>http://spaceforaname.com/announcement/well-be-right-back-after-this-brief-development</link>
		<comments>http://spaceforaname.com/announcement/well-be-right-back-after-this-brief-development#comments</comments>
		<pubDate>Mon, 20 Apr 2009 16:57:45 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[Announcement]]></category>
		<category><![CDATA[GalleryView]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://spaceforaname.com/?p=99</guid>
		<description><![CDATA[Ok, ladies and gents.  I'm gonna take 5 and knock out some updates to my jQuery gallery content plugin, GalleryView.]]></description>
			<content:encoded><![CDATA[<p><em>Space for a Name</em> is a at a place now where I feel comfortable taking a few days off to work on my other project, <a href="/galleryview"><em>GalleryView</em></a>.  <em>GalleryView</em> was my first foray into jQuery plugin development, but it&#8217;s become a bit stagnant since I started work on this website.  However, it&#8217;s been a few weeks now and I have a number of new features and bug fixes to implement (thanks for the emails!).  Some things I plan on knocking out:<span id="more-99"></span></p>
<ul>
<li>More attractive filmstrip and panel navigation</li>
<li>Better handling of overflow in both panels and filmstrip frames</li>
<li>Pre-loading of panel and filmstrip images</li>
<li>Transferring CSS to external stylesheet for greater customization</li>
<li>Option to disable circular filmstrip navigation</li>
<li>Multiple galleries one one page</li>
<li>Allow for run-time addition/subtraction of panels via AJAX</li>
</ul>
<p>If you&#8217;ve got an idea that I haven&#8217;t mentioned, feel free to leave a comment with your thoughts and I&#8217;ll see what I can do.</p>
<ul></ul>
]]></content:encoded>
			<wfw:commentRss>http://spaceforaname.com/announcement/well-be-right-back-after-this-brief-development/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>WordPress: Customize That Homepage</title>
		<link>http://spaceforaname.com/design-blog/wordpress-customize-that-homepage</link>
		<comments>http://spaceforaname.com/design-blog/wordpress-customize-that-homepage#comments</comments>
		<pubDate>Sun, 19 Apr 2009 21:24:43 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[Design Blog]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://spaceforaname.com/?p=72</guid>
		<description><![CDATA[Want to grab your reader's attention and draw them to your newest posting?  By making a few small changes to 'The Loop', you can grab any post you like and customize it to your heart's content.]]></description>
			<content:encoded><![CDATA[<p>Until now, Space for a Name&#8217;s homepage was just a collection of all my posts.  While you could read all my posts without leaving that one page, it wasn&#8217;t very attractive, and didn&#8217;t have any focus, except that granted by the ordering of elements on the page.  What I really wanted was to put focus on the newest article while still allowing readers to see other recent posts and get an idea of what each post covers.  Luckily, this only required a few small changes to my <code>index.php</code>.<span id="more-72"></span></p>
<h3>Out With the Old, In With the New</h3>
<p>If you are building your own WordPress theme, or are using a simple pre-built theme, your <code>index.php</code> will utilize <a href="http://codex.wordpress.org/The_Loop" target="_blank">The Loop</a>, WordPress&#8217;s method of iterating through your posts.  By default, it should look something like this:</p>
<pre>&lt;?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?&gt;
    ...output your post data...
&lt;?php endwhile; else: ?&gt;
    &lt;p&gt;&lt;?php _e(&#39;Sorry, no posts matched your criteria.&#39;); ?&gt;&lt;/p&gt;
&lt;?php endif; ?&gt;</pre>
<p>A few things are occuring here.  First, <code>have_posts()</code> is executed to see if there are any posts to display.  If there are, a while loop is entered which continues running as long as <code>have_posts()</code> returns true.  For each post, <code>the_post()</code> is executed, which populates various WordPress functions such as <code>the_content()</code>, <code>the_tags()</code> and <code>the_permalink()</code>.  If there are no posts to display, a message is written indicating the fact.  If we want to differentiate how we handle the latest post and posts after that, we need to create two loops.  Luckily, the WordPress function <a href="http://codex.wordpress.org/Template_Tags/query_posts" target="_blank"><code>query_posts()</code></a> makes this feat easy.</p>
<p>The <code>query_posts()</code> function allows us to refine what posts are pulled into the <code>have_posts()</code> function.  The function accepts a list of parameters to filter the posts you want to see.  While there are many options available to you, we only need two: <code>showposts</code> and <code>offset</code>.  To get only the most recent post, we need to add an additional line of PHP just before the start of our loop:</p>
<pre>&lt;?php query_posts('showposts=1'); ?&gt;</pre>
<p>Easy, right?  Now we need to get our other recent posts, but <code>showposts</code> alone won&#8217;t do the job because each call to <code>query_posts()</code> starts from the first post.  We need to use another parameter, like so:</p>
<pre>&lt;?php query_posts('showposts=10&#038;offset=1'); ?&gt;</pre>
<p>With these two functions, your code should now resemble:</p>
<pre>&lt;?php query_posts(&#39;showposts=1&#39;); ?&gt;
&lt;?php if(have_posts()) : while (have_posts()) : the_post(); ?&gt;
    ...do something with your latest post...
&lt;?php endwhile; else <img src='http://spaceforaname.com/wp-includes/images/smilies/icon_confused.gif' alt=':?' class='wp-smiley' /> &gt;
    ...display error message
&lt;?php endif; ?&gt;
&lt;?php query_posts(&#39;showposts=10&amp;offset=1&#39;); ?&gt;
&lt;?php while (have_posts()) : the_post(); ?&gt;
    ...do something with your recent posts...
&lt;?php endwhile; ?&gt;</pre>
<p>You&#8217;ll notice I don&#8217;t use <code>if (have_posts())</code> in the second loop.  If there isn&#8217;t a first post, an error message will be displayed, so there&#8217;s no reason to display another one when there isn&#8217;t a second post either.  Likewise, if there is only one post, we don&#8217;t want to display a post and then display an error saying there aren&#8217;t any posts.</p>
<p>So now that I&#8217;ve got two separate loops set up, how best to display the post(s) in each loop? I decided that for the latest post, it was best to display the first paragraph or two using the <code>&lt;!--more--&gt;</code> HTML comment utilized by WordPress. Inserting this comment into your post indicates to  WordPress that only the content before it should be displayed on the homepage with a link to &#8216;read more&#8217;. All content after this comment is only available by viewing the specific post page.</p>
<p>For my other recent posts, I decided that it was enough to simply provide a brief overview of the post&#8217;s contents, and therefore chose to utilize the &#8216;excerpt&#8217; feature of WordPress posts.  To display a post&#8217;s excerpt instead of the content itself, we swap out <code>the_content()</code> for <code>the_excerpt()</code>. Easy peasy.</p>
<h3>Next Time, On <em>Space for a Name</em></h3>
<p>For returning readers (or anyone who&#8217;s visited <em>Space for a Name</em>&#8217;s <a href="/evolution">evolution gallery</a>, you&#8217;ll notice I&#8217;ve made a number of changes other than just editing my WordPress homepage.  I&#8217;ve added a navigation menu, created a logotype, and added a background.  I feel these changes constitute their own topic, so I&#8217;ll leave them for another day.</p>
]]></content:encoded>
			<wfw:commentRss>http://spaceforaname.com/design-blog/wordpress-customize-that-homepage/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Blueprint: Basics of CSS Typography</title>
		<link>http://spaceforaname.com/design-blog/blueprint-basics-of-css-typography</link>
		<comments>http://spaceforaname.com/design-blog/blueprint-basics-of-css-typography#comments</comments>
		<pubDate>Fri, 17 Apr 2009 01:52:19 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[Design Blog]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Typography]]></category>

		<guid isPermaLink="false">http://spaceforaname.com/?p=38</guid>
		<description><![CDATA[It turns out CSS typography isn't as cut &#38; dry as I thought it'd be.  In lieu of keeping default HTML font styling until I fully flesh out my typography stylesheet, I've gone ahead and implemented Blueprint's typography stylesheet, with a few alterations.]]></description>
			<content:encoded><![CDATA[<blockquote><p>Wouldn&#8217;t it be interesting if there were only one typeface in the world? Designers would really have to think about the idea behind their designs instead of covering it up with fancy typefaces. One, universal typeface would really strip away all the flashy emptiness in design. And, of course, that one typeface would have to be Helvetica. <em>~ Erik Kessels</em></p></blockquote>
<p>I wanted to make this next article about true CSS typography, but it is proving to be a tougher nut to crack than I originally expected. It&#8217;s one thing to pick out a few font faces, set your colors, font sizes and line heights. It&#8217;s quite another to manage the plethora of available analphabetic symbols, fine-tune kerning and perfect vertical rhythm between elements.</p>
<p>My goal is to eventually write a jQuery plugin that does many of those tasks at run-time, letting anyone enhance their website&#8217;s copy without having to read <em><a href="http://www.amazon.com/Elements-Typographic-Style-Robert-Bringhurst/dp/0881791326" target="_blank">The Elements of Typographic Style</a></em>. But that&#8217;s a topic for another day.  Instead, I&#8217;ve decided to start with the basics and implement the typography stylesheet provided by <a href="http://www.blueprintcss.org/">Blueprint CSS</a>.<span id="more-38"></span></p>
<p><a href="/design-blog/site-layout-columns-and-menus-and-grids-oh-my/">As mentioned previously</a>, I chose Blueprint as my CSS framework because it included a typography stylesheet that has what I feel is a good foundation for building attractive copy.  Even if you do not plan on using any CSS framework, there are some important tips one can take away from the stylesheet. A default font size is set as a percentage for the <code>&lt;body&gt;</code> tag and all other font sizes are set in <code>ems</code>.  This allows you to easily alter the relative font sizes of all elements by changing a single rule. No top margins are set for headers or paragraphs to avoid a few browser discrepancies in how margins overlap each other.  Blueprint also includes a number of &#8220;helper&#8221; classes, which can be used on any element to make common adjustments.</p>
<pre>.small      { font-size: .8em; margin-bottom: 1.875em; line-height: 1.875em; }
.large      { font-size: 1.2em; line-height: 2.5em; margin-bottom: 1.25em; }
.hide       { display: none; }
.quiet      { color: #666; }
.loud       { color: #000; }
.highlight  { background:#ff0; }
.added      { background:#060; color: #fff; }
.removed    { background:#900; color: #fff; }
.first      { margin-left:0; padding-left:0; }
.last       { margin-right:0; padding-right:0; }
.top        { margin-top:0; padding-top:0; }
.bottom     { margin-bottom:0; padding-bottom:0; }</pre>
<p>In addition to the basic typography stylesheet, Blueprint has also included a &#8220;fancy-type&#8221; stylesheet, which makes some headway toward implementing more advanced typographic styles.  As you can see on this site now, successive paragraphs are set without any top margin and are indented to give the text more of a print feel.  An alt class is also provided, which sets the specified element in a fancier font face and alters the style and color.  A class is provided to shift opening quotes left so that a line of text that begins with a quotation mark will still sit flush with successive lines.  Finally, a class is provided to make abbreviations or other words set in caps more attractive, altering letter spacing, padding and font size.</p>
<p>So, both stylesheets have been implemented, and with a little extra CSS magic, you can see what a change some simple text alterations can make to a website.  If this is your first time visiting my website, you can see what the site used to look like by checking out the <a href="/evolution">evolution gallery</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://spaceforaname.com/design-blog/blueprint-basics-of-css-typography/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Intermission: Nike Ripping from Threadless?</title>
		<link>http://spaceforaname.com/non-sequitur/intermission-nike-ripping-from-threadless</link>
		<comments>http://spaceforaname.com/non-sequitur/intermission-nike-ripping-from-threadless#comments</comments>
		<pubDate>Thu, 16 Apr 2009 13:31:27 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[Non-Sequitur]]></category>
		<category><![CDATA[Graphic Design]]></category>

		<guid isPermaLink="false">http://spaceforaname.com/?p=34</guid>
		<description><![CDATA[Design rips are unfortunately commonplace in the web design industry, but I can't say I ever expected to see a company of Nike's size ripping apparel designs.  And from Threadless, no less.]]></description>
			<content:encoded><![CDATA[<p>Over at <a href="http://www.threadless.com">Threadless</a>, there&#8217;s a shirt called <a href="http://www.threadless.com/product/844/Spoilt"><em>Spoilt</em></a>. The design consists of numerous movie/book spoilers crammed onto the front of the shirt; red and white graphics on black fabric.<span id="more-34"></span></p>
<p><img src="http://spaceforaname.com/img/content/spoilt.jpg" alt="Spoilt" /></p>
<p>Overall, a pretty effective design that makes good use of varying font faces and iconic graphics. Just the other day, I was wandering back to my car at the mall, when I passed a display in Macy&#8217;s for Jumpman, Michael Jordan&#8217;s Nike offshoot brand. A particular shirt caught my attention.</p>
<p><img src="http://spaceforaname.com/img/content/jumpman.jpg" alt="Jumpman Shirt" /></p>
<p>Many (all?) of Jordan&#8217;s career accomplishments crammed into a rectangle on the front of a shirt. Red/white graphics on a black shirt. To me at least, the connection was instantaneous. I saw this shirt, I immediately thought of <em>Spoilt</em>. So, honest coincidence, or did some designer over at Jumpman just get lazy?  What are your thoughts?</p>
]]></content:encoded>
			<wfw:commentRss>http://spaceforaname.com/non-sequitur/intermission-nike-ripping-from-threadless/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WordPress: Well That Wasn&#8217;t So Hard</title>
		<link>http://spaceforaname.com/design-blog/wordpress-well-that-wasnt-so-hard</link>
		<comments>http://spaceforaname.com/design-blog/wordpress-well-that-wasnt-so-hard#comments</comments>
		<pubDate>Tue, 14 Apr 2009 02:51:58 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[Design Blog]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://spaceforaname.com/?p=16</guid>
		<description><![CDATA[With the robustness of today's blogging solutions, it doesn't make much sense to forego one if you plan on publishing content to your website on any kind of schedule.  Read how I managed to install WordPress but still maintain that classy "complete and utter lack of design" look &#038; feel.]]></description>
			<content:encoded><![CDATA[<p>Ahh, that&#8217;s <em>much</em> easier. From the minute I started writing my first post for <em>Space For a Name</em>, I knew I was going to be installing a blogging software at some point.  I also knew that the sooner I did so, the better.  I didn&#8217;t want to develop an entire website and then have to shoehorn some blogging framework into an existing design; better to work from the ground up.  However, I knew absolutely <em>nothing</em> about any of the options available to me, so I was a bit wary.</p>
<p>It didn&#8217;t take long to settle on WordPress.  I&#8217;ll admit, however, that not much research went into that decision.  At a glance, Wordpress seemed to offer the level of customization and control over markup that I desired, and my web host provided it as a one-step installation.  So, ease won out over rigorous investigation.<span id="more-16"></span></p>
<p>I could have installed WordPress right out of the gate, but I wanted to start from scratch, and wasn&#8217;t immediately sure how I&#8217;d be able to do that.  I didn&#8217;t want to use the default theme, and I definitely didn&#8217;t want to use a pre-made theme&#8230;that would kind of defeat the purpose of this entire website.  I also didn&#8217;t want to waste a week studying an existing theme just to deconstruct it so I could start with a blank slate.</p>
<p>That&#8217;s where <a href="http://plainbeta.com/2008/05/20/whiteboard-a-free-wordpress-theme-framework/">Whiteboard</a> comes in.  Whiteboard is a WordPress theme with no CSS and no design.  Just data and basic HTML markup.  Just what I needed&#8230;almost.  The markup is simple, but not quite as semantic as I would have liked. The blog tagline was a <code>&lt;p&gt;</code> instead of a heading of some sort.  The same holds for post bylines.  It is also lacking some blocking markup to allow for effective styling.  However, it was quite easy to get it up and running with my existing CSS.  I simply moved a copy of the Blueprint directory (see <a href="/design-blog/site-layout-columns-and-menus-and-grids-oh-my/">my post on site layouts</a>) into the wp-content/themes/whiteboard/ directory and added the following lines to the top of style.css:</p>
<pre>@import url('blueprint/grid.css');
@import url('blueprint/forms.css');</pre>
<p>Over the next few days I&#8217;ll be working on marking up the various templates as needed (initially simply defining my CSS grid), but I didn&#8217;t want to wait that long to replace my single-page website with a fully-fleged (albeit bare) WordPress installation.</p>
<h4>BONUS</h4>
<p>The <em>other</em> reason I wanted to get WordPress installed early was to give you, the reader, a voice.  You&#8217;ve been silent this past week (all 3 of you), and this site won&#8217;t survive without your input.  So please, comment away!</p>
]]></content:encoded>
			<wfw:commentRss>http://spaceforaname.com/design-blog/wordpress-well-that-wasnt-so-hard/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Email Obfuscation, Learned the Hard Way</title>
		<link>http://spaceforaname.com/design-blog/email-obfuscation-learned-the-hard-way</link>
		<comments>http://spaceforaname.com/design-blog/email-obfuscation-learned-the-hard-way#comments</comments>
		<pubDate>Mon, 13 Apr 2009 14:46:50 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[Design Blog]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://spaceforaname.com/?p=12</guid>
		<description><![CDATA[I just made one of the most basic mistakes in web development...posting my email address in plain text.  Read about how I solved the problem of email harvesters and save yourself before it's too late.]]></description>
			<content:encoded><![CDATA[<blockquote><p>You just don’t know what you got ’til <del>it’s gone</del> some Nigerian ex oil minister offers it to you for assisting him in his escape from an oppressive regime.</p></blockquote>
<p>Wow, sometimes I can be a real moron. What was I thinking, putting my email on a website? How could I be so naïve as to want to provide a way for my readers to communicate with me?</p>
<p>Needless to say, the spam has begun arriving at my virtual doorstep. I quickly took down the links, but for all I know, it’s already too late. Regardless, I did some quick reading on how to limit one’s exposure to email harvesters. While there are plenty of links out there, I think Nadeau Software Consulting did it best with their article on <em><a href="http://nadeausoftware.com/articles/2007/05/effective_methods_protect_email_addresses_spammers" target="_blank">Effective Methods to Protect Email Addresses From Spammers</a></em>. They even include a handy table that shows each method’s effectiveness (as of 2007, anyway), usability, browser support and accessibility.<span id="more-12"></span></p>
<p>I decided to go with the Javascript method, as simply replacing letters with character codes is something most email bots can get around, it seems. My script is dead simple:</p>
<pre>function writeEmail() {
	var n = "jack";
	var d = "spaceforaname";
	var e = "com";
	document.getElementById('email').innerHTML = '&lt;a href="mai'+''+'lto:'+
	n+'@'+d+'.'+e+'"&gt;Send me an email&lt;/a&gt;';
}</pre>
<p>I broke up the email address into three separate variables and even split &#8216;mailto&#8217; into two parts separated by an empty string, just to play it safe. I also took an idea from <a href="http://www.tauros.eu/en/article-hide-email-address-from-spammers" target="_blank">this article</a> by Tauros Marketing and made sure to accomdate folks without javascript. To do so, the default html of my &#8216;email&#8217; element is my email address written out in plain text, with the &#8216;@&#8217; and &#8216;.&#8217; replaced by images. The <code>alt</code> and <code>title</code> attributes have also been set to accomdate those without the ability to display images. The HTML looks like:</p>
<pre>&lt;span id="email"&gt;
  jack
  &lt;img src="img/shift-2.gif" alt="-at-" title="-at-" /&gt;
  spaceforaname
  &lt;img src="img/dot.gif" alt="-dot-" title="-dot-" /&gt;
  com
  &lt;script type="text/javascript"&gt;writeEmail()&lt;/script&gt;
&lt;/span&gt;</pre>
<p>So, as long as email harvesters haven’t been upgraded to execute javascript code or decipher image alt tags, I should be safe. Well, <em>safer</em>. I kinda feel like it’s only a matter of time before even these methods become useless. All we can hope for is that the people (if they really are human, that is) who write email harvesters are lazy and won&#8217;t bother upgrading their code as long as the easily attainable email addresses keep flowing in.</p>
]]></content:encoded>
			<wfw:commentRss>http://spaceforaname.com/design-blog/email-obfuscation-learned-the-hard-way/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Site Layout: Columns and Menus and Grids, Oh My!</title>
		<link>http://spaceforaname.com/design-blog/site-layout-columns-and-menus-and-grids-oh-my</link>
		<comments>http://spaceforaname.com/design-blog/site-layout-columns-and-menus-and-grids-oh-my#comments</comments>
		<pubDate>Sat, 11 Apr 2009 21:25:04 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[Design Blog]]></category>
		<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://spaceforaname.com/?p=9</guid>
		<description><![CDATA[Three columns or two? Left sidebar or right? Vertical navigation or horizontal? Probably one of the more important decisions you’ll make while designing a website is just where all your content is going to live.  Read about some CSS framework solutions, which one I settled on and why.]]></description>
			<content:encoded><![CDATA[<p>Three columns or two? Left sidebar or right? Vertical navigation or horizontal? Probably one of the more important decisions you’ll make while designing a website is just where all your content is going to live. While there are plenty of websites that make effective use of unique and mold-breaking layouts (<a href="http://vandelaydesign.com" target="_blank">VandelayDesign</a> has an <a href="http://vandelaydesign.com/blog/design/how-to-use-unique-layout/" target="_blank">interesting article</a> on unique layouts along with <a href="http://vandelaydesign.com/blog/design/unique-website-layouts/" target="_blank">20 great examples</a>), I feel that if your goal is to communicate effectively with your reader, it’s best to stick with what works. Disregarding your user’s expectations more often than not results in fewer users. Sometimes, angry e-mails.<span id="more-9"></span></p>
<p>Assuredly, each website brings with it unique considerations, but I tend to fall back to a handful of fairly standard conventions. Primary navigation menus consisting of 3-5 items live quite comfortably in a horizontal menu adjacent to the website’s header. Longer lists of 6-9 main buttons are also a good fit for horizontal menus, but require a bit more room and are thus better placed above or below the website’s header. If your primary navigation conists of multiple menus, 10 or more buttons, or is likely to grow with time, then a vertical menu in a left sidebar is your best bet, as this is the most flexible solution.</p>
<p>Sidebar placement is an issue that may raise some questions. You want your main content to take precedence, but you don’t want your sidebar content to be ignored completely. Luckily for us, others have already done the hard work to determine how users view websites using heatmap studies. <a href="http://www.useit.com/alertbox/" target="_blank">Jakob Nielsen</a>, arguably the biggest name in web usability, has an <a href="http://www.useit.com/alertbox/reading_pattern.html" target="_blank">informative and easy-to-read article</a> on reading habits, and <a href="http://www.google.com">Google</a> has also done <a href="http://googleblog.blogspot.com/2009/02/eye-tracking-studies-more-than-meets.html" target="_blank">their own reasearch</a> involving eye-tracking.</p>
<p>What should we take away from this? As Nielsen’s article shows, readers focus across the first two paragraphs of your content, and down the left hand side of a website. If you have a sidebar with lots of navigation, it better be in a left sidebar if you want your users to be able to find their way through your website. If your sidebar consists mostly of secondary content that is of less importance to your readers, do them a favor and keep it to the right. Advertisements raise an interesting conundrum. Your users don’t want to be bothered with it, suggesting a right sidebar placement, but you want as many views and click-throughs as possible, indicating a preference for a left sidebar. If your website has ads, I’ll leave it to you to decide what’s best for you and your readers. Since I don’t plan on having a lot of navigation in my sidebar, to the right it goes.</p>
<h4>Ok, Now What?</h4>
<p>So you’ve chosen a layout. Now how are you supposed to implement it, and ensure cross-browser compatibility, no less? Enter the grid. I’ll admit, until recently, I’d never used any kind of pre-packaged CSS layout framework. I recently stumbled upon <a href="http://960.gs/" target="_blank">960 Grid</a> and was instantly converted. One problem I’d always had when designing was getting columns of content to look good. I never had a problem setting up my main columns—normally utilizing the <a href="http://www.bluerobot.com/web/layouts/" target="_blank">layout resevoir</a> from <a href="http://bluerobot.com/" target="_blank">bluerobot.com</a>—but when setting up content within a column, my widths were always a bit haphazard and margins were set with abandon. It worked, but never felt quite as solid as it should be. The grid framework changes all that. By providing designers a simple way of defining columns with specified, aesthetically pleasing widths and margins. All the pain of complying with various browsers is alleviated as well, since the CSS is already written. Just apply the right classes to your markup and go. The benefit for me was that a grid system is just as good at setting up your main columns as it is formatting content within those columns.</p>
<p>I was all set to adopt the 960 Grid system, but quickly found that it wasn’t the only player in the game. Here’s a quick list of the more popular options:</p>
<ul>
<li><a href="http://960.gs/" target="_blank">960 Grid</a></li>
<li><a href="http://www.yaml.de/en/" target="_blank">YAML: Yet Another Multi-Column Layou</a>t</li>
<li><a href="http://www.blueprintcss.org/" target="_blank">Blueprint CSS</a></li>
<li><a href="http://developer.yahoo.com/yui/grids/" target="_blank">Yahoo! UI Grid CSS</a></li>
<li><a href="http://grid.mindplay.dk/" target="_blank">Grid Designer</a></li>
</ul>
<p>Each has their ups and downs. For instance, Grid Designer lets you build any size grid you want, customizing columns, margins and gutters. For a thorough write up on CSS grid systems, check out <a href="http://nettuts.com/html-css-techniques/which-css-grid-framework-should-you-use-for-web-design/" target="_blank">“Which CSS Grid Framework Should You Use For Web Design?”</a> by <a href="http://www.nettuts.com" target="_blank">nettuts.com</a>. In the end, I wound up changing my mind and going with Blueprint. Not only is it widely used, it’s more than just a grid framework. Blueprint includes frameworks for forms, and more importantly, typography. I say more important because my next topic of discussion will be CSS typography and Blueprint is going to make my life a lot easier in that regard.</p>
<p>Blueprint works on a 950px wide layout with twenty-four 30px columns, separated by 10px gutters. Creating a column is as easy as adding the following classes to your <code>&lt;div&gt;</code>:</p>
<ul>
<li><code>span-X</code> : Creates a block that spans X columns</li>
<li><code>prepend-X</code> : Pads the block with X columns to the left</li>
<li><code>append-X</code> : Pads the block with X columns to the right</li>
<li><code>border</code> : Places a light border to the right of the block</li>
<li><code>colborder</code> : Appends a single column to the right of the block and places a border in the middle of said column</li>
</ul>
<p>There are many more options as well, and Blueprint has a fairly thorough <a href="http://blueprintcss.org/tests/parts/grid.html" target="_blank">test page</a> displaying what the framework can offer. For reference, this site uses <code>class="span-16 colborder"</code> for the main content column and <code>class="span-7 last"</code> for the sidebar. The last class makes sure there isn’t an unneeded 10px gutter to the right of the column. <a onclick="toggleGrid()" href="javascript:;">Click here</a> to toggle the grid underlay (if overlay is a word, so is underlay) to see it for yourself.</p>
<p>The only complaint I could make about Blueprint is that it is not 100% compatible with IE by default. It corrects any bugs by using a conditional comment in the HTML header, adding an IE-specific stylesheet for users of Microsoft’s browser. A minor complaint, but a complaint nonetheless.</p>
<p>Ah, another day (ok, two days), another step under the belt. Come back next time to learn way more than you ever wanted to about CSS typography.</p>
]]></content:encoded>
			<wfw:commentRss>http://spaceforaname.com/design-blog/site-layout-columns-and-menus-and-grids-oh-my/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS Reset or: How I Learned to Stop Worrying and Love the Browser</title>
		<link>http://spaceforaname.com/design-blog/css-reset-or-how-i-learned-to-stop-worrying-and-love-the-browser</link>
		<comments>http://spaceforaname.com/design-blog/css-reset-or-how-i-learned-to-stop-worrying-and-love-the-browser#comments</comments>
		<pubDate>Thu, 09 Apr 2009 20:40:04 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[Design Blog]]></category>
		<category><![CDATA[CSS]]></category>

		<guid isPermaLink="false">http://spaceforaname.com/?p=7</guid>
		<description><![CDATA[It's time to stop letting the browser have its way with our markup.  Create a CSS Reset and put those browsers in their place.]]></description>
			<content:encoded><![CDATA[<blockquote><p>And the sins of the browser shall be visited upon the site.</p></blockquote>
<p>Take a look at <a href="/elements.html">this test page</a> of various HTML elements.  Take a brief look at its formatting.  The headers are bold and set in varying sizes.  Block quotes are indented. Emphasised text is set in italics (or oblique, depending on the font, but that’s a topic for another day). Paragraphs have margins. Even the <code>&lt;body&gt;</code> itself has a margin. But why? <em>I</em> certainly didn’t tell the browser to style these HTML elements like this.</p>
<p>“<q>But Jack, that’s what those elements are supposed to look like.</q>”</p>
<p>Precisely. They’re <em>supposed</em> to look like that. It’s convention. Tradition. The way of things. In the days before CSS, browser manufacturers took it upon themselves to implement a set of presentational standards for HTML elements, making life for the website creator easier.<span id="more-7"></span></p>
<p>“<q>We know you want your header to be big and bold, so we’ll save you the trouble by making it the default.</q>”<br />
“<q>Oh, thank you, Netscape Navigator!</q>”</p>
<p>That was fine and dandy until the day someone wrote out a CSS rule <code>h1{ font-weight: normal; }</code> and realized, “<q>Wait, why should I be telling the browser what <em>not</em> to do? The browser shouldn’t be doing anything!</q>” We simply don’t live in 1995 anymore. We’ve separated our markup from our presentation, and we want to keep it that way, but even modern browsers are hell bent on setting an arguably arbitrary set of default presentational rules. The worst of it is that the myriad browsers can’t even agree on the same defaults. Sure, headers will always default to bold, but how much space should be between a header and the following paragraph? Does a second-level unordered list use round or square bullets? Just how much do you indent a blockquote?</p>
<p>For an example of what the defaults for various browsers are, here are some screenshots I took of the aforementioned page.</p>
<ul>
<li><a href="/img/browser_defaults/win_ie_7.gif">Windows &#8211; IE7</a></li>
<li><a href="/img/browser_defaults/win_safari_4.gif">Windows &#8211; Safari 4 Beta</a></li>
<li><a href="/img/browser_defaults/win_firefox_3.gif">Windows &#8211; Firefox 3</a></li>
<li><a href="/img/browser_defaults/mac_safari_4.gif">OS X &#8211; Safari 4 Beta</a></li>
<li><a href="/img/browser_defaults/mac_firefox_3.gif">OS X &#8211; Firefox 3</a></li>
<li><a href="/img/browser_defaults/mac_opera_9.gif">OS X &#8211; Opera 9</a></li>
</ul>
<p>Take particular note of the whitespace. While browsers may be more or less in sync when it comes to default font sizes, they’re all over the map when it comes to margins and line-heights. Firefox 3 in Windows is pretty generous with whitespace while Opera on OS X tries to cram as much content above the fold as it can. Also note that Opera 9 breaks from the crowd and refuses to style unordered sub-lists any differently than their parents.</p>
<h4>Hit the Reset Button</h4>
<p>You have two options here. Live with the fact that your users’ browsers are going to poke at prod at your markup and hope that you’ve defined a sufficient number of styles to keep the browser defaults from showing through, or you can wipe the slate clean before you even start writing your CSS. That’s where the CSS Reset comes in.</p>
<p>I won’t go into too much depth, because it’s been discussed at length over the past few years. In fact, <a href="http://sixrevisions.com" target="_blank">Six Revisions</a> has a pretty thorough article on <a href="http://sixrevisions.com/css/css-tips/css-tip-1-resetting-your-styles-with-css-reset/" target="_blank">resetting CSS</a>. To make a long story short (too late), <a href="http://meyerweb.com" target="_blank">Eric Meyer</a>, master of all things CSS, has what can be considered a pretty definitive foundation for <a href="http://meyerweb.com/eric/tools/css/reset/index.html" target="_blank">CSS Resets</a>. I say foundation, because you shouldn’t just dump this into your site untouched. For instance, why create a <code>body{}</code> rule to set up font color and background images when one already exists right there in the reset stylesheet? Also, your specific project may necessitate default styles that differ from what Meyer has deemed appropriate.</p>
<p>In fact, I wouldn’t really think of it in terms of <em>resetting</em> your CSS, but rather creating a new default for your particular site. If you know all the tables in your site will have a particular border style, don’t write a new <code>table{}</code> rule, just overwrite the existing rule in your reset stylesheet.</p>
<p>That said, let’s revisit our <a href="/elements_meyer_reset.html">test page of HTML elements</a>, now with <a href="css/reset_meyer.css">Eric Meyer’s reset stylesheet</a> applied. Much better…almost. You’ll notice that headers still appear in boldface, as well as table header cells (which also remain defaulted to a central alignment). Also, emphasized and strong text maintain their default appearance. <a href="http://meyerweb.com/eric/thoughts/2008/01/15/resetting-again/" target="_blank">Meyer has argued</a> in favor of leaving these particular defaults as they are common enough and sensible enough to avoid resetting. However, for my needs, I would prefer defaulting headers to a normal font-weight and setting all elements to a default left alignment. To achieve this, I’ve added a few lines to Meyer’s universal rule to handle these attributes:</p>
<pre>font-weight: inherit;
text-decoration: inherit;
font-style: inherit;
text-align: left;</pre>
<p>These rules will default all elements to a normal font weight with no style or decoration, but allow me to override that as needed and ensure that all children of those elements inherit the overridden style. Of course, this also eliminates the styling on emphasized and strong text, so I need to explicitly define those styles now:</p>
<pre>em { font-style: italic; }
strong { font-weight: bold; }</pre>
<p>One last change I made was to ordered lists. While it’s good to leave unordered lists without any default styling (because they’re often used for much more than just lists of text), I decided that ordered lists will only be used for just that, ordered lists of text.</p>
<pre>ol { list-style: decimal; }
ol ol { list-style: lower-alpha; }
ol ol ol { list-style: lower-roman; }</pre>
<p>Let’s take one final look at our <a href="/elements_reset.html">test page</a>, this time with <a href="css/reset.css">my version of the reset stylesheet</a>. Now <em>that’s</em> a clean slate if I’ve ever seen one. I guess it’s high time I get cracking on making this site less of an eyesore. Readability, coming’ up!</p>
<p>P.S. &#8211; You won’t see any numbering on the ordered lists of the final test page because <code>list-style-position</code> defaults to <code>outside</code>, and since there are no margins in the page, the numbers wind up residing off the left edge of the browser window.</p>
]]></content:encoded>
			<wfw:commentRss>http://spaceforaname.com/design-blog/css-reset-or-how-i-learned-to-stop-worrying-and-love-the-browser/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Wait, Don&#8217;t Go!</title>
		<link>http://spaceforaname.com/design-blog/wait-dont-go</link>
		<comments>http://spaceforaname.com/design-blog/wait-dont-go#comments</comments>
		<pubDate>Wed, 08 Apr 2009 22:10:53 +0000</pubDate>
		<dc:creator>Jack</dc:creator>
				<category><![CDATA[Design Blog]]></category>

		<guid isPermaLink="false">http://spaceforaname.com/?p=3</guid>
		<description><![CDATA[Really, what you see is entirely intentional.  Read on to see what I have in store for spaceforaname.com and why you should never judge a website by its homepage.]]></description>
			<content:encoded><![CDATA[<blockquote><p>There is nothing wrong with your browser window. Do not attempt to adjust the stylesheet. We are controlling HTTP responses. If we wish to make it louder, we will bring up the font size. If we wish to make it softer, we will tune the color to #DDD. We will control the horizontal padding. We will control the vertical alignment. We can scroll the CSS sprite, make it flutter. We can change the drop shadow to a soft blur or sharpen it to crystal clarity. For the next few months, sit quietly and we will control all that you see and read. We repeat, there is nothing wrong with your browser window. You are about to participate in a great adventure. You are about to experience the awe and mystery which reaches from the inner DOM to&#8230;the outer scripts.</p></blockquote>
<p>I know what you’re thinking.</p>
<blockquote><p>Damn, the page didn’t finish loading, let me refresh. Hmm, still not working. I wonder if&#8230;Oh, oh god no.  There’s no stylesheet.  No javascript.  No images.  What is this, 1994? He’s using Times New Roman!</p></blockquote>
<p>That’s right ladies and gentleman. Shield your children’s eyes, for you’re looking at bare naked HTML.  As a web designer/developer with 10 years experience, what possible reason could I have for publishing a website in its raw, unprocessed state?<span id="more-3"></span></p>
<p>Well, website development is an involved multi-step process. I don’t think it’s too unfair to liken it to the production of a motion picture. Take your favorite DVD, for instance (<em>Apocalypse Now</em>, <em>The Matrix</em>, <em>White Chicks</em>, whatever&#8230;I’m not here to judge). Most people pick it up for the finished product, the movie itself. However, film buffs, students of the art form, and people wondering if Angelina Jolie was digitally ‘enhanced’ in <em>Tomb Raider</em> pick it up for something else, the special materials. Documentaries, interviews, art galleries. Not only do they appreciate the finished product, they want to see just how it came together. What goes into building the city of Minas Tirith? How do you direct an animatronic velociraptor? What was it like working with Estelle Getty on the set of <em>Stop! Or My Mom Will Shoot</em>? These documentaries provide an in depth analysis of just what it takes to create your favorite movie.</p>
<p>Likewise, most people are perfectly happy to visit a well-designed website and are wholly unconcerned about the process required to create it. But us? We see the whole, but we also see the sum of its parts. We’re all students of design. We’ve visited countless websites and wondered, “<q>Man, how’d they make that  menu? Is that a javascript framework? Why is that text so much easier to read than other sites?</q>” The answers to these questions normally only come after digging through source code, searching for appropriate Photoshop tutorials, or plain old trial and error.</p>
<p><strong>Not here.</strong></p>
<p>Welcome to the first—<em>I hope</em>—real-time web design documentary. Over the coming  months, I’ll be detailing every step of my design process for spaceforaname.com, and I hope you’ll take a bit of time out of your day to come along for the ride. What can you expect to find here?</p>
<ul>
<li>Research and discussion on every facet of website design and development. CSS, Javascript, programming languages, blogging software options, Photoshop. When I research a topic, I’ll post my findings. If I add a new graphic element to the site, I’ll link to tutorials for the effects and processes used to create it. When I choose a javascript framework, I’ll discuss why I chose it over competing alternatives.</li>
<li>Community interaction. As soon as I get some form of commenting up and running, I’ll be looking to you for help as much as you’ll hopefully look to this site for tutorials, inspiration and research. I’ll probably even wind up putting some design decisions to a vote when designer’s block hits.</li>
<li>An ever-evolving ’growing’ website. The benefit to doing this in real-time is that you get to watch the site grow as I develop it. I’ll also be keeping a daily screenshot gallery to archive the site’s evolution. There really is nothing quite like capturing your website’s first <code>float</code> on camera.</li>
</ul>
<p>Hey, you’re still reading. Fantastic. Hopefully, that means I’ve managed to interest you, if only enough to come back and see what tomorrow brings. And if you’ve made it this far, you might be interested in my side project, <a href="jquery/galleryview/index.html">GalleryView</a>. My first jQuery plugin (Spoiler alert as to my choice of javascript framework? Perhaps.)</p>
<p>So, until next time, feel free to find me on <a href="http://twitter.com/jackwanders">Twitter</a> or shoot me an email. Boy, I’ve got my work cut out for me.</p>
]]></content:encoded>
			<wfw:commentRss>http://spaceforaname.com/design-blog/wait-dont-go/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
