<?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"
	>

<channel>
	<title>blog.michaelfasani.com</title>
	<atom:link href="http://blog.michaelfasani.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.michaelfasani.com</link>
	<description>Blog, What?</description>
	<pubDate>Sat, 13 Dec 2008 11:04:19 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
	<language>en</language>
			<item>
		<title>Accessibility Testing - GrayBit v2.0</title>
		<link>http://blog.michaelfasani.com/2008/12/accessibility-testing-graybit-v2/</link>
		<comments>http://blog.michaelfasani.com/2008/12/accessibility-testing-graybit-v2/#comments</comments>
		<pubDate>Sat, 13 Dec 2008 11:02:36 +0000</pubDate>
		<dc:creator>Michael Fasani</dc:creator>
		
		<category><![CDATA[Web Development]]></category>

		<category><![CDATA[Accessibility]]></category>

		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://blog.michaelfasani.com/?p=32</guid>
		<description><![CDATA[GrayBit is an online accessibility testing tool designed to visually convert a full-color web page into a grayscale rendition for the purpose of visually testing the page&#8217;s perceived contrast.
&#34;Experience Color, Wearing Shades of Gray&#34;
In the supplied GrayBit form, enter the URL of a page you wish to test. Submit the form. Wait for results. Very [...]]]></description>
			<content:encoded><![CDATA[<p>GrayBit is an online accessibility testing tool designed to visually convert a full-color web page into a grayscale rendition for the purpose of visually testing the page&#8217;s perceived contrast.</p>
<p><quote>&quot;Experience Color, Wearing Shades of Gray&quot;</quote></p>
<p>In the supplied GrayBit form, enter the URL of a page you wish to test. Submit the form. Wait for results. Very Impressive!!</p>
<p><a href="http://graybit.com/main.php">GrayBit v2.0</a> Created by Jona Fenocchi &amp; Mike Cherim</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.michaelfasani.com/2008/12/accessibility-testing-graybit-v2/feed/</wfw:commentRss>
		</item>
		<item>
		<title>ASP to PHP Cross Refrence</title>
		<link>http://blog.michaelfasani.com/2008/10/asp-to-php-cross-refrence/</link>
		<comments>http://blog.michaelfasani.com/2008/10/asp-to-php-cross-refrence/#comments</comments>
		<pubDate>Thu, 02 Oct 2008 10:15:56 +0000</pubDate>
		<dc:creator>Michael Fasani</dc:creator>
		
		<category><![CDATA[ASP]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://blog.michaelfasani.com/?p=31</guid>
		<description><![CDATA[This site is very helpful as a cross refrence from ASP to PHP and vice versa.            This is by no means a complete list but it should help you convert ASP to PHP or the          [...]]]></description>
			<content:encoded><![CDATA[<p>This site is very helpful as a cross refrence from ASP to PHP and vice versa.            This is by no means a complete list but it should help you convert ASP to PHP or the            other way around. PHP has many more built in commands than ASP (VBScript), so several            lines of code in ASP may convert to a single line in PHP.</p>
<p><a title="ASP to PHP Refrence" href="http://www.design215.com/toolbox/asp.php" target="_blank">Design215 Toolbox - ASP/PHP Cross Reference</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.michaelfasani.com/2008/10/asp-to-php-cross-refrence/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Learning jQuery</title>
		<link>http://blog.michaelfasani.com/2008/08/learning-jquery/</link>
		<comments>http://blog.michaelfasani.com/2008/08/learning-jquery/#comments</comments>
		<pubDate>Mon, 18 Aug 2008 10:38:59 +0000</pubDate>
		<dc:creator>Michael Fasani</dc:creator>
		
		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[Web Development]]></category>

		<category><![CDATA[XHTML]]></category>

		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://blog.michaelfasani.com/?p=27</guid>
		<description><![CDATA[jQuery is a JavaScript library. JavaScript Libraries simplify how you traverse HTML documents, handle events, perform animations and add Ajax interactions to your web pages. They deliver your code so that it works across all common browsers. jQuery is designed to change the way that you write JavaScript and allow you to add functionality to [...]]]></description>
			<content:encoded><![CDATA[<p>jQuery is a JavaScript library. JavaScript Libraries simplify how you traverse HTML documents, handle events, perform animations and add Ajax interactions to your web pages. They deliver your code so that it works across all common browsers. jQuery is designed to change the way that you write JavaScript and allow you to add functionality to your pages quicker. </p>
<h4>The official jQuery site</h4>
<p>Learn about the jQuery JavaScript library, how to install it and how to add functionality to your pages.<br />
<a href="http://www.jquery.com" target="_blank">http://www.jquery.com</a></p>
<h4>Visual jQuery by Remy Sharp</h4>
<p>A quick visual reference guide with examples of what can be achieved with jQuery.<br />
<a href="http://www.remysharp.com/visual-jquery" target="_blank">http://www.remysharp.com/visual-jquery</a></p>
<h4>jQuery API by Remy Sharp</h4>
<p>Another reference guide to functions available to you in jQuery by Remy Sharp.<br />
<a href="http://www.remysharp.com/jquery-api" target="_blank">http://www.remysharp.com/jquery-api</a></p>
<h4>jQuery General Discussion Forum</h4>
<p>This is the best place to post if you have general questions or concerns. Also, if you&#8217;ve built a site that uses jQuery, or would like to announce a new plugin, this is the place to do it.<br />
<a href="http://www.nabble.com/jQuery-General-Discussion-f15494.html"  target="_blank">http://www.nabble.com/jQuery-General-Discussion-f15494.html</a></p>
<h4>Learning jQuery</h4>
<p>Getting to know the library of choice for unobtrusive JavaScript a an informative jQuery blog.<br />
<a href="http://www.learningjquery.com" target="_blank">http://www.learningjquery.com</a></p>
<h4>jQuery Menu Firefox Extension</h4>
<p>Add this handy menu right into the top of your Firefox menu and save valuable seconds!<br />
<a href="http://www.kintek.com.au/jquery-menu-firefox-extension.html" target="_blank">http://www.kintek.com.au/jquery-menu-firefox-extension.html</a></p>
<h4>jQuery for designers</h4>
<p>What it says on the tin, jQuery for Designers. A informative blog.<br />
<a href="http://www.jqueryfordesigners.com" target="_blank">http://www.jqueryfordesigners.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.michaelfasani.com/2008/08/learning-jquery/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Limiting a multi-line Textbox/Textarea with JavaScript</title>
		<link>http://blog.michaelfasani.com/2008/08/limiting-a-textbox-with-javascript/</link>
		<comments>http://blog.michaelfasani.com/2008/08/limiting-a-textbox-with-javascript/#comments</comments>
		<pubDate>Wed, 13 Aug 2008 18:59:05 +0000</pubDate>
		<dc:creator>Michael Fasani</dc:creator>
		
		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[Web Development]]></category>

		<category><![CDATA[XHTML]]></category>

		<guid isPermaLink="false">http://blog.michaelfasani.com/?p=25</guid>
		<description><![CDATA[Its not possible to put a character limit on multi line text box areas in HTML/XHTML so you have to use some form of JavaScript snippet, here is a snippet I use, because its quick and very simple to customize.
&#60;script type="text/javascript"&#62;
//Max length multiline textbox checker
function checkMaxLen(txt,maxLen) {
try{
if(txt.value.length &#62; (maxLen-1)) {
var cont = txt.value;
txt.value = cont.substring(0,(maxLen [...]]]></description>
			<content:encoded><![CDATA[<p>Its not possible to put a character limit on multi line text box areas in HTML/XHTML so you have to use some form of JavaScript snippet, here is a snippet I use, because its quick and very simple to customize.</p>
<pre><code class="js">&lt;script type="text/javascript"&gt;
//Max length multiline textbox checker
function checkMaxLen(txt,maxLen) {
try{
if(txt.value.length &gt; (maxLen-1)) {
var cont = txt.value;
txt.value = cont.substring(0,(maxLen -1));
return false;
};
}catch(e){
}
};
&lt;/script&gt;
</code></pre>
<p>Then use the following code on the Textarea tag.</p>
<pre><code class="html">&lt;textarea onkeyup="return checkMaxLen(this,5000)"&gt;&lt;/textarea&gt;
</code></pre>
<p>You simply set the text limit by changing the value in the JavaScript function from 5000 to what ever number of characters you need.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.michaelfasani.com/2008/08/limiting-a-textbox-with-javascript/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Running Firefox 2 and Firefox 3 at the same time</title>
		<link>http://blog.michaelfasani.com/2008/07/running-firefox-2-and-firefox-3-at-the-same-time/</link>
		<comments>http://blog.michaelfasani.com/2008/07/running-firefox-2-and-firefox-3-at-the-same-time/#comments</comments>
		<pubDate>Mon, 28 Jul 2008 09:01:02 +0000</pubDate>
		<dc:creator>Michael Fasani</dc:creator>
		
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://blog.michaelfasani.com/?p=24</guid>
		<description><![CDATA[This article explains how you can install and run Firefox 3 at the same time and on the same machine as Firefox 2. Both programs can run simultaneously,  this makes developing for both browsers a lot easier.
How to install both FireFox 2 and FireFox 3 on the same machine 
]]></description>
			<content:encoded><![CDATA[<p>This article explains how you can install and run Firefox 3 at the same time and on the same machine as Firefox 2. Both programs can run simultaneously,  this makes developing for both browsers a lot easier.</p>
<p><a title="Running Firefox 2 and 3 at the same time" href="http://www.whatwasithinking.co.uk/2008/06/26/on-web-development-how-to-install-firefox-2-next-to-firefox-3/" target="_blank">How to install both FireFox 2 and FireFox 3 on the same machine </a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.michaelfasani.com/2008/07/running-firefox-2-and-firefox-3-at-the-same-time/feed/</wfw:commentRss>
		</item>
		<item>
		<title>The ultimate png fix for inline images in IE6</title>
		<link>http://blog.michaelfasani.com/2008/07/the-ultimate-png-fix-for-inline-images-in-ie6/</link>
		<comments>http://blog.michaelfasani.com/2008/07/the-ultimate-png-fix-for-inline-images-in-ie6/#comments</comments>
		<pubDate>Mon, 21 Jul 2008 11:06:12 +0000</pubDate>
		<dc:creator>Michael Fasani</dc:creator>
		
		<category><![CDATA[CSS]]></category>

		<category><![CDATA[IE6]]></category>

		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[Web Development]]></category>

		<category><![CDATA[XHTML]]></category>

		<category><![CDATA[IE6 Fixes]]></category>

		<category><![CDATA[PNG]]></category>

		<guid isPermaLink="false">http://blog.michaelfasani.com/?p=9</guid>
		<description><![CDATA[This chunk of XHTML code is used on all my pages so that IE6 displays inline PNG&#8217;s correctly. This code stops the blue flash PNG fix problem. The JS code snippet was originally taken from http://homepage.ntlworld.com/bobosola. You will need a different JS file if you wish you use a PNG for form submit buttons. This [...]]]></description>
			<content:encoded><![CDATA[<p>This chunk of <abbr title="eXtensible Hypertext Markup Language">XHTML</abbr> code is used on all my pages so that <abbr title="Internet Explorer 6">IE6</abbr> displays inline <abbr title="Portable Network Graphics">PNG</abbr>&#8217;s correctly. This code stops the blue flash PNG fix problem. The <abbr title="JavaScript">JS</abbr> code snippet was originally taken from <a href="http://homepage.ntlworld.com/bobosola/" target="_blank">http://homepage.ntlworld.com/bobosola</a>. You will need a different JS file if you wish you use a PNG for form submit buttons. This is free-ware code and all the documentation can be found on the bobosola link above.</p>
<h3>Step 1: Prepare your PNG images</h3>
<p>Firstly you must give all your transparent PNG images a class of transparent-png.</p>
<pre><code class="html">&lt;img src=&quot;ImageName.png&quot; class=&quot;transparent-png&quot; alt=&quot;MyImage&quot; height=&quot;100&quot; width=&quot;100&quot;/&gt;
</code></pre>
<h3>Step 2: Prepare your document</h3>
<p>Add the following code to the HEAD of your XHTML document:</p>
<p><code class="comment">&lt;!––[if lte IE 6]&gt;<br />
&lt;style type=&quot;text/css&quot;&gt;img.transparent-png{visibility: hidden;}&lt;/style&gt;<br />
&lt;script defer type=&quot;text/javascript&quot; src=&quot;js/pngfix.js&quot;&gt;&lt;/script&gt;<br />
&lt;noscript&gt;&lt;style type=&quot;text/css&quot;&gt;img.transparent-png{visibility: visible !important;}&lt;/style&gt;&lt;/noscript&gt;<br />
&lt;link href=&quot;css/ie6.css&quot; type=&quot;text/css&quot; media=&quot;all&quot; rel=&quot;stylesheet&quot; /&gt;<br />
&lt;![endif]––&gt;<br />
</code></p>
<p><strong>Line 1:</strong> Basically tells the browser to only use this code if the browser is Internet Explorer 6 or lower. That means that newer browsers will ignore this entire section. So all your fixings for IE6 can be done in one CSS file and the JS file is only called when needed.</p>
<p><strong>Line 2:</strong> Hides all the images which have a class of transparent-png, this is because IE6 puts horrible blue backgrounds into the transparent areas of the PNG. The pngfix.js overlays the png on top of the existing PNG using the following Microsoft filter (filter:progid:DXImageTransform.Microsoft.AlphaImageLoader) so that the browser understands transparency as expected.</p>
<p><strong>Line 3:</strong> Loads the JavaScript file.</p>
<p><strong>Line 4:</strong> Makes older browsers which don&#8217;t support JavaScript display images anyway even though they may be broken but at least the site will still be usable.</p>
<p><strong>Line 5:</strong> Includes a CSS file which can be used to add IE6 CSS fixes.</p>
<p><strong>Line 6:</strong> Closes the IF statement.</p>
<h3>Step 3: Install the JavaScript inline PNG Fix</h3>
<p>Save this PNG fix JS file to &#8220;/js/pngfix.js&#8221; or your scripts directory.</p>
<pre><code class="js">/*Correctly handle PNG transparency in Win IE 5.5 &amp; 6. http://homepage.ntlworld.com/bobosola. Updated 18-Jan-2006. */
&nbsp;
var arVersion = navigator.appVersion.split(&quot;MSIE&quot;)
var version = parseFloat(arVersion[1])
&nbsp;
if ((version &gt;= 5.5) &amp;&amp; (document.body.filters))
{
for(var i=0; i&lt;document.images.length; i++)
{
var img = document.images[i]
var imgName = img.src.toUpperCase()
if (imgName.substring(imgName.length-3, imgName.length) == &quot;PNG&quot;)
{
var imgID = (img.id) ? &quot;id='&quot; + img.id + &quot;' &quot; : &quot;&quot;
var imgClass = (img.className) ? "class='&quot; + img.className + &quot;' &quot; : &quot;&quot;
var imgTitle = (img.title) ? &quot;title='&quot; + img.title + &quot;' &quot; : &quot;title='&quot; + img.alt + &quot;' &quot;
var imgStyle = &quot;display:inline-block;&quot; + img.style.cssText
if (img.align == &quot;left&quot;) imgStyle = &quot;float:left;&quot; + imgStyle
if (img.align == &quot;right&quot;) imgStyle = &quot;float:right;&quot; + imgStyle
if (img.parentElement.href) imgStyle = &quot;cursor:hand;&quot; + imgStyle
var strNewHTML = &quot;&lt;span &quot; + imgID + imgClass + imgTitle
+ &quot; style=\&quot;&quot; + &quot;width:&quot; + img.width + &quot;px; height:&quot; + img.height + &quot;px;&quot; + imgStyle + &quot;;&quot;
+ &quot;filter:progid:DXImageTransform.Microsoft.AlphaImageLoader&quot;
+ &quot;(src=\'&quot; + img.src + &quot;\', sizingMethod='scale');\&quot;&gt;&lt;/span&gt;&quot;
img.outerHTML = strNewHTML
i = i-1
}
}
}
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.michaelfasani.com/2008/07/the-ultimate-png-fix-for-inline-images-in-ie6/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Smashing Magazine research Sign-Up Forms</title>
		<link>http://blog.michaelfasani.com/2008/07/smashing-magazine-research-sign-up-forms/</link>
		<comments>http://blog.michaelfasani.com/2008/07/smashing-magazine-research-sign-up-forms/#comments</comments>
		<pubDate>Fri, 18 Jul 2008 13:14:45 +0000</pubDate>
		<dc:creator>Michael Fasani</dc:creator>
		
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://blog.michaelfasani.com/?p=22</guid>
		<description><![CDATA[Smashing Magazine recently did a survey of current web form design patterns. They researched the top 100 popular web-sites and how they build web forms.
Basically the conclusion from both articles outlines the following:

the registration link is titled &#8220;sign up&#8221; (40%) and placed in the right upper corner
sign-up forms have a simplified layout to avoid distractions [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.smashingmagazine.com" target="_blank">Smashing Magazine</a> recently did a survey of current web form design patterns. They researched the <a href="http://88.198.60.17/images/web-form-design-patterns/urls.html" target="_blank">top 100 popular web-sites</a> and how they build web forms.</p>
<p>Basically the conclusion from both articles outlines the following:</p>
<ul>
<li>the registration link is titled &#8220;sign up&#8221; (40%) and placed in the right upper corner</li>
<li>sign-up forms have a simplified layout to avoid distractions for users (61%)</li>
<li>sign-up forms are one-page-forms (93%)</li>
<li>sign up forms attract visitors by explaining the benefits of registration (41%)</li>
<li>titles of the input fields are highlighted bold (62%)</li>
<li>no trend in the label alignment can be identified</li>
<li>designers tend to use few mandatory fields</li>
<li>designers tend to use few optional fields</li>
<li>vertically arranged fields are preferred to horizontally arranged fields (86%)</li>
<li>sign-up forms don&#8217;t have any hover, active or focus-effects (84%)</li>
<li>hints and help are either static (57%) or dynamic (33%) and appear below the input field (57%) or on the right side of the field (26%)</li>
<li>static validation is as popular as dynamic validation — no trend toward Ajax;</li>
<li>e-mail confirmation is not used (82%)</li>
<li>password confirmation is used (72%)</li>
<li>captcha can be used or not used (48% vs. 52%)</li>
<li>cancel button is not used (92%)</li>
<li>the submit-button is left-aligned (56%) or centered (26%)</li>
<li>thank-you message motivates users to proceed with exploring the services of the site (45%)</li>
</ul>
<p>Check out <a href="http://www.smashingmagazine.com/2008/07/04/web-form-design-patterns-sign-up-forms/" target="_blank">Web Form Design Patterns: Sign-Up Forms Part 1</a> and <a href="http://www.smashingmagazine.com/2008/07/08/web-form-design-patterns-sign-up-forms-part-2/" target="_blank">Web Form Design Patterns: Sign-Up Forms Part 2</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.michaelfasani.com/2008/07/smashing-magazine-research-sign-up-forms/feed/</wfw:commentRss>
		</item>
		<item>
		<title>WhatTheFont?</title>
		<link>http://blog.michaelfasani.com/2008/07/what-the-font/</link>
		<comments>http://blog.michaelfasani.com/2008/07/what-the-font/#comments</comments>
		<pubDate>Wed, 16 Jul 2008 11:44:12 +0000</pubDate>
		<dc:creator>Michael Fasani</dc:creator>
		
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://blog.michaelfasani.com/?p=18</guid>
		<description><![CDATA[WhatTheFont is a free font recognition system. Upload a scanned image of the font and instantly find the closest match. Ever wanted to find a font just like the one used by certain publications, corporations, or ad campaigns? Well now you can, using the WhatTheFont? search engine.
]]></description>
			<content:encoded><![CDATA[<p>WhatTheFont is a free font recognition system. Upload a scanned image of the font and instantly find the closest match. Ever wanted to find a font just like the one used by certain publications, corporations, or ad campaigns? Well now you can, using the <a href="http://www.myfonts.com/WhatTheFont/" target="_blank">WhatTheFont?</a> search engine.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.michaelfasani.com/2008/07/what-the-font/feed/</wfw:commentRss>
		</item>
		<item>
		<title>12 tips to help you build robust emails for all clients</title>
		<link>http://blog.michaelfasani.com/2008/07/12-tips-to-help-you-build-robust-emails/</link>
		<comments>http://blog.michaelfasani.com/2008/07/12-tips-to-help-you-build-robust-emails/#comments</comments>
		<pubDate>Wed, 09 Jul 2008 14:30:31 +0000</pubDate>
		<dc:creator>Michael Fasani</dc:creator>
		
		<category><![CDATA[CSS]]></category>

		<category><![CDATA[Emails]]></category>

		<category><![CDATA[Web Development]]></category>

		<category><![CDATA[XHTML]]></category>

		<category><![CDATA[browsers]]></category>

		<category><![CDATA[IE6]]></category>

		<category><![CDATA[ie7]]></category>

		<category><![CDATA[Outlook 2006]]></category>

		<category><![CDATA[Outlook 2007]]></category>

		<category><![CDATA[safari]]></category>

		<guid isPermaLink="false">http://blog.michaelfasani.com/?p=17</guid>
		<description><![CDATA[One of the tasks I work on daily for people is email builds. Building robust emails for a matrix of browsers, web-based mail clients and standalone clients can be a very tricky task because email clients sometimes strip out certain tags and render different elements in slightly different ways. After hours of building, testing and [...]]]></description>
			<content:encoded><![CDATA[<p>One of the tasks I work on daily for people is email builds. Building robust emails for a matrix of browsers, web-based mail clients and standalone clients can be a very tricky task because email clients sometimes strip out certain tags and render different elements in slightly different ways. After hours of building, testing and fixing bugs which arise due to these differences I have come up with some almost full proof ways of working with certain elements and created this list of 12 email tips which should really help you in your quest for good looking email design across all the major client enviroments.</p>
<p>The enviroments I concentrate on are what I consider to be the four key web-based email clients and the four key Windows and Apple Mac desktop clients:</p>
<ul>
<li>AOL Email (IE6, IE7, Firefox, Safari, Opera)</li>
<li>GMail / Google Mail (IE6, IE7, Firefox, Safari, Opera)</li>
<li>Yahoo Mail (IE6, IE7, Firefox, Safari, Opera)</li>
<li>Windows Live / Hotmail (IE6, IE7, Firefox, Safari, Opera)</li>
<li>Lotus Notes</li>
<li>Mac OS X Mail</li>
<li>Outlook 2003</li>
<li>Outlook 2007</li>
</ul>
<h3>Rule 1: Validate your document</h3>
<p>Validate your documents so that they validate in Firefox using the <a title="HTML Validator" href="http://users.skynet.be/mgueury/mozilla/" target="_blank">HTML Validator</a>. You can <a title="Download HTML Validator" href="https://addons.mozilla.org/en-US/firefox/addon/249" target="_blank">download the HTML Validator</a> from the Firefox add-on site. The only error that you should have is a missing doc-type. We do not need the doc-type because emails will be sent from deployment tools and are not strictly one doc-type or another on arrival. Also often the BODY, HTML and HEAD tags are removed before the deployment.</p>
<h3>Rule 2: Treat the outer table as the BODY</h3>
<p>Build your page inside a table with a background color if needed and with 100% width on it, this is then treated like the BODY of the document.</p>
<h3>Rule 3: Remove PADDING, BORDER and MARGIN on all tables</h3>
<p>Most web-based clients use CSS and this can remove padding, borders and margin and there for the email can not have layout which relies on margin and padding, instead use table cells with fix widths and heights to display where your content sits.</p>
<pre><code class="html">&lt;table cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot; bgcolor=&quot;#f8f8f8&quot;&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;
     &lt;table id=&quot;inner&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; border=&quot;0&quot; width=&quot;300&quot; bgcolor=&quot;#ffffff&quot;&gt;
       &lt;tr&gt;
          &lt;td width=&quot;10&quot;&gt;&lt;/td&gt;
          &lt;td width=&quot;290&quot;&gt;My content is here and 10px from the left edge&lt;/td&gt;
       &lt;/tr&gt;
     &lt;/table&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
</code></pre>
<h3>Rule 4: Avoid tags which may have line-height applied to them by the client</h3>
<p>Avoid using the P and the BR tags as differences in line-height will cause your email to brake and appear differently from client to client. Instead use tables and cells with fix widths and height to pad out your content and create paragraphs and margins.</p>
<h3>Rule 5: Use a mixture of HTML and CSS to format copy and links</h3>
<p>When formatting copy, links and fonts use a mixture of HTML and CSS as follows. The reason I do this is because of an inconsistency with the way clients underline links. In the past I have had issues with clients removing the underline, adding the underline and very odd double underlined links.</p>
<pre><code class="html">&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; style=&quot;font-size:10px;&quot; color=&quot;#666666&quot;&gt;
  Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In nulla mi, lobortis eu
&lt;a href=&quot;LinkURL&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none;&quot;&gt;&lt;font color=&quot;#666666&quot; style=&quot;text-decoration:underline;&quot;&gt;link title&lt;/font&gt;&lt;/a&gt;
  viverra in, adipiscing tempor, odio. Proin rhoncus quam sit amet mauris.&lt;/font&gt;
</code></pre>
<h3>Rule 6: Add display:block to all Images</h3>
<p>For some reason I have had weird behavior in Windows Live / Hotmail pushing images up or down a few pixels when displaying emails, after hours of messing about display:block fixes this problem. This is obviously something to do with the CSS applied to the email content by Hotmail as the page is rendered to screen.</p>
<pre><code class="html">&lt;img src=&quot;img/MyImage.gif&quot; width=&quot;100&quot; height=&quot;50&quot; alt=&quot;&quot; style=&quot;display:block;&quot;&gt;
</code></pre>
<h3>Rule 7: Make sure all images have the height and width set</h3>
<p>Make sure all images have the correct height and width set as Outlook 2003 and Outlook 2007 displays an alt message before downloading the images which reads <em>&#8220;Right-click here to download pictures. To help protect your privacy, Outlook prevented automatic download of this picture from the internet.&#8221;</em> This alt message will cause your images to grow and push your design out of shape. You still need your email to look neat before the images are downloaded.</p>
<h3>Rule 8: Avoid &amp;nbsp; in blank table cells</h3>
<p>Simple, its not needed and shouldn&#8217;t be used for anything other than stopping words from widowing on to the next line.</p>
<h3>Rule 9: Encapsulate images inside the TD tag</h3>
<p>If you have images inside TD tags, make sure you delete the white-space around them. Some clients will turn this whitespace into a new-line or a &amp;nbsp; and just generally do weird things which can break your design.</p>
<pre><code class="html">&lt;td&gt;&lt;img src=&quot;img/MyImage.gif&quot; width=&quot;100&quot; height=&quot;50&quot; alt=&quot;&quot; style=&quot;display:block;&quot;&gt;&lt;/td&gt;
</code></pre>
<h3>Rule 10: Align images using valign=top and valign=bottom</h3>
<p>Sometimes table cells are pushed higher because of whitespace and line-height often by specifically telling the image to sit at the top or the bottom of the cell you can fix this problem. Failing that make your image dimensions higher than 20px where possible.</p>
<h3>Rule 11: Specifically set all widths on the TD tag and do your maths homework!</h3>
<p>If a TABLE has a set width make sure that each TD inside that TABLE has a width set on it. Make sure that all the TD widths actually add up to the combined number of the width of the TABLE.</p>
<h3>Rule 12: Don&#8217;t use background images or animated GIF&#8217;s</h3>
<p>Outlook 2007 doesn&#8217;t support either, if you do wish to use an animated GIF make sure the message of your email is present in the first frame of the animation. Outlook 2007 will only display the first frame of the GIF.</p>
<h3>Make sure you test your page in all your chosen enviroments</h3>
<p>Load up your browsers and get testing. An easy way to deploy an email is to open up Internet Explorer 7 and go to &#8220;File > Send > Page by Email&#8230;&#8221; this allows you to email the entire document to your chosen client environment. A final test will need to be done just to make sure that the page doesn&#8217;t break once its processed by the deployment tool.</p>
<h3>Thats a Wrap</h3>
<p>There you have it, with a few extra bits of knowledge you should now be able to build robust emails for a number of client enviroments. These fixes can become out of date due to updates released by the end users choice of email client, sometimes a fix I am using just suddenly stops working in a specific client environment hence the importance of testing each email before you deploy it. Here is a sample chunk of code using all of the above techniques and should serve as a good starting point for your future email builds, good luck!</p>
<pre><code class="html">&lt;html&gt;
&lt;head&gt;
	&lt;title&gt;&lt;/title&gt;
&lt;/head&gt;
&lt;body bgcolor=&quot;#f8f8f8&quot;&gt;
	&lt;table id=&quot;position&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; border=&quot;0&quot; width=&quot;100%&quot; bgcolor=&quot;#f8f8f8&quot;&gt;
		&lt;tr&gt;
			&lt;td align=&quot;center&quot;&gt;
&lt;!-- Begin Header --&gt;
&lt;table id=&quot;no_images&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; border=&quot;0&quot; width=&quot;569&quot; align=&quot;center&quot;&gt;
    &lt;tr&gt;
        &lt;td style=&quot;text-align:center;&quot; height=&quot;20&quot;&gt;
            &lt;font face=&quot;Arial, Helvetica, sans-serif&quot; style=&quot;font-size:10px;&quot; color=&quot;#666666&quot;&gt;
                No pictures?
                &lt;a href=&quot;#&quot;&gt;
                    &lt;font color=&quot;#666666&quot; style=&quot;text-decoration:underline;&quot;&gt;
                        See the email in full
                    &lt;/font&gt;
                &lt;/a&gt;
            &lt;/font&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;
&lt;!-- End Header --&gt;
&lt;!-- Start GreyShadowBox --&gt;
&lt;table id=&quot;shadowbox&quot; width=&quot;569&quot; border=&quot;0&quot; cellpadding=&quot;0&quot; cellspacing=&quot;0&quot; bgcolor=&quot;#ffffff&quot; align=&quot;center&quot;&gt;
	&lt;tr&gt;
		&lt;td colspan=&quot;9&quot; width=&quot;569&quot; style=&quot;font-size:0px;&quot; height=&quot;4&quot; valign=&quot;bottom&quot;&gt;&lt;img src=&quot;img/template/shadtop.gif&quot; width=&quot;569&quot; height=&quot;4&quot; alt=&quot;&quot; style=&quot;display:block;&quot; &gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
        &lt;td width=&quot;1&quot; bgcolor=&quot;#f3f3f3&quot;&gt;&lt;/td&gt;&lt;td width=&quot;1&quot; bgcolor=&quot;#e8e8e8&quot;&gt;&lt;/td&gt;&lt;td width=&quot;1&quot; bgcolor=&quot;#dadada&quot;&gt;&lt;/td&gt;&lt;td width=&quot;1&quot; bgcolor=&quot;#c6c6c6&quot;&gt;&lt;/td&gt;
		    &lt;td width=&quot;561&quot; valign=&quot;top&quot; align=&quot;left&quot; bgcolor=&quot;#000066&quot;&gt;
                &lt;!-- Start main content area --&gt;
                &lt;font face=&quot;Arial, Helvetica, sans-serif&quot; style=&quot;font-size:13px;&quot; color=&quot;#ffffff&quot;&gt;
                		&lt;br&gt;
                		Main content area&lt;br&gt;
                		Main content area&lt;br&gt;
                		Main content area&lt;br&gt;
                		Main content area&lt;br&gt;
                		Main content area&lt;br&gt;
                		&lt;br&gt;
                &lt;/font&gt;
                &lt;!-- End main content area --&gt;
		    &lt;/td&gt;
        &lt;td width=&quot;1&quot; bgcolor=&quot;#c6c6c6&quot;&gt;&lt;/td&gt;&lt;td width=&quot;1&quot; bgcolor=&quot;#dadada&quot;&gt;&lt;/td&gt;&lt;td width=&quot;1&quot; bgcolor=&quot;#e8e8e8&quot;&gt;&lt;/td&gt;&lt;td width=&quot;1&quot; bgcolor=&quot;#f3f3f3&quot;&gt;&lt;/td&gt;
	&lt;/tr&gt;
	&lt;tr&gt;
		&lt;td colspan=&quot;9&quot; width=&quot;569&quot; style=&quot;font-size:0px;&quot; height=&quot;4&quot; valign=&quot;top&quot;&gt;&lt;img src=&quot;img/template/shadbot.gif&quot; width=&quot;569&quot; height=&quot;4&quot; alt=&quot;&quot; style=&quot;display:block;&quot; &gt;&lt;/td&gt;
	&lt;/tr&gt;
&lt;/table&gt;
&lt;!-- End GreyShadowBox --&gt;
&lt;!-- terms --&gt;
&lt;table id=&quot;terms&quot; width=&quot;528&quot; border=&quot;0&quot; align=&quot;center&quot; cellpadding=&quot;0&quot; cellspacing=&quot;1&quot; style=&quot;font-size:10px&quot;&gt;
    &lt;tr&gt;&lt;td height=&quot;10&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
    &lt;tr&gt;
        &lt;td align=&quot;left&quot;&gt;
        	&lt;font face=&quot;Arial, Helvetica, sans-serif&quot; style=&quot;font-size:10px;&quot; color=&quot;#666666&quot;&gt;
                My Company details and address would be here&lt;/font&gt;
        &lt;/td&gt;
        &lt;tr&gt;&lt;td height=&quot;10&quot;&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;
        &lt;td align=&quot;left&quot;&gt;
                &lt;font face=&quot;Arial, Helvetica, sans-serif&quot; style=&quot;font-size:10px;&quot;&gt;
                &lt;a href=&quot;#&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none;&quot;&gt;&lt;font color=&quot;#000066&quot; style=&quot;text-decoration:underline;&quot;&gt;Help&lt;/font&gt;&lt;/a&gt;
                &amp;nbsp;&amp;nbsp;&amp;nbsp;
                &lt;a href=&quot;#&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none;&quot;&gt;&lt;font color=&quot;#000066&quot; style=&quot;text-decoration:underline;&quot;&gt;Terms&lt;/font&gt;&lt;/a&gt;
                &amp;nbsp;&amp;nbsp;&amp;nbsp;
                &lt;a href=&quot;#&quot; target=&quot;_blank&quot; style=&quot;text-decoration:none;&quot;&gt;&lt;font color=&quot;#000066&quot; style=&quot;text-decoration:underline;&quot;&gt;Unsubscribe&lt;/font&gt;&lt;/a&gt;
                &lt;/font&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;&lt;td height=&quot;15&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;
&lt;!-- End Terms --&gt;
&lt;!-- End Footer --&gt;
			&lt;/td&gt;
		&lt;/tr&gt;
	&lt;/table&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.michaelfasani.com/2008/07/12-tips-to-help-you-build-robust-emails/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Download VisualSVN Server</title>
		<link>http://blog.michaelfasani.com/2008/07/16download-visualsvn-server/</link>
		<comments>http://blog.michaelfasani.com/2008/07/16download-visualsvn-server/#comments</comments>
		<pubDate>Tue, 08 Jul 2008 15:50:11 +0000</pubDate>
		<dc:creator>Michael Fasani</dc:creator>
		
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://blog.michaelfasani.com/?p=16</guid>
		<description><![CDATA[VisualSVN Server is a package that contains everything you need to install, configure     and manage Subversion server for your team on Windows platform. It     includes Subversion, Apache and a management console.
Visit the website for VisualSVN Server
]]></description>
			<content:encoded><![CDATA[<p>VisualSVN Server is a package that contains everything you need to install, configure     and manage <strong>Subversion server</strong> for your team on <strong>Windows platform.</strong> It     includes Subversion, Apache and a management console.</p>
<p><a title="VisualSVN Server" href="http://www.visualsvn.com/server/" target="_blank">Visit the website for VisualSVN Server</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.michaelfasani.com/2008/07/16download-visualsvn-server/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
