<?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>Ajaxian</title>
	<atom:link href="http://ajaxian.com/feed" rel="self" type="application/rss+xml" />
	<link>http://ajaxian.com</link>
	<description>Cleaning up the web with Ajax</description>
	<pubDate>Sat, 11 Oct 2008 05:43:24 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
			<item>
		<title>This Week in HTML 5: Web Forms 2, Search, and more</title>
		<link>http://ajaxian.com/archives/this-week-in-html-5-e8</link>
		<comments>http://ajaxian.com/archives/this-week-in-html-5-e8#comments</comments>
		<pubDate>Sat, 11 Oct 2008 05:43:24 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Front Page]]></category>

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

		<guid isPermaLink="false">http://ajaxian.com/?p=4732</guid>
		<description><![CDATA[In Mark&#8217;s eighth roundup of HTML 5 land, he delves into the merging of Web Forms 2, which gives us fun things like:

input type=&#8221;email&#8221;
input type=&#8221;url&#8221;
inpu type=&#8221;number&#8221;
input type=&#8221;range&#8221;
input type=&#8221;date&#8221;
input type=&#8221;time&#8221;
input type=&#8221;datetime&#8221;
input type=&#8221;week&#8221;
input type=&#8221;month&#8221;

Then Mark discusses input type=&#8221;search&#8221;:

Andy Lyttle wants to standardize one particular feature of &#60;input type=&#8221;search&#8221;&#62; (which is already supported by Safari, but not standardized): [...]]]></description>
			<content:encoded><![CDATA[<p>In Mark&#8217;s eighth roundup of HTML 5 land, he delves into the merging of Web Forms 2, which gives us fun things like:</p>
<ul>
<li><a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/forms.html#e-mail-state">input type=&#8221;email&#8221;</a></li>
<li><a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/forms.html#url-state">input type=&#8221;url&#8221;</a></li>
<li><a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/forms.html#number-state">inpu type=&#8221;number&#8221;</a></li>
<li><a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/forms.html#range-state">input type=&#8221;range&#8221;</a></li>
<li><a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/forms.html#date-state">input type=&#8221;date&#8221;</a></li>
<li><a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/forms.html#time-state">input type=&#8221;time&#8221;</a></li>
<li><a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/forms.html#date-and-time-state">input type=&#8221;datetime&#8221;</a></li>
<li><a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/forms.html#week-state">input type=&#8221;week&#8221;</a></li>
<li><a href="http://www.whatwg.org/specs/web-apps/current-work/multipage/forms.html#month-state">input type=&#8221;month&#8221;</a></li>
</ul>
<p>Then Mark discusses input type=&#8221;search&#8221;:</p>
<blockquote><p>
Andy Lyttle wants to standardize one particular feature of &lt;input type=&#8221;search&#8221;&gt; (which is already supported by Safari, but not standardized): placeholder text for input fields. The text would initially display in the input field (possibly in a stylized form, smaller font, or lighter color), then disappear when the field receives focus. Lots of sites use Javascript to achieve this effect, but it is surprisingly difficult to get right, in part because no one can quite agree on exactly how it should work. Mozilla Firefox displays the name of your current search engine in its dedicated search box until you focus the search box, at which point it blanks out and allows you to type. Safari&#8217;s search box is initially blank (at least on Windows), and only displays the name of your default search engine after it has received focus and lost it again. Google Chrome&#8217;s &#8220;omnibox&#8221; displays &#8220;Type to search&#8221;, right-justified, even when the omnibox has focus, then removes it after you&#8217;ve typed a single character. Adding an &lt;input placeholder&gt; attribute would allow each browser on each platform to match their users&#8217; expectations (and possibly even allow end-user customization) of how placeholder text should work for web forms. Discussion threads: 1, 2, 3. So far, there is no consensus on whether this should be added to HTML 5, or what the markup would look like.
</p></blockquote>
<p>And, he finishes with some interesting posts:</p>
<ul>
<li>Following up on <a href="http://blog.whatwg.org/this-week-in-html-5-episode-7">last week&#8217;s article on clickjacking</a>, the security researcher who discovered (and named) it has <a href="http://ha.ckers.org/blog/20081007/clickjacking-details/">posted details of his discovery</a>.  Short version: it&#8217;s even worse than we thought, but vendors are working on it.  <a href="http://blog.guya.net/2008/10/07/malicious-camera-spying-using-clickjacking/">Here&#8217;s a proof-of-concept against Adobe Flash</a> that, quite literally, spys on you (via your webcam) without the usual warning dialogs; here&#8217;s <a href="http://www.adobe.com/support/security/advisories/apsa08-08.html">Adobe&#8217;s response</a>.  <a href="http://hackademix.net/2008/10/08/hello-clearclick-goodbye-clickjacking/">NoScript now offers enhanced protection</a> against some clickjacking attack vectors.</li>
<li>Anne van Kesteren gives an update on <a href="http://annevankesteren.nl/2008/10/ie8-bad-update">IE 8&#8217;s support for HTML 5</a> and other emerging standards.</li>
<li>Matt Ryall has a good article on <a href="http://www.mattryall.net/blog/2008/10/html-5-headings-and-sections">HTML 5, headings and sections</a>, which documents the differences between HTML 4 and 5&#8217;s header elements.  My personal opinion: I once wrote a 500 page book in <a href="http://www.docbook.org/">Docbook</a>, a non-HTML markup language for technical writers.  Docbook 3 had separate elements for <a href="http://www.docbook.org/tdg/en/html/sect1.html"><code>&lt;sect1&gt;</code></a>, <a href="http://www.docbook.org/tdg/en/html/sect2.html"><code>&lt;sect2&gt;</code></a>, <a href="http://www.docbook.org/tdg/en/html/sect.html"><code>&lt;sect3&gt;</code></a>, &amp;c, and it was a massive pain in the ass to cut-and-paste sections, or try to reuse them in different documents.  Docbook 4 added a generic <a href="http://www.docbook.org/tdg/en/html/section.html"><code>&lt;section&gt;</code></a> element which can be nested indefinitely, and all those problems went away.  Lots of web authors copy-and-paste HTML markup; anything that helps that &#8220;just work&#8221; is a good thing.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/this-week-in-html-5-e8/feed</wfw:commentRss>
		</item>
		<item>
		<title>Maintainable JavaScript videos are now available.</title>
		<link>http://ajaxian.com/archives/maintainable-javascript-videos-are-now-available</link>
		<comments>http://ajaxian.com/archives/maintainable-javascript-videos-are-now-available#comments</comments>
		<pubDate>Sat, 11 Oct 2008 00:13:17 +0000</pubDate>
		<dc:creator>Chris Heilmann</dc:creator>
		
		<category><![CDATA[Front Page]]></category>

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

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

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

		<category><![CDATA[The Ajax Experience]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=4730</guid>
		<description><![CDATA[One month ago, the Fronteers conference in Amsterdam featured several &#8220;deep dive&#8221; talks on various web development topics. Stuart Langridge for example explained in detail what closures are and I talked about Maintainable JavaScript. The slides of my talk have been available for quite a while now and now Bachelor ICT have released the videos [...]]]></description>
			<content:encoded><![CDATA[<p>One month ago, the <a href="http://fronteers.nl/congres/2008/english">Fronteers conference in Amsterdam</a> featured several &#8220;deep dive&#8221; talks on various web development topics. Stuart Langridge for example <a href="http://www.kryogenix.org/code/browser/secrets-of-javascript-closures/">explained in detail what closures are</a> and I talked about Maintainable JavaScript. The <a href="http://www.slideshare.net/cheilmann/fronteers-maintainability-presentation">slides of my talk</a> have been available for quite a while now and now <a href="http://www.bachelor-ict.nl/christian-heilmann">Bachelor ICT have released the videos of the talk and an interview</a>.</p>
<p>Here&#8217;s the first half of the talk on Vimeo:</p>
<p><object width="400" height="320"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=1919942&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=1919942&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="320"></embed></object><br /><a href="http://vimeo.com/1919942?pg=embed&amp;sec=1919942">Chris Heilmann: Maintainable JavaScript, part 1</a> from <a href="http://vimeo.com/bachelorict?pg=embed&amp;sec=1919942">Bachelor-ict.nl</a> on <a href="http://vimeo.com?pg=embed&amp;sec=1919942">Vimeo</a>.</p>
<p>And here&#8217;s the second:</p>
<p><object width="400" height="320"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=1919908&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=1919908&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="320"></embed></object><br /><a href="http://vimeo.com/1919908?pg=embed&amp;sec=1919908">Christian Heilmann: Maintainable JavaScript, part 2</a> from <a href="http://vimeo.com/bachelorict?pg=embed&amp;sec=1919908">Bachelor-ict.nl</a> on <a href="http://vimeo.com?pg=embed&amp;sec=1919908">Vimeo</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/maintainable-javascript-videos-are-now-available/feed</wfw:commentRss>
		</item>
		<item>
		<title>Reinhardt: a Client-side Dispatch Framework</title>
		<link>http://ajaxian.com/archives/reinhardt</link>
		<comments>http://ajaxian.com/archives/reinhardt#comments</comments>
		<pubDate>Fri, 10 Oct 2008 11:32:10 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Dojo]]></category>

		<category><![CDATA[Front Page]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=4728</guid>
		<description><![CDATA[Kevin Dangoor of SitePen has introduced Reinhardt a dispatch engine on the client side:

A typical server-side web framework today includes three main components: a URL dispatching to some controller object scheme, a template engine, and a data mapping facility. Currently in Dojo, you’ll find that the latter two items already exist. dojox.dtl provides the first [...]]]></description>
			<content:encoded><![CDATA[<p>Kevin Dangoor of SitePen has introduced <a href="http://www.sitepen.com/blog/2008/10/09/reinhardt-a-client-side-web-framework/">Reinhardt</a> a dispatch engine on the client side:</p>
<blockquote><p>
A typical server-side web framework today includes three main components: a URL dispatching to some controller object scheme, a template engine, and a data mapping facility. Currently in Dojo, you’ll find that the latter two items already exist. dojox.dtl provides the first one, and dojo.data provides the second. </p>
<p>Given that Dojo already offers an implementation of the Django template engine, and that regular expression-based URL dispatch was a good fit for our problem at hand, I decided to base our URL dispatch on the model provided by Django.
</p></blockquote>
<p>You can see an <a href="http://www.sitepen.com/labs/code/reinhardt1/reinhardt_demo/index.html">example using the framework</a> which uses these patterns:</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-3');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-3">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">var</span> patterns = reinhardt.<span style="color: #006600;">urldispatch</span>.<span style="color: #006600;">patterns</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"demo.code"</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color: #0066FF;">/^list\/<span style="color:#006600; font-weight:bold;">&#40;</span>\d*<span style="color:#006600; font-weight:bold;">&#41;</span>$/</span>, <span style="color: #3366CC;">"showMovieList"</span>, <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color: #3366CC;">"year"</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#93;</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color: #0066FF;">/^search$/</span>, <span style="color: #3366CC;">"search"</span><span style="color:#006600; font-weight:bold;">&#93;</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color: #0066FF;">/^movie\/<span style="color:#006600; font-weight:bold;">&#40;</span>\d+<span style="color:#006600; font-weight:bold;">&#41;</span>\/$/</span>, <span style="color: #3366CC;">"whatyear"</span>, <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color: #3366CC;">'id'</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#93;</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color: #0066FF;">/^movie\/<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#91;</span>\w <span style="color:#006600; font-weight:bold;">&#93;</span>+<span style="color:#006600; font-weight:bold;">&#41;</span>\/$/</span>, <span style="color: #3366CC;">"whatyear"</span>, <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color: #3366CC;">"name"</span><span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#93;</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color: #0066FF;">/^luke$/</span>, <span style="color: #3366CC;">"whatyear"</span>, <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006600; font-weight:bold;">&#93;</span>, <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color: #000066;">name</span>: <span style="color: #3366CC;">"Cool Hand Luke"</span><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#93;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
<p>To get this all going you do something like this:</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-4');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-4">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">dojo.<span style="color: #006600;">addOnLoad</span><span style="color:#006600; font-weight:bold;">&#40;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span>!patterns.<span style="color: #006600;">dispatch</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; renderContent<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"../../default.dtl"</span>, </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span>movieCount: demo.<span style="color: #006600;">database</span>.<span style="color: #006600;">movies</span>.<span style="color: #006600;">length</span><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">function</span> renderContent<span style="color:#006600; font-weight:bold;">&#40;</span>templatename, variables<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #003366; font-weight: bold;">var</span> template = <span style="color: #003366; font-weight: bold;">new</span> dojox.<span style="color: #006600;">dtl</span>.<span style="color: #006600;">Template</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #003366; font-weight: bold;">new</span> dojo.<span style="color: #006600;">moduleUrl</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"demo"</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; templatename<span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #003366; font-weight: bold;">var</span> context = <span style="color: #003366; font-weight: bold;">new</span> dojox.<span style="color: #006600;">dtl</span>.<span style="color: #006600;">Context</span><span style="color:#006600; font-weight:bold;">&#40;</span>variables<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; dojo.<span style="color: #006600;">byId</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"content"</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">innerHTML</span> = template.<span style="color: #006600;">render</span><span style="color:#006600; font-weight:bold;">&#40;</span>context<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; pagecount++;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; dojo.<span style="color: #006600;">byId</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"pagecount"</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">innerHTML</span> = pagecount;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
<p>Read the full article for details, and <a href="http://www.sitepen.com/labs/code/reinhardt1/reinhardt_demo.zip">download the entire sample, for perusal</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/reinhardt/feed</wfw:commentRss>
		</item>
		<item>
		<title>IE8 and Standards</title>
		<link>http://ajaxian.com/archives/ie8-and-standards</link>
		<comments>http://ajaxian.com/archives/ie8-and-standards#comments</comments>
		<pubDate>Fri, 10 Oct 2008 10:26:50 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Browsers]]></category>

		<category><![CDATA[Front Page]]></category>

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

		<guid isPermaLink="false">http://ajaxian.com/?p=4726</guid>
		<description><![CDATA[Anne van Kesteren of Opera Software has updated his post on IE 8 to cover beta 2:



XDomainRequest: Microsoft unfortunately continues with XDomainRequest rather than making changes to XMLHttpRequest as other browsers are doing and as is being standardized by the W3C Web Apps Working Group. (Disclaimer: I am the editor of XMLHttpRequest Level 2.)
  [...]]]></description>
			<content:encoded><![CDATA[<p>Anne van Kesteren of Opera Software has updated his post on IE 8 to <a href="http://annevankesteren.nl/2008/10/ie8-bad-update">cover beta 2</a>:</p>
<blockquote>
<ul>
<li>
<p><strong><code>XDomainRequest</code></strong>: Microsoft unfortunately continues with <code>XDomainRequest</code> rather than making changes to <code>XMLHttpRequest</code> as other browsers are doing and as is being standardized by the W3C Web Apps Working Group. (Disclaimer: I am the editor of <a href="http://dev.w3.org/2006/webapi/XMLHttpRequest-2/"><code>XMLHttpRequest</code> Level 2</a>.)
  </p>
<p>Some agreement was made to at least support the same protocol on the server, namely using the <code>Access-Control-Allow-Origin</code> header as per <a href="http://dev.w3.org/2006/waf/access-control/">Access Control for Cross-Site Requests</a>. (Disclaimer: I am the editor of that draft too.) However, IE8 only supports <code>*</code> as value for that header, not an origin, e.g. <code>http://annevankesteren.nl</code> (<a href="/test/ie/xdomainrequest/002.htm">test</a>). Sunava <a href="http://blogs.msdn.com/ie/archive/2008/10/06/updates-for-ajax-in-ie8-beta-2.aspx#8988858">pointed out</a> that was because the W3C WebApps WG was still debating the matter. Here is hoping they will fix the bug as there is agreement on that syntax.</p>
</li>
<li>
<p><strong>HTML5 DOM Storage</strong>: <code>localStorage</code> and <code>sessionStorage</code> are now supported. Enumerating through them does not give the results I was expecting (I got "<code>length</code>" and "<code>remainingSpace</code>" back as well, besides the keys) and they still have a <code>remainingSpace</code> member that is not part of HTML5. Given that anything that gives some indication of space is highly vendor specific as it depends on encoding, compression, and type of device, they should really rename it to <code>msRemainingSpace</code> or some such or simply drop it.
  </p>
<p>IE8 also supports an event named <code>storagecommit</code> that is not part of HTML5 which tells you when the data has been written to an XML backend format IE8 uses. The event object for used for the <code>storage</code> does not expose <code>key</code>, <code>oldValue</code>, and <code>newValue</code>. The <code>url</code> member is named <code>uri</code> and the <code>source</code> member is <code>null</code> rather than a reference to the <code>Window</code> object. Ouch!</p>
</li>
<li>
<p><strong>ARIA</strong>: Aaron Leventhal recently blogged about how <a href="http://accessgarage.wordpress.com/2008/09/30/legacy-defeats-consistency-in-ie-8s-web-20-accessibility-effort/">ARIA in IE8 is a pain</a>. (Aaron works for IBM making Firefox and Web applications accessible and is a member of the W3C PF WG which standardizes ARIA.) In short, when IE8 renders in super standards mode ARIA will work as everywhere else, otherwise you have to use Microsoft proprietary syntax. So not only do you need to upgrade your application code to be keyboard accessible and ARIA-enabled, you will also need to upgrade it from quirks to standards mode. Alternatively, you could take the easy way out and lock out other browsers. Not nice.
</p>
</li>
</ul>
</blockquote>
<p>He did admit that he has "only played around with Internet Explorer 8 for an hour so" :)</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/ie8-and-standards/feed</wfw:commentRss>
		</item>
		<item>
		<title>An Interesting Twist on a Pastebin</title>
		<link>http://ajaxian.com/archives/an-interest-twist-on-a-pastebin</link>
		<comments>http://ajaxian.com/archives/an-interest-twist-on-a-pastebin#comments</comments>
		<pubDate>Thu, 09 Oct 2008 15:52:26 +0000</pubDate>
		<dc:creator>Rey Bango</dc:creator>
		
		<category><![CDATA[Front Page]]></category>

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

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

		<guid isPermaLink="false">http://ajaxian.com/?p=4715</guid>
		<description><![CDATA[Pastebins have become an important part of sharing code with colleagues. Sites such as Pastebin &#038; Pastie.org are extremely popular because they're easy to use and very effective in letting people compare notes on source code, especially in a support setting. 
Remy Sharp wanted to take the pastebin concept a step further, past the static [...]]]></description>
			<content:encoded><![CDATA[<p>Pastebins have become an important part of sharing code with colleagues. Sites such as <a href="http://pastebin.com/">Pastebin</a> &#038; <a href="http://pastie.org/">Pastie.org</a> are extremely popular because they're easy to use and very effective in letting people compare notes on source code, especially in a support setting. </p>
<p><a href="http://remysharp.com">Remy Sharp</a> wanted to take <a href="http://remysharp.com/2008/10/06/js-bin-for-collaborative-javascript-debugging/">the pastebin concept a step further</a>, past the static posting of code. His idea, which he tossed around for 6 months, finally came to fruition in the form of JS Bin, a new pastebin site with a twist:</p>
<blockquote><p>JS Bin is a form of paste bin, but with a twist. It allows you to also include the HTML and CSS to provide context to your pasty. As such, it means you can actually run the JavaScript and pass this on to a colleague to help to debug.</p></blockquote>
<p>This is a great idea as it lets you troubleshoot your code while seeing immediate results. The feature list is well thought out as well.</p>
<ul>
<li>Save private snippet</li>
<li>Remote Ajax debugging</li>
<li>Snippet URLs run entirely on their own (i.e. without the JS Bin framework around them)</li>
<li>Support to quickly inject major JS libraries including jQuery, jQuery UI, Prototype, Scriptaculous, Dojo, MooTools &#038; YUI</li>
<li>Saves state within the open window (i.e. refresh and the code doesn't reset)</li>
</ul>
<p>The ability to inject many of the popular JavaScript libraries is especially important and I would highly recommend individual project teams to contact Remy <em><strong>directly</strong></em> to have their libs included.</p>
<p>To give this a run, I'd suggest going to the <a href="http://jsbin.com/">JS Bin site</a> and putting it through its paces. In addition, Remy has produced two videos which go into detail on how to leverage JS Bin:</p>
<ul>
<li><a href="http://jsbin.com/about#video">JS Bin Video Introduction</a></li>
<li><a href="http://jsbin.com/about#video">Ajax Debugging</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/an-interest-twist-on-a-pastebin/feed</wfw:commentRss>
		</item>
		<item>
		<title>Chofter: search mashup using all things Dojo</title>
		<link>http://ajaxian.com/archives/chofter-search-mashup-using-all-things-dojo</link>
		<comments>http://ajaxian.com/archives/chofter-search-mashup-using-all-things-dojo#comments</comments>
		<pubDate>Thu, 09 Oct 2008 15:50:30 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Dojo]]></category>

		<category><![CDATA[Front Page]]></category>

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

		<guid isPermaLink="false">http://ajaxian.com/?p=4719</guid>
		<description><![CDATA[
Shane O'Sullivan has built a nice search mashup experience called Chofter. It uses all things Dojo, including:

Layouts, Dialogs, Menus and ContentPanes for the user interface.
dojo.data and dojo.rpc for data transfer.
dojox.dtl (Django Templating Library) for transforming search data into visuals.
dojo.fx and FisheyeLite for eye candy

]]></description>
			<content:encoded><![CDATA[<p><img src="http://ajaxian.com/wp-content/uploads/chofter.png" alt="" title="Chofter" width="480" height="335" border="0" /></p>
<p>Shane O'Sullivan has built a nice search mashup experience called <a href="http://www.chofter.com/">Chofter</a>. It uses all things Dojo, including:</p>
<ul>
<li><a href="http://dojocampus.org/explorer/#Dijit_Layout" target="_blank">Layouts</a>, Dialogs, Menus and ContentPanes for the user interface.</li>
<li><a href="http://dojocampus.org/explorer/#Dojo_Data" target="_blank">dojo.data</a> and dojo.rpc for data transfer.</li>
<li><a href="http://dojocampus.org/explorer/#Dojox_DTL" target="_blank">dojox.dtl</a> (Django Templating Library) for transforming search data into visuals.</li>
<li><a href="http://dojocampus.org/explorer/#Dojo_FX" target="_blank">dojo.fx</a> and <a href="http://dojocampus.org/explorer/#Dojox_Widgets_FishEyeLite" target="_blank">FisheyeLite</a> for eye candy</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/chofter-search-mashup-using-all-things-dojo/feed</wfw:commentRss>
		</item>
		<item>
		<title>How does the scoping work with eval()?</title>
		<link>http://ajaxian.com/archives/how-does-the-scoping-work-with-eval</link>
		<comments>http://ajaxian.com/archives/how-does-the-scoping-work-with-eval#comments</comments>
		<pubDate>Thu, 09 Oct 2008 15:32:45 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Front Page]]></category>

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

		<guid isPermaLink="false">http://ajaxian.com/?p=4716</guid>
		<description><![CDATA[Rakesh Pai wanted to understand scope issues with eval and found a few surprises.
He started with the snippet:
PLAIN TEXT
JAVASCRIPT:




&#160;


var foo = 123;


var bar = &#123;


&#160; &#160; changeFoo: function&#40;&#41; &#123;


&#160; &#160; &#160; &#160; // We'll keep changing the following snippet


&#160; &#160; &#160; &#160; alert&#40;this&#41;;


&#160; &#160; &#160; &#160; eval&#40;"var foo = 456"&#41;;


&#160; &#160; &#160; &#160; // Changing [...]]]></description>
			<content:encoded><![CDATA[<p>Rakesh Pai wanted to understand scope issues with eval and <a href="http://piecesofrakesh.blogspot.com/2008/10/understanding-eval-scope-spoiler-its.html">found a few surprises</a>.</p>
<p>He started with the snippet:</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-6');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-6">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">var</span> foo = <span style="color:#800000;">123</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">var</span> bar = <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; changeFoo: <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">// We'll keep changing the following snippet</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066;">alert</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #000066; font-weight: bold;">this</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">eval</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"var foo = 456"</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">// Changing snippet ends</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">bar.<span style="color: #006600;">changeFoo</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000066;">alert</span><span style="color:#006600; font-weight:bold;">&#40;</span>foo<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
<p>And then he rev'd it in different ways and captured the output.</p>
<p>His conclusion?</p>
<blockquote>
<p><strong>What I think of these results</strong>: </p>
<ul>
<li>I don't know what Firefox is doing in case 2, and for some reason Safari Nightlies seem to be following it. Maybe it's just beyond my understanding, but case 2 is not supposed to be different from case 1. Why does case 2 operate in global scope? If <code>window.eval</code> is different from <code>eval</code>, case 3 shouldn't all have given errors. Someone please help me understand that $hit.</li>
<li>Case 4 makes sense, but that's a non-standard behavior in Firefox. Understandable that no one else exhibits it.</li>
<li>IE baffles me in case 5, and Chrome seems to ape it. In this scenario, the anonymous function is supposed to have the global scope - so, in this case, <code>this</code> should point to the window. WTF is happening here!</li>
<li>Consistent with case 2 above, Firefox and Safari Nightlies continue to display weird behavior in case 6. For some reason, in these two cases, the <code>eval</code> operates in the global scope.</li>
<li>Now, I have no idea why, but only cases 8 and 9 seem to really work at all. This is despite Doug Crockford going on and on about not using <code>with</code> constructs. It's also despite being beyond (my) understanding about why the <code>with</code> should make any difference to the <code>eval</code>, since <code>eval</code> is part of the window object.</li>
</ul>
<p>All in call, if you are going to be <code>eval</code>ing JavaScript (not JSON), and you want the eval'd code to run in the global scope, you should use the <code>with</code> block around the JavaScript snippet. Or else, you can lose a lot of hair handling cross-browser issues.</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/how-does-the-scoping-work-with-eval/feed</wfw:commentRss>
		</item>
		<item>
		<title>Exclusive iPhone in Action Chapter Downloads</title>
		<link>http://ajaxian.com/archives/exclusive-iphone-in-action-chapter-downloads</link>
		<comments>http://ajaxian.com/archives/exclusive-iphone-in-action-chapter-downloads#comments</comments>
		<pubDate>Thu, 09 Oct 2008 15:26:09 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Books]]></category>

		<category><![CDATA[Front Page]]></category>

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

		<guid isPermaLink="false">http://ajaxian.com/?p=4713</guid>
		<description><![CDATA[Now that the NDA has been released, book publishers are finally able to get out their wares. Christopher Allen and Shannon Appelcline have written iPhone in Action, and have kindly given the Ajaxian community free downloads of a couple of the early access chapters:

SDK Programming for Web Developers delves into the introduction to Objective-C and [...]]]></description>
			<content:encoded><![CDATA[<p>Now that the NDA has been released, book publishers are finally able to get out their wares. Christopher Allen and Shannon Appelcline have written <a href="http://www.manning.com/callen/">iPhone in Action</a>, and have kindly given the Ajaxian community free downloads of a couple of the early access chapters:</p>
<ul>
<li><a href="http://ajaxian.com/downloads/books/iphoneinaction/08SDKandWeb.pdf">SDK Programming for Web Developers</a> delves into the introduction to Objective-C and MVC</li>
<li><a href="http://ajaxian.com/downloads/books/iphoneinaction/11CreatinginXCode.pdf">Creating a first project in Xcode: Hello,<br />
World!</a> gets you used to the tool chain</li>
</ul>
<p>I hope to see books that focus on what you can do with the Web APIs too of course ;)</p>
<p><em><br />
This article is based on <a href="http://www.manning.com/callen/">iPhone in Action</a>, to be published January 2009. It is being reproduced here by permission from <a href="http://www.manning.com">Manning Publications</a>. Manning early access books and ebooks are sold exclusively through Manning. Visit the book's page for more information.<br />
</em></p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/exclusive-iphone-in-action-chapter-downloads/feed</wfw:commentRss>
		</item>
		<item>
		<title>Antisocial: 3D in Canvas with Sound</title>
		<link>http://ajaxian.com/archives/antisocial</link>
		<comments>http://ajaxian.com/archives/antisocial#comments</comments>
		<pubDate>Wed, 08 Oct 2008 22:42:39 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Canvas]]></category>

		<category><![CDATA[Front Page]]></category>

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

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

		<guid isPermaLink="false">http://ajaxian.com/?p=4710</guid>
		<description><![CDATA[
Gasman has created Antisocial, a very enjoyable demo of Canvas doing fake 3d and 2d along with that ZX Spectrum sound that you loved as a kid.
Check out the tool to see where the magic happens, and make some music, Spectrum style!
I feel like we have been light on showcases recently, so please email us [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://ajaxian.com/wp-content/uploads/antisocial.png" alt="" title="Antisocial" width="480" height="456" class="alignnone size-full wp-image-4711" /></p>
<p>Gasman has created <a href="http://antisocial.demozoo.org/">Antisocial</a>, a very enjoyable demo of Canvas doing fake 3d and 2d along with that ZX Spectrum sound that you loved as a kid.</p>
<p>Check out the <a href="http://antisocial.demozoo.org/tool.html">tool to see where the magic happens</a>, and make some music, Spectrum style!</p>
<p>I feel like we have been light on showcases recently, so please email us if you have seen a cool use of Ajax that we haven't picked up on!</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/antisocial/feed</wfw:commentRss>
		</item>
		<item>
		<title>Pimp My Site with CSS and Prototype</title>
		<link>http://ajaxian.com/archives/pimp-my-site-with-css-and-prototype</link>
		<comments>http://ajaxian.com/archives/pimp-my-site-with-css-and-prototype#comments</comments>
		<pubDate>Wed, 08 Oct 2008 17:19:56 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Front Page]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=4708</guid>
		<description><![CDATA[Do you like some code pimpage? We saw a couple of interesting posts on this recently in fact.
First, our own Christian Heilmann took a table based layout, and in short order turned it over to the light via YUI Grids and CSS.
He took this:

And it quickly became this:

He has made the code available, and is [...]]]></description>
			<content:encoded><![CDATA[<p>Do you like some code pimpage? We saw a couple of interesting posts on this recently in fact.</p>
<p>First, our own Christian Heilmann took a table based layout, and in short order <a href="http://icant.co.uk/sandbox/nasa/">turned it over to the light via YUI Grids and CSS</a>.</p>
<p>He took this:</p>
<p><img src="http://www.wait-till-i.com/wp-content/uploads/2008/10/original.jpg" /></p>
<p>And it quickly became this:</p>
<p><img src="http://www.wait-till-i.com/wp-content/uploads/2008/10/yuicopy.jpg" /></p>
<p>He has <a href="http://icant.co.uk/sandbox/nasa/nasa.zip">made the code available</a>, and is asking if people want more information. I would love to see more of this content myself... people that know their stuff explaining the how and the why.</p>
<p>This leads us from CSS to JavaScript. The Prototype team put out a <a href="http://prototypejs.org/2008/10/7/want-your-code-pimped">call for pimping</a>. Send them some code, and they will show you how they would write it, inevitably in that Prototype "kinda like Ruby JavaScript" style. I look forward to the first showing!</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/pimp-my-site-with-css-and-prototype/feed</wfw:commentRss>
		</item>
		<item>
		<title>The myths and reality of XHTML</title>
		<link>http://ajaxian.com/archives/xhtml-myths</link>
		<comments>http://ajaxian.com/archives/xhtml-myths#comments</comments>
		<pubDate>Wed, 08 Oct 2008 11:07:30 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Front Page]]></category>

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

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

		<guid isPermaLink="false">http://ajaxian.com/?p=4702</guid>
		<description><![CDATA[
Lack of support for XHTML is a fact of life on the web in 2008. Prior to the 3.0 series of Firefox the XHTML processor in Gecko was so poor that Mozilla’s own engineers recommended against it[27]; no version of Internet Explorer up to, and including, IE 8 support XHTML at all, and a number [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>
Lack of support for XHTML is a fact of life on the web in 2008. Prior to the 3.0 series of Firefox the XHTML processor in Gecko was so poor that Mozilla’s own engineers recommended against it[27]; no version of Internet Explorer up to, and including, IE 8 support XHTML at all, and a number of other browsers such as Lynx were never written to handle XML in the first place.
</p></blockquote>
<p>The above quote comes from <a href="http://www.dev-archive.net/articles/xhtml.html#content%E2%80%93negotiation">XHTML?—?myths and reality</a> by Tina Holmboe, a member of the XHTML Working Group.</p>
<p>It is a nice piece that delves into:</p>
<ol>
<li><a href="http://www.dev-archive.net/articles/xhtml.html#introduction">Introduction</a></li>
<li><a href="http://www.dev-archive.net/articles/xhtml.html#purpose">The Purpose of XHTML</a></li>
<li><a href="http://www.dev-archive.net/articles/xhtml.html#types">XHTML and the Content Type</a></li>
<li><a href="http://www.dev-archive.net/articles/xhtml.html#strict">Strictly XHTML</a></li>
<li><a href="http://www.dev-archive.net/articles/xhtml.html#lack-of-support">Lack of support</a></li>
<li><a href="http://www.dev-archive.net/articles/xhtml.html#content-negotiation">Content–Negotiation</a></li>
<li><a href="http://www.dev-archive.net/articles/xhtml.html#recommendations">Recommendations</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/xhtml-myths/feed</wfw:commentRss>
		</item>
		<item>
		<title>Aptana Jaxer 1.0 RC</title>
		<link>http://ajaxian.com/archives/aptana-jaxer-10-rc</link>
		<comments>http://ajaxian.com/archives/aptana-jaxer-10-rc#comments</comments>
		<pubDate>Wed, 08 Oct 2008 10:12:28 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Aptana]]></category>

		<category><![CDATA[Front Page]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=4704</guid>
		<description><![CDATA[
The Jaxer team has released a release candidate for Jaxer 1.0.

Here a synopsis of all the new features and improvements that have gone into this latest release candidate:

	Jaxer.Sandbox: HTTP-level control; support readyState, toHTML, waitForCompletion

	Built-in, extensible dispatching for RESTful and RPC service requests

	Fast, native JSON support

	Improved APIs for HTTP Request and Response

	More flexible handling of application [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.aptana.com/images/jaxer_logo_whitebg.jpg" border="0" style="float: right; padding: 8px" /></p>
<p>The Jaxer team has <a href="http://www.aptana.com/blog/khakman/jaxer10rc">released a release candidate for Jaxer 1.0</a>.</p>
<blockquote>
<p>Here a synopsis of all the new features and improvements that have gone into this latest release candidate:</p>
<ul>
<li>	Jaxer.Sandbox: HTTP-level control; support readyState, toHTML, waitForCompletion
</li>
<li>	Built-in, extensible dispatching for RESTful and RPC service requests
</li>
<li>	Fast, native JSON support
</li>
<li>	Improved APIs for HTTP Request and Response
</li>
<li>	More flexible handling of application configuration
</li>
<li>	Many bug fixes, smaller improvements, and cleanups
</li>
</ul>
</blockquote>
<p>They are moving pretty fast, so are looking for feedback before they wrap up a final 1.0 release.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/aptana-jaxer-10-rc/feed</wfw:commentRss>
		</item>
		<item>
		<title>Extreme JavaScript Performance; John Resig on Ars</title>
		<link>http://ajaxian.com/archives/extreme-javascript-performance-john-resig-on-ars</link>
		<comments>http://ajaxian.com/archives/extreme-javascript-performance-john-resig-on-ars#comments</comments>
		<pubDate>Wed, 08 Oct 2008 09:17:51 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Front Page]]></category>

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

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

		<guid isPermaLink="false">http://ajaxian.com/?p=4706</guid>
		<description><![CDATA[Ars Technica has a new columnist, John Resig. His first piece is on Extreme JavaScript Performance which has started to come to us in abundance recently!
His article focuses on the latest updates to the fish, SquirrelFish Extreme:

A popular technique that is gaining traction amongst JavaScript engine implementers is that of optimizing the engine, while it's [...]]]></description>
			<content:encoded><![CDATA[<p>Ars Technica has a new columnist, John Resig. His first piece is on <a href="http://arstechnica.com/journals/linux.ars/2008/10/07/extreme-javascript-performance">Extreme JavaScript Performance</a> which has started to come to us in abundance recently!</p>
<p>His article focuses on the latest updates to the fish, SquirrelFish Extreme:</p>
<blockquote>
<p>A popular technique that is gaining traction amongst JavaScript engine implementers is that of optimizing the engine, while it's still processing the JavaScript code, to determine the "type" of the object that is being used. Since JavaScript doesn't include any sort of explicit type system JavaScript engines are frequently forced to check and re-check the values that they are handling, to insure their integrity. SFX rounds out the collection of other modern JavaScript engines, namely V8 and TraceMonkey, to provide this form of <a href="http://research.sun.com/self/papers/pics.html" title="polymorphic inline caching">polymorphic inline caching</a>. Interestingly, the idea for this form of caching comes from the Self programming language, the origin of many of the ideas in JavaScript (such as using prototypal inheritance instead of the more-common classical form of object inheritance seen in languages like Java).</p>
<p>
JavaScript engines are serving as the test bed for new forms of dynamic language optimization. No other language is seeing this level of competition and rapid improvement that JavaScript is. This is optimal considering that JavaScript is one of the most widely-deployed programming languages available.
</p>
<p>
The SquirrelFish Extreme release currently stands as the fastest JavaScript engine [based on SunSpider] (although that's certain to change as healthy competition continues).</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/extreme-javascript-performance-john-resig-on-ars/feed</wfw:commentRss>
		</item>
		<item>
		<title>navigator.geolocation now available in Firefox via Geode</title>
		<link>http://ajaxian.com/archives/navigatorgeolocation-firefox</link>
		<comments>http://ajaxian.com/archives/navigatorgeolocation-firefox#comments</comments>
		<pubDate>Tue, 07 Oct 2008 18:32:14 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Front Page]]></category>

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

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

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

		<guid isPermaLink="false">http://ajaxian.com/?p=4697</guid>
		<description><![CDATA[
When I posted about using navigator.geolocation now the only support that I had was via Gears and the ClientLocation API. I wrote the shim to try to get you the W3C API no matter what, and today we have the first implementation in a browser, via Geode.
Geode is the latest project in Mozilla Labs that [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://docs.google.com/File?id=aq5zpf783fj_175gb885mhb_b" style="float: right; padding:8px; border: none; width: 200px;" /></p>
<p>When I posted about <a href="http://ajaxian.com/archives/navigatorgeolocation-using-the-w3c-geolocation-api-today">using navigator.geolocation now</a> the only support that I had was via Gears and the ClientLocation API. I wrote the <a href="http://google-ajax-examples.googlecode.com/svn/trunk/whereareyou/scripts/geometa.js">shim</a> to try to get you the W3C API no matter what, and today we have the first implementation in a browser, via <a href="http://labs.mozilla.com/2008/10/introducing-geode/">Geode</a>.</p>
<p>Geode is the latest project in Mozilla Labs that gives you that API in Firefox. Aza Raskin has a nice <a href="http://azarask.in/local/">Food Finder</a> application that ties it together with local search and maps.</p>
<p><img src="http://docs.google.com/File?id=aq5zpf783fj_176gsg9g6c8_b" width="460" /></p>
<h3>Differences between Geode and Geolocation in Firefox 3.1</h3>
<p>Geode and the Geolocation Services in Firefox 3.1 will use the same <a id="wgw-" title="W3C API for Geolocation" href="http://dev.w3.org/geo/api/spec-source.html">W3C API for Geolocation</a>, meaning that the same Javascript code will work in both. The still-in-developement Firefox 3.1 version will allow the user to choose a geolocation service provider, which can either be a peripheral device like a GPS, or a web-based service provider like we’ve used in Geode. We’ll be using the feedback we get from Geode, as well as the feedback we see on the upcoming Firefox 3.1 Beta and Fennec Alpha releases, to refine the feature before shipping it in a future Mozilla product release. We’re particularly interested in ensuring that the final implementation is as sensitive to user privacy and choice as possible.</p>
<p>They also got some partners to start playing with this:</p>
<blockquote>
<p>To kick off Geode, two other websites have started innovating with location. Both require accounts before you can try them out.</p>
<p><a id="o:1n" title="Pownce" href="http://pownce.com/">Pownce</a> is a service that makes it easy to send stuff (music, photos, events, and messages) to your friends. Adding the power of location — where you are when you uploaded a photo or sent a message — paints a compelling picture that helps you discover friends and activities around you. Head there to <a id="ll8y" title="see it in action" href="http://pownce.com/">see it in action</a> (you’ll have to sign up for an account).</p>
<p><a id="usha" title="Yahoo! FireEagle" href="http://fireeagle.yahoo.net/">Yahoo! Fire Eagle</a> is a service that acts as a broker for your location, creating a single place where any web service, from any device can get access to your last updated location. Fire Eagle integrates with Geode so that you’ll never have to manually enter your location again. Once you have a Fire Eagle account, you can see Geode working <a id="e0l5" title="here" href="http://fireeagle.yahoo.net/my/location">here</a>.</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/navigatorgeolocation-firefox/feed</wfw:commentRss>
		</item>
		<item>
		<title>Pyjamas: GWT for Python</title>
		<link>http://ajaxian.com/archives/pyjamas-gwt-for-python</link>
		<comments>http://ajaxian.com/archives/pyjamas-gwt-for-python#comments</comments>
		<pubDate>Tue, 07 Oct 2008 13:00:58 +0000</pubDate>
		<dc:creator>Ben Galbraith</dc:creator>
		
		<category><![CDATA[Front Page]]></category>

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

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

		<guid isPermaLink="false">http://ajaxian.com/?p=4689</guid>
		<description><![CDATA[Last week, we posted a story about deploying GWT to PHP back-ends. We've got another GWT-ish post this week: Pyjamas, a sort of GWT for Python.

The SourceForge project page has a brief overview and pointers to a tutorial, a widget showcase, and more.
]]></description>
			<content:encoded><![CDATA[<p>Last week, we posted a story about deploying GWT to PHP back-ends. We've got another GWT-ish post this week: Pyjamas, a sort of GWT for Python.</p>
<p><img src="http://ajaxian.com/wp-content/uploads/py.png" alt="" title="py" width="348" height="315" class="alignnone size-full wp-image-4692" /></p>
<p>The <a href="http://pyjamas.sourceforge.net/">SourceForge project page</a> has a brief overview and pointers to a <a href="http://pyjd.sf.net/controls_tutorial.html">tutorial</a>, a <a href="http://pyjamas.sourceforge.net/showcase/Showcase.html">widget showcase</a>, and more.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/pyjamas-gwt-for-python/feed</wfw:commentRss>
		</item>
		<item>
		<title>IE 8 beta 2 Ajax features</title>
		<link>http://ajaxian.com/archives/ie-8-beta-2-ajax-features</link>
		<comments>http://ajaxian.com/archives/ie-8-beta-2-ajax-features#comments</comments>
		<pubDate>Tue, 07 Oct 2008 12:53:49 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Browsers]]></category>

		<category><![CDATA[Front Page]]></category>

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

		<guid isPermaLink="false">http://ajaxian.com/?p=4688</guid>
		<description><![CDATA[Sunava Dutta has detailed the enhancements made to IE 8 beta 2 for Ajax developers including XDR, XDM/postMessage, DOM Storage, offline detection, and more. A lot of great stuff!

XDomainRequest (XDR) 
This is an object built from the ground up to make client-side cross-domain calls secure and easy. To reduce the chances of inadvertent cross domain [...]]]></description>
			<content:encoded><![CDATA[<p>Sunava Dutta has <a href="http://blogs.msdn.com/ie/archive/2008/10/06/updates-for-ajax-in-ie8-beta-2.aspx">detailed the enhancements made to IE 8 beta 2 for Ajax developers</a> including XDR, XDM/postMessage, DOM Storage, offline detection, and more. A lot of great stuff!</p>
<blockquote>
<p><b>XDomainRequest (XDR)</b><b> </b></p>
<p>This is an object built from the ground up to make client-side cross-domain calls secure and easy. To reduce the chances of inadvertent cross domain access, this object requires an explicit acknowledgement for allowing cross domain calls from the client script and the server. Additionally, it reduces the need for sites having to resort to the dangerous practice of merge scripting from third parties directly into the mashup page. This practice is dangerous because it provides third parties full access to the DOM. All this comes with the added benefit of improved client-side performance and lower server maintenance costs thanks to the absence of a need for server farms for proxying. </p>
<p>During the Beta 1 timeframe there were many security based concerns raised for cross domain access of third party data using <a href="http://www.w3.org/TR/XMLHttpRequest2/" mce_href="http://www.w3.org/TR/XMLHttpRequest2/">cross site XMLHttpRequest</a> and the Access Control framework. Since Beta 1, we had the chance to <a href="http://www.w3.org/QA/2008/07/x-site-requests.html" mce_href="http://www.w3.org/QA/2008/07/x-site-requests.html">work with other browsers and attendees at a W3C face-to-face meeting</a> to improve the server-side experience and security of the W3C’s Access Control framework. As a result, we’ve updated XDR to be explicitly compliant with syntax and directives in the sections of Access Control for requesting simple public third-party data anonymously on the client! (Section <a href="http://dev.w3.org/2006/waf/access-control/#simple" mce_href="http://dev.w3.org/2006/waf/access-control/#simple">5.1.3 in the Access Control Process Model</a>) </p>
<p>The updates to XDR from Beta 1 allow IE8 to request data from the domain's server by sending an <b>Origin</b> header with the serialized value of the origin of the requestor. IE8 Beta 2 will only return the response if the server responds with <b>Access-Control-Allow-Origin: *</b>, instead of allowing the <b>XDomainRequestAllowed: 1 </b>header as we did in Beta 1<b>.</b> Other changes include support for relative paths in the <b>open</b> method, and restricting access to only HTTP and HTTPS destinations.</p>
<p><a href="http://go.microsoft.com/fwlink/?LinkID=128221" mce_href="http://go.microsoft.com/fwlink/?LinkID=128221"><b>Cross-document Messaging (XDM)</b></a><b></b></p>
<p><a href="http://go.microsoft.com/fwlink/?LinkID=128221" mce_href="http://go.microsoft.com/fwlink/?LinkID=128221">Cross-document messaging</a> is another powerful cross-domain feature that <a href="http://blogs.msdn.com/ie/archive/2008/05/19/enabling-mash-ups-in-internet-explorer-8-with-cross-document-messaging.aspx" mce_href="http://blogs.msdn.com/ie/archive/2008/05/19/enabling-mash-ups-in-internet-explorer-8-with-cross-document-messaging.aspx">I’ve blogged about in the past</a>. Rather than make a backend request to a remote Web service, this allows sites hosting third-party <b>IFrame</b>-based "gadgets" or components to communicate directly with the parent, without unsafely violating the same site origin policy. This has advantages including improved performance and reliability, as developers don’t have to resort to workarounds that behave differently between browsers and have unwanted side-effects. This technique also removes the need for embedding third-party script in your page, lessening the chance of potential information disclosure vulnerabilities like the disclosure of your sensitive data (such as information in your social network profile) to third parties without your consent. </p>
<p>Beta 2 updates here include moving the <b>onmessage</b> handler from the <b>document</b> object to the <b>window</b> object to better align with the updated HTML 5.0 draft. </p>
<blockquote>
<p><span style="line-height: 115%; font-family: 'Courier New'; color: rgb(192, 0, 0); font-size: 10pt;"><font color="#ff0000">window.attachEvent("onmessage", HandleMessage);</font> </span></p>
</blockquote>
<p>We also replaced <b>e.URI</b> with <b>e.origin</b>, which is serialized form of “scheme” + “host” + “non-default port”. This is far safer as the URI can carry potentially sensitive information from the origin site that is not needed by the recipient for the decision to grant or not grant access. </p>
<p style="margin-left: 0.5in;" class="MsoNoSpacing"><font color="#ff0000"><span style="font-family: 'Courier New'; color: rgb(192, 0, 0); font-size: 10pt;"><font color="#ff0000">if (e.origin == 'http://www.contoso.com')</font>&nbsp; <br /></span></font><span style="font-family: 'Courier New'; color: rgb(192, 0, 0); font-size: 10pt;"><font color="#ff0000"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>{&nbsp; <br /></font></span><span style="font-family: 'Courier New'; color: rgb(192, 0, 0); font-size: 10pt;"><font color="#ff0000"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>// process message text</font><span style=""><font color="#ff0000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br /></font></span></span><span style="font-family: 'Courier New'; color: rgb(192, 0, 0); font-size: 10pt;"><font color="#ff0000"><span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>} </font></span></p>
<p>Finally, the HTML 5.0 draft also mandates that the <b>targetOrigin</b> parameter for the <b>postMessage</b> method now be made a required parameter, as opposed to an optional one. This will make it difficult for developers to make errors by requiring an explicit acknowledgement of the target destination of the message by specifying the origin &lt;URL&gt; or wildcard &lt;*&gt;.</p>
<blockquote>
<p><span style="font-family: 'Courier New'; color: rgb(192, 0, 0); font-size: 10pt;"><span style="">&nbsp;</span><font color="#ff0000">frameOther.postMessage("This is a message", "http://example.com");</font> </span></p>
</blockquote>
<p><b>DOM Storage</b></p>
<p>Today, web pages use the <b>document</b>.<b>cookie</b> property to store data on the local machine. Cookies are limited in capability by the fact that sites can only store 50 key/value pairs per domain. Furthermore, the cookie programming model is cumbersome and requires parsing the entire cookie string for data. While cookies are useful for marking transitions and changes on the client to the server as they are sent with the request headers in chunks of up to 4KB, IE8 brings better alternatives for scenarios involving persisting data on the client and distinctly maintaining sessions in different tabs. The W3C’s HTML 5 DOM Storage objects provide a much simpler global and session storage model for key/value pair string data. Sites can store data for the life of a tab or until the site or user clears the data. </p>
<p>Updates for Beta 2 include changing the name of the persistent <b>globalStorage</b> attribute to <b>localStorage</b> and the removal of the need to specify the domain when writing to the <b>localStorage</b></p>
<p><b></b></p>
<blockquote>
<p class="CodeSnippet"><font size="2"></font><font face="Courier New"></font><font color="#ff0000"><span style="color: rgb(192, 0, 0);"><font color="#ff0000">// Store a key-value pair. <br /></font></span><span style="color: rgb(192, 0, 0);"><font color="#ff0000">localStorage.setItem("FirstName","Sunava");</font> </span></font></p>
</blockquote>
<p>Finally, we also included improved support of the updated <b>onstorage</b> HTML 5.0 event returned when the storage is changed. We now return the URI when the local storage is changed, so that handlers for pages can know who carried out the latest transaction in the storage space in addition to providing the source to the window of the origin. Furthering the good news, the HTML 5.0 Working Group has incorporated the <b>clear</b> method, which we shipped in Beta 1, into the draft. This essentially allows for script to clear all items accessible in its storage space without having to iterate though the keys.</p>
<p><b>Connectivity Event</b></p>
<p>The <a href="http://msdn.microsoft.com/en-us/library/cc304129%28VS.85%29.aspx" mce_href="http://msdn.microsoft.com/en-us/library/cc304129(VS.85).aspx"><b>navigator</b>.<b>onLine</b> property and online/offline events</a> now work on Windows XP as well as Windows Vista. The work to enable this was not trivial, as connection awareness in Windows XP is not quite as advanced as Windows Vista. That said, this will be extremely beneficial for developers, who we believe shouldn’t have to worry about OS differences. The value of connectivity events is particularly appealing when used in conjunction with the <b>localstorage</b>, where data can be cached in case of network loss!</p>
<p><b>XMLHttpRequest</b></p>
<p>Introducing the <b>XDomainRequest</b> object in IE8 hasn’t diverted our attentions from constantly tweaking and improving <b>XMLHttpRequest</b>, which will continue to be our flagship object for same-domain communications. Post-Beta 1 energies here have focused on a few bug fixes around reliability and working with the Web Apps Working Group to clarify and improve the draft specification, our compliance with it, and W3C public test cases. A <a href="http://msdn.microsoft.com/en-us/library/cc534581%28VS.85%29.aspx" mce_href="http://msdn.microsoft.com/en-us/library/cc534581(VS.85).aspx"><b>timeout</b> method</a> introduced here in Beta 1 for the convenience of developers is currently being evaluated for adoption in the XMLHttpRequest spec.</p>
<p style="margin-left: 0.5in;" class="MsoNoSpacing"><span style="font-family: 'Courier New'; color: red; font-size: 10pt;">// Sets timeout after open to two seconds. <br /></span><span style="font-family: 'Courier New'; color: red; font-size: 10pt;">xhr.timeout<span style="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>= 2000; </span></p>
<p><b>ToStaticHTML, to JSON, and fromJSON</b></p>
<p>What do you do with the strings returned from third parties using <b>XDomainRequest</b> or Cross-document Messaging? In today’s world of increasing script injection and Cross-site Scripting (XSS) attacks, having the option of passing these through a safe parser comes as a welcome relief. As detailed in Eric Lawrence's post on <a href="http://blogs.msdn.com/ie/archive/2008/07/02/ie8-security-part-v-comprehensive-protection.aspx" mce_href="http://blogs.msdn.com/ie/archive/2008/07/02/ie8-security-part-v-comprehensive-protection.aspx">Comprehensive Protection</a> for IE8 Security, <a href="http://msdn.microsoft.com/en-us/library/cc848922%28VS.85%29.aspx" mce_href="http://msdn.microsoft.com/en-us/library/cc848922(VS.85).aspx">toStaticHTML</a> provides a powerful way of sanitizing your strings by purging potentially executable content. </p>
<p style="margin-left: 0.5in;" class="MsoNoSpacing"><span style="font-family: 'Courier New'; color: red; font-size: 10pt;">//Calling: <br /></span><span style="font-family: 'Courier New'; color: red; font-size: 10pt;">window.toStaticHTML("This is some &lt;b&gt;HTML&lt;/b&gt; with embedded script following... &lt;script&gt;alert('bang!');&lt;/script&gt;!");</span><span style="font-family: 'Courier New'; color: red; font-size: 10pt;"> </span></p>
<p style="margin-left: 0.5in;" class="MsoNoSpacing"><span style="font-family: 'Courier New'; color: red; font-size: 10pt;">//will return: <br /></span><span style="font-family: 'Courier New'; color: red; font-size: 10pt;">This is some &lt;b&gt;HTML&lt;/b&gt; with embedded script following... !</span><span style="font-size: 10pt;"> </span></p>
<p>In addition, IE8 Beta 2’s <a href="http://msdn.microsoft.com/en-us/library/cc836458%28VS.85%29.aspx" mce_href="http://msdn.microsoft.com/en-us/library/cc836458(VS.85).aspx"><b>toJSON</b> and <b>fromJSON</b></a> methods provide improved performance as opposed to non-native Javascript deserializers and serializers. Our implementation is based on the <a href="http://wiki.ecmascript.org/doku.php?id=es3.1:es3.1_proposal_working_draft" mce_href="http://wiki.ecmascript.org/doku.php?id=es3.1:es3.1_proposal_working_draft">ECMAScript 3.1 proposal</a> for native JSON-handling which uses Douglas Crockford’s <a href="http://www.json.org/json2.js" mce_href="http://www.json.org/json2.js">json2.js</a> API. In addition to the performance benefits of going native, the JSON parser provides a safe alternative to the <b>eval()</b> method, which has been a common and dangerous way to revive JSON objects, and could allow arbitrary script functions to execute.</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/ie-8-beta-2-ajax-features/feed</wfw:commentRss>
		</item>
		<item>
		<title>Regex performance in modern JSVMs</title>
		<link>http://ajaxian.com/archives/regex-performance-in-modern-jsvms</link>
		<comments>http://ajaxian.com/archives/regex-performance-in-modern-jsvms#comments</comments>
		<pubDate>Tue, 07 Oct 2008 10:57:44 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Front Page]]></category>

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

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

		<guid isPermaLink="false">http://ajaxian.com/?p=4691</guid>
		<description><![CDATA[
Based on its performance on the regexes it does handle, WREC (WebKit Regular Expression Compiler) is indeed an awesome design. regexp-dna.js, however, is flawed and exaggerates SFX performance.
We could use nanojit to make a regex compiler for SpiderMonkey that would perform as well as WREC. But I don’t know if it’s worthwhile yet. Regex performance [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>
Based on its performance on the regexes it does handle, WREC (WebKit Regular Expression Compiler) is indeed an awesome design. regexp-dna.js, however, is flawed and exaggerates SFX performance.</p>
<p>We could use nanojit to make a regex compiler for SpiderMonkey that would perform as well as WREC. But I don’t know if it’s worthwhile yet. Regex performance is much less important for today’s web than it is for SunSpider–I hope to link to a report on that in a future post.
</p></blockquote>
<p>That <a href="http://blog.mozilla.com/dmandelin/2008/10/06/squirrelfishing-in-regexp-dnajs/">was the conclusion</a> that David Mandelin of the Tamarin project as he looked into how "SquirrelFish Extreme (SFX) is kicking our butts so badly on regexp-dna.js."</p>
<p>I love David's posts, as they go into the real meat of the tech:</p>
<blockquote>
<p><strong>Technical details: the design of WREC.</strong> There are two main ways to implement regular expressions: using a backtracking matching engine, or by <a href="http://swtch.com/%7Ersc/regexp/regexp1.html">transforming the regex to a finite automaton</a> (NFA, aka “state machine”), which does not backtrack. Most Perl-type regex engines, including both SpiderMonkey’s and WREC, follow the backtracking design. I don’t know the exact history of that choice, but at present it is much easier to implement features like group capture and backreferences in the backtracking design. Also, although <a href="http://swtch.com/%7Ersc/regexp/regexp1.html">some regexes scale only if implemented as NFAs</a>, my tests suggest that many simple regexes, including those in SunSpider, are faster with backtracking.</p>
<p>As of this writing, WREC’s implementation strategy is dirt simple (which is a good thing). There are no transformations or fancy optimizations on the regex. WREC simply generates native code that directly implements the backtracking search. Thus, within a single match operation, there are no function calls, no traversals of regular expression ASTs, and few option tests, so almost all of the overhead is eliminated.</p>
<p>WREC’s code is very easy to read, so if you want to know exactly how it works, just read it in WREC.cpp. It’s also great example code for anyone implementing a compiler for a simple language like regular expressions. The basic plan is to parse the regular expression with functions named things like parseDisjunction (the | operator). Those functions directly call functions like generateDisjunction that generate the native code using the same assembler that the call-threading interpreter uses. There’s also the oddly named “gererateParenthesesResetTrampoline”. Inexplicably preserved typo, or watermark to detect copying of WREC code?</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/regex-performance-in-modern-jsvms/feed</wfw:commentRss>
		</item>
		<item>
		<title>Dojo 1.2 Final Release</title>
		<link>http://ajaxian.com/archives/dojo-12-final-release</link>
		<comments>http://ajaxian.com/archives/dojo-12-final-release#comments</comments>
		<pubDate>Tue, 07 Oct 2008 06:20:16 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Dojo]]></category>

		<category><![CDATA[Front Page]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=4695</guid>
		<description><![CDATA[Pete Higgins released Dojo 1.2 the first version under his command. There are a ton of subtle improvements such as:
New Datastores

dojox.data.JsonRestStore
dojox.data.CouchDBRestStore
dojox.data.GoogleFeedStore: A Google AJAX API powered data store for retrieving RSS and Atom feeds from Google.
dojox.data.GoogleSearchStore: Data stores to interface Google's AJAX search services.
dojox.data.PersevereStore: dojox.data.PersevereStore is an extension of JsonRestStore to Persevere's special features.
dojox.data.S3Store: an [...]]]></description>
			<content:encoded><![CDATA[<p>Pete Higgins <a href="http://dojotoolkit.org/2008/10/06/dojo-1-2-so-much-sliced-bread">released Dojo 1.2</a> the first version under his command. There are a ton of subtle improvements such as:</p>
<p><b>New Datastores</b></p>
<ul>
<li>dojox.data.JsonRestStore</li>
<li>dojox.data.CouchDBRestStore</li>
<li>dojox.data.GoogleFeedStore: A Google AJAX API powered data store for retrieving RSS and Atom feeds from Google.</li>
<li>dojox.data.GoogleSearchStore: Data stores to interface Google's AJAX search services.</li>
<li>dojox.data.PersevereStore: dojox.data.PersevereStore is an extension of JsonRestStore to Persevere's special features.</li>
<li>dojox.data.S3Store: an extension of JsonRestStore to handle Amazon's S3 service using JSON data</li>
</ul>
<p><b>New Projects in DojoX</b></p>
<p><strong>dojox.analytics.Urchin</strong></p>
<ul>
<li>A Google-analytics helper, which supports lazy-loading the Google Analytics API at any point during a page lifecycle.</li>
<li>Allows you to post-onload include Google Analytics helper, and track Ajax-y pages via a simple API, with a very small overhead.</li>
</ul>
<p><a name="av"></a><strong>dojox.av</strong></p>
<ul>
<li>New project for Audio/Video elements</li>
<li>dojox.av.FLVideo: a player for Flash video files</li>
<li>dojox.av.widget.Player: Dijit-based object for playing Flash media</li>
</ul>
<p><a name="embed"></a><strong>dojox.embed</strong></p>
<ul>
<li>A set of utilities that allow you to load/include Objects such as Flash and Quicktime.</li>
<li>dojox.embed.Flash for Flash movies
<ul>
<li>Create proxy information for Flash movies implementing ExternalInterface through <em>dojox.embed.Flash.proxy</em></li>
</ul>
</li>
<li>dojox.embed.Quicktime for Quicktime movies</li>
<li>dojox.embed.Object—a Dijit that can be used via markup for any dojox.embed objects available.</li>
</ul>
<p><strong>dojox.io.windowName</strong></p>
<ul>
<li>Provides secure cross-domain request capability. Sends a request using<br />
    an iframe (POST or GET) and reads the response through the frame's window.name.</li>
</ul>
<p><strong>dojox.io.xhrPlugins</strong></p>
<ul>
<li>This is a registry for creating alternate XHR handlers, for example<br />
    you can register to use IE8's XDomainRequest or a proxy server to handle<br />
    cross-domain requests.</li>
</ul>
<p><strong>dojox.lang.aspect</strong></p>
<ul>
<li>dojox.lang.aspect is a new AOP library module for before/around/etc advice and other AOP features.</li>
<li>See the <a href="http://lazutkin.com/blog/2008/may/18/aop-aspect-javascript-dojo/">blog post</a> for details.</li>
</ul>
<p><strong>dojox.lang.observable</strong></p>
<ul>
<li>Provides a form of getter/setter support to objects.<br />
    Observable objects can be created such that all property<br />
    reads, writes, and method calls will trigger listener functions<br />
    so that you can create APIs where property interaction can be<br />
    controlled and monitored.</li>
<li>This relies on VBScript hacks for IE and is somewhat<br />
    limited in functionality.</li>
</ul>
<p><strong>dojox.secure.capability</strong></p>
<ul>
<li>This provides object-capability JavaScript validation.</li>
<li>This is a validator to run before eval to ensure that a script can't access or<br />
    modify any objects (like global objects) outside of those specifically<br />
    provided to it.</li>
</ul>
<p><strong>dojox.secure.DOM</strong></p>
<ul>
<li>Provides a DOM facade that restricts access to a specified subtree<br />
    of the DOM.</li>
<li>The DOM facade uses getters/setters and lettables to emulate the DOM API.</li>
</ul>
<p><strong>dojox.secure.sandbox</strong></p>
<ul>
<li>Provides support for loading web pages, JSON, and scripts<br />
    from other domains using XHR (and XHR plugins) with a safe<br />
    subset library and sandboxed access to the DOM.</li>
</ul>
<p>We updated the Google CDN to <a href="http://ajax.googleapis.com/ajax/libs/dojo/1.2/dojo/dojo.xd.js">point to the new version too</a>, and <a href="http://build.dojotoolkit.org/1.2.0/">AOL has done the same</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/dojo-12-final-release/feed</wfw:commentRss>
		</item>
		<item>
		<title>SMIL 3.0 Reaches Proposed Recommendation</title>
		<link>http://ajaxian.com/archives/smil-30-reaches-proposed-recommendation</link>
		<comments>http://ajaxian.com/archives/smil-30-reaches-proposed-recommendation#comments</comments>
		<pubDate>Mon, 06 Oct 2008 17:32:51 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Front Page]]></category>

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

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

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

		<guid isPermaLink="false">http://ajaxian.com/?p=4686</guid>
		<description><![CDATA[Synchronized Multimedia Integration Language (or SMIL) 3.0 has now become a proposed recommendation at the W3C. SMIL hasn't been widely used, but some of it is widely supported thanks to ACID tests that had the browser vendors put it in.
3.0 has the following goals:

Define an XML-based language that allows authors to write interactive
   [...]]]></description>
			<content:encoded><![CDATA[<p>Synchronized Multimedia Integration Language (or SMIL) 3.0 has <a href="http://www.w3.org/TR/2008/PR-SMIL3-20081006/">now become a proposed recommendation</a> at the W3C. SMIL hasn't been widely used, but some of it is widely supported thanks to ACID tests that had the browser vendors put it in.</p>
<p>3.0 has the following goals:</p>
<ul>
<li>Define an XML-based language that allows authors to write interactive<br />
    multimedia presentations. Using SMIL, an author may describe the temporal<br />
    behaviour of a multimedia presentation, associate hyperlinks with media<br />
    objects and describe the layout of the presentation on a screen.</li>
<li>Allow reusing of SMIL syntax and semantics in other XML-based<br />
    languages, in particular those who need to represent timing and<br />
    synchronization. For example, SMIL components are used for integrating<br />
    timing into XHTML <span class="normref"><a href="smil-refs.html#ref-XHTML10" rel="biblioentry" class="noxref"><span class="inforef">[XHTML10]</span></a></span> and into SVG<br />
    <span class="normref"><a href="smil-refs.html#ref-SVG" rel="biblioentry" class="noxref"><span class="inforef">[SVG]</span></a></span>.</li>
<li>Extend the functionalities contained in the SMIL 2.1 <a href="smil-refs.html#ref-SMIL21" rel="biblioentry" class="noxref"><span class="normref">[SMIL21]</span></a> into<br />
    new or revised SMIL 3.0 modules.</li>
<li>Define new SMIL 3.0 Profiles incorporating features useful within the<br />
    industry.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/smil-30-reaches-proposed-recommendation/feed</wfw:commentRss>
		</item>
		<item>
		<title>Ajaxified Body; When to refresh the page</title>
		<link>http://ajaxian.com/archives/ajaxified-body-when-to-refresh-the-page</link>
		<comments>http://ajaxian.com/archives/ajaxified-body-when-to-refresh-the-page#comments</comments>
		<pubDate>Mon, 06 Oct 2008 15:29:06 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Ajax]]></category>

		<category><![CDATA[Front Page]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=4684</guid>
		<description><![CDATA[Matt Raible has posted on the Ajaxified Body pattern, that loads content into the main area instead of reloading an entire page.
The surrounding template stays put, and the red area changes when you have an action:

This is an old question: "When should you just reload the page?"  In the sample application you see the [...]]]></description>
			<content:encoded><![CDATA[<p>Matt Raible has posted on the <a href="http://raibledesigns.com/rd/entry/ajaxified_body">Ajaxified Body</a> pattern, that loads content into the main area instead of reloading an entire page.</p>
<p>The surrounding template stays put, and the red area changes when you have an action:</p>
<p><img src="http://farm4.static.flickr.com/3107/2909207040_46c379c0ae.jpg" /></p>
<p>This is an old question: "When should you just reload the page?"  In the <a href="http://demo.raibledesigns.com/ajaxifiedbody/">sample application</a> you see the trade offs. Every click causes a red "Loading..." indicator, and just the main area changes. The browser doesn't have any indication that something is happening, hence the need for the custom red indicator. You also then have to implement support for browser history, make sure that direct access works and the like. The positive is that you don't get a refresh flash, but is that enough to warrant the change?</p>
<p>One of the use cases on the page is the rich table component. That should definitely be able to refresh and page without the page changing, but when the main content gets swapped in, I start to question. What do you think?</p>
<p>Matt uses SiteMesh, a great technology that can knit together the look and feel, and can fit in very well in this kind of world. If a browser goes directly to a page it can piece together the entire page, but an Ajax request can come in and it can just send back the main content. Very nice.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/ajaxified-body-when-to-refresh-the-page/feed</wfw:commentRss>
		</item>
	</channel>
</rss>
