<?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>Rachael L. Moore</title>
	<atom:link href="http://www.rachaelmoore.name/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rachaelmoore.name</link>
	<description>Web Designer &#38; Web Developer in Tallahassee, Florida</description>
	<lastBuildDate>Wed, 28 Jul 2010 17:37:45 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Marking up contact information semantically using HTML5 &amp; microformats</title>
		<link>http://www.rachaelmoore.name/web-design/microformats/marking-up-contact-information-semantic-using-html5-microformat/</link>
		<comments>http://www.rachaelmoore.name/web-design/microformats/marking-up-contact-information-semantic-using-html5-microformat/#comments</comments>
		<pubDate>Mon, 03 May 2010 18:17:31 +0000</pubDate>
		<dc:creator>Rachael L. Moore</dc:creator>
				<category><![CDATA[Microformats]]></category>
		<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Front End Web Development]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Search Engine Optimization (SEO)]]></category>
		<category><![CDATA[Semantic Markup]]></category>

		<guid isPermaLink="false">http://www.rachaelmoore.name/?p=527</guid>
		<description><![CDATA[HTML does a great job at generic semantics for documents.  But there are so many things on so many websites that end up being meaningless to search engines (&#038; other machines) because there aren't tags to say, for example, "this bit of text is the name of a person."  That's why XHTML was designed with extensibility in mind, that's why microformats became popular, that's why RDFa exists, and that is at least in part why the new HTML5 specification includes microdata properties.  Here's one way to use some of these tools to add semantic meaning to website contact information.]]></description>
			<content:encoded><![CDATA[<div class="foreword"><a rel="external" href="http://diveintohtml5.org/extensibility.html">Dive Into HTML5</a> published a great introduction to using HTML5&#8217;s <code>itemprop</code> attribute to add semantic meaning and &#8220;microdata&#8221; to HTML5 documents, inspiring me to update and post a little ongoing project of mine.</div>
<p>The good thing about the microdata (<a rel="external" href="http://www.w3.org/TR/html5/microdata.html"><code>itemscope</code>, <code>itemtype</code>, <code>itemprop</code>, etc.</a>) part of the HTML5 spec is that it <em>is part of the HTML5 spec</em>; it&#8217;s built into HTML5.  That really is a good thing.  On the other hand, it&#8217;s potentially <strong>yet another</strong> competitor in the semantic lineup and it&#8217;s a newcomer in a spec that&#8217;s not entirely finalized.</p>
<p>Its integration with HTML5 (and, who knows, its design) may make it a better way to add semantic meaning to our HTML documents than microformats, but I personally won&#8217;t commit to that one way or another until I&#8217;ve attempted to use it in a variety of real-world situations.  I won&#8217;t make any comparisons to RDFa (which <a rel="external" href="http://www.jenitennison.com/blog/node/103">it&#8217;s not <em>entirely</em> incompatible</a> with according to this source who knows far more than me about it) or comments about namespaces&#8230;for my own safety.  Yes, I have an opinion, and, no, it&#8217;s not entirely favorable toward HTML5.  But forget that.  This post isn&#8217;t about the theoretical rigor of this HTML5 feature &#8212; just about how to use it alongside other semantic options, like the hCard microformat, to add semantic meaning that is machine readable.</p>
<p>Note that my understanding of HTML5 microdata (henceforth referred to as &#8220;item&#8221; stuff) suggests that it is not meant <strong>only</strong> or <strong>necessarily</strong> to be a &#8220;microformat killer&#8221; or to replace RDFa, but one of its possible applications certainly is duplicating <em>some</em> of the &#8220;functionality&#8221;<a href="#note1">*</a> of stuff like hCard or FOAF.</p>
<p>Some good news is that Google is already starting to support &#8220;item&#8221; parsing (and I&#8217;m sure others will follow), but it&#8217;s important to remember that both the <a rel="external" href="http://www.microformats.org/">microformats.org</a> formats and RDFa have been around for several years and therefore have already established themselves in many implementations across the web.</p>
<p>I say this to point out that the surge of articles which will surely be written about about  HTML5&#8217;s &#8220;items&#8221; <strong>don&#8217;t</strong> mean that it&#8217;s time to throw out microformats/RDFa (for a variety of reason I&#8217;m sure others will point out).  One purely pragmatic reason is breadth and depth of support &#8212; it&#8217;s too early to chuck out microformats that already have support in favor of HTML5 &#8220;items.&#8221;  Unfortunately, that means writing redundant code.</p>
<p>Below is an example of a &#8220;profile&#8221; I&#8217;ve been working on as a basic structure for contact information/profiles.  It already used HTML5 tags and microformats and was awaiting some RDFa.  When a coworker sent me the Dive into HTML5 article I spent some time at lunch adding HTML5 microdata and tested it in <a rel="external" href="http://www.google.com/webmasters/tools/richsnippets">Google&#8217;s Rich Snippets Testing Tool</a>.</p>
<p>I won&#8217;t go into exhaustive detail about every line.  The sites I linked above give good introductions to the details.  I&#8217;ll just draw your attention to a few things I think are worth noting.</p>
<h3>Semantic person in HTML5</h3>
<p>I started with the new HTML5 <code>figure</code> tag.  It designates a section of a document that contains multimedia with a caption.  <code>figure</code> seems like a good fit to me because&#8230;</p>
<ol>
<li>Most profiles tend to show a picture of a person which is captioned with the name of the person.  The two are related in a way that figure alone communicates.</li>
<li>Often profiles are embedded in ways that make the profile an independent part of the page that is supplementary to the page content.</li>
</ol>
<p>So, <code>figure</code> jumped out at me for the reason it seems to fit semantically and for the reason it &#8220;feels&#8221; modular.</p>
<pre><code>&lt;figure class="vcard" id="vcard-lastfirst-idnum123"
 itemscope="itemscope" itemtype="http://www.data-vocabulary.org/Person/"
 title="Firstname Lastname"&gt;</code></pre>
<ul>
<li>To &#8220;activate&#8221; hCard I&#8217;ve added <code>class="vcard"</code>,</li>
<li>And to add HTML5&#8217;s &#8220;item&#8221; functionality/microdata I&#8217;ve added <code>itemscope</code> and <code>itemtype</code>.</li>
<li>I&#8217;ve used the definitions in Google&#8217;s <a rel="external" href="http://www.data-vocabulary.org">Data Vocabulary</a> which is <a rel="external" href="http://radar.oreilly.com/2009/05/google-announces-support-for-m.html">integrated into their Rich Snippets</a> and can be written as a microformat, an HTML5 item, or RDFa.</li>
<li>I&#8217;ve added an id to remind myself to give the card a unique ID so that it can be easily referenced using the <a rel="external" href="http://microformats.org/wiki/include-pattern/">microformat include</a>.</li>
<li>I&#8217;ve used a <code>title</code> attribute because I&#8217;ve noted it sometimes appears in accessibility plugins.  I don&#8217;t want to be redundant, but some software has seemed to ignore headers (not in reading it, but in labeling navigation) even with WA-ARIA (which I haven&#8217;t included in this sample anyway), so <code>title</code> is in.</li>
</ul>
<h4>Organization within Person</h4>
<p>When you&#8217;re giving a person&#8217;s organization and title, that organization is another entity itself that you may want to give additional information about.  All of the places I&#8217;ve tested so far support nested vcards, and Google&#8217;s Rich Snippet Tester appeared to do well with nested items.</p>
<pre><code>...
&lt;span class="org" itemprop="affiliation" title="Organization"
 itemscope="itemscope" itemtype="http://www.data-vocabulary.org/Organization/"&gt;
	&lt;div class="vcard"&gt;
		&lt;span class="organization-name fn" itemprop="name"&gt;Organization Name&lt;/span&gt;
			&lt;div class="adr" itemprop="address"
			 itemscope="itemscope" itemtype="http://data-vocabulary.org/Address/"&gt;
				&lt;!-- Address --&gt;&lt;span class="street-address" itemprop="street-address"&gt;6601 N Monroe&lt;/span&gt;
				&lt;!-- City --&gt;&lt;span class="locality" itemprop="locality"&gt;Tallahassee&lt;/span&gt;,
				&lt;!-- State --&gt;&lt;abbr class="region" itemprop="region" title="Florida"&gt;FL&lt;/abbr&gt;
				&lt;!-- Zip --&gt;&lt;abbr class="postal-code" itemprop="postal-code" title="32303-9329"&gt;32303&lt;/abbr&gt;
				&lt;!-- Country --&gt;&lt;abbr class="country-name" itemprop="country-name" title="United States"&gt;USA&lt;/abbr&gt;
				&lt;!-- Lat/Lon (Metadata) --&gt;
				&lt;span class="geo" itemprop="geo"
				  itemscope="itemscope" itemtype="http://data-vocabulary.org/Geo/"&gt;
					&lt;abbr class="latitude" itemprop="latitude" title="60.6060606060"&gt;60.6060606060&lt;/abbr&gt;
					&lt;abbr class="longitude" itemprop="longitude" title="-60.6060606060"&gt;-60.6060606060&lt;/abbr&gt;
				&lt;/span&gt;
			&lt;/div&gt; &lt;!--/ .adr --&gt;
	&lt;/div&gt; &lt;!--/ .vcard --&gt;
	&lt;span class="organization-unit"&gt;Unit&lt;/span&gt;
	&lt;span class="title" itemprop="title"&gt;Job Title&lt;/span&gt;
&lt;/span&gt; &lt;!--/ .org --&gt;
...</code></pre>
<p>That&#8217;s a geo location nested within an address nested within an organization nested within a person.  You start with the person and mention the organization as a name, then include the separate vcard for the organization.  The organization has its own address and that address has its own geo code.</p>
<h4>Telephone &amp; E-mail</h4>
<p>Google&#8217;s data vocabulary doesn&#8217;t specify telephone numbers for a person, only for organizations.  It also lacks any reference to e-mail addresses anywhere.  Since my test case is primarily for a person and the <a rel="external" href="http://microformats.org/wiki/hcard">hCard microformat</a> doesn&#8217;t have that problem I&#8217;ve used the pattern that works for hCard and incorrectly bolted Google&#8217;s data vocabulary on with HTML5&#8217;s microdata/item properties.  It&#8217;s wrong for Google&#8217;s data vocabulary.  I did it, but I&#8217;m thinking it&#8217;s probably best to leave it out and let the hCard microformat handle that part<a href="#note2">**</a>.</p>
<h3>Contact Info/Profile with HTML5, microdata, and microformats</h3>
<p><!-- Final Version --></p>
<pre><code>&lt;!--- Photo with Caption ---&gt;
&lt;figure class="vcard" id="vcard-lastfirst-idnum123"
 itemscope="itemscope" itemtype="http://www.data-vocabulary.org/Person/"
 title="Firstname Lastname"&gt;
	&lt;!-- Photo --&gt;
	&lt;img src="#" width="180" height="240" alt="" class="photo" itemprop="photo" /&gt;
	&lt;!-- alt redundant; image labeled by context, leave empty (webaim) --&gt;
	&lt;!-- Caption --&gt;
	&lt;figcaption&gt;
		&lt;!-- Profile --&gt;
		&lt;section class="profile"&gt;
			&lt;!-- Name --&gt;
			&lt;header class="n" title="Name"&gt;
				&lt;span class="fn" itemprop="name"&gt;
					&lt;span class="given-name"&gt;Firstname&lt;/span&gt;
					&lt;span class="additional-name"&gt;Middlename&lt;/span&gt;
					&lt;span class="family-name"&gt;Lastname&lt;/span&gt;
				&lt;/span&gt; &lt;!--/ .fn --&gt;
				&lt;span class="nickname" itemprop="nickname"&gt;Nickname&lt;/span&gt;
			&lt;/header&gt; &lt;!--/ .n --&gt;
			&lt;!-- Organization --&gt;
			&lt;span class="org" itemprop="affiliation" title="Organization"
			 itemscope="itemscope" itemtype="http://www.data-vocabulary.org/Organization/"&gt;
				&lt;div class="vcard"&gt;
					&lt;span class="organization-name fn" itemprop="name"&gt;Organization Name&lt;/span&gt;
						&lt;div class="adr" itemprop="address"
						 itemscope="itemscope" itemtype="http://data-vocabulary.org/Address/"&gt;
							&lt;!-- Address --&gt;&lt;span class="street-address" itemprop="street-address"&gt;6601 N Monroe&lt;/span&gt;
							&lt;!-- City --&gt;&lt;span class="locality" itemprop="locality"&gt;Tallahassee&lt;/span&gt;,
							&lt;!-- State --&gt;&lt;abbr class="region" itemprop="region" title="Florida"&gt;FL&lt;/abbr&gt;
							&lt;!-- Zip --&gt;&lt;abbr class="postal-code" itemprop="postal-code" title="32303-9329"&gt;32303&lt;/abbr&gt;
							&lt;!-- Country --&gt;&lt;abbr class="country-name" itemprop="country-name" title="United States"&gt;USA&lt;/abbr&gt;
							&lt;!-- Lat/Lon (Metadata) --&gt;
							&lt;span class="geo" itemprop="geo"
							  itemscope="itemscope" itemtype="http://data-vocabulary.org/Geo/"&gt;
								&lt;abbr class="latitude" itemprop="latitude" title="60.6060606060"&gt;60.6060606060&lt;/abbr&gt;
								&lt;abbr class="longitude" itemprop="longitude" title="-60.6060606060"&gt;-60.6060606060&lt;/abbr&gt;
							&lt;/span&gt;
						&lt;/div&gt; &lt;!--/ .adr --&gt;
				&lt;/div&gt; &lt;!--/ .vcard --&gt;
				&lt;span class="organization-unit"&gt;Unit&lt;/span&gt;
				&lt;span class="title" itemprop="title"&gt;Job Title&lt;/span&gt;
			&lt;/span&gt; &lt;!--/ .org --&gt;
			&lt;!-- Location --&gt;
			&lt;address class="adr" itemprop="address" title="Location"
			 itemscope="itemscope" itemtype="http://data-vocabulary.org/Address/"&gt;
				&lt;!-- Address --&gt;&lt;span class="street-address" itemprop="street-address"&gt;1532 Chadwick way&lt;/span&gt;
				&lt;!-- City --&gt;&lt;span class="locality" itemprop="locality"&gt;Tallahassee&lt;/span&gt;,
				&lt;!-- State --&gt;&lt;abbr class="region" itemprop="region" title="Florida"&gt;FL&lt;/abbr&gt;
				&lt;!-- Zip --&gt;&lt;abbr class="postal-code" itemprop="postal-code" title="32303-9329"&gt;32312&lt;/abbr&gt;
				&lt;!-- Country --&gt;&lt;abbr class="country-name" itemprop="country-name" title="United States"&gt;USA&lt;/abbr&gt;
				&lt;!-- Lat/Lon (Metadata) --&gt;
				&lt;span class="geo" itemprop="geo"
				  itemscope="itemscope" itemtype="http://data-vocabulary.org/Geo/"&gt;
					&lt;abbr class="latitude" itemprop="latitude" title="30.3030303030"&gt;30.3030303030&lt;/abbr&gt;
					&lt;abbr class="longitude" itemprop="longitude" title="-30.3030303030"&gt;-30.30303030&lt;/abbr&gt;
				&lt;/span&gt;
			&lt;/address&gt; &lt;!--/ .adr --&gt;
			&lt;!-- Contact --&gt;
			&lt;a href="mailto:email" class="email"&gt;test@example.org&lt;/a&gt;
			&lt;div class="tel"
			  itemscope="itemscope" itemtype="http://www.data-vocabulary.org/Organization/"&gt;
				&lt;abbr class="type" title="home pref"&gt;Home:&lt;/abbr&gt; &lt;abbr class="value" itemprop="tel" title="+1##########"&gt;(###) ###-####&lt;/abbr&gt;
				&lt;abbr class="type" title="work"&gt;Office:&lt;/abbr&gt; &lt;abbr class="value" itemprop="tel" title="+1##########"&gt;(###) ###-####&lt;/abbr&gt;
				&lt;abbr class="type" title="mobile"&gt;Cell:&lt;/abbr&gt; &lt;abbr class="value" itemprop="tel" title="+1##########"&gt;(###) ###-####&lt;/abbr&gt;
				&lt;abbr class="type" title="fax"&gt;Fax:&lt;/abbr&gt; &lt;abbr class="value" itemprop="tel" title="+1##########"&gt;(###) ###-####&lt;/abbr&gt;
			&lt;/div&gt;
		&lt;/section&gt; &lt;!--/ .profile --&gt;
		&lt;!-- Links --&gt;
		&lt;section class="note"&gt;
			&lt;ul&gt;
				&lt;li&gt;&lt;a href="http://www.example.org/" class="url" itemprop="url" rel="me self external"&gt;example.org&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt;&lt;a href="http://www.example.org/" class="url" itemprop="url" rel="me self external"&gt;example.org&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt;&lt;a href="http://www.example.org/" class="url" itemprop="url" rel="me self external"&gt;example.org&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt;&lt;a href="http://www.example.org/" class="url" itemprop="url" rel="me self external"&gt;example.org&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt;&lt;a href="http://www.example.org/" class="url" itemprop="url" rel="me self external"&gt;example.org&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt;&lt;a href="http://www.example.org/" class="url" itemprop="url" rel="me self external"&gt;example.org&lt;/a&gt;&lt;/li&gt;
				&lt;li&gt;&lt;a href="http://www.example.org/" class="url" itemprop="url" rel="me self external"&gt;example.org&lt;/a&gt;&lt;/li&gt;
			&lt;/ul&gt;
		&lt;/section&gt;
	&lt;/figcaption&gt; &lt;!--/ .figcaption --&gt;
&lt;/figure&gt; &lt;!--/ .figure.vcard --&gt;</code></pre>
<p>Download the current version of <a href="http://www.virtualrevolution.net/fbin/microformats/profiles.html">Microformats in Profiles &amp; Contact Information</a> here.  You can also see the use of HTML5 microdata + Google&#8217;s Review Data Vocabulary + hReview in there along with a few other things.  <strong>It&#8217;s still under development so I recommend you use the link to ensure you are looking at the most recent code</strong>. <img src='http://www.rachaelmoore.name/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<div class="afterword">
<div id="note1">* These formats don&#8217;t really have functionality, per se.  Not by themselves.  They have specifications and some may be able to &#8220;do&#8221; (communicate) things others can&#8217;t.  But none of them really do anything without some program to interpret and make use of them.</div>
<div id="note2">** You could invent your own vocabulary for phone numbers, obviously.  Or any part of this.  But I&#8217;m sticking to stuff that I know already can be interpreted usefully.  Keep in mind the above.  Plus, if there&#8217;s nothing that understands and interprets a vocabulary and format, it may be awesome and defined somewhere, but it&#8217;s not really &#8220;useful&#8221; in the real world.  That&#8217;s pure pragmatism.</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.rachaelmoore.name/web-design/microformats/marking-up-contact-information-semantic-using-html5-microformat/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Declare a safe font stack with CSS font-family?</title>
		<link>http://www.rachaelmoore.name/web-design/fonts-typography/declare-a-safe-font-stack-with-css-font-family/</link>
		<comments>http://www.rachaelmoore.name/web-design/fonts-typography/declare-a-safe-font-stack-with-css-font-family/#comments</comments>
		<pubDate>Fri, 26 Mar 2010 18:06:45 +0000</pubDate>
		<dc:creator>Rachael L. Moore</dc:creator>
				<category><![CDATA[Fonts & Typography]]></category>
		<category><![CDATA[@font-face]]></category>
		<category><![CDATA[Font Stacks]]></category>
		<category><![CDATA[font-family]]></category>
		<category><![CDATA[font-stretch]]></category>
		<category><![CDATA[font-weight]]></category>
		<category><![CDATA[Fonts]]></category>
		<category><![CDATA[Typography]]></category>

		<guid isPermaLink="false">http://www.rachaelmoore.name/?p=432</guid>
		<description><![CDATA[When did naming a font to use with CSS font-family become so...touchy?  In this article Rachael attempts to display the Helvetica Neue font on an in-development design, only to find it doesn't show up even though the font is installed.  Searching turned up some font-family tips, but research takes your web designer into the treacherous waters of font-stretch and leaves many questions unanswered.]]></description>
			<content:encoded><![CDATA[<h2>Or: I would love to know how to use Helvetica Neue on the web</h2>
<h3>Or: No, really, how do you actually declare fonts anymore?</h3>
<div class="foreword">
The real answers are still pending! <img src='http://www.rachaelmoore.name/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<ol>
<li>Update: <a href="#comment-893">Ben Walker</a> was kind enough to share some very relevant information about the topic.</li>
<li>Update Again: I have confirmation that my solutions in this post are <em>not</em> final.  <a href="#comment-923">Scott MacDonald</a> found that my font stacks would break font rendering on his system (weird)!  You may also want to check out <a href="#comment-924">my long theoretical response</a> if you&#8217;ve got a lot of spare time on your hands.</li>
</ol>
</div>
<p>Because when I say &#8220;safe&#8221; I don&#8217;t mean &#8220;using only web safe fonts&#8221;, I mean &#8220;how the heck do you get the non-web-safe-font to show up when you know you have it&#8221;?  I swear, back when I used &#8220;web safe&#8221; fonts almost-exclusively it wasn&#8217;t this complicated to figure out a font&#8217;s name.  Sometimes I&#8217;d want to look up a &#8220;better&#8221; alternative than the generic font family for a particular system to add to the font stack, but it just wasn&#8217;t this irritating.  At least, if it was, I never noticed it.  I mean, I don&#8217;t recall ever typing &#8220;ArialBlack&#8221;, &#8220;Arial-Black&#8221;, &#8220;Arial Black&#8221;, which says enough itself.  Or &#8212; maybe it never worked and I just didn&#8217;t notice.  *shrug*</p>
<p>It&#8217;s relevant to a design I&#8217;m working on right now.  The designer has used Helvetica and Helvetica Neue &#8212; these are not web safe fonts, though since they are installed on most Macs, I think a not-insignificant portion of people have them.  So I&#8217;d like to make them available to the people that do.  But so far, even though I do have some Helvetica Neue fonts installed, I can&#8217;t see them.  I&#8217;d like for both myself and the rest of us dealing with the development to be able to see Helvetica Neue when I list it &#8212; if only to reassure myself that I still know how to write CSS!</p>
<p>(Ultimately I&#8217;m not sure how I&#8217;ll deal with fonts on this design; I haven&#8217;t finalized everything. Some @font-face embedding, sIFR, cufon, and/or image replacement will likely be used in addition to generally asking for Helvetica Neue when it&#8217;s present.)</p>
<p>Unfortunately, searching the web for how to do this has only answered a few of my questions and hasn&#8217;t given me quite enough information to feel fully confident about these font stacks.  Basically, it raised more questions than it really answered.</p>
<p>The challenges are several:</p>
<ol>
<li>First, it seems that different systems &#8212; either having to do with the operating system or the browser &#8212; deal with spaces differently (or something)?  Sometimes you need to take them out, sometimes you need to use hyphens.</li>
<li>Second, the properties font-weight and font-stretch are inconsistently (and often incorrectly) supported.</li>
</ol>
<h2>#1 &#8211; Spaces?</h2>
<p>One system might recognize &#8220;HelveticaNeue&#8221; and another &#8220;Helvetica Neue.&#8221;   I found that much on the web, but since none of the posts explained <em>why </em>I&#8217;m not entirely sure which systems will need addressing in that manner and when.  Or whether it actually has to do with spaces only, or matching post script names, or the browser, or something else.  As a consequence I&#8217;m not sure if my assumptions on the names of some of these Helvetica Neue examples are right or not; particularly when it comes to, say, a light/condensed font.  For example, <a href="http://blog.gesteves.com/post/36097597/helvetica-neue-light">one post</a> demonstrated that Helvetica Neue Light should be rendered at least once as &#8220;HelveticaNeue-Light&#8221; &#8212; but what about Ultra Light?  &#8220;HelveticaNeue-UltraLight&#8221; or &#8220;HelveticaNeue-Ultra-Light&#8221;?  Anyone with insight how to consistently predict when to replace spaces in font names with nothing or with hyphens, please let me know&#8230;</p>
<h2>#2 &#8211; Weights and Stretch</h2>
<p>And, for various reasons, most of which seems to center around inconsistent support for more specific font-weights and the general lack of support for font-stretch, sometimes you need to declare the font-weight and font-stretch as the part of the font name in font-family, other times you can (perhaps) expect font-weight and font-stretch to work.  I believe as a general rule you can expect CSS3-supporting browsers to begin to handle font-stretch (<a href="http://www.clagnut.com/blog/2265/" rel="external">as it was taken out of CSS 2.1, and is [so far] back in CSS3</a>).  #1 of course has bearing on this, because if you want to get the right font, you&#8217;re going to have to get the name right: spaces, no spaces, hyphens, whatever&#8230;</p>
<p>And of course, you have to deal with the general problem of fallback fonts with similar x-height, weight, etc.  Which I tend to skim over in real life, praying for luck, but I really should pay more attention to.</p>
<h2>Grasping at Font Stacks</h2>
<h3>Helvetica Neue &#8211; Normal (No Stretch)</h3>
<h4>Helvetica Neue Black Font Stack</h4>
<pre><code>font-family: "HelveticaNeueBlack", "HelveticaNeue-Black", "Helvetica Neue Black", "HelveticaNeue", "Helvetica Neue", 'TeXGyreHerosBold', "Arial Black", sans-serif;
font-weight:800;
font-stretch:normal;</code></pre>
<h4>Helvetica Neue Heavy Font Stack</h4>
<pre><code>font-family: "HelveticaNeueHeavy", "HelveticaNeue-Heavy", "Helvetica Neue Heavy", "HelveticaNeue", "Helvetica Neue", 'TeXGyreHerosBold', "Arial Black", sans-serif;
font-weight:700;
font-stretch:normal;</code></pre>
<h4>Helvetica Neue Bold Font Stack</h4>
<pre><code>font-family: "HelveticaNeueBold", "HelveticaNeue-Bold", "Helvetica Neue Bold", "HelveticaNeue", "Helvetica Neue", 'TeXGyreHerosBold', "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif;
font-weight:600;
font-stretch:normal;</code></pre>
<h4>Helvetica Neue Medium Font Stack</h4>
<pre><code>font-family: "HelveticaNeueMedium", "HelveticaNeue-Medium", "Helvetica Neue Medium", "HelveticaNeue", "Helvetica Neue", 'TeXGyreHerosRegular', "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif;
font-weight:500;
font-stretch:normal;</code></pre>
<h4>Helvetica Neue Regular Font Stack</h4>
<pre><code>font-family: "HelveticaNeue", "Helvetica Neue", "HelveticaNeueRoman", "HelveticaNeue-Roman", "Helvetica Neue Roman", 'TeXGyreHerosRegular', "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif;
font-weight:400;
font-stretch:normal;</code></pre>
<h4>Helvetica Neue Light Font Stack</h4>
<pre><code>font-family: "HelveticaNeueLight", "HelveticaNeue-Light", "Helvetica Neue Light", "HelveticaNeue", "Helvetica Neue", 'TeXGyreHerosRegular', "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif;
font-weight:300;
font-stretch:normal;</code></pre>
<h4>Helvetica Neue Thin Font Stack</h4>
<pre><code>font-family: "HelveticaNeueThin", "HelveticaNeue-Thin", "Helvetica Neue Thin", "HelveticaNeue", "Helvetica Neue", 'TeXGyreHerosRegular', "Arial", sans-serif;
font-weight:200;
font-stretch:normal;</code></pre>
<h4>Helvetica Neue Ultra Light Font Stack</h4>
<pre><code>font-family: "HelveticaNeueUltraLight", "HelveticaNeue-Ultra-Light", "Helvetica Neue Ultra Light", "HelveticaNeue", "Helvetica Neue", 'TeXGyreHerosRegular', "Arial", sans-serif;
font-weight:100;
font-stretch:normal;</code></pre>
<h3>Helvetica Neue &#8211; Extended</h3>
<h4>Helvetica Neue Black Extended Font Stack</h4>
<pre><code>font-family: "HelveticaNeueBlackExtended", "HelveticaNeue-Black-Extended", "Helvetica Neue Black Extended", "HelveticaNeueBlack", "HelveticaNeue-Black", "Helvetica Neue Black", "HelveticaNeue", "Helvetica Neue", 'TeXGyreHerosBold', "Arial Black", sans-serif;
font-weight:800;
font-stretch:expanded;</code></pre>
<h4>Helvetica Neue Heavy Extended Font Stack</h4>
<pre><code>font-family: "HelveticaNeueHeavyExtended", "HelveticaNeue-Heavy-Extended", "Helvetica Neue Heavy Extended", "HelveticaNeueHeavy", "HelveticaNeue-Heavy", "Helvetica Neue Heavy", "HelveticaNeue", "Helvetica Neue", 'TeXGyreHerosBold', "Arial Black", sans-serif;
font-weight:700;
font-stretch:expanded;</code></pre>
<h4>Helvetica Neue Bold Extended Font Stack</h4>
<pre><code>font-family: "HelveticaNeueBoldExtended", "HelveticaNeue-Bold-Extended", "Helvetica Neue Bold Extended", "HelveticaNeueBold", "HelveticaNeue-Bold", "Helvetica Neue Bold", "HelveticaNeue", "Helvetica Neue", 'TeXGyreHerosBold', "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif;
font-weight:600;
font-stretch:expanded;</code></pre>
<h4>Helvetica Neue Medium Extended Font Stack</h4>
<pre><code>font-family: "HelveticaNeueMediumExtended", "HelveticaNeue-Medium-Extended", "Helvetica Neue Medium Extended", "HelveticaNeueMedium", "HelveticaNeue-Medium", "Helvetica Neue Medium", "HelveticaNeue", "Helvetica Neue", 'TeXGyreHerosRegular', "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif;
font-weight:500;
font-stretch:expanded;</code></pre>
<h4>Helvetica Neue Regular Extended Font Stack</h4>
<pre><code>font-family: "HelveticaNeueExtended", "HelveticaNeue-Extended", "Helvetica Neue Extended",  "HelveticaNeueRomanExtended", "HelveticaNeue-Roman-Extended", "Helvetica Neue Roman Extended", "HelveticaNeue", "Helvetica Neue", "HelveticaNeueRoman", "HelveticaNeue-Roman", "Helvetica Neue Roman", 'TeXGyreHerosRegular', "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif;
font-weight:400;
font-stretch:expanded;</code></pre>
<h4>Helvetica Neue Light Extended Font Stack</h4>
<pre><code>font-family: "HelveticaNeueLightExtended", "HelveticaNeue-Light-Extended", "Helvetica Neue Light Extended", "HelveticaNeueLight", "HelveticaNeue-Light", "Helvetica Neue Light", "HelveticaNeue", "Helvetica Neue", 'TeXGyreHerosRegular', "Helvetica", "Tahoma", "Geneva", "Arial", sans-serif;
font-weight:300;
font-stretch:expanded;</code></pre>
<h4>Helvetica Neue Thin Extended Font Stack</h4>
<pre><code>font-family: "HelveticaNeueThinExtended", "HelveticaNeue-Thin-Extended", "Helvetica Neue Thin Extended", "HelveticaNeueThin", "HelveticaNeue-Thin", "Helvetica Neue Thin", "HelveticaNeue", "Helvetica Neue", 'TeXGyreHerosRegular', "Arial", sans-serif;
font-weight:200;
font-stretch:expanded;</code></pre>
<h4>Helvetica Neue Ultra Light Extended Font Stack</h4>
<pre><code>font-family: "HelveticaNeueUltraLightExtended", "HelveticaNeue-Ultra-Light-Extended", "Helvetica Neue Ultra Light Extended", "HelveticaNeueUltraLight", "HelveticaNeue-Ultra-Light", "Helvetica Neue Ultra Light", "HelveticaNeue", "Helvetica Neue", 'TeXGyreHerosRegular', "Arial", sans-serif;
font-weight:100;
font-stretch:expanded;</code></pre>
<h3>Helvetica Neue &#8211; Condensed</h3>
<h4>Helvetica Neue Black Condensed Font Stack</h4>
<pre><code>font-family: "HelveticaNeueBlackCondensed", "HelveticaNeue-Black-Condensed", "Helvetica Neue Black Condensed", "HelveticaNeueBlack", "HelveticaNeue-Black", "Helvetica Neue Black", "HelveticaNeue", "Helvetica Neue", 'TeXGyreHerosCnBold', "Arial Narrow", "Arial", sans-serif;
font-weight:800;
font-stretch:condensed;</code></pre>
<h4>Helvetica Neue Heavy Condensed Font Stack</h4>
<pre><code>font-family: "HelveticaNeueHeavyCondensed", "HelveticaNeue-Heavy-Condensed", "Helvetica Neue Heavy Condensed", "HelveticaNeueHeavy", "HelveticaNeue-Heavy", "Helvetica Neue Heavy", "HelveticaNeue", "Helvetica Neue", 'TeXGyreHerosCnBold', "Arial Narrow", "Arial", sans-serif;
font-weight:700;
font-stretch:condensed;</code></pre>
<h4>Helvetica Neue Bold Condensed Font Stack</h4>
<pre><code>font-family: "HelveticaNeueBoldCondensed", "HelveticaNeue-Bold-Condensed", "Helvetica Neue Bold Condensed", "HelveticaNeueBold", "HelveticaNeue-Bold", "Helvetica Neue Bold", "HelveticaNeue", "Helvetica Neue", 'TeXGyreHerosCnBold', "Helvetica", "Tahoma", "Geneva", "Arial Narrow", "Arial", sans-serif;
font-weight:600;
font-stretch:condensed;</code></pre>
<h4>Helvetica Neue Medium Condensed Font Stack</h4>
<pre><code>font-family: "HelveticaNeueMediumCondensed", "HelveticaNeue-Medium-Condensed", "Helvetica Neue Medium Condensed", "HelveticaNeueMedium", "HelveticaNeue-Medium", "Helvetica Neue Medium", "HelveticaNeue", "Helvetica Neue", 'TeXGyreHerosCnRegular', "Helvetica", "Tahoma", "Geneva", "Arial Narrow", "Arial", sans-serif;
font-weight:500;
font-stretch:condensed;</code></pre>
<h4>Helvetica Neue Regular Condensed Font Stack</h4>
<pre><code>font-family: "HelveticaNeueCondensed", "HelveticaNeue-Condensed", "Helvetica Neue Condensed",  "HelveticaNeueRomanCondensed", "HelveticaNeue-Roman-Condensed", "Helvetica Neue Roman Condensed", "HelveticaNeue", "Helvetica Neue", "HelveticaNeueRoman", "HelveticaNeue-Roman", "Helvetica Neue Roman", 'TeXGyreHerosCnRegular', "Helvetica", "Tahoma", "Geneva", "Arial Narrow", "Arial", sans-serif;
font-weight:400;
font-stretch:condensed;</code></pre>
<h4>Helvetica Neue Light Condensed Font Stack</h4>
<pre><code>font-family: "HelveticaNeueLightCondensed", "HelveticaNeue-Light-Condensed", "Helvetica Neue Light Condensed", "HelveticaNeueLight", "HelveticaNeue-Light", "Helvetica Neue Light", "HelveticaNeue", "Helvetica Neue", 'TeXGyreHerosCnRegular', "Helvetica", "Tahoma", "Geneva", "Arial Narrow", "Arial", sans-serif;
font-weight:300;
font-stretch:condensed;</code></pre>
<h4>Helvetica Neue Thin Condensed Font Stack</h4>
<pre><code>font-family: "HelveticaNeueThinCondensed", "HelveticaNeue-Thin-Condensed", "Helvetica Neue Thin Condensed", "HelveticaNeueThin", "HelveticaNeue-Thin", "Helvetica Neue Thin", "HelveticaNeue", "Helvetica Neue", 'TeXGyreHerosCnRegular', "Arial Narrow", "Arial", sans-serif;
font-weight:200;
font-stretch:condensed;</code></pre>
<h4>Helvetica Neue Ultra Light Condensed Font Stack</h4>
<pre><code>font-family: "HelveticaNeueUltraLightCondensed", "HelveticaNeue-Ultra-Light-Condensed", "Helvetica Neue Ultra Light Condensed", "HelveticaNeueUltraLight", "HelveticaNeue-Ultra-Light", "Helvetica Neue Ultra Light", "HelveticaNeue", "Helvetica Neue", 'TeXGyreHerosCnRegular', "Arial Narrow", "Arial", sans-serif;
font-weight:100;
font-stretch:condensed;</code></pre>
<p>Currently I am using an @font-face embedded font which is free, embeddable, and fairly similar to Helvetica, TeX Gyre Heros (found on <a rel="nofollow external" href="http://www.fontsquirrel.com/fonts/TeX-Gyre-Heros">Font Squirrel</a>), as part of my font stack.  A convention I am forming for myself is to use single quotes around my @font-face embedded fonts and double quotes around fonts I am hoping/expecting will be installed by the user, for at-a-glance reference.  As you can see the stacks are almost prohibitively long and I&#8217;m still not sure they&#8217;re really going to work&#8230;plus, some of the fallbacks still need tweaking.  Time to test.</p>
<ul>
<li>Windows XP/Firefox 3.6.2 works pretty well.  I don&#8217;t have any expanded or condensed version of the font, however, so I don&#8217;t see it &#8212; meaning I also have no way to tell if my assumption on how to get those two showing up is working.</li>
<li>Windows XP/Opera 10.51 seems to be afflicted by a bug of some sort.  I found references to Opera @font-face bugs in the initial release of Opera 10 in 2009, but I think that&#8217;s supposedly fixed, so it seems to be a different problem.  A lot of the fonts show up as serif.  Except when I first open a page &#8212; it shows up as I&#8217;d expect.  Then if I refresh it becomes Times New Roman.  Open a new tab, different file, same fonts&#8230;Times New Roman.  Close Opera.  Open Opera with original file &#8212; right fonts.  Repeat.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.rachaelmoore.name/web-design/fonts-typography/declare-a-safe-font-stack-with-css-font-family/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Breadcrumbs (&amp; CSS3 general sibling selector)</title>
		<link>http://www.rachaelmoore.name/web-design/user-interface/breadcrumbs-css3-general-sibling-selector/</link>
		<comments>http://www.rachaelmoore.name/web-design/user-interface/breadcrumbs-css3-general-sibling-selector/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 00:45:01 +0000</pubDate>
		<dc:creator>Rachael L. Moore</dc:creator>
				<category><![CDATA[User Interface]]></category>
		<category><![CDATA[Breadcrumbs]]></category>
		<category><![CDATA[CSS (Cascading Style Sheets)]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[Front End Web Development]]></category>
		<category><![CDATA[Graceful Degradation]]></category>
		<category><![CDATA[Navigation]]></category>
		<category><![CDATA[Progressive Enhancement]]></category>
		<category><![CDATA[Search Engine Optimization (SEO)]]></category>
		<category><![CDATA[Semantic Markup]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[XHTML]]></category>

		<guid isPermaLink="false">http://www.rachaelmoore.name/?p=419</guid>
		<description><![CDATA[&#8220;Breadcrumbs&#8221; refer to text on a web page that outline the pathway that page on a website, often as a string of text like &#8220;My Site &#62; My Category &#62; My Page.&#8221;  Breadcrumbs are useful as a navigation aid on sites with hierarchal content because they serve as a map to tell the visitor [...]]]></description>
			<content:encoded><![CDATA[<p>&#8220;<a rel="nofollow" href="http://en.wikipedia.org/wiki/Breadcrumb_(navigation)">Breadcrumbs</a>&#8221; refer to text on a web page that outline the pathway that page on a website, often as a string of text like &#8220;My Site &gt; My Category &gt; My Page.&#8221;  <a href="http://ui-patterns.com/pattern/Breadcrumbs/">Breadcrumbs</a> are useful as a navigation aid on sites with hierarchal content because they serve as a map to tell the visitor where he is and, when set up as a menu, help him access related content.</p>
<p>After reading an interesting blog entry about the breadcrumbs on Apple&#8217;s website, I undertook to experiment with breadcrumb design &#8212; as I haven&#8217;t had real need for them in any recent projects.  I had a few objectives:</p>
<ol>
<li>Create a flexible coding pattern for breadcrumbs that could be dressed up or dressed down.</li>
<li>Experiment with a drop-down effect on the crumbs as seen on <a href="http://www.zillow.com/">Zillow</a>.</li>
<li>Indicate the parts of the trail that will &#8220;disappear&#8221; if a particular crumb is clicked.</li>
</ol>
<h3>HTML for Breadcrumbs</h3>
<p>I decided to use an ordered list for the breadcrumbs.  First of all, I use unordered lists for most navigation and I get tired of seeing them.  Second, a hierarchy implies an order (although an ordered list isn&#8217;t ultimately the correct choice, theoretically, for indicating hierarchal rather than linear order).  Finally, it allowed me to see a distinct difference between the top-level breadcrumb navigation and the drop-down navigation.</p>
<p>I can, in a variety of ways, design a simple text-only breadcrumb or I can, again in a variety of ways, dress the list up to make fancier breadcrumbs.  So the ordered list satisfies my requirement for flexibility and modularity.</p>
<pre><code>&lt;div id="breadcrumbs"&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="#"&gt;My Website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#"&gt;My Category&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#"&gt;My Page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;You Are Here&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</code></pre>
<h3>Drop-Down Breadcrumbs</h3>
<p>The drop-down effect on breadcrumbs is one I am seeing more often of late.  I am sort of tickled by it.  It could have similar uses as those ugly directory pages for search engine optimization, but it&#8217;s contextual and tucked away.  It might be helpful to a visitor and, if used <strong>in moderation</strong>, is unlikely to <em>hurt</em>.</p>
<pre><code>&lt;div id="breadcrumbs"&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="#"&gt;My Website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#"&gt;My Category&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#"&gt;My Page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;You Are (Dropping Down) Here
&lt;ul&gt;
&lt;li&gt;&lt;a href="#"&gt;Dropdown Breadcrumb Link&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#"&gt;Dropdown Breadcrumb Link&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="#"&gt;Dropdown Breadcrumb Link&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;</code></pre>
<h3>Breaking the trail</h3>
<p>Sometimes breadcrumbs can just be very boring and once I had a drop-down in place I began to feel that the added complexity called for some enhancement when a visitor was moving back up the path, too.  I&#8217;m sure I&#8217;ve seen a similar effect before that inspired the idea, but darned if I can remember where (probably lots of places).</p>
<p>The idea here is that if someone is 3 sections in and hovers over the 2nd breadcrumb, the crumbs after that will change to reflect the fact that, if the 2nd breadcrumb is clicked, the proceeding ones will cease to be there.  For this I began experimenting with the CSS3 general sibling selector.</p>
<pre><code>#breadcrumbs &gt; ol &gt; li:hover ~ li{}</code></pre>
<h3>The Meat of&#8230;the bread of the&#8230;here it is</h3>
<p>You can <a href="http://www.virtualrevolution.net/fbin/user_interface/navigation/breadcrumbs/breadcrumbs1.html">view the breadcrumbs</a> and utilize them under the terms of a <a rel="nofollow license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons BY-NC-SA</a> license.  There is only one design and version as of right now, generally just me playing structure and effects, but I&#8217;m sure eventually I&#8217;ll design more (did one similar for work already).</p>
<p>I have tested the navigation design in Chrome 3.0, Firefox 3.6, Opera 10.1, IE 7, and Safari 4 (Windows).  The functionality slightly from browser to browser &#8212; the &#8220;best&#8221; support appears in Firefox and Opera and the &#8220;worst&#8221; in IE 7, with Safari and Chrome in between.  But, of course, the breadcrumbs degrade gracefully (only real thing keeping me from proclaiming it fully &#8220;progressive enhancement&#8221; is the absence of separators between the crumbs in IE 7 due to the lack of support for :after).</p>
<h3>Caveats</h3>
<p>I am using the CSS content property for purposes of demonstration and wouldn&#8217;t necessarily encourage it due to the whole inaccessibility thing, though it&#8217;s viable &#8212; I&#8217;m not sure the &amp;gt; are going to be desirable in all accessibility scenarios.</p>
<p>In production, due to browser bugs (outlined below) some javascript enhancement would likely be called for.</p>
<p>While working with these enhanced breadcrumbs I found what I feel is a bug in browsers using the webkit rendering engine.  Using the general sibling selector and :hover just doesn&#8217;t work in Chrome or Safari and, in fact, it gets downright ugly if you apply CSS3 transitions (brief lock-ups, etc.).</p>
<p>Of course, as usual, you&#8217;d have to work around IE&#8217;s lack of :hover on list items.</p>
<h3>Final Note</h3>
<p>I also began wondering if the behavior I was seeing, of the general sibling selector selecting only the general siblings <em>after </em>the affected crumb was really right. It seems pretty consistent across all the browsers (sans :hover anyway), but when you think about it, it certainly sounds like it should select <em>all </em>siblings, not just the ones <em>after</em>. Of course, the ones after the hovered element are the ones I want, so I&#8217;m not complaining.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rachaelmoore.name/web-design/user-interface/breadcrumbs-css3-general-sibling-selector/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Graphic Design Interview</title>
		<link>http://www.rachaelmoore.name/web-presence/graphic-design-interview/</link>
		<comments>http://www.rachaelmoore.name/web-presence/graphic-design-interview/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 16:46:08 +0000</pubDate>
		<dc:creator>Rachael L. Moore</dc:creator>
				<category><![CDATA[Web Presence]]></category>
		<category><![CDATA[Career]]></category>
		<category><![CDATA[Front End Web Development]]></category>
		<category><![CDATA[Graphic Design]]></category>
		<category><![CDATA[Rachael L. Moore]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://www.rachaelmoore.name/?p=412</guid>
		<description><![CDATA[<q>Websites, definitely.  I could go on for pages and pages about why websites are different and about all the things that make the web a fascinating medium for me, but I'll spare you...unless you really need more.  Suffice it to say that a web site is rarely static and rarely truly finished.</q>]]></description>
			<content:encoded><![CDATA[<p>I got an e-mail requesting I answer a few questions for a graphic design student working on a report and I thought it might be interesting to post my responses here.</p>
<ol>
<li><strong>What made you want to pursue a career involving graphic design?</strong>
<p>I&#8217;ve always identified as a creative person, but I have never seemed to have natural artist genius.  You know those people who could draw amazingly before the age of 10?  That was never me, but I wanted it to be.  When my family got a computer (I was already 16) and I first began making websites, the process was so fast&#8230;I was able to see a design take shape quickly and see improvement in my skills quickly.  The web as a medium gave me the positive feedback I needed to keep motivated.  There was always something more to learn because so many different things played a critical part in the final product, so it was, and still is, exciting for many reasons.</p>
</li>
<li><strong>How did you get started in this profession?</strong>
<p>I actually got started in web design because I wanted to be a writer.  In High School I wanted to go to Berkeley for its reputation (plenty of amazing artists and writers as graduates), but didn&#8217;t really have quite the necessary GPA in the end&#8230;nor the drive and courage required to even go for it &#8212; I never even applied!  But when we got our first computer I discovered a thriving amateur writing community online and promptly joined it.  The next logical step was having a website of my own for my writing, which was the reason I created my first website.  I had always drawn a lot of bad illustrations to go along with my stories and everything kind of grew from there.  It felt like the web was something I&#8217;d been waiting for without knowing it.</p>
</li>
<li><strong>What kind of education did you receive?</strong>
<p>I&#8217;m mostly self-taught, but I attended TCC (Tallahassee Community College) for a number of years; got my AA and came within a few classes of an AS in Multimedia.  I was never really able to find a Bachelor program that felt &#8220;right&#8221; to me (that balanced the technical and the artistic).  So while I came very near to pursuing several different Bachelor programs, I never committed to one.  And since I&#8217;ve been working full time the last few years it hasn&#8217;t been urgent, though I do intend to complete a BA or BS someday.  Classes sometimes didn&#8217;t seem relevant to me, but in almost all cases the experience and practice were ultimately worthwhile.</p>
</li>
<li><strong>Do you enjoy being a Freelance Graphic Designer?</strong>
<p>I do.  I limit my freelance work, though, because it can be very time consuming.  Not so much the work itself, but all the ramifications of doing freelance work, like dealing with a customer without any buffer and having to deal with legalities and finances myself.  Not to mention the discipline required to make enough time to finish projects!  If I didn&#8217;t have a full time job I might dedicate more of my resources to freelance, perhaps, but freelance income is difficult to guarantee.</p>
</li>
<li><strong>What does your daily routine consist of?</strong>
<p>I have a full time job in addition to doing freelance work.  I get up about an hour before work, get ready, and work as a web developer by day.  Some evenings when I get home I work on freelance work, other evenings I chill out.  Scattered throughout the average week I do a fair amount of reading: current industry news, blogs, tutorials, and experiment with new techniques.</p>
</li>
<li><strong>What software do you use to produce your art?</strong>
<p>Adobe Photoshop, Adobe Illustrator, GIMP, paper, pencil, paint, a scanner, digital camera, and Crimson Editor, Dreamweaver, Firefox (GridFox, Web Developer, Firebug), jQuery, etc.</p>
<p>As an aside, I used to love and work primarily in Macromedia Fireworks.  There are still some reasons that Fireworks can be viewed as better for web design than Photoshop&#8230;so I feel my reason for primarily working in Photoshop these days is comfort/habit.</p>
</li>
<li><strong>Is it easy to find work?</strong>
<p>Yes and no.  More people contact me than I accept work from, but it wouldn&#8217;t be enough to support myself without a full time job by any stretch of the imagination.  I have some acquaintances who have the reserves of time and energy to do a lot more freelance work than I do, but most of them are in a similar position.  The steady income of a regular job is quite welcome.</p>
</li>
<li><strong>Do you recommend this profession?</strong>
<p>It depends on what you mean, I guess.  Properly speaking I am web designer, rather than a graphic designer.  But in this &#8220;industry&#8221;, generally speaking, it&#8217;s hard to put a consistent label on your skill set, because that label changes with the context.  I do some graphic design, but I personally associate graphic design specifically with graphic design <em>for print</em>.  My personal definition requires that a &#8220;web designer&#8221; have both design-for-web and coding (if not programming) skills.  Some places you&#8217;ll find that&#8217;s a &#8220;front-end web developer&#8221; and &#8220;web designer&#8221; looks more like &#8220;graphic designer.&#8221;  Other places not.</p>
<p>That&#8217;s something that&#8217;s been on my mind lately, so it comes immediately to the front when asked about my profession.  It may not seem like an answer, but I think the answer may be in there somewhere.  I suppose that I mean that the job title isn&#8217;t as important as the duties.  And that the web is still a place where things can get pretty fuzzy, so finding the right environment is essential.  Design, graphic or web, can be an incredibly rewarding profession, but (as always) things can get complicated; so look out for yourself and don&#8217;t settle until you find what&#8217;s really right for you&#8230;but don&#8217;t turn down an experience if you don&#8217;t have anything better knocking.  Experience is rewarding in itself.  I once worked for a year as secretary for a landscaping company&#8230;and that alone is the reason I got the experience that originally qualified me as a web developer!</p>
</li>
<li><strong>What is your favorite thing (logos, websites, etc.) to design?</strong>
<p>Websites, definitely.  I could go on for pages and pages about why websites are different and about all the things that make the web a fascinating medium for me, but I&#8217;ll spare you&#8230;unless you really need more.  Suffice it to say that a web site is rarely static and rarely truly finished.  There are never any guarantees about the user agent (or how the person visiting your site is seeing it).  This can complicate the design process and be &#8216;limiting&#8217; in many respects, but it&#8217;s also a challenge that never gets old.</p>
</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.rachaelmoore.name/web-presence/graphic-design-interview/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Design/Development Divide: Part I</title>
		<link>http://www.rachaelmoore.name/web-design/designdevelopment-divide-part-i/</link>
		<comments>http://www.rachaelmoore.name/web-design/designdevelopment-divide-part-i/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 16:49:38 +0000</pubDate>
		<dc:creator>Rachael L. Moore</dc:creator>
				<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Front End Web Development]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.rachaelmoore.name/?p=371</guid>
		<description><![CDATA[This is the first of an (as of now) five part series about some frustrations I&#8217;ve been having about web design.  Be forewarned that I will take a strong tone &#8212; I am frustrated and I think it will make for more compelling and sincere writing anyway.  However, I want to start by [...]]]></description>
			<content:encoded><![CDATA[<div class="foreword">This is the first of an (as of now) five part series about some frustrations I&#8217;ve been having about web design.  Be forewarned that I will take a strong tone &#8212; I <em>am </em>frustrated and I think it will make for more compelling and sincere writing anyway.  However, I want to start by saying that I do not actually froth at the mouth in person&#8230;I think.</div>
<h2>A Brief History of Websites</h2>
<p>The web as we know it is a descendant of networks dreamed up by military consultants and initially utilized by educational institutions.  When I was born there was no &#8220;www&#8221;; when I was in high school and getting interested in web design the computer lab had dial-up and Netscape.  The web was brand new.</p>
<p>When the internet first came to the home there was not really any such thing as a web designer or a web developer.  There were software engineers, computer programmers, and there were graphic designers.  Many graphic designers had learned the trade before the invention of desktop publishing software.  Art for the computer screen was a new concept. But it certainly made sense in those days to hire a graphic designer to do the design of a website &#8212; who could possibly be better qualified among internet pioneers?</p>
<p>That’s hardly the case now – there is a generation of people with experience in and education about the creation of web sites specifically.  But in the 1990’s there were no professional web designers who’d dreamed of a web design career as kids; there were just kids starting to dream as they discovered this exciting new medium.  Today those kids have grown up and become professionals.</p>
<h2>What is Design?</h2>
<p>Design is different from art; design is a problem solving process.  You can certainly apply a critical methodology to art, but there is a fundamental difference between an artist’s approach to creation and a designer’s approach to creation.  A designer is an artist who approaches the visual medium of their choice in order to solve a problem.  An artist has artistic license and does not have to have an articulated purpose, though the nature of art itself defies this sort of generalization.  But a designer has failed if the product does not adequately meet their client’s needs.</p>
<p>Wikipedia states that, “design is the planning that lays the basis for the making of every object or system.  In its broadest sense no other limitations exist and the final product can be anything from clothing to graphical user interfaces to skyscrapers.”  Merriam Webster states that a designer designs “for a specific function or end.”  Design is utilitarian at heart; when design is beautiful that beauty serves a mundane purpose.  (Don&#8217;t cringe, talk to an artist who doesn&#8217;t consider himself a designer &#8212; when designing, you&#8217;re part artist, but the purity of your art is rarely the only consideration.)</p>
<p>On the web, design involves navigation, graphics, HTML, CSS, and JavaScript.  A well-designed website must tell someone where they are, what is exciting about it, where they can go and make it easy to do those things.  If there is content, it must be easy to read, and it is best if the website is accessible to those who use screen readers.  Because a website is not static and visiting a website involves interaction there are different states for many graphical elements (which are difficult to convey in static mock-ups).</p>
<p>The web is a unique medium; most websites grow and evolve. Unlike a graphic designer, whose job is done after the printers roll and who knows his clients will see the same flyer he sees, it is rare that a web designer has the luxury to clap his hands and say, “there, it’s done.” The presentation of a website varies according to the screen, operating system, browser, and plug-ins available to the user. It is all but assured that the content and needs of the site will change to the point that the interface and experience will have to be adjusted.</p>
<p>It is essential that a web designer be equally as invested in the process as it is that a web designer be able to create pretty pictures. If a web designer is unwilling or unable to take into account the technical realities he will be unable to create a superior design. A web designer must not only be adept with graphics, he must have a bone-deep familiarity with rendering engines, an ability to accommodate a range of user experiences by both progressively enhancing and gracefully degrading an interface, and an understanding of the fundamentals SEM and SEO so that the final website is optimized and marketable.</p>
<h2>What is Development?</h2>
<p>Wikipedia states that, “among web professionals ‘web development’ usually refers only to the non-design aspects of building websites, e.g. writing markup and coding.”  If design is a process and a plan, development may be called the execution of that plan.  Yet by that measurement, the graphic designer who utilizes InDesign to create a magazine is undertaking graphic development.</p>
<p>Merriam Webster states that to develop is, “to create or produce especially by deliberate effort over time.”  This is a concept that is absolutely inseparable from both website design and development, because a website is often like a living organism that creates itself over time.  Without new posts, a blog is not a blog; it is the growth and expansion of the blog that makes it a blog.</p>
<p>So how is a web developer distinct from a web designer?  A developer would certainly be expected to undertake more programming than a designer, so he may cite technologies with which he is familiar, “I develop using HTML, CSS, JavaScript, PHP, and MySQL.”  Web development, like web design, is impossible without myriad technologies like servers and databases as well as web programming languages.  Simply viewing a generic WordPress site requires the cooperation of a number of very technical technologies: TCP/IP, a server with Apache installed, an .htaccess file for friendly URLs, PHP, a MySQL database, and HTTP &#8212; just to name a few.</p>
<p>A thorough knowledge of all of these is not common &#8212; there are network administrators, server administrators, and database administrators for the more esoteric and exacting tasks.  But the average web developer is normally able to set up a development environment of Apache, PHP, and MySQL on his computer and write both SQL queries and PHP code.  He may not be an expert in the HTTP protocol, but he at least knows the cosmetic difference between GET and POST and can utilize them.   Programming in a chosen language is itself is an art form with its own various methodologies and there are concepts like object orientation and model-view-controller architecture that span languages.  Ultimately there are a number of specialties within web development, but there is also unquestionably a breadth of knowledge necessary to develop effectively.</p>
<p>Since I assert that the success of a website design relies on the correctly designed use of all these many front end and back end technologies, what is a web developer?  However essential good web development is to the experience, much of web development is invisible to the viewer.  You can point to a button, but to explain all that is involved in having that button display another page is dizzying to the layman.  Are web developers the blue-collar workers of the web, the ones who construct the masterpieces designed by web designers?  Or is the divide between web design and web development based upon an outdated fallacy that a web site can be separated into “the art parts” versus “the programming parts”?</p>
<h2>Again, only with more W&#8217;s</h2>
<p>It&#8217;s a complicated subject to be sure and, possibly for that reason, the titles of “web designer” and “web developer” are applied very inconsistently to web professionals.  This inconsistency leads to confusion, job dissatisfaction, and the placement of poorly qualified individuals.</p>
<p>In some offices there may be a room of individuals called “web designers” who use Photoshop to create mock-ups.  Once the mock-up is approved the “web design” part of the process is considered complete and it is handed off to the “web developer” who not only writes all the HTML and CSS, but also makes decisions that affect the user experience.</p>
<p>Other businesses may hire employees with the title of “web designer” who use Photoshop, HTML, CSS, and possibly JavaScript to create templates that may lack necessary server-side code, but are complete down to the user experience.  In these environments the designer is responsible for designing the entire front-end experience, whether or not he actually writes all the final production front-end code.</p>
<p>You can probably already tell which scenario I favor.  As far as I am concerned the first group should not be called web designers.  Without utilizing HTML and CSS, how can a designer truly design a website &#8212; can an artist draw without using a pencil?  Didn&#8217;t the genius painters of the Renaissance mix their own paints?  Don&#8217;t graphic designers have to know about printing processes and inks, even if they don&#8217;t physically run the printing press to print their posters?  Each visual discipline has &#8220;technical&#8221; skills associated with it that require more than dreaming in the right brain.  Web design is not an exception, in fact, it is an artistic discipline for which this truth is even more stark and inescapable.</p>
<p>A designer who creates a static mock-up of a website, even one which indicates user interaction, but who does not know through his own abilities what HTML, CSS, and JavaScript can do is not even producing graphic art; he is designing based on what he has seen on other websites.  In short, he is not even exercising creativity, he is copying what others have done.  Imagine!  “I know we can do a carousel like this because I have seen it on other websites, so ‘insert carousel here.’  No, I don’t have a design  for the animation or interaction, because I can’t do more than a static mock-up.”</p>
<p>If I sound harsh, it is because this sort of so-called designer does not even have the defense of artistic integrity; he is a slapdash copycat.  A real designer concerned about the quality of his art would consider these details important.  Yet an endless series of mock-ups and cumbersome sprites showing the various states of interaction, which would at least meet the minimum criteria I have set, are far from an ideal answer.</p>
<p>The answer is: hire a <strong>web designer</strong>.</p>
<div class="afterword">This is only the first of a five part series I have planned.  Coming next is <strong>The Design/Development Divide: Part II</strong>.  I am thrilled at the quote (&#8221;<a href="http://twitter.com/zeldman/statuses/4818978868">Real web designers write code. Always have, always will</a>.&#8221;) that began being passed around at <a href="http://aneventapart.com/2009/chicago/">An Event Apart</a>; not only do I entirely agree but it makes this extended essay relevant to a topic that has recently been in the forefront of web professionals&#8217; minds.  I&#8217;m only sad I didn&#8217;t start publishing sooner.</div>
]]></content:encoded>
			<wfw:commentRss>http://www.rachaelmoore.name/web-design/designdevelopment-divide-part-i/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Customer Service: The RIGHT Way</title>
		<link>http://www.rachaelmoore.name/business-practices/customer-service-the-right-way/</link>
		<comments>http://www.rachaelmoore.name/business-practices/customer-service-the-right-way/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 01:49:21 +0000</pubDate>
		<dc:creator>Rachael L. Moore</dc:creator>
				<category><![CDATA[Business Practices]]></category>
		<category><![CDATA[Customer Service]]></category>

		<guid isPermaLink="false">http://www.rachaelmoore.name/?p=353</guid>
		<description><![CDATA[This isn&#8217;t regularly scheduled programming for my blog (incidentally, I have a big multi-part post in the planning stages), but I was so blown away by this I just had to give props to Bealls.
The last time I posted about customer service I was wondering about freelance customer service because of several bad experiences I&#8217;d [...]]]></description>
			<content:encoded><![CDATA[<p>This isn&#8217;t regularly scheduled programming for my blog (incidentally, I have a big multi-part post in the planning stages), but I was <strong>so blown away</strong> by this I just had to give props to Bealls.</p>
<p>The <a href="http://www.rachaelmoore.name/business-practices/do-freelance-web-designers-provide-good-customer-service/">last time I posted about customer service</a> I was wondering about freelance customer service because of several bad experiences I&#8217;d had.  Freelancers occupy a unique place that doesn&#8217;t necessarily place a lot emphasis on traditional customer service, though I&#8217;m sure the experience ranges from exceptional to awful depending on the freelancer.</p>
<p>But this post doesn&#8217;t really have any relationship with freelance web design or web development, it&#8217;s about an experience I just had with Bealls and Amazon.com.</p>
<p>One of those bad experiences I had a few months ago was with a Shoes.com purchase I made through Amazon.com.  Shoes.com sent me the wrong size shoe.  Even though it was their mistake and I made my preference clear, Shoes.com refused to make an exception to their &#8220;no exchanges on Amazon.com orders&#8221; policy.  By the time I finally got the return label (the process was fraught with delays and technical problems) they didn&#8217;t have my size anymore and I gave the shoes to my sister with the promise that I would <em>never </em>order any product from Shoes.com again. It&#8217;s not that they were the worst ever. But <em>they </em>caused a problem and then placed most of the onus of solving that problem on me without even holding a my original order for me.</p>
<p>Contrast that with Bealls.  A few days ago I ordered some shirts from Bealls through Amazon.com.  I had purchased this particular style of shirt in black at a local store.  After wearing it a few times I decided I liked it enough to search for it on Amazon in the hopes someone would have it in other colors.  I ordered a red one and a brown one from Bealls.  When the package arrived (in just a couple of days), I opened it to find that one of the shirts wasn&#8217;t <em>quite </em>what I&#8217;d ordered.</p>
<blockquote><p>I have a problem with one of the shirts I received. The red shirt is of the same brand and material, but a different cut of collar (than what is pictured on the site and in comparison to the brown).</p>
<p>The picture on the site and the brown shirt show a v-neck that is rather wide. The &#8220;back&#8221; of the collar does not have the wide hem that the front of the shirt has. This causes the shirt to fit very differently than the red shirt I received, which has a narrow v-neck with a wide hem all the way around.</p>
<p>I don&#8217;t actually care to return it because I don&#8217;t want to go through the hassle. But I *would* like to receive a red shirt of the same cut as I ordered (the shirt pictured on the site, the same cut as the brown).</p>
<p>I will pay for it, but I want to make sure I receive the right one this time.</p></blockquote>
<p>I received this <strong><em>amazing </em></strong>response just a few hours later!</p>
<blockquote><p>Thank you for taking the time to contact www.BeallsFlorida.com</p>
<p>We apologize for the incident that has occurred. Bealls will issue a credit back to your account for the amount of $11.99. Please do not return the shirt, you may keep it or donate to charity. However, if you<br />
would like to reorder the shirt please call and speak with a customer service representative at 1-800-569-9038. Thank you.</p>
<p>Thank you for shopping with BeallsFlorida.com<br />
Bria-Call Center Agent<br />
Bealls Department Stores<br />
bdsorders@beallsinc.com<br />
1-800-569-9038</p></blockquote>
<p>This is the <em>right </em>way to do customer service.  I didn&#8217;t hate the red shirt I got, I just prefer the style of shirt I have in black and brown.  But their response not only made the &#8220;to return or not to return&#8221; dilemma completely simple, it also completely acknowledged and made reparation for the mistake.  I didn&#8217;t even have to ask!  In fact, I wouldn&#8217;t have asked for the solution they offered because I&#8217;ve become too jaded to expect that kind of service.</p>
<p>Ultimately I think this is the type of service that every business should give to its customers.  But I know through personal experience that many, actually <strong>most</strong>, businesses do <em>not </em>provide this level of service.  So I want to share it with heartfelt thanks to Bealls.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rachaelmoore.name/business-practices/customer-service-the-right-way/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Citing in HTML5 (cite attribute and cite tag)</title>
		<link>http://www.rachaelmoore.name/web-design/html-web-design/citing-in-html5-cite-attribute-and-cite-tag/</link>
		<comments>http://www.rachaelmoore.name/web-design/html-web-design/citing-in-html5-cite-attribute-and-cite-tag/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 01:01:43 +0000</pubDate>
		<dc:creator>Rachael L. Moore</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[Attribution]]></category>
		<category><![CDATA[Citation]]></category>
		<category><![CDATA[cite]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[q]]></category>
		<category><![CDATA[Quotations]]></category>
		<category><![CDATA[Semantic Markup]]></category>
		<category><![CDATA[Valid Code]]></category>

		<guid isPermaLink="false">http://www.rachaelmoore.name/?p=276</guid>
		<description><![CDATA[My feelings on the <code class="tag tag-element">cite</code> tag are that "cite" should mean "the authoritative source" of information, whether that is a title or an author.  I also feel strongly that <code class="tag tag-element">cite</code> should optionally be associated with related content, perhaps by using the <code class="tag tag-attribute">for</code> attribute.  <code class="tag tag-element">cite</code> should not be restricted to titles, should optionally function like <code class="tag tag-element">label</code>, should accept a <code class="tag tag-attribute">href</code> attribute (or reasonable facsimile), the <code class="tag tag-element">cite</code> tag and <code class="tag tag-attribute">cite</code> attribute should allow similar values, and the <code class="tag tag-attribute">cite</code> attribute should be widely available to tags.]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s a tag I try to use from time to time and, when I do, find myself frowning.  That tag is <code class="tag tag-element">cite</code>; <code class="tag tag-element">cite</code> is an inline element which indicates the text within the <code class="tag tag-element">cite</code> tag is a citation of a source or reference.  It&#8217;s a tag with history but I will be primarily addressing <code class="tag tag-element">cite</code> as it&#8217;s described in HTML5.  The <cite>HTML5</cite> specification defines <code class="tag tag-element">cite</code> as <q><dfn>&#8230; the title of a work &#8230; [which] can be &#8230; quoted or referenced in detail &#8230; or &#8230; mentioned in passing</dfn></q>.</p>
<p>I personally feel this stifles the potential of the <code class="tag tag-element">cite</code> tag.  When I read that definition I mentally measured it against situations in which I have considered coding with or have coded with <code class="tag tag-element">cite</code> in the past and felt it made what could be a very useful tag rather shallow.  Google (it knows all, it sees all) showed me that my thoughts are shared by others, but there are many ideas which have been expressed regarding <code class="tag tag-element">cite</code> which haven&#8217;t been implemented and which I think are very good notions.</p>
<p><a href="http://www.toothpastefordinner.com"><img class="alignleft size-full wp-image-319" title="Dictionary Definition" src="http://www.rachaelmoore.name/wp-content/uploads/2009/09/dictionary1.gif" alt="Dictionary Definition" width="232" height="201" /></a>The current definition of <code class="tag tag-element">cite</code> means it is suitable for scenarios such as a blog entry which states, &#8220;Let&#8217;s see, what is going on with me right now?  I am currently re-reading <cite title="by Jim Butcher">Storm Front</cite> from The Dresden Files by Jim Butcher.  And my little sister has left for Spain &#8212; the lucky dog!&#8221;  Of course <code class="tag tag-element">cite</code> can also be used in references (though only around titles) like &#8220;Butcher, Jim. (1999). <cite>Storm Front</cite>. New York, NY: Idunno Press.&#8221;  There&#8217;s a pretty huge gap between those two situations and it suggests that <code class="tag tag-element">cite</code> is equivalent to &#8220;the title of something&#8221; rather than &#8220;the source of citation&#8221; &#8212; a tad confusing <a href="http://www.merriam-webster.com/dictionary/cite">given</a> <a href="http://en.wikipedia.org/wiki/Cite">the</a> <a href="http://dictionary.reference.com/browse/cite">literal</a> <a href="http://www.answers.com/cite"><em>word</em></a> involved.</p>
<p>I don&#8217;t intend to suggest that <code class="tag tag-element">cite</code> should <em>only</em> be useful for formal scholastic citations, but I do mean to suggest that it could be <em>more useful</em> for <strong>both</strong> formal citations as well as for everyman&#8217;s casual citations without doing any harm.  I believe the <code class="tag tag-element">cite</code> element will <em>benefit </em>if it can simply be used as if it is what it sounds like it is, rather being specified in a way contrary to &#8220;common sense&#8221;.</p>
<h2>Untitled by Rachael L. Moore</h2>
<p>The HTML5 definition makes <code class="tag tag-element">cite</code> less useful in &#8220;real&#8221; citations than it certainly should be.  Perhaps the HTML5 WG do not remember college research papers <img src='http://www.rachaelmoore.name/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  and have blocked from their minds the vagaries of APA, MLA, Chicago, etc.  This flashback is brought to you as a reminder that you <em>can</em> and people <strong>do </strong>cite authors, chapters, websites, and untitled pages on anonymous websites as well as the types of works listed in the HTML5 spec.   What a content author needs to cite and the <em>appropriate </em>way to cite varies with what information is being presented and where that information came from.  In the real world a real citation is not always a title, therefore <code class="tag tag-element">cite</code> should not be limited to titles.</p>
<h2>So It&#8217;s A Homonym?</h2>
<p>And just contrast that with the <code class="tag tag-attribute">cite</code> attribute &#8212; it&#8217;s the same word and sometimes serves the same purpose, but implemented with completely different data!  <code class="tag tag-element">cite</code>-the-element can only contain titles and <code class="tag tag-attribute">cite</code>-the-attribute can only contain valid URLs (whatever that means in the HTML5 spec).  Hilariously, <code class="tag tag-attribute">cite</code>-the-attribute is not a valid attribute for <code class="tag tag-element">cite</code>-the-element (which <strong>would</strong> be a bit dizzying).  Combining the two is nevertheless useful; yet I wonder why a tag and an attribute with the same name and overlapping purposes are each unnecessarily limited and mutually exclusive.</p>
<h2><q title="Dunno where that book is, mate.  Could be anywhere.  There's a lot of 'em about!">Dunno <em>Where</em> That Book is, Mate</q></h2>
<p><a href="http://www.eddieizzard.com"><img class="alignright size-full wp-image-320" title="Eddie Izzard" src="http://www.rachaelmoore.name/wp-content/uploads/2009/09/izzard.jpg" alt="Eddie Izzard" width="160" height="200" /></a>Presumably if you&#8217;re using <code class="tag tag-element">cite</code>, you will often have other content on the page which the <code class="tag tag-element">cite</code> relates to.  If you don&#8217;t, it&#8217;s just the title of something you happen to be writing down for some whimsical reason.  Yet the <code class="tag tag-element">cite</code> tag conspicuously lacks any way to perform this basic task of associating a citation with the information being cited <a style="vertical-align:super;" href="#footnote-1">1</a>.  I consider this a correctable oversight.</p>
<h2>Examples</h2>
<p>Below are some examples, some of which are ways to use <code class="tag tag-element">cite</code> that wouldn&#8217;t necessarily be valid in HTML5, but should be considered.  In some sets I have contrasted my experiment(s) with other examples which (I think) would be valid in HTML5.  I don&#8217;t necessarily endorse <strong>all </strong>these examples; you can think of them as a stream of consciousness.  I will probably update them post-publishing as they occur to me.</p>
<h3>Example Set 1</h3>
<p>In <strong>Example 1a</strong> you can see how <code class="tag tag-element">cite</code> could theoretically be associated with content using <code class="tag tag-attribute">for</code> <a style="vertical-align:super;" href="#footnote-2">2</a>.  In <strong>Example 1b</strong> I&#8217;ve attempted to render the same information in valid HTML5 (at least, so far as I understand it).  I&#8217;ve also done some things with <code class="tag tag-element">dfn</code> and <code class="tag tag-attribute">for</code> in <strong>Example 1a</strong> which may muddy the example somewhat.  But part of the idea is that <code class="tag tag-attribute">for</code> could become generic, so I wanted to test the efficacy &amp; ease-of-use.</p>
<h4>Example 1a</h4>
<p><code class="example excerpt">In the &lt;cite href="http://www.w3.org/TR/html5/text-level-semantics.html#the-cite-element" for="cite-definition"&gt;HTML5&lt;/cite&gt; specification &lt;code id="cite-tag" class="tag tag-element"&gt;cite&lt;/code&gt; tag is defined as &lt;q id="cite-definition"&gt;&lt;dfn for="cite-tag"&gt;... the title of a work ... [which] can be ... quoted or referenced in detail ... or ... mentioned in passing&lt;/dfn&gt;&lt;/q&gt;.</code></p>
<h4>Example 1b</h4>
<p><code class="example excerpt">In the &lt;cite&gt;HTML5&lt;/cite&gt; specification &lt;a href="#cite-tag-html5"&gt;&lt;code class="tag tag-element"&gt;cite&lt;/code&gt;&lt;/a&gt; tag is defined as &lt;q cite="http://www.w3.org/TR/html5/text-level-semantics.html#the-cite-element"&gt;&lt;dfn id="cite-tag-html5" title="cite"&gt;... the title of a work ... [which] can be ... quoted or referenced in detail ... or ... mentioned in passing&lt;/dfn&gt;&lt;/q&gt;.</code></p>
<h3>Example Set 2</h3>
<p>I like the <code class="tag tag-attribute">cite</code> attribute, though I have some reservations and questions about it. Is a relative URL a &#8220;valid URL&#8221; here?  If so I think a fragment identifier could be used like in <strong>Example 2a</strong> and <strong>Example 2b</strong>.  What about a tag URI?  If I understand the spec&#8217;s admonitions and the associated draft <a href="http://www.w3.org/html/wg/href/draft">Web addresses in HTML 5</a> correctly, the way HTML5 defines a &#8220;URL&#8221; includes URIs (maybe?), so it has potential because &#8220;urn:isbn:0-486-27557-4&#8243; could be used.</p>
<h4>Example 2a</h4>
<p><code class="example excerpt">In the &lt;cite href="http://www.w3.org/TR/html5/text-level-semantics.html#the-cite-element" id="cite-html5"&gt;HTML5&lt;/cite&gt; specification &lt;code id="cite-tag-html5" class="tag tag-element"&gt;cite&lt;/code&gt; tag is defined as &lt;q cite="#cite-html5"&gt;&lt;dfn for="cite-tag-html5"&gt;... the title of a work ... [which] can be ... quoted or referenced in detail ... or ... mentioned in passing&lt;/dfn&gt;&lt;/q&gt;.</code></p>
<h4>Example 2b</h4>
<p><code class="example excerpt">In the &lt;cite id="cite-html5"&gt;&lt;a href="http://www.w3.org/TR/html5/text-level-semantics.html#the-cite-element"&gt;HTML5&lt;/a&gt;&lt;/cite&gt; specification &lt;a href="#cite-tag-html5"&gt;&lt;code class="tag tag-element"&gt;cite&lt;/code&gt;&lt;/a&gt; tag is defined as &lt;q cite="#cite-html5"&gt;&lt;dfn id="cite-tag-html5" title="cite"&gt;... the title of a work ... [which] can be ... quoted or referenced in detail ... or ... mentioned in passing&lt;/dfn&gt;&lt;/q&gt;.</code></p>
<h3>Example Set 3</h3>
<p>I find <strong>Example 3a</strong> more elegant than <strong>Example 3b</strong>, but I concede it&#8217;s a matter of personal taste.  Incidentally I am generally in agreement with Eric Meyer&#8217;s suggestions about linking (though, for one thing, I see potential use cases for <code class="tag tag-element">article</code> and <code class="tag tag-attribute">href</code> &#8230; if it is in fact appropriate to use the <code class="tag tag-element">article</code> tag for excerpts/summaries that link to the full article).</p>
<h4>Example 3a</h4>
<p><code class="example excerpt">&lt;p id="cite-339858343"&gt;<br />
In &lt;cite href="http://meyerweb.com/eric/html-xhtml/html5-linking.html" for="cite-339858343"&gt;HTML5: More Flexible Linking&lt;/cite&gt;, Eric Meyer proposed adding &lt;code class="tag tag-attribute"&gt;href&lt;/code&gt; to the &lt;code class="tag tag-element"&gt;cite&lt;/code&gt; tag. I think this makes a lot of sense.<br />
&lt;code class="example excerpt"&gt;<br />
&lt;p&gt;&lt;cite href="http://www.whatwg.org/specs/web-apps/current-work/"&gt;HTML5&lt;/cite&gt; is a work in progress.&lt;/p&gt;<br />
&lt;/code&gt;<br />
&lt;/p&gt;</code></p>
<h4>Example 3b</h4>
<p><code class="example excerpt">&lt;p&gt;<br />
In &lt;cite&gt;&lt;a href="http://meyerweb.com/eric/html-xhtml/html5-linking.html"&gt;HTML5: More Flexible Linking&lt;/a&gt;&lt;/cite&gt;, Eric Meyer proposed adding &lt;code class="tag tag-attribute"&gt;href&lt;/code&gt; to the &lt;code class="tag tag-element"&gt;cite&lt;/code&gt; tag. I think this makes a lot of sense.<br />
&lt;code class="example excerpt" cite="http://meyerweb.com/eric/html-xhtml/html5-linking.html"&gt;<br />
&lt;p&gt;&lt;cite href="http://www.whatwg.org/specs/web-apps/current-work/"&gt;HTML5&lt;/cite&gt; is a work in progress.&lt;/p&gt;<br />
&lt;/code&gt;<br />
&lt;/p&gt;</code></p>
<h3>Example Set 4</h3>
<p>Do you really need to cite your mother?  Well, probably not, but I can imagine a legitimate need for <code class="tag tag-element">cite</code> in scenarios where a <em>person </em>would be cited: spoken words not recorded, aphorisms associated with a person rather than a specific document, etc. in addition certain formal citations.</p>
<h4>Example 4a</h4>
<p><code class="example excerpt">&lt;cite for="quote-833243"&gt;Kathy Moore&lt;/cite&gt;, my mother, frequently stated that, &lt;q id="quote-833243"&gt;you catch more flies with honey than with vinegar&lt;/q&gt;.  To my sincere dismay I find implementing this difficult.</code></p>
<h4>Example 4b</h4>
<p><code class="example excerpt">&lt;cite id="quote-833243"&gt;Kathy Moore&lt;/cite&gt;, my mother, frequently stated that, &lt;q cite="#quote-833243"&gt;you catch more flies with honey than with vinegar&lt;/q&gt;.  To my sincere dismay I find implementing this difficult.</code></p>
<h4>Example 4c</h4>
<p><code class="example excerpt">Kathy Moore, my mother, frequently stated that, &lt;q cite="Kathy Moore"&gt;you catch more flies with honey than with vinegar&lt;/q&gt;.  To my sincere dismay I find implementing this difficult.</code></p>
<h4>Example 4d</h4>
<p><code class="example excerpt">Kathy Moore, my mother, frequently stated that, &lt;q cite="sgn://example.com/?ident=kathymoore"&gt;you catch more flies with honey than with vinegar&lt;/q&gt;.  To my sincere dismay I find implementing this difficult.</code></p>
<h4>Example 4e</h4>
<p><code class="example excerpt">Kathy Moore, my mother, frequently stated that, &lt;q cite="mailto:kathy@example.com"&gt;you catch more flies with honey than with vinegar&lt;/q&gt;.  To my sincere dismay I find implementing this difficult.</code></p>
<h4>Example 4f</h4>
<p><code class="example excerpt">Kathy Moore, my mother, frequently stated that, &lt;q&gt;you catch more flies with honey than with vinegar&lt;/q&gt;.  To my sincere dismay I find implementing this difficult.</code></p>
<h3>Example Set 5</h3>
<p>You caught me&#8230;I want the <code class="tag tag-element">cite</code> tag to convey that I am citing the source of content that would benefit from a citation.  Not to mark up all my titles <img src='http://www.rachaelmoore.name/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  so that they are italic.  There are several things I might want to do as a result: associate a <code class="tag tag-element">q</code> (material) with a particular <code class="tag tag-element">cite</code> tag (source), have the  <code class="tag tag-element">cite</code> tag (source) to direct to the <code class="tag tag-element">q</code> (material), have the  <code class="tag tag-element">cite</code> tag (source) to link to a URL, and/or have the <code class="tag tag-element">q</code> (material) direct to the <code class="tag tag-element">cite</code> tag (source).  Maybe not all at once, but associating the material with the source does create more coherent relationships between sections of a document and starts down the road of making advanced citing concise.  A bunch of examples follow&#8230;</p>
<h4>Example 5a</h4>
<p><code class="example excerpt">&lt;q id="quote-309342"&gt;A fallacy is a misconception resulting from incorrect reasoning in logical argumentation.&lt;/q&gt;<br />
...<br />
...<br />
&lt;cite for="quote-309342"&gt;Fallacy. (2009, September 21). In Wikipedia, the free encyclopedia. Retrieved September 23, 2009, from http://en.wikipedia.org/wiki/Fallacy&lt;/cite&gt;</code></p>
<h4>Example 5b</h4>
<p><code class="example excerpt">&lt;q cite="#cite-309342"&gt;A fallacy is a misconception resulting from incorrect reasoning in logical argumentation.&lt;/q&gt;<br />
...<br />
...<br />
&lt;cite id="cite-309342" href="http://en.wikipedia.org/wiki/Fallacy"&gt;Fallacy. (2009, September 21). In Wikipedia, the free encyclopedia. Retrieved September 23, 2009, from http://en.wikipedia.org/wiki/Fallacy&lt;/cite&gt;</code></p>
<h4>Example 5c</h4>
<p><code class="example excerpt">&lt;q cite="#cite-309342"&gt;A fallacy is a misconception resulting from incorrect reasoning in logical argumentation.&lt;/q&gt;<br />
...<br />
...<br />
&lt;cite id="cite-309342" href="http://en.wikipedia.org/wiki/Fallacy"&gt;Fallacy&lt;/cite&gt;. (2009, September 21). In Wikipedia, the free encyclopedia. Retrieved September 23, 2009, from http://en.wikipedia.org/wiki/Fallacy</code></p>
<h4>Example 5d</h4>
<p><code class="example excerpt">&lt;q cite="#cite-309342"&gt;A fallacy is a misconception resulting from incorrect reasoning in logical argumentation.&lt;/q&gt;<br />
...<br />
...<br />
&lt;cite id="cite-309342"&gt;&lt;a href="http://en.wikipedia.org/wiki/Fallacy"&gt;Fallacy&lt;/a&gt;&lt;/cite&gt;. (2009, September 21). In Wikipedia, the free encyclopedia. Retrieved September 23, 2009, from http://en.wikipedia.org/wiki/Fallacy</code></p>
<h4>Example 5e</h4>
<p><code class="example excerpt">&lt;q id="quote-309342"&gt;A fallacy is a misconception resulting from incorrect reasoning in logical argumentation.&lt;/q&gt;<br />
...<br />
...<br />
&lt;a href="#quote-309342"&gt;&lt;cite&gt;Fallacy&lt;/cite&gt;. (2009, September 21). In Wikipedia, the free encyclopedia. Retrieved September 23, 2009, from http://en.wikipedia.org/wiki/Fallacy&lt;/a&gt;</code></p>
<h4>Example 5f</h4>
<p><code class="example excerpt">&lt;q cite="http://en.wikipedia.org/wiki/Fallacy"&gt;A fallacy is a misconception resulting from incorrect reasoning in logical argumentation.&lt;/q&gt;<br />
...<br />
...<br />
&lt;cite&gt;Fallacy&lt;/cite&gt;. (2009, September 21). In Wikipedia, the free encyclopedia. Retrieved September 23, 2009, from http://en.wikipedia.org/wiki/Fallacy</code></p>
<h2>Your Moment of Zen?</h2>
<p>There comes a time in every woman&#8217;s life when the chaos in the world becomes overwhelming&#8230;</p>
<h3>Ian Hickson</h3>
<blockquote cite="http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2009-June/020660.html"><p>I don&#8217;t understand why it would be more useful [to allow author names and full formal citations as valid cite content]. Having an element for the typographic <em>[AN: presentational?]</em> purpose of marking up titles seems more useful than an element for the <em>[AN: semantic?]</em> purpose of indicating what is a citation.</p></blockquote>
<p>Perhaps <strong><em>I</em></strong> don&#8217;t understand.  That word &#8220;semantic&#8221; sure is tricky.  But it&#8217;s fun to say.  Try it, 9 times fast!</p>
<h3>WHATWG HTML5 Working Draft</h3>
<blockquote cite="http://www.whatwg.org/specs/web-apps/current-work/"><p>This specification is limited to providing a semantic-level markup language &#8230; The scope of this specification does not include providing mechanisms for media-specific customization of presentation &#8230; The WHATWG was based on several core principles, in particular that technologies need to be backwards compatible, that specifications and implementations need to match even if this means changing the specification rather than the implementations&#8230;</p></blockquote>
<h2>Footnotes</h2>
<ol>
<li id="footnote-1"><code class="tag tag-element">cite</code> can make use of the global attributes defined by HTML5 which include <code class="tag tag-attribute">item</code>, <code class="tag tag-attribute">itemfor</code>, and <code class="tag tag-attribute">itemprop</code>.  It may be that these would optionally create some relevant functionality.  I have not yet investigated these attributes beyond noting their existence.  However, if it turns out that <code class="tag tag-attribute">itemfor</code> is a close relation to <code class="tag tag-attribute">for</code> I think its inclusion in the spec may be redundant &#8212; or at least not relevant as a complete solution to my <code class="tag tag-element">cite</code> wishlist.  Better to specify the implementations already exist and codify the common and familiar usages, right, HTML5?</li>
<li id="footnote-2"><code class="tag tag-attribute">for</code> is already familiar to us from using it with <code class="tag tag-element">label</code> and <code class="tag tag-element">input</code>.  <code class="tag tag-attribute">for</code> explicitly associates a <code class="tag tag-element">label</code> with an <code class="tag tag-element">input</code>.  For that reason it is well-suited to associate <code class="tag tag-element">cite</code> with whatever content might need a citation.  I conjecture it ought be easiest for search engines, browsers, scripts, validators, and authors to expand upon the use of something already accommodated and familiar.  Especially since it&#8217;s so goshdarn literal and doesn&#8217;t sound any alarms for me as a philosophically bad practice &#8212; what&#8217;s good for the goose (<code class="tag tag-element">label</code>) is good for the gander (<code class="tag tag-element">cite</code>).</li>
</ol>
<h2>Related Reading</h2>
<ul>
<li><a href="http://www.answers.com/cite">cite definition</a></li>
<li><a href="http://www.answers.com/topic/citation">citation definition</a></li>
<li><a href="http://www.w3.org/TR/html5/text-level-semantics.html#the-cite-element">HTML5: The Cite Element</a></li>
<li><a href="http://www.w3.org/html/wg/href/draft">Web addresses in HTML 5</a></li>
<li><a href="http://meyerweb.com/eric/html-xhtml/html5-linking.html">HTML 5: More flexible linking</a></li>
<li><a href="http://www.zeldman.com/superfriends/guide/#cite">The HTML 5 Superfriends: cite</a></li>
<li><a href="http://bartdegoeij.nl/the-cite-element-in-html-401-and-html-5">The Cite Element in HTML 4.01 and HTML5</a></li>
<li><a href="http://diveintomark.org/archives/2008/02/19/all-these-years">All these years, I’ve been using the cite element incorrectly</a></li>
<li><a href="http://philip.html5.org/data/cite.txt">XML-encoded textContent of cite elements<br />
</a></li>
<li><a href="http://philip.html5.org/data/cite-attribute-values.txt">cite=&#8221;&#8230;&#8221; attributes values</a></li>
<li><a href="http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2009-August/021699.html">[whatwg] the cite element</a></li>
<li><a href="http://lists.whatwg.org/htdig.cgi/help-whatwg.org/2009-July/000280.html">[html5] Author of a quote &#8211; how to mark up?</a></li>
<li><a href="http://lists.w3.org/Archives/Public/public-html/2009Sep/0575.html">what is dt? / Speakers in Dialogues (Was: what is dt?)</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.rachaelmoore.name/web-design/html-web-design/citing-in-html5-cite-attribute-and-cite-tag/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CSS &#8220;Image Replacement&#8221;, Part 2</title>
		<link>http://www.rachaelmoore.name/best-practices/css-image-replacement-ii/</link>
		<comments>http://www.rachaelmoore.name/best-practices/css-image-replacement-ii/#comments</comments>
		<pubDate>Thu, 23 Jul 2009 04:45:41 +0000</pubDate>
		<dc:creator>Rachael L. Moore</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[Browser Discrepancies]]></category>
		<category><![CDATA[CSS (Cascading Style Sheets)]]></category>
		<category><![CDATA[Graceful Degradation]]></category>
		<category><![CDATA[Image Replacement]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://www.rachaelmoore.name/?p=182</guid>
		<description><![CDATA[You may have seen my previous post of experimental  image replacement techniques, CSS image replacement part 1.  It wasn&#8217;t meant to be a guide to existing techniques as there are already at least two awesome overviews of CSS image replacement techniques at MezzoBlue.com and CSS-Tricks.  What I wanted to do was review the concepts and [...]]]></description>
			<content:encoded><![CDATA[<p>You may have seen my previous post of experimental  image replacement techniques, <a href="http://www.rachaelmoore.name/best-practices/css-image-replacement-part-1/">CSS image replacement part 1</a>.  It wasn&#8217;t meant to be a guide to existing techniques as there are already at least two <strong>awesome </strong>overviews of CSS image replacement techniques at <a href="http://www.mezzoblue.com/tests/revised-image-replacement/">MezzoBlue.com</a> and <a href="http://css-tricks.com/nine-techniques-for-css-image-replacement/">CSS-Tricks</a>.  What I wanted to do was review the concepts and techniques &#8212; then iterate through every idea I already knew in the hope of possibly inspiring myself to find a new way to accomplish CSS image replacement.  Since my last post I haven&#8217;t worked on it much, but the image replacement variation I dubbed &#8220;version 4&#8243; has stuck in my head.  It might be new as I haven&#8217;t seen it anywhere, though I&#8217;d be surprised to find that it&#8217;s never crossed anyone&#8217;s mind.  So today I took another look and was pleased to find that while I let my image replacement experiment rest, IE 8 had been released and begun rendering the image replacement technique from version 4 correctly.</p>
<h2>:after</h2>
<p>No pun intended&#8211;my technique involves using the :after pseudo-element in place of an empty span tag.  This  it has some faults.  Although it may not be the best choice for production sites, I think it worth sharing because I think it is interesting:  minimalist and <em>possibly </em>someday a worthy successor to my favorite image replacement technique.  My preferred image replacement procedure is the one credited to <a href="http://levinalex.net/files/20030809/alternatefir.html">Levin Alexander</a>, which involves nesting an additional empty span.  I feel (and the report cards seem to agree) that it is the most robust.  Its only downside is that it requires extra markup.  I wanted to find a way to duplicate the principle with CSS alone.</p>
<pre><code>&lt;style type="text/css"&gt;
	h1#irstyle4,
	h1#irstyle4:after{
		display:block;
		width:600px;
		height:100px;
	}
		h1#irstyle4{position:relative;}
		h1#irstyle4:after{
			position:absolute;
			top:0;left:0;
			content:url("testtitle.jpg");
		}
&lt;/style&gt;

&lt;h1 id="irstyle4" title="Test Text 4"&gt;Test Text 4&lt;/h1&gt;
</code></pre>
<div id="attachment_189" class="wp-caption aligncenter" style="width: 493px"><img class="size-full wp-image-189" title="irstyle4_success" src="http://www.rachaelmoore.name/wp-content/uploads/2009/07/irstyle4_success.gif" alt="Successful Rendering" width="483" height="83" /><p class="wp-caption-text">Successful Rendering</p></div>
<p>You can see the close relationship to Levin Alexander&#8217;s empty span image replacement.  The :after pseudo-element is positioned to cover the heading text.  A title tag can be added to the heading to create a tooltip.</p>
<h2>Problems &#8230; Solutions?</h2>
<p>There are a few known issues.</p>
<ol>
<li>One problem is that some browsers, particularly browsers based on earlier versions of the Gecko layout engine, break and display the text above the image.  You could use CSS hacks to target Mozilla and apply a tried-and-true image replacement technique such as the negative text-indent to fix this.  I disdain CSS hacks <img src='http://www.rachaelmoore.name/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  and this is a conceptual demo, so I didn&#8217;t apply any workarounds.</li>
<li>Firefox 3.0.11 with the Web Developer toolbar still shows the image with &#8220;hide images&#8221; set!  I&#8217;m not sure if this would occur in other &#8220;images off&#8221; scenarios, but there are possible alternatives&#8211;such as applying the image as a background:url() in the :after pseudo-element rather than inserting it using content:url().</li>
<li>This image replacement technique, like the positioned span on which it is based, will not work well with transparent images.  An additional way to hide the text (such as the negative text-indent) would have to be utilized in addition to or instead of this technique.</li>
</ol>
<p>You may also feel, looking at the list below, that the functionality breaks in more browsers than it works&#8211;but <em>most </em>of those browsers have either a minuscule market share or are browsers in which you would expect problems.  Firefox prior to 3.5 is the most notable failure.  Which isn&#8217;t to say that it&#8217;s a production-ready technique with no drawbacks&#8230;</p>
<h2>Compatibility Overview</h2>
<p>I used <a href="http://www.browsershots.org">browsershots.org</a> to test a large variety of browsers across multiple versions and operating systems.</p>
<h3>Broken: Text above Image</h3>
<ul>
<li>Flock</li>
<li>Seamonkey</li>
<li>Galeon</li>
<li>Firefox (&lt;= 3.1)</li>
<li>Seamonkey (&lt; 2.0)</li>
<li>Iceweasel</li>
<li>Epiphany</li>
<li>Iceape</li>
<li>Navigator</li>
<li>K-Meleon</li>
</ul>
<div id="attachment_190" class="wp-caption aligncenter" style="width: 493px"><img class="size-full wp-image-190" title="irstyle4_broken" src="http://www.rachaelmoore.name/wp-content/uploads/2009/07/irstyle4_broken.gif" alt="Broken Rendering" width="483" height="83" /><p class="wp-caption-text">Broken Rendering</p></div>
<h3>Gracefully Degrading: Text Only</h3>
<ul>
<li>Avant</li>
<li>MSIE 4.01</li>
<li>MSIE 5.01</li>
<li>MSIE 5.5</li>
<li>MSIE 6</li>
<li>MSIE 7</li>
<li>Dillo</li>
</ul>
<div id="attachment_191" class="wp-caption aligncenter" style="width: 493px"><img class="size-full wp-image-191" title="irstyle4_degrade" src="http://www.rachaelmoore.name/wp-content/uploads/2009/07/irstyle4_degrade.gif" alt="Gracefully Degradation" width="483" height="83" /><p class="wp-caption-text">Graceful Degradation</p></div>
<h3>Working! Success Stories</h3>
<ul>
<li>Minefield</li>
<li>Firefox (&gt; 3.1)</li>
<li>Opera (7.54 +)</li>
<li>Chrome</li>
<li>Safari (3.2.1 +)</li>
<li>Shiretoko (3.5)</li>
<li>Seamonkey (2.0)</li>
<li>MSIE 8</li>
</ul>
<div id="attachment_189" class="wp-caption aligncenter" style="width: 493px"><img class="size-full wp-image-189" title="irstyle4_success" src="http://www.rachaelmoore.name/wp-content/uploads/2009/07/irstyle4_success.gif" alt="Successful Rendering of the technique" width="483" height="83" /><p class="wp-caption-text">Successful Rendering</p></div>
<p>(Note that some browsers [Opera, Chrome, and Safari if I recall correctly] will actually replace the content in an element with generated content.  So in those browsers you could set the heading&#8217;s CSS content property to the banner and get at least partway there.  There&#8217;s no telling if that behavior (or if  :after behavior) will ever become consistent enough in this respect to make a good all-purpose image replacement medium.  Obviously for replacement Opera&#8217;s behavior is preferred, but it&#8217;s been a while since I read that part of the CSS spec, so I don&#8217;t know what how the implementation is specified.  I promise to check at some point in the near future.)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rachaelmoore.name/best-practices/css-image-replacement-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Discovering Drupal&#8230;</title>
		<link>http://www.rachaelmoore.name/business-practices/content-managent-systems-cms/discovering-drupal/</link>
		<comments>http://www.rachaelmoore.name/business-practices/content-managent-systems-cms/discovering-drupal/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 20:56:39 +0000</pubDate>
		<dc:creator>Rachael L. Moore</dc:creator>
				<category><![CDATA[Content Managent Systems (CMS)]]></category>
		<category><![CDATA[Content Management Systems (CMSs)]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.rachaelmoore.name/?p=178</guid>
		<description><![CDATA[As a web designer I have tended away from content management systems.  Templating is usually such a chore &#8212; just learning it for one CMS is a chore.  Since no one CMS has ever really captured my loyalty, I have looked upon learning the ins-and-outs of any CMS template system as quite onerous.   After all, [...]]]></description>
			<content:encoded><![CDATA[<p>As a web designer I have tended away from content management systems.  Templating is usually such a chore &#8212; just learning it for one CMS is a chore.  Since no one CMS has ever really captured my loyalty, I have looked upon learning the ins-and-outs of any CMS template system as quite onerous.   After all, if I&#8217;m not 100% happy with the CMS, why memorize what I can google?</p>
<p>Lately, however, I&#8217;ve spent enough time programming at work that the idea of writing my own content management system (which I&#8217;ve started, of course) has gotten less attractive.  My standards for usability and flexibility are too high.  It&#8217;s still a good programming project to undertake as a learning experience, of course, but I would never be fully satisfied with my own work.  I&#8217;m not even satisfied with many content management systems with years of work put in by dozens of developers!</p>
<p>If you asked me what the biggest 3 content management systems were I&#8217;d probably say: Wordpress, Drupal, and Joomla followed by PHPNuke, Expression Engine, and that-one-we-used-at-TCC.  I don&#8217;t have numbers on that, it&#8217;s based on the production web sites I&#8217;ve seen in and what comes up in Google.  Strangely, those first 3 CMS are ones I have never used on my own site!  It&#8217;s probably time to take a closer look.</p>
<p>I started by looking at Wordpress.  I actually really like Wordpress.  I like the backend, I like the features.  But the organization falls flat for me when using Wordpress for a site.  I can make a page or a post.  I can categorize the post or tag the post.  It just isn&#8217;t robust enough for a really organized site structure, especially if the structure is complicated, though I&#8217;ve given some consideration to making more use of custom fields by writing a plugin that suits my preferred information architecture.</p>
<p>Next, I looked at Joomla.  I remember reading an article that said Joomla&#8217;s interface was poorly designed in comparison to Wordpress and I agree.  I&#8217;ve used at least a dozen content management systems and I agree.  I found myself confused about a lot of things.  I played around with it and decided that, though I liked some things about it, I wanted to see some more options.</p>
<p>After that, I looked at TextPattern.  I didn&#8217;t give TextPattern as much time as others because my criteria was both a CMS I felt I could use as a web design and web developer and a CMS I felt very non-technical customers could use.  The TextPattern input, though interesting, I felt would have as big a learning curve for customers as a limited HTML tagset.</p>
<p>I&#8217;ve started falling in love with the very last one I tried: Drupal.  It&#8217;s early in the honeymoon, of course, but the ability to create your own content types and customize the inputs, create custom views and override default views, and create taxonomy sorted into various vocabularies that can either be optional,  required, or typed in&#8230;  Well, that is robust.  It can lend itself to a simple site structure or a complex one.  Best of all, the choices Drupal has made just make sense to me personally&#8230;it fits the way I think about sites.  It&#8217;s pretty darn close to the way I was planning to develop my own content management system!  I don&#8217;t remember any of that from the last time I tried Drupal out.</p>
<p>One of the things I don&#8217;t like, which is common to almost every CMS and is simply the way the web development world works, is the need for all those plugins.  I really dislike having to look for, install, and update plugins separately for certain functionality.  If it were something really offbeat&#8230;but c&#8217;est la vie.  You can&#8217;t even use a browser these days without wanting a host of plugins&#8230;unless you&#8217;re using Opera, which I often do.</p>
<p>I also haven&#8217;t undertaken that most dreaded of all tasks&#8230;templating.  But I hope I&#8217;ve found a CMS I can work with on my personal projects.  And it&#8217;s one of the most ubiquitous.  I&#8217;m pleased, even if I am behind the rest of the pack.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rachaelmoore.name/business-practices/content-managent-systems-cms/discovering-drupal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I hate multimedia, am I strange?</title>
		<link>http://www.rachaelmoore.name/web-design/i-hate-multimedia/</link>
		<comments>http://www.rachaelmoore.name/web-design/i-hate-multimedia/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 14:22:29 +0000</pubDate>
		<dc:creator>Rachael L. Moore</dc:creator>
				<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[Marketing]]></category>
		<category><![CDATA[Multimedia]]></category>
		<category><![CDATA[Screencasts]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[Videos]]></category>

		<guid isPermaLink="false">http://www.rachaelmoore.name/?p=158</guid>
		<description><![CDATA[Periodically I&#8217;ll read a blog entry or article on the use of multimedia in websites and how great it is.  The opportunities are endless &#8212; among those many possible uses are Flash presentations and video for advertising or teaching purpose.  As a professional, I see the benefits and could consult a client about [...]]]></description>
			<content:encoded><![CDATA[<p>Periodically I&#8217;ll read a blog entry or article on the use of multimedia in websites and how great it is.  The opportunities are endless &#8212; among those many possible uses are Flash presentations and video for advertising or teaching purpose.  As a professional, I see the benefits and could consult a client about and help a client utilize multimedia.</p>
<p>But privately&#8230;I hate multimedia.  A friend of mine just sent me an invitation to Dropbox.  Now, I&#8217;ve read about Dropbox and I didn&#8217;t run out and sign up.  But I think my friends wants my referral, so I figured I&#8217;d take another look.  I don&#8217;t want to sign up for something I have absolutely no need for (I&#8217;ve got too many accounts scattered around the internet as it is).  So I glanced around the invitation page for a &#8220;More about Dropbox&#8221; link.  What I saw was this, &#8220;Want to learn more? Check out our screencast.&#8221;</p>
<div id="attachment_159" class="wp-caption aligncenter" style="width: 374px"><a href="http://www.getdropbox.com/referrals/Njk5NTM4NTc"><img class="size-full wp-image-159" title="Dropbox Screencast" src="http://www.rachaelmoore.name/wp-content/uploads/2009/06/dropbox-multimedia.gif" alt="Screenshot of a portion of the dropbox sign-up page, showing an overview of their product and links (a screencast link is emphasized)." width="364" height="388" /></a><p class="wp-caption-text">Screenshot of a portion of the Dropbox sign-up page, showing an overview of their product and links (a screencast link is emphasized).</p></div>
<p>My reaction to this was to frown and sigh.  I thought, &#8220;The powers-that-be have are always saying that video presentations are a better way to convey information&#8230;but I <strong>hate </strong>them!&#8221;  I also realized that I never, ever watch them, even when I really want the information, unless I have no other choice.  And sometimes not even then.  For example, I read two blogs that often include videos or do periodic podcasts/screencasts.  I&#8217;ve starred some of them in Google Reader for later consumption, but I have never gone back to them, even though the topics interest me.</p>
<p>You see, I browse with my computer sound off.  If the sound is on, it&#8217;s because I&#8217;m listening to music.  But mostly the sound stays off because, as sad it is, I still come across websites with songs and other irritating sound effects embedded in them.  Not often (unless you count MySpace), but one 2am audio surprise a month is far too many.</p>
<p>So when videos are substituted for text and screenshots, I know I am going to have to turn on my speakers (or dig out my headphones, or turn off my music), check the volume levels, and do nothing but watch and listen for several minutes.  I hate having to interrupt my groove to watch a video.  I hate watching a video skip because of inadequate buffering.  And perhaps my attention span is bad, but when I am looking up a tutorial I tend to skim until I find the part I need &#8212; I normally don&#8217;t need to read all of it &#8212; and I can read much faster than the presenter can talk.  More often than not, I end up feeling like it&#8217;s a huge waste of my time.</p>
<p>I can think of only two situations in which I will watch multimedia presentations or videos online.  One of those is for the sake of a laugh (Man in the Box, anyone?) or entertainment.  The other is utilize a series of video tutorials on software I don&#8217;t know <strong>anything </strong>about.  But even for those two reasons, I will normally put off watching YouTube videos or online tutorials and, in truth, I often fail to come back to watch.</p>
<p>I&#8217;m just one person, but it&#8217;s got me wondering if &#8220;<em>they</em>&#8221; are slightly exaggerating the benefits of multimedia and video.  What if a significant minority of visitors feel the same way I do?  In my mind, that doesn&#8217;t say not to use video&#8230;it just provides another reason to concentrate on accessibility.  Accessibility guidelines state that accessible alternatives should be provided for presentations and video.  I suspect that may be a good idea for more than just accessibility: also for usability.</p>
<p>A long post to say that offering transcripts of your videos is a good idea for several reasons!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rachaelmoore.name/web-design/i-hate-multimedia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Javascript Enhanced Navigation II: Ajax Menus</title>
		<link>http://www.rachaelmoore.name/web-development/javascript/javascript-enhanced-navigation-2-ajax-menus/</link>
		<comments>http://www.rachaelmoore.name/web-development/javascript/javascript-enhanced-navigation-2-ajax-menus/#comments</comments>
		<pubDate>Tue, 16 Jun 2009 12:55:32 +0000</pubDate>
		<dc:creator>Rachael L. Moore</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Code Library / Code Libraries]]></category>
		<category><![CDATA[Graceful Degradation]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.rachaelmoore.name/?p=135</guid>
		<description><![CDATA[In my last post about navigation in javascript-enhanced sites I discussed a common difficulty encountered by  ajax web applications (even Gmail, way back when!).  A website that uses  ajax to load content uses javascript to change the state of the page.  This may appear to the end user as a somewhat faster page [...]]]></description>
			<content:encoded><![CDATA[<p>In my last post about <a title="Javascript Enhanced Navigation I" href="http://www.rachaelmoore.name/web-design/user-interface/navigation-in-javascript-enhanced-sites/">navigation in javascript-enhanced sites</a> I discussed a common difficulty encountered by  ajax web applications (even Gmail, way back when!).  A website that uses  ajax to load content uses javascript to change the state of the page.  This may appear to the end user as a somewhat faster page load; doesn&#8217;t it seem as if you are changing pages when you go from your Gmail inbox to your Gmail spam folder?  But since using the menu results in the page state being changed with ajax, not a traditional click-link-request-new-document-from-server-and-render-it approach, things get complicated.  Web browser history does not log javascript events, meaning that the back and forward buttons don&#8217;t work by default in an ajax web application.  Bookmarks also fail to work by default.</p>
<p>Now, Gmail long ago took steps to enable back and forward buttons.  Most things you click on in Gmail will change the site address in the address bar.  On a non-ajax site the query string would most likely change, in Gmail the hash, or token, changes.  The hash part of a URL is the part following the # (pound sign).  This part of the URL is normally used to allow users to navigate throughout a page, ie: &#8220;jump to content&#8221;.  The hash/token is therefore admirably suited to identifying states in an ajax driven site.</p>
<p>But how is that accomplished?  Many web developers are probably already familiar with how to do it, either by writing the javascript themselves, using a library, or some combination of the two.  As I mentioned in my last post, however, I feel that I&#8217;ve been spoiled by free javascript downloads and could use some more practice.  Sure, I can use other people&#8217;s scripts and modify them, but I don&#8217;t write much javascript on my own.  I feel I should at least get a grasp of the concepts involved in enabling the back button on an ajax menu, even if I ultimately use a pre-written javascript plugin in the interest of added features or stability.</p>
<p>Enough rambling!  What have I learned so far about javascript enhanced navigation in ajax sites?  The steps needed are:</p>
<ol>
<li>Ensure a hash/token is added the URL when links that should be navigated are clicked.</li>
<li>Monitor the URL for changes to the hash/token and load the appropriate state upon a change.</li>
</ol>
<p>That sounds a bit easier than it should, but it isn&#8217;t really that hard (although, as you will see, it doesn&#8217;t take the navigation quite as far as it needs to go).  Setting the hash/token is very simple and so far I&#8217;ve only seen two ways monitor the URL: an iFrame and SetInterval.  Here is what I have done to create a usable <a href="http://www.virtualrevolution.net/fbin/menus/ajax_menu.html">javascript enhanced menu</a> with ajax to load the pages and gracefully degrade.</p>
<p>The actual code to bind a custom &#8220;change&#8221; event to the window.location came from <a href="http://www.bennadel.com/blog/1520-Binding-Events-To-Non-DOM-Objects-With-jQuery.html">Ben Nadel</a>, but I don&#8217;t feel like I &#8220;cheated&#8221; on my goal because I <strong>had </strong>gotten it working with regular javascript functions, but while researching SetInterval() for more info I found his post and realized his jQuery solution was far more elegant.  I am vaguely familiar with jQuery&#8217;s ability to create and trigger custom events from seeing it in a pagination plugin I once downloaded, but I need to look into this &#8220;anonymous function&#8221; idea further.  Anyway, it is a <em>far </em>more elegant way to write the javascript because, as Ben explains, it will go ahead and execute at once (which helps with the bookmarking part) and, well, it just looks nicer than my series of 8-or-so functions.  You can write like it&#8217;s a normal event in jQuery doing it this way, too.</p>
<p>However, even the bound change event ultimately relies on SetInterval() &#8212; it&#8217;s not <strong>really</strong> an event binding, because a change in window.location just isn&#8217;t a javascript event; the way that I understand it, if SetInterval() weren&#8217;t checking for a change every so often, the binding wouldn&#8217;t actually detect changes to window.location (unlike a normal click binding always detects click events).  You can achieve the same end without using jQuery to bind and trigger the custom event, but using jQuery this way certainly streamlines the resulting code.</p>
<p>Something I have done personally which I haven&#8217;t seen yet (though I doubt it&#8217;s original) is that I have chosen to translate the hash/token directly into a possible file path.  If you&#8217;ve read the section of the W3 CSS specification about naming classes and ids, you&#8217;ll know that you can use special characters in CSS class and id names by escaping them with a backslash \ and using their hex code.  The url_from_token() function translates common URL characters.  This way, your hash can express &#8220;the file test1.html that is in the page folder&#8221; or &#8220;the file pages.php with the query string ?id=test&#8221; (which reminds me that I forgot to translate the equal sign, whoops, I&#8217;ll have to correct that).  That function needs work aside from forgetting the equal sign, though, I think it&#8217;s inefficient&#8230;or, well, it <em>looks </em>inefficient.</p>
<p>The whole thing is not production ready.  Not only is there some tweaking to be done (and some further exploration on my part into the use of iFrames in place of/in addition to SetInterval()), but the functionality isn&#8217;t 100%.  My tests (on Windows) so far show:</p>
<h3>Safari (for Windows) 3.2.2 (525.28.1)<br />
Google Chrome 2.0.172.31</h3>
<ul>
<li><span style="color: #000080;">Loads content</span></li>
<li><span style="color: #000080;">Back button works</span></li>
<li><span style="color: #000080;">Forward buton works</span></li>
<li><span style="color: #000080;">Direct entry works</span></li>
<li><span style="color: #000080;">Bookmarks work</span></li>
</ul>
<h3>Firefox 3.0.10</h3>
<ul>
<li><span style="color: #000080;">Loads content</span></li>
<li><span style="color: #000080;">Back button works</span></li>
<li><span style="color: #000080;">Forward buton works</span></li>
<li><span style="color: #000080;">Direct entry works</span></li>
<li><span style="color: #000080;">Bookmarks work</span></li>
<li><span style="color: #800000;">Swaps \ in href to /</span></li>
</ul>
<h3>Internet Explorer 7.0.5730.13</h3>
<ul>
<li><span style="color: #000080;">Loads content</span></li>
<li><span style="color: #000080;">Back button works</span></li>
<li><span style="color: #000080;">Direct entry works</span></li>
<li><span style="color: #000080;">Bookmarks work</span></li>
<li><span style="color: #800000;">Forward button does not work</span></li>
</ul>
<h3>Opera 9.64</h3>
<ul>
<li><span style="color: #000080;">Loads content</span></li>
<li><span style="color: #000080;">Back button works</span></li>
<li><span style="color: #000080;">Forward button works</span></li>
<li><span style="color: #800000;">Direct entry does not work</span></li>
<li><span style="color: #800000;">Bookmarks do not work</span></li>
</ul>
<p>So, be on the lookout for at least a third post summarizing all my research and explaining the code in sections.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rachaelmoore.name/web-development/javascript/javascript-enhanced-navigation-2-ajax-menus/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Do freelance web designers provide good customer service?</title>
		<link>http://www.rachaelmoore.name/business-practices/do-freelance-web-designers-provide-good-customer-service/</link>
		<comments>http://www.rachaelmoore.name/business-practices/do-freelance-web-designers-provide-good-customer-service/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 20:55:06 +0000</pubDate>
		<dc:creator>Rachael L. Moore</dc:creator>
				<category><![CDATA[Business Practices]]></category>
		<category><![CDATA[Customer Service]]></category>
		<category><![CDATA[Freelance Design]]></category>
		<category><![CDATA[Freelance Development]]></category>

		<guid isPermaLink="false">http://www.rachaelmoore.name/?p=77</guid>
		<description><![CDATA[I&#8217;ve been having a lot of bad experiences as a customer recently.  I&#8217;ve had to contact technical support and customer service more in the last 2 months than in the previous 2 years, I think.  And, to my dismay, most of those experiences have been substandard.
Verizon Wireless, who have previously shone in the customer service [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been having a lot of bad experiences as a customer recently.  I&#8217;ve had to contact technical support and customer service more in the last 2 months than in the previous 2 years, I think.  And, to my dismay, most of those experiences have been substandard.</p>
<p>Verizon Wireless, who have previously shone in the customer service department, didn&#8217;t even try to troubleshoot my problem logging in beyond telling me to use Internet Explorer 7.  Nevermind that I&#8217;ve used Opera and Firefox to log in the entire time I&#8217;ve had my account.  Seagate&#8217;s support website is an absolute disaster: it&#8217;s difficult to find a contact form, then the form repeatedly fails on the required &#8220;have you read all these articles in our knowledge base?&#8221; escalation step.  Zenni Optical took over twice as long as promised to deliver my glasses and, even though I asked several times, never told me why my order was delayed.  In fact, at least one representative got audibly annoyed with me &#8212; I won&#8217;t bore you by recounting the uninformative e-mails I received and the rude comments the representative made.  A teller at my bank, Envision Credit Union, refused to let me purchase a money order (which I needed to pay my rent)&#8211;<strong>after </strong>letting me change my PIN and deposit my paycheck (putting it out of my reach) because my driver&#8217;s license is expired.  I was standing right there and could have verified my identity in a number of  other ways, but apparently uptight adherence to their policy supersedes both the policy&#8217;s purpose in protecting me and their implied obligation to provide me with service.  Envision has also failed to reply to two e-mails I sent prior to this experience.  Shoes.com still hasn&#8217;t replied to my e-mail, sent over a week ago, about the fact that they sent me the wrong size of shoe (which is frightening given their &#8220;No Exchange&#8221; policy).</p>
<p>I&#8217;ve worked directly serving customers, in some form or another, most of my life.  My first job was concessionist at a movie theater, my second retail sales at a video game store, while my third and fourth heavily involved phone and e-mail tech support.  I know the frustrations.  It sometimes seems that people never read directions.  Answering the same question over and over <em>is</em> tiresome, that&#8217;s inescapable.  It&#8217;s hard to keep smiling when you know that a customer is being deliberately difficult in an effort to &#8220;work the system&#8221; and get special treatment or a discount.  When you are talking to that customer&#8211;the one that hasn&#8217;t paid for 3 months and is insisting, while insulting you, that s/he should not only continue to receive service, but also should have the past due balance waived&#8211;it&#8217;s hard to keep in mind that, really,  &#8220;special treatment&#8221; should be the <strong>rule</strong>.  As a customer service representative, you shouldn&#8217;t be frowning at the idea of special treatment, you should be happily providing special treatment to every customer with whom you interact!</p>
<p>In the &#8220;real world&#8221;, though, policies and procedures are in place to do things like protect the customer from fraud and  ensure the efficiency and accuracy of support responses.  Making exceptions can do more harm than good&#8211;doing &#8220;too much&#8221; for one client can mean not doing anything for 3 more clients who are waiting on hold in your call queue.  Your manager may not appreciate it as much as the client, either.  I understand that, too.  That doesn&#8217;t change the fact that the customer service representative&#8217;s responsibility is to service, not stall.</p>
<p>All the bad experiences I&#8217;ve had lately have made me wonder what kind of experience most clients have with their freelance web designers and web developers.  After all, there is a stereotype applicable to each that doesn&#8217;t bode well for providing good customer service!  For web designers, we have the temperamental artist (I&#8217;ll dust off my beret).  For web developers, we have the socially inept nerd (and on go my thick-rimmed glasses!).</p>
<p>Certainly I think that freelance web designers/web developers occupy a different position than a technical support employee.  You hire a freelance designer/developer, hopefully, because their portfolio of work convinces you that they are an expert in their field.  A freelance designer or freelance developer acts as a consultant in addition to a contract employee.  Often a freelance designer/developer is understood to have specialized knowledge.  This makes some conversations easier, but it doesn&#8217;t really change the fact that a paying customer has the right to make the final decision.</p>
<p>Ideals aside, one of the advantages of being self employed is being able to decide what jobs you want to take and how much grief you are willing to put up with, isn&#8217;t it?  So when the freelance designer vehemently disagrees with the decision, when the freelance developer is having a bad day, or when the customer is being a jerk, what inhibition aside from good manners will assure a freelance client of good customer service?</p>
<p>On the other hand, a freelancer (even one suffering pangs of artistic integrity!) has a front-row seat to the effect of bad customer service on his/her income.  If a freelance developer depends on his/her freelance employment for the majority of his/her income, a customer service failure could be economically fatal!  But there&#8217;s no guarantee that a given freelance designer will have significant customer service experience or a philosophy that holds customer service in high esteem.</p>
<p>So I wonder how well customer satisfaction ranks among clients of freelance designers.  If you are a freelance designer yourself you can ask or gauge by your repeat business and referrals.  I&#8217;d also like to ask freelance designers and developers how much attention they give to their customer service skills.  How important do freelance designers and freelance developers consider good customer service during the fulfillment of a freelance contract?</p>
<p>Having been a customer and a customer service rep, I know how overwhelming the frustration on both sides can be and I also know how easy it is for failures to occur, whether those failures are deliberate or accidental.  How often do customer service horror stories occur in the career of the average freelancer?  &#8216;Cause, personally, I&#8217;m closing my bank account, even though I&#8217;ve been with that bank for 10 years.  Some frustrations can be ignored and some rifts can be healed, but my bank teller willfully putting me at risk of  getting evicted because I no longer drive a car is just ridiculous.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rachaelmoore.name/business-practices/do-freelance-web-designers-provide-good-customer-service/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Navigation in javascript-enhanced sites</title>
		<link>http://www.rachaelmoore.name/web-design/user-interface/navigation-in-javascript-enhanced-sites/</link>
		<comments>http://www.rachaelmoore.name/web-design/user-interface/navigation-in-javascript-enhanced-sites/#comments</comments>
		<pubDate>Wed, 06 May 2009 18:12:21 +0000</pubDate>
		<dc:creator>Rachael L. Moore</dc:creator>
				<category><![CDATA[User Interface]]></category>
		<category><![CDATA[Code Library / Code Libraries]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://community.livejournal.com/vr_net/2771.html</guid>
		<description><![CDATA[First, what do I mean by navigation?  Navigation is the ability to move to what you want to see.  This involves the use of a menu internally, the use of the browser&#8217;s back and forward buttons, and the use of book marks, and the use of links.  Traditional navigation uses paradigm of going to locations which, [...]]]></description>
			<content:encoded><![CDATA[<p>First, what do I mean by navigation?  Navigation is the ability to move to what you want to see.  This involves the use of a menu internally, the use of the browser&#8217;s back and forward buttons, and the use of book marks, and the use of links.  Traditional navigation uses paradigm of going to locations which, on the web, are pages.  Sites enhanced with javascript: jQuery, ajax, etc. don&#8217;t always have &#8220;pages&#8221; in the traditional sense, but rather differing &#8220;states&#8221; on a single page.</p>
<p>This presents several challenges.  A visitor should be able to navigate to states (when those states emulate a traditional page) through bookmarks, the browser back and forward, etc.  The expectations of navigation already in place due to the pre-existing paradigm are as important &#8211;perhaps MORE important&#8211;to site/navigation usability as the javascript enhancements are.</p>
<p>If you know me, you know that I&#8221;m not a huge fan of javascript.  I don&#8217;t think javascript should ever replace functionality, but merely enhance it.  As a result, I have only limited knowledge of javascript because I have only made limited use of javascript.  The jQuery library has really captured my imagination, especially with the jQuery UI family.  Seeing the functionality of the FogBugz website (particularly the &#8220;Learn More&#8221; section&#8217;s accordion menu) inspired me further.  This is everything that a javascript-enhanced site should be.  Without javascript, the site functions normally&#8211;the accordion is a flat hierarchal menu, the link hrefs point to a normal html page.  With javascript, the menu is an accordion and upon a click the content is loaded via an ajax call.  Bookmarking and browser back/forward navigation work.</p>
<p>Why this isn&#8217;t built into jQuery UI already I don&#8217;t know.  Expectation plays a huge role in the success or failure of a UI.  My prior lack of interest in javascript is a huge hindrance to me here&#8211;I can read through the FogBugz javascript and identify certain areas I&#8217;m sure are critical to the functionality, but I don&#8217;t really *understand* it enough to write my own code to fix the navigation problems in the the jQuery UI.</p>
<p>So I&#8217;m going to do my best to study this issue and document my findings about how to emulate traditional navigation on javascript enhanced sites.  That emulation should include graceful degradation,  bookmarking, linking, and back/forward (plus any other details that are slipping my mind).  In my opinion, unless all those bases are covered the interface is a failure.</p>
<p>What do I know so far?  First, there is a pre-existing practice for referring to a particular spot on a page.  That is the token (aka hash aka anchor aka fragment).  Give an element an id token of &#8220;spot&#8221; and then link to #spot and the hash will be appended to the address and browser will jump to that element .  Many javascript enhanced sites use this part of the URL to remember states and provide navigation.  There are probably other ways to provide a unique address, but I favor this one.</p>
<p>When you set a click event on an anchor or otherwise interrupt its normal function with javascript, often the hash won&#8217;t actually be appended.  You can set it and add it to the address by explicitly setting window.location.hash to whatever it needs to be.  That&#8217;s all well and good, but it doesn&#8217;t seem like that works the same way with browser back/forward buttons as &#8220;regular&#8221; hash.</p>
<p>I&#8217;ve done some preliminary reading and it seems IE back/forward doesn&#8217;t generally work well with a hash and there is some talk of hidden iframes to force browsers to register history more fully.  From there on I don&#8217;t know much of anything, so this should be an interesting investigation.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rachaelmoore.name/web-design/user-interface/navigation-in-javascript-enhanced-sites/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Thoughts on the (X)HTML title attribute</title>
		<link>http://www.rachaelmoore.name/web-design/xhtml/thoughts-on-the-xhtml-title-attribute/</link>
		<comments>http://www.rachaelmoore.name/web-design/xhtml/thoughts-on-the-xhtml-title-attribute/#comments</comments>
		<pubDate>Tue, 05 May 2009 19:21:22 +0000</pubDate>
		<dc:creator>Rachael L. Moore</dc:creator>
				<category><![CDATA[XHTML]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Graceful Degradation]]></category>
		<category><![CDATA[Semantic Markup]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://community.livejournal.com/vr_net/2333.html</guid>
		<description><![CDATA[Sometimes it's very clear how to use the title attribute.  One of the places it's not as clear is one of the places the title attribute has incredible potential.  Within HTML/XHTML forms. Title attributes can be used on most form elements and act as a great assistive tooltip.  This use has bearing on questions of how best to lay out and style a form.]]></description>
			<content:encoded><![CDATA[<p>According to various HTML documentation: past, present, and future, the title attribute:</p>
<blockquote><p>&#8220;Offers advisory information about the element for which it is set.&#8221; &#8211; <a href="http://www.w3.org/TR/REC-html40/struct/global.html#h-7.4.3" target="_blank">HTML 4</a></p>
<p>&#8220;Offers advisory information. Some Web browsers will display this information as tooltips. Assistive technologies may make this information available to users as additional information about the element.&#8221; &#8211; <a href="http://xhtml.com/" target="_blank">XHTML</a></p>
<p>&#8220;Represents advisory information for the element, such   as would be appropriate for a tooltip.&#8221; &#8211; <a href="http://dev.w3.org/html5/spec/Overview.html#the-title-attribute" target="_blank">HTML 5</a></p></blockquote>
<p>The most common behavior in IE, Firefox, Opera, Chrome, and Safari (for Windows) is for a pale tooltip to appear when the user hovers over the titled element.  Rumor has it that screen readers can read the title attribute aloud.  Javascript can retreive the text entered into the title attribute and use it elsewhere&#8211;on enhanced tooltips, for example.</p>
<p>Sometimes it&#8217;s very clear how to use the title attribute&#8230;in an abbr (abbreviation) the title should be used to give the full text of the abbreviation.  In a dfn (definition) the title should be used to give the definition.  But one place it&#8217;s not as clear&#8211;and, yet, one of the places the title has incredible potential&#8211;is in use within forms.  Title attributes can be used on a form, fieldset, legend, label, input, textarea, or option (but not on a select).</p>
<p>This has bearing on questions of how to lay out and style a form.  For example, if you make use of implicit label association by wrapping an input in its label, hovering over the label or the input will show the title.</p>
<p><label title="Information about this text input" for="textinput1">Text Input:</label></p>
<input id="textinput1" name="textinput1" type="text" />
<p><code>&lt;label for="textinput1" title="Information about this text input"&gt;Text Input: &lt;input type="text" name="textinput1" id="textinput1" /&gt;&lt;/label&gt;</code></p>
<p>This allows you to write one assistive title for a form form field that will appear on the label and the field as well as on any other inline element you place within the label, such as one of those little (i) icons.  There are a few advantages to this&#8211;it&#8217;s cleaner in the markup than creating different or repeating titles for the label and input and I imagine that it might cut down on redundant reading by overly literal screen readers.</p>
<p>However, as my last post mentions, it is somewhat easier to style forms if the input is not wrapped in the label.  Getting a consistent label width in a form using label wrapped inputs requires either extraneous spans or CSS gymnastics.</p>
<p>This led me to a question&#8230;is it appropriate to title the label and input with the same information?  In practice, I believe it is.  Would there be benefits to titling each individually, however?  The label&#8217;s title would define the label in more detail.  The input&#8217;s title would offer details about what to input.</p>
<p><label title="Your text input label definition" for="textinput2">Text Input:</label></p>
<input id="textinput2" title="Enter numbers and letters here for text input" name="textinput2" type="text" />
<p><code>&lt;label title="Your text input label definition" for="textinput2"&gt;Text Input:&lt;/label&gt; &lt;input type="text" id="textinput2" name="textinput2" title="Enter numbers and letters here for text input" /&gt;</code></p>
<p>Form markup is complicated to write and read.  The addition of titles make it even more complicated to read.  I am personally dedicated to the use of titles in forms due to the vast potential to increase accessibility and enhance usability with javascript without adding extra meaningless elements.</p>
<p>I have trouble deciding what the best practice would be for adding titles to forms, unfortunately.  I can see arguments for both!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rachaelmoore.name/web-design/xhtml/thoughts-on-the-xhtml-title-attribute/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Focus on Forms</title>
		<link>http://www.rachaelmoore.name/web-design/focus-on-forms/</link>
		<comments>http://www.rachaelmoore.name/web-design/focus-on-forms/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 21:09:53 +0000</pubDate>
		<dc:creator>Rachael L. Moore</dc:creator>
				<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Contingency Design]]></category>
		<category><![CDATA[CSS (Cascading Style Sheets)]]></category>
		<category><![CDATA[Graceful Degradation]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Semantic Markup]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[Valid Code]]></category>

		<guid isPermaLink="false">http://community.livejournal.com/vr_net/2274.html</guid>
		<description><![CDATA[Using CSS to style forms
One of the things I&#8217;ve been slowly working on lately is taking a close look at forms: best practices, accessibility, styling, etc.
I don&#8217;t mean styling form controls&#8211;no, I&#8217;ve played around with it before and have read enough articles to feel that it&#8217;s not only impossible, but undesirable.  Some good reading:

http://www.456bereastreet.com/archive/200409/styling_form_controls/
http://www.456bereastreet.com/archive/200410/styling_even_more_form_controls/
http://www.456bereastreet.com/archive/200701/styling_form_controls_with_css_revisited/
http://meyerweb.com/eric/thoughts/2007/05/15/formal-weirdness/
http://www.456bereastreet.com/archive/200705/why_styling_form_controls_with_css_is_problematic/

So, no, I don&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: large;"><span style="text-decoration: underline;"><strong>Using CSS to style forms</strong></span></span></p>
<p>One of the things I&#8217;ve been slowly working on lately is taking a close look at forms: best practices, accessibility, styling, etc.</p>
<p>I don&#8217;t mean styling form controls&#8211;no, I&#8217;ve played around with it before and have read enough articles to feel that it&#8217;s not only impossible, but undesirable.  Some good reading:</p>
<ul>
<li><a href="www.456bereastreet.com/archive/200409/styling_form_controls/" target="_blank">http://www.456bereastreet.com/archive/200409/styling_form_controls/</a></li>
<li><a href="http://www.456bereastreet.com/archive/200410/styling_even_more_form_controls/" target="_blank">http://www.456bereastreet.com/archive/200410/styling_even_more_form_controls/</a></li>
<li><a href="http://www.456bereastreet.com/archive/200701/styling_form_controls_with_css_revisited/" target="_blank">http://www.456bereastreet.com/archive/200701/styling_form_controls_with_css_revisited/</a></li>
<li><a href="http://meyerweb.com/eric/thoughts/2007/05/15/formal-weirdness/" target="_blank">http://meyerweb.com/eric/thoughts/2007/05/15/formal-weirdness/</a></li>
<li><a href="http://www.456bereastreet.com/archive/200705/why_styling_form_controls_with_css_is_problematic/" target="_blank">http://www.456bereastreet.com/archive/200705/why_styling_form_controls_with_css_is_problematic/</a></li>
</ul>
<p>So, no, I don&#8217;t believe form controls should be styled barring very small tweaks that you don&#8217;t mind seeing only in a few browsers.</p>
<p><span style="font-size: larger;"><span style="text-decoration: underline;"><strong>Semantic Forms</strong></span></span></p>
<p>What I want to do is get a solid foundation for a simple (and hopefully semantic) form with as robust a stylesheet as I (and geniuses I find through Google) can come up with.  If fancier effects are desired, they can be built up.  But the final result should be suitable for most forms while remaining simple and semantic.</p>
<p>I&#8217;ve been using a method where I wrap inputs in labels and set the labels to block&#8211;then use classes to create columns, etc.  But it tended to get bloated.  So I thought it might be time to take another look.</p>
<p>The biggest inspiration for the form styling was:</p>
<ul>
<li><a href="http://www.websiteoptimization.com/speed/tweak/forms/" target="_blank">http://www.websiteoptimization.com/speed/tweak/forms/</a></li>
</ul>
<p>That site gave me lots of ideas about how to use and line up labels and what to think about for accessibility and the appearance of forms without the stylesheet.  The author mentioned a few alternatives tried that caused failures in browser testing &#8212; so I was able to begin where s/he left off.</p>
<p><span style="text-decoration: underline;"><strong><span style="font-size: larger;">Legends</span></strong></span></p>
<p>One of the most challenging parts of form design with semantic form elements is styling form legends.  The following resources were helpful there:</p>
<ul>
<li><a href="http://beckism.com/2008/12/display_block_legend/" target="_blank">http://beckism.com/2008/12/display_block_legend/</a></li>
<li><a href="http://www.tyssendesign.com.au/articles/css/legends-of-style/" target="_blank">http://www.tyssendesign.com.au/articles/css/legends-of-style/</a></li>
<li><a href="http://www.communitymx.com/blog/index.cfm?newsid=923" target="_blank">http://www.communitymx.com/blog/index.cfm?newsid=923</a></li>
<li><a href="http://www.w3conversions.com/presos/AEA/2_form/form2.htm" target="_blank">http://www.w3conversions.com/presos/AEA/2_form/form2.htm</a></li>
</ul>
<p><span style="font-size: larger;"><span style="text-decoration: underline;"><strong>My goals</strong></span></span></p>
<ul>
<li>Use form, fieldset, legend, label, and input/select/textarea and <em>maybe </em>br to build a form &#8212; avoiding spans, divisions, lists, and other extraneous markup.</li>
<li>Use CSS to style the form&#8211;making the CSS cross browser without bloating the stylesheet or using hacks.</li>
<li>Make the form flexible without bloating the HTML &#8212; it should not be obscure.</li>
<li>The markup for checkboxes and radio fields should make sense.</li>
<li>Make the form accessible.  Ensure it is readable without the stylesheet.  Use accesskeys and associate labels.</li>
<li>Make the form usable.  Make labels and layout clear.  Provide input hints.  Provide focus styles.</li>
<li>Provide clear errors both at the top and next to the affected field.  Ensure the error display is consistent both with the first-level javascript and the second-level server side validation.  (Obviously the serverside will vary, but it should be easy to integrate serverside errors).</li>
</ul>
<p>There is still some tweaking and integration of javascript to go before I call it &#8220;finished&#8221; &#8212; I&#8217;ve made some notes in comments about my to-do list, which is:</p>
<ul>
<li>Use javascript to create &#8220;input hints&#8221; inside text inputs&#8211;on focus they disappear, on blur they reappear if nothing has been entered.</li>
<li> Use javascript for first-level validation and error display.</li>
<li>Adding a few classes to the fieldsets would accomplish several things.  Part of my reduced-code-and-css approach was to also avoid the use of classes.  Once I&#8217;ve got a handle on the semi-final product, I may make some different versions that utilize classes to a greater or lesser extent.</li>
<li>Tweak the form presentation for effective reading without the stylesheet (there are some problems with this atm).</li>
<li>Test, test, test.  <img src='http://www.rachaelmoore.name/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </li>
</ul>
<p><em><span style="font-size: larger;"><span style="text-decoration: underline;">So here&#8217;s the first version&#8230;</span></span></em></p>
<div style="text-align: center;"><a href="http://www.virtualrevolution.net/fbin/homesearch.html" target="_blank"><strong>http://www.virtualrevolution.net/fbin/homesearch.html</strong></a></p>
<p><a href="http://www.virtualrevolution.net/fbin/homesearch.html"><strong></strong></a></div>
<p><span style="font-size: larger;"><strong><span style="text-decoration: underline;">Some final notes</span></strong></span></p>
<p><strong>It doesn&#8217;t validate!</strong></p>
<p><a href="http://www.w3.org/2005/08/online_xslt/xslt?xmlfile=http%3A%2F%2Fcgi.w3.org%2Fcgi-bin%2Ftidy-if%3FdocAddr%3Dhttp%253A%252F%252Fwww.virtualrevolution.net%252Ffbin%252Fhomesearch.html&amp;xslfile=http%3A%2F%2Fwww.w3.org%2F2002%2F08%2Fextract-semantic.xsl" target="_blank"><span style="text-decoration: underline;">Semantics</span> </a>- Looking pretty good!</p>
<p><a href="http://jigsaw.w3.org/css-validator/validator?uri=http%3A%2F%2Fwww.virtualrevolution.net%2Ffbin%2Fhomesearch.html&amp;profile=css21&amp;usermedium=all&amp;warning=1&amp;lang=en" target="_blank"><span style="text-decoration: underline;">CSS </span></a>- To keep the testing code concise, a CSS hack was used&#8211;this would be moved to an IE conditional stylesheet in a production version, obviating the need for the validation-breaking hack.</p>
<p><a href="http://validator.w3.org/check?uri=http%3A%2F%2Fwww.virtualrevolution.net%2Ffbin%2Fhomesearch.html&amp;charset=(detect+automatically)&amp;doctype=Inline&amp;group=0" target="_blank"><span style="text-decoration: underline;">XHTML </span></a>- I like XHTML, I really do.  Normally I deploy in XHTML transitional.  I validate using XHTML strict normally, if I can, however.  Since this is in testing the strict doctype is used.  But the errors here (if you take a look), well, honestly&#8230;I think they&#8217;re stupid.  So I will probably ignore them.  I don&#8217;t see any reason why an accesskey shouldn&#8217;t be used on a select element  if it works in the user agent (though I&#8217;ll do some research on it to see if there actually is a good reason).  As for the other errors&#8230;sometimes I think the XHTML strict working group was smoking crack.  You must wrap ALL form elements in a fieldset?  Why?  It&#8217;s already in a form.  It&#8217;s a form field.  *shrug*</p>
<p><strong>Input hints (usability, accessibility)</strong></p>
<p>For input hints (in addition to the preliminary thoughts on plain-text instructions that you can see) I decided the best place to put hints would be in the title attribute on the input.  I don&#8217;t know if this is a &#8220;new&#8221; idea, though I haven&#8217;t seen it before.  My thoughts were that, using  the title tag, most browsers (even without javascript) will display the hint on hover!</p>
<p>The plain text hints/instructions are very preliminary.</p>
<p><strong>Display without styles (accessibility)</strong></p>
<p>So far, the form is pretty readable without styles.  Using the line break tag preserves the general vertical layout.  Using labels next to inputs preserves the general horizontal layout.  The major wrenches in the display are the plain text input hints (and, upon errors, the errors might case some bad readability).  You can also see the nesting of fieldsets much more clearly without the stylesheets.  That doesn&#8217;t bother me, overall&#8211;fieldsets can be nested and the meaning of a fieldset  &#8212; &#8220;a set of associated fields&#8221; is respected by the markup.</p>
<p><strong>Semantic markup (best practices, accessibility)</strong></p>
<p>Eventually in a form, you pretty much have to use non-form elements.  For additional instructions, to fix a layout quirk, etc.  I wanted to keep it as simple as possible.  But instructions, plain text code hints, errors, and legends required p, span, and div (I used as seemed appropriate).  Only legends that need extra styling need to use spans, though, so you will see it&#8217;s only used in a couple of places.  I&#8217;m also still working on plain text instructions and even the errors will probably go through some additional tweaking.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rachaelmoore.name/web-design/focus-on-forms/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8220;Compiling&#8221; the cURL  library with PHP 5 on Windows</title>
		<link>http://www.rachaelmoore.name/web-development/php/compiling-the-curl-library-with-php-5-on-windows/</link>
		<comments>http://www.rachaelmoore.name/web-development/php/compiling-the-curl-library-with-php-5-on-windows/#comments</comments>
		<pubDate>Fri, 20 Feb 2009 22:03:52 +0000</pubDate>
		<dc:creator>Rachael L. Moore</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Code Library / Code Libraries]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://community.livejournal.com/vr_net/1795.html</guid>
		<description><![CDATA[Since I use Windows at home and work, my development system is:

Windows XP
Apache 2
PHP 5

This means, obviously, I don&#8217;t compile anything.  Personally I like to install PHP with the Windows binary and then download the full zip package as well.  After I&#8217;ve installed I unzip and copy and paste all the libraries/DLLs I don&#8217;t have  from the zip to [...]]]></description>
			<content:encoded><![CDATA[<p>Since I use Windows at home and work, my development system is:</p>
<ul>
<li>Windows XP</li>
<li>Apache 2</li>
<li>PHP 5</li>
</ul>
<p>This means, obviously, I don&#8217;t compile anything.  Personally I like to install PHP with the Windows binary and then download the full zip package as well.  After I&#8217;ve installed I unzip and copy and paste all the libraries/DLLs I don&#8217;t have  from the zip to my installation directory.  (I just overwrite all the extensions&#8230;I&#8217;m little more choosy with the DLLs that are in the PHP root folder.  Normally the zip contains more libraries than the PHP installer provides and this helps ensure I&#8217;m not &#8220;missing&#8221; files.)  After that I attend to customizing php.ini (and, of course, Apache).</p>
<p>Using the cURL library with PHP 4 was as simple as uncommenting extension=php_curl.dll in php.ini (as I recall).  But with PHP 5 I was getting the following startup error:</p>
<blockquote><p><strong>Unable to load dynamic library php_curl.dll &#8211; The specified module could not be found</strong></p></blockquote>
<p>But it was there&#8230;and I was looking right at it &#8212; the exact path was the one the error claimed did not exist.  And my other extensions in that directory were working.</p>
<p>If you are using Windows, Apache, and PHP 5 and can&#8217;t get cURL to work/cURL to load even though it seems like it <em>should</em>, check that these two files:</p>
<ul>
<li>libeay32.dll</li>
<li>ssleay32.dll</li>
</ul>
<p>Are located C:\Windows\System32</p>
<p>You can get those from the aforementioned zip.  I dunno why, I just know it worked.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rachaelmoore.name/web-development/php/compiling-the-curl-library-with-php-5-on-windows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Writing Forms with name and id</title>
		<link>http://www.rachaelmoore.name/web-design/xhtml/writing-forms-with-name-and-id/</link>
		<comments>http://www.rachaelmoore.name/web-design/xhtml/writing-forms-with-name-and-id/#comments</comments>
		<pubDate>Mon, 26 Jan 2009 20:35:22 +0000</pubDate>
		<dc:creator>Rachael L. Moore</dc:creator>
				<category><![CDATA[XHTML]]></category>
		<category><![CDATA[Attributes]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Silly Mistakes]]></category>
		<category><![CDATA[Valid Code]]></category>

		<guid isPermaLink="false">http://community.livejournal.com/vr_net/1614.html</guid>
		<description><![CDATA[Yes, we all make mistakes.  Mine was mistakenly thinking that the HTML name attribute was deprecated for all elements, including form elements.  In actuality, though XHTML deprecates the name attribute on anchor tags and the form itself, the name attribute is an integral part of XHTML forms -- as much as HTML forms.  I wrote up a big ol' document about it.  Probably more than it deserves, but I guess I was bored.  Check out HTML / XHTML Forms: Using ID and NAME.]]></description>
			<content:encoded><![CDATA[<p>I don&#8217;t know about you, dear reader, but I once had the misfortune to read the &#8220;HTML compatibility guidelines&#8221; for XHTML authors written by W3C.  I can&#8217;t blame my silly mistakes on that well-meaning document, however.</p>
<p>Yes, we all make mistakes.  Mine was mistakenly thinking that the HTML name attribute was deprecated for all elements, including form elements.  In actuality, though XHTML deprecates the name attribute on anchor tags and the form itself, the name attribute is an integral part of XHTML forms &#8212; as much as HTML forms.</p>
<p>Here was where I got lost in illogic.  In order to create a set of related radio inputs or checkbox inputs in a form, you give all those inputs an identical name.  For a radio, this will cause the average browser to enforce the only-select-one rule.  Since I had mistakenly assumed that name was deprecated, I would use both id and name on a form input and give them all the same token, like &#8220;favorite_food&#8221; (or whatever).</p>
<p>Obviously this is wrong.  I swear I did know that id was supposed to be unique&#8211;really, I did&#8211;I just thought that a form would have to be an exception with id replacing name someday (which is <em>not </em>happening).  But it wasn&#8217;t that big a deal until a bug showed up in Firefox, making it pretty much impossible to successfully use an input if its id was duplicated elsewhere.</p>
<p>I wrote up a big ol&#8217; document about it.  Probably more than it deserves, but I guess I was bored.  Check out <a href="http://www.virtualrevolution.net/fbin/forms/forms_id_name.html" target="_blank">HTML / XHTML Forms: Using ID and NAME</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rachaelmoore.name/web-design/xhtml/writing-forms-with-name-and-id/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS &#8220;Image Replacement&#8221;, Part 1</title>
		<link>http://www.rachaelmoore.name/best-practices/css-image-replacement-part-1/</link>
		<comments>http://www.rachaelmoore.name/best-practices/css-image-replacement-part-1/#comments</comments>
		<pubDate>Wed, 26 Nov 2008 18:06:33 +0000</pubDate>
		<dc:creator>Rachael L. Moore</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[Graceful Degradation]]></category>

		<guid isPermaLink="false">http://community.livejournal.com/vr_net/1361.html</guid>
		<description><![CDATA[Image replacement techniques replace plain text with images.  This allows designers to show fancier visuals to web site visitors who have that capability.  The challenge with image replacement techniques (because, after all, you can just delete text and insert an image) is to maintain the text for maximum accessibility while the image replaces [...]]]></description>
			<content:encoded><![CDATA[<p>Image replacement techniques replace plain text with images.  This allows designers to show fancier visuals to web site visitors who have that capability.  The challenge with image replacement techniques (because, after all, you can just delete text and insert an image) is to maintain the text for maximum accessibility while the image replaces the text for visitors who wish to see images.</p>
<p>I&#8217;ve been doing some brainstorming and reviewing old techniques for image replacement.  This file just shows some preliminary experimentation with CSS image replacement.</p>
<p><a href="http://www.virtualrevolution.net/fbin/ir/content_test.html">http://www.virtualrevolution.net/fbin/ir/content_test.html</a></p>
<p>My criteria for truly successful image replacement is:</p>
<p>- Functions with CSS + images<br />
- Functions with CSS and no images<br />
- Functions for screen readers (to the best of my knowledge)<br />
- Functions with no CSS and no images<br />
- Does not require any extra tags (though I will insert a span tag or an img tag failing to achieve all of the former).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.rachaelmoore.name/best-practices/css-image-replacement-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using hCard for Website Contact Info</title>
		<link>http://www.rachaelmoore.name/web-design/microformats/hcard-contact-info/</link>
		<comments>http://www.rachaelmoore.name/web-design/microformats/hcard-contact-info/#comments</comments>
		<pubDate>Tue, 18 Mar 2008 22:08:35 +0000</pubDate>
		<dc:creator>Rachael L. Moore</dc:creator>
				<category><![CDATA[Microformats]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Search Engine Optimization (SEO)]]></category>
		<category><![CDATA[Valid Code]]></category>

		<guid isPermaLink="false">http://community.livejournal.com/vr_net/852.html</guid>
		<description><![CDATA[Here&#8217;s the hCard I&#8217;m working with.  This is a microformat that&#8217;s pretty popular&#8211;Yahoo even makes use of it, for example, in spidering sites.  These can also apparently be processed into vCards for download &#38; importation into most contact management software, though it would require a browser plugin or web app to do so.
 
&#60;address class="vcard"&#62;
	&#60;img [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s the hCard I&#8217;m working with.  This is a microformat that&#8217;s pretty popular&#8211;Yahoo even makes use of it, for example, in spidering sites.  These can also apparently be processed into vCards for download &amp; importation into most contact management software, though it would require a browser plugin or web app to do so.<span id="more-11"></span></p>
<p><code> </code></p>
<pre>&lt;address class="vcard"&gt;
	&lt;img src=" width=" height=" alt=" class="photo" /&gt;

	&lt;h6 class="fn"&gt;
	Rachael L. Moore
	&lt;/h6&gt;

	&lt;a href="http://www.virtualrevolution.net/" class="org url" rel="me"&gt;
	Virtual Revolution
	&lt;/a&gt;

	&lt;div class="adr"&gt;
		&lt;span class="type"&gt;postal&lt;/a&gt;
		&lt;span class="street-address"&gt;1532 Chadwick way&lt;/span&gt;
		&lt;span class="locality"&gt;Tallahassee&lt;/span&gt;,
		&lt;span class="region"&gt;Florida&lt;/span&gt;
		&lt;span class="postal-code"&gt;32312&lt;/span&gt;
		&lt;span class="country-name"&gt;United States&lt;/span&gt;
	&lt;/div&gt;
	&lt;div class="tel"&gt;
		&lt;span class="type"&gt;Cell&lt;/span&gt;
		&lt;span class="value"&gt;+1.850.445.6859&lt;/span&gt;
	&lt;/div&gt;

&lt;/address&gt;</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.rachaelmoore.name/web-design/microformats/hcard-contact-info/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Site Update Plan</title>
		<link>http://www.rachaelmoore.name/web-design/site-update-plan/</link>
		<comments>http://www.rachaelmoore.name/web-design/site-update-plan/#comments</comments>
		<pubDate>Tue, 18 Mar 2008 21:59:50 +0000</pubDate>
		<dc:creator>Rachael L. Moore</dc:creator>
				<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Rachael L. Moore]]></category>

		<guid isPermaLink="false">http://community.livejournal.com/vr_net/432.html</guid>
		<description><![CDATA[I am making a list of benchmarks for the next redesign of my site&#8211;or, well, the design of any site.  Things to do, things to research, things to improve upon.

Make use of microformats such a hCard, rel-license, and rel-tag: http://microformats.org/
Tagging (Has some flexible SEO applications and is foundation for navigation and searching)
 Facelift with graceful [...]]]></description>
			<content:encoded><![CDATA[<p>I am making a list of benchmarks for the next redesign of my site&#8211;or, well, the design of any site.  Things to do, things to research, things to improve upon.</p>
<ul>
<li>Make use of microformats such a hCard, rel-license, and rel-tag: <a href="http://microformats.org/" target="_blank">http://microformats.org/</a><br />
Tagging (Has some flexible SEO applications and is foundation for navigation and searching)</li>
<li> Facelift with graceful degradation?  <a href="http://www.mikeindustries.com/sifr" target="_blank">http://www.mikeindustries.com/sifr</a>, <a href="http://www.swfir.com/" target="_blank">http://www.swfir.com/</a></li>
<li> Make use of some format, either hResume or XML Resume Library for resumes</li>
<li> Make use of RDF site maps in addition to search engine sitemaps.</li>
<li> Choose an online store platform to create an online store</li>
<li> XFN + links page to make more use of social networking sites</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.rachaelmoore.name/web-design/site-update-plan/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
