<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>Michael P. Gilbert</title>
	
	<link>http://www.mpgilbert.com</link>
	<description>Experienced Front-end Web Developer</description>
	<lastBuildDate>Mon, 02 Apr 2012 23:52:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/mpgilbert" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="mpgilbert" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">mpgilbert</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Site Launch: IIDA Texas Oklahoma Chapter</title>
		<link>http://www.mpgilbert.com/site-launch-iida-texas-oklahoma-chapter</link>
		<comments>http://www.mpgilbert.com/site-launch-iida-texas-oklahoma-chapter#comments</comments>
		<pubDate>Wed, 28 Dec 2011 22:49:56 +0000</pubDate>
		<dc:creator>michael</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[Ajax / Scripting]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Web Standards]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.mpgilbert.com/?p=558</guid>
		<description><![CDATA[I&#8217;m really excited to announce the launch of my latest collaboration with Reeves Design House for the IIDA Texas Oklahoma Chapter. The International Interior Design Association (IIDA) has chapters all over the world so working on this project was a great opportunity. The site is a bit bigger than most that we have developed recently [...]]]></description>
			<content:encoded><![CDATA[<p><img src="/images/portfolio/client_iida-tx-ok_sm.jpg" alt="Screen Shot of IIDA Texas Oklahoma Chapter Website" class="alignright colorbox-558" />I&#8217;m really excited to announce the launch of my latest collaboration with <a href="http://www.reevesdesignhouse.com/" target="_blank" title="Link opens in a new window or tab.">Reeves Design House</a> for the <a href="http://www.iida-tx-ok.org/" target="_blank" title="Link opens in a new window or tab.">IIDA Texas Oklahoma Chapter</a>. The International Interior Design Association (IIDA) has chapters all over the world so working on this project was a great opportunity. The site is a bit bigger than most that we have developed recently and it was a wonderful opportunity to dig into the <a href="http://www.wordpress.org/" target="_blank" title="Link opens in a new window or tab.">WordPress</a> documentation and create a highly customized and finely hand-crafted theme. This project has gotten me even more excited about the latest technology advancements with WordPress that make it an increasingly powerful content management system (CMS). At this point it&#8217;s definitely my favorite. Every time I work with it I&#8217;m more impressed with how many complex things it can do. Plus, clients seem to absolutely love working with it to maintain their own content using the built-in visual editor&mdash;it&#8217;s just like using a word processor. So, check out the newly redesigned site for <a href="http://www.iida-tx-ok.org/" target="_blank" title="Link opens in a new window or tab.">IIDA Texas Oklahoma Chapter</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mpgilbert.com/site-launch-iida-texas-oklahoma-chapter/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Site Launch: Great Endings Catering and Event Company</title>
		<link>http://www.mpgilbert.com/site-launch-great-endings-catering-and-event-company</link>
		<comments>http://www.mpgilbert.com/site-launch-great-endings-catering-and-event-company#comments</comments>
		<pubDate>Fri, 11 Feb 2011 23:30:56 +0000</pubDate>
		<dc:creator>michael</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[Ajax / Scripting]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Web Standards]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.mpgilbert.com/?p=421</guid>
		<description><![CDATA[They say many hands make light work. This is especially true in website development when you&#8217;ve got a great group of teammates you can count on. My latest project was another collaboration with Mark Reeves, who created a wonderfully flexible and visually appealing site design. Due to the inconvenient timing of my recent home move, [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.mpgilbert.com/wp-content/uploads/2011/03/client_greatendings_sm.jpg" alt="Screen shot of Great Endings site" width="100" height="70" class="alignright colorbox-421" />They say many hands make light work. This is especially true in website development when you&#8217;ve got a great group of teammates you can count on. My latest project was another collaboration with <a href="http://www.reevesdesignhouse.com/" target="_blank" title="Link opens in a new window or tab.">Mark Reeves</a>, who created a wonderfully flexible and visually appealing site design. Due to the inconvenient timing of my recent home move, we decided to enlist the skills of the ever-talented <a href="http://kevinlamping.com/" target="_blank" title="Link opens in a new window or tab.">Kevin Lamping</a>. Usually I work independently on the front-end coding of a site, but Kevin really came through in a pinch. Take a look at the <a href="http://greatendings.com/" target="_blank" title="Link opens in a new window or tab.">Great Endings Catering and Event Company</a> site. Don&#8217;t forget to order a tasty pumpkin cake roll while you&#8217;re there!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mpgilbert.com/site-launch-great-endings-catering-and-event-company/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Site Launch: Salem &amp; Associates</title>
		<link>http://www.mpgilbert.com/site-launch-salem-associates</link>
		<comments>http://www.mpgilbert.com/site-launch-salem-associates#comments</comments>
		<pubDate>Mon, 15 Nov 2010 23:12:48 +0000</pubDate>
		<dc:creator>michael</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Web Standards]]></category>

		<guid isPermaLink="false">http://www.mpgilbert.com/?p=412</guid>
		<description><![CDATA[Sometimes the simpler sites are more fun to build. Don&#8217;t get me wrong, I really enjoy building complex sites in a CMS with loads of plugins and other flashy bits and pieces. But it&#8217;s a good break to be able to build a straightforward PHP site without all the bells and whistles. The Salem &#038; [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.mpgilbert.com/wp-content/uploads/2011/03/client_salem_sm.jpg" alt="Screen shot of Salem &amp; Associates site" width="100" height="73" class="imgright colorbox-412" />Sometimes the simpler sites are more fun to build. Don&#8217;t get me wrong, I really enjoy building complex sites in a <acronym title="Content Management System">CMS</acronym> with loads of plugins and other flashy bits and pieces. But it&#8217;s a good break to be able to build a straightforward PHP site without all the bells and whistles. The Salem &#038; Associates site is a great example of the latter. The stunning photographs and clean classic design speak for themselves. Take a look at the <a href="http://www.salemandassociates.com/" target="_blank" title="Link opens in a new window or tab.">Salem &amp; Associates</a> site and see if you agree.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mpgilbert.com/site-launch-salem-associates/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HTML5, CSS3, Web Fonts, and Other Fun Stuff</title>
		<link>http://www.mpgilbert.com/html5-css3-web-fonts</link>
		<comments>http://www.mpgilbert.com/html5-css3-web-fonts#comments</comments>
		<pubDate>Tue, 21 Sep 2010 22:35:55 +0000</pubDate>
		<dc:creator>michael</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Web Standards]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.mpgilbert.com/?p=386</guid>
		<description><![CDATA[For the past several months I&#8217;ve been experimenting with an exciting set of web technologies. You may have heard the latest buzzword for what I&#8217;ve been doing. You know the one: HTML5. If something is new and cool, it must have been done with HTML5, right? Well, not necessarily. It&#8217;s true that HTML5 has some [...]]]></description>
			<content:encoded><![CDATA[<p><img class="imgright colorbox-386" src="http://www.mpgilbert.com/images/client_baatz_v2_sm.jpg" border="0" alt="" width="100" height="82" />For the past several months I&#8217;ve been experimenting with an exciting set of web technologies. You may have heard the latest buzzword for what I&#8217;ve been doing. You know the one: HTML5. If something is new and cool, it must have been done with HTML5, right? Well, not necessarily. It&#8217;s true that HTML5 has some fun and exciting possibilities on the horizon (and some of it is indeed ready for prime time today). But there are some other fun web technologies gaining in popularity at the same time. It&#8217;s the combination of these technologies that I&#8217;ve been having fun with. If you&#8217;d like to use the general purpose term HTML5 that&#8217;s fine with me. I won&#8217;t even correct you&mdash;at least not while you&#8217;re within hearing range.<span id="more-386"></span>Last year I wrote a few posts on another popular buzzword: Ajax (read <a href="http://www.mpgilbert.com/ajax">part 1</a>, <a href="http://www.mpgilbert.com/ajax-sandbox">part 2</a>, and <a href="http://www.mpgilbert.com/ajax-accessibility">part 3</a>). Simply put, HTML5 is the latest version/specification of HTML. It&#8217;s actually still in development as I write this. There was a lot of fuss leading up to what is now called HTML5 (and <em>why</em> it&#8217;s called HTML5 instead of XHTML 2, for that matter), but that&#8217;s a <a href="http://jeffcroft.com/blog/2010/aug/02/term-html5/" target="_blank" title="Link opens in a new tab or window.">topic</a> for another day. What&#8217;s more interesting is what can be done with it when combined with a few of its friends. And I&#8217;ve found that the best way to learn what a new technology can do is to build something myself. So I&#8217;ve been doing that off and on over the last few weeks.</p>
<p>For me, this whole journey started over a year ago when I first started seeing some HTML5 examples in the wild. At the <a href="http://www.sxsw.com/interactive" target="_blank" title="Link opens in a new tab or window.">South by Southwest Interactive (SXSWi)</a> conference in Austin earlier this year it became apparent to me that most everyone else in the web design/development industry started getting excited as well&mdash;it was everywhere! At every turn I heard people repeating the same sort of thing: &#8220;Hey, did you see that cool HTML5 demo in that last session?!&#8221; So I decided it was time to start building some demos and see what was possible.In an effort to stick my toes in the shallow end of the pool, I started developing some small bits and pieces on some of my freelance projects. I think the first HTML5 thing I implemented&mdash;other than the dramatically simplified doctype&mdash;was the &lt;video&gt; element, complete with extensive <a href="http://camendesign.com/code/video_for_everybody" target="_blank" title="Link opens in a new tab or window.">fallback for browsers</a> that didn&#8217;t support it. On this latest project, I decided to go all out. It became a game for me to find all the cool new toys I could use to construct my new invention&mdash;while at the same time maintaining the integrity of the content in multiple browsers/platforms. It may not look exactly the same in every browser, but the content is consistently usable, highly accessible, and search-engine friendly. For Internet Explorer 6 and below, I decided to use Andy Clarke&#8217;s method called <a href="http://forabeautifulweb.com/blog/about/universal_internet_explorer_6_css" target="_blank" title="Link opens in a new tab or window.">Universal Internet Explorer 6 CSS</a> in order to avoid wasted time and effort that, in my opinion, just leads to heartache. Andy&#8217;s beautifully elegant solution delivers &#8220;just great typography for headings, paragraphs, quotations, lists, tables and forms and no styling of layout.&#8221; I think it&#8217;s a great solution to a much-debated issue. Your results may vary. Discuss amongst yourselves. Rinse and repeat.I used a bunch of HTML5&#8242;s new structural elements like &lt;header&gt;, &lt;footer&gt;, &lt;nav&gt;, &lt;aside&gt; and others. So far so good (with some coaxing for Internet Explorer&#8230; surprise, surprise). I decided not to use the new HTML5 outline algorithm until a later date (it&#8217;s optional anyway). I added some <abbr title="Accessible Rich Internet Applications">ARIA</abbr> roles for accessibility help. Then I explored some CSS3 features such as rounded corners, drop shadows for boxes as well as text, and transparency. And finally, I threw in some web fonts for good measure (on headings mostly). I&#8217;d like to come back at some point and explore web fonts in more detail, but again, that&#8217;s a post for another day.</p>
<p>So, enough tech talk. Let&#8217;s see the results already! Take a look at the newly re-designed <a href="http://www.baatzconsulting.com/" target="_blank" title="Link opens in a new tab or window.">Baatz Consulting</a> site and let me know what you think. If you&#8217;re a tech geek like me, please peek under the hood and have a look at the source code. More importantly, if you&#8217;ve been having fun with HTML5 (and CSS3, web fonts, etc.), <a href="http://www.mpgilbert.com/contact/">send me a link</a> and we can compare notes about what we&#8217;re all learning together.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mpgilbert.com/html5-css3-web-fonts/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Site Launch: Linde Lee, Inc.</title>
		<link>http://www.mpgilbert.com/site-launch-linde-lee-inc</link>
		<comments>http://www.mpgilbert.com/site-launch-linde-lee-inc#comments</comments>
		<pubDate>Tue, 09 Mar 2010 05:15:06 +0000</pubDate>
		<dc:creator>michael</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Web Standards]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.mpgilbert.com/?p=378</guid>
		<description><![CDATA[I&#8217;m always eager to dive into a project that presents a new, or otherwise unique, challenge. In this case, Mark Reeves at Reeves Design House created a visual design based on a grid of ten rectangular boxes &#8212; consistent across the whole site. This might seem fairly simple, but from a coding standpoint it can [...]]]></description>
			<content:encoded><![CDATA[<p><img class="imgright colorbox-378" src="http://www.mpgilbert.com/images/client_lindeleeinc_sm.jpg" border="0" alt="Screen shot of the Linde Lee, Inc. site" width="100" height="56" />I&#8217;m always eager to dive into a project that presents a new, or otherwise unique, challenge. In this case, Mark Reeves at <a href="http://www.reevesdesignhouse.com/" target="_blank" title="Link opens in a new window or tab.">Reeves Design House</a> created a visual design based on a grid of ten rectangular boxes &mdash; consistent across the whole site. This might seem fairly simple, but from a coding standpoint it can be tricky. It&#8217;s a balancing act between absolutely positioning multiple content boxes and ensuring that the content can grow vertically without disrupting the grid system. One more tricky requirement from the client: Can it be built in such a way that &#8220;non-techies&#8221; can maintain the content? Sure, why not! So, this site is another fine example of using <a href="http://www.mpgilbert.com/wordpress-as-a-cms/">WordPress as a <acronym title="Content Management System">CMS</acronym></a>. I&#8217;m continually amazed how far we can stretch a simple blogging system to the limit in order to provide a client-friendly solution to a common problem in an extremely short amount of time. Take a look at the <a href="http://lindeleeinc.com/" target="_blank" title="Link opens in a new window or tab.">Linde Lee, Inc.</a> site and have a look around. The site includes some great photos of their <a href="http://lindeleeinc.com/showroom/" target="_blank" title="Link opens in a new window or tab.">showroom</a> at the historic <a href="http://www.dallasmarketcenter.com/" target="_blank" title="Link opens in a new window or tab.">Dallas Market Center</a> just north of downtown Dallas.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mpgilbert.com/site-launch-linde-lee-inc/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Site Launch: Dr. Karsan, Facial Plastic Surgeon</title>
		<link>http://www.mpgilbert.com/site-launch-dr-karsan-facial-plastic-surgeon</link>
		<comments>http://www.mpgilbert.com/site-launch-dr-karsan-facial-plastic-surgeon#comments</comments>
		<pubDate>Thu, 04 Feb 2010 04:43:42 +0000</pubDate>
		<dc:creator>michael</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Web Standards]]></category>

		<guid isPermaLink="false">http://www.mpgilbert.com/?p=371</guid>
		<description><![CDATA[I&#8217;m excited to announce the launch of a site for Dr. Karsan, a facial plastic surgeon in the Dallas area. It&#8217;s a pretty straightforward site built with PHP, XHTML, CSS, and JavaScript. It&#8217;s clean, functional, usable, and accessible. Yet another beautiful design by Mark Reeves at Reeves Design House. Take a look at the Dr. [...]]]></description>
			<content:encoded><![CDATA[<p><img class="imgright colorbox-371" src="http://www.mpgilbert.com/images/client_drkarsan_sm.jpg" border="0" alt="Screen shot of the Dr. Karsan site" width="100" height="67" />I&#8217;m excited to announce the launch of a site for Dr. Karsan, a facial plastic surgeon in the Dallas area. It&#8217;s a pretty straightforward site built with PHP, XHTML, CSS, and JavaScript. It&#8217;s clean, functional, usable, and accessible. Yet another beautiful design by Mark Reeves at <a href="http://www.reevesdesignhouse.com/" target="_blank" title="Link opens in a new window or tab.">Reeves Design House</a>. Take a look at the <a href="http://www.drkarsan.com/" target="_blank" title="Link opens in a new window or tab.">Dr. Karsan</a> site and see what you think.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mpgilbert.com/site-launch-dr-karsan-facial-plastic-surgeon/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Site Launch: Fun with WordPress as a CMS</title>
		<link>http://www.mpgilbert.com/site-launch-triton-urbanmoto-w2t</link>
		<comments>http://www.mpgilbert.com/site-launch-triton-urbanmoto-w2t#comments</comments>
		<pubDate>Tue, 29 Sep 2009 21:05:35 +0000</pubDate>
		<dc:creator>michael</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[Ajax / Scripting]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Web Standards]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.mpgilbert.com/?p=344</guid>
		<description><![CDATA[Over the past several months I&#8217;ve been working with Glide Design &#8212; an Austin-based web site design firm &#8212; on a number of interesting projects. We&#8217;ve been building the sites with WordPress which is a great solution for a lightweight CMS. I&#8217;ve had a lot of fun working on these projects and learning as much [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.mpgilbert.com/wp-content/uploads/2009/09/thumb_triton_urban_w2t.jpg" alt="Screen Shot of Triton Custom Homes, Urban Moto Shop, Water to Thrive Web Sites" width="116" height="141" class="imgright-noframe colorbox-344" />Over the past several months I&#8217;ve been working with <a href="http://www.glidedesign.com/" target="_blank" title="Link opens in a new window or tab.">Glide Design</a> &mdash; an Austin-based web site design firm &mdash; on a number of interesting projects. We&#8217;ve been building the sites with WordPress which is a great solution for a <a href="http://www.mpgilbert.com/wordpress-as-a-cms">lightweight <acronym title="Content Management System">CMS</acronym></a>. I&#8217;ve had a lot of fun working on these projects and learning as much as I can about how to extend WordPress into more than just a simple blogging system. They&#8217;re not only easy to build but clients also appreciate the simplicity of the admin interface which allows them to maintain their own site content. The following three sites are a sample of the projects I&#8217;ve been working on recently. Each one had its own fun challenges and rewarding learning opportunities. Check out <a href="http://tritonaustin.com/" target="_blank" title="Link opens in a new window or tab.">Triton Custom Homes</a>, <a href="http://urbanmotoshop.com/" target="_blank" title="Link opens in a new window or tab.">Urban Moto Shop</a>, and <a href="http://watertothrive.org/" target="_blank" title="Link opens in a new window or tab.">Water to Thrive</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mpgilbert.com/site-launch-triton-urbanmoto-w2t/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is Ajax (and what is it not)? Part 3 of 3</title>
		<link>http://www.mpgilbert.com/ajax-accessibility</link>
		<comments>http://www.mpgilbert.com/ajax-accessibility#comments</comments>
		<pubDate>Thu, 17 Sep 2009 06:08:01 +0000</pubDate>
		<dc:creator>michael</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[Ajax / Scripting]]></category>
		<category><![CDATA[Resources]]></category>
		<category><![CDATA[Web Standards]]></category>

		<guid isPermaLink="false">http://www.mpgilbert.com/?p=288</guid>
		<description><![CDATA[This is the third post (of three) discussing the topic of Ajax. If you haven&#8217;t already done so, you might want to go back and read Part 1 (general introduction, definitions, and history) and Part 2 (development sandbox with examples). Now that I&#8217;ve covered the basics of Ajax and implemented some demos, I&#8217;d like to [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.mpgilbert.com/wp-content/uploads/2009/08/ajax_glossy_3.jpg" alt="Ajax" width="100" height="61" class="imgright-noframe colorbox-288" />This is the third post (of three) discussing the topic of Ajax. If you haven&#8217;t already done so, you might want to go back and read <a href="http://www.mpgilbert.com/ajax/">Part 1</a> (general introduction, definitions, and history) and <a href="http://www.mpgilbert.com/ajax-sandbox/">Part 2</a> (development sandbox with examples). Now that I&#8217;ve covered the basics of Ajax and implemented some demos, I&#8217;d like to address the issue of <strong>Ajax accessibility</strong>. Does the use of Ajax necessarily exclude people with disabilities? Does Ajax cause a roadblock for search engines (search engine optimization) and mobile devices? Are there ways to improve the accessibility of Ajax and JavaScript-enhanced websites?As I&#8217;m writing this, I&#8217;m wondering what kinds of accessibility concerns there are in the sandbox demos I included in <a href="http://www.mpgilbert.com/ajax-sandbox/">Part 2</a> of this series. Did you notice some issues as you were trying out the demos? Perhaps I&#8217;ll have to put them to the test in a more formal manner&#8230; but that&#8217;s a task for another day (and another blog post). In this post I&#8217;d like to discuss some general accessibility issues and possible solutions that are available to web developers today. It&#8217;s by no means an exhaustive list or a definitive hands-on guide, but hopefully it&#8217;s a good starting point for further research.<span id="more-288"></span><br />
<h3>Simple Interactions</h3>
<p>I think the first point that needs to be made is that Ajax, by definition, requires the use of JavaScript. Even if you&#8217;re not making a call back to the server using the <a href="http://en.wikipedia.org/wiki/XMLHttpRequest">XMLHttpRequest</a> object, JavaScript is a key component in many websites today using an increasing number of animated browser effects. That&#8217;s not a bad thing by itself. But what if JavaScript is disabled or not available? For instance, some mobile devices have limited, if any, JavaScript support. Some <a href="http://en.wikipedia.org/wiki/Screen_readers">screen readers</a> have better JavaScript support than others. Search engines are unable to follow JavaScript constructed links, so search engine optimization strategies could be hindered. For all of these cases, developers need to provide an alternate means of reaching the website&#8217;s content. However, creating two different versions of the same content can be a maintenance nightmare as well as an expensive development option. What if there was a better way? Let&#8217;s take a look at some alternatives that might offer some assistance to web developers.<br />
<h3>Creating New Scripting Habits</h3>
<p>Before we get into the more complex Ajax examples, let&#8217;s start with the simpler methods, such as JavaScript enhanced links. In a book called <a href="http://bulletproofajax.com/">Bulletproof Ajax</a>, <a href="http://adactio.com/">Jeremy Keith</a> presents a new method which I find very useful. He calls it <strong>hijax</strong> and it is built on the idea that you can &#8220;hijack&#8221; regular links, through the use of <a href="http://en.wikipedia.org/wiki/DOM_scripting">DOM scripting</a>, to add an unobtrusive behavior layer to your web pages. Without this layer, the links still work as expected, but if JavaScript is available, the user gets an enhanced experience. Jeremy encourages us to avoid bad habits of the past where we used scripting methods that caused accessibility issues. Here are two methods in particular to avoid:Using the JavaScript pseudo-protocol:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">&lt;a href=&quot;javascript:window.open('help.html')&quot;&gt;contextual help&lt;/a&gt;</pre></td></tr></table></div>

<p>Using a fake link:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">&lt;a href=&quot;#&quot; onclick=&quot;window.open('help.html'); return false;&quot;&gt;contextual help&lt;/a&gt;</pre></td></tr></table></div>

<p>A better method uses a real link with some added scripting. If JavaScript is unavailable, the link still works:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">&lt;a href=&quot;help.html&quot; onclick=&quot;window.open(this.getAttribute('href')); return false;&quot;&gt;contextual help&lt;/a&gt;</pre></td></tr></table></div>

<p>But, we still have some inline JavaScript and that&#8217;s not always the best way to go. Here&#8217;s where things get exciting. How about creating a normal link and add a CSS class that can be &#8220;hijacked&#8221; by a simple JavaScript function?Here&#8217;s the HTML code:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="html" style="font-family:monospace;">&lt;a href=&quot;help.html&quot; class=&quot;help&quot;&gt;contextual help&lt;/a&gt;</pre></td></tr></table></div>

<p>&#8230;and here&#8217;s the JavaScript function to go along with it:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> doPopups<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>document.<span style="color: #660066;">getElementsByTagName</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><span style="color: #003366; font-weight: bold;">var</span> links <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementsByTagName</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;a&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>for <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> i<span style="color: #339933;">=</span><span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> links.<span style="color: #660066;">length</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>links<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">className</span>.<span style="color: #660066;">match</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;help&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>links<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">onclick</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>window.<span style="color: #000066;">open</span><span style="color: #009900;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">getAttribute</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;href&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>return <span style="color: #003366; font-weight: bold;">false</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#125;</span></pre></td></tr></table></div>

<p>See how that works? The <em>doPopups</em> function creates an array of all the links on the page and then adds an <em>onclick</em> event (the popup window) for any links that have a class of <em>help</em>. This is a very simplified example of Jeremy&#8217;s hijax concept. There are additional recommendations for dealing with data retrieved via the XMLHttpRequest object which are more appropriate for true Ajax development methods. I encourage you to check out his excellent books, <a href="http://bulletproofajax.com/">Bulletproof Ajax</a> and <a href="http://domscripting.com/book/">DOM Scripting</a> for additional details.<br />
<h3>More Complex Interactions</h3>
<p>When it comes to more complex Ajax methods, the subject of accessibility becomes even more important. Some Ajax techniques dynamically add new content to the page in a way that might not be obvious to the casual observer (or completely hidden in the background and therefore invisible to the user). This situation becomes critical for screen reader users since they may not get any sort of notification when the page has been updated and therefore the screen reader may not read the information. Imagine how frustrating it would be to fill out a form and receive no feedback about potential errors. You click the submit button and it just returns you to the form. In order for dynamic page updates to be accessible, there needs to be a way of effectively notifying the user so that they can read the new content.<br />
<h3>Accessible Rich Internet Applications (WAI-ARIA)</h3>
<p>There&#8217;s so much more that can be done to make Ajax (and other complex scripted interactions) more accessible. The <a href="http://www.w3.org/WAI/">Web Accessibility Initiative</a> is currently developing a specification called <a href="http://www.w3.org/WAI/intro/aria.php">Accessible Rich Internet Applications</a> (WAI-ARIA) that enables web developers to create web applications in a more accessible way.<br />
<h4>Keyboard Navigation</h4>
<p>Being able to navigate a website using the keyboard alone (without the aid of a mouse) is an essential requirement for basic accessibility. By default, only links and form elements can receive focus (make it available for user interaction). Try it out for yourself and you&#8217;ll see what I mean. Start at the top of a web page and press the Tab key several times to &#8220;focus&#8221; links and form elements as you go down the page. However, a dynamically displayed error message, for example, wouldn&#8217;t be focusable for keyboard-only and screen reader users. Therefore it would likely be missed altogether. WAI-ARIA helps alleviate this problem by enabling all visible elements to be focusable by extending the <em>tabindex</em> attribute in HTML.<br />
<h4>Roles, States, and Properties</h4>
<p>WAI-ARIA provides the <em>role attribute</em> to help define widgets (sliders, tree menus, etc.) and page structure (sections, navigation, etc.). See the <a href="http://www.w3.org/TR/wai-aria/#roles">full list of roles</a> available. Additional information about how a user can interact with a widget can be provided with WAI-ARIA&#8217;s <em>states and properties</em>. See the <a href="http://www.w3.org/TR/wai-aria/#supported">full list of states and properties</a> available.<br />
<h4>Live Regions</h4>
<p>Areas of a web page that will change dynamically using Ajax can be specified as <em>live regions</em>. Live regions provide a mechanism for notifying the assistive device (such as a screen reader) that new or updated content is available on the page and how the user should be notified about the content. The WAI-ARIA specification provides additional information on <a href="http://www.w3.org/TR/wai-aria/#liveregions">live regions</a>.<br />
<h4>Additional WAI-ARIA Resources</h4>
<p>I&#8217;ve included only a few of the many features available with WAI-ARIA. Here are some additional references available for further reading.
<ul>
<li><a href="http://www.w3.org/TR/wai-aria/">Accessible Rich Internet Applications (WAI-ARIA) 1.0</a></li>
<li><a href="http://www.w3.org/WAI/PF/aria-practices/">WAI-ARIA Best Practices</a></li>
<li><a href="http://www.w3.org/WAI/aria/faq">WAI-ARIA FAQ</a></li>
<li><a href="http://webaim.org/techniques/aria/">WebAIM&#8217;s Accessibility of Rich Internet Applications</a></li>
<li><a href="http://dev.opera.com/articles/view/introduction-to-wai-aria/">Opera&#8217;s Introduction to WAI ARIA</a></li>
<li><a href="http://wiki.codetalks.org/wiki/index.php/ARIA_Quick_Reference">CodeTalks&#8217; ARIA Quick Reference</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.mpgilbert.com/ajax-accessibility/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is Ajax (and what is it not)? Part 2 of 3</title>
		<link>http://www.mpgilbert.com/ajax-sandbox</link>
		<comments>http://www.mpgilbert.com/ajax-sandbox#comments</comments>
		<pubDate>Mon, 14 Sep 2009 02:48:41 +0000</pubDate>
		<dc:creator>michael</dc:creator>
				<category><![CDATA[Ajax / Scripting]]></category>
		<category><![CDATA[Resources]]></category>
		<category><![CDATA[Web Standards]]></category>

		<guid isPermaLink="false">http://www.mpgilbert.com/?p=269</guid>
		<description><![CDATA[This is the second post (of three) discussing the topic of Ajax. In case you haven&#8217;t already done so, you might want to read Part 1. It&#8217;s not essential, but it will provide some general context and a roadmap of the three blog posts.Now that I&#8217;ve covered the basics about what Ajax is and is [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.mpgilbert.com/wp-content/uploads/2009/08/ajax_glossy_3.jpg" alt="Ajax" width="100" height="61" class="imgright-noframe colorbox-269" />This is the second post (of three) discussing the topic of Ajax. In case you haven&#8217;t already done so, you might want to read <a href="http://www.mpgilbert.com/ajax">Part 1</a>. It&#8217;s not essential, but it will provide some general context and a roadmap of the three blog posts.Now that I&#8217;ve covered the basics about what Ajax is and is not, I&#8217;d like to spend some time playing around with some actual Ajax code. I&#8217;ll go ahead and say up front that there&#8217;s not much original here. I&#8217;m not professing to be an expert Ajax programmer (or hard-core JavaScript programmer, for that matter). Using a home improvement analogy, I&#8217;m not trying to build my own hammer, screwdriver, or copper tubing from scratch; I&#8217;m holding the tools in my own hands and trying them out to see what each can do. In other words, I&#8217;m exploring the use of readily available Ajax and other JavaScript components in my own server environment.<span id="more-269"></span>I&#8217;m a firm believer that if you want to better understand something, it&#8217;s important to take it apart and try it out for yourself. I encourage you to do the same thing&#8230; if one of the following demos catches your eye, go read more about it on the original site and create your own demo on your site. Style it up, make some changes, and have fun. I&#8217;ve provided links to all the original sites for easy reference.Enough discussion already&#8230; here are some Ajax (and Ajax-like) demos for your enjoyment.
<ul>
<li><a href="http://www.mpgilbert.com/sandbox/ajax/edit-in-place/">Edit in Place</a></li>
<li><a href="http://www.mpgilbert.com/sandbox/ajax/tablesorter/">Sortable Table</a></li>
<li><a href="http://www.mpgilbert.com/sandbox/ajax/thickbox/">Modal Window</a></li>
<li><a href="http://www.mpgilbert.com/sandbox/ajax/content-slider/">Content Slider</a></li>
<li><a href="http://www.mpgilbert.com/sandbox/ajax/galleriffic/">Photo Gallery</a></li>
<li><a href="http://www.mpgilbert.com/sandbox/ajax/jqueryui/">jQuery UI</a></li>
<li><a href="http://www.mpgilbert.com/sandbox/ajax/jquerytools/">jQuery Tools</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.mpgilbert.com/ajax-sandbox/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What is Ajax (and what is it not)? Part 1 of 3</title>
		<link>http://www.mpgilbert.com/ajax</link>
		<comments>http://www.mpgilbert.com/ajax#comments</comments>
		<pubDate>Sun, 30 Aug 2009 01:05:02 +0000</pubDate>
		<dc:creator>michael</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[Ajax / Scripting]]></category>
		<category><![CDATA[Resources]]></category>
		<category><![CDATA[Web Standards]]></category>

		<guid isPermaLink="false">http://www.mpgilbert.com/?p=211</guid>
		<description><![CDATA[Lately I&#8217;ve noticed a huge variance in the usage of the term Ajax. So I&#8217;ve decided to take some time to explore the topic and share my findings in a few blog posts. In this first post, I&#8217;d like to share some info from the original blog post that defined and popularized the new interaction [...]]]></description>
			<content:encoded><![CDATA[<p><img class="imgright-noframe colorbox-211" src="http://www.mpgilbert.com/wp-content/uploads/2009/08/ajax_glossy_3.jpg" alt="Ajax" width="100" height="61" />Lately I&#8217;ve noticed a huge variance in the usage of the term <strong>Ajax</strong>. So I&#8217;ve decided to take some time to explore the topic and share my findings in a few blog posts. In this first post, I&#8217;d like to share some info from the original blog post that <strong>defined and popularized</strong> the new interaction design approach. I&#8217;ll include some historical details, various definitions, and even a few technical bits and pieces thrown in for good measure.In the <a title="Read Part 2 of 3" href="http://www.mpgilbert.com/ajax-sandbox/">next post</a>, I&#8217;m going to create a <strong>development sandbox</strong> to jump in and have fun implementing some popular examples in a controlled environment. I&#8217;m hoping to create a repository for my own future use as well as document competency in this area of web development. I&#8217;m not planning to reinvent the wheel here&#8230; there are a ton of great resources already available. I&#8217;m going to poke around and see what&#8217;s out there and then put together my own simple demos. Admittedly, some of the demos will be true Ajax (according to the original definition) and some will follow the more general purpose definition which I&#8217;ll call &#8220;animation effects&#8221; created with a combination of <a href="http://www.ericgiguere.com/articles/javascript-is-not-java.html">JavaScript</a>, <a href="http://en.wikipedia.org/wiki/Cascading_Style_Sheets">CSS</a>, and other technologies. There are some great JavaScript frameworks, such as <a href="http://jquery.com/">jQuery</a>, <a href="http://www.prototypejs.org/">Prototype</a>, <a href="http://developer.yahoo.com/yui/">YUI</a>, and <a href="http://www.dojotoolkit.org/">Dojo</a>, that dramatically simplify Ajax (and pseudo-Ajax) development. I&#8217;ll include a variety of examples using some of those frameworks as well.In the <a title="Read Part 3 of 3" href="http://www.mpgilbert.com/ajax-accessibility/">last post</a>, I&#8217;d like to explore the topic of <strong>Ajax accessibility</strong>. Is it true that Ajax creates websites that can&#8217;t be accessed by people with disabilities? Does Ajax hurt your website&#8217;s search engine ranking? Can Ajax be implemented in an accessible way? I&#8217;m not completely sure, but I&#8217;m hoping to find out! The <a href="http://www.w3.org/WAI/">Web Accessibility Initiative</a> has created a development suite called <a href="http://www.w3.org/WAI/intro/aria.php">Accessible Rich Internet Applications</a> (WAI-ARIA) to help with accessible Ajax solutions. I&#8217;m really excited about ARIA&#8217;s possibilities, so I&#8217;ll spend some time exploring it as well.<br />
<span id="more-211"></span><br />
Before we get into the specifics, let&#8217;s go back to the beginning, in early 2005, and examine Ajax&#8217;s humble beginnings. As described in <a href="http://www.adaptivepath.com/aboutus/jjg.php">Jesse James Garrett</a>&#8216;s original article <a href="http://www.adaptivepath.com/ideas/essays/archives/000385.php">Ajax: A New Approach to Web Applications</a>, Ajax isn&#8217;t a downloadable component, browser plugin, or desktop application add-on. It&#8217;s a term used to describe &#8220;several technologies, each flourishing in its own right, coming together in powerful new ways.&#8221; Originally, Ajax was shorthand for &#8220;Asynchronous JavaScript + XML&#8221;. Soon after, it became apparent that it doesn&#8217;t necessarily need to include XML.Ajax includes a few key ingredients:</p>
<ul>
<li><strong>standards-based presentation</strong> (XHTML, CSS)</li>
<li><strong>dynamic display and interaction</strong> (Document Object Model)</li>
<li><strong>data interchange and manipulation</strong> (XML, XSLT)</li>
<li><strong>asynchronous data retrieval</strong> (XMLHttpRequest, also called XHR)</li>
<li><strong>JavaScript</strong> to bring everything together</li>
</ul>
<p>It&#8217;s the fourth item, asynchronous data retrieval, that makes it truly unique and exciting. Here&#8217;s an easier way to think about it: &#8220;grabbing data from the server and displaying it on the web page without refreshing the browser.&#8221; It&#8217;s a more seamless approach to present content to the viewer since everything else in the browser window stays put while a small area updates per the viewer&#8217;s mouse click or key press. You may have experienced this before without knowing that it used Ajax. Some popular websites that include extensive use of Ajax include <a href="http://maps.google.com/">Google Maps</a>, <a href="http://www.flickr.com/">Flickr</a>, and <a href="http://johnvey.com/features/gmailapi/">Gmail</a>.Using the less strict definition — not including the hidden round trip to the server — you may have seen things like <a href="http://jquery.bassistance.de/accordion/demo/">accordion navigation</a>, <a href="http://tetlaw.id.au/view/blog/table-sorting-with-prototype/">sortable tables</a>, <a href="http://37signals.com/svn/archives/000558.php">fading yellow highlights</a>, and <a href="http://www.twospy.com/galleriffic/advanced.html">photo galleries</a>. They don&#8217;t necessarily use Ajax, but I&#8217;m including them here since they&#8217;re so prevalent in web development today. I think you know what I mean&#8230; that ubiquitous &#8220;Web 2.0&#8243; look and feel on many <a href="http://www.facebook.com/">social</a> <a href="http://twitter.com/">networking</a> <a href="http://digg.com/">sites</a> (including the glossy, lickable buttons and child-friendly rounded corners).I think that&#8217;s enough introduction on Ajax for now. In the next post we&#8217;ll take a closer look at some individual Ajax elements and how they can be used to enhance a website.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.mpgilbert.com/ajax/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

