<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>mitch&#039;s meanderings &#187; Web Design</title>
	<atom:link href="http://mitchcontla.com/category/tech/web-design/feed/" rel="self" type="application/rss+xml" />
	<link>http://mitchcontla.com</link>
	<description>thoughts on life, technology, and running; links, photos, and videos</description>
	<lastBuildDate>Wed, 19 May 2010 04:58:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Tip of the Day: Secure Your Gmail</title>
		<link>http://mitchcontla.com/2007/03/21/tip-of-the-day-secure-your-gmail/</link>
		<comments>http://mitchcontla.com/2007/03/21/tip-of-the-day-secure-your-gmail/#comments</comments>
		<pubDate>Thu, 22 Mar 2007 00:12:05 +0000</pubDate>
		<dc:creator>mitch</dc:creator>
				<category><![CDATA[Geekery]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[gmail]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://mitch.contlafamily.com/2007/03/21/tip-of-the-day-secure-your-gmail/</guid>
		<description><![CDATA[From the &#8220;Why Didn&#8217;t I Think of That&#8221; department: GMailSecure has got to be one of the most elegantly simple, yet useful Greasemonkey scripts ever. When I say simple, I mean one line of code: location.href = location.href.replace(/^http:/, 'https:'); This script ensures your Gmail session using Firefox takes place over a secure HTTP connection providing [...]]]></description>
			<content:encoded><![CDATA[<p>From the &#8220;Why Didn&#8217;t I Think of That&#8221; department: <a href="http://www.greasespot.net/" title="Userscripts.org: GMailSecure">GMailSecure</a> has got to be one of the most elegantly simple, yet useful <a href="http://addons.mozilla.org/firefox/748/" title="Greasespot.net">Greasemonkey</a> scripts ever.</p>

<p>When I say simple, I mean one line of code:</p>



<pre class="example">location.href = location.href.replace(/^http:/, 'https:');</pre>



<p>This script ensures your <a href="http://mail.google.com" title="Gmail">Gmail</a> session using <a href="http://www.mozilla.com/en-US/firefox/" title="Mozilla Firefox">Firefox</a> takes place over a <a href="http://en.wikipedia.org/wiki/Https" title="Wikipedia: https">secure <span class="caps">HTTP</span></a> connection providing a reasonable amount of protection from eavesdropping and other shenanigans. Add other domains for which both a http and https <acronym title="Uniform Resource Identifier">URI</acronym> exist and Firefox will always use https. For example, I added:</p>



<pre class="example">http://www.google.com/calendar/*

http://docs.google.com/


http://docs.google.com/*</pre>

<p>Now all <a href="http://www.google.com/calendar/" title="Google Calendar">Google Calendar</a> and <a href="http://docs.google.com/" title="Google Docs &amp; Spreadsheets">Google Docs &amp; Spreadsheets</a> sessions are secure. But don&#8217;t stop there, any domain will work&#8230; not just the <a href="http://www.google.com" title="Google">Google</a> properties.</p>

<p>Download links: <a href="http://addons.mozilla.org/firefox/748/" title="Download Greasemonkey">Greasemonkey</a> (install this first), <a href="http://userscripts.org/scripts/source/1404.user.js" title="Install GMailSecure">GMailSecure</a></p>]]></content:encoded>
			<wfw:commentRss>http://mitchcontla.com/2007/03/21/tip-of-the-day-secure-your-gmail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sanitize File Names Using VBScript</title>
		<link>http://mitchcontla.com/2006/05/18/sanitize-file-names-using-vbscript/</link>
		<comments>http://mitchcontla.com/2006/05/18/sanitize-file-names-using-vbscript/#comments</comments>
		<pubDate>Fri, 19 May 2006 02:46:48 +0000</pubDate>
		<dc:creator>mitch</dc:creator>
				<category><![CDATA[Geekery]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[VBScript]]></category>
		<category><![CDATA[regular-expressions]]></category>

		<guid isPermaLink="false">http://mitch.contla.net/2006/05/18/sanitize-file-names-using-vbscript/</guid>
		<description><![CDATA[We use an ASP based form to enable our customers to submit files created as part of a registration process. During the submission, the file is sent as an email attachment to our support staff, and a copy is written to a file server as a backup. The application uses a standard Win32 Save dialog [...]]]></description>
			<content:encoded><![CDATA[<p>We use an <acronym title="Active Server Pages">ASP</acronym> based form to enable our customers to submit files created as part of a registration process. During the submission, the file is sent as an email attachment to our support staff, and a copy is written to a file server as a backup. The application uses a standard <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/winprog/windows_api_start_page.asp">Win32</a> Save dialog that suggests a default filename. In nearly every case, the file is submitted by the customer without changing the default name. If the email process fails, retrieving the backup copy is difficult at best.</p>

<p>I modified the form to create a unique filename using values from certain form elements. Since these values can, and often do, use characters that are invalid as part of a filename, I needed a way to &#8220;sanitize&#8221; the name during the submission process. I wrote the following <a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/0a8270d7-7d8f-4368-b2a7-065acb52fc54.asp"><span class="caps">VBS</span>cript</a> code to replace these characters before attempting to save the file.</p>

<pre class="code vb">&nbsp;
   <span style="color: #b1b100;">Function</span> SanitizeFilename<span style="color: #66cc66;">&#40;</span>byVal strFilename, byVal strReplChar<span style="color: #66cc66;">&#41;</span>	
      
      <span style="color: #b1b100;">Set</span> objRegExp = <span style="color: #b1b100;">New</span> RegExp <span style="color: #808080;">' Create new RegExp object</span>
      
      <span style="color: #808080;">' Define regex pattern and set Global replacement property</span>
      objRegExp.<span style="color: #66cc66;">Pattern</span> = <span style="color: #ff0000;">&quot;[\x00-\x1f\x22\\/:\*\?&lt;&gt;\|]&quot;</span>
      objRegExp.<span style="color: #66cc66;">Global</span> = <span style="color: #b1b100;">True</span>
      
      <span style="color: #808080;">' Check strReplChar parameter for invalid length or character,</span>
      <span style="color: #808080;">' default to underscore</span>
      <span style="color: #b1b100;">If</span> <span style="color: #b1b100;">Len</span><span style="color: #66cc66;">&#40;</span>strReplChar<span style="color: #66cc66;">&#41;</span> = <span style="color: #cc66cc;">1</span> <span style="color: #b1b100;">Then</span> 
         strReplChar = objRegExp.<span style="color: #66cc66;">Replace</span><span style="color: #66cc66;">&#40;</span>strReplChar, <span style="color: #ff0000;">&quot;_&quot;</span><span style="color: #66cc66;">&#41;</span>
      <span style="color: #b1b100;">Else</span> 
         strReplChar = <span style="color: #ff0000;">&quot;_&quot;</span>
      <span style="color: #b1b100;">End</span> <span style="color: #b1b100;">If</span>
      
      <span style="color: #808080;">' Return clean filename</span>
      SanitizeFilename = objRegExp.<span style="color: #66cc66;">Replace</span><span style="color: #66cc66;">&#40;</span>strFilename, strReplChar<span style="color: #66cc66;">&#41;</span>
      
      <span style="color: #b1b100;">Set</span> objRegExp = <span style="color: #b1b100;">Nothing</span>
   <span style="color: #b1b100;">End</span> <span style="color: #b1b100;">Function</span>
&nbsp;
&nbsp;</pre>

<p>This function accepts two arguments, <code>strFilename</code> which receives the string created from the form values, and <code>strReplChar</code> which receives the character used for replacement. The function uses a <a href="http://en.wikipedia.org/wiki/Regex">regular expression</a> pattern to match the invalid characters (control characters through 31, double-quotes, and a handful of others). There is a check to make sure that the <code>strReplChar</code> argument is valid, but not much else. The <a href="http://msdn.microsoft.com/library/en-us/script56/html/9f1c25ba-46ce-46af-9f19-ac1d2bcf05d8.asp">RegExp Object</a> member <code>Replace</code> does the heavy lifting, before the function returns the modified string.</p>

<p>The <acronym title="Regular Expression">regex</acronym> pattern replaces invalid characters for Windows <a href="http://en.wikipedia.org/wiki/NTFS"><acronym title="New Technology File System">NTFS</acronym></a> (generally), but could easily be altered for other <acronym title="Operating System">OS</acronym> file systems. You could also use a more restrictive regular expression like:</p>

<div class="example">


<pre><code>
      [&amp;#094;\w\x20\&amp;%'`\-\@{}~!#\(\)&amp;_\&amp;#094;\+,\.=\[\]]
</code></pre>


</div>

<p>Then again, that may be a bit much. Wikipedia has a good <a href="http://en.wikipedia.org/wiki/Filename">filename</a> reference that includes a fairly comprehensive list of reserved words and allowable character sets. As always, if you need a good regex reference, try <a href="http://www.regular-expressions.info/">Regular-Expressions.info</a>.</p>

<p><strong><span class="caps">UPDATE</span>:</strong> The logic in my if/then statement to check the length and validity of the <code>strReplChar</code> was backwards. The example has been corrected.</p>]]></content:encoded>
			<wfw:commentRss>http://mitchcontla.com/2006/05/18/sanitize-file-names-using-vbscript/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Linkto: Scriptaculous Cheat Sheet</title>
		<link>http://mitchcontla.com/2006/04/24/linkto-scriptaculous-cheat-sheet/</link>
		<comments>http://mitchcontla.com/2006/04/24/linkto-scriptaculous-cheat-sheet/#comments</comments>
		<pubDate>Mon, 24 Apr 2006 13:22:06 +0000</pubDate>
		<dc:creator>mitch</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Asides]]></category>
		<category><![CDATA[Geekery]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://mitch.contla.net/2006/04/24/linkto-scriptaculous-cheat-sheet/</guid>
		<description><![CDATA[Amy Hoy offers up Scriptaculous Cheat Sheet #1, a &#8220;Field Guide to Script.aculo.us Combination Effects&#8221;. Basic effects syntax all on a single-page PDF. Nicely done.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.slash7.com">Amy Hoy</a> offers up  <a href="http://www.slash7.com/articles/2006/04/22/scriptaculous-cheat-sheet-1">Scriptaculous Cheat Sheet #1</a>, a &#8220;Field Guide to <a href="http://script.aculo.us">Script.aculo.us</a> Combination Effects&#8221;. Basic effects syntax all on a single-page <acronym title="Portable Document Format"><span class="caps">PDF</span></acronym>. Nicely done.</p>]]></content:encoded>
			<wfw:commentRss>http://mitchcontla.com/2006/04/24/linkto-scriptaculous-cheat-sheet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>innerHTML Not So Evil After All?</title>
		<link>http://mitchcontla.com/2006/04/21/innerhtml-not-so-evil-after-all/</link>
		<comments>http://mitchcontla.com/2006/04/21/innerhtml-not-so-evil-after-all/#comments</comments>
		<pubDate>Fri, 21 Apr 2006 15:50:25 +0000</pubDate>
		<dc:creator>mitch</dc:creator>
				<category><![CDATA[Geekery]]></category>
		<category><![CDATA[Talk]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://mitch.contla.net/2006/04/21/innerhtml-not-so-evil-after-all/</guid>
		<description><![CDATA[There&#8217;s been some discussion about whether using the non-standard innerHTML is an acceptable way to add content. Coming to the defense of the maligned property is this article at Robert Nyman&#8217;s site, co-authored by Anne van Kesteren a member of the W3C, stating, When it comes to having greater scalability in a web page, especially [...]]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s been <a href="http://domscripting.webstandards.org/?p=46">some</a> <a href="http://www.snook.ca/archives/000575.php">discussion</a> about whether using the non-standard <code>innerHTML</code> is an acceptable way to add content. Coming to the defense of the maligned property is <a href="http://www.robertnyman.com/2006/04/20/we-all-love-innerhtml">this article</a> at Robert Nyman&#8217;s site, co-authored by <a href="http://annevankesteren.nl/">Anne van Kesteren</a> a member of the <acronym title="World Wide Web Consortium">W3C</acronym>, stating,</p>

<blockquote><p>When it comes to having greater scalability in a web page, especially in <span class="caps">AJAX </span>scenarios, innerHTML offers unmatched flexibility. There has also been benchmark tests verifying that <code>innerHTML</code> is more efficient compared to using <span class="caps">DOM </span>methods.</p></blockquote>

<p>The benchmarks test referred to are <a href="http://www.quirksmode.org/dom/innerhtml.html">here</a>, and show a dramatic speed advantage when choosing <span>innerHTML</span> over <acronym title="Document Object Model">DOM</acronym> methods.</p>

<blockquote><p>The fact that it is not in a standard is simply because nobody got around to it. If you read the mailing list of the <span class="caps">W3C</span> Web <span class="caps">API</span>’s Working Group you can see that Opera, Mozilla and Apple want it to be standardized and we bet Microsoft would like the same thing.</p></blockquote>

<p>As <a href="http://www.snook.ca/archives/000575.php">snook pointed out</a>, the <span class="caps">XMLH</span>ttpRequest object isn&#8217;t standard (yet) either. Funny, no one complains about that.</p>

<p>Recognizing that there are some instances where using <span class="caps">DOM </span>methods may be more elegant, in many cases, I choose to use <code>innerHTML</code> to update content. It just seems natural, especially when the content is repeatedly generated using the same server-side code.</p>]]></content:encoded>
			<wfw:commentRss>http://mitchcontla.com/2006/04/21/innerhtml-not-so-evil-after-all/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linkto: Create Your Own Ajax Effects</title>
		<link>http://mitchcontla.com/2006/04/19/linkto-create-your-own-ajax-effects/</link>
		<comments>http://mitchcontla.com/2006/04/19/linkto-create-your-own-ajax-effects/#comments</comments>
		<pubDate>Thu, 20 Apr 2006 04:05:05 +0000</pubDate>
		<dc:creator>mitch</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Asides]]></category>
		<category><![CDATA[Geekery]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Talk]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[tutorials]]></category>
		<category><![CDATA[web2.0]]></category>

		<guid isPermaLink="false">http://mitch.contla.net/2006/04/19/linkto-create-your-own-ajax-effects/</guid>
		<description><![CDATA[Thomas Fuchs, creator of the Script.aculo.us JavaScript effects library shows you how to create your own Ajax effects. Roll your own fabulous Web 2.0 effects using the amazing Script.aculo.us effects engine.]]></description>
			<content:encoded><![CDATA[<p>Thomas Fuchs, creator of the <a href="http://script.aculo.us">Script.aculo.us</a> JavaScript effects library shows you how to <a href="http://www.thinkvitamin.com/features/ajax/create-your-own-ajax-effects">create your own Ajax effects</a>. Roll your own fabulous Web 2.0 effects using the amazing Script.aculo.us effects engine.</p>]]></content:encoded>
			<wfw:commentRss>http://mitchcontla.com/2006/04/19/linkto-create-your-own-ajax-effects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cross-site Scripting Techniques and Prevention</title>
		<link>http://mitchcontla.com/2006/04/18/cross-site-scripting-techniques-and-prevention/</link>
		<comments>http://mitchcontla.com/2006/04/18/cross-site-scripting-techniques-and-prevention/#comments</comments>
		<pubDate>Tue, 18 Apr 2006 23:17:59 +0000</pubDate>
		<dc:creator>mitch</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Geekery]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tutorials]]></category>
		<category><![CDATA[web2.0]]></category>

		<guid isPermaLink="false">http://mitch.contla.net/2006/04/18/cross-site-scripting-techniques-and-prevention/</guid>
		<description><![CDATA[ALA serves up a great article addressing the dangers of cross-site scripting (XSS) vulnerabilities. Author Niklas Bivald says, Validating and sanitizing user input is no longer optional. Consider what your users really need to do, think about what characters they need to accomplish those tasks, and strip/convert as necessary to protect your community. Part 1 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.alistapart.com"><span class="caps">ALA</span></a> serves up a <a href="http://www.alistapart.com/articles/secureyourcode">great article</a> addressing the dangers of cross-site scripting (XSS) vulnerabilities. Author <a href="http://www.alistapart.com/authors/b/niklasbivald">Niklas Bivald</a> says,</p>

<blockquote><p>Validating and sanitizing user input is no longer optional. Consider what your users really need to do, think about what characters they need to accomplish those tasks, and strip/convert as necessary to protect your community.</p></blockquote>

<p>Part 1 provides examples of <acronym title="Cross-site Scripting">XSS</acronym> attacks, and a checklist for validating input. An upcoming Part 2 promises to deliver techniques for closing these vulnerabilities and preventing attacks on your sites and communities.</p>

<p>The excitement generated by the popularity of <acronym title="Asynchronous JavaScript + XML">Ajax</acronym> technologies and all the flashy new Web 2.0 applications, along with a wealth of published tutorials and &#8220;howtos&#8221;, must entice many to dive head first into web development. My guess is, many do this with little or no thought to the implications these technologies might have on security. I am happy to see <span class="caps">XSS </span>addressed, even if in such a simple manner, and hope to see more of these types of tutorials.</p>]]></content:encoded>
			<wfw:commentRss>http://mitchcontla.com/2006/04/18/cross-site-scripting-techniques-and-prevention/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bite Size Standards</title>
		<link>http://mitchcontla.com/2006/04/14/bite-size-standards/</link>
		<comments>http://mitchcontla.com/2006/04/14/bite-size-standards/#comments</comments>
		<pubDate>Sat, 15 Apr 2006 05:48:03 +0000</pubDate>
		<dc:creator>mitch</dc:creator>
				<category><![CDATA[Geekery]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Links]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tutorials]]></category>

		<guid isPermaLink="false">http://mitch.contla.net/2006/04/14/bite-size-standards/</guid>
		<description><![CDATA[Bite Size Standards went online today, offering web development tutorials, tips, etc. In their own words: The basic idea being that busy web designers don’t always have time to read or write lengthy tutorials but that a daily “bite” of useful information, taken or given, could be good for the soul. Sounds promising. Hat tip [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://bitesizestandards.com/">Bite Size Standards</a> went online today, offering web development tutorials, tips, etc. In their own words:</p>

<blockquote><p>The basic idea being that busy web designers don’t always have time to read or write lengthy tutorials but that a daily “bite” of useful information, taken or given, could be good for the soul.</p></blockquote>

<p>Sounds promising. Hat tip to <a href="http://www.snook.ca/archives/000576.php">snook</a> for the link.</p>]]></content:encoded>
			<wfw:commentRss>http://mitchcontla.com/2006/04/14/bite-size-standards/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>More Ajax Resources for Beginners</title>
		<link>http://mitchcontla.com/2006/04/10/more-ajax-resources-for-beginners/</link>
		<comments>http://mitchcontla.com/2006/04/10/more-ajax-resources-for-beginners/#comments</comments>
		<pubDate>Mon, 10 Apr 2006 23:30:16 +0000</pubDate>
		<dc:creator>mitch</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Geekery]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Links]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[hints]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[tutorials]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[web2.0]]></category>

		<guid isPermaLink="false">http://mitch.contla.net/2006/04/10/more-ajax-resources-for-beginners/</guid>
		<description><![CDATA[When I first became involved in a project that would require Ajax techniques, I quickly went to the web in search of tutorials to learn how to use the XMLHttpRequest object. Following are the resources I found most helpful as I learned to create dynamic web applications. Links to various JavaScript libraries and other sites [...]]]></description>
			<content:encoded><![CDATA[<p>When I first became involved in a project that would require Ajax techniques, I quickly went to the web in search of tutorials to learn how to use the <span class="caps">XMLH</span>ttpRequest object. Following are the resources I found most helpful as I learned to create dynamic web applications. Links to various JavaScript libraries and other sites I like are also listed. Hat tip to Rushi for writing the <a href="http://rushi.wordpress.com/2006/04/04/beginning-ajax/">post</a> that prompted this compilation.<br />
<span id="more-40"></span></p>

<p>The <a href="http://developer.apple.com/">Apple Developer Network</a> is a great source of information including a nice, easy-to-follow introduction to <a href="http://developer.apple.com/internet/webcontent/xmlhttpreq.html">The <span class="caps">XMLH</span>ttpRequest Object</a>. This brief tutorial includes a description of object methods and properties, simple examples of instantiation, and a fully functional <a href="http://developer.apple.com/internet/webcontent/XMLHttpRequestExample/example.html">example</a>. Other good <acronym title="Apple Developer Connection">ADC</acronym> articles include: <a href="http://developer.apple.com/internet/webcontent/iframe.html">Remote Scripting with <span class="caps">IFRAME</span></a>, <a href="http://developer.apple.com/internet/webcontent/dom2i.html">Dynamic Content with <span class="caps">DOM</span>-2 Part I</a> and <a href="http://developer.apple.com/internet/webcontent/dom2ii.html">Part II</a>, and <a href="http://developer.apple.com/internet/webcontent/objectdetection.html">Object Detection</a>.</p>

<p>Jim Ley&#8217;s article <a href="http://jibbering.com/2002/4/httprequest.html">Using the <span class="caps">XML HTTP</span> Request Object</a> shows you how to create an <acronym title="XMLHttpRequest">XHR</acronym> object using conditional compilation that degrades nicely to support all browsers. Examples include using <span class="caps">XHR </span>to make a <span class="caps">HEAD </span>request, or to check if a <acronym title="Uniform Resource Locator">URL</acronym> exists.</p>

<p><a href="http://24">Easy Ajax with Prototype</a>-1 is a ridiculously simple example from <a href="http://24">24 ways</a>-2 and a great introduction to using <a href="http://prototype.conio.net/">prototype.js</a>, the big-daddy of JavaScript libraries (read on for more information).</p>

<p><a href="http://alistapart.com/articles/gettingstartedwithajax">Getting Started with Ajax</a> shows you how to make an Ajax request, then use the responseText property and <acronym title="Document Object Model">DOM</acronym> innerHTML property to update the page. Later, a slight modification to the example uses responseXML, and <span class="caps">DOM </span>manipulation to perform the same update. This article makes use of the <a href="http://xkr.us/code/javascript/XHConn/"><span class="caps">XHC</span>onn library</a>, a &#8220;simple <span class="caps">XMLHTTP </span>interface&#8221;.</p>

<p>There is <a href="http://www.quirksmode.org/blog/archives/2005/12/the_ajax_respon.html">a great post</a> over on the <a href="http://www.quirksmode.org/blog/index.html">QuirksBlog</a> describing the pros and cons of <acronym title="eXtensible Markup Language">XML</acronym>, <acronym title="HyperText Markup Language">HTML</acronym>, and <acronym title="JavaScript Object Notation">JSON</acronym> responses, (<a href="http://www.quirksmode.org/blog/archives/2006/01/the_ajax_respon_1.html">part II here</a>). As you begin to develop web applications that use <span class="caps">XHR, </span>the response format/language you choose deserves some consideration. My projects thus far have all been simple enough to use the <span class="caps">XHR </span>responseText and <span class="caps">DOM </span>innerHTML property.</p>

<p>Paven Keely&#8217;s <a href="http://keelypavan.blogspot.com/2006/03/reusing-xmlhttprequest-object-in-ie.html">Reusing <span class="caps">XMLH</span>ttpRequest Object in IE</a> is a great read, as is Alex Bosworth&#8217;s <a href="http://sourcelabs.com/ajb/archives/2005/05/ajax_mistakes.html">Ajax Mistakes</a>. For the authoritative (albeit dry) reference on the <span class="caps">XHR </span>object, see Microsoft&#8217;s <a href="http://msdn.microsoft.com/library/default.asp?url=%2Flibrary%2Fen-us%2Fxmlsdk%2Fhtml%2F7924f6be-c035-411f-acd2-79de7a711b38.asp"><span class="caps">IXMLHTTPR</span>equest Members</a>.</p>

<h3>JavaScript Libraries</h3>

<p>At some point you may want to consider the many JavaScript libraries available designed to make development easier (especially <span class="caps">XHR </span>calls) and/or provide some amazing effects.</p>

<p><a href="http://prototype.conio.net/">prototype.js</a> is a widely used library popularized by it&#8217;s use in <a href="http://www.37signals.com/">37 Signals</a> many web-based offerings. The Ajax.Request and Ajax.Updater classes are fantastic! This library packs a powerful punch and is the basis for the <a href="http://script.aculo.us/">Script.aculo.us</a> and <a href="http://openrico.org/">Rico</a> effects libraries. If prototype is too much, try <a href="http://moofx.mad4milk.net/">Moo.fx</a>, a lightweight effects library based on &#8220;prototype-lite&#8221;. Lots of fun!</p>

<p>Other libraries worth considering include <a href="http://dojotoolkit.org/">Dojo</a>, <a href="http://mochikit.com/">MochiKit</a>, <a href="http://www.zimbra.com/community/ajaxtk_download.html">Zimbra</a>, and <a href="http://developer.yahoo.com/yui/">Yahoo! User Interface Library</a>. In addition to <span class="caps">XHR </span>classes/objects each of these include other classes designed to streamline development. For libraries primarily focused on encapsulating the <span class="caps">XHR </span>object try the <a href="http://xkr.us/code/javascript/XHConn/"><span class="caps">XHC</span>onn library</a>, <a href="http://microformats.org/wiki/rest/ahah"><span class="caps">AHAH</span></a>, or <a href="http://www.robertnyman.com/ask/"><span class="caps">ASK</span></a>.</p>

<h3>Other Great Resources</h3>

<p><a href="http://www.maxkiesler.com/index.php/weblog/comments/round_up_of_30_ajax_tutorials/">Round-up of 30 <span class="caps">AJAX</span> Tutorials</a><br />
<a href="http://www.fiftyfoureleven.com/resources/programming/xmlhttprequest/"><span class="caps">XMLH</span>ttpRequest &amp; Ajax Based Applications</a><br />
<a href="http://ajaxpatterns.org/wiki/index.php?title=Main_Page">Ajax Patterns</a><br />
<a href="http://www.ajaxmatters.com/r/welcome">Ajax Matters</a><br />
<a href="http://ajaxian.com/">Ajaxian Blog</a></p>

<p>I hope this helps some of you get started. The Ajax buzz seems to have breathed new life into the web, and has certainly made it fun to develop.</p>

<p>Leave a comment if you have other good links!</p>]]></content:encoded>
			<wfw:commentRss>http://mitchcontla.com/2006/04/10/more-ajax-resources-for-beginners/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>AJAX for Newbies</title>
		<link>http://mitchcontla.com/2006/04/07/ajax-for-newbies/</link>
		<comments>http://mitchcontla.com/2006/04/07/ajax-for-newbies/#comments</comments>
		<pubDate>Fri, 07 Apr 2006 12:34:55 +0000</pubDate>
		<dc:creator>mitch</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Asides]]></category>
		<category><![CDATA[Geekery]]></category>
		<category><![CDATA[Links]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[web2.0]]></category>

		<guid isPermaLink="false">http://mitch.contla.net/2006/04/07/ajax-for-newbies/</guid>
		<description><![CDATA[Scoble points to Ajax Resources for Beginners, a great little link source for Ajax tutorials. I&#8217;ve seen most of the sites referenced, but one completely new to me (and very valuable) is Ajax Activity Indicators, a page containing dozens of animated gif images for your downloading pleasure.]]></description>
			<content:encoded><![CDATA[<p><a href="http://scobleizer.wordpress.com/2006/04/06/ajax-for-newbies/">Scoble</a> points to <a href="http://rushi.wordpress.com/2006/04/04/beginning-ajax/">Ajax Resources for Beginners</a>, a great little link source for <acronym title="Asynchronous JavaScript + XML">Ajax</acronym> tutorials. I&#8217;ve seen most of the sites referenced, but one completely new to me (and very valuable) is <a href="http://www.napyfab.com/ajax-indicators/">Ajax Activity Indicators</a>, a page containing dozens of animated gif images for your downloading pleasure. </p>]]></content:encoded>
			<wfw:commentRss>http://mitchcontla.com/2006/04/07/ajax-for-newbies/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Links to 30 AJAX Tutorials</title>
		<link>http://mitchcontla.com/2006/04/03/links-to-30-ajax-tutorials/</link>
		<comments>http://mitchcontla.com/2006/04/03/links-to-30-ajax-tutorials/#comments</comments>
		<pubDate>Tue, 04 Apr 2006 02:22:58 +0000</pubDate>
		<dc:creator>mitch</dc:creator>
				<category><![CDATA[Ajax]]></category>
		<category><![CDATA[Asides]]></category>
		<category><![CDATA[Geekery]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://mitch.contla.net/2006/04/03/links-to-30-ajax-tutorials/</guid>
		<description><![CDATA[Check out this Round-up of 30 AJAX Tutorials. Great links if you need to get up to speed on AJAX techniques. A couple of other favorites: The XMLHttpRequest Object, Guide to Using AJAX and XMLHttpRequest, and Getting Started with Ajax.]]></description>
			<content:encoded><![CDATA[<p>Check out this <a href="http://www.maxkiesler.com/index.php/weblog/comments/round_up_of_30_ajax_tutorials/">Round-up of 30 <span class="caps">AJAX</span> Tutorials</a>. Great links if you need to get up to speed on <acronym title="Asynchronous JavaScript + XML"><span class="caps">AJAX</span></acronym> techniques.</p>

<p>A couple of other favorites: <a href="http://developer.apple.com/internet/webcontent/xmlhttpreq.html">The <span class="caps">XMLH</span>ttpRequest Object</a>, <a href="http://www.webpasties.com/xmlHttpRequest/">Guide to Using <span class="caps">AJAX </span>and <span class="caps">XMLH</span>ttpRequest</a>, and <a href="http://alistapart.com/articles/gettingstartedwithajax">Getting Started with Ajax</a>.  </p>]]></content:encoded>
			<wfw:commentRss>http://mitchcontla.com/2006/04/03/links-to-30-ajax-tutorials/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
