<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Ajaxian » Front Page</title>
	
	<link>http://ajaxian.com</link>
	<description>Cleaning up the web with Ajax</description>
	<pubDate>Mon, 06 Jul 2009 18:34:59 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://ajaxian.com/index.xml" type="application/rss+xml" /><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>It’s Friday. Play some drums…. HTML5 style</title>
		<link>http://feedproxy.google.com/~r/ajaxian/~3/0TrInfY51Hg/its-friday-play-some-drums-html5-style</link>
		<comments>http://ajaxian.com/archives/its-friday-play-some-drums-html5-style#comments</comments>
		<pubDate>Fri, 03 Jul 2009 13:11:53 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Examples]]></category>

		<category><![CDATA[Front Page]]></category>

		<category><![CDATA[Sound]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=7046</guid>
		<description><![CDATA[
Brian Arnold created a fun sample drum machine simulator using HTML5 &#60;audio&#62;.
PLAIN TEXT
JAVASCRIPT:




&#160;


function playBeat&#40;&#41; &#123;


&#160; &#160; &#160; &#160; if &#40;isPlaying&#41; &#123;


&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; var nextBeat = 60000 / curTempo / 4;


&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; // Turn off all lights on the tracker's row


&#160; &#160; &#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://ajaxian.com/wp-content/uploads/drummachine.png" alt="" title="drummachine" width="500" height="157" class="alignnone size-full wp-image-7047" /></p>
<p>Brian Arnold <a href="http://www.randomthink.net/lab/html5drums/">created a fun sample drum machine</a> simulator using HTML5 &lt;audio&gt;.</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-2');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-2">
<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;">function</span> playBeat<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: #000066; font-weight: bold;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span>isPlaying<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; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> nextBeat = <span style="color:#800000;">60000</span> <span style="color: #0066FF;">/ curTempo /</span> <span style="color:#800000;">4</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; <span style="color: #009900; font-style: italic;">// Turn off all lights on the tracker's row</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; $<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"#tracker li.pip"</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">removeClass</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"active"</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; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">// Stop all audio</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; stopAllAudio<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;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">// Light up the tracker on the current pip</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; $<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"#tracker li.pip.col_"</span> + curBeat<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">addClass</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"active"</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; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">// Find each active beat, play it</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; $<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">".soundrow[id^=control] li.pip.active.col_"</span> + curBeat<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">each</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span>i<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; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; document.<span style="color: #006600;">getElementById</span><span style="color:#006600; font-weight:bold;">&#40;</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>.<span style="color: #006600;">data</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'sound_id'</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">play</span><span style="color:#006600; font-weight:bold;">&#40;</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; &nbsp; &nbsp; &nbsp; &nbsp; <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; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900; font-style: italic;">// Move the pip forward</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; curBeat = <span style="color:#006600; font-weight:bold;">&#40;</span>curBeat + <span style="color:#800000;">1</span><span style="color:#006600; font-weight:bold;">&#41;</span> % <span style="color:#800000;">16</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; <span style="color: #009900; font-style: italic;">// Schedule the next one</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; setTimeout<span style="color:#006600; font-weight:bold;">&#40;</span>playBeat, nextBeat<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:#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>
</ol>
</div>
</div>
</div>
<p>That's not all Brian is working on:</p>
<blockquote><p>
I'm <a href="http://www.randomthink.net/lab/fivorion/">also working on something</a> like the ToneMatrix or Tenori-on (Flash and actual devices, respectively) in pure HTML/JS. It works too, but the sounds aren't exactly designed to be great together (it's currently working on a C scale) and so if you're careful, you can get some decent sound but otherwise, it'll hurt your ears.
</p></blockquote>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ajaxian?a=0TrInfY51Hg:K7YQnygcPAU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=0TrInfY51Hg:K7YQnygcPAU:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=0TrInfY51Hg:K7YQnygcPAU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ajaxian?i=0TrInfY51Hg:K7YQnygcPAU:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/its-friday-play-some-drums-html5-style/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/its-friday-play-some-drums-html5-style</feedburner:origLink></item>
		<item>
		<title>Machsend: P2P file sharing via Browser Plus</title>
		<link>http://feedproxy.google.com/~r/ajaxian/~3/ImWfvRKldEg/machsend-p2p-file-sharing-via-browser-plus</link>
		<comments>http://ajaxian.com/archives/machsend-p2p-file-sharing-via-browser-plus#comments</comments>
		<pubDate>Fri, 03 Jul 2009 10:52:52 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Component]]></category>

		<category><![CDATA[Front Page]]></category>

		<category><![CDATA[Yahoo!]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=7041</guid>
		<description><![CDATA[
Alex MacCaw has released Machsend, a Yahoo! Browser Plus plugin that enables P2P file transfers from inside the browser.
It showcases what can be done with a BP plugin, leaving you wish cross browser functionality.
I guess it is kinda fun to hack the browser :)
]]></description>
			<content:encoded><![CDATA[<p><img src="http://leadthinking.com/wp-content/uploads/2009/06/Picture-13-542x262.png"/></p>
<p>Alex MacCaw has released <a href="http://leadthinking.com/89-machsend-p2p-in-the-browser">Machsend</a>, a Yahoo! Browser Plus plugin that enables P2P file transfers from inside the browser.</p>
<p>It showcases what can be done with a BP plugin, leaving you wish cross browser functionality.</p>
<p>I guess it is kinda fun to <a href="http://hackthebrowser.org/">hack the browser</a> :)</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ajaxian?a=ImWfvRKldEg:5pKtfQGzQes:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=ImWfvRKldEg:5pKtfQGzQes:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=ImWfvRKldEg:5pKtfQGzQes:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ajaxian?i=ImWfvRKldEg:5pKtfQGzQes:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/machsend-p2p-file-sharing-via-browser-plus/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/machsend-p2p-file-sharing-via-browser-plus</feedburner:origLink></item>
		<item>
		<title>GChart 2.5: Faster, sharper, canvas-rendered, pie, line, and area charts</title>
		<link>http://feedproxy.google.com/~r/ajaxian/~3/30RiOUH0pok/gchart-25-faster-sharper-canvas-rendered-pie-line-and-area-charts</link>
		<comments>http://ajaxian.com/archives/gchart-25-faster-sharper-canvas-rendered-pie-line-and-area-charts#comments</comments>
		<pubDate>Thu, 02 Jul 2009 11:44:30 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Component]]></category>

		<category><![CDATA[Front Page]]></category>

		<category><![CDATA[GWT]]></category>

		<category><![CDATA[Library]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=7038</guid>
		<description><![CDATA[John Gunther has released GChart 2.5, a client-side library that adds a new canvas-rendering option for sharper, better looking, alpha-transparent, pie, line, and area charts.

John told us:

Canvas-rendering corrects GChart's most serious visual quality limitations (including the most often mentioned problem by its users: the banded-filled pie slice).
Coupled with its existing feature set and ease of [...]]]></description>
			<content:encoded><![CDATA[<p>John Gunther has <a href="http://gchart.googlecode.com/svn/trunk/doc/com/googlecode/gchart/client/doc-files/gchart2p5features.html">released GChart 2.5</a>, a client-side library that adds a new canvas-rendering option for sharper, better looking, alpha-transparent, pie, line, and area charts.</p>
<p><a href="http://gchart.googlecode.com/svn/trunk/live-demo/v2_5/com.googlecode.gchart.gchartdemoapp.GChartDemoApp/GChartDemoApp.html"><img src="http://ajaxian.com/wp-content/uploads/gchart25.png" alt="" title="gchart25" width="500" height="514" class="alignnone size-full wp-image-7039" /></a></p>
<p>John told us:</p>
<blockquote><p>
Canvas-rendering corrects GChart's most serious visual quality limitations (including the most often mentioned problem by its users: the banded-filled pie slice).</p>
<p>Coupled with its existing feature set and ease of GWT integration, the canvas-rendering option makes GChart an excellent choice for those who want to add basic charts to a GWT application without a lot of fuss.</p>
<p>To access these features, you'll need to plug an external canvas library into GChart (GWTCanvas in the gwt-incubator is reccommended) as described in detail in the setCanvasFactory method.</p>
<p>With the external canvas in place, the next step is to tell GChart you want a curve to be "continuously filled" by invoking setFillSpacing(0).</p>
<p>With each such continuously filled curve, GChart automatically exploits your external canvas library to improved the quality and speed of that curve's rendering. Specifically, banded-filled pie slices become solid filled, dotted connecting lines become continuously connected, and (the biggest stretch) bar charts become area charts. See the setFillSpacing method's javadocs for a detailed description of how each existing symbol type implements this new "continuously-filled", canvas-powered, rendering option.</p>
<p>Note that GChart's previous HTML-only rendering is still available, and is the default rendering mode if you don't bother to plug in an external canvas.
</p></blockquote>
<p>Check out the <a href="http://gchart.googlecode.com/svn/trunk/live-demo/v2_5/com.googlecode.gchart.gchartdemoapp.GChartDemoApp/GChartDemoApp.html">demo</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ajaxian?a=30RiOUH0pok:0l-hiIzOqp0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=30RiOUH0pok:0l-hiIzOqp0:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=30RiOUH0pok:0l-hiIzOqp0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ajaxian?i=30RiOUH0pok:0l-hiIzOqp0:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/gchart-25-faster-sharper-canvas-rendered-pie-line-and-area-charts/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/gchart-25-faster-sharper-canvas-rendered-pie-line-and-area-charts</feedburner:origLink></item>
		<item>
		<title>More than you ever want to see about encoding</title>
		<link>http://feedproxy.google.com/~r/ajaxian/~3/15TNjvyhBNw/encoding</link>
		<comments>http://ajaxian.com/archives/encoding#comments</comments>
		<pubDate>Thu, 02 Jul 2009 10:03:19 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Front Page]]></category>

		<category><![CDATA[Tip]]></category>

		<category><![CDATA[Utility]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=7043</guid>
		<description><![CDATA[Paul Baukaus linked to jsescape, a little form that shows escaping and unescaping across a number of encodings.

Andrea Giammarchi had his own post on encodings in a different way.... as he talked about
en-code which you can check out in action here on the page that lets you do simple encodings, especially for source code, in [...]]]></description>
			<content:encoded><![CDATA[<p>Paul Baukaus linked to <a href="http://0xcc.net/jsescape/">jsescape</a>, a little form that shows escaping and unescaping across a number of encodings.</p>
<p><img src="http://ajaxian.com/wp-content/uploads/encodings.png" alt="" title="encodings" width="488" height="802" class="alignnone size-full wp-image-7044" /></p>
<p>Andrea Giammarchi had his own post on encodings in a different way.... as he talked about<br />
<a href="http://webreflection.blogspot.com/2009/05/en-code-quickest-way-to-encode-your.html">en-code</a> which you can <a href="http://www.3site.eu/encode/">check out in action here</a> on the page that lets you do simple encodings, especially for source code, in short order.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ajaxian?a=15TNjvyhBNw:pJSlSepmdrM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=15TNjvyhBNw:pJSlSepmdrM:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=15TNjvyhBNw:pJSlSepmdrM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ajaxian?i=15TNjvyhBNw:pJSlSepmdrM:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/encoding/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/encoding</feedburner:origLink></item>
		<item>
		<title>GeoMaker - geo locations as microformats or a map from texts or URLs</title>
		<link>http://feedproxy.google.com/~r/ajaxian/~3/mle8ZE76PRk/geomaker-geo-locations-as-microformats-or-a-map-from-texts-or-urls</link>
		<comments>http://ajaxian.com/archives/geomaker-geo-locations-as-microformats-or-a-map-from-texts-or-urls#comments</comments>
		<pubDate>Thu, 02 Jul 2009 08:02:33 +0000</pubDate>
		<dc:creator>Chris Heilmann</dc:creator>
		
		<category><![CDATA[Front Page]]></category>

		<category><![CDATA[JSON]]></category>

		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[Yahoo!]]></category>

		<category><![CDATA[api]]></category>

		<category><![CDATA[geo]]></category>

		<category><![CDATA[geolocation]]></category>

		<category><![CDATA[placemaker]]></category>

		<category><![CDATA[wrapper]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=7052</guid>
		<description><![CDATA[As preparation for an upcoming tech talk about Placemaker I thought it would be good to take a bit of the pain out of the geolocation service by making an interface for it. Placemaker works the following way: you post some content or a URL to it, it goes through the content or gets the [...]]]></description>
			<content:encoded><![CDATA[<p>As preparation for an <a href="http://upcoming.yahoo.com/event/2799061/">upcoming tech talk about Placemaker</a> I thought it would be good to take a bit of the pain out of the geolocation service by making an interface for it. <a href="http://developer.yahoo.com/geo/placemaker">Placemaker</a> works the following way: you post some content or a URL to it, it goes through the content or gets the content from the URL and analyzes it. It then finds geographical locations in the text and disambiguates them (for example to skip names like "Jack London" and not consider it the city London). Finally you get it back as XML. </p>
<p>The annoying thing is that Placemaker only support POST request and does not have a JSON output - for now. <a href="http://icant.co.uk/geomaker/">GeoMaker</a> allows non-developers to enter some text or a URL, filter the results (using YUI datatable) to remove false positives (no system is perfect) and get the embed code for a Yahoo Map  or a list of microformatted locations as copy+paste. See the screencast to get the end user experience:</p>
<p><object type="application/x-shockwave-flash" width="500" height="375" data="http://www.flickr.com/apps/video/stewart.swf?v=71377" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param name="flashvars" value="intl_lang=en-us&#038;photo_secret=292f6ff9f0&#038;photo_id=3678699792"></param><param name="movie" value="http://www.flickr.com/apps/video/stewart.swf?v=71377"></param><param name="bgcolor" value="#000000"></param><param name="allowFullScreen" value="true"></param><embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/video/stewart.swf?v=71377" bgcolor="#000000" allowfullscreen="true" flashvars="intl_lang=en-us&#038;photo_secret=292f6ff9f0&#038;photo_id=3678699792" height="375" width="500"></embed></object></p>
<p>Of course, every time you build something like that, red-blooded developers will ask for an API to do the same thing (and pointing them to Placemaker wasn't enough). So here it is:</p>
<p><a href="http://icant.co.uk/geomaker/api.php">http://icant.co.uk/geomaker/api.php</a> takes two parameters: <code>url</code> of the web document to load and <code>output</code> which could be <code>map</code>, <code>kml</code>, <code>microformats</code>, <code>csv</code>, or <code>json</code> (with <code>callback</code> for JSON-P). Using this you can analyze a url in JavaScript and get the data back as an array: </p>
<div class="igBar"><a href="javascript:showCodeTxt('html-5');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">HTML:</span>
<div id="html-5">
<div class="html">
<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;"><span style="color: #009900;"><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">&lt;script&gt;</span></a></span>function geomaker(o){</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; for(var i=0,j=o.length;i<span style="color: #009900;">&lt;j ;i++<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; // o<span style="color:#006600; font-weight:bold;">&#91;</span>i<span style="color:#006600; font-weight:bold;">&#93;</span> will have lat, lon, <span style="color: #000066;">title</span> and match</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;">&#125;</span><span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></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: #009900;"><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">&lt;script</span></a> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">"http://icant.co.uk/geomaker/api.php?url=http://ajaxian.com&amp;output=json&amp;callback=geomaker"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>The Ajaxian.com output right now would be:</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;">geomaker<span style="color:#006600; font-weight:bold;">&#40;</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></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;">&#123;</span><span style="color: #3366CC;">"lat"</span>:<span style="color: #3366CC;">"42.3586"</span>,<span style="color: #3366CC;">"lon"</span>:<span style="color: #3366CC;">"-71.0567"</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;<span style="color: #3366CC;">"title"</span>:<span style="color: #3366CC;">"Boston, MA, US"</span>,<span style="color: #3366CC;">"match"</span>:<span style="color: #3366CC;">"Boston"</span><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; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color: #3366CC;">"lat"</span>:<span style="color: #3366CC;">"42.3586"</span>,<span style="color: #3366CC;">"lon"</span>:<span style="color: #3366CC;">"-71.0567"</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;<span style="color: #3366CC;">"title"</span>:<span style="color: #3366CC;">"Boston, MA, US"</span>,<span style="color: #3366CC;">"match"</span>:<span style="color: #3366CC;">"Boston, MA"</span><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; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color: #3366CC;">"lat"</span>:<span style="color: #3366CC;">"40.7075"</span>,<span style="color: #3366CC;">"lon"</span>:<span style="color: #3366CC;">"-106.918"</span>,<span style="color: #3366CC;">"title"</span>:<span style="color: #3366CC;">"Clark, CO, US"</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;<span style="color: #3366CC;">"match"</span>:<span style="color: #3366CC;">"Clark, Co"</span><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; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color: #3366CC;">"lat"</span>:<span style="color: #3366CC;">"42.3115"</span>,<span style="color: #3366CC;">"lon"</span>:<span style="color: #3366CC;">"43.3658"</span>,<span style="color: #3366CC;">"title"</span>:<span style="color: #3366CC;">"Georgia"</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;<span style="color: #3366CC;">"match"</span>:<span style="color: #3366CC;">"Geo"</span><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; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color: #3366CC;">"lat"</span>:<span style="color: #3366CC;">"44.9601"</span>,<span style="color: #3366CC;">"lon"</span>:<span style="color: #3366CC;">"7.16229"</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;<span style="color: #3366CC;">"title"</span>:<span style="color: #3366CC;">"Rey, Piedmont, IT"</span>,<span style="color: #3366CC;">"match"</span>:<span style="color: #3366CC;">"Rey"</span><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; <span style="color:#006600; font-weight:bold;">&#93;</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;</div>
</li>
</ol>
</div>
</div>
</div>
<p></j></script></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ajaxian?a=mle8ZE76PRk:zse6ah5feoo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=mle8ZE76PRk:zse6ah5feoo:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=mle8ZE76PRk:zse6ah5feoo:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ajaxian?i=mle8ZE76PRk:zse6ah5feoo:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/geomaker-geo-locations-as-microformats-or-a-map-from-texts-or-urls/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/geomaker-geo-locations-as-microformats-or-a-map-from-texts-or-urls</feedburner:origLink></item>
		<item>
		<title>Modernizr: HTML5 and CSS3 detection</title>
		<link>http://feedproxy.google.com/~r/ajaxian/~3/Uq6v7kDgtsc/modernizr-html5-and-css3-detection</link>
		<comments>http://ajaxian.com/archives/modernizr-html5-and-css3-detection#comments</comments>
		<pubDate>Thu, 02 Jul 2009 04:29:40 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Front Page]]></category>

		<category><![CDATA[HTML]]></category>

		<category><![CDATA[Standards]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=7049</guid>
		<description><![CDATA[Modernizr is a new library that detects various HTML5 and CSS3 features and lets you know so you can use them:


Writing conditional CSS with Modernizr
Now, once your page loads, Modernizr will run and go through all of its tests. It will automatically add all the classes to the &#60;body&#62; element of the page, and these [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.modernizr.com/">Modernizr</a> is a new library that detects various HTML5 and CSS3 features and lets you know so you can use them:</p>
<p><img src="http://ajaxian.com/wp-content/uploads/modernizer.png" alt="" title="modernizer" width="336" height="518" class="alignnone size-full wp-image-7050" /></p>
<blockquote><p>
<b>Writing conditional CSS with Modernizr</b></p>
<p>Now, once your page loads, Modernizr will run and go through all of its tests. It will automatically add all the classes to the &lt;body&gt; element of the page, and these classes will be along the lines of body.feature or body.no-feature, with the former indicating that the current browser supports that specific feature and the latter indicating that the browser does not support the feature.</p>
<p>Additionally, it will create a new JavaScript object in the global scope, called Modernizr. This object will contain properties for each of the features that Modernizr detects for, and their value will be set to TRUE or FALSE depending on the browser's support for it.</p>
<p>What you can do from this point on is write pseudo-IF/ELSE statements in your CSS. Let's look at an example from the Modernizr.com site itself:</p>
<div class="igBar"><a href="javascript:showCodeTxt('css-9');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">CSS:</span>
<div id="css-9">
<div class="css">
<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: #6666ff;">.cssgradients </span><span style="color: #cc00cc;">#main <span style="color:#006600; font-weight:bold;">&#123;</span></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: #000000; font-weight: bold;">background</span>: -webkit-gradient<span style="color:#006600; font-weight:bold;">&#40;</span>linear, <span style="color: #000000; font-weight: bold;">left</span> <span style="color:#800000;">0</span>, <span style="color: #000000; font-weight: bold;">right</span> <span style="color: #000000; font-weight: bold;">bottom</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; from<span style="color:#006600; font-weight:bold;">&#40;</span>rgba<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#800000;">255</span>,<span style="color:#800000;">255</span>,<span style="color:#800000;">255</span>, .<span style="color:#800000;">82</span><span style="color:#006600; font-weight:bold;">&#41;</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; to<span style="color:#006600; font-weight:bold;">&#40;</span>rgba<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#800000;">255</span>,<span style="color:#800000;">255</span>,<span style="color:#800000;">255</span>, <span style="color:#800000;">0</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;">&#41;</span> <span style="color:#800000;">0</span> <span style="color:#800000;">0</span> <span style="color: #993333;">no-repeat</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>
</ol>
</div>
</div>
</div>
<p>In the above example, we're doing an "IF" condition in CSS: IF the browser supports both CSS gradients, THEN apply this background property to the #main element (instead of the original background property).</p>
<p><b>Writing conditional JavaScript with Modernizr</b></p>
<p>When leveraging Modernizr in your JavaScript, it's as straight-forward as it can be to do IF-conditions based on what the browser currently supports:</p>
<div class="igBar"><a href="javascript:showCodeTxt('css-10');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">CSS:</span>
<div id="css-10">
<div class="css">
<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;">if <span style="color:#006600; font-weight:bold;">&#40;</span>Modernizr.cssgradients<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; // perform some actions you only want to</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; // execute if the browser supports gradients</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;">&#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;</div>
</li>
</ol>
</div>
</div>
</div>
</blockquote>
<p>We are seeing a growth in these kinds of tools and shims to get HTML5 features into developers hands. Another great site to help is the new <a href="http://html5doctor.com/">HTML5 Doctor</a>.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ajaxian?a=Uq6v7kDgtsc:NrGo2wB3sww:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=Uq6v7kDgtsc:NrGo2wB3sww:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=Uq6v7kDgtsc:NrGo2wB3sww:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ajaxian?i=Uq6v7kDgtsc:NrGo2wB3sww:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/modernizr-html5-and-css3-detection/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/modernizr-html5-and-css3-detection</feedburner:origLink></item>
		<item>
		<title>A whole lot of testing for JavaScript implementations</title>
		<link>http://feedproxy.google.com/~r/ajaxian/~3/DJcDgEF0C9E/a-whole-lot-of-testing-for-javascript-implementations</link>
		<comments>http://ajaxian.com/archives/a-whole-lot-of-testing-for-javascript-implementations#comments</comments>
		<pubDate>Wed, 01 Jul 2009 12:42:14 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Front Page]]></category>

		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[Standards]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=7036</guid>
		<description><![CDATA[A couple of releases related to unit testing and JavaScript came out on the same day.
First, the JScript team posted a set of ECMAScript 5 tests.... 900 to be exact, and the focus on features that are new to ECMAScript 5.
All of the tests are released under New BSD.
Then, the V8 team announced Sputnik, a [...]]]></description>
			<content:encoded><![CDATA[<p>A couple of releases related to unit testing and JavaScript came out on the same day.</p>
<p>First, the JScript team <a href="http://blogs.msdn.com/jscript/archive/2009/06/30/steps-toward-creating-compatible-ecmascript-5-implementations.aspx">posted a set of ECMAScript 5 tests</a>.... 900 to be exact, and the focus on features that are new to ECMAScript 5.</p>
<p>All of the tests are <a href="http://es5conform.codeplex.com/">released under New BSD</a>.</p>
<p>Then, the V8 team <a href="http://blog.chromium.org/2009/06/launching-sputnik-into-orbit.html">announced Sputnik</a>, a series of of <a href="http://code.google.com/p/sputniktests/"> 5000 tests, also under BSD</a>. These tests aren't for the shiny ECMAScript 5 world, but are for <a href="http://www.ecma-international.org/publications/standards/Ecma-262.htm">ECMA 262, or edition 3</a>.</p>
<p>Nice to see a lot of tests out there, all under liberal open source licensing.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ajaxian?a=DJcDgEF0C9E:rWmMqHGe7k0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=DJcDgEF0C9E:rWmMqHGe7k0:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=DJcDgEF0C9E:rWmMqHGe7k0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ajaxian?i=DJcDgEF0C9E:rWmMqHGe7k0:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/a-whole-lot-of-testing-for-javascript-implementations/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/a-whole-lot-of-testing-for-javascript-implementations</feedburner:origLink></item>
		<item>
		<title>Firefox 3.5: The fastest fox has landed</title>
		<link>http://feedproxy.google.com/~r/ajaxian/~3/myUR-8vmBYQ/firefox-35-the-fastest-fox-has-landed</link>
		<comments>http://ajaxian.com/archives/firefox-35-the-fastest-fox-has-landed#comments</comments>
		<pubDate>Tue, 30 Jun 2009 15:35:07 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Browsers]]></category>

		<category><![CDATA[Firefox]]></category>

		<category><![CDATA[Front Page]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=7030</guid>
		<description><![CDATA[
It is great to feel the good vibes at Mozilla HQ today as we launch Firefox 3.5!  It is always an interesting ride to see a browser develop, and realize how complex and large the work is.
Congrats to the browser developers out there who are working hard to make the Web better. With final [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://getfirefox.com/"><img src="http://ajaxian.com/wp-content/uploads/ffx35.png" alt="" title="ffx35" width="500" height="243" class="alignnone size-full wp-image-7031" /></a></p>
<p>It is great to feel the good vibes at Mozilla HQ today as we <a href="http://getfirefox.com/">launch Firefox 3.5</a>!  It is always an interesting ride to see a browser develop, and realize how complex and large the work is.</p>
<p>Congrats to the browser developers out there who are working hard to make the Web better. With final versions of Firefox 3.5, Safari 4, and Chrome 2 out in the wild.... things are picking up nicely.</p>
<p>The Firefox 3.5 release is exciting for me because it really benefits the developers. We get Open Video, @font-face, cross site XHR, Geo Location APIs, CSS Media Queries, Native JSON, Offline support, Web Workers, and <a href="https://developer.mozilla.org/En/Firefox_3.5_for_developers">so much more</a>.</p>
<p>And, the world keeps moving. I have seen some very cool things in the nightly tree, and look forward to beign around as the team works on the next great Firefox.</p>
<p><b>Updates</b></p>
<p>Steve Souders has <a href="http://www.stevesouders.com/blog/2009/06/30/firefox-35-at-the-top/">posted on Firefox 3.5 getting 10 out of 11</a> in his <a href="http://stevesouders.com/ua/">UA Profiler tests</a>.</p>
<p>Watch the downloads come in with this cool <a href="http://downloadstats.mozilla.com/">download tracker</a> that uses Canvas and SVG, all thanks to Justin Scott. The stats so far show that if the current rate trends hold we will beat the Firefox 3.0 download day, which is a surprise to all.</p>
<p><a href="http://blog.seanmartell.com/2009/06/30/a-web-browser-renaissance/"><img src="http://blog.seanmartell.com/wp-content/uploads/2009/06/firefox_davinci.png"/></a></p>
<p>Sean Martell has created a nice <a href="http://blog.seanmartell.com/2009/06/30/a-web-browser-renaissance/">wallpaper</a> and <a href="http://personas.services.mozilla.com/persona/34365">persona</a> to commemorate!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ajaxian?a=myUR-8vmBYQ:kGnLgeNiRhM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=myUR-8vmBYQ:kGnLgeNiRhM:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=myUR-8vmBYQ:kGnLgeNiRhM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ajaxian?i=myUR-8vmBYQ:kGnLgeNiRhM:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/firefox-35-the-fastest-fox-has-landed/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/firefox-35-the-fastest-fox-has-landed</feedburner:origLink></item>
		<item>
		<title>LABjs: Simple abstraction for loading dependencies correctly</title>
		<link>http://feedproxy.google.com/~r/ajaxian/~3/Vq4qcO7idLI/labjs-simple-abstraction-for-loading-dependencies-correctly</link>
		<comments>http://ajaxian.com/archives/labjs-simple-abstraction-for-loading-dependencies-correctly#comments</comments>
		<pubDate>Tue, 30 Jun 2009 11:16:24 +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=7019</guid>
		<description><![CDATA[Kyle Simpson has developed LABjs, a library that lets you define your JavaScript file dependencies, and then loads them as efficiently as possible.
Kyle told us:
This project is a simple little tool (1.6k compressed!) for being able to load javascript files dynamically. It's like a lot of similar projects where the goal is to improve the [...]]]></description>
			<content:encoded><![CDATA[<p>Kyle Simpson has developed <a href="http://labjs.com/">LABjs</a>, a library that lets you define your JavaScript file dependencies, and then loads them as efficiently as possible.</p>
<p>Kyle told us:</p>
<p>This project is a simple little tool (1.6k compressed!) for being able to load javascript files dynamically. It's like a lot of similar projects where the goal is to improve the speed of page load by allowing scripts to load in parallel. The thing it does slightly differently than most others like it is it allows you to "block", which is to say, load one or more scripts in parallel, then wait for them to finish, before going on to something else, like loading more scripts.</p>
<p>What I wanted was a pattern where I could load scripts in parallel, just like with script tags, but also block and wait if there was an explicit ordering dependency that required it. </p>
<p>What most loaders fail to do well is let you define "dependencies" simply based on loading order. With regular script tags, the browser blocks for you, so you can make sure for instance that jquery.js loads before jqueryui.js.  But imagine you've got 3 scripts that can download in parallel (not dependent on each other), and then two more that need to wait for those 3 to load. You can't do that with script tags, and you also can't do that very easily with a lot of the script loaders/frameworks that I've found.</p>
<p>Most of them rely on intrusive concepts to do "dependency" management. For instance, each child script has to "signal" (callback) that it's done loading, to the parent page. Or the parent script and child scripts have to explicitly declare dependencies using some framework or conventions. Also, some other loader libraries rely on attaching a single load callback handler for EACH script. This makes it awkward or difficult to wait for several to load at a time, before proceeding, since you as the author have to keep track of what has loaded yourself.</p>
<p>jsLAB lets you load pretty much any script file, whether you control it or not, with no intrusion or convention for dependencies, other than the order and blocking that you define. It keeps track of what you've asked for and what has downloaded, only loads a unique script filename once, and lets you only define your handler once for a set of scripts that will load together in parallel. The API style (with chaining) makes is very easy to convert a set of script tags in your page into code to load them, without having to worry that race conditions will cause issues for scripts loading in the wrong order if there are implicit dependencies involved.</p>
<p><b>Example</b></p>
<p>Old:</p>
<div class="igBar"><a href="javascript:showCodeTxt('html-13');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">HTML:</span>
<div id="html-13">
<div class="html">
<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: #009900;"><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">&lt;script</span></a> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">"jquery.js"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></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: #009900;"><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">&lt;script</span></a> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">"jquery.ui.js"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></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: #009900;"><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">&lt;script</span></a> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">"myplugin.jquery.js"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></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: #009900;"><a href="http://december.com/html/4/element/script.html"><span style="color: #000000; font-weight: bold;">&lt;script</span></a> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">"initpage.js"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></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>New:</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-14');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-14">
<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;">$LAB</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;">script</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"jquery.js"</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;">.<span style="color: #006600;">block</span><span style="color:#006600; font-weight:bold;">&#40;</span><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; $LAB</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; .<span style="color: #006600;">script</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"jquery.ui.js"</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; .<span style="color: #006600;">script</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"myplugin.jquery.js"</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; .<span style="color: #006600;">block</span><span style="color:#006600; font-weight:bold;">&#40;</span><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; &nbsp; &nbsp; $LAB.<span style="color: #006600;">script</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"initpage.js"</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; <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;"><span style="color:#006600; font-weight:bold;">&#125;</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;</div>
</li>
</ol>
</div>
</div>
</div>
<p>In the above example, "jquery.ui.js" and "myplugin.jquery.js" can load in parallel because there's no dependencies, but they will wait for "jquery.js" to load first, since they depend on it, and then "initpage.js" will wait for all of them to load before it runs, to it makes sure all code it will call is in place, similar to a $document.ready(...) concept.</p>
<p>The page link above also shows a few other variations on the .script(...) signature. For instance, you don't have to do a single script() call for each file (though I think it makes thing more readable). You can pass as many scripts singularly as parameters to one script() call. You can also pass an array of scripts, and it will loop through them and load them in the same way. Lastly, you can pass in an object instead of string, and the object literal can contain "src", "type", and "language" specifications, if you want to override the defaults of "text/javascript" and "Javascript", for some reason.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ajaxian?a=Vq4qcO7idLI:FTCZ8E5CXEg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=Vq4qcO7idLI:FTCZ8E5CXEg:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=Vq4qcO7idLI:FTCZ8E5CXEg:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ajaxian?i=Vq4qcO7idLI:FTCZ8E5CXEg:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/labjs-simple-abstraction-for-loading-dependencies-correctly/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/labjs-simple-abstraction-for-loading-dependencies-correctly</feedburner:origLink></item>
		<item>
		<title>New Sessions at The Ajax Experience 2009</title>
		<link>http://feedproxy.google.com/~r/ajaxian/~3/ePkOYwzoorw/new-sessions-at-the-ajax-experience-2009</link>
		<comments>http://ajaxian.com/archives/new-sessions-at-the-ajax-experience-2009#comments</comments>
		<pubDate>Mon, 29 Jun 2009 17:25:09 +0000</pubDate>
		<dc:creator>tberardi</dc:creator>
		
		<category><![CDATA[Ajaxian.com Announcements]]></category>

		<category><![CDATA[Conferences]]></category>

		<category><![CDATA[Front Page]]></category>

		<category><![CDATA[The Ajax Experience]]></category>

		<category><![CDATA[Ajaxian.com annouc]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=7024</guid>
		<description><![CDATA[Register now to lock in exclusive $300 savings for The Ajax Experience conference, September 14-16 in Boston, MA.
It's only been two weeks since we announced open registration for The Ajax Experience with the promise of additional sessions being added to the web site over the next few weeks. And while a number of your peers have already [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://ajaxexperience.techtarget.com/conference/index.html"><img class="alignleft" title="header" src="http://ajaxexperience.techtarget.com/images/header.gif" alt="" width="868" height="103" /></a><strong><a href="http://ajaxexperience.techtarget.com/conference/index.html" target="_blank">Register now</a></strong> to lock in exclusive <strong>$300 savings</strong> for The Ajax Experience conference, September 14-16 in Boston, MA.</p>
<p>It's only been two weeks since we announced open registration for The Ajax Experience with the promise of additional sessions being added to the web site over the next few weeks. And while a number of your peers have already applied and taken advantage of the $300 early-bird discount (which expires at the end of next month), we've already added more sessions to our agenda, including:</p>
<ul>
<li>'<a href="http://ajaxexperience.techtarget.com/conference/html/frameworks.html?Offer=AEajpost629#RBoucherCapp" target="_blank">Cappuccino Web Framework</a>' with Ross Boucher, Co-founder of 280 North</li>
<li><a href="http://ajaxexperience.techtarget.com/conference/html/performance.html?Offer=AEajpost629#SSoudersFast" target="_blank">'Even Faster Web Sites'</a> with Steve Souders, Performance Engineer at Google and author of <em>Even Faster Web Sites</em></li>
<li><a href="http://ajaxexperience.techtarget.com/conference/html/performance.html?Offer=AEajpost629#THustedYUI" target="_blank">'Testing the Testers: YUI Unit versus QUnit'</a> with Ted Husted, Author of <em>JUnit in Action</em>, <em>Struts in Action</em> and more.  Others from Ted: '<a href="http://ajaxexperience.techtarget.com/conference/html/performance.html?Offer=AEajpost629#THustedTest" target="_blank">Testing Ajax Applications</a>' and '<a href="http://ajaxexperience.techtarget.com/conference/html/frameworks.html?Offer=AEajpost629#THustedAPI" target="_blank">API Doc Smackdown: YUI Doc Versus JS Doc Toolkit</a>'</li>
<li><a href="http://ajaxexperience.techtarget.com/conference/html/security.html?Offer=AEajpost629#JWalkerSecurity" target="_blank">'Advanced Web Application Security'</a> with Joe Walker, Creator of DWR</li>
<li><a href="http://ajaxexperience.techtarget.com/conference/html/javascript.html?Offer=AEajpost629#CClarkFluid" target="_blank">'Building Accessible User Interfaces with jQuery and Fluid Infusion'</a> with Colin Clark, Co-founder of Fluid and Contributor to jQuery UI</li>
<li>'<a href="http://ajaxexperience.techtarget.com/conference/html/javascript.html?Offer=AEajpost629#BLeRouxMobile" target="_blank">Designing for the Mobile Web with JavaScript</a>' with Brian LeRoux, Co-creator of XUI and a Contributor to the PhoneGap project</li>
<li>Panel: <a href="http://ajaxexperience.techtarget.com/conference/html/standards.html?Offer=AEajpost629#ABrockES5" target="_blank">'ES5: ECMAScript Standards for a Better Web'</a> led by Allen Wirfs-Brock, ECMAScript Language Architect, Microsoft</li>
<li>Panel: <a href="http://ajaxexperience.techtarget.com/conference/html/security.html?Offer=AEajpost629#DCrockfordPanel" target="_blank">Secure Mashups: Getting to Safe Web Plugins</a> led by Douglas Crockford, Author of <em>JavaScript: The Good Parts</em></li>
<li>And more!</li>
</ul>
<p>The speakers and attendees at The Ajax Experience are working with the most advanced technologies today, building Ajax and rich Web front ends, as well as figuring out new ways to make response time still faster. And if security, performance, and SOA are important to you, you've come to the right place.</p>
<p>Your $300 discount expires the end of July - <a href="http://ajaxexperience.techtarget.com/conference/html/register.html?Offer=AEajpost629" target="_blank">register now </a></p>
<p>If you have any questions about registration, traveling to Boston or bringing a team, please contact your Delegate Relations Manager, Jackie Anderson at <a href="mailto:janderson@techtarget.com">janderson@techtarget.com</a> or 781-657-1380. She's more than happy to assist you.</p>
<p>See you at The Ajax Experience!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ajaxian?a=ePkOYwzoorw:EX6BIC3L0WU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=ePkOYwzoorw:EX6BIC3L0WU:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=ePkOYwzoorw:EX6BIC3L0WU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ajaxian?i=ePkOYwzoorw:EX6BIC3L0WU:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/new-sessions-at-the-ajax-experience-2009/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/new-sessions-at-the-ajax-experience-2009</feedburner:origLink></item>
		<item>
		<title>MySpace open sources advanced browser performance tool for IE</title>
		<link>http://feedproxy.google.com/~r/ajaxian/~3/mDkSxBoPnIQ/myspace-open-sources-advanced-browser-performance-tool-for-ie</link>
		<comments>http://ajaxian.com/archives/myspace-open-sources-advanced-browser-performance-tool-for-ie#comments</comments>
		<pubDate>Mon, 29 Jun 2009 10:21:18 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Browsers]]></category>

		<category><![CDATA[Front Page]]></category>

		<category><![CDATA[IE]]></category>

		<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=7022</guid>
		<description><![CDATA[Developers tend to tease MySpace for its look, but the insiders are incredibly impressed by some of the engineering behind the scenes (e.g. their internal monitoring tools are said to be second to none).
They have surprised us again with their new tool MSFast which is "a browser plugin that help developers to improve their code [...]]]></description>
			<content:encoded><![CDATA[<p>Developers tend to tease MySpace for its look, but the insiders are incredibly impressed by some of the engineering behind the scenes (e.g. their internal monitoring tools are said to be second to none).</p>
<p>They have surprised us again with their <a href="http://msfast.myspace.com/">new tool MSFast</a> which is "a browser plugin that help developers to improve their code performance by capturing and measuring possible bottlenecks on their web pages."</p>
<p>The IE 8 tools are getting better, but in general no one has been able to touch Firebug (and the new WebKit Inspector improvements) but this tool is actually plugin for IE! It captures a lot:</p>
<ul>
<li>Measure the CPU hit and memory footprint of your pages as they render on the client’s browser
</li>
<li>Review screen shots of the page while it renders
</li>
<li>Review the rendered HTML on each point of the page’s lifecycle
</li>
<li>Measure and show estimates of the time it takes to render each section of the page in different connection speeds
</li>
<li>Validate the content of your page against a set of proven “best practice” rules of web development<br />
Review downloaded files and show download time estimation on different bandwidths
</li>
</ul>
<p><img src="http://msfast.myspace.com/ss.jpg"/></p>
<p>That is some impressive data, and great to be able to test on IE where it has been SO hard to do so in the past.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ajaxian?a=mDkSxBoPnIQ:Or81QhsR-0s:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=mDkSxBoPnIQ:Or81QhsR-0s:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=mDkSxBoPnIQ:Or81QhsR-0s:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ajaxian?i=mDkSxBoPnIQ:Or81QhsR-0s:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/myspace-open-sources-advanced-browser-performance-tool-for-ie/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/myspace-open-sources-advanced-browser-performance-tool-for-ie</feedburner:origLink></item>
		<item>
		<title>Fun with text-shadow</title>
		<link>http://feedproxy.google.com/~r/ajaxian/~3/x-iiji3k0mA/fun-with-text-shadow</link>
		<comments>http://ajaxian.com/archives/fun-with-text-shadow#comments</comments>
		<pubDate>Fri, 26 Jun 2009 16:26:24 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[CSS]]></category>

		<category><![CDATA[Examples]]></category>

		<category><![CDATA[Front Page]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=7016</guid>
		<description><![CDATA[
Zach Johnson is at it again, this time giving us a fun Friday treat with CSS text shadow, all via:
PLAIN TEXT
JAVASCRIPT:




&#160;


document.getElementById&#40;'text-shadow-box'&#41;.onmousemove = function&#40;e&#41; &#123;


&#160; &#160; var xm = e.clientX - 300;


&#160; &#160; var ym = e.clientY - 175;


&#160; &#160; var d = Math.sqrt&#40;xm*xm + ym*ym&#41;;


&#160; &#160; text.style.textShadow = -xm + 'px ' + -ym + [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://ajaxian.com/wp-content/uploads/textshadow.png" alt="" title="textshadow" width="499" height="345" class="alignnone size-full wp-image-7017" /></p>
<p>Zach Johnson is at it again, this time giving us a fun Friday <a href="http://www.zachstronaut.com/lab/text-shadow-box/text-shadow-box.html">treat with CSS text shadow</a>, all via:</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-16');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-16">
<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;">document.<span style="color: #006600;">getElementById</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'text-shadow-box'</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">onmousemove</span> = <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span>e<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; <span style="color: #003366; font-weight: bold;">var</span> xm = e.<span style="color: #006600;">clientX</span> - <span style="color:#800000;">300</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: #003366; font-weight: bold;">var</span> ym = e.<span style="color: #006600;">clientY</span> - <span style="color:#800000;">175</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: #003366; font-weight: bold;">var</span> d = Math.<span style="color: #006600;">sqrt</span><span style="color:#006600; font-weight:bold;">&#40;</span>xm*xm + ym*ym<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; text.<span style="color: #006600;">style</span>.<span style="color: #006600;">textShadow</span> = -xm + <span style="color: #3366CC;">'px '</span> + -ym + <span style="color: #3366CC;">'px '</span> + <span style="color:#006600; font-weight:bold;">&#40;</span>d / <span style="color:#800000;">5</span> + <span style="color:#800000;">10</span><span style="color:#006600; font-weight:bold;">&#41;</span> + <span style="color: #3366CC;">'px black'</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; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; xm = e.<span style="color: #006600;">clientX</span> - <span style="color:#800000;">600</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; ym = e.<span style="color: #006600;">clientY</span> - <span style="color:#800000;">450</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; spot.<span style="color: #006600;">style</span>.<span style="color: #006600;">backgroundPosition</span> = xm + <span style="color: #3366CC;">'px '</span> + ym + <span style="color: #3366CC;">'px'</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;">&#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;</div>
</li>
</ol>
</div>
</div>
</div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ajaxian?a=x-iiji3k0mA:3XUXHy6sPJc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=x-iiji3k0mA:3XUXHy6sPJc:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=x-iiji3k0mA:3XUXHy6sPJc:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ajaxian?i=x-iiji3k0mA:3XUXHy6sPJc:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/fun-with-text-shadow/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/fun-with-text-shadow</feedburner:origLink></item>
		<item>
		<title>Scripty2 has landed</title>
		<link>http://feedproxy.google.com/~r/ajaxian/~3/gFPM877o3SU/scripty2-has-landed</link>
		<comments>http://ajaxian.com/archives/scripty2-has-landed#comments</comments>
		<pubDate>Fri, 26 Jun 2009 05:14:51 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Front Page]]></category>

		<category><![CDATA[Scriptaculous]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=7012</guid>
		<description><![CDATA[
Thomas Fuchs has been working in the open on scripty2 for a bit, and now the website has launched.
It even comes with nice documentation and fun demos:

What's new in scripty2? It is a complete rewrite, and comes packaged in three parts:
scripty2 core contains the main namespace and an area for extensions to be added. It [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://scripty2.com/"><img src="http://ajaxian.com/wp-content/uploads/scripty2.png" alt="" title="scripty2" width="500" height="371" class="alignnone size-full wp-image-7013" /></a></p>
<p>Thomas Fuchs has been <a href="http://github.com/madrobby/scripty2">working in the open</a> on <a href="http://scripty2.com/">scripty2</a> for a bit, and now the website has launched.</p>
<p>It even comes with nice <a href="http://scripty2.com/doc/">documentation</a> and <a href="http://scripty2.com/demos/cards/index.html">fun demos</a>:</p>
<p><img src="http://ajaxian.com/wp-content/uploads/script2cards.png" alt="" title="script2cards" width="500" height="286" class="alignnone size-full wp-image-7014" /></p>
<p>What's new in scripty2? It is a complete rewrite, and comes packaged in three parts:</p>
<p><a href="http://scripty2.com/doc/scripty2_core_section.html">scripty2 core</a> contains the main namespace and an area for extensions to be added. It also contains helpers and the like.</p>
<p><a href="http://scripty2.com/doc/scripty2_fx_section.html">scripty2 fx</a>: The scripty2 effects framework provides for time-based transformations of DOM elements and arbitrary JavaScript objects. This is at the core of scripty2 and presents a refinement of the visual effects framework of script.aculo.us 1.X.</p>
<p><a href="http://scripty2.com/doc/scripty2_ui_section.html">scripty2 ui</a> currently has one submodule: Utility functions for CSS parsing, color normalization and tweening.</p>
<p>We are doing more and more on the client, requiring nice programming models to do cool effects. Great to see one of the granddaddies of them all get a new coat.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ajaxian?a=gFPM877o3SU:U-6-UUb2xb4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=gFPM877o3SU:U-6-UUb2xb4:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=gFPM877o3SU:U-6-UUb2xb4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ajaxian?i=gFPM877o3SU:U-6-UUb2xb4:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/scripty2-has-landed/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/scripty2-has-landed</feedburner:origLink></item>
		<item>
		<title>First beta of YUI 3.0 released</title>
		<link>http://feedproxy.google.com/~r/ajaxian/~3/7-d5p_8yHOo/first-beta-of-yui-30-released</link>
		<comments>http://ajaxian.com/archives/first-beta-of-yui-30-released#comments</comments>
		<pubDate>Thu, 25 Jun 2009 11:52:47 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Front Page]]></category>

		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[Library]]></category>

		<category><![CDATA[Yahoo!]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=7010</guid>
		<description><![CDATA[Congrats to the YUI team for releasing their first beta of YUI 3:

We’ve spent a lot of time in this release cycle refining the core elements of YUI 3 — YUI, Node, and Event — to ensure that we have the right API going forward. Performance is improved, and we’ve refined our module/submodule structure. In [...]]]></description>
			<content:encoded><![CDATA[<p>Congrats to the YUI team for <a href="http://www.yuiblog.com/blog/2009/06/24/yui3b1/">releasing their first beta of YUI 3</a>:</p>
<blockquote>
<p>We’ve spent a lot of time in this release cycle refining the core elements of YUI 3 — <a href="http://developer.yahoo.com/yui/3/yui/">YUI</a>, <a href="http://developer.yahoo.com/yui/3/node/">Node</a>, and <a href="http://developer.yahoo.com/yui/3/event/">Event</a> — to ensure that we have the right API going forward. Performance is improved, and we’ve refined our module/submodule structure. In some cases we’ve added significant new features, including intrinsic support for event delegation in the Event package; however, the focus is on moving the base library to  production quality.</p>
<p>Several YUI 2.x components make their YUI 3 debut in this release:</p>
<ol>
<li><strong><a href="http://developer.yahoo.com/yui/3/datasource/">DataSource</a>:</strong> YUI’s data abstraction layer provides a standard interface into data sets, regardless of the data’s origin (local, XHR, XSS, etc.) and format (JSON, XML, CSV, etc.);</li>
<li><strong><a href="http://developer.yahoo.com/yui/3/imageloader/">ImageLoader</a>: </strong> ImageLoader allows you to defer the loading of images that aren’t in the viewport when the page paints, throttling bandwidth usage and improving performance;</li>
<li><strong><a href="http://developer.yahoo.com/yui/3/history/">History</a>:</strong> The  History component gives you control of the brower’s back button within the context of a single-page web application;</li>
<li><strong><a href="http://developer.yahoo.com/yui/3/stylesheet/">StyleSheet</a>:</strong>  StyleSheet  makes it easy to create and modify CSS rules on the fly, allowing you to dynamically style page elements with fewer repaints.</li>
</ol>
<p>As part of the more granular packaging in the new codeline, we’ve created separate YUI 3 modules to house functionality that in YUI 2 was bundled with other components. <a href="http://developer.yahoo.com/yui/3/cache/">Cache</a>, <a href="http://developer.yahoo.com/yui/3/datatype/">DataType</a> and <a href="http://developer.yahoo.com/yui/3/dataschema/">DataSchema</a> debut in this release; each of these used to be a part of DataSource.</p>
</blockquote>
<p>To keep up to date, check out the <a href="http://yuilibrary.com/projects/yui3/roadmap">roadmap</a> and <a href="http://yuilibrary.com/projects/yui3/dashboard">dashboard</a> that the team keeps up to date.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ajaxian?a=7-d5p_8yHOo:dUHprHktl5k:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=7-d5p_8yHOo:dUHprHktl5k:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=7-d5p_8yHOo:dUHprHktl5k:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ajaxian?i=7-d5p_8yHOo:dUHprHktl5k:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/first-beta-of-yui-30-released/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/first-beta-of-yui-30-released</feedburner:origLink></item>
		<item>
		<title>JavaScript sandbox using Web Workers</title>
		<link>http://feedproxy.google.com/~r/ajaxian/~3/qaMlxGvpveM/javascript-sandbox-using-web-workers</link>
		<comments>http://ajaxian.com/archives/javascript-sandbox-using-web-workers#comments</comments>
		<pubDate>Thu, 25 Jun 2009 11:17:45 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Front Page]]></category>

		<category><![CDATA[JavaScript]]></category>

		<category><![CDATA[Library]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=6993</guid>
		<description><![CDATA[We have been sandboxing JavaScript in iframes for a long time. The Web Worker API has the nice property that it doesn't have access to objects like document and the like, and just runs code that you can pass over to it.
With this, Elijah Grey has created an experimental jsandbox API that gives you an [...]]]></description>
			<content:encoded><![CDATA[<p>We have been sandboxing JavaScript in iframes <a href="http://ajaxian.com/archives/sandboxing-javascript-with-iframes">for a long time</a>. The Web Worker API has the nice property that it doesn't have access to objects like <code>document</code> and the like, and just runs code that you can pass over to it.</p>
<p>With this, Elijah Grey has created an experimental <a href="http://eligrey.com/2009/06/19/jsandbox/">jsandbox</a> API that gives you an <code>eval</code> function that you pass in some code, and optionally input data, callback for results, and an onerror callback.</p>
<p>Code looks like this:</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-18');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-18">
<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;">jsandbox</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;">eval</span><span style="color:#006600; font-weight:bold;">&#40;</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; &nbsp; code&nbsp; &nbsp; : <span style="color: #3366CC;">"x=1;Math.round(Math.pow(input, ++x))"</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; input&nbsp; &nbsp;: <span style="color:#800000;">36</span>.<span style="color:#800000;">565010597564445</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; callback: <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span>n<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; &nbsp; console.<span style="color: #006600;">log</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"number: "</span>, n<span style="color:#006600; font-weight:bold;">&#41;</span>; <span style="color: #009900; font-style: italic;">// number: 1337</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; <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; <span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">eval</span><span style="color:#006600; font-weight:bold;">&#40;</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; &nbsp; code&nbsp; &nbsp;: <span style="color: #3366CC;">"][];.]<span style="color: #000099; font-weight: bold;">\\</span> (*# ($(! ~"</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; <span style="color: #000066;">onerror</span>: <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span>ex<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; &nbsp; &nbsp; &nbsp; console.<span style="color: #006600;">log</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"syntax error: "</span>, ex<span style="color:#006600; font-weight:bold;">&#41;</span>; <span style="color: #009900; font-style: italic;">// syntax error: [error object]</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; <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><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">eval</span><span style="color:#006600; font-weight:bold;">&#40;</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; code&nbsp; &nbsp; : <span style="color: #3366CC;">'&quot;foo&quot;+input'</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; input&nbsp; &nbsp;: <span style="color: #3366CC;">"bar"</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; callback: <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span>str<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; &nbsp; &nbsp; &nbsp; console.<span style="color: #006600;">log</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"string: "</span>, str<span style="color:#006600; font-weight:bold;">&#41;</span>; <span style="color: #009900; font-style: italic;">// string: foobar</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; <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><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">eval</span><span style="color:#006600; font-weight:bold;">&#40;</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; code&nbsp; &nbsp; : <span style="color: #3366CC;">"({q:1, w:2})"</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; callback: <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span>obj<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; &nbsp; console.<span style="color: #006600;">log</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"object: "</span>, obj<span style="color:#006600; font-weight:bold;">&#41;</span>; <span style="color: #009900; font-style: italic;">// object: object q=1 w=2</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; <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; <span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">eval</span><span style="color:#006600; font-weight:bold;">&#40;</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; &nbsp; code&nbsp; &nbsp; : <span style="color: #3366CC;">"[1, 2, 3].concat(input)"</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; input&nbsp; &nbsp;: <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#800000;">4</span>, <span style="color:#800000;">5</span>, <span style="color:#800000;">6</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; &nbsp; &nbsp; callback: <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span>arr<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; &nbsp; console.<span style="color: #006600;">log</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"array: "</span>, arr<span style="color:#006600; font-weight:bold;">&#41;</span>; <span style="color: #009900; font-style: italic;">// array: [1, 2, 3, 4, 5, 6]</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; <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; <span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">eval</span><span style="color:#006600; font-weight:bold;">&#40;</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; &nbsp; code&nbsp; &nbsp; : <span style="color: #3366CC;">"function x(z){this.y=z;};new x(input)"</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; input&nbsp; &nbsp;: <span style="color:#800000;">4</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; callback: <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span>x<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; &nbsp; console.<span style="color: #006600;">log</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">"new x: "</span>, x<span style="color:#006600; font-weight:bold;">&#41;</span>; <span style="color: #009900; font-style: italic;">// new x: object y=4</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; <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; <span style="color:#006600; font-weight:bold;">&#125;</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;</div>
</li>
</ol>
</div>
</div>
</div>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ajaxian?a=qaMlxGvpveM:vZbjvcrvpx4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=qaMlxGvpveM:vZbjvcrvpx4:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=qaMlxGvpveM:vZbjvcrvpx4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ajaxian?i=qaMlxGvpveM:vZbjvcrvpx4:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/javascript-sandbox-using-web-workers/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/javascript-sandbox-using-web-workers</feedburner:origLink></item>
		<item>
		<title>iPhone 3GS runs faster than claims, if you go by SunSpider</title>
		<link>http://feedproxy.google.com/~r/ajaxian/~3/fzEOnBB3q78/iphone-3gs-runs-faster-than-claims-if-you-go-by-sunspider</link>
		<comments>http://ajaxian.com/archives/iphone-3gs-runs-faster-than-claims-if-you-go-by-sunspider#comments</comments>
		<pubDate>Wed, 24 Jun 2009 20:03:36 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Front Page]]></category>

		<category><![CDATA[Mobile]]></category>

		<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=7006</guid>
		<description><![CDATA[Rana Sobhany of Medialets has posted on Sun Spider benchmarks of the iPhone 3GS as well as other devices which shows off the performance angle of 3GS:

The WebKit Open Source Project provides a JavaScript test Suite dubbed SunSpider. According to the description on the SunSpider home page, “this benchmark tests the core JavaScript language only, [...]]]></description>
			<content:encoded><![CDATA[<p>Rana Sobhany of Medialets has posted on <a href="http://www.medialets.com/blog/2009/06/24/speed-test-iphone-3gs-even-faster-than-apple-claims/">Sun Spider benchmarks of the iPhone 3GS</a> as well as other devices which shows off the performance angle of 3GS:</p>
<blockquote><p>
The WebKit Open Source Project provides a JavaScript test Suite dubbed SunSpider. According to the description on the SunSpider home page, “this benchmark tests the core JavaScript language only, not the DOM or other browser APIs. It is designed to compare different versions of the same browser, and different browsers to each other.” We at Medialets have found it to be one of the best attempts to measure real world JavaScript performance in a balanced and statistically sound way.</p>
<p>Medialets ran the SunSpider test suite in the following environments:</p>
<ol>
<li>Safari 4.0.1 on a 2.0 GHz Intel Core 2 Duo White MacBook.
</li>
<li>The MacBook results were used as a baseline for relative comparisons.
</li>
<li>Mobile Safari on the iPhone 3G with iPhone OS v2.2.1
</li>
<li>Mobile Safari on the iPhone 3G with iPhone OS v3.0
</li>
<li>Mobile Safari on the iPhone 3GS with iPhone OS v3.0
</li>
<li>The “Browser” app on the T-Mobile G1 with Android OS v1.5 (Cupcake)
</li>
<li>The “Web” app on the Palm Pre with Web OS v1.0.2
</li>
</ol>
<p>Each device was fully restored and rebooted immediately before running the test suite. Every attempt was made to assure that no atypical background tasks were executing while the tests were running. The SunSpider tests automatically run five times sequentially and the mean average from all five tests are reported. Network speed and latency have no effect on the results of the test.
</p></blockquote>
<p>We all know to beware of benchmarks, but it does show off how powerful these devices are getting!</p>
<p><img src="http://www.medialets.com/blog/wp-content/uploads/2009/06/sunspider-benchmarking-tests-2009-06-22.png" width="500" /></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ajaxian?a=fzEOnBB3q78:KcDc8n2nhAI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=fzEOnBB3q78:KcDc8n2nhAI:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=fzEOnBB3q78:KcDc8n2nhAI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ajaxian?i=fzEOnBB3q78:KcDc8n2nhAI:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/iphone-3gs-runs-faster-than-claims-if-you-go-by-sunspider/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/iphone-3gs-runs-faster-than-claims-if-you-go-by-sunspider</feedburner:origLink></item>
		<item>
		<title>MooTools: Saving the dollars, replacing document.write</title>
		<link>http://feedproxy.google.com/~r/ajaxian/~3/kOpLaEZXjdk/mootools-saving-the-dollars-replacing-documentwrite</link>
		<comments>http://ajaxian.com/archives/mootools-saving-the-dollars-replacing-documentwrite#comments</comments>
		<pubDate>Wed, 24 Jun 2009 11:28:13 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Front Page]]></category>

		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=7004</guid>
		<description><![CDATA[The religion behind a simple $ has been fierce in the Web world. MooTools has decided to make the Dollar Safe Mode which is similar to cousins such as jQuery.noConflict (in MooTools case it just looks for the $ function). Now you can just use document.id if you want to play in the wild, or [...]]]></description>
			<content:encoded><![CDATA[<p>The religion behind a simple <code>$</code> has been fierce in the Web world. MooTools has decided to make <a href="http://mootools.net/blog/2009/06/22/the-dollar-safe-mode/">the Dollar Safe Mode</a> which is similar to cousins such as <code>jQuery.noConflict</code> (in MooTools case it just looks for the $ function). Now you can just use <code>document.id</code> if you want to play in the wild, or wrap up in a closure to be nice:</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-20');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-20">
<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:#006600; font-weight:bold;">&#40;</span><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; <span style="color: #003366; font-weight: bold;">var</span> $ = document.<span style="color: #006600;">id</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;">&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">X</span> = <span style="color: #003366; font-weight: bold;">new</span> <span style="color: #003366; font-weight: bold;">Class</span><span style="color:#006600; font-weight:bold;">&#40;</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; &nbsp; &nbsp; initialize: <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span>element<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; &nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">element</span> = $<span style="color:#006600; font-weight:bold;">&#40;</span>element<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:#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; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</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;"><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</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;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
<blockquote><p>
Please note that MooTools will probably remain incompatible with other frameworks that modify native prototypes, as there will probably be more name clashes. This isn’t a cross-framework compatible MooTools version by any means, nor does it want to be. The whole point is not to “steal” the dollar function from other libraries.
</p></blockquote>
<p>In other MooTools news, MooTools Core Dev Thomas Aylott (subtleGradient) shows another example of <a href="http://subtlegradient.com/articles/2009/06/22/replace_document_write_using_mootools.html">overriding document.write()</a>:</p>
<blockquote><p>
I created a replacement for document.write that saves the arguments and then injects them into the page after the dom is ready.  This is useful for embedding gists on your page since you can use the additional filter option to reject stuff from being written to your page. This would also be really handy for sites that include JavaFX or certain ads or anything that requires the use of document.write on your page. By deferring the injection of that stuff until after the dom is ready your visitors see the page content before any of the extras like Java applets or ads begin to load.
</p></blockquote>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ajaxian?a=kOpLaEZXjdk:FM2GYQul6mU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=kOpLaEZXjdk:FM2GYQul6mU:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=kOpLaEZXjdk:FM2GYQul6mU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ajaxian?i=kOpLaEZXjdk:FM2GYQul6mU:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/mootools-saving-the-dollars-replacing-documentwrite/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/mootools-saving-the-dollars-replacing-documentwrite</feedburner:origLink></item>
		<item>
		<title>ProtoFish: advanced hover menu</title>
		<link>http://feedproxy.google.com/~r/ajaxian/~3/qVuLG0P1Fvg/protofish-advanced-hover-menu</link>
		<comments>http://ajaxian.com/archives/protofish-advanced-hover-menu#comments</comments>
		<pubDate>Tue, 23 Jun 2009 10:05:01 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[Component]]></category>

		<category><![CDATA[Front Page]]></category>

		<category><![CDATA[Prototype]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=6990</guid>
		<description><![CDATA[ProtoFish is an advanced hover menu based on Prototype, written by Peter Slagter. You can easily add a delay to your menu (on mouseout) and choose your own hover class. All ProtoFish menu's will respond to users who use the TAB-key to navigate through your page. 

It is trivial to use. Once you load up [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://techblog.procurios.nl/k/618/news/view/34556/14863/ProtoFish-advanced-hover-menu-based-on-Prototype.html">ProtoFish</a> is an advanced hover menu based on Prototype, written by Peter Slagter. You can easily add a delay to your menu (on mouseout) and choose your own hover class. All ProtoFish menu's will respond to users who use the TAB-key to navigate through your page. </p>
<p><img src="http://ajaxian.com/wp-content/uploads/protofish.png" alt="" title="protofish" width="340" height="212" class="alignnone size-full wp-image-6991" /></p>
<p>It is trivial to use. Once you load up the script (requires Prototype 1.6+) you can:</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-22');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-22">
<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;">document.<span style="color: #006600;">observe</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'dom:loaded'</span>, <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>&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;">&nbsp; &nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">new</span> ProtoFish<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'my-menu'</span>, <span style="color: #3366CC;">'400'</span>, <span style="color: #3366CC;">'hover'</span>, <span style="color: #003366; font-weight: bold;">false</span><span style="color:#006600; font-weight:bold;">&#41;</span>;&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:#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;</div>
</li>
</ol>
</div>
</div>
</div>
<p>where the four parameters are:</p>
<ul>
<li>Menu id (In the example: my-menu)
</li>
<li>Delay before closing the menu (In the example: 400 ms)
</li>
<li>The classname to add when hovering over menuitems (In the example: hover)
</li>
<li>Whether or not the menu should remove .active classnames when your visitor hovers over the menu (In the example: false)
</li>
</ul>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ajaxian?a=qVuLG0P1Fvg:ehNZNJkg6CY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=qVuLG0P1Fvg:ehNZNJkg6CY:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=qVuLG0P1Fvg:ehNZNJkg6CY:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ajaxian?i=qVuLG0P1Fvg:ehNZNJkg6CY:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/protofish-advanced-hover-menu/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/protofish-advanced-hover-menu</feedburner:origLink></item>
		<item>
		<title>Sprite Me! Helping you sprite up, but maybe you shouldn’t?</title>
		<link>http://feedproxy.google.com/~r/ajaxian/~3/uW1Yg_74M38/sprite-me-helping-you-sprite-up-but-maybe-you-shouldnt</link>
		<comments>http://ajaxian.com/archives/sprite-me-helping-you-sprite-up-but-maybe-you-shouldnt#comments</comments>
		<pubDate>Tue, 23 Jun 2009 05:01:00 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
		
		<category><![CDATA[CSS]]></category>

		<category><![CDATA[Front Page]]></category>

		<category><![CDATA[Performance]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=7001</guid>
		<description><![CDATA[There have been many tools to help make image spriting easier, by packaging up your images into one large image and splitting it up again via CSS.
Steve Souders just showed off a new little tool he created, Sprite Me at the Velocity conference that kicked off today. He has made it easier to work with [...]]]></description>
			<content:encoded><![CDATA[<p>There have been many tools to help make image spriting easier, by packaging up your images into one large image and splitting it up again via CSS.</p>
<p>Steve Souders just showed off a new little tool he created, <a href="http://www.stevesouders.com/spriteme/">Sprite Me</a> at the Velocity conference that kicked off today. He has made it easier to work with sprites by:</p>
<ul>
<li><b>finds background images</b>: <i>SpriteMe</i> generates a list of all background images in the page. Hovering over the its URL displays the image.<br />
Each of the DOM elements that use that image are also listed. [DONE]
    </li>
<li><b>groups images</b>: It's hard to figure out which images can be sprited together, and how they should be laid out. For example, background images that repeat horizontally must fill the entire width of the sprite. Background images positioned <code>left bottom</code> must be at the right top of the sprite if their container might be bigger than the image. <i>SpriteMe</i> determines which images should be sprited together based on these constraints.[IN PROCESS]
</li>
<li><b>creates sprites</b>: <i>SpriteMe</i> generates the sprite for each grouping of images. This is done using open source tools, such as <a href="http://spritegen.website-performance.org/">CSS Sprite Generator</a>. [TBD]
</li>
<li><b>updates CSS</b>: The final tricky part of using sprites is changing the CSS. Sometimes the CSS is a rule in a stylesheet. Or it might be a rule in an inline style block. Or it might be specified in an element's style attribute. Because <i>SpriteMe</i> runs inside your web page, it can find the CSS that needs to be updated. It makes the changes in realtime, so you can visually check to confirm the sprites look right.You can export the modified CSS to integrate back into your code. [TBD]
</li>
</ul>
<p>Great, a simple new bookmarklet to work with Sprites. It is always a good idea to sprite up right? Not exactly.</p>
<p>Vlad Vuki?evi?, a leader in the Mozilla community (and brought us cool stuff like Canvas 3D!) <a href="http://blog.vlad1.com/2009/06/22/to-sprite-or-not-to-sprite/">has spoken up on the internals</a> of the browser, which shows you the trade-offs for the spriting approach:</p>
<blockquote><p>
The biggest problem with CSS sprites is memory usage.  Unless the sprite image is carefully constructed, you end up with incredible amounts of wasted space.  My favourite example is from WHIT TV's web site, where <a href="http://www.wthitv.com/images/bg_module.png">this image</a> is used as a sprite.  Note that this is a 1299x15,000 PNG.  It compresses quite well — the actual download size is around 26K — but browsers don't render compressed image data.  When this image is downloaded and decompressed, it will use almost 75MB in memory (1299 * 15000 * 4).  If the image didn't have any alpha transparency, this could be maybe optimized to 1299 * 15000 * 3, though often at the expense of rendering speed.  Even then, we'd be talking about 55MB.  The vast majority of this image is blank; there is nothing there, no useful content whatsoever.  Just loading the <a href="http://www.wthitv.com/">main WHIT page</a> will cause your browser's memory usage to go up by at least 75+MB, just due to that one image.</p>
<p>That's not the right tradeoff to make for a website.
</p></blockquote>
<p>What alternatives are there? None right now.... but they are hopefully on the way. Some folks have been talking about the idea of packaging up images in zip files, and then the browser can manage more than just the download process, but also only load up what it needs:</p>
<blockquote><p>
Many browsers have support for offline manifests already; it might be possible to extend that to allow downloading one file (like a jar/zip file) that contains a manifest of resources and equivalent URLs that are contained inside it.
</p></blockquote>
<p>Rob Sayre, also of Mozilla, <a href="http://blog.mozilla.com/rob-sayre/2009/06/22/sprites/">broached the subject</a>:</p>
<blockquote><p>
Sprites have the advantage of working right now, but maybe there should be a way to serve up a multipart response with your sprite images as well. That would cut down on CSS rule count and maintenance, but still group the images in one HTTP request. Authors are already giving up the advantages of separate resources in return for speed, so maybe this is worth doing.</p>
<p>You can (in theory… haha) get some of these advantages with HTTP pipelining, but a multipart response would allow the server optimize the response order as they do with sprites today.
</p></blockquote>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ajaxian?a=uW1Yg_74M38:ioLkFuMdDsk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=uW1Yg_74M38:ioLkFuMdDsk:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=uW1Yg_74M38:ioLkFuMdDsk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ajaxian?i=uW1Yg_74M38:ioLkFuMdDsk:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/sprite-me-helping-you-sprite-up-but-maybe-you-shouldnt/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/sprite-me-helping-you-sprite-up-but-maybe-you-shouldnt</feedburner:origLink></item>
		<item>
		<title>HTML 5 and the Wizard of Oz</title>
		<link>http://feedproxy.google.com/~r/ajaxian/~3/9V38RTorjxo/html-5-and-the-wizard-of-oz</link>
		<comments>http://ajaxian.com/archives/html-5-and-the-wizard-of-oz#comments</comments>
		<pubDate>Mon, 22 Jun 2009 18:05:47 +0000</pubDate>
		<dc:creator>Ben Galbraith</dc:creator>
		
		<category><![CDATA[Front Page]]></category>

		<category><![CDATA[Fun]]></category>

		<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=6996</guid>
		<description><![CDATA[Kyle Weems, the CSS Squirrel and author of the occasional and bizarre comic of the same name, targets his latest rendering at Ian Hickson:

Click-through to see the full comic. The related blog entry fleshes out the basic complaint some more:

Why is it that the person who is the center of this process is allowed to [...]]]></description>
			<content:encoded><![CDATA[<p>Kyle Weems, the CSS Squirrel and author of the occasional and bizarre comic of the same name, targets his latest rendering at Ian Hickson:</p>
<p><a href="http://www.cssquirrel.com/comic/?comic=23"><img src="http://ajaxian.com/wp-content/uploads/hixieasoz.png" alt="" title="Who Really Is the Wizard of HTML5?" width="371" height="357" class="alignnone size-full wp-image-6997" /></a></p>
<p>Click-through to see the <a href="http://www.cssquirrel.com/comic/?comic=23">full comic</a>. <a href="http://www.cssquirrel.com/2009/06/22/comic-update-who-really-is-the-wizard-of-html5/">The related blog entry</a> fleshes out the basic complaint some more:</p>
<blockquote><p>
Why is it that the person who is the center of this process is allowed to be a man who rejects consensus, actively denies issues (based on his own admitted policy) and substitutes expert advice in important areas like accessibility with analyzing data from the Google Index and parsing numbers? Numbers that we cannot have a third party confirm because every request to do just this is ignored?</p>
<p>There is no doubt in my mind that Ian is brilliant. However no man, no matter how brilliant, should be allowed to be so influential on a spec when he is bringing all this baggage to the table with him.
</p></blockquote>
<p>The number of grievances folks have with any standards process are legion, but wouldn't life be more fun if they all came with comics?</p>
<p>(As I wrote this, Dion leaned over and said, "I used to work with Ian, I find it funny to think of anyone trying to control him.")</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ajaxian?a=9V38RTorjxo:tQXJlOYvsGM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=9V38RTorjxo:tQXJlOYvsGM:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/ajaxian?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ajaxian?a=9V38RTorjxo:tQXJlOYvsGM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ajaxian?i=9V38RTorjxo:tQXJlOYvsGM:D7DqB2pKExk" border="0"></img></a>
</div>]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/html-5-and-the-wizard-of-oz/feed</wfw:commentRss>
		<feedburner:origLink>http://ajaxian.com/archives/html-5-and-the-wizard-of-oz</feedburner:origLink></item>
	</channel>
</rss>
