<?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>Not Just a Hat Rack &#187; Design</title>
	<atom:link href="http://notjustahatrack.com/posts/category/design/feed/" rel="self" type="application/rss+xml" />
	<link>http://notjustahatrack.com</link>
	<description>Development, design, etc.</description>
	<lastBuildDate>Mon, 18 Apr 2011 16:05:08 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.4</generator>
		<item>
		<title>Image Usage for Developers</title>
		<link>http://notjustahatrack.com/posts/image-usage-for-developers/</link>
		<comments>http://notjustahatrack.com/posts/image-usage-for-developers/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 18:54:25 +0000</pubDate>
		<dc:creator>andrew</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Must-Read/Reference]]></category>

		<guid isPermaLink="false">http://notjustahatrack.com/?p=114</guid>
		<description><![CDATA[Another must-read is the image optimization series from Stoyan Stefanov and Yahoo. Before reading those articles, I used PNG fixes indiscriminately, employed GIFs way too much, didn&#8217;t spend a whole lot of time thinking about the optimum image type when slicing a mockup, and certainly never thought of compressing images beyond Photoshop&#8217;s &#8220;save for web&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>Another must-read is the <a href="http://yuiblog.com/blog/2008/10/29/imageopt-1/">image optimization series</a> from Stoyan Stefanov and Yahoo.  Before reading those articles, I used PNG fixes indiscriminately, employed GIFs way too much, didn&#8217;t spend a whole lot of time thinking about the optimum image type when slicing a mockup, and certainly never thought of compressing images beyond Photoshop&#8217;s &#8220;save for web&#8221; feature.  The first article in the series, <a href="http://yuiblog.com/blog/2008/10/29/imageopt-1/">The Importance of Images</a>, along with the prevalence of <a href="http://developer.yahoo.com/yslow/">Yahoo&#8217;s YSlow</a>, and more recently <a href="http://code.google.com/speed/page-speed/">Google&#8217;s Page Speed</a>, made me realize just how much image optimization actually matters to page performance.  I figured I would give you my take on the tips in the series, and thoughts on just how to handle difficult, common, transparency cases.  </p>
<p><span id="more-114"></span></p>
<h3>The Right Image Format</h3>
<p>The image optimization series does an excellent job detailing <a href="http://yuiblog.com/blog/2008/11/04/imageopt-2/">which file format to use</a>, and I suggest reading it (especially for the lossy, non-lossy comments), but here&#8217;s their summary:</p>
<blockquote>
<ul>
<li>JPEG is the format for photos.</li>
<li>GIF is the format for animations.</li>
<li>PNG8 is the format for everything else — icons, buttons, backgrounds, graphs…you name it.</li>
</ul>
</blockquote>
<p>After implementing these strategies for a bunch of builds, here&#8217;s my take:</p>
<ul>
<li>JPEGs for photos or images with tons of colors</li>
<li>PNG24 when you <em>really need</em> consistent alpha transparency</li>
<li>PNG8 for everything else</li>
</ul>
<p>The only difference here is that PNG24 definitely still has a place (oh, and really how often do you use animated GIFs?).  The case they mention in which you have to use PNG24 (&#8220;When most of the image is semi-transparent&#8221;) is actually more common than they would leave you to believe.  So how do you handle those cases?</p>
<h3>Transparency and PNG Fixes</h3>
<p>To handle transparent PNGs, <strong>do not use a JavaScript PNG fix</strong>.  Instead, realize what those fixes do, and then actually apply the fix when and where you need it.  The problem with PNG fixes in general is that they typically offer a blanket solution that affects every PNG on the site.  You don&#8217;t want to be applying a alpha filter to a PNG8 that doesn&#8217;t have transparency, so there&#8217;s a lot of wasted effort.  Not to mention the fact that these filters can be <a href="http://yuiblog.com/blog/2008/12/08/imageopt-5/">extremely taxing on the browser</a>.  There&#8217;s a simple CSS solution that can be added to an IE6-only stylesheet (assume #some-element already has a background applied):</p>
<pre><code>
#some-element {
	background: none;
	filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='image.png', sizingMethod='crop');
}
</code></pre>
<p>That&#8217;s it!  There&#8217;s also a <a href="http://yuiblog.com/blog/2008/12/08/imageopt-5/">VML fix</a>, although the extra markup typically isn&#8217;t worth the better performance.  Either way, the take-away is to apply the fix on a case by case basis, not with a blanket JavaScript add-on.</p>
<h3>Compression</h3>
<p>There&#8217;s a number of add-ons and/or tools online that will reduce the size of your images quickly and efficiently.  The aforementioned <a href="http://developer.yahoo.com/yslow/">YSlow</a> and <a href="http://code.google.com/speed/page-speed/">Google Page Speed</a> are extremely easy to use if you have those add-ons.  A new entrant is <a href="http://www.gracepointafterfive.com/punypng/">punypng</a>, which touts its better performance over the Yahoo and Google offerings.  Regardless, all tools offer bulk uploads, so after a site build, there&#8217;s no reason not to run your pages through these tools and update images that can be compressed.</p>
<p><br/><br />
If nothing else, I hope developers everywhere can remember a couple of things:</p>
<ul>
<li>Think about the optimal file format when saving an image</li>
<li>Don&#8217;t use GIFs (unless they are animated&#8230; but c&#8217;mon)</li>
<li>Don&#8217;t use a blanket PNG fix</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://notjustahatrack.com/posts/image-usage-for-developers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Must-Read Typography for Developers Articles</title>
		<link>http://notjustahatrack.com/posts/must-read-typography-for-developers-articles/</link>
		<comments>http://notjustahatrack.com/posts/must-read-typography-for-developers-articles/#comments</comments>
		<pubDate>Fri, 14 Aug 2009 16:02:03 +0000</pubDate>
		<dc:creator>andrew</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Must-Read/Reference]]></category>

		<guid isPermaLink="false">http://notjustahatrack.com/?p=61</guid>
		<description><![CDATA[I&#8217;ll be the first to admit that for the longest time I thought Arial, Times New Roman, and Verdana were the only fonts you could safely use on the web. When I was first getting starting in development, these were the only fonts sites used, and as such I never had reason to believe otherwise. [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ll be the first to admit that for the longest time I thought Arial, Times New Roman, and Verdana were the only fonts you could safely use on the web.  When I was first getting starting in development, these were the only fonts sites used, and as such I never had reason to believe otherwise.  Well after four or five years of working with some pretty talented designers, the importance of typography started to rub off.  I&#8217;ve compiled a list of some of the most eye-opening typography-for-developers articles that I&#8217;ve read, mostly concerning the breadth of fonts that we can actually use in development now:</p>
<p><span id="more-61"></span></p>
<ul>
<li><a href="http://dev.opera.com/articles/view/fonts-for-web-design-a-primer/">Fonts for web design: a primer</a>: An excellent starting point for exploring additional, common fonts cross-OS.  I was particularly happy to see an explanation as to why some fonts are available on some systems, but not others.</li>
<li><a href="http://www.ampsoft.net/webdesign-l/WindowsMacFonts.html">Common fonts to all versions of Windows &#038; Mac equivalents</a>: Basically a summary of the above, in an easy-to-reference format.</li>
<li><a href="http://www.sitepoint.com/article/eight-definitive-font-stacks/">8 Definitive Web Font Stacks</a>: Leverages the flexibility of the font stack to implement nicer fonts for users that have those fonts on their machines.</li>
<li>Methods for uncommon font rendering: In addition to web-ready fonts, there are several methods/technologies that allow you to essentially embed uncommon fonts on your site.  <a href="http://hacks.mozilla.org/2009/06/beautiful-fonts-with-font-face/">Beautiful fonts with @font-face</a> is a good summary of the potential for straight CSS-level font embeds; although there are legal hurdles that you need to take into account.  Finally, <a href="http://cufon.shoqolate.com/generate/">cufón</a> and <a href="http://www.mikeindustries.com/blog/sifr/">sIFR</a> are two popular methods for embedding custom fonts, with the help of some JavaScript and/or Flash.</li>
</ul>
<p>My previous experience has shown that designers are happy for the most part with the set of available web-ready fonts, and cases where you need a method for rendering uncommon fonts are few and far between.  I imagine a unified, efficient solution for embedding fonts (read: @font-face) would change the playing field, but legal issues may hamper that reality for some time.  In the meantime, it&#8217;s good to know there&#8217;s at least some easy-to-implement alternatives to Arial, Times, and Verdana, and the potential for using almost any font in certain situations if you have the time for a solid implementation.</p>
]]></content:encoded>
			<wfw:commentRss>http://notjustahatrack.com/posts/must-read-typography-for-developers-articles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stunning Design via Twitter Visualizations</title>
		<link>http://notjustahatrack.com/posts/twitter-visualizations/</link>
		<comments>http://notjustahatrack.com/posts/twitter-visualizations/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 19:39:17 +0000</pubDate>
		<dc:creator>andrew</dc:creator>
				<category><![CDATA[Design]]></category>

		<guid isPermaLink="false">http://notjustahatrack.com/?p=33</guid>
		<description><![CDATA[You know how every once in a while you&#8217;ll see a design that&#8217;s so well thought out and executed that it&#8217;s almost depressing, because you realize you probably never would have thought of it? Seems like this happens every time I see the newest and greatest Twitter visualization. Just to be sure, I went back [...]]]></description>
			<content:encoded><![CDATA[<p>You know how every once in a while you&#8217;ll see a design that&#8217;s so well thought out and executed that it&#8217;s almost depressing, because you realize you probably never would have thought of it?  Seems like this happens every time I see the newest and greatest Twitter visualization.  Just to be sure, I went back and compiled a list of my favorites, all of which are simply stunning:</p>
<p><span id="more-33"></span></p>
<ul>
<li><a href="http://www.wefeelfine.org/">We Feel Fine</a>: One of the first ones I saw, and the one I played with the most.  Amazing level of depth.</li>
<li><a href="http://twistori.com/">Twistori</a>: Simple yet beautiful.</li>
<li><a href="http://twittearth.com/">TwitEarth</a>: Makes me want to learn Flash.</li>
<li><a href="http://toriseye.quodis.com/">Tori&#8217;s Eye</a>: Recently reminded me that I don&#8217;t have to learn Flash.</li>
<li><a href="http://fixoutlook.org/">Fix Outlook Campaign</a>: Such an impact that it garnered a <a href="http://blogs.msdn.com/outlook/archive/2009/06/24/the-power-of-word-in-outlook.aspx">response from Microsoft</a> shortly after launch.</li>
<li><a href="http://9elements.com/io/projects/html5/canvas/">9elements HTML5 Experiment</a>: An eye-opener and another argument for faster adoption of HTML5 components.</li>
</ul>
<p>What makes Twitter a target for such unique, creative tools?  I imagine we can thank it&#8217;s nebulous nature and exceedingly simple API.  Regardless, I hope talented designers are paying attention to the impact of such campaigns, and we can look forward to similar inspiration in the future.</p>
]]></content:encoded>
			<wfw:commentRss>http://notjustahatrack.com/posts/twitter-visualizations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quotations and Multiple Background Images</title>
		<link>http://notjustahatrack.com/posts/quotations-and-multiple-background-images/</link>
		<comments>http://notjustahatrack.com/posts/quotations-and-multiple-background-images/#comments</comments>
		<pubDate>Wed, 06 Aug 2008 15:28:22 +0000</pubDate>
		<dc:creator>andrew</dc:creator>
				<category><![CDATA[(X)HTML]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>

		<guid isPermaLink="false">http://notjustahatrack.com/?p=24</guid>
		<description><![CDATA[The HTML specification suggests &#8220;a mechanism for inserting quotation marks before and after a quotation delimited by BLOCKQUOTE in a manner appropriate to the current language context and the degree of nesting of quotations.&#8221; From a usability standpoint, it makes sense to indicate as clearly as possible that everything within a &#60;blockquote&#62; element is a [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.w3.org/TR/html401/struct/text.html#h-9.2.2">HTML specification</a> suggests &#8220;a mechanism for inserting quotation marks before and after a quotation delimited by <code>BLOCKQUOTE </code> in a manner appropriate to the current language context and the degree of nesting of quotations.&#8221; From a usability standpoint, it makes sense to indicate as clearly as possible that everything within a <code>&lt;blockquote&gt;</code> element is a quotation.  To do so, I wanted to add quotation marks, clear indentation, and even a slightly different color to differentiate.  Here&#8217;s what the result looks like in Firefox:<span id="more-24"></span></p>
<p><img src="/lib/images/example-blockquote.gif" alt="Styled Blockquote Example" style="border: 1px solid #ccc;" /></p>
<p>I wanted to accomplish the look strictly with CSS and standards-based XHTML, which initially proved difficult because the lack of <a href="http://www.w3.org/TR/REC-CSS2/">CSS2</a> support for multiple background images.  If more browsers supported <a href="http://www.w3.org/TR/css3-roadmap/">CSS3</a> and it&#8217;s support for multiple background images (only Safari does now), then I could have just used a quote background image for the top left and the bottom right.  I also couldn&#8217;t use one wide background image that contained both quotations because the width and the height of the box would always be unknown.</p>
<p>Then I found an <a href="http://virtuelvis.com/gallery/css/rounded/">interesting tutorial</a> that uses the <a href="http://www.w3.org/TR/REC-CSS2/selector.html#before-and-after">CSS2 pseudo element</a> <code>:after</code> to add additional background images after content.  With a similar method, I was able to apply quotation marks before and after the <code>&lt;blockquote&gt;</code> content via CSS:</p>
<pre><code>
blockquote {
	background: url(quote-open.gif) no-repeat;
	color: #666;
	margin: 0 0 1em 0;
	padding: 0 50px 0 45px;
}
blockquote:after {
	background: url(quote-close.gif) no-repeat right;
	content: '';
	display: block;
	height: 25px;
	margin: -2.25em -40px 0 0;
}
</code></pre>
<p>Works like a charm in browsers that support CSS2, but in IE the <code>:after</code> content isn&#8217;t rendered.  For those browsers, I&#8217;m OK with the second quote not showing up, so I just added some IE-only style to remove the extra padding on the right:</p>
<pre><code>
blockquote {
	padding-right: 0;
}
</code></pre>
<p>That&#8217;s it!  No fancy JavaScript or extraneous HTML tags needed.  The result:</p>
<blockquote><p>
We hold these truths to be self-evident, that all men are created equal, that they are endowed by their Creator with certain unalienable Rights, that among these are Life, Liberty and the pursuit of Happiness. &#8211;That to secure these rights, Governments are instituted among Men, deriving their just powers from the consent of the governed, &#8211;That whenever any Form of Government becomes destructive of these ends, it is the Right of the People to alter or to abolish it, and to institute new Government, laying its foundation on such principles and organizing its powers in such form, as to them shall seem most likely to effect their Safety and Happiness. Prudence, indeed, will dictate that Governments long established should not be changed for light and transient causes; and accordingly all experience hath shewn, that mankind are more disposed to suffer, while evils are sufferable, than to right themselves by abolishing the forms to which they are accustomed.
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://notjustahatrack.com/posts/quotations-and-multiple-background-images/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Semi-Fluid Layouts</title>
		<link>http://notjustahatrack.com/posts/new-look/</link>
		<comments>http://notjustahatrack.com/posts/new-look/#comments</comments>
		<pubDate>Wed, 30 Jul 2008 20:45:36 +0000</pubDate>
		<dc:creator>andrew</dc:creator>
				<category><![CDATA[(X)HTML]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Design]]></category>

		<guid isPermaLink="false">http://notjustahatrack.com/?p=21</guid>
		<description><![CDATA[I finally got around to creating a WordPress theme, which was necessary because of some usability concerns I had with the previous theme. One of the major improvements I made was to implement what I call a &#8220;semi-fluid layout&#8221;, or one that scales to the size of your browser within pre-determined dimensions. In standards-compliant browsers, [...]]]></description>
			<content:encoded><![CDATA[<p>I finally got around to creating a WordPress theme, which was necessary because of some usability concerns I had with the previous theme.  One of the major improvements I made was to implement what I call a &#8220;semi-fluid layout&#8221;, or one that scales to the size of your browser within pre-determined dimensions.  In standards-compliant browsers, the page will now scale from 728 pixels to 900 pixels.  I needed to declare a minimum width because at extremely small widths the content can break in unforeseen ways, and a maximum width because anything larger than 900 pixels made the main content column so wide it become difficult to read (shorter columns = better usability).<span id="more-21"></span></p>
<p>The new layout for the content needs five divs:</p>
<pre><code>
&lt;div id=&quot;pageContainer&quot;&gt;
	&lt;div id=&quot;page&quot;&gt;
		&lt;div id=&quot;contentWrapper&quot;&gt;
			&lt;div id=&quot;mainContent&quot;&gt;
			&lt;/div&gt;
			&lt;div id=&quot;secondaryContent&quot;&gt;
			&lt;/div&gt;
		&lt;/div&gt;
	&lt;/div&gt;
&lt;/div&gt;
</code></pre>
<p>Because of an IE bug we can&#8217;t center a <code>&lt;div&gt;</code> of specified width without wrapping it another <code>&lt;div&gt;</code>, hence the <code>pageContainer</code>:</p>
<pre><code>
#pageContainer {
	text-align: center;
}
</code></pre>
<p>Since we set the text alignment to center, we need to set it back in the <code>page &lt;div&gt;</code>, along with setting the minimum and maximum widths:</p>
<pre><code>
#page {
	margin: 0 auto;
	text-align: left;
	min-width: 728px;
	max-width: 900px;
}
</code></pre>
<p>Of course everything below IE 7 doesn&#8217;t support minimum and maximum widths, so I decided to specify a set width for those browsers:</p>
<pre><code>
&lt;!--[if lt IE 7]&gt;
&lt;style type=&quot;text/css&quot;&gt;
#page {
	width: 760px;
}
&lt;/style&gt;
&lt;![endif]--&gt;
</code></pre>
<p>I also added a wrapper for the main and secondary content, so that I had a <code>&lt;div&gt;</code> that knows the height of the taller section:</p>
<pre><code>
#contentWrapper {
	float: left;
}
</code></pre>
<p>Then it&#8217;s just a matter of sizing and floating the content blocks:</p>
<pre><code>
#mainContent {
	float: left;
	width: 66%;
}

#secondaryContent {
	float: right;
	width: 21%;
}
</code></pre>
<p>If you go this route, just make sure everything else on your page is defined relatively (in percentages, ems, etc.) as well.  For instance, you&#8217;ll have to make the padding of the content divs a percentage (which you&#8217;ll also have to override in early IE).</p>
]]></content:encoded>
			<wfw:commentRss>http://notjustahatrack.com/posts/new-look/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

