<?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/"
	
	xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Just Because You Can...</title>
	<atom:link href="http://logicalthings.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://logicalthings.com/blog</link>
	<description>...is no reason to do anything.</description>
	<lastBuildDate>Wed, 09 May 2012 18:00:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Vendor Prefixes, WODs and the Uncaring Class</title>
		<link>http://logicalthings.com/blog/2012/05/vendor-prefixes-wods-and-the-uncaring-class/</link>
		<comments>http://logicalthings.com/blog/2012/05/vendor-prefixes-wods-and-the-uncaring-class/#comments</comments>
		<pubDate>Wed, 02 May 2012 21:54:12 +0000</pubDate>
		<dc:creator>Art Thompson, Jr.</dc:creator>
				<category><![CDATA[Observations]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[opera]]></category>
		<category><![CDATA[safari]]></category>
		<category><![CDATA[vendor prefixes]]></category>
		<category><![CDATA[webkit]]></category>
		<category><![CDATA[WOD]]></category>

		<guid isPermaLink="false">http://logicalthings.com/blog/?p=355</guid>
		<description><![CDATA[First, let me state that I semi-agree with the sentiment that &#8220;vendor prefixes are hurting the web&#8221; though I&#8217;ve yet to form a more solid opinion—a situation that&#8217;s recently been made worse in the wake of news that Opera will introduce &#8230; <a href="http://logicalthings.com/blog/2012/05/vendor-prefixes-wods-and-the-uncaring-class/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://logicalthings.com/blog/wp-content/uploads/2012/05/opera-safari-mashup.png"><img class="alignright size-full wp-image-368" title="opera-safari-mashup" src="http://logicalthings.com/blog/wp-content/uploads/2012/05/opera-safari-mashup.png" alt="" width="230" height="253" /></a>First, let me state that I semi-agree with the sentiment that &#8220;<a href="http://hsivonen.iki.fi/vendor-prefixes/" target="_blank">vendor prefixes are hurting the web</a>&#8221; though I&#8217;ve yet to form a more solid opinion—a situation that&#8217;s recently been made worse in the wake of news <a href="http://www.netmagazine.com/news/opera-confirms-webkit-prefix-usage-121923" target="_blank">that Opera will introduce support for WebKit CSS prefixes</a>. The argument for this support is that, allegedly, several &#8220;lazy&#8221; web developers are rampantly using only WebKit CSS prefixes (minus even unprefixed versions!), which renders some content ugly and/or unreadable on non-WebKit browsers, which could in turn make it seem like those browsers don&#8217;t work as well as WebKit browsers.</p>
<p>So, let me get this straight, the lazy practices of what are essentially sloppy coders are determining browser feature development? Bring on the zombie apocalypse.</p>
<p><span id="more-355"></span></p>
<p>I would like to thank Ian Devlin for coining the term WOD or <a href="http://www.iandevlin.com/blog/2012/04/css/on-vendor-prefixes-and-wods" target="_blank">WebKit Only Developer</a>. I didn&#8217;t have a simple means of referring to these folks prior to reading his blog post and he&#8217;s encapsulated the defining phrase and off-sounding anagram (nickname) beautifully, IMHO.</p>
<p>All humor aside, I wonder if the apparent issue of WODs isn&#8217;t more of a &#8220;class&#8221; issue, for lack of a better term. As someone who used to be a devout Apple enthusiast (more like separatist), I rarely cared what happened outside of that sphere since I knew in my heart that I was on the &#8220;right&#8221; side of any platform debate. Fortunately, that was back before Apple was a significant player in the browser space, so my superior attitude was a non-issue with regards to web development.</p>
<p>Nowadays, a web designer/developer who is also a Mac OS—and likely iOS—user can conceivably live in a purely Apple environment without even realizing (or caring) that there are other desktop browsers much less mobile ones than what come pre-installed on their aluminum devices. Devlin&#8217;s characterization of WODs as <em>lazy</em> is rather polite, but I&#8217;d say that both the spirit of what they do and the effect they have on the web is plain <em>uncaring</em>.</p>
<p>Again, my use of the term &#8220;class&#8221; in this case is iffy since it implies some form of economic disparity between one group and another. Perhaps it&#8217;s debatable whether <a href="http://www.biztechday.com/67-ios-users-make-200k-100-android-users-are-pc-users/" target="_blank">Apple users have a higher standard of living</a> than non-Apple users, but that&#8217;s mostly beside my point.</p>
<p>Consider the reality that Apple is the new 400lb. gorilla. Its growing market share on desktop and dominance on mobile has allowed it to throw its weight around a bit and web standards have not been immune to this behavior. Combine that with the <a href="http://news.cnet.com/8301-1035_3-57409388-94/iphone-users-android-is-ruining-our-instagram-club/" target="_blank">superiority complex</a> that often accompanies ones acquisition of a Mac OS or iOS device and it&#8217;s less of a stretch to apply the term &#8220;class&#8221; to this scenario.</p>
<p>So then what&#8217;s my point about a so-called &#8220;uncaring class&#8221; that uses only WebKit CSS prefixes? Oh, right. My point is that some developers who work within a highly popular and seemingly ubiquitous ecosystem could be at risk of forgetting the &#8220;other half&#8221; exists or even matters, especially when that ecosystem is unilaterally churning out marketer-approved bells and whistles that are being applied willy-nilly to sites all over the web (this one notwithstanding).</p>
<p>I routinely receive pre-coded <span style="line-height: 24px;">files</span><span style="line-height: 24px;"> </span>from clients (who are apparently WODs) that <span style="line-height: 24px;">either</span><span style="line-height: 24px;"> </span>don&#8217;t validate or simply look like do-do on any other browser because they have only been &#8220;tested&#8221; on Mac OS Safari 5. You tell me, is this behavior lazy or uncaring? I <em>literally</em> had a designer client of mine once ask me, incredulously, after I suggested he do browser testing &#8220;does <em>anyone</em> still use Internet Explorer anymore?!?&#8221; <em>Literally</em>.</p>
<p>And I must wonder, if WODs are ignoring other browser vendors, does that include JAWS screen readers, too? Again, lazy or uncaring?</p>
<p>Well, thanks to Opera&#8217;s recent cave-in, history may or may not prove whether vendor prefixes—specifically those of the WebKit variety—ultimately hurt the web. What is certain is that users of WebKit browsers won&#8217;t likely have noticed.</p>
]]></content:encoded>
			<wfw:commentRss>http://logicalthings.com/blog/2012/05/vendor-prefixes-wods-and-the-uncaring-class/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:thumbnail url="http://logicalthings.com/blog/wp-content/uploads/2012/05/opera-safari-mashup-150x150.png" />
		<media:content url="http://logicalthings.com/blog/wp-content/uploads/2012/05/opera-safari-mashup.png" medium="image">
			<media:title type="html">opera-safari-mashup</media:title>
			<media:thumbnail url="http://logicalthings.com/blog/wp-content/uploads/2012/05/opera-safari-mashup-150x150.png" />
		</media:content>
	</item>
		<item>
		<title>Remove CSS Comments &#8211; Automagically!</title>
		<link>http://logicalthings.com/blog/2012/03/remove-css-comments-automagically/</link>
		<comments>http://logicalthings.com/blog/2012/03/remove-css-comments-automagically/#comments</comments>
		<pubDate>Mon, 05 Mar 2012 19:54:45 +0000</pubDate>
		<dc:creator>Art Thompson, Jr.</dc:creator>
				<category><![CDATA[Observations]]></category>
		<category><![CDATA[Technicalities]]></category>

		<guid isPermaLink="false">http://logicalthings.com/blog/?p=314</guid>
		<description><![CDATA[I&#8217;ve shared this info via email and Twitter, but have yet to blog about it, so here goes: First, I LOVE using and finding comments in HTML and CSS markup. Since 1993, I&#8217;ve learned almost all that I know about &#8230; <a href="http://logicalthings.com/blog/2012/03/remove-css-comments-automagically/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-320" title=" " src="http://logicalthings.com/blog/wp-content/uploads/2012/03/dw-comments1.png" alt="Dreamweaver CSS comments" width="684" height="242" /></p>
<p><em>I&#8217;ve shared this info via email and Twitter, but have yet to blog about it, so here goes:</em></p>
<p>First, I LOVE using and finding comments in HTML and CSS markup. Since 1993, I&#8217;ve learned almost all that I know about web development by viewing source and then later inspecting elements of other peoples pages. While the detective work required by uncommented code proved a great teacher, those comments proved a great time-saver. Not to mention the fact that they&#8217;re critical in a multi-user work environment. Nevertheless, there <span style="line-height: 24px;">can</span><span style="line-height: 24px;"> </span>definitely be too much of a good thing.</p>
<p><span id="more-314"></span>Anyone who&#8217;s used Adobe Dreamweaver&#8217;s  built-in boilerplate New Document templates has surely found the HTML and CSS comments—especially in their CSS files—to be rather, um,  verbose. I once posted my opinion on an Adobe user forum and suggested that there needed to be a simple Preferences checkbox to turn these on and off. I actually received a reply by a forum &#8216;superuser&#8217; who insisted that this was merely Adobe&#8217;s way of &#8220;introducing DW users to HTML markup&#8221; (and presumably the code view in as well?) to make us feel more comfortable with hand coding. I kid you not. I most certainly replied with a completely sarcastic response and probably hurt his feelings a bit in the process, but it needed to be done.</p>
<p>To this day, no matter how well you understand CSS, you cannot suppress those helpful <span style="color: #800000;">/*comments*/</span> from appearing within your DW files—and chewing up bandwidth and increasing your page weight in the process. The obvious solution here would be to create my own boilerplate templates for various layouts and simply use those as starting points. Well, that&#8217;s a lot of work once you think about the various permutations of column layouts, headers, footers, etc. and I&#8217;m always way busy with work-work to even begin such a project. Enter stored queries.</p>
<p>Several hours of Googling various keyword variations and scouring the resulting sites eventually led me to David Powers&#8217; <strong>Foundation PHP</strong> website and in particular to his blog post <em><a title="external link: Stored Query to Remove CSS Comments" href="http://foundationphp.com/tools/css_comments.php" target="_blank">Stored Query to Remove CSS Comments</a></em>. Bingo. Complete usage instructions are in his blog post, but the gist is this: Download and save his css_comment_remover_v3.dwr file to your desktop (for easy access). Then, with your heavily commented CSS file open, click CTRL-F/CMD-F, click the &#8216;Load Query&#8217; button and select his stored query, then click &#8216;Replace All.&#8217; Done.</p>
<p>Two things I should note:</p>
<ol>
<li>This stored query works with any CSS file using the standard /*comment*/ tags.</li>
<li>THIS WILL REMOVE ALL OF YOUR CSS COMMENTS.</li>
</ol>
<p>So, obviously, do this once at the beginning and then go back and add your own comments where necessary and continue to do so along the way.</p>
<p>CSS comments are good.<br />
CSS Comments are necessary.<br />
CSS Comments are no place for entire HTML/CSS tutorials.</p>
<p>Thanks for listening.</p>
]]></content:encoded>
			<wfw:commentRss>http://logicalthings.com/blog/2012/03/remove-css-comments-automagically/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:thumbnail url="http://logicalthings.com/blog/wp-content/uploads/2012/03/dw-comments1-150x150.png" />
		<media:content url="http://logicalthings.com/blog/wp-content/uploads/2012/03/dw-comments1.png" medium="image">
			<media:title type="html">dw-comments1</media:title>
			<media:thumbnail url="http://logicalthings.com/blog/wp-content/uploads/2012/03/dw-comments1-150x150.png" />
		</media:content>
	</item>
		<item>
		<title>HTML Email Presentation Slides</title>
		<link>http://logicalthings.com/blog/2012/02/html-email-presentation-slides/</link>
		<comments>http://logicalthings.com/blog/2012/02/html-email-presentation-slides/#comments</comments>
		<pubDate>Wed, 01 Feb 2012 20:41:46 +0000</pubDate>
		<dc:creator>Art Thompson, Jr.</dc:creator>
				<category><![CDATA[Technicalities]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[e-mail]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[presentations]]></category>

		<guid isPermaLink="false">http://logicalthings.com/blog/?p=309</guid>
		<description><![CDATA[Below are my slides from the &#8220;HTML Email: Coding Like It&#8217;s 1999&#8243; presentation I gave at Refresh Austin in February of 2011: HTML Email: Coding Like It&#8217;s 1999 View more presentations from Art Thompson Jr.]]></description>
			<content:encoded><![CDATA[<p>Below are my slides from the &#8220;HTML Email: Coding Like It&#8217;s 1999&#8243; presentation I gave at <a href="http://www.refreshaustin.org/" target="_blank">Refresh Austin</a> in February of 2011:</p>
<div id="__ss_8318530" style="width: 425px;"><strong style="display: block; margin: 12px 0 4px;"><a title="HTML Email: Coding Like It's 1999" href="http://www.slideshare.net/artthompsonjr/html-email-coding-like-its-1999-8318530" target="_blank">HTML Email: Coding Like It&#8217;s 1999</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/8318530" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="425" height="355"></iframe></p>
<div style="padding: 5px 0 12px;">View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/artthompsonjr" target="_blank">Art Thompson Jr.</a></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://logicalthings.com/blog/2012/02/html-email-presentation-slides/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
	</item>
		<item>
		<title>5 Free Web-Based Design and Development Tools I Actually Use</title>
		<link>http://logicalthings.com/blog/2011/08/5-free-web-based-design-and-development-tools/</link>
		<comments>http://logicalthings.com/blog/2011/08/5-free-web-based-design-and-development-tools/#comments</comments>
		<pubDate>Fri, 19 Aug 2011 01:07:40 +0000</pubDate>
		<dc:creator>Art Thompson, Jr.</dc:creator>
				<category><![CDATA[Technicalities]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[development tools]]></category>
		<category><![CDATA[e-mail]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[fonts]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[web fonts]]></category>

		<guid isPermaLink="false">http://logicalthings.com/blog/?p=260</guid>
		<description><![CDATA[We web folks are using web-based design and development tools within our workflow more and more each day. Working in this often challenging and dynamic environment is frequently made easier by the kindness of strangers in the form of freely-available tools and &#8230; <a href="http://logicalthings.com/blog/2011/08/5-free-web-based-design-and-development-tools/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-268" title="cursor" src="http://logicalthings.com/blog/wp-content/uploads/2011/08/cursor1.png" alt="Web-Based Development Tools" width="118" height="153" />We web folks are using web-based design and development tools within our workflow more and more each day. Working in this often challenging and dynamic environment is frequently made easier by the kindness of strangers in the form of freely-available tools and resources. Well, as a small way of saying &#8220;thanks for making today easier,&#8221; I&#8217;d personally like to tout some extremely helpful web-based tools I use on a weekly, if not daily, basis. Below are my current top 5—in no particular order (since they&#8217;re all #1).</p>
<p><span id="more-260"></span>Note: I&#8217;ve decided to let these apps speak for themselves by including descriptions that I pulled directly from their respective websites.</p>
<h3>FFFFALLBACK</h3>
<p>&#8220;Web fonts are here, sparking an exciting new era in web design. FFFFALLBACK makes it easy to find the perfect fallback fonts, so that your designs degrade gracefully.&#8221; — <a href="http://ffffallback.com/" target="_blank">www.ffffallback.com</a></p>
<h3>Fractal</h3>
<p>&#8220;See exactly which lines of code are not supported in over 24 email clients. Email designers that are tired of trawling through check lists, this is for you.&#8221; — <a href="http://getfractal.com/" target="_blank">www.getfractal.com</a></p>
<h3>MIN</h3>
<p>&#8220;MIN is a bookmarklet that will strip any decoration from a site. All color, borders and backgrounds are removed instantly, helping you identify the successful and unsuccessful uses of typography and layout.&#8221; — <a href="http://min.artequalswork.com/">min.artequalswork.com</a></p>
<h3>QuirksMode</h3>
<p>&#8220;QuirksMode.org is the home of the Browser Compatibility Tables, where you’ll find hype-free assessments of the major browsers’ CSS and JavaScript capabilities, as well as their adherence to the W3C standards.&#8221; — <a href="http://www.quirksmode.org/">www.quirksmode.org</a></p>
<h3>Smush.it</h3>
<p>&#8220;Smush.it uses optimization techniques specific to image format to remove unnecessary bytes from image files. It is a &#8220;lossless&#8221; tool, which means it optimizes the images without changing their look or visual quality.&#8221; — <a href="http://www.smushit.com/ysmush.it/">www.smushit.com/ysmush.it</a></p>
<p>Of course there are other superb (and also free) web-based design and development tools out there with many more being created every day. Lucky us. I will certainly share more of my favorites with you in future posts. But, if you use web-based tools to help solve your development and design mysteries, please let others know by Tweeting or blogging about them and thanking their authors publicly. After all, no one&#8217;s getting <em>monetarily</em> rich by making all that ingenuity and hard work available for free. But a little gratitude can be worth ten times its weight in gold.</p>
]]></content:encoded>
			<wfw:commentRss>http://logicalthings.com/blog/2011/08/5-free-web-based-design-and-development-tools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:thumbnail url="http://logicalthings.com/blog/wp-content/uploads/2011/08/cursor1-118x150.png" />
		<media:content url="http://logicalthings.com/blog/wp-content/uploads/2011/08/cursor1.png" medium="image">
			<media:title type="html">cursor</media:title>
			<media:thumbnail url="http://logicalthings.com/blog/wp-content/uploads/2011/08/cursor1-118x150.png" />
		</media:content>
	</item>
		<item>
		<title>Gotham-Light Ain&#8217;t a Web Font</title>
		<link>http://logicalthings.com/blog/2011/05/gotham-light-aint-a-web-font/</link>
		<comments>http://logicalthings.com/blog/2011/05/gotham-light-aint-a-web-font/#comments</comments>
		<pubDate>Wed, 25 May 2011 04:01:00 +0000</pubDate>
		<dc:creator>Art Thompson, Jr.</dc:creator>
				<category><![CDATA[Observations]]></category>
		<category><![CDATA[Technicalities]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[fonts]]></category>
		<category><![CDATA[web fonts]]></category>

		<guid isPermaLink="false">http://logicalthings.com/blog/?p=205</guid>
		<description><![CDATA[Here&#8217;s something peculiar I came across recently: On the left is what I saw in Chrome and on the right is what I saw in Chrome after I&#8217;d deleted &#8216;Gotham-Light&#8217; from the beginning of that page&#8217;s &#60;body&#62; font stack within &#8230; <a href="http://logicalthings.com/blog/2011/05/gotham-light-aint-a-web-font/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Here&#8217;s something peculiar I came across recently:</p>
<p><img class="alignnone size-full wp-image-207" title="gotham-light" src="http://logicalthings.com/blog/wp-content/uploads/2011/05/gotham-light1.png" alt="" width="684" height="242" /></p>
<p>On the left is what I saw in Chrome and on the right is what I saw in Chrome after I&#8217;d deleted &#8216;Gotham-Light&#8217; from the beginning of that page&#8217;s &lt;body&gt; font stack within the Chrome Web Inspector. Actually, there were a couple of linked CSS files on this page competing for control over which font the browser should use to display text. Here&#8217;s what I saw:</p>
<p><span id="more-205"></span></p>
<pre>body {
     color: #999999;
     font-family: 'Gotham-Light', Helvetica, Verdana, sans-serif;
     font-size: 10pt;
}</pre>
<p>followed by:</p>
<pre>body {
     font: 13px/1.231 arial,helvetica,clean,sans-serif;
}</pre>
<p>Now, I won&#8217;t even comment on what&#8217;s wrong with that second body style—just don&#8217;t meditate on it too long or your brain will come pouring out your nose.</p>
<p>The first one, however, I <em>will </em>go off on. First, who would think that a good fall-back font for Helvetica is Verdana but someone who couldn&#8217;t tell the two apart? I submit that such a person should not be specifying typefaces—anywhere. Second, if you&#8217;re going to use standard OS fonts (meaning you&#8217;re not using a webfont technology like <a href="http://typekit.com" target="_blank">TypeKit</a>, <a href="http://fontdeck.com/" target="_blank">FontDeck</a> or the <a href="http://www.google.com/webfonts" target="_blank">Google Font API</a>), why not ensure that everyone is seeing the same one by specifying a good ol&#8217; Core Font for the Web <em>first</em> such as Verdana, Arial, Georgia, etc? These come installed on both Mac and Win PCs by default, right? Well, I&#8217;ll tell you which font doesn&#8217;t come installed by default on any PC running any OS: <em>Gotham-Light</em>.</p>
<p>I happen to be one of the random individuals this web developer was fishing for when he/she specified Gotham-Light as the primary font-family for this website. The particular version I have installed on my Win 7 PC is an old postscript font I purchased eons ago from <a href="http://www.typography.com/" target="_blank">Hoefler Frere-Jones</a> (along with a few other of their exquisitely designed typefaces) back when I was an active print designer.  The Gotham family is permanently activated as I often find use for it when no other sans-serif font seems to do the trick.</p>
<p>In any case, the font&#8217;s postscript code used to create the character shapes and spacing was never intended for entirely accurate (much less beautiful) representation on computer displays and the screenshot on the left shows why. Actually, on my Win 7 PC, only Chrome and Safari displayed the text in Gotham-Light, albeit poorly. IE 9 and Firefox 4 simply ignored it.</p>
<p>Mind you, this is no <del datetime="2012-02-17T21:39:11+00:00">amature</del> amateur website. It is for a major consumer brand with an extensive online presence. We&#8217;ve all got dirty laundry, I guess. But, I come across font-failures like this one fairly often and I just have to question the initial logic that created them.</p>
<p>And there I went.</p>
]]></content:encoded>
			<wfw:commentRss>http://logicalthings.com/blog/2011/05/gotham-light-aint-a-web-font/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:thumbnail url="http://logicalthings.com/blog/wp-content/uploads/2011/05/gotham-light1-150x150.png" />
		<media:content url="http://logicalthings.com/blog/wp-content/uploads/2011/05/gotham-light1.png" medium="image">
			<media:title type="html">gotham-light</media:title>
			<media:thumbnail url="http://logicalthings.com/blog/wp-content/uploads/2011/05/gotham-light1-150x150.png" />
		</media:content>
	</item>
		<item>
		<title>More Notes on Coding HTML for Email</title>
		<link>http://logicalthings.com/blog/2011/04/more-notes-on-coding-html-for-email/</link>
		<comments>http://logicalthings.com/blog/2011/04/more-notes-on-coding-html-for-email/#comments</comments>
		<pubDate>Thu, 14 Apr 2011 23:46:01 +0000</pubDate>
		<dc:creator>Art Thompson, Jr.</dc:creator>
				<category><![CDATA[Technicalities]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[e-mail]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[Hotmail]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Outlook]]></category>

		<guid isPermaLink="false">http://logicalthings.com/blog/?p=188</guid>
		<description><![CDATA[[First, don't yell at me—I know HTML is a markup language. But, until a better term/phrase comes along than "marking-up" this is what you're getting. Anyway, on to the topic at hand...] Since publishing my tome, HTML Email: Coding Like &#8230; <a href="http://logicalthings.com/blog/2011/04/more-notes-on-coding-html-for-email/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<blockquote><p>[First, don't yell at me—I know HTML is a markup language. But, until a better term/phrase comes along than "marking-up" this is what you're getting. Anyway, on to the topic at hand...]</p></blockquote>
<p>Since publishing my tome, <a href="http://logicalthings.com/blog/technicalities/html-email-coding-like-its-1999/">HTML Email: Coding Like It&#8217;s 1999</a><span>, and subsequently presenting the same topic at <a href="http://www.refreshaustin.org/" target="_blank">Refresh Austin</a> I&#8217;ve been jotting down notes and tips about specific issues that I encounter daily while working on <span>eblasts</span> and newsletters. I thought I&#8217;d post them here in no particular order and keep doing so over time as a sort of repository. Since the best way to find anything on the web these days is search, I thought merely posting them was enough. Everyone knows how to </span><em><span><span>ctrl</span>-F</span></em> or <em><span><span>cmd</span>-F</span></em>, right? Well, if this list gets too long, perhaps then I&#8217;ll address its structure and order. In the meantime, here we go!</p>
<p><span id="more-188"></span></p>
<h3>Line-Height</h3>
<p>Avoid using <strong>em</strong><span> as a unit of measure here. A few tests on Outlook 2007 and certain <span>Hotmail</span> clients revealed that these were largely ignored thus collapsing or expanding the line-heights to the clients&#8217;/browsers&#8217; defaults. <span>Fugly</span> to say the least. Instead, use the less-accessible but universally-reliable </span><strong><span><span>px</span></span></strong> value and everything will look the same across all platforms.</p>
<h3>TD Background Colors</h3>
<p>Double-up on these as a fall-back, meaning use both the <strong>td</strong>&#8216;s <strong><span><span>bgcolor</span></span></strong><span> attribute as well as an <span>inline</span> </span><strong>style</strong> tag with a <strong>background-color</strong> attribute within your <strong><span><span>td</span></span></strong> tag. One of these is bound to work in every possible platform.</p>
<h3>Zap Gremlins</h3>
<p>No, not the wet, overfed Mogwai you&#8217;re thinking of. I&#8217;m talking about those mis-encoded characters you get from copying and pasting text out of PDF and PSD files that make bizarre characters show up in your eblast copy. Since losing use of my favorite text editor, <a href="http://www.barebones.com/products/bbedit/index.html" target="_blank">BBEdit</a>, after parting ways with Apple back in 1997 and switching to the now-debatable &#8220;dark side,&#8221; I haven&#8217;t found a better way of dealing with these other than doing a Dreamweaver find/replace on the usual suspects: curly quotes (”), apostrophes (’), hard returns in PSDs, registration marks (®), copyright symbols (©) and trademarks (™) just to name a few. Unfortunately the &#8220;paste from Word&#8221; feature in your favorite editor doesn&#8217;t always do the trick and often makes things worse if your text isn&#8217;t coming from Word.  There&#8217;s also the trick of copying from a PDF/PSD file, pasting into a blank Word doc, copying that and then trying &#8220;paste from Word,&#8221; but that might screw up some other things that were displaying/encoding fine. Just be diligent and test on the worst possible scenarios (Outlook 2003 or Lotus Notes 7 on Win XP?) where these badboys are likely to all be lurking.</p>
<h3>Centering</h3>
<p>Centering your document has one major benefit in that it gets your beautifully designed eblast or newsletter away from the ugly crap that&#8217;s in the left and/or right sidebars of webmail clients like Hotmail, Yahoo! Mail, AOL Mail and Gmail, surrounding it with white space or that of your specified background color (I&#8217;ll post something about that at a later date). AOL, for example has left and right sidebars turned on by default. Do you really want your handiwork pressed up against those beauties? Center your layout&#8217;s main table using these two seemingly redundant methods:</p>
<ol>
<li>Set your <strong>table</strong> tag&#8217;s <strong>align</strong> value to &#8220;center&#8221;</li>
<li>Wrap your main table in a container div—old school—style, like <strong>div align=&#8221;center&#8221;</strong></li>
</ol>
<p>Doubling-up will ensure your main table will be centered across all platforms. And what&#8217;s the harm in centering something that&#8217;s already centered?</p>
<h3>Width &lt; 700px</h3>
<p>As I mentioned before, AOL has left and right sidebars turned on by default that take up around 400px of screen real estate. On a 1024&#215;768 display, provided the browser is full-screen, you&#8217;re left with 624px&#8211;not including the browsers edges &amp; scroll bar or any padding/margins that webmail clients add to the main email content area. As of March 2011, <a href="https://netaverages.adobe.com/en-us/index.html" target="_blank">Adobe SiteCatalyst Netaverages</a> shows around 21% of their captured web users&#8217; data have display resolutions of 1024px or less. <a href="http://gs.statcounter.com/" target="_blank">StatCounter</a> reports 26% of worldwide users. That ain&#8217;t no IE6 brush-off number. That&#8217;s <strong>one in four</strong> users. In my daily workflow, I shoot for 700px-wide maximum, keeping the important content well away from the edges.</p>
<h3>Cellpadding vs Padding</h3>
<p>Let&#8217;s say you have a block of text with white type knocked out of a blue background like this:</p>
<p style="color: white; background-color: blue; display: inline; padding: 15px; margin-bottom: 15px;">this is some text.</p>
<p>&nbsp;</p>
<p>You might be inclined to simply apply 15px of padding to your paragraph tag along with the appropriate font and background colors like so:</p>
<pre>&lt;p style="color: white; background-color: blue; padding-top: 15px; padding-right: 15px;
padding-bottom: 15px; padding-left: 15px; margin-top: 0px; margin-right: 0px;
margin-bottom: 0px; margin-left: 0px; display: inline;"&gt;this is some text.&lt;/p&gt;</pre>
<p>Well, when your boss gets your beautifully-coded newsletter in his/her inbox using either Outlook 2007 or 2010 it will look like this:</p>
<p><a href="http://logicalthings.com/blog/wp-content/uploads/2011/04/padding.gif"><img class="alignnone size-full wp-image-199" title="padding" src="http://logicalthings.com/blog/wp-content/uploads/2011/04/padding.gif" alt="" width="600" height="19" /></a></p>
<p>Padding and margins are some of the least predictable CSS attributes when dealing with Outlook from any era. Instead of taking the easy way, wrap your text in a table—yes, a table—and let the table&#8217;s tried and true cellpadding attribute do the magic like so:</p>
<pre>&lt;table border="0" cellpadding="15" cellspacing="0"
style="background-color: blue;"&gt;
&lt;tr&gt;
&lt;td&gt;&lt;p style="color: white; padding-top: 0px; padding-right: 0px; padding-bottom: 0px;
padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px;
margin-left: 0px;"&gt;this is some text.&lt;/p&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;</pre>
<p>It will look the same in practically every email client/browser and in the end that&#8217;s all that matters.</p>
<h3>Overriding Minimum Font Sizes in iOS devices</h3>
<p>If you&#8217;ve ever tested your copy-heavy newsletters on an iPhone or iPad then you&#8217;ve surely seen your layout and proportions go down the toilet. Problem, the default minimum font size on an iOS device is 13px and you&#8217;ve likely got fonts sized smaller than that (likely for good reason). One possible solution: target those devices using <a href="http://www.campaignmonitor.com/blog/post/3339/save-your-layout-by-overriding-the-minimum-font-size-on-the-iphone-and/" target="_blank">this technique described by Ros Hodgekiss on Campaign Monitor&#8217;s blog</a>.  Keep in mind that this could affect other webkit-based browsers such as Safari on the desktop (as pointed out by Johnathan Snook in the comments). It&#8217;s probably a good idea to use these along with an <a href="http://www.campaignmonitor.com/blog/post/3163/optimizing-your-emails-for-mobile-devices-with-media/" target="_blank">@media query to target only those devices</a> with minimum font size issues.  Another solution: Simply design your email in a way that your minimum font size is 13px. &#8216;Nuff said.</p>
]]></content:encoded>
			<wfw:commentRss>http://logicalthings.com/blog/2011/04/more-notes-on-coding-html-for-email/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:thumbnail url="http://logicalthings.com/blog/wp-content/uploads/2011/04/padding-150x19.gif" />
		<media:content url="http://logicalthings.com/blog/wp-content/uploads/2011/04/padding.gif" medium="image">
			<media:title type="html">padding</media:title>
			<media:thumbnail url="http://logicalthings.com/blog/wp-content/uploads/2011/04/padding-150x19.gif" />
		</media:content>
	</item>
		<item>
		<title>SXSW 2011 Wrap-Up</title>
		<link>http://logicalthings.com/blog/2011/03/sxsw-2011-wrap-up/</link>
		<comments>http://logicalthings.com/blog/2011/03/sxsw-2011-wrap-up/#comments</comments>
		<pubDate>Fri, 18 Mar 2011 00:09:54 +0000</pubDate>
		<dc:creator>Art Thompson, Jr.</dc:creator>
				<category><![CDATA[Observations]]></category>
		<category><![CDATA[2011]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Outlook]]></category>
		<category><![CDATA[sxsw]]></category>

		<guid isPermaLink="false">http://logicalthings.com/blog/?p=165</guid>
		<description><![CDATA[SXSW Interactive 2011 is finally over and I&#8217;m once again sifting through a stack of biz cards, stickers and miscellaneous scraps of paper with email addresses and twitter handles scribbled on them.  Once again I&#8217;m weighing the cost of entrance, &#8230; <a href="http://logicalthings.com/blog/2011/03/sxsw-2011-wrap-up/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-166" title="sxsw2011logo" src="http://logicalthings.com/blog/wp-content/uploads/2011/03/sxsw2011logo.jpg" alt="" width="167" height="250" /><strong>SXSW Interactive 2011 is finally over</strong> and I&#8217;m once again sifting through a stack of biz cards, stickers and miscellaneous scraps of paper with email addresses and twitter handles scribbled on them.  Once again I&#8217;m weighing the cost of entrance, the interruption of several days of work and the physical toll of all-day conferences followed by all-night schmoozing. My overall gut reaction is that SXSW 2011 felt like a much better organized experience than last year&#8217;s conference. Perhaps it&#8217;s because the organizers managed to keep related panels and speakers closer to one another to minimize the amount of walking one had to do. Perhaps it&#8217;s because I was more diligent in planning my days. Either way, this year was MUCH more &#8220;worth it&#8221; than last.</p>
<blockquote><p>One caveat here is that I&#8217;m not going to mention the panels that I missed because there were easily twice the number of folks wishing to hear them than could fit into the tiny rooms in which they were held. SXSW conference organizers need to do a better job of anticipating what we attendees want to know. Too many interesting topics overflowed while other, less exciting ones looked silly in those cavernous halls only a quarter-full.</p></blockquote>
<p><span id="more-165"></span></p>
<h2>Highlights</h2>
<p>The conference officially kicked off for me on Friday night with the dual-boot event at the Austin Music Hall featuring <a href="http://dorkbot.org/dorkbotaustin/" target="_blank">Dorkbot</a> and <strong>Ignite SXSW &#8211; 2021 Vision of the Future</strong>. I&#8217;m a fan of the hit-or-miss, Pecha Kucha-style micro-presentation format and <a href="http://www.igniteaustin.org/" target="_blank">Ignite Austin</a> has consistently done a great job of sifting through and finding interesting topics &amp; presenters. For me, the most notable speakers on this night were <a href="http://cloudfab.com/" target="_blank">Nick Pinkston</a> (2021: Hardware is the New Software) and <a href="http://www.stepthreeprofit.com/" target="_blank">Brandon Wiley</a> (The State of Free Speech Online in 2021). Pinkston&#8217;s 2021 was wrought with open source hardware and digital manufacturing where &#8220;makers” build physical hardware as agile as software. Wiley&#8217;s 2021 still had us raging against totalitarian regimes, but this time with such high-tech tools of democratic communication as laser modems and non-networked WiFi sync stations for &#8220;bike-net&#8221; couriers. I feel better already.</p>
<p>As for the official SXSW panels and speakers I heard:</p>
<p><a href="http://www.subtraction.com/" target="_blank">Khoi Vinh</a>&#8216;s &#8221;<strong>Ordering Disorder: Grid Design for the New World</strong>&#8221; was a nice refresher course on the importance of grids and proportion in web design. As the former Design Director for NYTimes.com he knows a thing or two about grid layouts. The presentation mostly contained content and visuals from his excellent New Riders book <em><a href="http://www.subtraction.com/2010/11/05/i-wrote-a-book" target="_blank">Ordering Disorder: Grid Principles for Web Design</a></em>, which is in my Nook eBook wishlist.</p>
<p>&#8220;<strong><a href="http://schedule.sxsw.com/events/event_IAP6925" target="_blank">It&#8217;s Nature&#8217;s Way: Innovative Tech Design Through Biomimicry</a></strong>&#8221; was an informative panel discussion on the ongoing pursuit of studying patterns in nature and how we can design better products and systems based on millions of years of evolutionary &#8220;design.&#8221;</p>
<p><strong><a href="http://schedule.sxsw.com/events/event_IAP6628" target="_blank">Drawing Back the Curtains on CSS Implementation</a></strong> painted a frustratingly hopeful vision of the current and near-future state of CSS browser implementation from some of the top folks literally wrestling with submissions and standards—namely Opera&#8217;s <a href="http://mollydotcom.tumblr.com/" target="_blank">Molly Holzschlag</a>, W3C/Mozilla&#8217;s <a href="http://fantasai.inkedblade.net/" target="_blank">Elika Etemad</a>, Microsoft&#8217;s <a href="http://twitter.com/sgalineau" target="_blank">Sylvain Galineau</a> and Google&#8217;s <a href="http://twitter.com/tabatkins" target="_blank">Tab Atkins</a>.</p>
<p>Keynote interview with <em>The Guild</em> creator and star, <a href="http://feliciaday.com/" target="_blank">Felicia Day</a>, provided some valuable insight and advice for anyone who is thinking of producing content and one day turning pro. Her no-compromise approach has yielded innovative content, satisfied sponsors, obsessed fans and ultimately the freedom that every creative individual desires.</p>
<p><a href="http://bokardo.com/" target="_blank">Joshua Porter</a>&#8216;s &#8220;<strong>Metrics-Driven Design</strong>&#8221; didn&#8217;t have a sexy title, but delivered intelligent, usable action items that designers can use to deal with research-driven cultures&#8217; (both marketing- and engineering-based) demands for quantifying and qualifying otherwise aesthetic design choices. Did Google really bucket test their blue link color 41 times before settling on #2200c1? You bet your hex values they did. Did it really make that big of a difference? Bing&#8217;s UX Manager Paul Ray allegedly claimed their blue (#0044cc) was worth some $80 Million per year in additional clicks. Some of that better have trickled down to the design department. <a href="http://www.slideshare.net/andrew_null/metrics-driven-design-by-joshua-porter" target="_blank">His preso has been uploaded to Slideshare here.</a></p>
<p>I DON&#8217;T think I&#8217;ll be standing in such a ridiculously long line for another &#8220;<strong>Interactive Opening Party presented by frog design</strong>.&#8221;</p>
<p>The panel &#8220;<strong><a href="http://schedule.sxsw.com/events/event_IAP6358" target="_blank">No Excuse: Web Designers Who Can&#8217;t Code</a></strong>&#8221; promised to be a heated and insightful debate, but instead dragged on and never fully hit its stride primarily due, in my opinion, to the panel moderator—Rdio&#8217;s Wilson Miner—and his &#8220;I really need some coffee or a bloody mary to get through this day&#8221; demeanor. Not to mention his Ira Glass homage which sort of fell flat. Additionally, the panelists&#8217; intros went on a bit longer than necessary. None of this contributed to the panel&#8217;s promising title. Oh, well.</p>
<p>&#8220;<strong>Jeffrey Zeldman&#8217;s Awesome Internet Design Panel</strong>&#8221; was as much a discussion on the state of publishing as the state of website design. <a href="http://www.zeldman.com/" target="_blank">Zeldman</a> asked &#8220;How many of you work in publishing?&#8221; then &#8220;How many of you make websites?&#8221; followed by the remark &#8220;You&#8217;re all publishers.&#8221; It seemed an apt bend to the conversation given that seated to his left was publication design veteran <a href="http://rogerblack.com/" target="_blank">Roger Black</a> who currently has his hands full with the HTML5 publishing platform <a href="http://treesaver.net/" target="_blank">Treesaver</a> among other things. Also on the panel were the well-known designer/author Dan Mall as well as TypeKit&#8217;s Mandy Brown, whose <em><a href="http://aworkinglibrary.com/" target="_blank">A Working Library</a></em> is as desirable a reading list as you&#8217;re likely to come across.</p>
<p><a href="http://www.wipconnector.com/new" target="_blank">Carlo Longino</a>&#8216;s &#8220;<strong>User Experience and Cross Platform App Development</strong>&#8221; was one of those presentations that I wish I had the Slideshare link to. The info was fast and relevant and I wish I&#8217;d taken more notes!</p>
<p><a href="http://whurley.com/" target="_blank">whurley</a>&#8216;s blandly titled &#8220;<strong>Designing for iPhone</strong>&#8221; presentation was an entertaining and informative Q&amp;A from the get-go. What more apt format would fit a solo presentation given by one of the <a href="http://www.chaoticmoon.com/" target="_blank">more successful iOS app developers</a> around? &#8220;Design for the intended device&#8221; was more or less the takeaway. People pay a lot for a particular device and app developers should give them an appropriate experience. I was hoping for an HTML5 &#8220;write once, run anywhere&#8221; answer to be perfectly honest.</p>
<p>The debate-style panel &#8220;<strong>Real Tech Rockstars: Engineers or Designers?</strong>&#8221; was often in danger of becoming an infomercial for the <a href="http://www.mint.com/" target="_blank">Mint</a> app. But moderator and Fortune senior writer, Jessi Hempel, managed to keep Mint founder and developer, Aaron Patzer, and former Mint lead designer, Jason Putorti, on point as they argued the virtues of user-centered design versus problem-based development. The outcome was—no big surprise here—that there needs to be a good balance of the two with an eye on the prize of developing a useful and usable product that customers love. Amen, brothers and sisters.</p>
<p>And, finally, there was the conference-closing &#8220;<strong>Steve Krug Explains It All for You</strong>&#8221; where the title pretty much said it all. Mr. <a href="http://www.sensible.com/" target="_blank">Krug</a> is one of the most respected usability nerds and has been championing the cause with such must-read books as <em>Don&#8217;t Make Me Think</em> and the more recent <em>Rocket Surgery Made Easy: The Do-It-Yourself Guide to Finding and Fixing Usability Problems</em>. No matter what it is you &#8220;make&#8221; you can always learn something from hearing Krug speak about the cyclical process of usability testing.</p>
<h2>Unofficially&#8230;</h2>
<p>One of the greatest benefits of SXSW Interactive is the access it provides to all of the folks who make the tools and cull the information I rely on on a daily basis to get my work done. Where/when else would I be able to—on the same day—pick <a href="http://paulirish.com/" target="_blank">Paul Irish</a>&#8216;s brain about Chrome&#8217;s dev tools, ask <a href="http://automattic.com/about/" target="_blank">Barry Abrahamson</a> why you can&#8217;t preview pages with alternate templates in WordPress, find out why Outlook 2010 email images are frequently blocked from <a href="http://litmus.com/" target="_blank">Matthew Brindley</a> of Litmus and thank <a href="http://chriscoyier.net/" target="_blank">Chris Coiyer</a> and <a href="http://www.netmagazine.com/" target="_blank">Dan Oliver</a> for all of that useful info that&#8217;s helped me out of numerous jams?</p>
<p>Maybe I&#8217;ll be back next year.</p>
]]></content:encoded>
			<wfw:commentRss>http://logicalthings.com/blog/2011/03/sxsw-2011-wrap-up/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:thumbnail url="http://logicalthings.com/blog/wp-content/uploads/2011/03/sxsw2011logo-150x150.jpg" />
		<media:content url="http://logicalthings.com/blog/wp-content/uploads/2011/03/sxsw2011logo.jpg" medium="image">
			<media:title type="html">sxsw2011logo</media:title>
			<media:thumbnail url="http://logicalthings.com/blog/wp-content/uploads/2011/03/sxsw2011logo-150x150.jpg" />
		</media:content>
	</item>
		<item>
		<title>HTML Email: Coding Like It&#8217;s 1999</title>
		<link>http://logicalthings.com/blog/2011/01/html-email-coding-like-its-1999/</link>
		<comments>http://logicalthings.com/blog/2011/01/html-email-coding-like-its-1999/#comments</comments>
		<pubDate>Thu, 06 Jan 2011 07:10:08 +0000</pubDate>
		<dc:creator>Art Thompson, Jr.</dc:creator>
				<category><![CDATA[Technicalities]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[e-mail]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[Gmail]]></category>
		<category><![CDATA[Hotmail]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[Outlook]]></category>
		<category><![CDATA[Yahoo Mail]]></category>

		<guid isPermaLink="false">http://logicalthings.com/blog/?p=75</guid>
		<description><![CDATA[Okay, why HTML Email? Doesn&#8217;t it seem you&#8217;re constantly having to design and/or code more and more eblasts and newsletters? Didn&#8217;t you, at first, agree with the marketing folks that it&#8217;s a total no-brainer and that you could knock it &#8230; <a href="http://logicalthings.com/blog/2011/01/html-email-coding-like-its-1999/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<h3>Okay, why HTML Email?</h3>
<ul>
<li>Doesn&#8217;t it seem you&#8217;re constantly having to design and/or code more and more eblasts and newsletters?</li>
<li>Didn&#8217;t you, at first, agree with the marketing folks that it&#8217;s a total no-brainer and that you could knock it out after lunch?</li>
<li>Didn&#8217;t you once hastily &#8220;yes&#8221; the salesperson who asked if they could just send out your coded eblast to their list through Outlook?</li>
<li>Didn&#8217;t that beautifully designed eblast consisting of a single, embedded JPEG yield the lowest clicks and the highest unsubscribe numbers to date?</li>
<li>Doesn&#8217;t it seem way more complicated than it need be?</li>
</ul>
<p>Welcome to the wonderfully frustrating world of HTML Email. And welcome to <strong><span style="color: #800080;">1999</span></strong>.</p>
<p><span id="more-75"></span></p>
<h3>The Good News</h3>
<p>The good news is that <strong>EMAIL IS KING</strong>. It is nearly ubiquitous among US adults with adoption somewhere around 98% (source: <a href="http://www.pewinternet.org/">www.pewinternet.org</a>). It’s also free with no barrier of entry thanks to popular web-based email services such as Windows Live Hotmail, Yahoo Mail and Gmail. The corporate king is still Microsoft Outlook in all its various, aged incarnations. And on the consumer desktop, Apple Mail seems to be leading this antiquated model, though Thunderbird still has several fans. And then there’s mobile. But forget I mentioned that. For now.</p>
<h3>The Bad News</h3>
<p>The bad news is that <strong>EMAIL IS KING</strong>. And if having to deal with the numerous versions of Outlook wasn&#8217;t bad enough there are a seemingly infinite number of combinations of webmail services + browsers + browser versions + OSs.</p>
<p>The problem is that there are no <a href="http://www.email-standards.org/" target="_blank">email standards</a> to speak of. Each email client supports an incomplete set of either HTML and/or CSS making it nearly impossible to determine anything more than a baseline feature set. Woo-hoo!</p>
<h3>The Bottom Line</h3>
<p>E-marketers wait for no one and this eblast has gotta get out to the list tomorrow AM.</p>
<h3>So, what&#8217;s the takeaway here?</h3>
<p>This is not intended to be a course on email marketing nor is it a full-fledged tutorial. Instead I want it to serve as a primer plus a list of resources for those needing or wanting to code HTML Emails.</p>
<h3>Just a few words on MOBILE&#8230;</h3>
<p>I recently read that more folks were checking their email on mobile devices than on computers. This would make sense with the gazillions of iOS and Android devices being activated every day. For the sake of space and my own sanity, the information in this article pertains mostly to the desktop/laptop variety of HTML Email, though most modern mobile clients tend to do a much better job rendering HTML Emails that their landlocked counterparts.</p>
<h3>HTML and CSS within the Email Client</h3>
<p>Contrary to your sales/marketing person&#8217;s intimate knowledge of the medium, HTML Email cannot be sent out by copying and pasting your code into a new Outlook message. In order for the HTML to render correctly, your code needs to be assembled at the server level where it is adorned with all the appropriate headers and such and shot out to your recipients.</p>
<p>The easiest way to do this, by far, is by using an <strong>EMAIL MARKETING SERVICE</strong> (<strong>EMS</strong>) such as Emma, Constant Contact, Campaign Monitor, MailChimp, etc. I won&#8217;t go into which is better, just know that they exist for a host of reasons. On the corporate side, many IT departments host their own bulk mailing services in-house. Either way, Outlook is NOT the way.</p>
<h3>Ready to Code Like it&#8217;s <span style="color: #800080;">1999</span>?</h3>
<p>Beyond being an cheap catchphrase, my reference to 20th century markup refers to the dumbed-down subset of HTML &amp; CSS that&#8217;s currently available to developers working on HTML Emails. For reasons I shall soon explain, you will need to go back in time, so to speak, and pick up coding and layout techniques that would make any web standards nerd spit up all over his/her <a href="http://www.webstandards.org/" target="_blank">WaSP</a> t-shirt. If you thought the phrase &#8220;slice and code&#8221; raised some eyebrows, just wait &#8217;til you drop &#8220;nested table layout&#8221; at your next <a href="http://www.refreshaustin.org/" target="_blank">Refresh</a> meetup.</p>
<p>Speaking of slicing and coding, this article presumes that you, the reader, has a working knowledge of HTML/CSS in their currently recognized state. The code examples herein are shown with regard to the topics being covered rather than in a tutorial setting where each tag is explained.  If you want to learn about HTML &amp; CSS and how to use them, I highly recommend you checkout <a href="http://htmldog.com/" target="_blank">HTML Dog</a>.</p>
<hr />
<h3>Step 1. <del datetime="2011-02-08T04:26:02+00:00">Manage</del> Lower everyone&#8217;s expectations (aka: time to break some hearts).</h3>
<p>There&#8217;s a lot you can do in an HTML Email, but there&#8217;s even more that you can&#8217;t. If you&#8217;re not also the designer, make sure you clue he or she in on the limitations of the medium. And make sure to do the same with the client or marketing person. No sense in having to explain why the coded version in her inbox doesn&#8217;t even come close to matching the designer&#8217;s PDF file she approved.</p>
<p>So then, why not just export that PDF as a single JPEG image and embed that in an email message and send it out through your email client? Simple answer: SPAM. And by that I mean your email will likely be marked as SPAM by most of its recipients since it contains no discernible information beyond the embedded image (which could contain malware). Also, your ISP will likely lock down your email account suspecting that it is being used for sending SPAM or malware. Need I continue?</p>
<hr />
<h3>Step 2. Determine your Target Email Clients &#8211; Pick your battles!</h3>
<p>You can&#8217;t please all of the email clients all of the time so pick your battles and make sure you have a strong business case for when you inevitably get that Outlook &#8217;97 on Win XP screenshot from your client/boss that&#8217;s all awry. The good news is that there&#8217;s <em>some </em>reliable data out there to help you determine what your targets should be in order to create a baseline. Here are a few snapshots of the email client landscape:</p>
<p><strong>Campaign Monitor&#8217;s Numbers from <del>Dec 2009</del></strong> <strong>June 2011</strong></p>
<h3><img title="campaign-monitor-email-clients-2011" src="http://logicalthings.com/blog/wp-content/uploads/2011/01/campaign-monitor-email-clients-2011.png" alt="campaign monitor email clients 2011" width="577" height="261" /></h3>
<p>(Revised 2011/07/18—Source: <a href="http://www.campaignmonitor.com/stats/email-clients/" target="_blank">www.campaignmonitor.com/stats/email-clients/</a>)</p>
<p><strong>Litmus&#8217; Numbers from <del>Feb 2010</del> July 2011</strong></p>
<p><a href="http://litmus.com/blog/email-client-market-share-infograph/email-client-market-stats-1000"><img class="alignnone size-full wp-image-351" title="" src="http://logicalthings.com/blog/wp-content/uploads/2011/01/litmus-july-2011.gif" alt="litmus-july-2011" width="577" height="347" /></a><br />
(Revised 2012/04/05—Source: <a href="http://litmus.com/blog/email-client-market-share-infograph/email-client-market-stats-1000">litmus.com/blog/email-client-market-share-infograph/email-client-market-stats-1000</a>)</p>
<p>First let&#8217;s just get it out in the open and admit that all such statistics are skewed and affected by numerous factors. Please read the fine print on both of these sites, which explain how they arrived at their respective numbers.</p>
<p>Nevertheless, what can we learn from a quick glance at these two charts? That <strong>OUTLOOK IS STILL KING</strong>. Seriously, when one antiquated platform commands such a lead, it&#8217;s hard not to consider this your baseline. Set the controls for <strong><span style="color: #800080;">1999</span></strong>!</p>
<hr />
<h3>Step 3. CSS layouts? Never use &#8216;em..</h3>
<p>First things first, in HTML Email there&#8217;s only inline CSS. Some EMSs allow some styles such as background colors to be specified in a <span style="color: #ff0000;">STYLE</span> tag inserted just after the opening <span style="color: #ff0000;">TABLE</span> tag, but these can be hit or miss depending on the recipient. You also can&#8217;t rely on a CSS reset to zero out all of your margins and padding. Don&#8217;t think that some email clients won&#8217;t add their own default values and ruin your layout.</p>
<p>The CSS allowed in the majority of email clients is a lot closer to CSS 1 than anything we use on websites today. It&#8217;s also <strong>longhand</strong>. There&#8217;s none of this funny business going on:</p>
<pre>&lt;p style="font: 18px/1.35em normal normal Arial, Helvetica, sans-serif #000000;
margin: 0px 5px 0px 0px; padding: 0px;"&gt;hello world&lt;/p&gt;</pre>
<p>In HTML Email, we need to use something like this instead:</p>
<pre>&lt;p style="text-align: left; margin-left: 0px; margin-bottom: 15px; margin-right: 5px;
margin-top: 0px; padding-left: 0px; padding-bottom: 0px; padding-right: 0px;
padding-top: 0px; line-height: 1.35em; font-family: Arial, Helvetica, sans-serif;
font-size: 18px; color: #000000; font-weight: normal; font-style: normal;"&gt;
hello world&lt;/p&gt;</pre>
<p>I know it seems like more than twice the code, but that&#8217;s the deal. Just do it. A good way to make sure no shorthand is included automatically is to set your prefs in Dreamweaver (or tool of choice) to something like this:</p>
<p><img class="alignnone size-full wp-image-98" title="dreamweaver-css-prefs" src="http://logicalthings.com/blog/wp-content/uploads/2011/01/dreamweaver-css-prefs1.png" alt="dreamweaver-css-prefs" width="577" height="439" /></p>
<p>Now, for page structure, you&#8217;ll want to get to know this snippet of code:</p>
<pre>&lt;table width="750" cellspacing="0" cellpadding="0" border="0" align="center"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" align="left"&gt; This is my first table! &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</pre>
<p>In HTML Email, it&#8217;s table-based layouts or nothing. You will use table cells for every block of content. You will nest tables to position items in various locations on the page. You will travel <strong><span style="color: #800080;">back in time to 1999!</span></strong></p>
<p>There are no <span style="color: #ff0000;">DIV</span>s per se in HTML Email. Okay, maybe there&#8217;s one—just one—that wraps your entire page like so:</p>
<pre>&lt;div align="center"&gt;
&lt;table width="750" cellspacing="0" cellpadding="0" border="0" align="center"&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td valign="top" align="left"&gt; This is my first table! &lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div&gt;</pre>
<p>That&#8217;s kickin&#8217; it old school, right? It&#8217;s a good idea to center your entire email and to add a redundant centering table attribute as above, if just as a fall-back. Try to keep your code away from the browsers&#8217;/clients&#8217; edges where they can mess with it and skew and hide pixels and such. It happens!</p>
<p>Next, burn this into your memory:</p>
<pre>&lt;img src="http://mydomain.com/images/image.jpg" border="0"
style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px;
padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px;
display: block;" /&gt;</pre>
<p>Some clients may treat images as inline elements, others as block elements. The display attribute here just cements this and allows you to code accordingly. Also, it&#8217;s very important to zero your margins as some email clients will add some by default like in this Gmail screenshot:</p>
<p><img class="alignnone size-full wp-image-134" title="gmail-breaks2" src="http://logicalthings.com/blog/wp-content/uploads/2011/01/gmail-breaks2.png" alt="gmail-breaks2" width="577" height="460" /></p>
<p>This is perfect example of how you can spend so much time designing something and so little time coding and testing it to make sure it renders correctly. This same lesson was not learned here either:</p>
<p><img class="alignnone size-full wp-image-135" title="gmail-breaks3" src="http://logicalthings.com/blog/wp-content/uploads/2011/01/gmail-breaks3.png" alt="gmail-breaks3" width="577" height="325" /></p>
<p>Unfortunately, you can&#8217;t really know unless you test, which I&#8217;ll cover below. You also can&#8217;t check your email&#8217;s source since many email clients rewrite your code to suit their needs. Just take a gander at your Gmail source code and try to figure out what&#8217;s what.</p>
<hr />
<h3>Step 4. Dig around and get your hands dirty with other peoples&#8217; code</h3>
<p>Remember the good ol&#8217; days when there weren&#8217;t a complete library of O&#8217;Reilly books on every subject and you had to scour around the web viewing other peoples&#8217; source to figure things out? Wait, these still are the good ol&#8217; days! Search around and you will discover some great design &amp; code examples created by folks who&#8217;ve figured a lot of this stuff out. EmailCraft gladly airs their laundry in <a href="http://www.emailcraft.com/examples.html" target="_blank">this gallery of examples</a>.</p>
<p>Campaign Monitor has made available <a href="http://www.campaignmonitor.com/templates/" target="_blank">these free, ready-made HTML templates</a> designed and coded by some of the web&#8217;s rock stars.</p>
<hr />
<h3>Step 5. Create a baseline HTML Email Checklist</h3>
<p>Coding requirements vary from EMS platform to platform so be sure to check what&#8217;s required for yours. Below is a general HTML Email checklist that should serve as a good starting point. Some things to consider:</p>
<ul>
<li><strong>Width</strong> &#8211; Try to keep things within 800 pixels max. You never know what someone is viewing your work on and how many stupid sidebars, menus and ads are creeping in from either side.</li>
<li><strong>Fonts</strong> &#8211; Stick to the fab five: Arial, Verdana, Georgia, Times New Roman (Times) and Courier (Courier New) in all their variants (normal, normal+italic, bold, bold+italic) and colors (go hog wild here!)</li>
<li><strong>Absolute URLs</strong> &#8211; You cannot display images in your emails any other way than to host them on a server and point to their absolute URLs.</li>
<li><strong>Image file formats</strong> - Stick with JPG &amp; GIF. Remember, it&#8217;s 1999.</li>
<li><strong>Markup</strong> &#8211; Use HTML4 or XHTML Trans/Strict and collapse your indents and remove all spaces between tags in your markup. Code for email is not poetry.</li>
<li><strong>CSS</strong> &#8211; Use minimally, inline only and NO SHORTHAND. The most common support for inline CSS is with text styling, padding, margins and borders. Remember that CSS will always fall-back to your HTML markup.</li>
<li><strong>Global Styles</strong> &#8211; There are none reliable enough to use across all email clients. Instead, every HTML tag (<span style="color: #ff0000;">P</span>, <span style="color: #ff0000;">A</span>, <span style="color: #ff0000;">TD</span>, etc) requires its own &#8220;style&#8221; tag.</li>
<li><strong>Margins and Padding</strong> &#8211; Each element needs to have its own margin and padding values. You might think to apply these to a <span style="color: #ff0000;">TD</span> and that every <span style="color: #ff0000;">P </span>tag within will inherit. You might be in for a surprise!</li>
<li><strong>Text-Align</strong> &#8211; Like many style attributes, double duty is required here. Both your <span style="color: #ff0000;">TD</span> horizontal alignment and your <span style="color: #ff0000;">P</span> inline style text-align values should match.</li>
</ul>
<p>&#8230;and some things to avoid:</p>
<ul>
<li><strong>Animated GIFs</strong> &#8211; While these may display in some web-based email clients, only the first frame will load in most. Why put that much work into something that will only be seen by a few?</li>
<li><strong>JavaScript</strong> &#8211; You&#8217;re kidding, right?</li>
<li><strong>Flash Animations</strong> &#8211; If it were possible, wouldn&#8217;t you have been inundated with these by now?</li>
<li><strong>Background Images</strong> - Best to avoid them. While support is growing and hacks exist, stick with what you know, which is that unlike background images, solid colors display correctly EVERYWHERE.</li>
<li><strong>Forms</strong> &#8211; For a host of reasons, this is just naga, naga, nagonnaworkhereanyway.</li>
<li><strong>&lt;HEAD&gt; Tag Content</strong> &#8211; <span style="color: #ff0000;">TITLE</span> and <span style="color: #ff0000;">META</span> tags and the like have no place in your HTML Emails. Most EMSs allow you to put this info in your campaign interface on a per email basis.</li>
</ul>
<hr />
<h3>Step 6. Setup your EMS account</h3>
<p><a href="http://www.mailchimp.com/"><img class="size-full wp-image-124 alignright" title="mailchimp" src="http://logicalthings.com/blog/wp-content/uploads/2011/01/mailchimp.png" alt="mailchimp" width="100" height="100" /></a>This is not necessarily an endorsement, but I highly recommend you hurry over to <a href="http://www.mailchimp.com/" target="_blank">MailChimp</a> and sign up for their Forever Free Plan to use as your test EMS account. It&#8217;s a full-featured account limited only by the size of your list (up to 2,000) and the number of emails you can send out per month (12,000). More than adequate for a test account!</p>
<hr />
<h3>Step 7a. Test your work: The Free &#8211; Setup multiple test accounts</h3>
<p>Get a copy of Outlook and install it on a PC/partitioned Mac/wherever you feel comfortable. Create a test list in MailChimp with addresses for your Outlook/Apple Mail clients and each of these webmail services to send your test emails to:</p>
<ul>
<li><a href="http://explore.live.com/windows-live-hotmail" target="_blank">Windows Live Hotmail</a></li>
<li><a href="http://www.gmail.com/" target="_blank">Gmail</a></li>
<li><a href="http://www.yahoo.com/mail" target="_blank">Yahoo! Mail</a></li>
</ul>
<p><span style="font-size: small;"><span style="line-height: 24px;">Don&#8217;t forget to test your webmail accounts in different browsers to see if things are shifting around.<br />
</span></span><a name="litmus"></a></p>
<h3>Step 7b. Test your work: The Paid &#8211; Use an email preview service [REVISED April 5, 2012]</h3>
<p>While it&#8217;s hard to beat FREE with a stick, you eventually have to consider what your own time and energy is worth. <a href="http://litmus.com/" target="_blank">Litmus</a> and <a href="http://www.emailonacid.com/" target="_blank">Email on Acid</a> are services worth every penny of the fees they charge when you consider what they give you access to. For example, below are the results of an email that was tested using Litmus on 16 different email &amp; webmail client configurations. It took only 8 minutes:</p>
<p><img class="alignnone size-full wp-image-116" title="litmus-screenshot" src="http://logicalthings.com/blog/wp-content/uploads/2011/01/litmus.png" alt="litmus-screenshot" width="577" height="595" /></p>
<p>I shouldn&#8217;t even have to make a comparison between free and paid as this group of thumbnails (each clickable to reveal an actual size screenshot) should explain the benefits well enough.</p>
<p>Another service [currently in beta as of April 5, 2012] is <a href="http://www.getfractal.com/" target="_blank">Fractal</a>, which claims to &#8220;Fix your HTML email code in under a minute.&#8221; Apparently you just code your email like a web page, upload it and their app will automatically convert it to email-compatible markup. <em>Voilà</em>.</p>
<p>The choice is yours to test with free or paid resources. Just do the math and find what works best for you.</p>
<hr />
<h3>Step 8. Test Early and Test Often</h3>
<p>In time you may find that some inline styles appear to render predictable results. Don&#8217;t take anything for granted. Use your various test accounts or your email preview service to make sure that your emails display correctly in all target clients.</p>
<hr />
<h3>Step 9. DIY HTML Email articles and resources [REVISED April 5, 2012]</h3>
<p>Finally, here are some resources for designing and coding HTML email templates. This is by no means a definitive list, but a real good starting point:</p>
<p><a href="http://htmlemailboilerplate.com/" target="_blank">HTML Email Boilerplate</a> - Conceptually similar to an HTML framework such as the HTML5 Boilerplate with the added zeroing-out of a CSS Reset—but for HTML Email—this heavily commented HTML template attempts to both inform you of the various email client pitfalls and help you avoid them. It&#8217;s a great starting point for anyone brave enough to enter the dense thicket that is HTML email.</p>
<p><a href="http://www.email-standards.org/" target="_blank">Email Standards Project</a> - Includes an email client rap sheet (somewhat dated, but still good info on baseline CSS support) and a now-historical saga of trying to get Microsoft to fix Outlook.</p>
<p><a href="http://articles.sitepoint.com/article/html-email-troubleshooter" target="_blank">HTML eMail Troubleshooter</a> via SitePoint is self-explanatory and useful.</p>
<p><a href="http://premailer.dialect.ca/" target="_blank">Premailer</a> &#8211; A CSS to inline-style converter for the masses.</p>
<p><a href="http://net.tutsplus.com/tutorials/html-css-techniques/getting-started-with-html-emails/" target="_blank">Getting Started with HTML Emails</a> via tutsplus is another excellent primer on the subject with beau coup resources.</p>
<p><a href="http://net.tutsplus.com/tutorials/html-css-techniques/6-easy-ways-to-improve-your-html-emails/" target="_blank">6 Easy Ways to Improve Your HTML Emails</a> via tutsplus has even more helpful tips.</p>
<p><a href="http://www.campaignmonitor.com/blog/post/3170/adding-background-images-to-your-email-in-two-simple-steps/" target="_blank">Add a background image to your email in two simple steps</a> via Campaign Monitor—I know I said not to, but what the heck. Experiment!</p>
<hr />
<h3>Step 10. Let someone else do all this for you</h3>
<p><a href="http://www.emailcraft.com/" target="_blank">EmailCraft</a>, [NOT AN ENDORSEMENT—I have no experience using this service] from the PSD2HTML folks, offers relatively inexpensive e-newsletter design &amp; coding (or just slicing and coding your PSD) with a whole slew of output options.</p>
<p>Again, it&#8217;s your time and your money and you&#8217;ve either got enough of one or the other. Check out your options and your tolerance for this stuff and create a solution that fits your budget and your workflow. In the meantime, I&#8217;ll still be here coding like it&#8217;s <strong><span style="color: #800080;">1999</span></strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://logicalthings.com/blog/2011/01/html-email-coding-like-its-1999/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:thumbnail url="http://logicalthings.com/blog/wp-content/uploads/2011/01/campaign-monitor-email-clients-2011.png" />
		<media:content url="http://logicalthings.com/blog/wp-content/uploads/2011/01/campaign-monitor-email-clients-2011.png" medium="image">
			<media:title type="html">campaign-monitor-email-clients-2011</media:title>
		</media:content>
		<media:content url="http://logicalthings.com/blog/wp-content/uploads/2011/01/litmus-july-2011.gif" medium="image">
			<media:title type="html">litmus-july-2011</media:title>
			<media:thumbnail url="http://logicalthings.com/blog/wp-content/uploads/2011/01/litmus-july-2011-150x150.gif" />
		</media:content>
		<media:content url="http://logicalthings.com/blog/wp-content/uploads/2011/01/dreamweaver-css-prefs1.png" medium="image">
			<media:title type="html">dreamweaver-css-prefs</media:title>
			<media:thumbnail url="http://logicalthings.com/blog/wp-content/uploads/2011/01/dreamweaver-css-prefs1-150x150.png" />
		</media:content>
		<media:content url="http://logicalthings.com/blog/wp-content/uploads/2011/01/gmail-breaks2.png" medium="image">
			<media:title type="html">gmail-breaks2</media:title>
			<media:thumbnail url="http://logicalthings.com/blog/wp-content/uploads/2011/01/gmail-breaks2-150x150.png" />
		</media:content>
		<media:content url="http://logicalthings.com/blog/wp-content/uploads/2011/01/gmail-breaks3.png" medium="image">
			<media:title type="html">gmail-breaks3</media:title>
			<media:thumbnail url="http://logicalthings.com/blog/wp-content/uploads/2011/01/gmail-breaks3-150x150.png" />
		</media:content>
		<media:content url="http://logicalthings.com/blog/wp-content/uploads/2011/01/mailchimp.png" medium="image">
			<media:title type="html">mailchimp</media:title>
		</media:content>
		<media:content url="http://logicalthings.com/blog/wp-content/uploads/2011/01/litmus.png" medium="image">
			<media:title type="html">litmus-screenshot</media:title>
			<media:thumbnail url="http://logicalthings.com/blog/wp-content/uploads/2011/01/litmus-150x150.png" />
		</media:content>
	</item>
		<item>
		<title>Always Display the Current Year in your &#169; Copyright Notice</title>
		<link>http://logicalthings.com/blog/2011/01/always-display-the-current-year-in-your-copyright-notice/</link>
		<comments>http://logicalthings.com/blog/2011/01/always-display-the-current-year-in-your-copyright-notice/#comments</comments>
		<pubDate>Mon, 03 Jan 2011 21:00:59 +0000</pubDate>
		<dc:creator>Art Thompson, Jr.</dc:creator>
				<category><![CDATA[Technicalities]]></category>

		<guid isPermaLink="false">http://logicalthings.com/blog/?p=56</guid>
		<description><![CDATA[January 1st comes around every year at the same time, but it used to always catch me off guard with respect to updating my websites&#8217; copyright notices. That is until I found this handy little code snippet. First, let me &#8230; <a href="http://logicalthings.com/blog/2011/01/always-display-the-current-year-in-your-copyright-notice/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>January 1st comes around every year at the same time, but it used to always catch me off guard with respect to updating my websites&#8217; copyright notices. That is until I found this handy little code snippet. First, let me say that I am NOT the original author of this code snippet. I would love to know who wrote it so that I can finally thank them for relieving me of this yearly task. I&#8217;m sure I stumbled upon this in a sea of search results, likely several replies down into a JavaScript forum posting. Regardless, here is the simplest, JavaScript-based way I&#8217;ve found to always be displaying the current year in your websites&#8217;s copyright notice:</p>
<pre>&lt;p&gt;&amp;copy; Copyright 2000-
&lt;script language="JavaScript" type="text/javascript"&gt;
    now = new Date
    theYear=now.getYear()
    if (theYear &lt; 1900)
    theYear=theYear+1900
    document.write(theYear)
&lt;/script&gt;
Logical Things, Inc. All rights reserved. Version 4.01g&lt;/p&gt;</pre>
<p>There might even be a leaner way to do it, but this has always worked perfectly well for me. Have an even easier way? Let me know!</p>
]]></content:encoded>
			<wfw:commentRss>http://logicalthings.com/blog/2011/01/always-display-the-current-year-in-your-copyright-notice/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
	</item>
		<item>
		<title>Embedding Video with HTML5 for iOS Compatibility</title>
		<link>http://logicalthings.com/blog/2010/11/embedding-video-using-html5-for-ipad-compatibility/</link>
		<comments>http://logicalthings.com/blog/2010/11/embedding-video-using-html5-for-ipad-compatibility/#comments</comments>
		<pubDate>Mon, 29 Nov 2010 05:59:14 +0000</pubDate>
		<dc:creator>Art Thompson, Jr.</dc:creator>
				<category><![CDATA[Technicalities]]></category>
		<category><![CDATA[embed]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Flowplayer]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[iPad]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[mp4]]></category>
		<category><![CDATA[USER_AGENT]]></category>
		<category><![CDATA[video]]></category>

		<guid isPermaLink="false">http://logicalthings.com/blog/?p=9</guid>
		<description><![CDATA[Update March 27, 2012: I penned this article waaay back in 2010, before I&#8217;d discovered John Dyer&#8217;s excellent MediaElements.js script, which renders my blog post moot. Please consider this information ephemeral and possibly a PHP user-agent sniffer tutorial at best. &#8230; <a href="http://logicalthings.com/blog/2010/11/embedding-video-using-html5-for-ipad-compatibility/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<blockquote><p><strong>Update March 27, 2012:</strong> I penned this article waaay back in 2010, before I&#8217;d discovered <a href="http://mediaelementjs.com/" target="_blank">John Dyer&#8217;s excellent MediaElements.js script</a>, which renders my blog post moot. Please consider this information ephemeral and possibly a PHP user-agent sniffer tutorial at best.</p></blockquote>
<p>I never dreamed that I&#8217;d be writing an article with a title like this. Well, I recently worked on a project where I had to embed a locally-hosted video onto a web page that the client wanted to be able play on &#8220;any&#8221; PC as well as on an iPad or iPhone. Easy enough, right? My first thought was to <a href="http://diveintohtml5.org/" target="_blank">Dive into HTML5</a>, but, with limited current browser support, HTML5 alone wasn&#8217;t going to be an option for PC users. My favorite container for embedding video has always been the Flash-based <a href="http://flowplayer.org/" target="_blank">Flowplayer</a>, which does actually provide a fall-back option for users on iOS devices by allowing you to display a splash image that links to your MP4 (required format) video file.</p>
<p><span id="more-9"></span></p>
<p>I won&#8217;t go into too many specifics about installing or configuring Flowplayer here, but below is the basic markup for embedding the player, which is accomplished by attaching an <strong>ID</strong> or <strong>class</strong> name to an href (which the Flowplayer JS uses to identify the embed location) as so:</p>
<pre>&lt;a href="path/to/video.mp4" <strong>id="player"</strong>&gt;
     &lt;img src="splash-image.png" /&gt;
&lt;/a&gt;</pre>
<p>As you can see, the HTML is pretty straightforward. On an iOS device this markup would predictably display the splash image as a link to the video file.  An iPad or iPhone user could touch the image which would cause QuickTime to launch and play the video.</p>
<p>I wanted to find a solution that would allow me to try out some HTML5 while also maintaining the highest level of compatibility—albeit using Flash. In the end I decided to create two different pages: one with the Flash-based Flowplayer that I would serve up to PCs (and Android devices) and one using the HTML5 <span style="color: #ff0000;">&lt;video&gt;</span> tag that I would serve up to iOS devices.</p>
<p>I first created a PHP page called <strong>index.php</strong> and included a script at the top to determine the <strong>USER_AGENT</strong>. I found a simple PHP script to do just this on <a href="http://davidwalsh.name/detect-iphone" target="_blank">David Walsh&#8217;s Blog</a>, which is shown below:</p>
<pre>&lt;?php
if(strstr($_SERVER['HTTP_USER_AGENT'],'iPhone') ||
strstr($_SERVER['HTTP_USER_AGENT'],'iPad'))
{
header('Location: http://www.logicalthings.com/ipad-test/index-ipad.html');
exit();
}?&gt;</pre>
<p>A similar redirect could also be achieved using an .htaccess method, but David&#8217;s PHP solution suited me fine. Oh, and I chose to sniff out the iOS devices since they represented the minority of possible USER_AGENTs and thus required less code.</p>
<p>For the rest of the page, I included all of the basic XHTML elements, the necessary jQuery and Flowplayer JS links, the Flowplayer embed code and finally some JS to configure the player. Here&#8217;s the rest of the markup:</p>
<pre>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
     &lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;
     &lt;title&gt;iPad HTML5 Video Test - Flash Player&lt;/title&gt;
     &lt;link href="css/reset.css" rel="stylesheet" type="text/css" /&gt;
     &lt;link href="css/style.css" rel="stylesheet" type="text/css" /&gt;

     &lt;!-- INCLUDE JQUERY &amp; FLOWPLAYER JS --&gt;
     &lt;script src="js/jquery-1.4.3.min.js"&gt;&lt;/script&gt;
     &lt;script src="js/flowplayer-3.2.4.min.js"&gt;&lt;/script&gt;
&lt;/head&gt;

&lt;body&gt;
     &lt;p&gt;&amp;nbsp;&lt;/p&gt;

     &lt;!-- PLACE FLOWPLAYER PLAYER ON PAGE --&gt;
     &lt;a id="player" href="video/video.mp4"&gt;&lt;/a&gt;

     &lt;!-- CONFIGURE FLOWPLAYER PLAYER --&gt;
     &lt;script type="text/javascript"&gt;
     $(function() {

          var player = $f("player", "flash/flowplayer.commercial-3.2.5.swf", {

               // SPECIFY SOME FLOWPLAYER PARAMETERS
               clip: {
                    url: "video/video.mp4",
                    onFinish: function() { this.stop(); },
                    autoPlay: true,
                    autoBuffering: true,
                    scaling: "orig"
               }
          });
     });
     &lt;/script&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>I specified the dimensions of the embedded player (id=&#8221;<strong>player</strong>&#8220;) as well as the page background color in my stylesheet (<strong>style.css</strong>):</p>
<pre>body {
	background: #000;
	margin: 0;
	padding: 0;
}
/* the video block */
#player {
	display: block;
	height: 480px;
	width: 640px;
	margin: 0px auto;
}</pre>
<p>The next thing I did was create the page for the redirected iOS devices, which I called <strong>index-ipad.html</strong>. This would be the easiest part of the project and would basically come down to the <span style="color: #ff0000;">&lt;video&gt;</span> tag and a couple of attributes. Notice I reused the same ID of &#8220;player&#8221; to specify the dimensions of the video player and to center it on the page:</p>
<pre>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
&lt;head&gt;
     &lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;
     &lt;title&gt;iPad HTML5 Video Test - HTML5 Player&lt;/title&gt;
     &lt;link href="css/reset.css" rel="stylesheet" type="text/css" /&gt;
     &lt;link href="css/style.css" rel="stylesheet" type="text/css" /&gt;
&lt;/head&gt;
&lt;body&gt;
     &lt;p&gt;&amp;nbsp;&lt;/p&gt;

     &lt;!-- PLACE VIDEO PLAYER ON PAGE --&gt;
     &lt;video src="video/video.mp4" controls autoplay id="player" /&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
<p>Not to take anything away from Flowplayer, but clearly this is the more elegant solution. I probably learned more than I wanted to about video on the web from the <a href="http://diveintohtml5.org/video.html" target="_blank">Dive Into HTML5</a> page of the same name. But Dev.Opera&#8217;s <a href="http://dev.opera.com/articles/view/everything-you-need-to-know-about-html5-video-and-audio/" target="_blank">Everything you need to know about HTML5 video and audio</a> page proved the most helpful and is now my go-to reference on the subject.</p>
<p>Now I just needed to test it out to make sure the correct page was being displayed to the user. Here&#8217;s a link to my test page, having swapped out the client&#8217;s video with one I shot in New Orleans a while back:</p>
<blockquote><p><a href="http://www.logicalthings.com/ipad-test/" target="_blank"><span style="color: #444444;">www.logicalthings.com/ipad-test/</span></a></p></blockquote>
<p>Oh wait, I don&#8217;t own an iPad nor did the project&#8217;s budget provide for my purchasing one. Enter YouTube user, Sean, who shows off <a href="http://www.youtube.com/watch?v=dYYG8xsuW5w" target="_blank">the most useful feature of Safari</a> I&#8217;ve seen to date: Switching the USER_AGENT to emulate an iPad or other browser/device. To do this you first have to enable the Developer menu in Safari&#8217;s Advanced Preferences. Then, it&#8217;s just a click away:</p>
<p style="text-align: center;"><img class="size-full wp-image-20 aligncenter" title="user-agent.gif.scaled1000" src="http://logicalthings.com/blog/wp-content/uploads/2010/11/user-agent.gif.scaled1000.gif" alt="" width="533" height="581" /></p>
<p>Now, while this &#8220;hack&#8221; definitely fooled my USER_AGENT php sniffer, it&#8217;s not exactly what I would call an iPad emulator. For starters, the <span style="color: #ff0000;">&lt;video&gt;</span> tag&#8217;s autoplay attribute worked for me in Safari in iPad USER_AGENT mode, but not always on an actual iPad. How do I know this? Because several members of the <a href="http://groups.google.com/group/wordpress-austin" target="_blank">WordPress-Austin list</a> who own iPads were kind enough to do some user testing for me. Their reports indicated that autoplay was hit or miss&#8211;likely due to variations in iOS versions. Ultimately, the client was happy enough to see the poster frame of the video superimposed with the default Play button on their iPad and for the video to actually play when touched. So I stuck a fork in it.</p>
<p>I didn&#8217;t do a whole lot else in terms of testing since there wasn&#8217;t a whole lot else going on with this simple, embedded video. But, the exercise proved to be a great learning experience and left me excited to take on some more HTML5 in my upcoming projects, which will likely begin with <a href="http://html5reset.org/" target="_blank">HTML5 Reset</a>.</p>
<p>Thanks to Paul, Jim, Jenaro and Ike for their help with the testing. I welcome any constructive comments, questions or suggestions.</p>
]]></content:encoded>
			<wfw:commentRss>http://logicalthings.com/blog/2010/11/embedding-video-using-html5-for-ipad-compatibility/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:thumbnail url="http://logicalthings.com/blog/wp-content/uploads/2010/11/user-agent.gif.scaled1000-150x150.gif" />
		<media:content url="http://logicalthings.com/blog/wp-content/uploads/2010/11/user-agent.gif.scaled1000.gif" medium="image">
			<media:title type="html">user-agent.gif.scaled1000</media:title>
			<media:thumbnail url="http://logicalthings.com/blog/wp-content/uploads/2010/11/user-agent.gif.scaled1000-150x150.gif" />
		</media:content>
	</item>
	</channel>
</rss>

